16 22FL #SEG INDEX7 [J. D. BIDGOOD 14 22_= #OPT K0INDEX=K0FILESTORE>K0ACCESS>K0ALLGEO 7 23DW #LIS K0INDEX 14 23YG #OPT K6INDEX=K6FILESTORE>K6ACCESS>K6ALLGEO 7 24D6 8HINDEX 11 24XQ SEGENTRY K2INDEX,TWOINS 11 25CB SEGENTRY K3INDEX,THRINS 11 25X2 SEGENTRY K4INDEX,SFRINS 11 26BL SEGENTRY K5INDEX,XCALCKEY 11 26W= SEGENTRY K7INDEX,XDELKEY 11 2764 ... SEGENTRY K8INDEX,XFNEARLY 4 27*W # 21 27TG # THIS SEGMENT RECALCULATES THE BLOCK KEYS FOR BLOCKS ALTERED BY DELETE 21 28*6 # AND INSERT AND UPDATES THE INDEX RECORD IN THE FI/FINDEXF BLOCK.THERE 11 28SQ # ARE 5 ENTRY PTS, AS FOLLOWS:- 4 29#B # 21 29S2 # K2INDEX - FROM INSERTWO TO CALCULATE KEYS FOR 2 USAGE BLOCKS IN FI 17 2=?L # CHAIN, ONE OF WHICH MAY BE A NEW BLOCK. 21 2=R= # K3INDEX - FROM INSERTHR TO CALCULATE KEYS FOR 3 USAGE BLOCKS IN FI 17 2?=W # CHAIN. THE MIDDLE BLOCK IS A NEW ONE. 21 2?QG # K4INDEX - FROM INSERTFR TO CALCULATE KEYS FOR 3 USAGE BLOCKS IN FI 14 2#=6 # CHAIN. THE LAST TWO ARE NEW. 21 2#PQ # K5INDEX - FROM DELETE TO RECALCULATE KEY FOR CURRENT BLOCK OF FILE 21 2*9B # K7INDEX - FROM DELETE TO REMOVE BLOCK KEY FOR CURRENT BLOCK WHICH 15 2*P2 # HAS BEEN DELETED FROM THE FILE. 17 2*W8 ...# K8INDEX - FROM APPEND TO CHECK FOR FNEARLY FULL 10 2B3B ...# INDEXED FILES. 21 2B8L # IN ALL COMMENTS IN SEGMENT WE ABBREVIATE ^THE CONTENTS OF FREADBLOCK^ 18 2BN= # TO ^N^, WHEN REFERRING TO PARTICULAR BLOCKS OF THE FILE. 4 2C7W # 5 2CMG ZGEOER1 10 2D76 GEOERR 1,NOTINDEX 5 2DLQ ZGEOER2 10 2F6B GEOERR 1,INDEXBLK 5 2FL2 ZGEOER3 9 2G5L GEOERR 1,NOBLOCK 5 2GK= ZGEOER4 10 2H4W GEOERR 1,FILEBENT 5 2H=4 ...ZGEOER5 10 2HC= ... GEOERR 1,FILEFULL 4 2HJG # 5 2J46 SBLOCKEY 21 2JHQ # THIS SUBROUTINE PUTS ZERO WORD(S) INTO THE INDEX RECORD AT A POSITION 21 2K3B # GIVEN BY CONTENTS OF X4. THIS CONTAINS A POINTER,RELATIVE TO INDEXREC 21 2KH2 # IN THE INDEX BLOCK,TO THE WORD AFTER WHICH THE NEW WORD(S) ARE TO BE 15 2L2L # INSERTED. X5 CONTAINS NO. OF WORDS TO INSERT 16 2LG= SBX 7 FX1 [DECREMENT LINK 17 2L_W CALL 6 SFINDEX [X1 -> INDEX BLOCK 7 2MFG LDX 3 1 10 2M_6 LDX 6 ALOGLEN(1) 20 2NDQ ADX 6 5 [LENGTHEN INDEX BLOCK BY NO. OF 18 2NYB ALTLEN 3,6 [WORDS TO BE INSERTED. 16 2PD2 CALL 6 SFINDEX [X1->INDEX BLOCK 8 2PXL LDX 2 A1(1) 21 2QC= SBN 2 INDEXREC-A1+1 [X2 CONTAINS NO. OF BLOCK KEY WORDS 16 2QWW SBX 2 4 [TO BE MOVED DOWN 8 2RBG LDN 3 A1(1) 20 2RW6 ADX 3 A1(1) [X3 -> WORD AFTER LAST BLOCK KEY 9 2S*Q #SKI K6INDEX>599-599 4 2STB ( 9 2T*2 TRACE 3,SINZERO 10 2TSL TRACE 2,MOVEBLKS 4 2W#= ) 21 2WRW BZE 2 XZERO [J IF NO WORDS TO MOVE. I.E. APPENDIN 5 2X?G XMOVE 19 2XR6 SBN 3 1 [X3 -> BLOCK KEY TO BE MOVED 8 2Y=Q LDX 0 0(3) 20 2YQB SMO 5 [MOVE DOWN BY NO CONTAINED IN X5. 8 2_=2 STO 0 0(3) 8 2_PL BCT 2 XMOVE 5 329= XZERO 21 32NW ADS 5 A1(1) [INCREMENT REC. HDDR IN INDEX BLOCK. 5 338G XZERO1 8 33N6 STOZ 0(3) 17 347Q SBN 5 1 [ZEROISE NEW WORD(S). 8 34MB BZE 5 XOUT 7 3572 ADN 3 1 9 35LL BRN XZERO1 4 366= XOUT 16 36KW ADX 7 FX1 [INCREMENT LINK. 7 375G EXIT 7 0 4 37K6 # 5 384Q SFINDEX 20 38JB # THIS SUBROUTINE FINDS THE INDEX BLOCK AND GIVES A PTR TO IT IN X1. 8 3942 SMO FX2 9 39HL LDX 0 AWORK2 8 3=3= FINDEXB 0,1 7 3=GW EXIT 6 0 4 3?2G # 5 3?G6 SCALCKEY 21 3?_Q # THIS SUBROUTINE RECALCULATES THE BLOCK KEY FOR THE USAGE BLOCK OF TYPE 21 3#FB # GIVEN IN WORD AFTER THE CALL AND STORES IT. ON ENTRY X4 CONTAINS A PTR 21 3#_2 # RELATIVE TO INDEXREC TO POSITION OF CURRENT BLOCK KEY IN INDEX BLOCK. 21 3*DL CALL 6 SUBFIND [X3 -> USAGE BLOCK GIVEN IN WORD AFTE 18 3*Y= [SCALCKEY CALL.X2 -> FCB 8 3BCW STO 3 GEN3 8 3BXG ADN 3 A1 16 3CC6 SBX 1 FX1 [DECREMENT LINK. 8 3CWQ SMO FX2 15 3DBB STO 1 AWORK4 [STORE LINK 21 3DW2 STOZ GEN6 [ZEROISE ^HIGHEST KEY FOUND^ REGISTER 19 3F*L STOZ 7 [ZEROISE KEY FOUND MARKER. 5 3FT= NEXTREC 17 3G#W LDX 6 FRH(3) [PICK UP NEXT RECORD 9 3GSG BZE 6 XINDEX 20 3H#6 KEYREC 2,,3,NKEY,5 [X5 CONTAINS REC KEY. J IF NONE. 21 3HRQ BXL 5 GEN6,ZGEOER4 [ERROR IF LESS THAN HIGHEST KEY FOUND 19 3J?B STO 5 GEN6 [UPDATE 'HIGHEST KEY FOUND' 19 3JR2 BNZ 7 NKEY [J IF NOT FIRST KEY FOUND. 18 3K=L STO 3 7 [SET 'KEY FOUND' MARKER 20 3KQ= STO 5 GEN5 [STORE FIRST KEY FOUND IN BLK. 4 3L9W NKEY 7 3LPG ADX 3 6 9 3M96 BRN NEXTREC 5 3MNQ XINDEX 17 3N8B CALL 6 SFINDEX [X1 -> INDEX BLOCK 20 3NN2 BZE 7 NOFOUND [J IF ^KEY FOUND^ MARKER NOT SET. 17 3P7L LDX 5 GEN6 [HIGHEST KEY FOUND 9 3PM= BRN STOKEY 5 3Q6W NOFOUND 19 3Q*6 BNZ 4 NFIRST [J IF NOT 1ST BLOCK OF FILE. 20 3QHB LDN 5 0 [SET A KEY OF ZERO FOR 1ST BLOCK. 9 3QPL BRN STOKEY 5 3QXW NFIRST 21 3R66 SMO 4 [PICK UP BLOCK KEY OF PREVIOUS BLOCK. 10 3RKQ LDX 5 INDEXREC-1(1) 5 3S5B STOKEY 19 3SK2 SMO 4 [STORE 'HIGHEST KEY FOUND' IN 16 3T4L STO 5 INDEXREC(1) [BLOCK KEY WORD 19 3TJ= BS 2,BFINDEXALT [SET 'INDEX ALTERED' MARKER. 5 3W3W NOCHANGE 8 3WHG LDX 3 GEN3 7 3X36 #SKI K6INDEX 4 3XGQ ( 10 3Y2B LDX 0 ALOGLEN(1) 10 3YG2 SBN 0 INDEXREC-A1+1 7 3Y_L SBX 0 4 18 3_F= BZE 0 ZEROISED [J IF LAST BLOCK OF FILE. 7 3_YW SMO 4 10 42DG LDX 0 INDEXREC+1(1) 9 42Y6 BZE 0 ZEROISED 9 43CQ BXL 0 5,ZGEOER2 5 43XB ZEROISED 9 44C2 BZE 4 XFIRSTBLK 9 44WL BZE 7 XFIRSTBLK 8 45B= LDX 0 GEN5 7 45TW SMO 4 12 46*G BXL 0 INDEXREC-1(1),ZGEOER2 6 46T6 XFIRSTBLK 4 47#Q ) 10 47SB NAME 3,FILE,FUWB 8 48#2 SMO FX2 9 48RL LDX 1 AWORK4 8 49?= ADX 1 FX1 7 49QW EXIT 1 1 4 4==G # 5 4=Q6 SUBFIND 21 4?9Q # THIS SUBROUTINE SEARCHES THE FILE CHAIN FOR USAGE BLOCK OF TYPE/SUBTYP 20 4?PB # CONTAINED IN WORD POINTED TO BY X1 AND GIVES A PTR TO IT IN X3. 8 4#92 SMO FX2 15 4#NL LDX 0 AWORK2 [FILE DEPTH 15 4*8= SFSTACK 0,3 [X3 -> FCA 15 4*MW PSTAC 3,3 [X3 -> FSTACK 15 4B7G BFCBX 2,3 [X2 -> FCB 5 4BM6 SFULP 15 4C6Q LDX 3 FPTR(3) [NEXT BLOCK 9 4CLB LDX 0 ATYPE(3) 6 4D62 #SKI K6INDEX 17 4DKL BXE 0 FILEPLUSFCB,ZGEOER3 [ERROR IF NOT FOUND 16 4F5= BXU 0 0(1),SFULP [J IF WRONG TYPE 7 4FJW EXIT 6 0 4 4G4G # 5 4GJ6 SFCAB 21 4H3Q # THIS SUBROUTINE GIVES A PTR IN X3 TO THE FCA AND A PTR IN X2 TO THE 13 4HHB # FCB. ON ENTRY X6 CONTAINS FILE DEPTH. 18 4J32 SFSTACK AWORK2(2),3,1 [X3 -> FCA, X1 -> FSTACK. 8 4JGL BFCBX 2,1 7 4K2= EXIT 7 0 12 4K2Q ...# INDEXED FILE FNEARLY FULL ROUTINE 14 4K3= ...# EXITS WITH X3->FCA, X1->FSTACK, X2->FCB 5 4K3Q ...SFNEARLY 12 4K4= ... SBX 6 FX1 [ SET LINK 19 4K4Q ... TESTREP2 FILEFULL,ZGEOER5 [ FILE FULL TEST (INDEXED) 12 4K5= ... CALL 7 SFCAB [ X2->FCB 14 4K5Q ... LDX 0 FBLMOD(2) [ LENGTH OF FCB 8 4K6= ... SBN 0 AF2 10 4K6Q ... ADN 0 FNEARLY*8+A1 9 4K7= ... SBX 0 FSIZE(2) 16 4K7Q ... BNG 0 SNFOKAY [ J- IF NOT NEARLY FULL 9 4K8= ... TRACE 0,FNEARLY 18 4K8Q ... SBN 0 FNEARLY*8 [ WE BREAK IF /*FNEARLY MESSAGES 18 4K9= ... BZE 0 ZGEOER5 [ COME OUT (I.E. FILE FULL CASE 9 4K9Q ... SETREP FNEARLY 16 4K== ...# OUTPUT MESSAGES TO OPS CL AND FORCED TO MON FILE 15 4K=Q ... LDN 4 10 [NOT DIRECTORY CREADL BL LEN 16 4K?= ... JBC SNFNDIRA,2,BFDIR [ J- IF NOT DIRECTORY 15 4K?Q ... LDN 4 4 [ DIRECTORY CREADL BL LEN 5 4K#= ...SNFNDIRA 17 4K#Q ... SETNCORE 37,2,ADATA,CREADL [ X2->BL,SZ 37WDS 14 4K*= ... STOZ A1(2) [ ZERO DATA LENGTH 18 4K*Q ... SETUPCORE 4,5,FILE,FABSNB [X4->BL,SIZE 4 OR 10 WDS 12 4KB= ... CALL 7 SFCAB [ X2 -> FCB 12 4KBQ ... LDX 3 5 [ X3-> FABSNB 8 4KC= ... ADN 3 A1+1 17 4KCQ ... JBC SNFNDIRB,2,BFDIR [ J - IF NOT DIRECTORY 8 4KD= ... ADN 2 FME1 17 4KDQ ... MOVE 2 3 [ MOVES ACROSS DIRECTORY USERNAME 16 4KF= ... LDN 3 4 [ UPDATES FABSNB DATA LENGTH 7 4KFQ ... SMO 5 8 4KG= ... STO 3 A1 9 4KGQ ... BRN SNFOUTP 5 4KH= ...SNFNDIRB 9 4KHQ ... ADN 2 FUSER1 16 4KJ= ... MOVE 2 9 [ MOVE ACROSS FILE DESCRIPTION 8 4KJQ ... LDN 3 10 7 4KK= ... SMO 5 8 4KKQ ... STO 3 A1 5 4KL= ...SNFOUTP 13 4KLQ ... UNNORM FULL [ FORMAT MESSAGE 11 4KM= ... MHUNTW 1,ADATA,CREADL 14 4KMQ ... OUTPARAM A1(1),CPDATA,ADATA,CREADL 14 4KN= ... MONOUT ANFULLIND [ OUTPUT MESSAGE 15 4KNQ ... VFREE FILE,FABSNB [ FREE BLOCKS USED 10 4KP= ... VFREE ADATA,CREADL 8 4KPQ ... LDX 2 FX2 16 4KQ= ... CALL 7 SFCAB [ SET PTRS TO FCA,FCB,FSTACK 5 4KQQ ...SNFOKAY 12 4KR= ... ADX 6 FX1 [ RESET LINK 16 4KRQ ... EXIT 6 0 [ RETURN FROM FNEARLY ROUTINE 14 4KS= ...# ENTRY FROM APPEND SEGMENT (FNEARLY CHECK) 21 4KSQ ...# ORK3 CONTAINS THE FILE DEPTH, WE REQUIRE IT IN AWORK2 FOR SFCAB ROUT 3 4KT= ... 3 4KTQ ... 5 4KW= ...XFNEARLY 17 4KWQ ... LDX 0 AWORK3(2) [ FILE EPTH FROM APPEND 18 4KX= ... STO 0 AWORK2(2) [ STORE DEPTH FOR USE BY SFCAB 9 4KXQ ... CALL 6 SFNEARLY 12 4KY= ... UP [ RESTORES AWORK WORDS 3 4KYQ ... 21 4K_G # ENTRY FROM DELETE TO RECALCULATE BLOCK KEY FOR CURRENT BLOCK OF FILE 5 4LF6 XCALCKEY 19 4LYQ CALL 7 SFCAB [X3->FCA,X1->FSTACK,X2->FCB 8 4MDB LDN 0 #77 9 4MY2 ANDX 0 FINFC(2) 18 4NCL BZE 0 ZGEOER1 [J IF FILE NOT INDEXED 10 4NX= LDX 4 FREADBLOCK(3) 9 4PBW #SKI K6INDEX>599-599 9 4PWG TRACE 4,DELCALC 8 4QB6 SBN 4 FBLKS 21 4QTQ CALL 1 SCALCKEY [RECALCULATE BLOCK KEY AND STORE IT 16 4R*B #HAL FI+FUTILITY,0 [IN INDEX BLOCK. 4 4RT2 UP 5 4S#L UP 21 4SS= # ENTRY FROM DELETE TO REMOVE BLOCK KEY FOR BLOCK WHICH HAS BEEN DELETED 6 4T?W # FROM FILE. 5 4TRG XDELKEY 19 4W?6 CALL 7 SFCAB [X3->FCA,X1->FSTACK,X2->FCB 8 4WQQ LDN 0 #77 9 4X=B ANDX 0 FINFC(2) 19 4XQ2 BZE 0 ZGEOER1 [ERROR IF FILE NOT INDEXED 9 4Y9L #SKI K6INDEX>599-599 12 4YP= TRACE FREADBLOCK(3),DELBLK 17 4_8W CALL 6 SFINDEX [X1 -> FINDEXF BLOCK 9 4_NG LDX 0 FBLMOD(2) 21 5286 ADN 0 A1 [IF LAST BLOCK OF FILE NO WORDS TO 17 52MQ SBX 0 FREADBLOCK(3) [MOVE IN INDEX BLOCK 14 537B BZE 0 SHORT [J IF SO 7 53M2 LDX 5 1 10 546L ADX 5 FREADBLOCK(3) 19 54L= SBN 5 FBLKS-INDEXREC [X3->BLOCK KEY TO BE REMOVED. 7 555W LDX 4 5 7 55KG ADN 4 1 20 5656 SMO 0 [X0 = NO OF BLOCKS TO BE MOVED 7 56JQ MOVE 4 0 5 574B SHORT 19 57J2 BS 2,BFINDEXALT [SET 'INDEX ALTERED' MARKER. 7 583L LDN 0 1 10 58H= LDX 2 ALOGLEN(1) 7 592W SBX 2 0 8 59GG SBS 0 A1(1) 9 5=26 SHORTEN 1,0(2) 8 5=FQ BRN UP 21 5=_B # ENTRY FROM INSERTWO TO RECALCULATE BLOCK KEYS FOR TWO USAGE BLOCKS IN 21 5?F2 # CORE, IF NECESSARY INSERTING A NEW WORD IN THE INDEX RECORD. THE INSER 14 5?YL # RECORD IS IN A FWB IN THE ACTIVITY CHAIN. 21 5#D= # AWORK1 IS A SWITCH WORD PASSED ACROSS FROM INSERTWO. IF B5 IS SET A NE 21 5#XW # BLOCK HAS BEEN INSERTED INTO THE FCB FOR THE FILE AND A CORRESPONDING 21 5*CG # WORD MUST BE INSERTED INTO THE INDEX BLOCK. IF B4 IS SET THE USAGE BLK 18 5*X6 # ARE RESPECTIVELY THE N-1TH &NTH,OTHERWISE THE NTH & N+1TH. 5 5BBQ TWOINS 13 5BG9 ... LDCT 0 #010 [ NEW BLOCK ? 9 5BKN ... ANDX 0 AWORK1(2) 16 5BP7 ... BZE 0 SNOTNB [ J - IF NOT NEW BLOCK 20 5BSL ... CALL 6 SFNEARLY [X3->FCA,X1->FSTACK,X2->FCB 8 5BY5 ... BRN SNNBC 5 5C3J ...SNOTNB 8 5C73 ... CALL 7 SFCAB 5 5C=G ...SNNBC 8 5CB2 LDN 0 #77 9 5CTL ANDX 0 FINFC(2) 18 5D*= BZE 0 ZGEOER1 [J IF FILE NOT INDEXED. 21 5DSW LDX 4 FREADBLOCK(3) [X4 CONTAINS PTR RELATIVE TO INDEXREC 9 5F#G #SKI K6INDEX>599-599 9 5FS6 TRACE 4,TWOBLKS 21 5G?Q SBN 4 FBLKS [IN INDEX BLK,FOR CURRENT BLK OF FILE 8 5GRB LDCT 0 #020 8 5H?2 SMO FX2 14 5HQL ANDX 0 AWORK1 [B4 SET? 14 5J== BZE 0 XFLOW [J IF NOT 20 5JPW SBN 4 1 [X4 -> PREVIOUS BLOCK OF FILE. 5 5K9G XFLOW 8 5KP6 LDCT 0 #010 20 5L8Q SMO FX2 [TEST IF NEW BLOCK BEEN INSERTED. 9 5LNB ANDX 0 AWORK1 14 5M82 BZE 0 NOTNEW [J IF NOT 7 5MML LDN 5 1 21 5N7= CALL 7 SBLOCKEY [INSERT ZERO WORD IN INDEX BLOCK AS 21 5NLW NOTNEW [THE [X4]+1TH RELATIVE TO INDEXREC 21 5P6G CALL 1 SCALCKEY [CALCULATE NEW BLK KEY FOR FI/INSERT1 19 5PL6 #HAL FI+INSERT1,0 [BLOCK AND RENAME IT A FUWB. 7 5Q5Q ADN 4 1 21 5QKB CALL 1 SCALCKEY [CALCULATE KEY FOR FI/INSERT3 BLOCK. 8 5R52 #HAL FI+INSERT3,0 8 5RJL BRN UP 21 5S4= # ENTRY FROM INSERTHR TO RECALCULATE BLOCK KEYS FOR THREE USAGE BLOCKS 21 5SHW # IN CORE. THE MIDDLE BLOCK IS A NEW ONE AND A CORRESPONDING WORD MUST 21 5T3G # BE PUT IN THE INDEX BLOCK. IF B4 OF AWORK1 IS SET THE BLOCKS ARE THE 16 5TH6 # N-1TH,NTH &N+1TH OTHERWISE THE NTH,N+1TH &N+2TH. 5 5W2Q THRINS 20 5WGB ... CALL 6 SFNEARLY [X3->FCA,X1->FSTACK,X2->FCB. 8 5X22 LDN 0 #77 9 5XFL ANDX 0 FINFC(2) 18 5X_= BZE 0 ZGEOER1 [J IF FILE NOT INDEXED. 21 5YDW LDX 4 FREADBLOCK(3) [X4 CONTAINS PTR RELATIVE TO INDEXREC 9 5YYG #SKI K6INDEX>599-599 10 5_D6 TRACE 4,THREBLKS 21 5_XQ SBN 4 FBLKS [IN INDEX BLK,FOR CURRENT BLK OF FILE 8 62CB LDCT 0 #020 8 62X2 SMO FX2 14 63BL ANDX 0 AWORK1 [B4 SET? 14 63W= BZE 0 TFLOW [J IF NOT 7 64*W SBN 4 1 5 64TG TFLOW 18 65*6 LDN 5 1 [INDICATES ONE NEW WORD 20 65SQ CALL 7 SBLOCKEY [INSERT ZERO WORD IN INDEX BLOCK. 20 66#B CALL 1 SCALCKEY [CALCULATE NEW BLOCK KEYS FOR THE 21 66S2 #HAL FI+INSERT1,0 [THREE USAGE BLOCKS AND STORE VALUES 20 67?L ADN 4 1 [IN CORRESPONDING WORDS OF INDEX 20 67R= CALL 1 SCALCKEY [BLOCK. RENAME ALL USAGE BLOCKS 15 68=W #HAL FI+INSERT2,0 [FILE/FUWB'S. 7 68QG ADN 4 1 9 69=6 CALL 1 SCALCKEY 8 69PQ #HAL FI+INSERT3,0 8 6=9B BRN UP 21 6=P2 # ENTRY FROM INSERTFR TO RECALCULATE BLOCK KEYS FOR THREE USAGE BLOCKS. 21 6?8L # THE BLOCKS ARE THE N-2TH,N-1TH AND NTH.THE LAST TWO ARE NEW AND MUST 17 6?N= # HAVE NEW WORDS INSERTED INTO THE INDEX BLOCK FOR THEM. 5 6#7W SFRINS 20 6#MG ... CALL 6 SFNEARLY [X3->FCA,X1->FSTACK,X2->FCB 8 6*76 LDN 0 #77 9 6*LQ ANDX 0 FINFC(2) 18 6B6B BZE 0 ZGEOER1 [J IF FILE NOT INDEXED. 20 6BL2 LDX 4 FREADBLOCK(3) [X4 INDICATES BLOCK OF FILE TWO 9 6C5L #SKI K6INDEX>599-599 9 6CK= TRACE 4,FRBLKS 18 6D4W SBN 4 FBLKS+2 [BEFORE CURRENT BLOCK. 18 6DJG LDN 5 2 [INDICATES 2 NEW WORDS. 21 6F46 CALL 7 SBLOCKEY [INSERT TWO ZERO WORDS IN INDEX BLK. 20 6FHQ CALL 1 SCALCKEY [CALCULATE NEW BLOCK KEYS FOR THE 21 6G3B #HAL FI+INSERT1,0 [THREE USAGE BLOCKS AND STORE VALUES 20 6GH2 ADN 4 1 [IN CORRESPONDING WORDS OF IN4EX 20 6H2L CALL 1 SCALCKEY [BLOCK. RENAME ALL USAGE BLOCKS 15 6HG= #HAL FI+INSERT3,0 [FILE/FUWB'S. 7 6H_W ADN 4 1 9 6JFG CALL 1 SCALCKEY 8 6J_6 #HAL FI+INSERT5,0 8 6KDQ BRN UP 10 6KYB MENDAREA 50,K99INDEX 4 6LD2 #END 8 ____ ...57577103000200000000