LOADEREM867

(George Source)

Macros used: JBUSY, JENG, TEST

LOADEREM867.txt
22FL ...#SEG  LOADEREM86                   [M. DRUKKER  
22J9 ...#  ######################################################## 
22LS ...#   
22PC ...#  (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982   
22S2 ...#   
22WK ...#  #########################################################
22^=    #LIS  K0LOADERMT>K0LOADER>K0ALLGEO  
23DW    #   
23L4 ...#SKI G3 
23R= ...(   
23YG    #   
24D6 ...#     THIS SEGMENT CONTAINS THE SECOND ENTRY POINT: 
24XQ ...#        K1LOADEREM : WE GET HERE WHEN THE GEORGE FILE HAS BEEN 
25CB ...#                     LOCATED AFTER A DA/ED/FD COMMAND UNDER EMULN. 
25X2    #                     GEORGE IS TRANSFERRED FROM TAPE TO ITS
26BL    #                     FUTURE HOME   
26W=    #   
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##* ...#DEF  SMALL=JLGSMALL
2#BJ ...#DEF  SFMESS=JLGSFMESS  
2#DR ...#DEF  MFEMESS=JLGMFEMESS
2#H2 ...#DEF  MTFAIL=JLGMTFAIL  
2#K9 ...#DEF  VLOST=JLGVLOST
2#MD ...#DEF  READY=JLGREADY
2#PQ    #   
2*9B ...Z511           +511 
2*P2 ...Z512           +512 
2MFG    MTYPE5         #73050005           [WD 0 OF TYPE 5 BLK  
2M^6    MENT           #73030002           [WD 0 OF ENTRY BLK   
2NDQ ...MRFIRS         +DFSTABLE+FIRS      [OLD D-ADDRS AS READING-IN BLKS  
2NYB ...MHEADB  
2PD2 ...#GAP  10
2PXL ...ZBMARK         +0                  [NEXT OFF TAPE(0) / ZERO-BLK(<0) 
2XR6    SEPAR          +0                  [I/P ZERO-BLK SEPARATION 
2Y=Q    MASKA          #37777777           [USEFUL MASK & LARGE NUMBER  
2Y#^ ...MASK5          #37777              [FOR D : SHELLSORT ETC   
2YC8 ...MASK5X         #77740000           [FOR L/K:UPDATING
2YFC ...MASK1K         #77777000           [FOR ROUNDING D/1   UP&DOWN 512  
2YHL ...MASK2K         #77776000           [FOR ROUNDING D/1   UP&DOWN 1K   
2YKT ...MASK2D         #77777770           [FOR ROUNDING D/128 UP&DOWN 1K/128   
2YN4 ...N1             +1   
2YQ? ...N3             +3   
2YSG ...N5             +5   
2YWP ...N9             +9   
2YYY ...X1             +0                  [FOR ACCUMULATOR 
2^37 ...XK18           +K18                [FOR LOADERI 
2^5B ...XMETAFORM      +K1METAFORM  
2^7K ...#   
2^9S ...JLSWBUF 
2^#3 ...SWBUF          +0                  [SINGLE(0) / DOUBLE(<0) BUFFERING
2^B= ...QTSWTCH        +3                  [BEF(3)/DURG(21)/AFT(0) CHAP TABLE   
2^DF ...JLTDOUBUF   
2^GN ...TDOUBUF        +0                  [DECIDES O/P BUFFER (+0 / +512)  
2^JX ...OLDDCHP        +0                  [NEXT CHAPTER'S OLD D-ADDRESS
2^M6 ...NEWDCHP        +0                  [ "      "      NEW    " 
2^P* ...OLDDPTR        +0                  [POINTER TO CURRENT OLD D-ADDRESS
2^RJ ...NEWDPTR        +0                  [   "     "    "    NEW     "
2^TR ...OLDDIFF        +0                  [OLD POINTER DIFFERENCE  
2^Y2 ...NEWDIFF        +0                  [NEW    "        "   
3229 ...NEXTGAP        +0                  [POINTER TO NEXT RESERVED AREA   
324D ...NOLBUF         +0                  [NO. WORDS IN JLLBUFF
326M ...NOMBUF         +0                  [NO. WORDS IN JLMBUFF
328W ...NOMFUB         +512                [512 - NOMBUF
32?5 ...MINN           +0                  [WORDS TO TRANSFER   
32*# ...QNO            +0                  [K-ADDRESS OF CHAPTERS   
32CH ...QTNTRY         +0                  [CHAPTER TABLE ENTRY 
32FQ ...QHTADD         +DCHTABLE           [   "      "   ADDRESS (-1 AT END)   
32H^ ...TABNTRY0       +0                  [PREVIOUS LENGTH 
32L8 ...TABNTRY1       +0                  [PREVIOUS CHAPTAB1 ENTRY 
32NC ...TABNTRY2       +0                  [   "     CHAPTAB2   "   
32ST ...ZLKTAB         +0                  [CHAPTER TABLE IN XBUFF1 
32X4 ...MHBKSZ         +0                  [SIZE OF DATA BLOCK  
32^? ...QNTBIG         -1                  [NUMBER OF LARGE GAPS
333G ...POSCHSM        -1                  [CHECKSUM'S POSITION 
335P ...VALCHSM        +0                  [    "      VALUE
35M8 ...#   
35MF ...JLXCHPCT
35MQ ...XCHAPCOUNT     +KLTAB-1            [NO. CHAPS SET UP (WAS -0)   
35N# ...MESH           +0                  [M FOR SHELLSORT 
35NW ...ZK             +0                  [K FOR SHELLSORT 
35PD ...#   
35Q2 ...#   
35QJ ...#               SUBROUTINE SHELLSORT
35R6 ...#   
35RN ...#             REF. ACM COMMUNICATIONS   
35S= ...#                  VOL. 2   NO. 7   
35SS ...#   
35TB ...#           ON ENTRY ONLY ACC 2 NEED BE DEFINED 
35TY ...#           ON EXIT  ONLY ACC 2 IS STILL DEFINED
35WG ...#   
35X4 ...#              ACC 5 IS USED FOR  I 
35XL ...#              ACC 6 IS USED FOR  J 
35Y8 ...#              ACC 7 IS THE LINK ACC
35YQ ...#   
35^# ...#   
35^W ...#   
362D ...#   
3632 ...SHELLSORT   
363J ...      LDX   4  XCHAPCOUNT(2)       [ GET N  
3646 ...MESHHALVE   
364N ...      SRL   4  1                   [ GET M = [N/2]  
365= ...      BZE   4  (7)                 [ M=0?   
365S ...      STO   4  MESH(2)  
366B ...      LDX   0  XCHAPCOUNT(2)
366Y ...      SBX   0  4
367G ...      STO   0  ZK(2)               [ K=N-M  
3684 ...      LDN   6  0                   [ J=0
368L ...SETI  LDX   5  6                   [ I=J
3698 ...TEST  LDX   3  ACHAPTAB1(2) 
369Q ...      ADX   3  5
36=# ...      LDX   0  0(3)                [ ITH ENTRY  
36=W ...      ANDX  0  MASK5(2) 
36?D ...      LDX   1  MESH(2)  
36#2 ...      ADX   1  3
36#J ...      LDX   4  0(1)                [ (I+M)TH ENTRY  
36*6 ...      ANDX  4  MASK5(2) 
36*N ...      TXL   4  0                   [ J IF D(I) < OR =  D(I+M)   
36B= ...      BCC      STEPJ
36BS ...XCIANGE 
36CB ...      LDX   0  0(3)                [ SWAP (I) AND (I+M) ENTRIES 
36CY ...      LDX   4  0(1) 
36DG ...      STO   4  0(3) 
36F4 ...      STO   0  0(1) 
36FL ...      SBX   5  MESH(2)             [ I=I-M  
36G8 ...      BPZ   5  TEST                [ CONTINUE ORDERING SUBSET?  
36GQ ...STEPJ ADN   6  1                   [ J=J+1  
36H# ...      LDX   4  MESH(2)             [ RESET X4 IN CASE OF JUMP   
36HW ...      TXU   6  ZK(2)               [ J=K ?  
36JD ...      BCC      MESHHALVE
36K2 ...      BRN      SETI 
36KW    #   
375G    #   
37K6    #   
384Q ...K1LOADEREM  
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)/ENTRY(DRUM)  
5K9G    #   
5KP6          LDN   2  THEFILE(2)          [ )  
5L8Q          MOVE  1  5                   [ ) STORE AWAY FOR FUTURE
5LNB          LDX   2  G3DOL               [ )  
5M82          STO   3  JLPSBS(2)           [ )  
5MML ...      LDX   0  AJLTBUFF(2)         [SET 
5N7= ...      STO   0  JLMDATA+2(2)        [    UP  
5NLW ...      LDN   0  JLMHEADA(2)         [      THE   
5P6G ...      STO   0  JLMHEAD+2(2)        [           CTSA'S   
5PL6 ...      STOZ     JLTMCNT(2)   
5Q5Q ...      STOZ     SWBUF(2)            [START WITH SINGLE BUFFERING 
67R=          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  JLVOLFILE(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  JLVOLFILE(2)        [GET SIZE OF (NONEMULATED) BS FILE   
6DJG ...      TXL   0  BSVOL(2)            [< PROGRAM SIZE? 
6F46 ...      BCS      JLTOOSMALL          [YES SO WON'T FIT
6FHQ    #   
6G3B    #     FOLLOWING COMPACTS THE FS TABLE & STOZZES THE REST,   
6GH2    #           LEAVING A 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  JLMSKIP(2)   
75JB ...      CALL  0  JLPTAPE             [SKIP TO END OF S/F  
7642          LDN   0  1
76HL ...      ADS   0  JLTMCNT(2)   
773=          LDN   6  JLMHEAD(2)   
77GW ...      CALL  0  JLPTAPE             [READ END S/F SENT   
782G          LDCT  0  #400 
78G6 ...      ERX   0  JLMHEADA(2)  
78^Q ...      BNZ   0  JLMFE               [NOT CORRECT 
79FB ...V04   CALL  0  JLPTAPE+1           [READ A TM   
79^2          LDN   0  1
7=DL ...      ADS   0  JLTMCNT(2)   
7=Y= ...      CALL  0  JLPTAPE             [READ START SENT FOR GIN DUMP
7?CW ...      LDX   0  JLMHEADA(2)  
7?XG          SBN   0  6                   [NOT END OF S/F SENT 
7#C6 ...      BNZ   0  JLMFE
7#WQ ...      LDX   0  JLMHEADA+2(2)
7*BB ...      LDX   4  JLMHEADA+3(2)
7*W2 ...      LDX   7  JLMHEADA+4(2)
7B*L          TXU   0  GELLY+1(2)   
7BT=          TXU   4  GELLY+2(2)   
7C#W          TXU   7  GELLY+3(2)   
7CSG ...      BCS      JLMFE               [NOT CORRECT NAME
7D#6 ...      CALL  0  JLPTAPE+1           [READ TM 
7DRQ          LDN   0  1
7F?B ...      ADS   0  JLTMCNT(2)   
7FR2 ...      CALL  0  JLPTAPE             [READ GIN REQUEST SLIP   
7G=L ...      LDCH  0  JLMHEADA(2)  
7GQ=          SBN   0  #73  
7H9W ...      BNZ   0  JLMFE               [NOT BINARY BLK  
7HPG ...      LDX   0  JLMHEADA(2)  
7J96          ANDN  0  #77  
7JNQ          SBN   0  1
7K8B ...      BNZ   0  JLMFE               [NOT REQUEST SLIP
7KN2 ...V06   CALL  0  JLPTAPE             [READ TO FIND PROGRAM FILE DUMP  
7L7L ...      LDX   0  JLMHEADA(2)  
7LM=          TXU   0  MENT(2)  
7M6W ...      BCC      RFRST               [ENTRY BLK - END OF CORE IMAGE   
7MLG          TXU   0  MTYPE5(2)
7N66 ...      BCS      JLMFE               [NOT TYPE 5 BLK  
7NKQ ...      CALL  0  JLPTAPE             [READ DATA BLK   
7P5B          BRN      V06  
7PK2    #   
7Q4L    #   
7QJ=    #   
7R3W    #              TAPE NOW POSITIONED TO READ GEORGE TYPE 5 BLKS   
7RHG    #   
7RP7 ...RFRST LDCT  0  #400                [NOW DOUBLE-BUFFER   
7RWS ...      STO   0  JLSWBUF(2)   
7S4F ...      LDN   6  JLMHEAD(2)   
7S=6 ...      CALL  0  JLPTAPE             [READ SPECIFYING BLK PERHAPS 
7SCR ...RNEXT LDN   6  JLMDATA(2)   
7SKD ...      CALL  0  JLPTAPE             [READ A DATA BLK 
7SR5 ...      LDN   0  JLMHEADA(2)  
7SYQ ...      LDN   1  MHEADB(2)
7T6C ...      MOVE  0  5
7T#4 ...      LDX   0  MHEADB(2)
7TG2          TXU   0  MENT(2)  
7T^L          BCS      V13                 [NOT ENTRY BLK   
7W2X ...      LDX   4  NOMBUF(2)
7W48 ...      BZE   4  NOMOR               [J WORKING DA BUFFER EMPTY   
7W5F ...      LDX   7  NEWDPTR(2)   
7W6Q ...      LDX   4  AJLMBUFF(2)  
7W83 ...      LDN   5  512  
7W9# ...      ERX   5  TDOUBUF(2)          [FLIP DA BUFFER SWITCH   
7W=K ...      STO   5  TDOUBUF(2)          [AND REMEMBER IT 
7W?W ...      ADX   5  AJLBUFF(2)   
7W*7 ...      MOVE  4  0
7WBD ...      CALL  0  JLWRITE             [WRITE AWAY LAST DA BUFFER   
7WCP ...NOMOR   
7WF= ...      LDN   7  MHEADB(2)
7WYW          SUM   6  3
7X2= ...      BNZ   6  JLSUMF              [CHECKSUM FAIL ON ENTRY BLK  
7X2N ...#     FINISHED READING OFF TAPE 
7X36 ...#     TIDY UP BEFORE LOADER 
7X3L ...      LDN   6  JLMTREW(2)   
7X52 ...      STOZ     SWBUF(2)            [BACK TO SINGLE BUFFERING
7X6B ...      STOZ     TDOUBUF(2)   
7X7Q ...      LDX   1  JLPSMT(2)
7X96 ...RN1   JBUSY    1,RN1               [EXTRA TAPE CHECK
7X=G ...      LDX   3  JLPSBS(2)
7X?W ...RN2   JBUSY    3,RN2               [EXTRA DISC CHECK
7X*= ...      LDX   1  ZLKTAB(2)           [UPDATE ZALDS (JLTABLE)  
7XBL ...      SBN   1  1                   [REAL START OF CH TABLE  
7XD2 ...      ADN   1  KFSTABLE            [FSTABLE 
7XFB ...      LDX   0  0(1) 
7XGQ ...      LDX   7  0
7XJ6 ...      ANDX  0  MASK5(2)            [D/128   
7XKG ...      SLL   0  7                   [D   
7XLW ...      STO   0  JLTABLE+2(2) 
7XN= ...      ANDX  7  MASK5X(2)
7XPL ...      SRL   7  13                  [L   
7XR2 ...      BNZ   7  ZA1  
7XSB ...      LDN   7  1024                [0 => 1024   
7XTQ ...ZA1   STO   7  JLTABLE(2)   
7XX6 ...      SBN   1  KFSTABLE 
7XYG ...      ADN   1  KCDUM               [CDUM
7X^W ...      LDX   0  0(1) 
7Y3= ...      LDX   7  0
7Y4L ...      ANDX  0  MASK5(2)            [D/128   
7Y62 ...      SLL   0  7                   [D   
7Y7B ...      STO   0  JLTABLE+3(2) 
7Y8Q ...      ANDX  7  MASK5X(2)
7Y=6 ...      SRL   7  13                  [L   
7Y?G ...      BNZ   7  ZA2  
7Y#W ...      LDN   7  1024                [0 => 1024   
7YB= ...ZA2   STO   7  JLTABLE+1(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      JLMFE               [NOT TYPE 5 BLK  
83*G ...      LDN   7  MHEADB(2)
83T6          SUM   6  5
84#Q ...      BNZ   6  JLSUMF              [SPECIFYING BLK DOES NOT CHECKSUM
84SB ...      LDN   6  JLMHEAD(2)   
85#2 ...      CALL  0  JLPTAPE             [READ A SPEC BLK 
85RL ...      LDX   1  MHEADB+2(2)  
86?=          ANDN  1  #777                [EXTRACT BLK LENGTH  
86QW ...      LDX   7  AJLTBUFF(2)  
87=G          SUM   6  0(1)                [& SUM BLK   
87Q6 ...      STO   6  MHEADB+4(2)  
889Q ...      LDN   7  MHEADB+3(2)  
88PB          SUM   6  2
8992 ...      BNZ   6  JLSUMF              [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 JLLBUFF, ENSURING THAT FS'S & ME'S  
8#6Q ...#     FOR THEM ARE INCLUDED (STILL REFERRING TO OLD D-ADDRESSES).   
8#LB    #   
8*62 ...V15   LDX   0  JLVOLFILE(2) 
8*KL ...      TXL   0  MHEADB+1(2)         [BS ADDRESS  
8B5= ...      BCS      JLMFE               [NOT IN RANGE
8BJW ...      LDX   0  MHEADB+1(2)         [THIS BACKING STORE ADDRESS  
8C4G ...      SBX   0  JLNDADD(2)          [ - LAST BS-ADDR.
8CJ6          SBN   0  512  
8D3Q          BZE   0  VV01                [CONSECUTIVE BLKS
8DHB          SRL   01 9                   [SEPARATION/512  
8F32          SRL   1  15   
8FGL ...      BNZ   1  JLMFE               [SEP(MOD 512) NOT=0, MT FE   
8G2= ...      STO   0  SEPAR(2)            [NO. OF ZERO-BLKS
8GFW ...      LDX   0  MHEADB+2(2)         [PREVIOUSLY FUNNY HERE   
8G^G ...      STO   0  MHBKSZ(2)           [SIZE OF NON-ZERO BLK
8MTQ          LDCT  0  #400                [SET ZERO-BLK MARK   
8N*B          STO   0  ZBMARK(2)
8NKW ...VV04  LDN   0  1
8NWB ...      SBS   0  SEPAR(2)            [REDUCE SEPARATION   
8P6W ...      LDX   0  AJLZERBUFF(2)
8PCB ...      LDX   1  AJLLBUFF(2)  
8PMW ...      MOVE  0  0                   [MOVE IN ZERO-BLOCK (0=>512) 
8PYB ...      LDN   0  512  
8Q8W ...      STO   0  MHEADB+2(2)         [WD COUNT OF BLK 
8QFB ...      ADX   0  JLNDADD(2)   
8QPW ...      STO   0  JLNDADD(2)          [UPDATE 'LAST BS-ADDR'   
8R2B ...      STO   0  MHEADB+1(2)         [SET UP SPEC BLK FOR NEXT ZERO-BLK   
8R?6          BRN      VV02 
8RCJ ...VV03  LDX   0  MHBKSZ(2)           [SIZE OF NON-ZERO BLK
8RJ2 ...      STO   0  MHEADB+2(2)  
8RND ...      BRN      VV00 
8RSW ...VV01  LDN   0  512  
8R^# ...      STO   0  MHEADB+2(2)  
8S5Q ...VV00  STOZ     ZBMARK(2)           [NO ZERO-BLKS
8S=B          LDN   0  512  
8SF4 ...      ADS   0  JLNDADD(2)          [UPDATE "LAST D-ADDRESS" 
8SMQ ...      LDX   0  AJLTBUFF(2)  
8SWD ...      LDX   1  AJLLBUFF(2)  
8T56 ...      MOVE  0  0
8T?S ...VV02  LDN   0  512                 [GRAND JUNCTION  
8TGG ...      STO   0  NOLBUF(2)           [INDICATE JLLBUFF FULL   
8TP=    #   
8W8W ...#     FILL IN ANY FS DESCS 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  AJLLBUFF(2)  
925W          MOVE  0  0(3) 
92KG ...      STOZ     JLRSW(2) 
9356          BRN      V07  
93JQ    #   
944B    V08   LDX   1  MRFIRS(2)           [USE OLD D-ADDRS AT THIS STAGE   
94J2 ...      LDX   6  MHEADB+1(2)  
953L ...      ADX   6  MHEADB+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  MHEADB+1(2)  
99D= ...      ADX   1  AJLLBUFF(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 MENDS FOR THIS BLOCK.  
9*SW    #   
9B7? ...V07   LDX   1  AJLRAT(2)
9BFN ...      LDX   7  0(1) 
9BS6          BZE   7  V12                 [NO MENDS
9C?Q          SRL   7  1
9CL7 ...      LDX   1  AJLRAT(2)
9CYJ ...      ADN   1   1   
9D?2          LDN   6  0
9DQL    V10   LDX   3  0(1)                [D-ADDR OF MEND  
9F==          BZE   3  V11                 [ALREADY DONE
9FG4 ...      STO   1  X1(2)
9FPW ...      LDX   1  AJLRAT(2)
9F^N ...      LDX   6  0(1)                [SET X6, STILL SOME TO DO
9G9G ...      LDX   1  X1(2)
9GF# ...      TXL   3  MHEADB+1(2)  
9GP6          BCS      V11                 [THIS BLOCK TOO HIGH 
9H8Q ...      SBX   3  MHEADB+1(2)  
9HNB ...      TXL   3  MHEADB+2(2)  
9J82          BCC      V11                 [OR TOO LOW  
9JML ...      ADX   3  AJLLBUFF(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
9M#F ...      LDX   1  AJLRAT(2)
9MH8 ...      STO   6  0(1) 
9MPX ...#   
9MYL ...#     HERE CHECK IF BLOCK CONTAINS PART OF CHAPTER TABLE
9N7* ...V12   LDX   0  JLNDADD(2)          [COULD BE MHEADB+1 INSTEAD   
9NB4 ...      STO   0  OLDDPTR(2)          [OLD D-ADDRESS (EARLY ONES)  
9NJR ...      LDX   1  QTSWTCH(2)          [GRAND JUNCTION  
9NRG ...      BZE   1  W10                 [AFTER CHAPTER TABLE 
9P29 ...      SBN   1  1
9P8Y ...      BZE   1  V303                [MAY HAVE 3RD PT CHAPTER TABLE   
9PCM ...      SBN   1  1
9PLB ...      BZE   1  V302                [2ND PART CHAPTER TABLE  
9PT5 ...      LDX   0  QHTADD(2)
9Q3S ...      SBX   0  OLDDPTR(2)   
9Q=H ...      SBN   0  512  
9QF= ...      BPZ   0  V22                 [WHOLE BK BEFORE CH TABLE/THE END
9QM^ ...V301  ADN   0  513  
9QWN ...      ADX   0  AXBUFF1(2)   
9R5C ...      STO   0  ZLKTAB(2)
9R#6 ...      LDX   0  AJLLBUFF(2)         [1ST PART CHAPTER TABLE  
9RGT ...      LDX   1  AXBUFF1(2)   
9RPJ ...      MOVE  0  0
9RY? ...      STOZ     QTNTRY(2)
9S72 ...      BRN      V21  
9S*P ...V302  LDX   0  AJLLBUFF(2)         [2ND PART
9SJD ...      LDX   1  AXBUFF2(2)   
9SR7 ...      MOVE  0  0
9T8K ...V21   LDN   0  1
9TC# ...      SBS   0  QTSWTCH(2)   
9TL3 ...      BRN      RMORE
9TSQ ...V303  LDX   0  AJLLBUFF(2)         [3RD PART
9W3F ...      LDX   1  AXBUFF3(2)   
9W=8 ...      MOVE  0  0
9WDX ...      LDX   0  ZLKTAB(2)
9WML ...      LDX   1  ACHAPTAB1(2) 
9WW* ...      MOVE  0  0                   [COPYING INTO CHAPTAB1   
9X54 ...      LDX   7  XCHAPCOUNT(2)
9X?R ...      SBN   7  512  
9XGG ...      ADN   0  512  
9XP9 ...      ADN   1  512  
9XXY ...      SMO      7
9Y6M ...      MOVE  0  0                   [REST OF CHAPTER TABLE   
9Y*B ...      LDN   1  3
9YJ5 ...      STO   1  QTSWTCH(2)   
9YQS ...#   
9Y^H ...#         CHANGE FROM 0LL.LLL.LLL.00D.DDD.DDD.DDD.DDD   
9^8= ...#                TO   KKK.KKK.KKK.K0D.DDD.DDD.DDD.DDD   
9^B^ ...#           [ =D%A/128  L=L%A/4(MOD 1024/4) K=K%A-1]
9^KN ...MASKING 
9^SC ...      LDN   1  0
=236 ...      LDX   3  ACHAPTAB1(2) 
=29T ...MSKG2 ADX   3  1
=2DJ ...      TXL   1  XCHAPCOUNT(2)
=2M? ...      BCC      MSKND               [END OF TABLE
=2W2 ...      LDX   0  0(3)                [NEXT ENTRY  
=34P ...      BZE   0  MSKG3               [IGNORE ZERO ENTRIES 
=3?D ...      ANDX  0  MASK5(2)            [REMOVE LENGTH => 000DDDDD   
=3G7 ...      LDX   7  1
=3NW ...      SLL   7  14                  [SHOULD BE KKKK0000  
=3XK ...      ORX   7  0                   [ADD IN CHAPTER NO.  
=46# ...      STO   7  0(3)                [UPDATE ENTRY
=4*3 ...MSKG3 SBX   3  1
=4HQ ...      ADN   1  1
=4QF ...      BRN      MSKG2
=4^8 ...MSKND                              [COULD UPDATE XCHAPCOUNT FROM X1 
=57X ...      CALL  7  SHELLSORT           [SORT IN D-ADDRESS ORDER 
=5BL ...#   
=5K* ...#     PRODUCE STRETCHED CH TABLE (1K BOUNDARIES)
=5S4 ...#     GET GAPS FIRST
=62R ...UPD00 LDN   4  0                   [CHAPTER TABLE LINE  
=69G ...      LDX   3  ACHAPTAB2(2) 
=6D9 ...UPD01 LDX   1  ACHAPTAB1(2) 
=6LY ...      ADX   1  4                   [I   
=6TM ...      LDX   5  0(1)                [ITH ENTRY (CHAPTAB1)
=74B ...      BZE   5  UPD04               [FORGET ZERO ENTRIES 
=7?5 ...      LDX   7  5
=7FS ...      ANDX  7  MASK5X(2)           [K   
=7NH ...      ANDX  5  MASK5(2)            [D/128   
=7X= ...      LDX   0  TABNTRY1(2)         [PREVIOUS OLD D  
=85^ ...      ADX   0  TABNTRY0(2)         [+ LENGTH (RDD ^ 128)
=8#N ...      TXL   0  5                   [V. NEW D
=8HC ...      BCC      UPD02               [NOT TOO FAR APART   
=8Q6 ...      LDX   1  QNTBIG(2)
=8YT ...      ADN   1  1
=97J ...      STO   1  QNTBIG(2)           [UPDATE GAP COUNT
=9B? ...      ADX   1  ACHAPTAB3(2)        [START ADDRESSES 
=9K2 ...      STO   0  0(1)                [START OF RESERVED GAP   
=9RP ...      LDX   1  QNTBIG(2)
==2D ...      ADX   1  ACHAPTAB4(2) 
==97 ...      STO   5  0(1)                [END OF RESERVED GAP 
==CW ...UPD02 ADX   3  4
==LK ...      STO   7  0(3)                [FILL IN CHAPTAB2
==T# ...      SBX   3  4                   [RESTORE X3 (CHAPTAB2)   
=?43 ...      SRL   7  14                  [K   
=?=Q ...      LDX   1  ZLKTAB(2)
=?FF ...      ADX   1  7
=?N8 ...      LDX   0  0(1)                [KTH ENTRY IN ZLKTAB 
=?WX ...      ANDX  0  MASK5X(2)           [JUST L  
=#5L ...      BZE   0  UPD03               [L 0 => LENGTH 1024  
=##* ...      SRL   0  13                  [PART DIVIDE L TO ROUND & AVOID V
=#H4 ...      SBN   0  1                   [ROUND THIS UP   
=#PR ...      SRL   0  7                   [L/128   
=#YG ...      ADN   0  1                   [RDD UP  
=*79 ...      BRN      UPD05               [NOW GOT LENGTH  
=**Y ...UPD03 LDN   0  8                   [1K-LONG CHAPTERS
=*JM ...UPD05 STO   0  TABNTRY0(2)  
=*RB ...      STO   5  TABNTRY1(2)  
=B25 ...UPD04 ADN   4  1
=B8S ...      TXL   4  XCHAPCOUNT(2)       [STOPS CH TABLE PROBLEMS 
=BCH ...      BCS      UPD01               [RETURN FOR NEXT ONE IN ZLKTAB   
=BL= ...#   
=BS^ ...#     ADD IN RESERVED AREA AT END OF PROGRAM FILE   
=BWW ...UPD10 ADX   5  0                   [D+L 
=BYR ...      LDX   6  BSVOL(2)            [END OF GEORGE PROGRAM FILE  
=C2N ...      SRL   6  7                   [...IN BLOCKS
=C4K ...      TXL   5  6                   [IS A CHAPTER THE LAST THING?
=C6G ...      BCC      UPD11               [J IF SO 
=C8C ...      LDX   1  QNTBIG(2)
=C=C ...      ADN   1  1                   [ONE EXTRA   
=CF6 ...      STO   1  QNTBIG(2)           [UPDATE GAP COUNT
=CMT ...      ADX   1  ACHAPTAB3(2)        [START ADDRESSES 
=D5? ...      STO   5  0(1)                [LAST D+L
=DPD ...      LDX   1  QNTBIG(2)
=DY7 ...      ADX   1  ACHAPTAB4(2) 
=F6W ...      STO   6  0(1)                [END OF FINAL GAP
=F*K ...UPD11 LDX   1  QNTBIG(2)
=FJ# ...      ADN   1  1                   [ONE EXTRA   
=FR3 ...      STO   1  QNTBIG(2)           [UPDATE GAP COUNT
=F^Q ...      ADX   1  ACHAPTAB3(2)        [START ADDRESSES 
=G8F ...      LDX   5  MASKA(2)            [HUGE AT END OF GAPS 
=GC8 ...      STO   5  0(1) 
=GKX ...#     NOW STRETCH NEW ADDRESSES BY JUMPING ROUND RESERVED AREAS 
=GSL ...#     AND PUT IN 1K BOUNDARIES  
=H3* ...UPD20 LDN   4  0                   [CHAPTER TABLE LINE  
=H=4 ...      LDN   5  0                   [GAP NUMBER  
=HDR ...      LDN   6  0                   [NEW D   
=HMG ...      LDX   3  ACHAPTAB2(2) 
=HW9 ...UPD21 ADX   3  4                   [I   
=J4Y ...      LDX   1  ACHAPTAB1(2) 
=J?M ...      ADX   1  4
=JGB ...      LDX   0  0(1)                [ITH CHABTAB1 ENTRY  
=JP5 ...      BZE   0  UPD29               [IGNORE ZERO ENTRIES 
=JXS ...UPD23 LDX   1  ACHAPTAB3(2)        [START OF GAP
=K6H ...      ADX   1  5                   [J   
=K*= ...      LDX   7  0(1)                [JTH GAP 
=KH^ ...      ANDX  7  MASK2D(2)           [ROUND DOWN  
=KQN ...      TXL   6  7
=K^C ...      BCS      UPD22               [BEFORE GAP  
=L86 ...      LDX   1  0(3)                [NOW TEST IF VERY CLOSE TO GAP   
=LBT ...      SRL   1  14                  [K   
=LKJ ...      ADX   1  ZLKTAB(2)
=LS? ...      LDX   0  0(1)                [KTH ENTRY IN ZLKTAB 
=M32 ...      ANDX  0  MASK5X(2)           [JUST L  
=M9P ...      BZE   0  UPD25               [0 => 1024   
=MDD ...      SRL   0  17   
=MM7 ...      SBN   0  1                   [ROUND THIS UP   
=MTW ...      ANDX  0  MASK2D(2)
=N4K ...      ADN   0  #10  
=N?# ...      SRL   0  3                   [L/128   
=NG3 ...      ADX   0  6
=NNQ ...      TXL   0  7
=NXF ...      BCS      UPD22               [BEFORE GAP  
=P68 ...UPD25 LDX   1  ACHAPTAB4(2)        [END OF GAP  
=P#X ...      ADX   1  5                   [J   
=PHL ...      LDX   6  0(1)                [END OF RESERVED AREA
=PQ* ...      SBN   6  1                   [ROUND THIS UP   
=P^4 ...      ANDX  6  MASK2D(2)
=Q7R ...      ADN   6  #10                 [END OF GAP  
=QBG ...      ADN   5  1
=QK9 ...      BRN      UPD23               [RETURN FOR NEXT GAP 
=QRY ...UPD22 LDX   1  0(3)                [ITH CHAPTAB2 ENTRY  
=R2M ...      SRL   1  14                  [K   
=R9B ...      ADX   1  ZLKTAB(2)
=RD5 ...      LDX   0  0(1)                [KTH ENTRY IN ZLKTAB 
=RLS ...      ANDX  0  MASK5X(2)           [JUST L  
=RTH ...      ADX   0  6
=S4= ...      STO   0  0(1)                [UPDATE ZLKTAB   
=S=^ ...      ADS   6  0(3)                [UPDATE CHAPTAB2 
=SFN ...      ADN   6  #10                 [FOR NEXT D  
=SNC ...UPD29 SBX   3  4
=SX6 ...      ADN   4  1
=T5T ...      TXL   4  XCHAPCOUNT(2)
=T#J ...      BCS      UPD21               [BACK AGAIN  
=T*X ...      SLL   6  7                   [CHECK NEW FILE SIZE 
=TC= ...      STO   6  BSVOL(2)            [SIZE OF EMULATED PROGRAM FILE   
=TDK ...      TXL   6  JLVOLFILE(2) 
=TFY ...      BCC      JLTOOSMALL          [TOO BIG!
=TG8 ...      LDX   7  MASKA(2) 
=TGD ...      LDX   3  ACHAPTAB1(2) 
=TGN ...      SMO      4                   [LARGE ADDRESS AFTER LAST... 
=TGY ...      STO   7  0(3)                [...ENTRY IN ACHAPTAB1   
=TG^ ...      LDX   3  ACHAPTAB2(2)        [...AND IN ACHAPTAB2 
=TH2 ...      SBN   4  1
=TH3 ...      SMO      4
=TH4 ...      LDX   7  0(3)                [LAST ENTRY  
=TH5 ...      ANDX  7  MASK5(2) 
=TH6 ...      ADN   7  #10                 [WORK OUT VALUE  
=TH7 ...      ADN   4  1
=TH8 ...      SMO      4
=TH9 ...      STO   7  0(3)                [AFTER LAST ENTRY
=TH? ...#   
=TQ2 ...#     ALL DONE  
=TYP ...#     NOW WRITE AWAY
=W7D ...V50   LDX   7  QTSWTCH(2)   
=WB7 ...      SBN   7  1
=WJW ...      STO   7  QTSWTCH(2)          [DOWN 1  
=WRK ...      BZE   7  V53                 [WAS 1   
=X2# ...      SBN   7  1
=X93 ...      BZE   7  V52                 [WAS 2   
=XCQ ...V51   LDX   0  AXBUFF1(2)          [1ST TIME
=XLF ...      BRN      V54  
=XT8 ...V52   LDX   0  AXBUFF2(2)          [2ND TIME
=Y3X ...V54   LDX   1  AJLMBUFF(2)  
=Y=L ...      MOVE  0  0
=YF* ...      STOZ     NOLBUF(2)
=YN4 ...      BRN      W60                 [WRITE OFF   
=YWR ...V53   LDX   0  AXBUFF3(2)          [3RD TIME
=^5G ...      LDX   1  AJLLBUFF(2)         [WRITE BACK (NO.2 SHIRT) 
=^#9 ...      MOVE  0  0
=^GY ...V58   LDX   1  ACHAPTAB1(2) 
=^PM ...      ADX   1  QNO(2)              [K   
=^YB ...      LDX   0  0(1)                [NEXT ONE
?275 ...      BNZ   0  V59                 [FIRST REAL ENTRY
?2*S ...      LDN   0  1
?2JH ...      ADS   0  QNO(2)   
?2R= ...      BRN      V58                 [NEXT ENTRY  
?2^^ ...V59   ANDX  0  MASK5(2)            [JUST D  
?38N ...      SLL   0  7
?3CC ...      STO   0  OLDDCHP(2)   
?3L6 ...      SBX   0  OLDDPTR(2)   
?3ST ...      SBN   0  512                 [NOT OTHERWISE REDUCED   
?43J ...      STO   0  OLDDIFF(2)   
?4=? ...      ADN   0  #777 
?4F2 ...      ANDX  0  MASK2K(2)
?4MP ...      ADN   0  1024                [ROUND UP
?4WD ...      STO   0  NEWDIFF(2)   
?557 ...      LDX   1  ACHAPTAB2(2) 
?5?W ...      ADX   1  QNO(2)   
?5GK ...      LDX   0  0(1)                [NEXT ONE
?5P# ...      ANDX  0  MASK5(2)            [JUST D  
?5Y3 ...      SLL   0  7
?66Q ...      STO   0  NEWDCHP(2)   
?6*F ...      LDN   1  1                   [IN MIDDLE OF 1ST ENTRY ALREADY  
?6J8 ...      STO   1  QNTBIG(2)           [REINITIALISE
?6QX ...#   
?6^L ...V22   LDX   0  AJLLBUFF(2)         [PRE CHAPTER TABLE STRAIGHT -> BS
?78* ...      LDX   1  AJLMBUFF(2)  
?7C4 ...      MOVE  0  0
?7KR ...V55   STOZ     NOLBUF(2)
?7SG ...      BRN      W54                 [SEND TO DISC
?839 ...#   
?89Y ...RMORE LDX   0  ZBMARK(2)           [HANDLING ZERO-BLKS? 
?8DM ...      BZE   0  RNEXT               [NO, READ NEXT BLK-PAIR OFF TAPE 
?8MB ...      LDX   0  SEPAR(2)            [ALL ZERO-BLKS WRITTEN AWAY? 
?8W5 ...      BZE   0  VV03                [YES, GO & WRITE AWAY WAITING BLK
?94S ...      BRN      VV04 
?9?H ...#   
?9G= ...#     NOW ACTUALLY STRETCH PROGRAM FILE 
?=6C ...W10   LDX   0  NEWDIFF(2)   
?=*6 ...      BZE   0  W20                 [NEXT ITEM   
?=HT ...      BRN      W30                 [SAME ITEM   
?=QJ ...#   
?=^? ...W29   LDN   0  1
??82 ...      ADS   0  QNO(2)              [POINTER FOR NEXT ENTRY  
??BP ...W20   LDX   0  ZK(2)               [POSSIBLY WRONG POSITION 
??KD ...      SBX   0  QNO(2)   
??S7 ...      BPZ   0  W28                 [NOT YET END OF CHTABLE ENTRIES  
?#2W ...      LDN   0  3
?#9K ...      STO   0  QTSWTCH(2)          [END AS AT START 
?#D# ...      LDX   0  MASKA(2) 
?#M3 ...      STO   0  QHTADD(2)           [HUGE TO PRETEND BEFORE CHTABLE  
?#QB ...      BRN      W201 
?#TQ ...W28   LDX   1  QNO(2)              [I   
?*4F ...      ADX   1  ACHAPTAB1(2) 
?*?8 ...      LDX   0  0(1) 
?*FX ...      BZE   0  W29                 [IGNORE 0 ENTRY  
?*NL ...      ANDX  0  MASK5(2)            [JUST D/128  
?*X* ...      SLL   0  7
?B64 ...W201  STO   0  OLDDCHP(2)          [OLD D-ADDR OF NEXT CHAPTER  
?B#R ...      LDX   3  QNTBIG(2)           [J   
?BHG ...      ADX   3  ACHAPTAB3(2) 
?BQ9 ...      LDX   6  0(3) 
?BYY ...      SLL   6  7
?C7M ...      STO   6  NEXTGAP(2)   
?CBB ...      TXL   0  6
?CK5 ...      BCC      W22                 [NEW GAP 
?CRS ...W21   LDN   0  1024                [NEW CHAPTER 
?D2H ...      STO   0  OLDDIFF(2)          [MAX VALUE   
?D9= ...      STO   0  NEWDIFF(2)          [START OF CHAPTER
?DC^ ...      LDX   3  QNO(2)   
?DLN ...      ADX   3  ACHAPTAB2(2) 
?DTC ...      LDX   0  0(3) 
?F46 ...      ANDX  0  MASK5(2) 
?F=T ...      SLL   0  7
?FFJ ...      STO   0  NEWDCHP(2)          [NEW D-ADDR OF NEXT CHAPTER  
?FN? ...      STO   0  NEWDPTR(2)   
?FX2 ...      LDX   1  0(3)                [PREPARE CHECKSUM UPDATE 
?G5P ...      SRL   1  14                  [K   
?G#D ...      ADX   1  ZLKTAB(2)
?GH7 ...      LDX   0  0(1)                [KTH ENTRY IN ZLKTAB 
?GPW ...      ANDX  0  MASK5X(2)           [JUST L  
?GYK ...      SRL   0  13   
?H7# ...      BNZ   0  W211                [NOT 1024
?HB3 ...      LDN   0  1024                [0 => 1024   
?HJQ ...W211  SBN   0  1                   [LAST (CHECKSUM) WORD
?HRF ...      STO   0  POSCHSM(2)          [CHECKSUM'S POSITION 
?J28 ...      LDX   3  NEWDCHP(2)   
?J8X ...      SBX   3  OLDDCHP(2)   
?JCL ...      STO   3  VALCHSM(2)          [TO INCREASE CHECKSUM
?JL* ...      STOZ     NOMBUF(2)           [JLMBUFF EMPTY   
?JT4 ...      LDN   0  512  
?K3R ...      STO   0  NOMFUB(2)
?K=G ...      LDN   0  1
?KF9 ...      ADS   0  QNO(2)              [UPDATE I FOR NEXT TIME  
?KMY ...      LDX   1  QNO(2)              [NEW I   
?KWM ...      ADX   1  ACHAPTAB1(2)        [GET D-ADDR NEXT CHAP
?L5B ...      LDX   0  0(1) 
?L#5 ...      ANDX  0  MASK5(2)            [JUST D/128  
?LGS ...      SLL   0  7                   [D   
?LPH ...      TXL   0  NEXTGAP(2)   
?LY= ...      BCS      W212                [NEXT CHAP < GAP 
?M6^ ...      LDX   0  NEXTGAP(2)   
?M*N ...W212  SBX   0  OLDDCHP(2)          [NEXT ITEM   
?MJC ...      TXL   0  OLDDIFF(2)   
?MR6 ...      BCC      W213                [BOTH > 1024 (CAN GEOERR THIS)   
?M^T ...      STO   0  OLDDIFF(2)          [MIN OF ABOVE
?N8J ...W213  BRN      W30  
?NC? ...W22   LDN   0  1                   [NEW GAP 
?NL2 ...      ADS   0  QNTBIG(2)           [UP J FOR NEXT TIME  
?NSP ...      LDX   3  QNTBIG(2)
?P3D ...      ADX   3  ACHAPTAB3(2) 
?P=7 ...      LDX   7  0(3) 
?PDW ...      SLL   7  7                   [NEXT GAP
?PMK ...      TXL   7  OLDDCHP(2)   
?PW# ...      BCS      W223                [GAP NEXT (CAN GEOERR THIS)  
?Q53 ...      LDX   7  OLDDCHP(2)   
?Q?Q ...W223  LDX   6  NEXTGAP(2)          [THIS GAP
?QGF ...      ANDX  6  MASK1K(2)           [ROUND DOWN  
?QP8 ...      STO   6  NEWDPTR(2)   
?QXX ...      SBX   7  6
?R6L ...      STO   7  OLDDIFF(2)   
?R** ...      SBN   7  1
?RJ4 ...      ANDX  7  MASK1K(2)
?RQR ...      ADN   7  512                 [ROUND UP
?R^G ...      STO   7  NEWDIFF(2)          [NEED TO COPY ALL ACROSS 
?S89 ...      LDN   7  512  
?SBY ...      STO   7  NOLBUF(2)
?SKM ...      STO   7  NOMFUB(2)           [START OF BOTH JLLBUFF & JLMBUFF 
?SSB ...      STOZ     NOMBUF(2)
?T35 ...W30   LDX   3  OLDDIFF(2)          [MAY NEED TEST FOR 0S (END CHAP) 
?T9S ...      TXL   3  NOLBUF(2)
?TDH ...      BCS      W31                 [OLDDIFF<NOLBUF  
?TM= ...      LDX   3  NOLBUF(2)
?TT^ ...W31   TXL   3  NOMFUB(2)
?W4N ...      BCS      W32                 [X3 < NOMFUB 
?W?C ...      LDX   3  NOMFUB(2)
?WG6 ...W32   STO   3  MINN(2)             [MIN OF THESE
?WNT ...      BZE   3  W50  
?WXJ ...      LDX   0  AJLLBUFF(2)         [SOMEWHERE IN JLLBUFF
?X6? ...      ADN   0  512  
?X*2 ...      SBX   0  NOLBUF(2)
?XHP ...      LDX   1  AJLMBUFF(2)         [SOMEWHERE IN JLMBUFF
?XQD ...      ADX   1  NOMBUF(2)
?X^7 ...      MOVE  0  0(3)                [I.E. MINN   
?Y7W ...      SBS   3  OLDDIFF(2)   
?YBK ...      ADS   3  OLDDPTR(2)          [UPDATE POINTERS 
?YK# ...      SBS   3  NOLBUF(2)           [UPDATE COUNTS   
?YS3 ...      ADS   3  NOMBUF(2)
?^2Q ...      SBS   3  NOMFUB(2)           [X3 = MINN   
?^9F ...      LDX   3  NOMFUB(2)           [START STRETCHING PGM FILE   
?^D8 ...      BZE   3  W50                 [JLMBUFF FULL => WRITE AWAY  
?^LX ...      LDX   3  OLDDIFF(2)   
?^TL ...      BZE   3  W50                 [NO MORE WANTED  
#24* ...      LDX   3  NOLBUF(2)
#2?4 ...      BZE   3  RMORE               [JLLBUFF EMPTY => READ IN
#2FR ...      BRN      GELLIT              [SHOULD NEVER HAPPEN 
#2NG ...W50   LDX   0  POSCHSM(2)   
#2X9 ...      BNG   0  W54                 [NO CHECKSUM HERE
#35Y ...      TXL   0  Z512(2)  
#3#M ...      BCC      W53                 [NEXT TIME   
#3HB ...      LDX   1  AJLMBUFF(2)  
#3Q5 ...      ADX   1  0                   [CHECKSUM'S POSITION 
#3YS ...      LDX   0  VALCHSM(2)   
#47H ...      ADS   0  0(1)                [UPDATE CHECKSUM 
#4B= ...      BVSR     £                   [CLEAR V 
#4J^ ...W53   LDN   0  512  
#4RN ...      SBS   0  POSCHSM(2)   
#52C ...W54   LDN   0  512  
#596 ...      SBS   0  NEWDIFF(2)          [REDUCE FOR QUICK SALE   
#5CT ...W60   LDN   1  512  
#5LJ ...      ERS   1  TDOUBUF(2)          [SWITCH BUFFER   
#5T? ...      LDX   0  AJLMBUFF(2)         [UNLIKELY 0-BKS REQD 
#642 ...      LDX   1  AJLBUFF(2)   
#6=P ...      ADX   1  TDOUBUF(2)   
#6FD ...      MOVE  0  0
#6N7 ...      LDX   0  AJLZERBUFF(2)
#6WW ...      LDX   1  AJLMBUFF(2)  
#75K ...      MOVE  0  0                   [ZEROIZE BUFFER  
#7## ...      LDN   0  512  
#7H3 ...      STO   0  NOMFUB(2)
#7PQ ...      STOZ     NOMBUF(2)
#7YF ...      LDX   7  NEWDPTR(2)          [D-ADDRESS OF BLOCK  
#878 ...      ADS   0  NEWDPTR(2)   
#8*X ...      CALL  0  JLWRITE             [WRITE BLOCK TO B/S  
#8JL ...      LDX   0  QTSWTCH(2)   
#8R* ...      BZE   0  W51                 [AFTER CHAPTER TABLE 
#924 ...      TXU   0  N3(2)
#98R ...      BCC      RMORE               [BEFORE CHAPTER TABLE
#9CG ...      BRN      V50                 [DURING CHAPTER TABLE
#9L9 ...W51   LDX   3  NOLBUF(2)
#9SY ...      BZE   3  RMORE               [MORE PLEASE 
#=3M ...      BRN      W10                 [POSSIBLE REARRANGING OF BUFFERS 
#==B ...#   
#=F5 ...#GAP 767-0? 
#=MS ...)   
#=WH ...#SKI G4 
#?5= ...#GAP 127-0? 
#??^ ...#   
#?JW    #END
^^^^ ...455223630001