16 22FL #SEG INSERTBL6 [ TONY HAMILTON 17 22_= #OPT K0INSERTBL=K0INSERT>K0ACCESS>K0FILESTORE>K0ALLGEO 7 23DW #LIS K0INSERTBL 7 23YG 8HINSERTBL 4 24D6 #SKI 12 24XQ SEGENTRY K1INSERTBL,SCAREFULA 12 25CB SEGENTRY K2INSERTBL,SINSERT 4 25X2 [ 4 26BL # 21 26W= # THIS SEGMENT IMPLEMENTS THE FOLLOWING PARTS OF THE INSERT & REPLAC 7 27*W # MACROS. 4 27TG # 4 28*6 # 21 28SQ # A) K1 ENTRY : THIS PART DOES THE CAREFUL UPDATING FOR THE BLOCK N 21 29#B # POINTED TO BY THE ^FREADBLOCK-TYPE^ POINTER IN X4 20 29S2 # IN THE FCB FOR THE FILE OPEN AT DEPTH [AWORK2]. 15 2=?L # (N.B.IT ASSUMES THE BLOCK BIT IS NOT SET.) 4 2=R= # 21 2?=W # B) K2 ENTRY : THIS INSERTS A BLOCK NUMBER BEFORE THE BLOCK NO. IN 21 2?QG # FCB OF THE FILE OPEN AT DEPTH [AWORK2] WHICH IS POI 19 2#=6 # TO BY THE^FREADBLOCK-TYPE^POINTER IN X4. 4 2#PQ # 6 2*9B # ERRORS 5 2*P2 ZGEOER1 18 2B8L GEOERR 1,MAPBCH! [BLOCK BIT SET ON ENTRY. 5 2BN= ZGEOER2 18 2C7W GEOERR 1,CAREFUL? [BLOCK POSITION INCORRECT 5 2CMG ZGEOER5 20 2D76 GEOERR 1,FULLBGON [FULLB GONE.OUGHT TO BE PRESENT 5 2DLQ ZGEOER9 18 2F6B GEOERR 1,NO BLOCK [ERROR IN SFINDFURB S/R. 4 2FL2 # 9 2FTS ...MXINS +FILESIZE+FBLKS+1 5 2G5L SFULLB 8 2GK= #HAL BSTB+FULLB,0 4 2H4W # 4 2HJG # 8 2J46 # SUBROUTINES 4 2JHQ # 4 2K3B # 4 2KH2 # 10 2L2L SFCB3 [SET X3-> FCB 8 2LG= SMO FX2 9 2L_W LDX 0 AWORK2 15 2MFG SFSTACK 0,3,3 [X3 -> FSTACK 15 2M_6 BFCBX 3,3 [X3 -> FCB 7 2NDQ EXIT 6 0 4 2NYB # 6 2PD2 SFINDFURB 20 2PXL # CALLED BY X1.THE WORD AFTER THE CALL CONTAINS THE TYPE/SUBTYPE 20 2QC= # WANTED.X3 ->FCB,X2 WILL POINT ON EXIT TO THE BLOCK REQUIRED. 17 2QWW LDX 2 FPTR(3) [J OVER FSTACK BLOCK 19 2RBG BXE 2 CXFI,ZGEOER9 [ERROR IF END OF FILE CHAIN. 5 2RW6 SFFULP 15 2S*Q LDX 2 FPTR(2) [NEXT BLOCK 19 2STB BXE 2 CXFI,ZGEOER9 [ERROR IF END OF FILE CHAIN. 9 2T*2 LDX 0 ATYPE(2) 7 2TSL #SKI K6INSERT 19 2W#= BXE 0 FILEPLUSFCB,ZGEOER9 [ERROR IF END OF FILE CHAIN. 16 2WRW BXU 0 0(1),SFFULP [J IF WRONG TYPE 17 2X?G EXIT 1 1 [EXIT ROUND TYPE-WORD 4 2XR6 # 4 2Y=Q # 16 2YQB SFINDFULLB [SET X3 ->FCB,X2-> APPROPRIATE FULLB 21 2_=2 # CALLED BY X6,OVERWRITES X2,WHICH POINTS TO AN APPROPRIATE FULLB 14 2_PL # FOR THIS FILE ON SUCCESSFUL EXIT (+1) 10 329= # EXIT +0 => NO FULLB 9 32NW # X3 POINTS TO FCB. 8 338G SMO FX2 9 33N6 LDX 0 AWORK2 17 347Q SFSTACK 0,2,2 [FIND X2 -> FSTACK 15 34MB BFCBX 3,2 [X3 -> FCB 4 3572 SFLP 15 35LL LDX 2 FPTR(2) [NEXT BLOCK. 18 366= BXE 2 CXFI,(6) [J IF END OF FILE CHAIN 13 36KW LDX 0 ATYPE(2) [TYPE 20 375G BXE 0 FILEPLUSFCB,(6) [EXIT FCB, SEARCH UNSUCCESSFUL 8 37K6 SMO FX1 17 384Q BXU 0 SFULLB,SFLP [J IF NOT BSTB/FULLB 9 38JB LDX 0 A1+1(2) 18 3942 BXU 0 BSPRE(3),SFLP [J IF WRONG B.S.PREFIX. 7 39HL EXIT 6 1 4 3=3= # 4 3=GW #SKI 4 3?2G ( 4 3?G6 # 21 3?_Q # THIS ENTRY POINT DOES THE ^CAREFUL^UPDATING FOR THE BLOCK WHOSE 21 3#FB # NUMBER IN THE FCB BLOCKLIST IS POINTED TO BY THE FREADBLOCK-TYPE 21 3#_2 # POINTER IN X4.THE APPROPRIATE USAGE BLOCK MUST BE THE FIRST FI/ 13 3*DL # INSERT4 BLOCK IN THE FILE CHAIN. 4 3*Y= # 6 3BCW SCAREFULA 4 3BXG # 15 3CC6 CALL 6 SFCB3 [X3 -> FCB 9 3CWQ #SKI K6INSERT>299-299 9 3DBB TRACE 4,CAREFUL 7 3DW2 #SKI K6INSERT 4 3F*L ( 19 3FT= JBC ZGEOER1,3,BFCARE [ERROR IF NOT CAREFUL FILE 10 3G#W BXGE 4 BSBS,ZGEOER2 8 3GSG LDN 0 FBLKS 9 3H#6 BXL 4 0,ZGEOER2 4 3HRQ ) 21 3J?B JBC NEWFULLB,3,BFALTR [IF FILE NOT ALTERED,SET UP A FULLB 17 3JR2 CALL 6 SFINDFULLB [X2-> FULLB,X3-> FCB 18 3K=L BRN NEWFULLB [J IF FULLB NOT PRESENT 16 3KQ= LDX 6 ALOGLEN(2) [NOW ALTLEN FULLB 7 3L9W ADN 6 1 7 3LPG LDX 3 2 15 3M96 ALTLEN 3,6 [BY ONE WORD 14 3MNQ CALL 6 SFCB3 [X3/> FCB 19 3N8B BRN SFULONG [WHENCE WE CAME FOR GEOERR. 5 3NN2 NEWFULLB 17 3P7L SETNCORE 3,1,BSTB,FULLB [SET UP FUUB,X1 -> IF 14 3PM= CALL 6 SFCB3 [X3 ->FCB 15 3Q6W LDX 2 3 [X1 -> FCB 4 3QLG XLPA 19 3R66 LDX 2 FPTR(2) [NEXT BLOCK IN FILE CHAIN. 18 3RKQ BXE 2 CXFI,SCHAIN [J IF END OF FILE CHAIN. 9 3S5B LDX 0 ATYPE(2) 18 3SK2 BXE 0 FILEPLUSFCB,SCHAIN [J IF WE'VE REACHED FCB 18 3T4L SMO FX1 [O/W SEARCH FOR FULLB. 10 3TJ= BXU 0 SFULLB,XLPA 5 3W3W SCHAIN 17 3WHG STO 1 6 [PRESERVE FULLB PTR 19 3X36 CHAIN 1,BPTR(2) [CHAI> IN FRONT OF NEXT FCB 17 3XGQ LDX 2 6 [PICK UP FULLB PTR. 17 3Y2B LDX 0 BSPRE(3) [B.S. PREFIX OF FULLB 9 3YG2 STO 0 A1+1(2) 13 3Y_L LDN 0 2 [R.H 8 3_F= STO 0 A1(2) 5 3_YW SFULONG 5 42DG SGETBAC 9 42Y6 LDX 3 BSPRE(3) 17 43CQ GETBACK 3 [GET NEW BLOCK NO. 10 43XB ADDSKIP I516A,BSGET 17 44C2 LDX 1 3 [SAVE OVER NEXT S/R 15 44WL LDX 7 ACOMMUNE7(2) [NEW BLOCK 15 45B= CALL 6 SFCB3 [X3 -> FCB 21 45TW BXE 1 BSPRE(3),SBLOKOK [JIF BSPRE HASN'T CHANGED OVER COOR 15 46*G FREEBACK 1,7 [FREE BLOCK 10 46T6 ADDSKIP I516A,ADLFBL 8 47#Q CALL 6 SFCB3 9 47SB BRN SGETBAC 5 48#2 SBLOKOK 15 48RL LDX 2 FPTR(3) [-> FSTACK 16 49?= CALL 6 SFLP [S&T X2-> FU-LB 16 49QW CALL 0 ZGEOER5 [ERROR IF ABSENT 7 4==G SMO 4 17 4=Q6 LDX 0 0(3) [BLOCK NUMBER IN FCB 8 4?9Q SMO A1(2) 15 4?PB STO 0 A1(2) [PUT IN FULLB 18 4#92 LDN 0 1 [UPDATE RECORD HEADER. 8 4#NL ADS 0 A1(2) 7 4*8= #SKI CLSTATS 8 4*MW ADS 0 CLBS 14 4B7G SMO 4 [IN NEW 18 4BM6 STO 7 0(3) [BLOCK NUMBER INTO FCB. 16 4C6Q CALL 1 SFINDFURB [FIND USAGE BLOCK 8 4CLB #HAL FI+INSERT4,0 15 4D62 STO 6 BACK2(2) [BLOCK NUMBER 12 4DKL LDX 0 BSPRE(3) [ 15 4F5= STO 0 BACK1(2) [B.S.PREFIX. 21 4FJW MBS 3,BFALTR,BFALTB [INDICATE FILE & BLOCK NOS. ALTERED 9 4G4G SBN 4 FBLKS-1 18 4GJ6 MAPBSECH 4,3 [SET BIT IN FMAPP BLOCK. 7 4H3Q #SKI K6INSERT 9 4HHB BNZ 0 ZGEOER1 5 4J32 STEND 5 4JGL UP 4 4K2= # 4 4KFW ) 4 4K_G # 4 4LF6 # 21 4LYQ # THIS ENTRY INSERTS A BLOCK NUMBER IN THE FCB BLOCKLIST BEFORE THE 20 4MDB # BLOCK WHOSE NUMBER IN THE LIST IS GIVEN BY THE FREADBLOCK-TYPE 21 4MY2 # POINTER IN X4.THE USAGE BLOCK IS THE 1ST FI/INSERT3 BLOCK IN THE 7 4NCL # FILE CHAIN 4 4NX= # 5 4PBW SINSERT 15 4PWG CALL 6 SFCB3 [X3 -> FCB 9 4QB6 #SKI K6INSERT>299-299 9 4QTQ TRACE 4,INSERTS 7 4R*B #SKI K6INSERT 4 4RT2 ( 8 4S7C ... SMO FX1 10 4SFS ... BXGE 4 MXINS,ZGEOER2 8 4SS= LDN 0 FBLKS 9 4T?W BXL 4 0,ZGEOER2 4 4TRG ) 21 4W?6 MBS 3,BFALTR,BFALTB [INDICATE FILE & BLOCK NOS. ALTERED 9 4WK4 ... LDX 0 FBLMOD(3) 18 4WX2 ... SBX 0 FUSEBL(3) [GET NO. OF SPARE BLOCKS 15 4X8Y ... BZE 0 NOTSPAR [J IF NONE 7 4XGW ... SBN 0 2 20 4XSS ... BPZ 0 PLENTY [J IF TWO OR MORE SPARE BLOCKS 8 4Y6Q ... LDX 0 BIT9 9 4YDN ... ANDX 0 AWORK1(2) 21 4YQL ... BNZ 0 NOTSPAR [J IF TWO NEW BLOCKS WILL BE NEEDED 17 4_4J ... [TO COMPLETE INSERT. 5 4_BG ...PLENTY 16 4_NG JBS NOTSPAR,3,BFCARE [JIF CAREFUL FILE 9 5286 ... SMO FUSEBL(3) 17 52MQ LDX 7 A1-1(3) [[X7] = NEW BL. NO. 16 537B CALL 6 SINBLOC [MOVE BLOX DOWN 8 53M2 BRN SQUEXIT 5 546L NOTSPAR 9 54L= #SKI K6INSERT>399-399 9 555W TRACE 2,NOTSPAR 9 557D ... LDX 0 FUSEBL(3) 16 5592 ... SBN 0 FBLKS-A1 [NO OF BLOCKS +1 8 55=J ... LDX 6 BIT9 9 55#6 ... ANDX 6 AWORK1(2) 19 55*N ... BZE 6 TFULL [J IF ONLY ONE BLOCK NEEDED 17 55C= ... [TO COMPLETE INSERT. 21 55DS ... ADN 0 1 [ENSURE ROOM FOR 2 BLOX IF NECESSARY 5 55GB ...TFULL 11 55HY ... BXGE 0 FSIZE(3),SFULL 10 55KG LDX 6 ALOGLEN(3) 16 5656 ADN 6 1 [ADD 1 TO LENGTH 14 56JQ ALTLEN 3,6 [OF FCB 5 574B SGETBAK 14 57J2 CALL 6 SFCB3 [X3 ->FCB 9 583L LDX 3 BSPRE(3) 17 58H= GETBACK 3 [GET NEW BLOCK NO. 10 592W ADDSKIP I516A,BSGET 9 59GG #SKI K6INSERT>399-399 12 5=26 TRACE ACOMMUNE7(2),NEWBLOK 7 5=FQ LDX 1 3 10 5=_B LDX 7 ACOMMUNE7(2) 15 5?F2 CALL 6 SFCB3 [X3 -> FCB 11 5?YL BXE 1 BSPRE(3),TBLOKOK 15 5#D= FREEBACK 1,7 [FREE BLOCK 10 5#XW ADDSKIP I516A,ADLFBL 9 5*CG BRN SGETBAK 5 5*X6 TBLOKOK 7 5B4# ... LDN 0 1 19 5B9H ... ADS 0 FUSEBL(3) [UPDATE FUSEBL BY ONE BLOCK 16 5BBQ CALL 6 SINBLOC [MOVE DOWN BLOX 17 5CB2 JBC SQUEXIT,3,BFCARE [EXIT IF NOT CAREFUL 14 5CTL SBN 4 FBLKS-1 [DATUMISE 8 5D*= LDX 2 FX2 15 5DSW MAPBIN 4,AWORK2(2) [ZNSERT BIT 9 5F#G #SKI K6INSERT>199-199 9 5FS6 TRACE 4,MAPINS 14 5G?Q CALL 6 SFCB3 [X3 ->FCB 9 5GRB ADN 4 FBLKS-1 5 5H?2 SQUEXIT 14 5HQL CALL 1 SFINDFURB [X2->FURB 8 5J== #HAL FI+INSERT3,0 18 5JPW SMO 4 [PICK UP NEW KCOLB NO. 20 5K9G LDX 0 0(3) [FROM FCB(AS WE MAY HAVE COORED) 9 5KP6 STO 0 BACK2(2) 16 5L8Q LDX 0 BSPRE(3) [& B.S. PREFIX 9 5LNB STO 0 BACK1(2) 9 5M82 #SKI K6INSERT>399-399 7 5MML SETREP OK 9 5N7= TRACE 4,SINSERTD 5 5NLW UP 4 5P6G # 5 5PL6 SINBLOC 9 5Q5Q #SKI K6INSERT>499-499 11 5QKB TRACE FBLMOD(3),SINBLOC 7 5QM_ ... LDN 0 1 8 5QQJ ... SMO FX2 9 5QT7 ... LDX 1 AWORK2 21 5QXQ ... INCRECUBS FORCED,1,0 [ADJUST ONLINE BS COUNT - SHOULDN'T R 21 5R2* ... [ COMPLICATED & TOO UNIMPORTANT TO AL 9 5R52 LDX 2 FUSEBL(3) 19 5RJL SBX 2 4 [X2 CONTAINS THE NUMBER OF 18 5S4= ... ADN 2 A1-1 [BLOCKS TO MOVE DOWN 19 5SHW ... LDN 1 A1-2(3) [X1 -> LAST BUT ONE ALLOCATED 9 5T3G ADX 1 FUSEBL(3) 21 5TH6 BZE 2 NOBLKS [J IF NO BLOCKS TO MOVE,I.E.APPENDING 5 5W2Q SINLP 9 5WGB #SKI K6INSERT>599-599 10 5X22 TRACE 0(1),SINLP 17 5XFL LDX 0 0(1) [MOVE A BLOCK DOWN 1 8 5X_= STO 0 1(1) 16 5YDW SBN 1 1 [DECREMENT PTR. 8 5YYG BCT 2 SINLP 5 5_D6 NOBLKS 19 5_XQ STO 7 1(1) [STORN NOW BLOCK NO$ IN FCB 9 62CB #SKI K6INSERT>199-199 9 62X2 TRACE 7,SINBLOC 15 63BL LDN 0 1 [INCREMENT 14 63W= ADS 0 FBLMOD(3) [FBLMOD 7 64*W EXIT 6 0 4 64TG # 5 65*6 SFULL 7 65SQ # FILEFULL 9 66#B SETREP FILEFULL 8 66S2 #SKI K6INSERT>99$99 10 67?L TRACE FX2,FILEFULL 5 67R= UP 4 68=W [ 14 68QG MENDAREA K6INSERT/5<100>30,K99INSERTBL 4 69=6 #END 8 ____ ...15525433001200000000