{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LOADERGO867)}}
====== LOADERGO867 ======
(George Source)
**Macros used:** [[george:macro:BS|BS]], [[george:macro:DCA|DCA]], [[george:macro:GPERI|GPERI]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JENG|JENG]], [[george:macro:MTREW|MTREW]], [[george:macro:READY|READY]], [[george:macro:SUICIDE|SUICIDE]]
22FL ...#SEG LOADERGO86 [M. DRUKKER
22J9 ...# ########################################################
22LS ...#
22PC ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22S2 ...#
22WK ...# #########################################################
22^= #LIS K0LOADERMT>K0LOADER>K0ALLGEO
23DW #
23YG #
24D6 # THIS SEGMENT CONTAINS THE SECOND & THIRD ENTRY POINTS:
24XQ # K2LOADERMT : WE GET HERE WHEN THE GEORGE FILE HAS BEEN
25CB ...# LOCATED AFTER A DA/ED/FD/DR/HD COMMAND.
25X2 # GEORGE IS TRANSFERRED FROM TAPE TO ITS
26BL # FUTURE HOME
26W= #
27*W # K3LOADERMT : WE GET HERE AS SOON AS GEORGE IS RESIDENT
27TG # IN ITS BS FILE. LOADER IS BROUGHT DOWN &
28*6 # IS ENTERED.
28SQ #
29#B # *** DATA AREAS ***
29S2 #
2=?L #
2=R= #DEF MTFAILMK=JLFAIL
2?=W #DEF THEFILE=JLFILE
2?QG #DEF TRAPFAIL=JLTRAP
2#=6 #DEF STARTCOMM=JLCOMM
2#PQ #
2*9B #
2*?K ...JLSMESS +0 [CHAR COUNT FOR ECHOING
2**S ...JLMESS
2*D3 ...#GAP 25 [CONSOLE BUFFER
2*G= ... 4H [THESE ARE HERE SO THAT DELETE CHARS
2*JF ...# [ARE HANDLED PROPERLY
2*LN ...#
2*P2 Z511 +511
2B8L ZNEWINST LDX 4 WRITEAWAY(2)
2BN= ZOLDINST LDN 4 1
2C7W S
2CMG #GAP 6
2D76 JLTABLE
2DLQ ZALDS +LFSTABLE
2F6B +LCDUM
2FL2 +DFSTABLE
2G5L +DCDUM
2GK= # CONTROL AREAS FOR MT
2H4W #
2HJG JLMHEAD
2HWX ...MHEAD +0,+10,+JLMHEADA
2J9# ...JLMSKIP
2JHQ MSKIP +4,+0,+0
2JRJ ...JLMDATA
2K3B ...MDATA +0,+512,+AENDCHAPS+1024
2K?8 ...JLMTREW
2KH2 MTREW +7,+0,+0
2L2L #
2LG= NDADD
2L^W JLNDADD -512 [LAST D-ADDRESS TRANSFERRED TO BS
2MFG MTYPE5 #73050005 [WD 0 OF TYPE 5 BLK
2M^6 MENT #73030002 [WD 0 OF ENTRY BLK
2NDQ JLTMCNT
2NYB TMCOUNT +0 [COUNT OF TM'S READ
2PD2 MRFIRS +DFSTABLE+FIRS
2PXL JLMHEADA
2QC= MHEADA
2QWW #GAP 10
2R6N ...X1 +0 [FOR ACCUMULATOR
2RBG PTLINK +0 [FOR PERITAPE
2RW6 WRLINK +0 [FOR JLWRITE
2S*Q WRLINKA +0 [FOR WRITE
2STB WRX4 +0
2T*2 WRX7 +0
2TSL BSVOL
2W#= VOLPROG +DGEND+LGEND [SIZE OF GEORGE FILE ON TAPE
2WJ4 ...JLVOLFILE
2WRW VOLFILE +0 [TO KEEP SIZE OF G'S BS FILE
2X?G ZBMARK +0 [-VE -> HANDLING ZERO-BLKS
2XR6 SEPAR +0 [ZERO-BLK SEPARATION
2XY# ...#SKI G4
2Y5G ...JLSWBUF +0 [IN LOADEREM FOR G3
2Y=Q MASKA #37777777 [USEFUL MASK
2YCY ...XDLOADERMT +DLOADERMT [NOW REDUNDANT
2YK7 ...THEEND +ENDOFLA+LLOADERPM
2^=2 READOWN +0,+0,+0,+0 [MODE/COUNT/CTSA/DTSA FOR READING
2^PL [DOWN LOADER
329= ...WRITEAWAY +1,+0,+AENDCHAPS,+0 [MODE/COUNT/CTSA/DTSA FOR WRITING
32NW [BLOCKS AWAY TO BS
32YN ...JLGSMALL
338G SMALL +32,32H GEORGE BS FILE TOO SMALL^*^*
33D# ...JLGSFMESS
33N6 SFMESS +24,24H MT CHECKSUM FAIL^*^*
33XY ...JLGMFEMESS
347Q MFEMESS +23,23H MT FORMAT ERROR^*^*
34CJ ...JLGMTFAIL
34MB MTFAIL +15,15H MT FAIL^*^*
34X8 ...JLGVLOST
3572 VLOST +20,20H LOST MY TAPE^*^*
35BS ...JLGREADY
35LL READY +18,18H OK^*LOADED^*^*
35WD ...WIDTH +49,49H WARNING^* GEORGE FILE IS NOT FULL WIDTH^*^*
366= #
36KW #
375G #
37K6 #
384Q # S/R TO EXECUTE TRANSFERS ON MAG TAPE
38JB # CALLED VIA X0
3942 # EXPECTS X6->CONTROL AREA; JLPSMT(2)->DL FOR TAPE
39HL JLPTAPE
3=3= PERITAPE
3=GW # NOT TAPEMARK ENTRY POINT
3?2G NGNC 5 1
3?G6 # TM ENTRY POINT
3?^Q LDN 5 0
3#FB ERN 5 1
3#^2 STO 0 PTLINK(2)
3*DL LDX 1 JLPSMT(2) [->DL FOR TAPE
3*Y= JENG 1,PT1
3BCW PT2 LDN 1 MTFAIL(2) [TAPE FAIL
3BXG STOZ MTFAILMK(2) [INDICATE IT
3CC6 BRN JLER
3CWQ PT1 LDX 2 6
3DBB LDX 7 0(2)
3DW2 DCA 1,STO,7,MODE
3F*L LDX 7 1(2)
3FT= DCA 1,STO,7,COUNT
3G#W LDX 7 2(2)
3GSG DCA 1,STO,7,CTSA [SET UP CONTROL AREA
3GWP ... LDX 2 G3DOL
3H5B ... LDX 7 JLSWBUF(2)
3H7K ... BNZ 7 PT3 [NOT YET IF DOUBLE BUFFERING
3H#6 SMO G3DOL
3HRQ LDN 2 JLPSMT-CPPTR [2->PAB
3J?B GPERI 1,2,NC
3JR2 PT3 JBUSY 1,PT3 [WAIT ON TERMINATION
3K=L DCA 1,LDEX,7,MODE [GET PERI MODE
3KQ= LDX 2 G3DOL
3L9W SBN 7 7
3LPG BZE 7 PT4 [REWINDS CAN'T FAIL
3M96 ADN 7 3
3MNQ BNZ 7 PT5 [NOT SKIP-TO-TM
3MX2 ... LDN 1 JLPSMT-CPPTR
3N5= ... LDX 0 CPRW1
3N?G ... SLL 0 3
3NFQ ... BNG 0 PT2 [FAILED
3NN2 BRN PT4 [OK
3P7L PT5 LDX 0 JLPSMT+1(2) [GET REPLY WD.
3PM= SRL 0 19
3Q6W ANDN 0 #27 [GET B0 & B2-B4
3QLG ERX 0 5 [SWITCH B4 IF TM EXPECTED
3R66 BNZ 0 PT2 [FAILED
3R8P ...PT4
3RDG ... LDX 7 JLSWBUF(2)
3RH5 ... BZE 7 PT6 [SINGLE BUFFRG DONE ALREADY
3RKN ... SMO G3DOL
3RN? ... LDN 2 JLPSMT-CPPTR [2->PAB
3RQW ... GPERI 1,2,NC
3RTF ... LDX 2 G3DOL
3S2M ...PT6 LDX 0 PTLINK(2) [RELOAD LINK
3S5B EXIT 0 0
3TJ= #
3W3W #
3WHG # S/R TO WRITE AWAY A BLK FROM JLBUFF TO BS.
3X36 # DRUM ADDRESS OF BLK IN X7
3XGQ # CALLED VIA X0
3Y2B # FILE DETAILS AT BSDESC (Q.V.).
3YG2 # DEVICE DETAILS:
3Y^L # 1) PTR TO DEVICE LIST IN JLPSBS
3^F= # 2) DEVICE TYPE (6,9,13,25 OR 26) IN JLBS
3^YW # 3) DEVICE SUBTYPE IN JLBSUB (IF DISC).
42DG #
42Y6 JLWRITE
43CQ STO 0 WRLINK(2)
43N= ... LDX 0 JLSWBUF(2)
43SG ... LDX 5 AJLBUFF(2)
43YQ ... SBX 5 2 [ROUND DATUM PROBLEM - TEMP
44*G ... BZE 0 WR00 [JUMP IF S. BUFF'G
44FQ ... ADX 5 JLTDOUBUF(2)
44Q= ...WR00 STO 5 WRITEAWAY+2(2) [USUAL CTSA
44WL LDX 0 JLBS(2)
45B= ANDN 0 6
45TW BZE 0 WRDRUM
46*G #
46T6 # WRITING TO DISC
47#Q #
47SB LDN 0 512
48#2 STO 0 WRITEAWAY+1(2) [COUNT IN GENERAL
48RL SRL 7 7 [->BLKS
49?= LDX 5 7 [X7]=1ST IN GROUP REL BLKNO
49QW ADN 5 3 [X5]= LAST...
4==G DVS 4 BSDESC+5(2) [/FILEDEPTH
4=Q6 DVS 6 BSDESC+5(2) [/FILEDEPTH
4?9Q TXU 5 7 [FIRST & LAST BLKS IN SMME CYL
4?PB BCC WR01 [YES
4#92 #
4#NL # GROUP SPLIT OVER CYL
4*8= #
4*MW LDX 0 BSDESC+5(2) [FILE DEPTH
4B7G SBX 0 6 [X0]=NO OF BLKS IN 1ST CYL
4BM6 SLL 0 7 [-> WDS
4C6Q STO 0 WRITEAWAY+1(2) [COUNT FOR 1ST TRANSFER
4CLB CALL 0 WRITE [WRITE AWAY 1ST LOT
4D62 LDX 0 WRITEAWAY+1(2)
4DKL ADS 0 WRITEAWAY+2(2) [DTSA FOR 2ND TRANSFER
4F5= SBN 0 512
4FJW NGS 0 WRITEAWAY+1(2) [COUNT FOR 2ND TRANSFER
4G4G LDX 6 4 [REL BLKNO
4GJ6 LDX 7 5 [REL CYLNO
4H3Q #
4HHB WR01 CALL 0 WRITE
4J32 LDX 0 WRLINK(2)
4JGL EXIT 0 0
4K2= #
4KFW # S/R TO WRITE AWAY CHUNKLETS (1,2,3,4 BLKS)
4K^G # EXPECTS CTSA & COUNT FILLED IN & [X6]= BLKNO REL TO FILE
4LF6 # & [X7]= CYLNO REL TO FILE
4LYQ #
4MDB WRITE STO 0 WRLINKA(2)
4MY2 MPY 7 BSDESC+4(2) [REL CYLNO*BLKS/CYL
4NCL ADX 0 BSDESC+2(2) [+START BLKNO OF FILE
4NX= ADX 0 6 [+REL BLKNO
4PBW [GIVES ABS BLKNO REL TO SU
4PWG ... LDX 1 0
4QB6 ... CALL 6 JLCONV2 [-> HA IN X0
4R*B LDN 1 WRITEAWAY(2)
4RT2 STO 0 3(1) [DTSA
4S#L LDX 3 JLPSBS(2)
4SS= CALL 0 JLPDISC
4T?W NULL
4TRG LDX 0 WRLINKA(2)
4W?6 EXIT 0 0
4WQQ #
4X=B # WRITING TO DRUM
4XQ2 #
4Y9L WRDRUM
4YP= LDX 0 JLBS(2)
4^8W SBN 0 9
4^NG BZE 0 WRSD [DETERMINE DRUM TYPE
5286 WRHSD
52MQ SRL 7 7 [BLK ADDR
537B WRSD ADX 7 BSDESC(2) [+ DATUM
53M2 LDN 1 WRITEAWAY+1(2)
546L STO 7 2(1)
54L= LDN 7 512 [COUNT
555W STO 7 0(1)
55KG LDN 4 1
5656 LDX 3 JLPSBS(2)
56JQ LDCT 0 #400 [DON'T IGNORE FIXES OR FAILS
574B CALL 6 JLPDRUM [TRANSFER
57J2 ... 0
583L LDX 0 WRLINK(2) [RESTORE LINK
58H= EXIT 0 0
592W #
59GG #
5=26 # VARIOUS ERROR PATHS
5=FQ #
5=PJ ...JLSUMF
5=^B SUMF
5?F2 LDN 1 SFMESS(2)
5?YL STOZ MTFAILMK(2) [IRRECOVERABLE
5#D= BRN JLER
5#XW ...JLMFE
5*CG ...MFE LDN 1 MFEMESS(2)
5*X6 STOZ MTFAILMK(2) [IRRECOVERABLE
5BBQ BRN JLER
5BLJ ...JLTOOSMALL
5BWB TOOSMALL
5CB2 LDN 1 SMALL(2)
5CTL BRN JLER
5D*= #
5DSW #
5F#G #
5FS6 #
5G?Q #
5GRB K2LOADERMT
5H?2 #
5HQL # WE GET HERE WHEN THE BS FILE HAS BEEN LOCATED, CARRYING
5J== # X3->DL OF DEVICE HOLDING FILE
5JPW # X1->FILE FAC(DISC)/DIR.ENTRY(DRUM).
5K9G #
5KBN ...#SKI G3
5KHW ... STOZ JLSWBUF(2)
5KP6 LDN 2 THEFILE(2) [STORE
5L8Q MOVE 1 5 [ AWAY
5LNB LDX 2 G3DOL [ FOR
5M82 STO 3 JLPSBS(2) [ FUTURE
5MML ... LDX 0 AJLBUFF(2) [SET
5N7= STO 0 MDATA+2(2) [ UP
5NLW LDN 0 MHEADA(2) [ THE
5P6G STO 0 MHEAD+2(2) [ CTSA'S
5PL6 STOZ TMCOUNT(2)
5Q5Q LDX 0 JLBS(2) [GET REAL DEVICE TYPE
5QKB ANDN 0 6
5R52 BNZ 0 VDISC [DISC
5RJL #
5S4= # GET DETAILS OF DRUM FILE FOR JLWRITE
5SHW VDRUM
5T3G LDX 0 0(1) [GET D/L WD
5TH6 LDX 7 JLBS(2)
5W2Q SBN 7 9
5WGB BNZ 7 VHSD [HSD
5X22 #
5XFL LDN 1 0
5X^= SRL 01 10
5YDW SRL 1 4 [WD LENGTH IN X1
5YYG STO 1 VOLFILE(2) [STORE FILE SIZE
5^D6 ANDN 0 #3777
5^XQ SLL 0 10 [WD DATUM IN X0
62CB V01A STO 0 BSDESC(2) [DATUM
62X2 STO 1 BSDESC+1(2) [LENGTH
63BL BRN V01
63W= #
64*W VHSD SRL 01 12 [DATUM IN BLKS IN X1
64TG SRL 1 5 [WD FILE SIZE
65*6 STO 1 VOLFILE(2) [STORE IT
65SQ SRL 1 7 [LENGTH IN BLKS IN X1
66#B BRN V01A
66S2 #
67?L VDISC
67DS ... LDX 7 2(1) [ FULL WIDTH FILE ?
67L2 ... BPZ 7 WID1
67R8 ... LDN 1 WIDTH(2) [ IF NOT PUT OUT A WARNING MESSAGE
67YB ... CALL 6 JLOUT
685J ...WID1 LDX 6 1(1)
68=W ANDX 6 MASKA(2)
68QG STO 6 BSDESC+2(2) [START BLKNO
69=6 LDX 7 2(1)
69PQ ANDX 7 MASKA(2)
6=9B STO 7 BSDESC+3(2) [END BLKNO+1
6=P2 LDX 0 4(1)
6?8L STO 0 BSDESC+4(2) [BLKS/CYL
6?N= SBX 7 6 [BLKSIZE OF FILE
6#7W SLL 7 7
6#MG STO 7 VOLFILE(2) [[STORE WD.SIZE OF FILE
6*76 SRL 7 7
6*LQ DVS 6 0 [/BLKSPERCYL
6B6B BNZ 6 V14
6BL2 LDX 6 BSDESC+4(2) [FULL DEPTH FILE
6C5L V14 STO 6 BSDESC+5(2) [FILE DEPTH
6CK= #
6D4W V01 LDX 0 VOLFILE(2) [GET SIZE OF BS FILE
6DJG TXL 0 VOLPROG(2) [< PROGRAM SIZE?
6F46 BCS TOOSMALL [YESSO WON'T FIT
6FHQ #
6G3B # FOLLOWING COMPACTS THE FS TABLE & STOZZES THE REST , LEAVING A
6GH2 # POINTER TO THE END OF THE LIST.
6H2L LDN 0 FSTABLEN-1
6H*3 ... LDX 1 AJLRTAB(2)
6HMD ... ADN 1 5
6H^W ... LDX 2 AJLRTAB(2)
6JFG TFS20 LDX 4 0(2)
6J^6 BZE 4 TFS21
6KDQ ADN 2 5
6KYB BRN TFS20
6LD2 TFS21 LDX 4 0(1)
6LXL BNZ 4 TFS22
6MC= ADN 1 5
6MWW BCT 0 TFS21
6NBG BRN TFS23
6NW6 TFS22 MOVE 1 5
6P*Q STOZ 0(1)
6PTB BRN TFS20
6Q*2 TFS23 LDX 7 2
6QSL TFS24 TXL 2 1
6R#= BCC TFS25
6RRW STOZ 0(2)
6S?G ADN 2 1
6SR6 BRN TFS24
6T=Q TFS25 LDX 2 G3DOL
6TQB ... SBX 7 AJLRTAB(2)
6W=2 ... STO 7 JLRSW(2)
6WPL #
6X9= #
6XNW V02 LDCT 0 #400 [TRAP DISC/TAPE
6Y8G STO 0 TRAPFAIL(2) [FAILS NOW ON
6YN6 #
6^7Q # FROM THIS POINT THE TAPE HAS MOVED & RECOVERY IS AWKWARD IF A
6^MB # BS FAIL OCCURS & IMPOSSIBLE IF A TAPE FAIL OCCURS. ANY FAIL FROM
7272 # NOW ON CAUSES CONTROL TO PASS TO RECOVERY.
72LL # FIRST POSITION TAPE AT START OF PROGRAM FILE IN GIN DUMP.
736= #
73KW JENG 3,V03 [TAPE STILL THERE
745G LDN 1 VLOST(2)
74K6 BRN CATASTROPHE [GIVE UP
754Q V03 LDN 6 MSKIP(2)
75JB CALL 0 PERITAPE [SKIP TO END OF S/F
7642 LDN 0 1
76HL ADS 0 TMCOUNT(2)
773= LDN 6 MHEAD(2)
77GW CALL 0 PERITAPE [READ END S/F SENT
782G LDCT 0 #400
78G6 ERX 0 MHEADA(2)
78^Q BNZ 0 MFE [NOT CORRECT
79FB V04 CALL 0 PERITAPE+1 [READ A TM
79^2 LDN 0 1
7=DL ADS 0 TMCOUNT(2)
7=Y= CALL 0 PERITAPE [READ START SENT FOR GIN DUMP
7?CW LDX 0 MHEADA(2)
7?XG SBN 0 6 [NOT END OF S/F SENT
7#C6 BNZ 0 MFE
7#WQ LDX 0 MHEADA+2(2)
7*BB LDX 4 MHEADA+3(2)
7*W2 LDX 7 MHEADA+4(2)
7B*L TXU 0 GELLY+1(2)
7BT= TXU 4 GELLY+2(2)
7C#W TXU 7 GELLY+3(2)
7CSG BCS MFE [NOT CORRECT NAME
7D#6 CALL 0 PERITAPE+1 [READ TM
7DRQ LDN 0 1
7F?B ADS 0 TMCOUNT(2)
7FR2 CALL 0 PERITAPE [READ GIN REQUEST SLIP
7G=L LDCH 0 MHEADA(2)
7GQ= SBN 0 #73
7H9W BNZ 0 MFE [NOT BINARY BLK
7HPG LDX 0 MHEADA(2)
7J96 ANDN 0 #77
7JNQ SBN 0 1
7K8B BNZ 0 MFE [NOT REQUEST SLIP
7KN2 V06 CALL 0 PERITAPE [READ TO FIND PROGRAM FILE DUMP
7L7L LDX 0 MHEADA(2)
7LM= TXU 0 MENT(2)
7M6W BCC RNEXT [ENTRY BLK - END OF CORE IMAGE
7MLG TXU 0 MTYPE5(2)
7N66 BCS MFE [NOT TYPE 5 BLK
7NKQ CALL 0 PERITAPE [READ DATA BLK
7P5B BRN V06
7PK2 #
7Q4L #
7QJ= #
7R3W # TAPE NOW POSITIONED TO READ GEORGE TYPE 5 BLKS
7RHG #
7S36 RNEXT LDN 6 MHEAD(2)
7SGQ CALL 0 PERITAPE [READ SPECIFYING BLK PERHAPS
7T2B LDX 0 MHEADA(2)
7TG2 TXU 0 MENT(2)
7T^L BCS V13 [NOT ENTRY BLK
7WF= LDN 7 MHEADA(2)
7WYW SUM 6 3
7XDG BNZ 6 SUMF [CHECKSUM FAIL ON ENTRY BLK
7XY6 LDN 6 MTREW(2)
7YCQ BRN K3LOADERMT [GO & LOAD LOADER
7YXB #
7^C2 # CHECK LAST BLK READ IS TYPE 5 & WRITE IT (OR ZERO BLKS) AWAY.
7^WL #
82B= V13 TXU 0 MTYPE5(2)
82TW BCS MFE [NOT TYPE 5 BLK
83*G LDN 7 MHEADA(2)
83T6 SUM 6 5
84#Q BNZ 6 SUMF [SPECIFYING BLK DOES NOT CHECKSUM
84SB LDN 6 MDATA(2)
85#2 CALL 0 PERITAPE [READ A DTA BLK
85RL LDX 1 MHEADA+2(2)
86?= ANDN 1 #777 [EXTRACT BLK LENGTH
86QW ... LDX 7 AJLBUFF(2)
87=G SUM 6 0(1) [& SUM BLK
87Q6 STO 6 MHEADA+4(2)
889Q LDN 7 MHEADA+3(2)
88PB SUM 6 2
8992 BNZ 6 SUMF [DATA BLK DOES NOT CHECKSUM
89NL #
8=8= # MUST NOW DETERMINE IF ANY ZERO-BLKS HAVE BEEN OMITTED BETWEEN BLK
8=MW # JUST READ & PRECEDING ONE. IF NONE HAVE , BLKS SHOULD BE
8?7G # CONCURRENT. OTHERWISE, IF SOME ZERO-BLKS ARE MISSING,
8?M6 # WE MUST WRITE THEM TO BS , ENSURING THAT FS'S & ALTERS FOR
8#6Q # THEM ARE INCLUDED,.
8#LB #
8*62 LDX 0 VOLFILE(2)
8*KL TXL 0 MHEADA+1(2) [BS ADDRESS
8B5= BCS MFE [NOT IN RANGE
8BJW LDX 0 MHEADA+1(2) [THIS BACKING STORE ADDRESS
8C4G SBX 0 NDADD(2) [ - LAST BS-ADDR.
8CJ6 SBN 0 512
8D3Q BZE 0 VV01 [CONSE CUTIVE BLKS
8DHB SRL 01 9 [SEPARATION/512
8F32 SRL 1 15
8FGL BNZ 1 MFE [SEP(MOD 512) NOT=0, MT FE
8G2= SBN 0 1
8GFW STO 0 SEPAR(2) [NO. OF ZERO-BLKS - 1
8G^G ... LDX 0 AJLBUFF(2)
8HF6 ... LDX 1 AJLBUFF(2)
8HYQ ADN 1 512
8JDB MOVE 0 0 [MOVE DATA BLK OUT OF WAY
8JN8 ... LDX 1 AJLBUFF(2)
8JY2 ... ADN 1 1
8K7S ... LDX 3 AJLBUFF(2)
8KHH ... STOZ 0(3)
8KX= MOVE 0 511 [CLEAR BUFFER
8LBW LDN 0 MHEADA(2)
8LWG ADN 1 1023
8MB6 MOVE 0 5 [MOVE SPEC BLK OUT OF WAY
8MTQ LDCT 0 #400 [SET ZERO-BLK MARK
8N*B STO 0 ZBMARK(2)
8NT2 VV04 LDN 0 512
8P#L STO 0 MHEADA+2(2) [WD COUNT OF BLK
8PS= ADX 0 NDADD(2)
8Q?W STO 0 NDADD(2) [UPDATE 'LAST BS-ADDR.'
8QRG STO 0 MHEADA+1(2) [SET UP SPEC BLK FOR NEXT ZERO-BLK
8R?6 BRN VV02
8RQQ VV01 STOZ ZBMARK(2) [NO ZERO-BLKS
8S=B LDN 0 512
8SQ2 ADS 0 NDADD(2) [UPDATE "LAST D-ADRESS"
8T9L VV02
8TP= #
8W8W # FILL IN ANY FS DESCS & ALTERS FOR BLOCK READ
8WNG #
8X86 ... LDX 3 JLRSW(2)
8XMQ BZE 3 V07 [NO FS'S
8Y7B BPZ 3 V08
8YM2 NGX 3 3
8^2P ... LDX 1 AJLRTAB(2)
8^BD ... LDX 0 0(1)
8^Q7 ... LDX 1 AJLBUFF(2)
925W MOVE 0 0(3)
92KG ... STOZ JLRSW(2)
9356 BRN V07
93JQ #
944B V08 LDX 1 MRFIRS(2)
94J2 LDX 6 MHEADA+1(2)
953L ADX 6 MHEADA+2(2) [END D-ADDR OF BLK
95H= TXL 1 6
962W BCC V07 [THIS BLK TOO LOW
96GG SBX 6 1 [DISTANCE FROM FIRS TO END OF BLK
9726 LDN 3 FSTABLEN+1*5 [COUNT=TOTAL SIZE OF TABLE
97FQ TXL 6 3
97^B BCC V09 [ROOM FOR WHOLE TABLE IN THIS BLK
98F2 LDX 3 6 [ELSE TAKE COUNT TO END OF BLK
98YL V09 SBX 1 MHEADA+1(2)
99D= ... ADX 1 AJLBUFF(2)
99XW ... LDX 0 AJLRTAB(2)
9=CG MOVE 0 0(3) [MOVE IN (PART OF) TABLE
9=X6 ADX 0 3
9?9H ... LDX 1 AJLRTAB(2)
9?HY ... STO 0 0(1) [SET POINTER TO NEXT WD TO MOVE IN
9?WB SBN 3 FSTABLEN+1*5 [X3=-REMAINDER COUNT
9#B2 ... STO 3 JLRSW(2) [NEG TO INDICATE MORE TO GO
9#TL #
9**= # CHECK IF THERE ARE ANY ALTERS FOR THIS BLOCK.
9*SW #
9B7? ...V07 LDX 1 AJLRAT(2)
9BFN ... LDX 7 0(1)
9BS6 BZE 7 V12 [NO ALTERS
9C?Q SRL 7 1
9CRB ... ADN 1 1 [ NEXT WORD
9D?2 LDN 6 0
9DQL V10 LDX 3 0(1) [D-ADDR OF ALTER
9F== BZE 3 V11 [ALREADY DONE
9FDG ... STO 1 X1
9FLQ ... LDX 1 AJLRAT(2)
9FT2 ... LDX 6 0(1) [SET X6, STILL SOME TO DO
9G3= ... LDX 1 X1
9G9G TXL 3 MHEADA+1(2)
9GP6 BCS V11 [THIS BLOCK TOO HIGH
9H8Q SBX 3 MHEADA+1(2)
9HNB TXL 3 MHEADA+2(2)
9J82 BCC V11 [OR TOO LOW
9JML ... ADX 3 AJLBUFF(2)
9K7= LDX 0 1(1) [GET ALTERING WD
9KLW STOZ 0(1) [CLEAR IT &
9L6G STO 0 0(3) [ALTER BUFFER
9LL6 V11 ADN 1 2
9M5Q BCT 7 V10 [NEXT
9MD7 ... LDX 1 AJLRAT(2)
9MQJ ... STO 6 0(1)
9N52 #
9NJL V12 LDX 7 MHEADA+1(2) [D-ADDRESS OF BLOCK
9P4= CALL 0 JLWRITE [WRITE BLK TO BS
9PHW #
9Q3G LDX 0 ZBMARK(2) [HANDLING ZERO-BLKS?
9QH6 BZE 0 RNEXT [NO, READ NEXT BLK-PAIR
9R2Q LDX 0 SEPAR(2) [ALL ZERO-BLKS WRITTEN AWAY?
9RGB BZE 0 VV03 [YES, GO & WRITE AWAY WAITING BLK
9S22 LDN 0 1
9SFL SBS 0 SEPAR(2) [DECREMENT COUNT
9S^= BRN VV04
9TDW #
9TYG VV03 STOZ ZBMARK(2) [CLEAR ZERO-BLK MARK
9WD6 ... LDX 0 AJLBUFF(2)
9WXQ LDX 1 0
9XCB ADN 1 512
9XX2 MOVE 0 0 [REPLACE WAITING DATA BLK
9YBL ADN 1 512
9YW= LDN 0 MHEADA(2)
9^*W MOVE 0 5 [REPLACE WAITING SPEC BLK
9^TG LDX 0 MHEAD+1(2)
=2*6 STO 0 NDADD(2) [UPDATE NDADD
=2SQ BRN VV02
=3#B #
=3S2 #
=4?L #
=4R= #
=5=W #
=5QG # WE GET HERE AFTER GEORGE HAS BEEN COPIED FROM MT TO ITS BS FILE.
=6=6 # MUST NOW LOAD LOADER FROM THIS FILE & SET UP EVERYTHING TO
=6PQ # LOOK AS THOUGH GELL HAS JUST BEEN THROUGH
=79B #
=7P2 K3LOADERMT
=88L #
=8N= # RE-CALCULATE CHECKSUMS FOR ALTERED GEORGE SEGMENTS
=97W #
=9MG LDX 3 ZNEWINST(2)
==76 STO 3 WRSD+5(2)
==LQ NGNC 3 1
=?6B NEXTSUM
=?L2 LDN 3 0
=#5L ADX 3 2
=#K= STOZ WRITEAWAY(2)
=*4W LDN 5 0
=*JG LDX 7 ZALDS+2(3)
=B46 LDX 1 ZALDS(3)
=BHQ SBN 1 1
=C3B TXL 1 Z511(2)
=CH2 BCS ONEREAD
=D2L TXU 1 Z511(2)
=DG= BCC ONEREAD
=D^W CALL 0 SAVE
=FFG CALL 0 JLWRITE
=F^6 CALL 0 RESTORE
=GDQ ... LDX 6 AJLBUFF(2)
=GYB SUM 5 512
=HD2 ADN 7 512
=HXL SBN 1 512
=JC= ONEREAD
=JWW CALL 0 SAVE
=KBG CALL 0 JLWRITE
=KW6 CALL 0 RESTORE
=L*Q STO 5 0
=LTB ... LDX 6 AJLBUFF(2)
=M*2 SUM 5 0(1)
=MSL ADX 5 0
=N#= #SKI 76?-2<1$1 [INCLUDE IF D-ADD IN CHECKSUM
=NRW SBX 5 ZALDS+2(3)
=P5= ... STO 1 X1(2)
=PBL ... LDX 1 AJLBUFF(2)
=PN2 ... SMO X1(2)
=P^B ... NGS 5 0(1)
=Q=Q LDN 5 1
=QQB STO 5 WRITEAWAY(2)
=R=2 CALL 0 SAVE
=RPL CALL 0 JLWRITE
=S9= CALL 0 RESTORE
=SNW SBX 3 2
=T8G SBN 3 1
=TN6 BZE 3 NEXTSUM
=W7Q LDX 3 ZOLDINST(2)
=WMB STO 3 WRSD+5(2)
=X72 LDX 7 JLBS(2) [GET G BS DEVICE TYPE
=XLL ANDN 7 6
=Y6= BZE 7 OFFDRUM [GEORGE ON DRUM
=YKW #
=^5G # LOADER DOWN FROM DISC
=^K6 #
?24Q OFFDISC
?2JB LDX 0 THEFILE+4(2)
?342 STO 0 JLNOB(2) [BLKS/CYL FOR G FILE
?3HL LDX 1 THEFILE+1(2) [BLK.ADDR OF START OF FILE
?43= ... CALL 6 JLCONV2 [H.A. IN X0
?52G LDN 1 READOWN(2)
?5G6 STO 0 3(1) [DTSA
?5^Q ... LDN 0 K19 [WAS (X)DLOADERMT
?6FB STO 0 1(1) [COUNT
?6^2 ... LDX 0 BK18X
?7DL SBX 0 2
?7Y= STO 0 2(1) [CTSA
?8CW LDX 3 JLPSBS(2) [DL PTR
?8XG CALL 0 JLPDISC [BRING DOWN LOADER
?9C6 NULL
?9WQ BRN POLISH
?=BB #
?=W2 # LOADER DOWN FROM DRUM
??*L #
??T= OFFDRUM
?##W LDN 1 READOWN+1(2)
?#SG LDN 4 0 [READ MODE
?*#6 ... LDN 0 K19 [WAS (X)DLOADERMT
?*RQ STO 0 0(1) [COUNT
?B?B ... LDX 0 BK18X
?BR2 SBX 0 2
?C=L STO 0 1(1) [CTSA
?CQ= LDX 6 BSDESC(2) [G FILE DATUM
?D9W OFF1 STO 6 2(1) [DTSA
?DPG LDX 3 JLPSBS(2)
?F96 LDCT 0 #400 [DON'T IGNORE FIXES OR FAILS
?FNQ CALL 6 JLPDRUM [BRING DOWN LOADER
?G8B NULL
?GN2 LDN 6 THEFILE(2)
?H7L LDX 7 STARTCOMM(2)
?HM= ADN 7 BLDRUM-BLEXEC
?J6W MOVE 6 4 [MOVE DIR ENTRY TO K18-K42 AREA &
?JLG BRN POLISH [JUST ABOUT DONE
?K66 #
?KKQ # READY TO CLEAR CORE & ENTER LOADER
?L5B POLISH
?LK2 STO 3 GEOBSPTR [STORE DL PTR FOR LOADER
?M4L LDN 1 READY(2)
?MJ= CALL 6 JLOUT [LOADED MESSAGE
?N6Q ...NDDME LDX 4 BK18X [FOR ENTRY TO LOADER
?N94 ... EXIT 4 0 [AVOID SUICIDE
?NB= ...#
?NHG LDX 3 4
?P36 ADN 3 K19 [FOR START OF CLEARING
?PGQ LDN 6 SUICIDE(2)
?Q2B LDN 7 15
?QG2 MOVE 6 5 [MOVE CLEARING LOOP
?Q^L ... LDX 5 THEEND(2)
?RF= ... ADX 5 2 [THIS IS ENOUGH TO CLEAR SELF OUT
?RYW EXIT 7 0
?SDG #
?SY6 # SUICIDE LOOP
?TCQ #
?TXB SUICIDE
?WC2 STOZ 0(3)
?WWL ADN 3 1
?XB= TXL 3 5
?XTW BCS SUICIDE
?Y*G EXIT 4 0
?YT6 #
?^#Q #
?^SB #
#2#2 #
#2RL #
#3?= #
#3QW #
#4=G SAVE
#4Q6 STO 1 S(2)
#59Q LDN 1 3
#5PB LDN 2 S+1(2)
#692 MOVE 1 5
#6NL LDX 2 G3DOL
#78= EXIT 0 0
#7MW RESTORE
#87G LDX 2 G3DOL
#8M6 LDN 1 S+1(2)
#96Q LDN 2 3
#9LB MOVE 1 5
#=62 LDX 2 G3DOL
#=KL LDX 1 S(2)
#?5= EXIT 0 0
#?8N ...K77LOADERMT [ DATA AREA FOR MENDS
#?#6 ...#GAP 767-0?
#?CL ...#
#?JW #END
^^^^ ...320751610002