15 22FL ...#SEG LOADERI86 [M. DRUKKER 18 22J9 ...# ######################################################## 4 22LS ...# 16 22PC ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 4 22S2 ...# 18 22WK ...# ######################################################### 7 22_= #LIS K0LOADER 4 23DW # 17 23YG # THIS (1ST) SEGMENT OF LOADER IS ENTERED FROM GELL. 17 24D6 # IT CHECKS THE COMPATIBILITY OF THIS GEORGE & 18 24XQ # EXECUTIVE, & (G4) CHECKS THAT FIXED CORE FITS. 17 25CB # THEN, USING THE INFORMATION LEFT BY GELL AT 18 25X2 # K18-K42, IT LOADS GEORGE'S FIXED CORE FROM THE 18 26BL # BS DEVICE, FINALLY PASSING CONTROL TO LOADERII. 4 26W= # 18 27*W # (EFFECTIVELY IT IS LOADERI70 REWRITTEN TO THE 15 27TG # NEW GEORGE-EXECUTIVE INTERFACE.) 4 28*6 # 6 28SQ K1LOADERI 8 29#B BRN START 21 29S2 ... +DMETAFORM [ADDR OF SEG CONTNNG DATA FOR UTILITY PGMS 8 2=?L #ALT FSTABLEN=64 13 2=HD ...XCOPRICL 20H (C) COPR ICL 1982 6 2=R= K7LOADERI 21 2?=W ...#GAP 200 [MEND AREA THERE IS A FURTHER GAP AT 18 2?QG # THE FOLLOWING IS A PSEUDO ACTIVITY BLOCK TO FOOL EXEC 9 2#=6 #REP CPPTR-CHAINADD+1 8 2#PQ ... +0 5 2*9B GBSDL 17 2*P2 QGBSDL +0 [CPPTR FOR DA DEVICES 14 2B8L REPLYBS +0 [CPRW1 5 2BN= CONDL 18 2C7W OPCONDL +0 [CPPTR FOR OP'S CONSOLE 14 2CMG REPLYCON +0 [CPRW1 4 2D76 # 10 2DLQ # TABLE OF DEVICE TYPES: 12 2F6B TYPTAB +13,+0,+6,+26,+25,+9 13 2FL2 TABEND [ _ 16 2G5L # DUMMY GAP TO ALLOW DIFFERENTIATING 13 2GK= # BETWEEN 2A & 2B FDS. 10 2H4W # LOTS OF USEFUL WORDS: 7 2HJG #DEF G3DOL=19 19 2HPN ...XECPOINTER [POINTERS TO FDATE AND FTIME 17 2HWW ...#HAL FDATE,FTIME [FOR USE BY EXECUTIVE 19 2J46 BLSUB +0 [DEVICE SUBTYPE FOR LOADERII 19 2JHQ GBSTYPE +0 [OWN DEVICE CODE; SEE QNOTFDS 17 2K3B TYPECODE +0 [ = [GBSTYPE]+[X2] 16 2KH2 BLTYPE +0 [G'S DEVICE TYPE 13 2L2L SUBTYPES +AFDS,+BFDS,+EDS,+EMDS 8 2LG= TYPOPCON #77 17 2L_W XSURF +BSURF [BLKS/CYL ON 2B FDS. 8 2MFG QFOUR +4 9 2M_6 MASKA #37777777 12 2NDQ R5 +0 [ 16 2NYB R6 +0 [ USED IN DISC 15 2PD2 BLDATUM [ ROUTINES. 12 2PXL #GAP 4 [ 12 2QC= X6 +0 [ 15 2QWW X1 +0 [FOR JLUFIX 8 2RBG SUBLINK +0 8 2RW6 TYPE +0 8 2S*Q QLINK +0 17 2STB JLFSDCOPY [MINI CHAPTER TABLE: 20 2T*2 +DLOADERFS [ 1) FSLOAD OVERLAY D-ADDRESS 21 2TSL ... +K19 [ 2) CORE ADDRESS FOR LOADERFS XK18 A 20 2W#= +LLOADERFS+LLOADERFT+2 [3) LENGTH OF FSLOAD OVERLAY 20 2WRW JLFSVCOPY 0,0,0 [TEMPORARY STORAGE FOR JDVAR ETC 21 2X?G JLGENRESFLG 0 [REPLY FROM LOADERFS:SUPPRESS GR IF 0 20 2XR6 JCVAR +AVARLOAD [CORE ADDRESS OF ^VARIABLE^ FIXED 19 2Y=Q JLVAR +JFCT-AVARLOAD [LENGTH OF ^VARIABLE^ FIXED 20 2YQB JDVAR +DDATUM [DRUM ADDRESS OF ^VARIABLE^ FIXED 20 2_=2 JDFIXED +DFIXED [DRUM ADDRESS OF ^FIXED^ FIXED 20 2_PL JCFIXED +J1 [DATUM OF ^FIXED^ FIXED IN CORE 4 329= BR2A 18 32NW JLFIXED +AVARLOAD-J1 [LENGTH OF ^FIXED^ FIXED 20 338G JLPMSIZE 0 [UPDATED BY PM AS MIN FIXED SPACE 21 33D# ...PMENTRY +DLOADERPM-DLOADERI+K1LOADERPM [K18X ADDED IN AT RUN-TIM 2 33N6 10 347Q PMBRN BRN (GEN1) 21 34*F ...XMNO +7036875 [ MAGIC NO. FOR BIN-DEC CONVERSION 8 34H8 ...XK18 +K18 8 34NY ...#OPT BLMESS=+K18-1 7 34QG ...#UNS G3 2A FDS 1 -> 2B FDS 14 4TRG # IN GBSTYPE: 2 -> EDS 3 -> EMDS 16 4W?6 # 4 -> HSD 5 -> SLOW DRUM 4 4WQQ # 18 4X=B STO 3 TYPE(2) [SAVE GEORGE DEVICE TYPE 4 4XQ2 # 21 4Y9L # THE FOLLOWING WORD IS NULLED OUT BY ^FSLOAD COPY^, ^GR^ AND ^SAME^ 21 4YP= # AND IS RE-INSTATED BY ^FSLOAD OFF^. NOTE THAT THE DEFAULT IS ^O 4 4_8W # 6 4_NG K1FSLOADER 10 5286 BRN XK2FSLOADER 19 52MQ LDN 6 JDFIXED(2) [SAVE FIXED CORE'S D-ADDRESS 20 537B LDN 7 JLFSVCOPY(2) [AND ITS LENGTH AND CORE DATUM 7 53M2 MOVE 6 3 18 546L LDN 6 JLFSDCOPY(2) [AND REPLACE THEM WITH 20 54L= LDN 7 JDFIXED(2) [DETAILS OF THE FSLOAD OVERLAY 7 555W MOVE 6 3 21 55KG CALL 7 READOWN [READ DOWN ^LOADERFS^ AND ^LOADERFT^ 21 5656 CALL 7 / [SET THE RETURN LINK ADDRESS IN X7 20 56JQ ADN 7 3 [FROM LOADERFS BACK TO LOADERI 20 574B LDX 6 JLFSDCOPY+1(2) [^FSLOAD^ OVERLAY ENTRY ADDRESS 18 57J2 EXIT 6 0 [GO ACROSS TO K1LOADERFS 17 583L LDX 2 G3DOL [RESTORE OUR DATUM 21 58H= STO 6 JLGENRESFLG(2) [REMEMBER WHETHER GENERAL RESTORE NEE 20 592W LDN 6 JLFSVCOPY(2) [RESTORE FIXED CORE'S D-ADDRESS, 18 59GG LDN 7 JDFIXED(2) [LENGTH AND CORE DATUM 7 5=26 MOVE 6 3 6 5=FQ K2FSLOADER 6 5=_B XK2FSLOADER 19 5?F2 LDX 0 JLFIXED(2) [UPDATE JLVAR IF NECESSARY 19 5?YL ADX 0 JLVAR(2) [SO THAT THE TOTAL LENGTH OF 20 5#D= ADX 0 JCFIXED(2) [FIXED CORE (FROM WORD 0) IS AT 20 5#XW TXL 0 JLPMSIZE(2) [LEAST JLPMSIZE WORDS : NEEDED 20 5*CG BCC QOK [TO ALLOW GEORGE PM SUFFICIENT 16 5*X6 LDX 0 JLPMSIZE(2) [WORKING SPACE 10 5BBQ SBX 0 JLFIXED(2) 10 5BWB SBX 0 JCFIXED(2) 9 5CB2 STO 0 JLVAR(2) 20 5CTL QOK LDX 0 JCVAR(2) [CORE ADDRESS OF ^FIXED^ FIXED 19 5D*= ADX 0 JLVAR(2) [+ LENGTH OF ^VARIABLE^ FIXED 18 5DSW STO 0 ENDFIX [= END OF FIXED IN CORE 18 5F#G CALL 7 READFIX [READ DOWN ^FIXED^ FIXED 20 5FS6 LDX 7 JDVAR(2) [DRUM ADDRESS OF ^VARIABLE^ FIXED 10 5G?Q STO 7 JDFIXED(2) 20 5GRB LDX 7 JCVAR(2) [CORE ADDRESS OF ^VARIABLE^ FIXED 10 5H?2 STO 7 JCFIXED(2) 19 5HQL LDX 7 JLVAR(2) [LENGTH OF ^VARIABLE^ FIXED 10 5J== STO 7 JLFIXED(2) 19 5JPW CALL 7 READFIX [READ DOWN ^VARIABLE^ FIXED 15 5K9G BRN TIDYUP [AND TIDY UP 4 5KP6 # 4 5L8Q # 4 5LNB # 5 5LY8 ...READOWN 5 5M82 READFIX 9 5MML STO 7 QLINK(2) 9 5N7= LDX 3 TYPE(2) 9 5NLW TXL 3 QFOUR(2) 15 5P6G BCS QDISC [LOAD TO DISC 15 5PL6 BRN QDRUM [LOAD TO DRUM 4 5Q5Q # 4 5QKB # 4 5R52 # 4 5RJL # 14 5S4= # *** LOADING FROM DRUM *** 4 5SHW # 4 5T3G # 16 5TH6 QDRUM LDX 4 GBSTYPE(2) [GET DRUM TYPE 7 5W2Q SBN 4 5 20 5WGB LDX 5 BLDRUM(2) [GET D/L WD FROM DIRECTORY ENTRY 17 5X22 LDX 6 JDFIXED(2) [GET F/C DRUM DATUM 15 5XFL BZE 4 SDRUM [SLOW DRUM 8 5X_= # DEALING WITH HSD: 20 5YDW SRL 6 7 [CONVERT DATUM TO BLOCKS (F/C) 19 5YYG SRL 5 12 [EXTRACT G FILE DATUM FROM 16 5_D6 [DIRECTORY ENTRY 8 5_XQ BRN Q01 10 62CB # DEALING WITH SLOW DRUM: 19 62X2 SDRUM SRL 5 10 [EXTRACT G FILE DATUM FROM 16 63BL ANDN 5 #3777 [DIRECTORY ENTRY 15 63W= SLL 5 10 [BACK TO WDS 12 64*W # SET UP CONTROL AREA IN DEVICE LIST 17 64TG Q01 ADX 5 6 [ABS DRUM ADDR OF F/C 18 65*6 LDX 3 QGBSDL(2) [GET DEVICE LIST POINTER 17 65SQ DCA 3,STO,5,DTSA [STORE TRANSFER ADDR 10 66#B LDX 5 JLFIXED(2) 15 66S2 DCA 3,STO,5,COUNT [STORE COUNT 10 67?L LDX 5 JCFIXED(2) 17 67R= DCA 3,STO,5,CTSA [STORE CORE ADDRESS 7 68=W LDN 5 0 15 68QG DCA 3,STO,5,MODE [STORE MODE 17 69=6 CALL 7 TRANSFER [READ DOWN FIXED CORE 14 69PQ BRN WHATSLEFT [WIND UP 4 6=9B # 4 6=P2 # 14 6?8L # *** LOADING FROM DISC *** 4 6?N= # 4 6#7W # 5 6#MG QDISC 14 6*76 SMO TYPECODE(2) [GET REAL 16 6*LQ LDX 5 SUBTYPES [DEVICE SUBTYPE 15 6B6B STO 5 BLSUB(2) [FOR LOADERII 10 6BL2 LDX 5 BLFAC+1(2) 19 6C5L ANDX 5 MASKA(2) [START BLOCK ADDRESS OF FILE 15 6CK= DVS 4 BLFAC+4(2) [/BLKSPERCYL 18 6D4W STO 4 BLDATUM+1(2) [STORE REL BLKNO (REL.SU) 16 6DJG STO 5 BLDATUM(2) [ REL CYLNO 18 6F46 LDX 0 BLSTART(2) [GET START CYLNO OF SU 19 6FHQ ADS 0 BLDATUM(2) [ADD TO START CYL OF G FILE 7 6G3B SBN 4 1 7 6GH2 SBN 5 1 16 6H2L NGS 4 BLDATUM+3(2) [STO 1-REL.BLKNO 16 6HG= NGS 5 BLDATUM+2(2) [STO 1-REL.CYLNO 17 6H_W LDX 5 BLFAC+2(2) [LAST BLKNO. + 1... 15 6JFG ANDX 5 MASKA(2) [... FROM FAC 15 6J_6 SBN 5 1 [LAST BLKNO 15 6KDQ DVS 4 BLFAC+4(2) [/BLKSPERCYL 17 6KYB ADS 5 BLDATUM+2(2) [NO OF CYLS TO FILE 16 6LD2 ADS 4 BLDATUM+3(2) [DEPTH OF FILE 17 6LXL LDX 6 JDFIXED(2) [DRUM ADDRESS OF F/C 21 6MC= SRL 6 7 [/128 TO GIVE BLKNO OF START OF F/C 20 6MWW [RELATIVE TO START OF GEORGE FILE 16 6NBG DVS 5 BLDATUM+3(2) [/DEPTH OF FILE 19 6NW6 SBX 5 BLDATUM+3(2) [ - DEPTH OF FILE GIVES... 20 6P*Q NGX 6 5 [NO OF BLKS IN FIRST CYL OCCUPZED 18 6PTB SLL 6 7 [BY FIXED CORE, TO WORDS. 15 6Q*2 LDX 0 JCFIXED(2) [MOVE ... 20 6QSL DCA QGBSDL(2),STO,0,CTSA [DRUM F/C DATUM TO DEVICELIST 17 6R#= LDX 0 JDFIXED(2) [GET CORE DATUM... 16 6RRW STO 0 R5(2) [FOR FUTURE USE 20 6S?G LDX 0 JLFIXED(2) [LENGTH OF F/C IS INITIAL VALUE 20 6SR6 STO 0 R6(2) [OF 'WDS STILL TO BE READ DOWN' 8 6T=Q S4 TXL 6 R6(2) 19 6TQB BCC S3 [ONLY 1 MORE TRANSFER LEFT 20 6W=2 DCA QGBSDL(2),STO,6,COUNT [WORD COUNT FOR NEXT TRANSFER 19 6WPL SBS 6 R6(2) [WDS STILL TO BE READ DOWN 18 6X9= S5 LDX 4 R5(2) [COMING TRANSFER ADDRESS 18 6XNW ADS 6 R5(2) [NEXT TRANSFER ADDRESS 17 6Y8G STO 6 X6(2) [SAVE WHILE CALLING 19 6YN6 CALL 7 XCONV [CONVERT COMING TO HA FORMAT 19 6_7Q DCA QGBSDL(2),STO,3,DTSA [BS ADDRESS IN DEVICE LIST 7 6_MB LDN 7 0 12 7272 DCA QGBSDL(2),STO,7,MODE 9 72LL LDX 3 QGBSDL(2) 16 736= CALL 7 TRANSFER [PERFORM TRANSFER 8 73KW LDX 0 R6(2) 14 745G BZE 0 WHATSLEFT [ALL IN 8 74K6 LDX 6 X6(2) 20 754Q DCA QGBSDL(2),ADS,6,CTSA [INCREMENT CORE TRANSFER ADDRESS 17 75JB LDX 6 BLDATUM+3(2) [BLK DEPTH OF FILE 17 7642 SLL 6 7 [WORD DEPTH OF FILE 15 76HL BRN S4 [MORE TO DO 19 773= S3 LDX 0 R6(2) [REMAIDER TO BE TRANSFERRED 17 77GW DCA QGBSDL(2),STO,0,COUNT [PUT IN PCA IN DL 16 782G STOZ R6(2) [CLEAR WD COUNT 17 78G6 BRN S5 [GO FOR LAST TRANSFER 4 78_Q # 4 79FB # 10 79_2 # CONVERSION ROUTINES 4 7=DL # 18 7=Y= # 8-8-8 FORMAT EXPECTED IN X4; HANDED BACK IN X3 18 7?CW # IN HARDWARE FORMAT. 4 7?XG # 5 7#C6 XCONV 4 7#WQ # 18 7*BB # CHECK THAT THIS IS A DISC COMPILATION, I.E. D-ADRESS 14 7*W2 # OF FIXED CORE IS A MULTIPLE OF 128. 7 7B*L LDX 3 4 7 7BT= SRL 34 7 8 7C#W SRL 4 17 9 7CSG BZE 4 XCONV1 9 7D#6 LDN 1 XMESS7(2) 16 7DRQ BRN REGELL [DRUM COMPILATION 5 7F?B XCONV1 7 7FR2 LDX 4 3 15 7G=L DVS 3 BLDATUM+3(2) [/BLKSPERCYL 10 7GQ= ADX 3 BLDATUM+1(2) 10 7H9W ADX 4 BLDATUM(2) 5 7HPG XCONV2 10 7J96 LDX 0 TYPECODE(2) 7 7JNQ EXIT 0 / 8 7K8B BRN XAFDS 8 7KN2 BRN XBFDS 8 7L7L BRN XEDS 5 7LM= XEMDS 8 7M6W XAFDS SLL 3 12 8 7MLG SRC 34 12 7 7N66 EXIT 7 0 4 7NKQ XEDS 16 7NMN ... JENVNOT NOEMU,MEEP [J IF NOT EMULATING 7 7NPL ... LDX 5 3 18 7NRJ ... MPA 4 BLFAC+4(2) [CONVERT BACK TO BLOCKS 8 7NTG ... LDCT 3 #400 7 7NXD ... ADX 3 5 7 7N_B ... EXIT 7 0 5 7P3# ...NOEMU 8 7P5B SLL 3 17 8 7PK2 SLC 34 20 7 7Q4L SLL 3 2 7 7QJ= SLL 34 4 7 7R3W SLL 3 2 7 7RHG SLL 34 4 7 7S36 SLL 3 3 7 7SGQ SLL 34 3 7 7T2B EXIT 7 0 5 7TG2 XBFDS 7 7T_L LDX 0 4 7 7WF= LDX 4 3 9 7WYW DVS 3 XSURF(2) 7 7XDG SLL 4 9 7 7XY6 DEX 3 4 7 7YCQ LDX 3 0 8 7YXB SLL 3 15 7 7_C2 DLA 4 3 7 7_WL EXIT 7 0 4 82B= # 4 82TW # 4 83*G # 13 83T6 # ROUTINE TO PERFORM BS TRANSFERS 10 84#Q # CALLED VIA X7 20 84SB # ON ENTRY X3 CONTAINS POINTER TO G'S BS DEVICE LIST 4 85#2 # 6 85RL JLTRANSFER 5 86?= TRANSFER 16 86QW JDISENG 3,TR4 [UNIT NOT ENGAGED 19 87=G TR5 LDN 1 QGBSDL-CPPTR(2) [POINT TO PSEUDO ACTIVITY BLK 17 87Q6 GPERI 3,1,NC [INITIATE TRANSFER 17 889Q TR1 JBUSY 3,TR1 [WAIT FOR TERMINATION 9 88FJ ... LDX 0 CPRW1(1) 7 88PB ... SLL 0 3 16 88_8 ... BNG 0 TR2 [TRANSFER FAILURE 15 8992 EXIT 7 0 [OK, RETURN 16 89NL TR2 LDX 1 REPLYBS(2) [GET REPLY WORD 8 8=8= SRL 1 18 15 8=MW BNZ 1 TR6 [REAL FAIL 19 8?7G TR4 LDN 1 XMESS4(2) [... ELSE, IF JUST INOP ... 17 8?M6 CALL 6 UFIX [OUTPUT FIX MESSAGE 18 8#6Q TR3 JDISENG 3,TR3 [AND WAIT FOR RE-ENGAGE 15 8#LB BRN TR5 [TRY AGAIN 17 8*62 TR6 LDN 1 XMESS3(2) [OUTPUT FAIL MESSAGE 8 8*KL CALL 6 UFAIL 19 8B5= LDN 1 XMESS6(2) [& 'PLEASE RELOAD' MESSAGE 18 8BJW BRN REGELL [OUTPUT MESSAGE & GELL 4 8C4G # 13 8CJ6 # ROUTINE TO OUTPUT FIX/FAIL MESSAGE 19 8D3Q # CALLED VIA X6, USES X4 X5; X1 POINTS TO MESSAGE 16 8DHB # X3 CONTAINS BS DEVICE LIST POINTER 4 8F32 # 5 8FGL JLUFIX 4 8G2= UFIX 8 8GFW UFAIL LGEOG 3,5 8 8G_G STO 1 X1(2) 7 8HF6 ... ADN 1 3 7 8HYQ U1 SLC 1 2 7 8JDB SBN 1 1 7 8JY2 SRC 1 2 8 8KCL LDN 4 10 7 8KX= DVS 4 4 8 8LBW DCH 4 0(1) 8 8LWG BNZ 5 U1 8 8MB6 LDX 1 X1(2) 9 8MTQ CALL 0 OUTCON 7 8N*B EXIT 6 0 4 8NT2 # 10 8P#L # CONSOLE OUTPUT ROUTINE 16 8PS= # CALLED VIA X0 ; X1 POINTS TO MESSAGE 4 8Q?W # 5 8QRG JLOUTCON 5 8R?6 OUTCON 10 8RQQ STO 0 SUBLINK(2) 7 8RT* ...#UNS G3