LOADX60

(George Source)

Macros used: ACROSS, ALTLEN, ALTLEND, BXE, BXGE, BXL, BXU, CHECKB, CHECKBX, CLEAR, FINMOVE, FPCACA, FREECORE, HUNT2, LMASK, MASK, MENDAREA, MFREE, MFREEW, MHUNTW, NAME, READED, SCANPT, SEG, SEGENTRY, SETNCORE, T, TESTRPN2, TRACE, VFREE, VFREEW

LOADX60.txt
22FL ...      SEG      LOADX,60,OWEN N JOHN(CENT)   
22^=    #   
23DW          SEGENTRY K1LOADX,XENT1
23YG          SEGENTRY K2LOADX,XENT2
24D6    #   
24XQ    #   
25CB    #DEF  T=0   
25X2    # LANGUAGE CODES USED IN S/FS CONTAINING BINARY PROGRAM 
26BL    SFA100         4HA100              [PERMANENT UNIT OF PROGRAM   
26W=    SFA101         4HA101              [PROGRAM FILE WHICH MAY CONTAIN OVERL
27*W    SFA4           4H00A4              [OVERLAY UNIT
27TG    #   
28*6    ZBUCK          #777777             [NO. OF BUCKETS IN LS 3 CHARS.   
28SQ    ZLENG          #17777777
29#B ...N7             7 + G4              [LIMIT OF PERMISSABLE BLK TYPES  
29J8 ...#DEF   X512=512            [MAX NO OF CHARS FOR MOVEDATA SUBR   
29S2    #SKIP G4
2=?L    (   
2=R=    XB9            #100000  
2?=W    X64            64   
2?QG    XBN1T7         #40177777
2#=6    SPAREC             #73000007
2#PQ    MASK               #57777700
2*9B    XB16LS         #177777  
2*P2    PERM           +GWRITE             [PERM USED IN CHECKB 
2B8L    )   
2BN=    #   
2C7W    # LABELS OF ERROR MESSAGES  
2CMG    NOENT          +JNOENT  
2D76    RINF        +JINFF  
2DLQ    RCHER       +JCHER  
2F6B    WERRES         +GRESLL  
2FL2    WRBLK       +JWRBLK 
2G5L    #   
2GK=    #   
2H4W    # DEFINITIONS OF WORDS USED IN ADATA/AWKSB  
2HJG    #   
2J46    #DEF WBLOCK=A1                     [BLOCK OF FILE IN CORE   
2JHQ    #DEF WFRAGSIZE=WBLOCK+1            [NO. OF BUCKETS STILL TO BE READ IN  
2K3B    [                                  [CURRENT FRAGMENT OF DIRECTORY SUBFIL
2KH2    #DEF NEXTFRAG=WFRAGSIZE+1          [1ST BUCKET OF NEXT FRAGMENT OF DIREC
2L2L    [                                  [SUBFILE 
2LG=    #DEF  NEXTORG=NEXTFRAG+1           [NEXT ORGANIZATIONAL BUCK OF PERM UNI
2L^W    #DEF ORGREC=NEXTORG+1              [NEXT ORGANIZATIONAL RECORD IN CURREN
2MFG    [                                  [BUCKET  
2M^6    #DEF  PROGDEST=ORGREC+1            [PROG ADDRESS IN TYPE 5  
2N8Y ...#DEF   TABDEST=PROGDEST 
2NDQ    #DEF  REMDATA=PROGDEST+1           [AMT OF DATA STILL TO BE TRANSFERRED 
2NYB    [                                  [PRESENT TRANSFER - PRINC FOF TYPE 5 
2PD2    #DEF  TYPE5BUCK=REMDATA+1          [NO OF CURRENT TYPE5 DATA BUCK   
2PMS ...#DEF   TABSRCE=TYPE5BUCK
2PXL    #DEF  WCHECKSUM=TYPE5BUCK+1        [CHECKSUM FOR TYPE5 DATA 
2QC=    #SKIP G4
2QWW    (   
2RBG    #DEF  XQUOTA=WFRAGSIZE             [B0-13-PAGES TO BE KEPT IN CORE - 1  
2RW6                                       [B14=1 SOME PAGES LOCKED IN  
2S*Q    #DEF  SPA1=WCHECKSUM+1             [NO OF SPA BUCKETS/WORD ADDR OF SPAS 
2STB    #DEF  SPA2=SPA1+1                  [NO OF BUCKET HOLDING SPAS   
2T*2    #DEF  SPA3=WFRAGSIZE
2TSL    #DEF  SPA4=NEXTFRAG 
2W#=    #DEF  SPA5=ORGREC   
2WDN ...#DEF  UNITTYPE=SPA2+1   
2WK6 ...[   
2WPJ ...[        THIS EXTRA WORD IS A RESULT OF HR 194(B 0979)  
2WW2 ...[   
2X2D ...REC7       +7        [DEFINES TYPE 7 REC SPECIFIER  
2X6W ...[   
2X?G    )   
2XR6    #SKIP G3
2Y=Q    #DEF  UNITTYPE=WCHECKSUM+1         [TYPE OF FILE CONTAINING OVERLAYS
2YQB    [ THE REMAINDER OF THE BLOCK IS USED FOR THE OVERLAY TABLE. INITIALLY   
2^=2    [ IT HAS TWO WDS FOR THE PERM UNIT. 
2^PL    #DEF  WKLENGTH=UNITTYPE+3-A1       [INITIAL LENGTH OF ADATA/AWKSB   
329=    #   
32NW    # DEFINITIONS OF WORDS USED IN ACTIVITY BLOCK   
338G    #   
33N6    #DEF  XLDEX=EXTPS+3                [MAY HOLD 1STBUCK OF DIR S/F 
347Q    #DEF  XLDEXA=EXTPS+4               [CONTAINS SWITCHES   
34MB    [ B14=1     ON 1ST BUCK OF A DIR S/F FRAGMENT   
3572    [ B15=1     SUPP R/S HAS BEEN FOUND 
35LL    [ B16=1     R/S HAS BEEN FOUND  
366=    [ B17,B18 ONLY USEFUL FOR G4
36KW    [ B17=1     TRANSFERRING TYPE 0 BLOCK   
375G    [ B18=1     TRANSFERRING OVERLAY DIRECTORY  
37K6    [ B19       PERM UNIT HAS BEEN FOUND IN DIR S/F 
384Q    #DEF  NOVERS=ACOMMUNE1             [NO OF OVERLAY UNITS FOUND IN CURRENT
38JB    [                                  [BUCKET OF DIRECTORY S/F 
3942    #DEF  WBUCKLENG=ACOMMUNE2          [NO OF USEFUL WDS IN CURR BUCK   
39HL    #   
3=3=    #   
3=GW    #   
3?2G    NSFD
3?G6    # SETS POINTERS TO NEXT SFD IN CURR&NT BUCKET OF DIR S/F.   
3?^Q    # NORMAL EXIT 1. EXITS 0 IF NO MORE SFD'S IN BUCKET 
3#FB    [ ENTRY        LINK    X5   
3#^2    [              ABSOLUTE PTR TO LAST REC    X3   
3*DL    [              PTR TO LAST REC REL TO START OF BUCK    X4   
3*Y=    [EXIT          LINK    X5   
3BCW    [              X3,4 UPDATED TO NEXT RECORD IF FOUND 
3BXG          LDX   0  0(3)                [1ST WORD OF SFD 
3CC6          ANDN  0  #77                 [LENGTH OF SFD   
3CWQ          ADX   3  0                   [
3DBB          ADX   4  0
3DW2          SMO      FX2  
3F*L          TXL   4  WBUCKLENG
3FT=          BCC      NSFDX               [SFD NOT IN THI2 BUCK
3G#W          EXIT  5  1
3GSG    NSFDX   
3H#6          SMO      FX2  
3HRQ          TXU   4  WBUCKLENG
3J?B          BCS      XRECLENG            [REC HEADER WRONG
3JR2          EXIT  5  0
3K=L    #   
3KQ=    #   
3L9W    #   
3LPG    READED  
3M96    #   
3MNQ    # GIVES PTRS TO DESIRED BUCKET WITHIN A 512 WD BLOCK, READING DOWN THE  
3N8B    # APPROPRIATE BLOCK IF NECESSARY
3NN2    [ ENTRY        LINK    X5   
3P7L    [              PTR TO ADATA/AWKSB  X2   
3PM=    [              BUCKET NO.  X7   
3Q6W    [ EXIT         LINK    X5   
3QLG    [              PTR TO ADATA/AWKSB  X2   
3R66    [              PTR TO START OF BUCKET (ABSOLUTE)   X3   
3RKQ    [              PTR TO START OF BUCKET (RELATIVE TO ST OF FILE/FRRB)   X6
3S5B    [ FIND BUCKET CONTAINING REQUIRED BUCKET IF FILE TREATED AS 4-BLOCK BUCK
3SK2          LDX   6  7
3T4L          ADN   6  3
3TJ=          SRL   6  2
3W3W          LDX   0  WBLOCK(2)           [NO OF 4-BLOCK BUCKET IN CORE
3WHG          BZE   0  READBLOCK           [NONE IN CORE
3X36          BXE   6  0,REDBLOCK          [REQUIRED BLOCK IS IN CORE   
3XGQ          MFREEW   FILE,FRRB
3Y2B    READBLOCK   
3YG2          SBX   5  FX1  
3Y^L          READED   6,4  
3^F=          TESTRPN2 OK,XFILEMISS 
3^YW          MHUNTW   2,ADATA,AWKSB
42DG          STO   6  WBLOCK(2)
42Y6          ADX   5  FX1  
43CQ    REDBLOCK
43XB          MHUNTW   3,FILE,FRRB  
44C2          LDX   6  7
44WL          SBN   6  1                   [1ST BUCK NUMBERED 1 
45B=          SLL   6  7                   [*128
45TW          ANDN  6  #777                [MODULO 512  
46*G          ADX   3  6
46T6          EXIT  5  0
47#Q    #   
47SB    #   
48#2    #   
48RL    PERMUNIT
49?=    # STORE INFO REGARDING PERM UNIT IN AWKSB   
49QW    [ ENTRY        LINK    X5   
4==G    [              PTR TO SFD  X3   
4=Q6    [              PTR TO AWKSB    X2   
4?9Q    [              X1=FX1   
4?PB    [ EXIT         SAME 
4#92    # THE DATA S/F SHOULD NEVER BE FRAGMENTED   
4#NL          LDX   0  6(3)                [NEXT FRAG OF S/F
4*8=          BZE   0  NOTFRAGD 
4*MW          TRACE    0,DATAFRAG   
4B7G    NOTFRAGD
4BM6          LDX   0  4(3)                [1ST ORGANIZATIONAL BUCK 
4C6Q          ANDX  0  ZBUCK(1) 
4CLB          BZE   0  XFILEMISS           [SILLY BUCK NO   
4D62          STO   0  NEXTORG(2)   
4DKL          EXIT  5  0
4F5=    #   
4FJW    #   
4G4G    #   
4GJ6    NORGBUCK
4H3Q    # GETS THE NEXT ORG BUCK INTO A FILE/FRB
4HHB    [ ENTRY     LINK  X4
4J32    [           PTR TO AWKSB   UX2  
4JGL    [           PTR TO FRB  X3  
4K2=    [           BUCK NO   X7
4KFW    [  EXIT     LINK  X5
4K^G    [           PTR TO AWKSB   X2   
4LF6    [           PTR TO FRB   X3 
4LYQ          SBX   4  FX1  
4MDB    # IF BUCK ISBUCK 2,3,4 OFCURR FRRB OR 1STBUCK OF NEXT FRRB WE USE READED
4MY2    # OTHERWISE WE READ 128 WDS AND LEAVE FRRB ALONE
4NCL          LDX   0  7
4NX=          ADN   0  2
4PBW          SRL   0  2
4PWG          BXE   0  WBLOCK(2),SEQUENCE   
4QB6          FREECORE 3                   [OLD FRB 
4QTQ          READED   7,1  
4R*B          TESTRPN2 OK,XFILEMISS 
4RT2          MHUNTW   2,ADATA,AWKSB
4S#L          MHUNTW   3,FILE,FRRB  
4SS=          NAME     3,FILE,FRB   
4T?W          LDX   0  A1(3)               [NO OF WORDS IN BUCK 
4TRG          SBN   0  4
4W?6          BNG   0  XORGHEAD            [NO ORG RECS IN BUCK 
4WQQ          SBN   0  125  
4X=B          BPZ   0  XORGHEAD            [TW MANY RECS IN BUCKET  
4XQ2          LDX   5  4                   [MOVE LINK   
4Y9L          BRN ORGCHEK   
4YP=    SEQUENCE
4^8W          CALL  5  READED   
4^NG          LDX   5  4                   [KEEP LINK   
5286    # MOVES ORG BUCK INTO FRB   
52MQ          LDX   0  A1(3)               [NO OF WORDS IN BUCK 
537B          SBN   0  4
53M2          BNG   0  XORGHEAD            [NO ORG RECS IN BUCK 
546L          SBN   0  125  
54L=          BPZ   0  XORGHEAD            [TO MANY RECS IN BUCK
555W          MHUNTW   1,FILE,FRB   
55KG          LDN   4  A1(1)
5656          ADN   3  A1   
56JQ          SMO      0(3) 
574B          MOVE  3  0
57J2          LDX   3  1                   [X3 -> FILE/FRB  
583L    ORGCHEK 
58H=    #  VALIDATE CONTENTS OF ORG BUCK
592W          LDN   1  A1+2(3)  
59GG          LDX   0  A1(3)
5=26          SBN   0  2
5=FQ          SMO      0
5=^B          SUM   0  0
5?F2          BNZ   0  XCHS                [CHECKSUM ERROR IN ORG BUCKET
5?YL          ADX   5  FX1  
5#D=          EXIT  5  0
5#XW    #   
5*CG    #   
5*X6    #   
5BBQ    MOVEDATA
5BWB    #   
5CB2    # MOVES DATA INTO AN OBJECT PROGR1M 
5CTL    [   LINK    X7  
5D*=    [           START OF DATA  X3   
5DSW    [          START ADDR IN OP X4  
5F#G    [           LENGTH OF DATA   X5 
5FS6    [  EXIT     LINK  X7
5G?Q    [           PTR TO AWKSB   X2   
5GRB    [           X5  UNTHANGED   
5H?2    [     X6       DESTROYED IN G4  
5HQL          SBX   7  FX1  
5J==          FPCACA   2,FX2
5JPW    #SKI  T 
5K9G    (   
5KP6          TRACE    3,FROM   
5L8Q          TRACE    4,TO 
5LNB          TRACE    5,HOW MANY   
5M82    )   
5MML          LDN   1  8
5N7=          TXL   4  1
5NLW          BCC      NOACCS              [JUMP IF NOT ACCESSING ACCS. 
5P6G          SMO      FX2  
5PL6          ORS   1  XLDEXA              [SET MARKER TO SHOW THAT PROGRAM SETS
5Q5Q                                       [UP ITS OWN ACCS.
5QKB    NOACCS  
5R52          LDX   1  FX1  
5RJL          CHECKB   4,5,XRESV,2,PERM(1),WCOOR,,2 
5S4=    MOVE
5SHW          FINMOVE  2,4,3,5,HLOCK1,2 
5T3G    #SKI  G4
5TH6    (   
5W2Q          MHUNTW   3,ADATA,AWKSB       [RELOCATE WORK BLOCK 
5WGB          LDX   6  XQUOTA(3)
5X22          BNG   6  ZLK9                [J IF SUFFICIENT PAGES LOCKED IN CORE
5XFL          BNZ   6  ZLK4                [J IF SOME PAGES ALREADY LOCKED  
5X^=          LDX   0  HLOCK1+1(2)         [WE DON'T LOCK PAGE 0
5YDW          BZE   0  ZLK9 
5YYG          HUNT2    1,BSTB,BSCB,2
5^D6          LDX   0  AMAXSIZE(1)  
5^XQ          BPZ   0  ZLK2 
62CB          LDX   0  HLOCK1+1(2)  
62X2          TXL   0  BIT11               [OR IN THE CASE OF A SPARSE  
63BL          BCS      ZLK8                [KEEP PAGES BELOW 4K.
63W=    ZLK2  LDX   6  HLOCK1+1(2)  
64*W          STO   6  HLOCK2+1(2)  
64TG          LDX   6  AQUOTA(1)
65*6          SLL   6  10                  [SET X6 TO INDICATE NO OF PAGES TO BE
65SQ          SBN   6  3584                [KEPT IN CORE - QUOTA-3.& SET B14
66#B          LDN   0  CHREAD+CHWRITE      [STORE PERMISSION IN 2ND HLOCK AREA  
66S2          STO   0  HLOCK2(2)
67?L          BNG   6  ZLK8 
67R=    ZLK4  LDX   3  HLOCK2+1(2)         [START OF AREA ALREADY LOCKED
68=W          LDX   4  HLOCK2(2)
68QG          ANDX  4  B2T13               [LENGTH OF AREA  
69=6          ADX   3  4
69PQ          TXL   3  HLOCK1+1(2)         [JUMP UNLESS THE CURRENT AREA
6=9B          BCS      ZLK8                [CONTAINS A PAGE WHICH FOLLOWS ON
6=P2          LDX   0  HLOCK1(2)           [IMMEDIATELY AFTER AREA ALREADY  
6?8L          ANDX  0  B2T13               [LOCKED  
6?N=          ADX   0  HLOCK1+1(2)  
6#7W          TXL   3  0
6#MG          BCC      ZLK8 
6*76          SBX   3  4                   [ADD ONE PAGE TO THE AREA ALREADY
6*LQ          ADN   4  1024                [LOCKED  
6B6B          CLEAR    2,0,HLOCK2,2 
6BL2          LDX   1  FX1  
6C5L          CHECKB   3,4,(GEOERR),2,PERM(1),(GEOERR),HLOCK2,2 
6CK=          SBN   6  1024 
6D4W    ZLK7  BPZ   6  ZLK4 
6DJG    ZLK8
6F46    ZLK9  CLEAR    2,0,HLOCK1,2 
6FHQ    )   
6G3B          MHUNTW   2,ADATA,AWKSB
6GH2    #SKIP G4
6H2L          STO   6  XQUOTA(2)
6HG=          ADX   7  FX1  
6H^W          EXIT  7  0
6JFG    #SKI  G4
6J^6    (   
6KDQ    WCOOR   
6KYB    # FIND PTRS AGAIN IF CHECKA COORDINATES 
6LD2          FPCACA   2
6LXL          LDN   0  #140                [TYPE 0 AND OVERLAY DIR BITS 
6MC=          SMO      FX2  
6MWW          ANDX  0  XLDEXA   
6NBG          BNZ   0  WCOOR1              [NOT DEALING WITH TYPE 5 
6NW6          MHUNTW   3,FILE,FRRB  
6P*Q          ADN   3  A1   
6PTB          ADX   3  6
6Q*2          BRN      MOVE 
6QSL    WCOOR1  
6R#=          SRC   0  7
6RRW          BPZ   0  WCOOR2              [NOT DEALING WITH TYPE 0 
6S?G          MHUNTW   3,FILE,FRB   
6SR6          MHUNTW   1,ADATA,AWKSB
6T=Q          ADN   3  A1+2 
6TQB          ADX   3  ORGREC(1)
6W=2          BRN      MOVE 
6WPL    WCOOR2                             [SETTING UP OLAY TABLE   
6X9=          MHUNTW   3,ADATA,AWKSB
6XNW          ADN   3  UNITTYPE 
6Y8G          BRN      MOVE 
6YN6    )   
6^7Q    #   
6^MB    #   
7272    #   
72LL    XENT1   
736=    # SET UP WORKING SPACE BLOCK
73KW          MHUNTW   1,FILE,ENT   
745G          LDCT  7  #77  
74K6          ANDX  7  ETM(1)              [REMEMBER FILE TYPE  
754Q          SETNCORE WKLENGTH,2,ADATA,AWKSB   
75JB          STOZ     WBLOCK(2)           [MARK NO FRRB'S IN CORE  
7642          STO   7  UNITTYPE(2)         [NEEDED IF PROG OVERLAID 
76HL    # A BINARY PROGRAM IS HELD IN A COMPOSITE SUBFILE. THE 1ST DIRECTORY S/F
773=    # STARTS IN BUCKET 1 AND THE 1ST SFD IS FOR THE PROGRAM S/F. IT IS EITHE
77GW    # LANGUAGE A100 FOR A DATA S/F CONTAINI THE PROGRAM (NON-OVERLAID) OR IS
782G    # LANGUAGE A101 FOR A DIRECTORY S/F WITH SFD'S FOR DATA S/F'S HOLDING   
78G6    # OVERLAY UNITS (POSSIBLY NONE) AND A PERMANENT UNIT
78^Q          LDN   7  1                   [BUCKET NO.  
79FB          CALL  5  READED              [GET 1ST BUCKET  
79^2          LDX   0  A1+2+6(3)           [NEXT FRAGMENT OF TOP LEVEL DIRECTORY
7=DL          BZE   0  NOTFRAGC 
7=Y=          TRACE    0,COMPFRAG   
7?CW    NOTFRAGC
7?XG    # LOOK AT THE FIRST SFD IN THE COMPOSITE FILE   
7#C6    # REMEMBER 1ST BUCK IN CASE S/F IS A DIRECTORY S/F  
7#WQ          LDX   7  A1+2+8+4(3)         [1ST BUCK OF THIS S/F
7*BB          ANDX  7  ZBUCK(1) 
7*W2    # IF WD 5 OF R/S = 0 THE BUCK MUST BE STORED IN OP WD 40- REMEMBER IT   
7B*L          SMO      FX2  
7BT=          STO   7  XLDEX
7C#W          LDX   0  A1+2+8+8(3)         [LANGUAGE
7CSG          TRACE    0,FILELANG   
7D#6          BXE   0  SFA101(1),NFRAGD    [TOP LEVEL DIR IS NOT PERM UNIT  
7DRQ          BXU   0  SFA100(1),XSFCODE   [ILLEGAL LANGUAGE CODE   
7F?B          ADN   3  A1+2+8              [X3 -> SFD   
7FR2          CALL  5  PERMUNIT            [REMEMBER START BUCK ETC 
7G=L    # DONT ALTER _WD 40 IF NOT OVERLAID 
7GQ=          SMO      FX2  
7H9W          STOZ     XLDEX
7HPG          BRN      RRS  
7J96    NFRAGD  
7JNQ    #   
7K8B    # START IN NEXT FRAGMENT OF TOP-LEVEL DIRECTORY S/F 
7KN2          LDN   0  #1000
7L7L          SMO      FX2  
7LM=          ORS   0  XLDEXA              [SET MARK FOR 1ST BUCK IN FRAGMENT   
7M6W          BRN      NDIRBUCK1
7MLG    NDIRBUCK
7N66          NGN   5  #1001
7NKQ          SMO      FX2  
7P5B          ANDS  5  XLDEXA              [REMOVE MARK FOR 1ST BUCK IN FRAGMENT
7PK2    #   
7Q4L    # READ NEXT BUCKET IN THIS FRAGMENT 
7QJ=          ADN   7  1                   [BUCKETS IN FRAGMENT ARE SEQUENTIAL  
7R3W          STO   0  WFRAGSIZE(2)        [CORRECT NO OF BUCKETS LEFT  
7RHG    NDIRBUCK1   
7S36          CALL  5  READED              [NEXT BUCKET OF DIRECTORY S/F
7SGQ          LDX   0  A1+1(3)  
7T2B          ANDN  0  #7777               [LENGTH OF BUCKET
7TG2          SMO      FX2  
7T^L          STO   0  WBUCKLENG
7WF=          SBN   0  129  
7WYW          BPZ   0  XBUCKLENG           [ERROR IF > 128  
7XDG          SMO      FX2  
7XY6          STOZ     NOVERS              [INITIALIZE COUNT OF OLAY UNITS IN BU
7YCQ          LDN   4  2                   [X4 -> NEXT RECORD IN BUCKET (REL TO 
7YXB          ADN   3  A1+2                [X3 -> NEXT REC ABSOLUTELY   
7^C2          LDN   0  #1000               [1ST BUCK IN FRAGMENT
7^WL          SMO      FX2  
82B=          ANDX  0  XLDEXA   
82TW          BZE   0  NODD                [1ST REC NOT A D.D.  
83*G    # PICK UP THE NO. OF BUCKS IN THIS FRAGMENT AND THE 1ST BUCK OF NEXT
83T6    # FRAGMENT FROM DIRECTORY DESCRIPTION   
84#Q          SMO      FX2  
84SB          LDX   0  WBUCKLENG
85#2          SBN   0  10   
85RL          BNG   0  XBUCKLENG           [ERROR IF NO DIR DESC.   
86?=          LDX   0  0(3) 
86QW          ANDN  0  #77  
87=G          SBN   0  8
87Q6          BNZ   0  XRECLENG            [D.D. MUST BE 8 WDS  
889Q          LDX   0  5(3)                [NO OF BUCKS IN FRAGMENT 
88PB          ANDX  0  ZBUCK(1) 
8992          BZE   0  XFRAGSIZE           [ERROR IF NONE   
89NL          STO   0  WFRAGSIZE(2) 
8=8=          LDX   0  6(3)                [1ST BUCK OF NEXT FRAGMENT   
8=MW          STO   0  NEXTFRAG(2)  
8?7G    NEXTSFD 
8?M6          CALL  5  NSFD                [MOVE PTRS TO NEXT SFD   
8#6Q          BRN      ZENDBUCK            [NO MORE IN BUCKET   
8#LB    NODD
8*62    # EMPTY SPACE SFD HAS ZERO IN 1ST WD OF S/F NAME. IGNORE EMPTY SPACH
8*KL          LDX   0  1(3) 
8B5=          BZE   0   NEXTSFD 
8BJW          LDX   0  8(3)                [LANGUAGE OF S/F 
8C4G          TRACE    0,S/FLANG
8CJ6          BXU   0  SFA100(1),OVERCOUNT [NOT PERM UNIT   
8D3Q    # SET MARK THAT PERM UNIT HAS BEEN FOUND, REMEMBER SIZE AND STARTING BUC
8DHB    # AND THEN CONTINUE DEALING WITH OVERLAYS   
8F32          LDN   0  #20  
8FGL          SMO      FX2  
8G2=          ANDX  0  XLDEXA   
8GFW          BNZ   0  X2PERMS             [THIS IS 2ND PERM UNIT   
8G^G          LDN   0  #20  
8HF6          SMO      FX2  
8HYQ          ORS   0  XLDEXA   
8JDB          CALL  5  PERMUNIT            [REMEMBER DETAILS OF PERM UNIT   
8JY2          BRN      NEXTSFD  
8KCL    OVERCOUNT   
8KX=          SRL   0  12   
8LBW          BXU   0  SFA4(1),XSFCODE     [NOT AN OVERLAY UNIT EITHER  
8LWG          LDN   0  1
8MB6          SMO      FX2  
8MTQ          ADS   0  NOVERS   
8N*B          BRN      NEXTSFD  
8NT2    ZENDBUCK
8P#L    #   
8PS=    # AT THE END OF EACH DIRECTORY S/F BUCK WE COLLECT THE INFORMATION RE EA
8Q?W    # OVERLAY UNIT WHICH MAY LATER BE STORED IN OVERLAY DIRECTORY TABLE OF O
8QRG          SMO      FX2  
8R?6          LDX   5  NOVERS   
8RQQ          BZE   5  NOOVERS             [NO OVERLAY UNITS IN THIS BUCK   
8S=B          TRACE    5,NO.OVERS   
8SQ2    # LENGTHEN AWKSB FOR EXTRA INFO. - 2 WDS PER OVERLAY
8T9L          SLL   5  1
8TP=          LDX   3  ALOGLEN(2)   
8W8W          ADX   3  5
8WNG          LDX   4  2
8X86          ALTLEN   4,3,ADATA,AWKSB  
8XMQ          MHUNTW   3,FILE,FRRB  
8Y7B          ADX   3  6                   [X3 -> START OF BUCK 
8YM2          ADN   3  A1+2+8   
8^6L          LDN   4  2+8  
8^L=    # IF  NOT 1ST BUCK IN FRAGMENT THERE IS NO DIR DESC 
925W          LDN   0  #1000
92KG          ANDX  0  XLDEXA(2)
9356          BNZ   0  YBUCK1   
93JQ          SBN   3  8                   [RESET PTRS TO 1ST REC   
944B          SBN   4  8                   [ = 1ST SFD  
94J2    YBUCK1  
953L          MHUNTW   2,ADATA,AWKSB
95H=          ADX   2  ALOGLEN(2)   
962W          SBN   2  2                   [ALLOW FOR PERM UNIT SPACE   
96GG          SBX   2  5                   [X2 -> START OF NEW AREA 
9726    NEXTOLAY
97FQ          LDX   0  1(3) 
97^B          BZE   0  NOTOVER             [MISS OUT EMPTY SPACE SFD
98F2          LDX   0  8(3) 
98YL          BXE   0  SFA100(1),NOTOVER   [MISS OUT PERM UNIT  
99D=          LDX   0  15(3)               [AREA AND UNIT NOS.  
99XW          STO   0  A1(2)
9=CG          LDX   0  4(3)                [1ST BUCK
9=X6          ANDX  0  ZBUCK(1) 
9?BQ          STO   0  A1+1(2)  
9?WB          ADN   2  2                   [SET X2 TO NEXT ENTRY IN OLAY TABLE  
9#B2    NOTOVER 
9#TL          LDX   6  2                   [REMEMBER POS IN BLK 
9**=          MHUNTW   2,ADATA,AWKSB
9*SW          CALL  5  NSFD                [SET PTRS TO NEXT SFD
9B#G          BRN      NOOVERS             [NO MORE OVERLAYS
9BS6          LDX   2  6                   [GET BACK BLK PTR
9C?Q          BRN      NEXTOLAY 
9CRB    NOOVERS 
9D?2          LDX   0  WFRAGSIZE(2) 
9DQL          BCT   0  NDIRBUCK            [MORE BUCKS IN THIS FRAGMENT 
9F==          LDX   7  NEXTFRAG(2)         [1ST BUCK OF NEXT FRAGMENT   
9FPW          BNZ   7  NFRAGD              [NO MORE FRAGMENTS IF ZERO   
9G9G    # WE HAVE FINISHED THE DIRECTORY S/F
9GP6          LDN   0  #20  
9H8Q          SMO      FX2  
9HNB          ANDX  0  XLDEXA   
9J82          BZE   0  XPERM               [THERE WAS NO PERMANENT UNIT 
9JML    # SET ENTRY FOR PERM UNIT IN O'LAY TABLE
9K7=    RRS 
9KLW          LDX   7  NEXTORG(2)          [1ST BUCK
9L6G          ADX   2  ALOGLEN(2)   
9LL6          SBN   2  2
9M5Q          STOZ     A1(2)               [AREA/UNIT=0 FOR PERM UNIT   
9MKB          STO   7  A1+1(2)  
9N52    # READ 1ST ORGANIZATIONAL BUCK (CONTAINING R/S AND PERHAPS /UPP R/S)
9NJL    # AND CHECK ITS CONTENTS. PASS BACK TO LDSTART  
9P4=          SETNCORE 128,3,FILE,FRB   
9PHW          MHUNTW   2,ADATA,AWKSB
9Q3G          LDX   7  NEXTORG(2)          [BUCK NO 
9QH6          CALL  4  NORGBUCK 
9R2Q    # WE DONT WANT TO LEAVE ALARGE LBLOCK IN COPE WHILE GETTING COPE FOR O.P
9RGB          STOZ     WBLOCK(2)
9S22          MFREEW   FILE,FRRB
9SFL          ACROSS   LDSTART,5
9S^=    #   
9TDW    #   
9TYG    #   
9WD6    XENT2   
9WXQ          SETNCORE 128,3,FILE,FRB      [TO HOLD ORG BUCKETS 
9XCB          MHUNTW   2,ADATA,AWKSB
9XX2    #SKI  G4
9YBL    (   
9YW=          STOZ     SPA1(2)             [SET NO SPAS MARK
9^*W          STOZ     XQUOTA(2)           [INIT 'PAGES TO BE KEPT IN CORE' IND 
9^TG    )   
=2*6          LDX   7  NEXTORG(2)          [NEXT ORGANIZATIONAL BUCKET  
=2SQ          BRN      READORG  
=3#B    NORGREC 
=3S2          MHUNTW   3,FILE,FRB   
=4?L          LDX   4  ORGREC(2)           [PTR TO LAST REC 
=4R=          SMO      4
=4T8 ...      LDX   6  A1(3)
=4X6 ...[   
=4^4 ...[      THIS IS A RESULT OF HR 194(B 0979)   
=532 ...[      CAUSED BY FACT TYPE 7 DOES NOT HAVE A WORD COUNT IN HEADER   
=54Y ...[   
=56W ...#SKI    G4  
=58S ...(   
=5=Q ...    LDCH 5  6                   [FIND TYPE  
=5#3 ...       SMO      FX1 
=5*# ...       BXU   5  REC7,NTYP7  
=5BL ...   SMO      4                   [ITS A TYPE 7 SO WE EXTRACT COUNT   
=5DJ ...       LDX   6  A1+1(3) 
=5GG ...       BRN       REC7B  
=5JD ...NTYP7   
=5LB ...)   
=5N# ...[   
=5QG          SRL   6  12   
=6=6          ANDN  6  #77  
=6FY ...REC7B   
=6PQ          ADX   4  6
=79B          BXL   4  A1(3),NORG          [MORE RECS IN THIS BUCK  
=7P2          LDX   7  NEXTORG(2)          [THIS BUCK   
=88L          ADX   7  A1+1(3)  
=8N=          STO   7  NEXTORG(2)   
=97W    READORG 
=9MG          BZE   7  XENDORG  
==76          CALL  4  NORGBUCK 
==LQ          LDN   4  3
=?6B    NORG
=?L2          LDX   1  FX1  
=#5L    # GET REC LENGTH FOR ALL TYPE ROUTINES  
=#K=          SMO      4
=*4W          LDX   6  A1(3)               [BLOCK SPECIFIER 
=*6N ...      LDCH  5  6                   [BLOCK TYPE  
=*8G ...#SKI    G4  
=*=# ...(   
=*#6 ...[   
=**Y ...[      THIS TOO IS CAUSED BY HR 194(B 0979) 
=*CQ ...[         AND THE FACT TYPE 7 IS NON STANDARD RECORD TYPE   
=*FJ ...[     DONE   27.SP.74            :CENT  
=*HB ...[   
=*K8 ...       BXU   5  REC7(1),NTYP7A        [J. IF NOT TYPE 7 
=*M2 ...       SMO      4   
=*NS ...       LDX   6  A1+1(3) 
=*QL ...       BRN      REC7A                [THAT PUTS NUMBER OF WDS IN X6 
=*SD ...NTYP7A  
=*W= ...)   
=*Y4 ...[   
=*^W ...
=B46          SRL   6  12   
=BHQ          ANDN  6  #77                 [LENGTH OF ORG REC   
=BRJ ...REC7A   
=C3B          NGN   0  #101 
=CH2          SMO      FX2  
=D2L          ANDS  0  XLDEXA              [REMOVER MARKER FOR PARTICULAR TYPES 
=DG=          LDX   0  A1(3)
=D^W          SBX   0  4
=FFG          SBX   0  6
=F^6          BNG   0  XORGHEAD            [PART OF ORG REC NOT WITHIN HEADER   
=GDQ          ADX   3  4                   [X3 -> START OF NEXT ORG REC 
=GYB          STO   4  ORGREC(2)           [REMEMBER PTR TO REC WITHIN BUCK 
=HD2          BXGE  5  N7(1),XBLOCKTYPE    [CHECK BLOCK TYPE
=HXL    #SKI  T 
=JC=          TRACE    5,TYPE   
=JWW    # USE BLOCK TYPE IN X5 TO JUMP TO APPROPRIATE ROUTINE WITH REC LENGTH IN
=KBG          SMO      5
=KW6          BRN      TABTYP              [BRN TO ROUTINE APPROPRIATE FOR TYPE 
=L*Q    TABTYP  
=LTB          BRN      TYPE0
=M*2          BRN      TYPE1
=MSL          BRN      TYPE2
=N#=          BRN      TYPE3
=NRW          BRN      XTYPE4              [TYPE 4 ILLEGAL ON PERM UNIT 
=P?G          BRN      TYPE5
=PB5 ...      BRN      TYPE6
=PDN ...[   
=PH? ...[      THE FOLLOWING HAS BEEN ALTERED DUE TO HR 194 ET AL(B 0979)   
=PKW ...[          THAT IS THE ADDITIONAL  'BRN ' BELOW AND THE SETTING 
=PNF ...[          OF 'N7 '    .AS BEFORE IN GEORGE 4 IF AND SPA BLOCK  
=PR4 ...[          WAS FOUND BEFORE THE REAT OF BINARY PROG AN ERROR
=PTM ...[           WAS WRONGLY REPORTED
=PY= ...[                DONE 18.SEPT.74         :CENT  
=Q2T ...[   
=Q5D ...            BRN    NORGREC  
=Q83 ...[   
=Q=Q    #   
=QQB    #   
=R=2    TYPE0   
=RPL    # TYPE 0 MUST BE 3 TO 29 WDS LONG   
=S9=          SBN   6  3
=SNW          BNG   6  XRECSIZE 
=T8G          SBN   6  27   
=TN6          BPZ   6  XRECSIZE 
=W7Q          ADN   6  28                  [NO OF WORDS OF DATA 
=WMB          SMO      A1+1(3)  
=X72          LDN   4  0                   [X4 -> PROG ADDRESS  
=XLL          LDX   5  6
=Y6=          ADN   3  A1+2                [X3 -> START OF DATA 
=YKW          LDN   0  #100 
=^5G          SMO      FX2  
=^K6          ORS   0  XLDEXA              [SET TYPE 0 SWITCH   
?24Q          CALL  7  MOVEDATA 
?2JB          BRN      NORGREC  
?342    #   
?3HL    #   
?43=    TYPE1   
?4GW    # WE COME THROUGH HERE FOR THE R/S IN MAIN PART OF LOAD IN ORDER TO GET 
?52G    # THE POINTERS RIGHT
?5G6          LDN   0  #200 
?5^Q          SMO      FX2  
?6FB          ANDX  0  XLDEXA   
?6^2          BNZ   0  X2RS                [2ND R/S - ERROR 
?7DL          LDN   0  #200 
?7Y=          SMO      FX2  
?8CW          ORS   0  XLDEXA   
?8XG          BRN       NORGREC 
?9C6    #   
?9WQ    #   
?=BB    TYPE2   
?=W2    TYPE3   
??*L    # TYPE 2 AND 3 ENTRY BLOCKS MUST BE 2 WDS LONG  
??T=          SBN   6  2
?##W          BNZ   6  XRECSIZE 
?#SG    # MOVE ENTRY BLOCK TO START OF __ FRB FOR LOADFIN   
?*#6          LDX   4  A1(3)
?*RQ          LDX   5  A1+1(3)  
?B?B    #SKIP G4
?BR2    (   
?C=L          LDX   0  SPA1(2)             [J IF SPECIAL PERM AREAS 
?CQ=          BNZ   0  SPA                 [-IF THERE ARE PROG IS NOT OVERLAYED 
?D9W    )   
?DPG          MHUNTW   1,FILE,FRB   
?F96    XENDSPAS
?FNQ          STO   4  A1(1)
?G8B          STO   5  A1+1(1)  
?GN2    # OVERLAY PROGS MUST HAVE AN OVERLAY DIRECTORY TABLE SET UP 
?H7L    # IF WD 5 OF R/S IS NON-ZERO IT CONTAINS THE START ADDRESS FOR THE INF C
?HM=    # EARLIER TO BE MOVE TO (SEE 1900 PRM)  
?J6W    # OTHERWISE THE 1ST BUCK NO FOR THE DIRECTORY S/F IS PUT IN WD 40   
?JLG    # AND THE PROGRAM MUST BE RESUMED TO SET UP THE TABLE   
?K66          FPCACA   3,FX2
?KKQ          HUNT2    3,AOBRES,0   
?L5B          LDX   1  A1+5(3)  
?LK2          LDX   3  2                   [X3 -> TO ADATA/AWKSB
?M4L          LDN   4  0(1)                [ADDR IN B2-23   
?MJ=          LDX   5  ALOGLEN(3)   
?N3W          SBN   5  UNITTYPE-A1  
?NHG          BNZ   1  OLAYDIR  
?P36          SMO      FX2  
?PGQ          LDX   6  XLDEX
?Q2B          BZE   6  NOLAID   
?QG2          LDN   4  40                  [ADDR IN OP  
?Q^L          LDN   5  1                   [NO OF WDS   
?RF=          STO   6  UNITTYPE(3)         [ADDR OF WD TO BE MOVED  
?RYW    OLAYDIR 
?SDG    #SKI  T 
?SY6          TRACE    5,TOTOVERS   
?TCQ          LDN   0  #40  
?TXB          SMO      FX2  
?WC2          ORS   0  XLDEXA   
?WWL          ADN   3   UNITTYPE            [X3 PTS TO START OF DATA
?WY5 ...MVSTART 
?W^J ...      SBN   5  X512 
?X33 ...      BNG   5  MVREST   
?X4G ...      STO   5  REMDATA(2)   
?X5^ ...      LDX   7  3                   [X3 = GEORGE ADDRESS 
?X7D ...      SBX   7  2                   [X7 = REL ADD IN ADATA/AWKSB 
?X8X ...      STO   7  TABSRCE(2)          [SAVE THIS IN CASE COORDINATE
?X=B ...      STO   4  TABDEST(2)          [SAVE PROG ADD - G4 MAY OVERWRITE
?X?T ...      LDN   5  X512                [MOVE IN 512 WORD BLOCKS 
?X*# ...      CALL  7  MOVEDATA 
?XBR ...      LDX   5  REMDATA(2)   
?XD= ...      LDX   4  TABDEST(2)          [RESTORE AND INCREMENT   
?XFP ...      ADN   4  X512                [DESTINATION ADDRESS 
?XH8 ...      LDX   3  TABSRCE(2)          [RELATIVE SOURCE ADDRESS 
?XJM ...      ADX   3  2                   [ABSOLUTE
?XL6 ...      ADN   3  X512                [INCREMENT   
?XMK ...      BRN      MVSTART  
?XP4 ...MVREST  
?XQH ...      ADN   5  X512 
?XS2 ...      CALL  7  MOVEDATA 
?XTW    NOLAID  
?Y*G          FREECORE 2                   [ADATA/AWKSB 
?YT6    XEND
?^#Q          VFREE    FILE,FRRB
?^SB          ACROSS   LOADFIN,1
#2#2    #   
#2RL    #   
#3?=    TYPE5   
#3QW    # TYPE 5 RECORD MUST BE 5 WORDS 
#4=G          SBN   6  5
#4Q6          BNZ   6  XRECSIZE 
#59Q    # THE DATA FOR A TYPE 5 BLOCK IS IN CONSECUTIVE BUCKETS STARTING  BUT NO
#5PB    # NECESSARILY ENDING, ON A BUCKET BOUNDARY. 
#692    # WE USE A LOOP TRANSFERRING THE CONTENTS OF A 512-WD BS BLOCK IN EACH P
#6NL    # (THE METHOD DEPENDS ON S/R READED READING A WHOLE BS BLOCK)   
#78=    # WE CHECKA AND CLEAR WITH EACH TRANSFER TO REDUCE THE NO OF PAGES LOCKE
#7MW    # IN GEORGE 4   
#87G          SMO      A1+1(3)             [DESTINATION IN PROGRAM  
#8M6          LDN   0  0
#96Q          STO   0  PROGDEST(2)  
#9LB          LDX   0  A1+2(3)             [AMOUNT OF DATA  
#=62          ANDX  0  ZLENG(1) 
#=KL          BZE   0  XNODATA  
#?5=          STO   0  REMDATA(2)   
#?JW          LDX   0  A1+3(3)             [NEG CHECKSUM
##4G          STO   0  WCHECKSUM(2) 
##J6          LDX   7  NEXTORG(2)          [NO OF CURRENT BUCKET
#*3Q          ADX   7  A1+4(3)             [1ST BUCK OF DATA
#*HB    MOREDATA
#B32          STO   7  TYPE5BUCK(2) 
#BGL          CALL  5  READED   
#C2=          ADN   3  A1                  [START OF DATA IN FRRB   
#CFW          LDX   4  PROGDEST(2)         [
#C^G    # X6 -> START OF BUCKET WITHIN FRRB. THE AMOUNT OF DATA TO BE TRANSFERRE
#DF6    # FROM THIS FRRB IS MIN(REMDATA,512-[X6])   
#DYQ          LDN   5  512  
#FDB          SBX   5  6
#FY2          BXL   5  REMDATA(2),STILLMORE 
#GCL          LDX   5  REMDATA(2)   
#GX=    STILLMORE   
#HBW          LDX   1  3
#HWG          SMO      5
#JB6          SUM   0  0
#JTQ          ADS   0  WCHECKSUM(2)        [ADD THIS LOT TO TOTAL CHECKSUM  
#K*B          BVCR     £                   [IGNORE OVERFLOW 
#KT2          CALL  7  MOVEDATA 
#L#L          LDX   0  REMDATA(2)   
#LS=          SBX   0  5
#M?W          BZE   0  T5END               [NO MORE DATA FOR THIS TYPE5 
#MRG          STO   0  REMDATA(2)          [UPDATE AMT LEFT TO TRANSFER 
#N?6          ADS   5  PROGDEST(2)         [RES&T DEST ADD IN PROGRAM   
#NQQ    # TURN COUNT INTO NO OF BUCKETS AND ADD TO 7 FOR NEXT BUCKET. (LAST MOVE
#P=B    # MUST HAVE BEEN MULT OF 128)   
#PQ2          SRL   5  7
#Q9L          LDX   7  TYPE5BUCK(2)        [ADDR OF LAST BUCKET 
#QP=          ADX   7  5
#R8W          BRN      MOREDATA 
#RNG    T5END   
#S86          LDX   0  WCHECKSUM(2) 
#SMQ          BZE   0  NORGREC  
#T7B          BRN      XCHS                [CHECKSUM ERROR  
#TM2    #   
#W6L    #   
#WL=    TYPE6   
#X5W    # TYPE 6 MUST BE 8 WDS LONC 
#XKG          SBN   6  8
#Y56          BNZ   6  XRECSIZE 
#YJQ          LDN   0  #400 
#^4B          SMO      FX2  
#^J2          ANDX  0  XLDEXA   
*23L          BNZ   0  X2SRS               [2ND SUPP R/S
*2H=          LDN   0  #400 
*32W          SMO      FX2  
*3GG          ORS   0  XLDEXA              [SET MARKER  
*426    #   
*4FQ    #     IN GEORGE 4 SPA1 & SPA2 ARE SET UP TO HOLD THE LOCATION OF
*4^B    #     THE BUCKETS DEFINING THE PROGRAMS SPECIAL PERM.AREAS. 
*5F2    #   
*5YL    #SKIP G4
*6D=    (   
*6XW          LDX   6  A1+4(3)             [ADDR -F SPAS
*7CG          ANDX  6  XBN1T7(1)
*7X6          BZE   6  TYP6C               [J IF NO SPAS
*8BQ          LDXC  6  6
*8WB          BZE   6  XNOSPAS             [ERROR IF PP BIT BUT NO SPAS 
*9B2          LDX   0  6
*9TL          SRL   0  15   
*=*=          BNZ   0  TYP6A               [J UNLESS SPAS IN THIS BUCKET
*=SW          ADX   6  XB9(1)              [NO OF BUCKETS = 1   
*?#G          BRN      TYP6B
*?S6    TYP6A LDX   0  6
*#?Q          ANDX  0  BSP16               [REL BUCKET NO OF SPAS   
*#RB          ERS   0  6                   [SET'WITHIN BUCKET ADDR TO ZERO'.
**?2    TYP6B ADX   0  NEXTORG(2)          [ABS BUCKET NO.WITH SPAS 
**QL          STO   0  SPA2(2)             [SET SPA1 & 2
*B==          STO   6  SPA1(2)  
*BPW    TYP6C   
*C9G    )   
*CP6          FPCACA   3,FX2
*D8Q          HUNT2    3,AOBRES,0   
*DNB          LDX   0  ALOGLEN(3)   
*F82          SBN   0  24   
*FML          BZE   0  NORGREC             [SUPP R/S ALREADY DEALT WITH BY LDSTA
*G7=          ALTLEND  3,24 
*GLW          FPCACA   1,2  
*H6G          HUNT2    3,AOBRES,0,1 
*HL6          MHUNTW   2,FILE,FRB   
*J5Q          ADN   2  A1   
*JKB          ADX   2  4                   [X2 ->TYPE 6 REC 
*K52          ADN   3  A1+16
*KJL          MOVE  2  8
*L4=          BRN       NORGREC 
*LHW    #   
*M3G    #   
*MH6    #   
*N2Q    #     THIS SECTION READS THE BUCKETS DEFINING A PROGRAMS SPECIAL
*NGB    #     PERMISSION AREAS AND INSERTS THE APPROP PERM BITS IN THE PAGE 
*P22    #     TABLES.   
*PFL    #     WORKING SPACE USED IS AS FOLLOWS  
*P^=    #              SPA1   -REL PTR TO RECORD BEING PROCESSED
*QDW    #              SPA2   -NO OF BUCKET BEING PROCESSED 
*QYG    #              SPA3   -NOT USED ANYMORE 
*RD6    #              SPA4   -REL PTR TO END OF BUCKET 
*RXQ    #              SPA5   -END OF PROG-FROM RQS 
*SCB    #   
*SX2    #   
*TBL    #     IT SHOULD CHECK (BUT DOESN'T) THAT BUCKET HEADER CORRECT. 
*TW=    #   
*W*W    #   
*WTG    #SKIP G4
*X*6    (   
*XSQ    SPA 
*Y#B          LDX   3  FX2  
*YS2          STO   4  AWORK1(3)           [WE PRESERVE ENTRY BLOCK IN AWORK
*^?L          STO   5  AWORK2(3)           [WRDS & WHEN SPAS HAVE BEEN DEALT
*^R=                                       [WITH MOVE IT BACK INTO AN FRB   
B2=W          ANDX  0  BSP16
B2QG          STO   0  SPA1(2)  
B3=6          FPCACA   1,FX2
B3PQ          HUNT2    1,AOBRES,0          [EXTRACT CORE REQ WORD FROM RQS  
B49B          LDX   0  A1+3(1)             [& STORE IN WORKING BLOCK
B4P2          LDX   1  FX1  
B58L          SRC   0  9
B5N=          ANDX  0  MASK(1)  
B67W          STO   0  SPA5(2)  
B6MG    #SKIP   
B776    (   
B7LQ    #     THIS CODE WAS INCLUDED IN AN ATTEMPT TO TAKE ADVANTAGE OF ANY 
B86B    #     INFO LEFT IN CORE BY THE EARLIER PARTS OF LOADX.  
B8L2    #     IT WAS REMOVED WHEN A CASE WAS ENCOUNTER&D WHERE THERE WAS NO 
B95L    #     FILE,FRRB BLOCK AROUND
B9K=          LDX   0  SPA2(2)  
B=4W          TXU   0  NEXTORG(2)          [J IF SPAS CONTAINED IN CURRENT BCKET
B=JG          BCC      Z404 
B?46          ADN   0  3
B?HQ          SRL   0  2
B#3B          TXU   0  WBLOCK(2)           [J UNLESS FIRST SPA RECORD CONTAINED 
B#H2          BCS      Z408                [ IN FRRB
B*2L          MHUNTW   1,FILE,FRB          [LOCATE BLOCKS   
B*G=          MHUNTW   3,FILE,FRRB  
B*^W          LDX   0  SPA2(2)             [CALC POSN OF SPA BUCKET IN FRRB 
BBFG          SBN   0  1
BB^6          ANDN  0  3
BCDQ          SLL   0  7
BCYB          ADN   0  A1(3)
BDD2          ADN   1  A1   
BDXL          MOVE  0  128                 [MOVE SPA BUCKET INTO FRB
BFC=    Z404  MFREE    FILE,FRRB           [FREE FRRB   
BFWW          MHUNTW   3,FILE,FRB   
BGBG          NAME     3,FILE,FRRB         [& RENAME FRB
BGW6          BRN      Z414 
BH*Q    )   
BHTB    Z408  LDX   6  SPA2(2)             [SPA BUCKET NOT IN CORE-GET ITS ADDR 
BJ*2          VFREE    FILE,FRB            [IN CASE NO FILE,FRB AT START OF SPAS
BJSL          BRN      Z412                [J TO READ BUCKET DOWN   
BK#=    #   
BKRW    #     READ DOWN NEXT BUCKET , CHECK THAT IT CONTAINS SPAS & INITIALISE  
BL?G    #     PTRS TO RECORDS WITHIN THE BLOCK  
BLR6    #   
BM=Q    Z410  LDX   6  SPA2(2)             [ADDR OF NEXT BUCKET 
BMQB          BNZ   6  Z411                [J UNLESS NONE LEFT  
BN=2          NAME     3,FILE,FRB          [RENAME FRRB 
BNPL          LDX   1  FX2                 [RESTORE X4 & X5 
BP9=          LDX   4  AWORK1(1)
BPNW          LDX   5  AWORK2(1)
BQ8G          LDX   1  3
BQN6          BRN      XENDSPAS            [J TO DEAL WITH OVERLAY TABLE
BR7Q    Z411  STOZ     SPA1(2)             [INIT REL RECORD PTR 
BRMB    Z412  LDN   7  128                 [NO OF WORDS TO READ 
BS72          VFREE    FILE,FRRB           [MAY BE NO &ILE,FRRB AT START OF SPAS
BSLL          READED   6,1,7               [NEXT BUCKET 
BT6=          TESTRPN2 OK,SPAREAD          [REPORT ERRORS   
BTKW          MHUNTW   3,FILE,FRRB         [LOCATE SPA BUCKET   
BW5G    Z414  MHUNTW   2,ADATA,AWKSB
BWK6          ADX   3  SPA1(2)             [PTR TO SPA RECORD   
BX4Q          LDX   0  A1+3(3)             [REL ADDR OF NEXT SPA BUCKET 
BXJB          ADS   0  SPA2(2)             [ADDR OF NEXT BUCKET 
BY42          BNZ   0  Z415                [J UNLESS LAST BUCKET
BYHL          STOZ     SPA2(2)             [INDICATE NO MORE
B^3=    Z415
B^GW          LDX   0  A1(3)
C22G          TXU   0  SPAREC(1)           [ERROR UNLESS TYPE 7 
C2G6          BCS      SPAFORMAT
C2^Q          LDX   0  A1+1(3)  
C3FB          SBN   0  6                   [ERROR UNLESS AT LEAST 6 WORDS LONG  
C3^2          BNG   0  SPALENG  
C4DL          ADN   0  6
C4Y=          ADX   0  SPA1(2)  
C5CW          STO   0  SPA4(2)             [PTR TO END OF BUCKET
C5XG          SBN   0  129  
C6C6          BPZ   0  SPALENG             [ERROR IF LENGTH EXCEEDS 128 
C6WQ          LDN   0  A1(3)
C7BB          SMO      A1+1(3)             [CHECKSUM SPA RECORD 
C7W2          SUM   7  0
C8*L          BNZ   7  SPACKSUM 
C8T=          LDN   0  4
C9#W          ADS   0  SPA1(2)             [RELATIVE ADDR OF FIRST SPA PAIR 
C9SG          ADN   3  4
C=#6          BRN      Z421                [J TO PROCESS FIRST SPA RECORD   
C=RQ    #   
C??B    #     LOCATE NEXT SPA PAIR TO PROCESS   
C?R2    #   
C#=L    Z420  MHUNTW   2,ADATA,AWKSB
C#Q=          MHUNTW   3,FILE,FRRB  
C*9W          LDX   0  SPA1(2)  
C*PG          ADN   0  2
CB96          TXL   0  SPA4(2)  
CBNQ          BCC      Z410                [J IF END OF BUCKET  
CC8B          STO   0  SPA1(2)  
CCN2          ADX   3  SPA1(2)             [PTR TO NEXT SPA PAIR ( - A1)
CD7L    Z421
CDM=    #   
CF6W    #     EXTRACT INFO FROM WORD PAIR DEFINING SPA  
CFLG    #   
CG66          LDX   4  A1(3)               [VIRTUAL ADDRESS 
CGKQ          ANDX  4  BITS22LS 
CH5B          BZE   4  SPAPAGE             [SPA FOR PAGE 0  
CHK2          LDX   5  A1+1(3)             [LENGTH  
CJ4L          LDCH  6  A1+1(3)             [PERMISSION  
CJJ=          SMO      FX1  
CK3W          ANDX  5  XB16LS              [A ZERO LENGTH INDICATES 64K 
CKHG          BNZ   5  Z422 
CL36          LDCT  5  2
CLGQ    Z422  ANDN  6  #74                 [ISOLATE PERM BITS   
CM2B          LDX   0  6
CMG2          SRC   0  3
CM^L          BPZ   0  Z422A               [J UNLESS AREA SHAREABLE 
CNF=          SRC   0  1
CNYW          BPZ   0  XSHWRITE            [ERROR UNLESS NO WRITE PERM  
CPDG    Z422A   
CPY6          ERN   6  #70                 [SWITCH BITS TO INDICATE PERM TO GIVE
CQCQ          SLL   6  4                   [MOVE TO REQD POSN   
CQXB          FPCACA   3,FX2               [CHECK THAT AREA LIES WITHIN RESERVS 
CRC2          CHECKBX  4,5,SPARV,3  
CRWL    #   
CSB=    #     CONVERT  AREA TO A NO.OF WHOLE PAGES-NOTING THAT IF AN SPA
CSTW    #     EXTENDS TO THE END OF A PROG THE LAST PAGE IS INC IN THE AREA 
CT*G          ADX   5  4
CTT6          TXU   5  SPA5(2)  
CW#Q          BCS      Z423                [J UNLESS SPA GOES TO END OF PROG
CWSB          ADN   5  1023 
CX#2    Z423  SRL   5  10   
CXRL          ADN   4  1023 
CY?=          SRL   4  10                  [PAGE NO OF START OF AREA
CYQW          SBX   5  4                   [NO.OF PAGES IN AREA 
C^=G    #   
C^Q6    #     IF THE WHOLE OF A SEGMENT IS TO BE MARKED THEN THE HPERM AREA 
D29Q    #     IN THE SCB HAS TO BE ADJUSTED 
D2PB    #   
D392    Z430  LDCH  1  4
D3NL          BNZ   1  Z432                [J IF NOT START OF SEG   
D48=          SMO      FX1  
D4MW          TXL   5  X64  
D57G          BCS      Z432                [J UNLESS WHOLE OF SEG IN AREA   
D5M6          HUNT2    2,BSTB,BSCB,3       [LOCATE SCB & SET HPERM BITS 
D66Q          LDX   1  4
D6LB          SRL   1  9
D762          ADN   2  HPERM(1)            [ADDR OF HPERM WORD TO BE ALTERED
D7KL          LDX   1  4
D85=          SRL   1  6
D8JW          ANDN  1  7                   [SEG NO.WITHIN WORD  
D94G          SMO      1
D9J6          ADN   1  0(1)                [MULT BY 3   
D=3Q          NGN   0  8
D=HB          SRC   0  3(1) 
D?32          ANDS  0  0(2)                [CLEAR PERM BITS REFERRING TO SEG
D?GL          LDX   0  6
D#2=          SRL   0  7
D#FW          SRC   0  3(1) 
D#^G          ORS   0  0(2)                [SET THEM TO NEW VALUE   
D*F6          ORX   6  GSIGN               [SET FLAG TO INDICATE WHOLE SEG  
D*YQ    #   
DBDB    #     USE SCANPT MACRO TO OBTAIN ADDRESS OF PAGE TABLES AND INSERT PERMS
DBY2    #     UNLESS THE WHOLE SEG WAS SPEC ONLY'ACCESSED'PAGES WILL BE MARKED  
DCCL    #   
DCX=    Z432  LDX   2  ASEGTAB(3)   
DDBW          SCANPT   7,Z420,Z432,Z439,2,4,5,2,7   
DDWG          ADX   4  7                   [ADJUST VIRTUAL ADDRESS  
DFB6          LDXC  6  6                   [TRANSFER FLAG TO X7 
DFTQ          BCC      Z434 
DG*B          ORX   7  GSIGN
DGT2    Z434  LMASK    1,2  
DH#L          ADN   1  1                   [LENGTH OF PAGE TABLE
DHS=    Z435
DJ?W          BNG   7  Z436                [J IF WHOLE SEG INCLUDED 
DJRG          LDCT  0  #100 
DK?6          SMO      1
DKQQ          ANDX  0  0(2) 
DL=B          BNZ   0  Z438                [J IF NOT ACCESSED   
DLQ2    Z436  NGN   0  #1701
DM9L          ANDS  0  0(2) 
DMP=          ORS   6  0(2)                [SET PERMISSION  
DN8W    Z438  ADN   2  1
DNNG          BCT   7  Z435 
DP86          BRN      Z430 
DPMQ    Z439  ADX   4  7                   [IGNORE GAP  
DQ7B          BRN      Z430 
DQM2    )   
DR6L    #   
DRL=    #   
DS5W    #   
DSKG    # ERROR SECTION 
DT56    XENDORG 
DTJQ          LDN   1  NOENT
DW4B          BRN      XERROR   
DWJ2    #SKIP G4
DX3L    (   
DXH=    XSPAOVER                           [SPAS AND OVERLAYS   
DY2W    XNOSPAS        [PROG MARKED AS PURE PROCEEDURE BUT HAS NO SPAS. 
DYGG    SPAFORMAT      [SPA DOES NOT START WITH CORRECT HEADER  
D^26    SPAPAGE        [SPA FOR PAGE 0 NOT ALLOWED  
D^FQ    SPALENG        [SPA LENGTH INCORRECT
D^^B    SPACKSUM       [SPA CHECKSUM NO CORRECT 
F2F2    SPAREAD        [ERROR IN ATTEMPTING TO READ AN SPA BUCKET   
F2YL    XSHWRITE       [SHAREABLE AREA CANNOT HAVE WRITE PERM   
F3D=    )   
F3XW    XNODATA 
F4CG    XRECLENG
F4X6    XFILEMISS   
F5BQ    XORGHEAD
F5WB    XSFCODE 
F6B2    XBUCKLENG   
F6TL    XFRAGSIZE   
F7*=    X2PERMS 
F7SW    XPERM   
F8#G    XRECSIZE
F8S6          LDN   1  RINF 
F9?Q          BRN      XERROR   
F9RB    XCHS
F=?2          LDN   1  RCHER
F=QL          BRN      XERROR   
F?==    #SKIP G4
F?PW    SPARV          [SPA OUTSIDE ADDR&SSING RANGE
F#9G    XRESV   
F#P6          LDN   1  WERRES   
F*8Q          BRN      XERROR   
F*NB    XBLOCKTYPE  
FB82    XTYPE4  
FBML    XTYPE7  
FC7=    X2RS
FCLW    X2SRS   
FD6G          LDN   1  WRBLK
FDL6    XERROR  
FF5Q          SMO      FX1  
FFKB          LDX   5  0(1) 
FFT8 ...      VFREEW   FILE,FRRB
FG52          ACROSS   LOADERR,2
FGJL          MENDAREA 60,K99LOADX  
FH4=    #END
^^^^ ...54107136000500000000