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