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