7 22FL #SEG REWRITE 15 22_= #OPT K0REWRITE=K0ACCESS>K0FILESTORE>K0ALLGEO 7 23DW #LIS K0REWRITE 9 23YG #OPT K6REWRITE=K6DELETE 7 24D6 8HREWRITE 4 24XQ # 11 25CB SEGENTRY K3REWRITE,REWRITE 11 25X2 SEGENTRY K4REWRITE,WIND 11 26BL SEGENTRY K5REWRITE,WRITEB 11 26W= SEGENTRY K7REWRITE,SUBS 12 27*W SEGENTRY K33REWRITE,ZREWRITE 11 27TG SEGENTRY K44REWRITE,ZWIND 12 28*6 SEGENTRY K51REWRITE,WRITBREAK 12 28SQ SEGENTRY K52REWRITE,WRITANS 12 29#B SEGENTRY K53REWRITE,WRITFORCE 12 29S2 SEGENTRY K55REWRITE,ZWRITEB 12 2=?L SEGENTRY K56REWRITE,ZWRITBREAK 12 2=R= SEGENTRY K57REWRITE,ZWRITANS 12 2?=W SEGENTRY K58REWRITE,ZWRITFORCE 11 2?QG SEGENTRY K77REWRITE,ZSUBS 4 2#=6 # 5 2#PQ ZGEOER1 18 2*9B GEOERR 1,FULLBGON [NO FULLB IN FILE CHAIN 4 2*P2 ZEN 9 2B8L GEOERR 1,ENDFILE 5 2BN= ZGEOER3 20 2C7W GEOERR 1,RECORD? [SOMETHING ODD ABOUT READ PTRS 5 2CMG ZGEOER6 10 2D76 GEOERR 1,ALTERED? 4 2DLQ # 15 2F6B # THIS SEGMENT IMPLEMENTS THE ACCESS MACROS:- 13 2FL2 # REWRITE (ENTRY POINTS K3 AND K33) 13 2G5L # WIND (ENTRY POINTS K4 AND K44) 13 2GK= # WRITEB (ENTRY POINTS K5 AND K55) 14 2H4W # STEPWRITE (ENTRY POINTS K7 AND K77) 15 2HJG # IN CONJUCTION WITH THE FILESTORE RING SYSTEM 4 2J46 # 4 2JHQ # 7 2JNY ...#SKI IFS<1$1 4 2JW6 ...( 5 2K3B SFULLB 8 2KH2 #HAL BSTB+FULLB,0 5 2L2L SFMAP 8 2LG= #HAL FILE+FMAPP,0 4 2LQ4 ...) 4 2L_W # 20 2MFG FILETRAN [SUBROUTINES FOR SPECAIL FILESTORE 18 2M_6 [B.S. TRANFER ROUTINES. 16 2N2# ...# THIS READS CURRENT BLOCK OF FILE INTO BSTB-BREAD 6 2N3G ...# IN CORE 5 2N4N ...SFREAD 8 2N5W ... SBX 6 FX1 8 2N74 ... LDX 2 FX2 9 2N8= ... LDX 7 AWORK4(2) 7 2N9D ...#SKI JSKI33<1$1 7 2N=L ... FILEREAD 7 6 2N?S ...#SKI JSKI33 9 2N*2 ... FILEREAD 7,FAIL 8 2NB8 ... ADX 6 FX1 7 2NCB ... EXIT 6 0 6 2NDQ PARAPOINT 21 2NYB [THIS SUBROUTINE VALIDATES THE FILE LEVEL PARAMETER AND MAKES POSITIVE 12 2PD2 [IF NECESSARY AND GIVES POINTERS:- 17 2PXL [ X1-> TO TOP OF FSTACK BLOCK OF THIS FILE 12 2QC= [ X2-> FCB OF THIS FILE 21 2QWW [ X3-> TO RING ELEMENT OF FCA OF FILE OPEN AT LEVEL IN X6 14 2RBG LDX 6 ACOMMUNE7(2) [DEPTH 14 2RW6 SRA 6 15 [CONVERT 17 2S*Q FILENUMB 4 [X4= NO FILES OPEN 18 2STB TOPFCA 3 [X3 -> FCA OF TOP FILE 17 2T*2 BPZ 6 POSLV [J IF DEPTH POSITIVE 21 2TSL ADX 6 4 [IF NEGATIVE ADD NUMBER OF FILES OPEN 7 2W#= #SKI K6REWRITE 4 2WRW ( 16 2X?G BPZ 6 NOWP1 [ERROR IF STILL <0 5 2XR6 NOTENUF 10 2Y=Q GEOERR 1,NOPENDEL 4 2YQB ) 5 2_=2 POSLV 7 2_PL #SKI K6REWRITE 9 329= BXGE 6 4,NOTENUF 5 32NW NOWP1 15 338G STO 6 AWORK4(2) [STORE DEPTH 4 33N6 NOWP 8 347Q LDX 2 FX2 16 34MB SFSTACK AWORK4(2),3,1 [GET X3 -> FCA 21 3572 [AND -> IN X1 TO TOP OF FSTACK BLOCK 7 35LL BFCBX 2,1 7 366= EXIT 7 0 4 36KW # 5 375G SFSTACK 8 37K6 LDX 3 FX2 15 384Q SFSTACK AWORK4(3),3 [X3 -> FCA 7 38JB EXIT 7 0 4 3942 # 5 39HL XKEYREC 21 3=3= # THIS ROUTINE CALCULATES THE KEY OF THE REC. POINTED TO BY X4 AND 21 3=GW # STORES IT IN X7,THEN EXITS NORMALLY. IF FILE NOT INDEXED OR REC. 16 3?2G # HAS NO KEY IT EXITS PLUS 1. ON ENTRY X2-> FCB. 10 3?G6 KEYREC 2,,1,NOKEY,7 7 3?_Q EXIT 6 0 5 3#FB NOKEY 7 3#_2 EXIT 6 1 4 3*DL # 6 3*Y= SWITCHBLOCK 17 3BCW # THIS ROUTINE DOES ALL THE NORMAL'CAREFUL'UPDATING. 4 3BXG # 20 3CC6 JBS (7),3,BAMCLEAN [J IF FILE OPEN IN CLEAN MODE. 18 3CWQ JBC (7),2,BFCARE [J IF FILE NOT CAREFUL 8 3DBB SMO FX2 17 3DW2 STO 1 ACOMMUNE1 [STORE PTR TO USAGEB. 19 3F*L LDX 0 FREADBLOCK(3) [CALCULATE APPROPRIATE BIT 9 3FT= SBN 0 FBLKS-1 15 3G#W MAPBCH 0,2 [WAS BIT SET 15 3GSG BNZ 0 YSET [J IF BIT SET 8 3H#6 SBX 7 FX1 16 3HRQ STO 7 AWORK1(2) [PRESERVE LINK 17 3J?B PSTAC 1,3 [X1 -> FSTACK BLOCK 15 3JR2 BFCBX 2,1 [X2 -> FCB 21 3K=L JBC NEWFULLB,2,BFALTB [DON'T LOOK FOR FULLB,SET ONE UP,IF 20 3KQ= ['BLOCK NOS. ALTERED' BIT UNSET. 15 3L9W CALL 7 SEEKFULLB [X1-> FULLB 16 3LPG BRN NEWFULLB [J IF NOT THERE 10 3M96 LDX 7 ALOGLEN(1) 7 3MNQ ADN 7 1 7 3N8B LDX 3 1 15 3NN2 ALTLEN 3,7 [ALTLEN BLOCK 21 3P7L CALL 6 SGETBACK [GET A B.S.BLOCK ON RIGHT RESIDENCE 8 3PM= BRN SGOT 5 3Q6W NEWFULLB 11 3QLG SETNCORE 3,1,BSTB,FULLB 7 3R66 LDN 0 2 13 3RKQ STO 0 A1(1) [R.H 7 3S5B LDN 0 63 17 3SK2 STO 0 A1+1(1) [RANDOM B.S.PREFIX 14 3T4L CALL 6 SGETBACK [GET B.S. 5 3TJ= NOFULLB 6 3TMB ...#SKI IFS 10 3TQG ... SFMAPP 2,2,ZGEOER1 7 3TTL ...#SKI IFS<1$1 4 3TYQ ...( 16 3W3W LDX 2 FPTR(2) [JOVER FSTACK 4 3WHG SLZ 15 3X36 LDX 2 FPTR(2) [NEXT BLOCK 9 3XGQ LDX 0 ATYPE(2) 7 3Y2B SMO FX1 9 3YG2 BXU 0 SFMAP,SLZ 4 3YPS ...) 9 3Y_L LDX 2 FPTR(2) 10 3_F= MHUNTW 1,BSTB,FULLB 7 3_YW LDX 7 1 16 42DG CHAIN 7,BPTR(2) [CHAIN FULLB IN 7 42Y6 LDX 1 7 7 43CQ PSTAC 2,3 15 43XB BFCBX 2,2 [X2 -> FCB 15 44C2 LDX 0 BSPRE(2) [RIGHT B.S.PREFIX 9 44WL STO 0 A1+1(1) 14 45B= LDX 1 FPTR(2) [->FSTBLK 4 45TW SGOT 10 46*G SMO FREADBLOCK(3) 14 46T6 LDX 6 0(2) [OLD B.N. 17 47#Q SFUB 1,6,1,NOTFURBA [J IF FURB NOT AROUND 5 47SB YGOTFURB 16 48#2 STO 4 BACK1(1) [UPDATE B.S.HOME 9 48RL STO 5 BACK2(1) 17 49?= NAME 1,FILE,FUWB [SO IT GOES TO B.S. 16 49QW STO 1 4 [-> USAGE BLOCK 15 4==G SMO FREADBLOCK(3) [STORE IN FCB 8 4=Q6 STO 5 0(2) 14 4?9Q CALL 7 SEEKFULLB [X1 -> FU-LB 9 4?PB BRN ZGEOER1 8 4#92 SMO A1(1) 16 4#NL STO 6 A1(1) [STORE OLD B.N. 7 4*8= LDN 0 1 17 4*MW ADS 0 A1(1) [UPDATE BLOCK COUNT 10 4B7G LDX 0 FREADBLOCK(3) 18 4BM6 SBN 0 FBLKS-1 [SET BIT FOR THIS BLOCK 14 4C6Q MAPBSE 0,2 [SET BIT 8 4CLB PSTAC 2,3 15 4D62 BFCBX 2,2 [X2 -> FCB 21 4DKL MBS 2,BFALTB,BFALTR [SET FILE AND BLOCK NOS ALTERED BITS. 16 4F5= LDX 1 4 [-> USAGE BLOCK 8 4FJW LDX 7 FX1 8 4G4G SMO FX2 15 4GJ6 ADX 7 AWORK1 [X7 = EXIT 7 4H3Q EXIT 7 0 4 4HHB YSET 17 4J32 LDX 1 ACOMMUNE1(2) [X1 -> USAGE BLOCK 7 4JGL PSTAC 2,3 16 4K2= BFCBX 2,2 [RESET X2 ->FCB 8 4K=4 ... FSHSKIP B,YB1 21 4KFW JBC ZGEOER6,2,BFALTB [ERROR IF 'BLOCK NOS. ALTERED' BIT UN 21 4KKR ...YB1 [OMIT CHECK ON 'B' MACHINE SINCE BFAL 21 4KPN ... [ CLEARED WHEN FCB TAKEN TO 'B' & WHO 21 4KTK ... [ (WITH BITS SET) MAY BE TAKEN TO 'B' 7 4K_G EXIT 7 0 4 4LF6 # 4 4LYQ # 5 4MDB NOTFURBA 8 4MY2 VARIADNR 2 9 4NCL ... CALL 6 SFREAD 16 4PWG CALL 6 SCHBSP [CHECK B.S.PREFIX 10 4QB6 ADDSKIP I516A,ADLRD 15 4QTQ MHUNTW 1,BSTB,BREAD [BUFFER BLOCK 9 4R*B NAME 1,FILE,FUWB 17 4RT2 CHAIN 1,FPTR(2) [CHAIN AFTER FSTACK 15 4S#L PSTAC 1,3 [X1 -> FSTACK 15 4SS= BFCBX 2,1 [X2 -> FCB 17 4T?W LDX 1 FPTR(1) [X1 -> USAGE BLOCK 10 4TRG SMO FREADBLOCK(3) 16 4W?6 LDX 6 0(2) [OLD B.S.NUMBER 9 4WQQ BRN YGOTFURB 4 4X=B # 9 4XQ2 # TWO SUBROUTINES, 21 4Y9L # 1)SCHBSP:CHECKS B.N. IN X5 IS STILL OK,IF NOT,GETS RID OF IT & GETS 16 4YP= # A NEW ONE.B.S.P AT TIME OF 1ST GETBAX IN X4 . 19 4_8W # 2)SGETBAC: GETS B.S, CHECKS B.S.P. STILL OK, IF NOT AS ABOVE 4 4_NG # 5 5286 SCHBSP 8 52MQ SBX 6 FX1 14 537B CALL 7 NOWP [PTRS. 9 53M2 BRN PREFCH 5 546L SGETBACK 5 54L= SGETBAC 8 555W CALL 7 NOWP 8 55KG SBX 6 FX1 5 5656 SGBACK 18 56JQ LDX 4 BSPRE(2) [B.S.PREFIY CURRENTLY 5 574B RGBACK 14 57J2 GETBACK 4 [GET B.S. 10 583L ADDSKIP I516A,BSGET 16 58H= LDX 5 EXEC1(2) [PRESERVE B.N. 13 592W CALL 7 NOWP [PTRS 5 59GG PREFCH 19 5=26 BXE 4 BSPRE(2),OKBSHO [J IF B.S.PREFIX UNCHANGED 15 5=FQ LDX 7 4 [OLD B.S.P. 16 5=_B LDX 4 BSPRE(2) [NEXT ONE TO TRY 10 5?F2 ADDSKIP I516A,ADLFBL 16 5?YL FREEBACK 7,5 [FREE OLD BLOCK 9 5#D= BRN RGBACK 5 5#XW OKBSHO 8 5*CG ADX 6 FX1 7 5*X6 EXIT 6 0 4 5BBQ # 4 5BWB # 15 5CB2 # S/R TO SEEK FULLB. ON EXIT X2 -> FCB 4 5CTL # 6 5D*= SEEKFULLB 6 5DDB ...#SKI IFS 9 5DHG ... SFULLB 2,1,(7) 7 5DLL ...#SKI IFS<1$1 4 5DPQ ...( 9 5DSW LDX 1 FPTR(2) 5 5F#G SKFULLB 9 5FS6 LDX 1 FPTR(1) 9 5G?Q BXE 1 CXFI,(7) 9 5GRB LDX 0 ATYPE(1) 11 5H?2 BXE 0 FILEPLUSFCB,(7) 8 5HQL SMO FX1 11 5J== BXU 0 SFULLB,SKFULLB 9 5JPW LDX 0 A1+1(1) 11 5K9G BXU 0 BSPRE(2),SKFULLB 4 5KF# ...) 7 5KP6 EXIT 7 1 4 5L8Q # 6 5LNB SEEKBLOCK 21 5M82 [THIS SUBROUTINE WILL GIVE A POINTER IN X1 TO THE USAGE BLOCK OF B.S. 20 5MML [BLOCK CURRENTLY BEING READ AND READ IT DOWN FROM B.S. IF NECESSARY 14 5N7= [IT ALSO CHECKS THAT THE FILE HAS BEEN READ 8 5NLW SBX 7 FX1 8 5P6G SMO FX2 15 5PL6 STO 7 AWORK1 [STORE LINK. 10 5Q5Q LDX 4 FREADBLOCK(3) 7 5QKB #SKI K6REWRITE 20 5R52 BNG 4 OFF [ERROR IF NOT READ ANY OF FILE 10 5RJL LDX 5 FREADWORD(3) 21 5S4= BPZ 5 SAMBL [J IF -> NOT TO END OF PREVIOUS BLOCK 7 5SHW #SKI K6REWRITE 4 5T3G ( 21 5TH6 LDN 0 FBLKS+1 [CHECK NOT MOVING BACK BEYOND START 14 5W2Q BXGE 4 0,NOTSTART [OF FILE 10 5WGB OFF GEOERR 1,BEG FILE 4 5X22 ) 5 5XFL NOTSTART 7 5X_= SMO 4 17 5YDW LDX 4 0(2) [PIC- UP BLOCK NUMBER 20 5YYG SFUB 1,4,1,NOLDFUB [1 J IF USAGE BLOCK NOT IN CASE 5 5_D6 YFRENULB 18 5_XQ CALL 4 VFREE [DEAL WITH SPENT BLOCK 5 62CB NOLFU 17 62X2 LDX 4 FREADBLOCK(3) [X4 CORRUPTED BY CALL 19 63BL SBN 4 1 [MOVE BLOCK -> BACK BY ONE 10 63W= STO 4 FREADBLOCK(3) 5 64*W SAMBL 7 64TG SMO 4 21 65*6 LDX 4 0(2) [PICK UP BLOCK NO OF REQUIRED BLOCK 20 65SQ SFUB 1,4,1,NOFUB [FIND ITS USAGE BLOCK IF IN CORE 4 66#B YFUB 21 66S2 BPZ 5 NONUFUB [J IF NO NEED TO RESET READ POINTER 8 67?L LDN 4 A1 5 67R= SBLMD 14 68=W SMO 4 [BLOCK 15 68QG LDX 0 FRH(1) [NEXT R.H. 16 69=6 BZE 0 YZE [J IF END OF BLOCK 15 69PQ BPZ 0 YPOS [J IF NOT DUMMY 14 6=9B LDEX 0 0 [9 BITS 15 6=P2 ADX 4 0 [STEP ON PTR. 18 6?8L BRN SBLMD [J BACK TO PICK UP R.H. 21 6?N= YPOS [STEP ON PTR & J BACK TO STEP ON PTR. 7 6#7W LDX 5 4 21 6#MG ADX 4 0 [TO PREVIOUS REC. & TO PICK UP NEXT. 8 6*76 BRN SBLMD 4 6*LQ YZE 21 6B6B BNG 5 YFRENULB [GO & FREE BLOCK IF NULL(FULL OF DUMM 10 6BL2 STO 5 FREADWORD(3) 5 6C5L NONUFUB 8 6CK= SMO FX2 16 6D4W LDX 7 AWORK1 [PICK UP LINK. 8 6DJG ADX 7 FX1 7 6F46 EXIT 7 0 5 6FHQ NOLDFUB 9 6G3B CALL 4 VEXITA 8 6GH2 BRN NOLFU 5 6H2L NOFUB 8 6HG= VARIADNR 2 10 6H_W ADDSKIP I516A,ADLRD 9 6JFG ... CALL 6 SFREAD 9 6KYB #SKI K6REWRITE<99$99 9 6LD2 TRACE 4,DINFUB 10 6LXL MHUNT 1,BSTB,BREAD 18 6MC= NAME 1,FILE,FURB [RENAME AS A USAGE BLOCK 14 6MWW CALL 7 SFSTACK [X3->FCA 8 6NBG PSTAC 2,3 15 6NW6 LDX 4 2 [X4->FSTACK. 8 6P*Q CHAIN 1,4 7 6PTB SMO 4 19 6Q*2 LDX 1 FPTR [X1-> TO USAGE BLOCK AGAIN 7 6QSL SMO 4 17 6R#= LDX 2 BPTR [X2-> TO FCB AGAIN 16 6RRW LDX 0 BSPRE(2) [SWAP ROUND B.S. 16 6S?G STO 0 BACK1(1) [HOME OF BLOCK 16 6SR6 SMO FREADBLOCK(3) [IN CASE IT HAS 14 6T=Q LDX 0 0(2) [CHANGED 9 6TQB STO 0 BACK2(1) 8 6W=2 BRN YFUB 4 6WPL # 4 6X9= # 4 6XNW # 17 6Y8G # THIS ROUTINE DEALS WITH BLOCK POINTED TO BY X1 17 6YN6 # CALLED BY X4,ON EXIT X3-> FCA,X2->FCB,X1-> FSTACK 5 6_7Q VFREE 21 72LL JBS VEXITA,2,BFCORE [EXIT IF 'LEAVE BLOCKS IN CORE' BIT S 9 736= LDX 0 ATYPE(1) 16 73KW BXE 0 FFSFUWB,UWRITE [J IF WRITE BLOCK 13 745G FREECORE 1 [FREE 10 74K6 ADDSKIP I516A,ADLFR 9 754Q BRN VEXITA 5 75JB UWRITE 8 7642 VARIADNW 2 8 76HL SBX 4 FX1 18 773= CHAIN 1,FX2 [CHAIN NEXT TO ACT BLK. 8 77GW LDX 2 FX2 9 782G LDX 6 AWORK4(2) 10 78G6 FILEAUTW 6,FAIL+FREE 10 78_Q ADDSKIP I516A,ADLWR 9 79FB #SKI K6REWRITE<99$99 9 79_2 TRACE 4,D WRITE 8 7=DL ADX 4 FX1 5 7=Y= VFREA 14 7?CW CALL 7 SFSTACK [X3->FCA 5 7?XG VEXITA 7 7#C6 PSTAC 1,3 8 7#WQ BFCBX 2,1 7 7*BB EXIT 4 0 4 7*W2 UP 5 7B*L UP 4 7BT= # 4 7C#W # 4 7CSG [ 18 7D#6 REWRITE [REWRITE ENTRY,N/Z DEPTH. 4 7DRQ [ 21 7F?B CALL 7 PARAPOINT [X6=DEPTH,X3->FCA,X2->FCB,X1->FSTACK 9 7FR2 BRN MERGERWR 4 7G=L [ 18 7GQ= ZREWRITE [REWRITE ENTRY,ZERO DEPTH 4 7H9W [ 14 7HPG LDN 6 0 [DEPTH 19 7J96 CALL 7 NOWP1 [X3 -> FCA,X2->FCB,X1->FSTACK 5 7JNQ MERGERWR 7 7K8B #SKI K6REWRITE 4 7KN2 ( 20 7L7L JMBS SREW,3,BAMGEN,BAMCLEAN [CHECK FILE OPEN IN GENERAL 17 7LM= [OR CLEAN MODE. 10 7M6W GEOERR 1,CANTREWR 4 7MLG SREW 9 7N66 LDX 0 FBLMOD(2) 18 7NKQ SBN 0 FBLKS-A1 [GEOERR IF EMPTY FILE. 8 7P5B BZE 0 ZEN 4 7PK2 ) 10 7Q4L ADDSKIP I516A,IREWR 17 7QJ= CALL 7 SEEKBLOCK [SET X1 ->USAGE BLOCK 5 7R3W SCHLP 21 7RHG SMO 5 [J IF R.H OF RECORD TO BE REWRITTEN 15 7S36 LDX 0 FRH(1) [NEXT RECORD 15 7SGQ BZE 0 YENDB1 [J IF END. 16 7T2B BPZ 0 REN [J FI NOT DUMMY 16 7TG2 LDEX 0 0 [BOTTOM 9 BITS 7 7T_L #SKI K6REWRITE 9 7WF= BZE 0 ZGEOER3 15 7WYW ADX 5 0 [ADD TO PTR 8 7XDG BRN SCHLP 5 7XY6 YENDB1 7 7YCQ #SKI K6REWRITE 4 7YXB ( 15 7_C2 LDX 0 FREADBLOCK(3) [LAST BLOCK 14 7_WL SBX 0 FBLMOD(2) [OF FILE 14 82B= SBN 0 A1-1 [IF SO 16 82TW BZE 0 ZEN [GEOERR ENDFILE 4 83*G ) 20 83T6 LDN 0 1 [WE MAY HAVE STEPPED TO E.O.F & 21 84#Q ADS 0 FREADBLOCK(3) [THEN APPENDED, SO DO A ^PSEUDO^ STEP 18 84SB LDN 0 A1 [TO THE NEXT BLOCK & GO & 14 85#2 STO 0 FREADWORD(3) [GET IT 10 85RL ADDSKIP I516A,ARWFR 18 86?= CALL 4 VFREE [DEAL WITH SPENT BLOCK 9 86QW CALL 7 SEEKBLOCK 4 87=G REN 16 87Q6 STO 5 FREADWORD(3) [STORE REC PTR. 18 889Q CALL 7 SWITCHBLOCK [DO 'CAREFUL' UPDATING 10 88PB LDX 5 FREADWORD(3) 14 8992 MHUNTW 3,FILE,FWB [FIND FWB 7 89NL #SKI K6REWRITE 4 8=8= ( 9 8=MW LDX 0 A1+FRH(3) 9 8?7G ANDX 0 BRHMASK 8 8?M6 BNZ 0 WRHD 9 8#6Q LDEX 0 A1+FRH(3) 7 8#LB SMO 5 9 8*62 LDX 7 FRH(1) 7 8*KL LDEX 4 7 9 8B5= ANDX 7 BRHMASK 8 8BJW BNZ 7 WRHD 9 8C4G BXE 4 0,SAMEHD 4 8CJ6 WRHD 14 8D3Q GEOERR 1,FWBRECHD [OLD ONE 4 8DHB ) 5 8F32 SAMEHD 18 8FGL STO 1 GEN6 [STORE USAGE BLK POINTER. 16 8G2= ADX 1 5 [X1->CURRENT REC 18 8GFW NGS 2 GEN4 [NITIALIZE KEY LOCATION. 9 8G_G CALL 6 XKEYREC 15 8HF6 STO 7 GEN4 [STORE KEY 14 8HYQ LDX 1 3 [X1->FWB 16 8JDB ADN 1 A1 [X1->REC IN FWB 9 8JY2 CALL 6 XKEYREC 16 8KCL BRN TESTKEY [X7 CONTAINS KEY 16 8KX= NGS 2 7 [INDICATES NO KEY 5 8LBW TESTKEY 20 8LWG BXE 7 GEN4,YKEYSOK [J IF BOTH RECS HAVE SAME KEY 9 8MB6 GEOERR 1,ALTKEY 5 8MTQ YKEYSOK 8 8N*B LDX 1 GEN6 10 8NT2 NAME 1,FILE,FUWB 17 8P#L LDN 4 A1(3) [MOVING RECORD FROM 16 8PS= ADX 5 1 [MOVING RECORD TO 20 8Q?W SMO A1(3) [MOVE NUMBER OF WORDS IN RECORD 7 8QRG MOVE 4 0 19 8R?6 BS 2,BFALTR [SET 'REEL ALTERED' BIT. 5 8RQQ UP 4 8S=B # 4 8SQ2 # 4 8T9L [ 17 8TP= WIND [WIND ENTRY,N/Z DEPTH 4 8W8W [ 21 8WNG CALL 7 PARAPOINT [X6=DEPTH,X3->FCA,X2->FCBYX1->FSTACK 9 8X86 BRN MERGEWIND 4 8XMQ [ 18 8Y7B ZWIND [WIND ENTRY,ZERO DEPTH 4 8YM2 [ 7 8_6L LDN 6 0 19 8_L= CALL 7 NOWP1 [X3->FCA,X2->FCB,X1->FSTACK. 6 925W MERGEWIND 7 92KG #SKI K6REWRITE 4 9356 ( 21 93JQ JMBS SWIND,3,BAMREAD,BAMAPP,BAMGEN,BAMCLEAN [CHECK FILE OPEN 21 944B [IN READ,APPEND,GENERAL OR CLEAN MODE. 15 94J2 GEOERR 1,CANTWIND [ERROR IF NOT 4 953L ) 5 95H= SWIND 20 962W LDX 4 FBLMOD(2) [PICK UP -> TO LAST BLOCK OF FILE 8 96GG ADN 4 A1-1 8 9726 LDN 0 BSPRE 17 97FQ BXE 4 0,UPGO [J IF FILE IS EMPTY 18 97_B STO 4 FREADBLOCK(3) [TO POINT TO LAST BLOCK 21 98F2 LDX 0 CMOD(2) [IF APPEND -> IS POSITIVE JUST USE 19 98YL BNG 0 MUSTLOOK [THIS AS END OF FILE POINTER 10 99D= STO 0 FREADWORD(3) 5 99XW UP 5 9=CG MUSTLOOK 19 9=X6 LDN 0 1 [STEP O FBLOCK TW POINT TW 17 9?BQ ADS 0 FREADBLOCK(3) [AN ^UNUSED^ BL. NO. 15 9?WB NGS 0 FREADWORD(3) [END OF FILE^ 5 9#B2 UP 4 9#TL UPGO 10 9**= NGS 2 FREADWORD(3) 5 9*SW UP 4 9B#G # 4 9BS6 # 4 9C?Q [ 21 9CRB WRITBREAK [WRITEB. N/Z DEPTH PLUS BREAKIN PARAM 4 9D?2 [ 8 9DQL LDCT 0 #400 9 9F== BRN XLOBS1 4 9FPW [ 21 9G9G WRITANS [WRITEB. N/Z DEPTH PLUS ANSWER PARAME 4 9GP6 [ 8 9H8Q LDCT 0 #200 9 9HNB BRN XLOBS1 4 9J82 [ 21 9JML WRITFORCE [WRITEB. N/Z DEPTH PLUS FORCED PARAME 4 9K7= [ 8 9KLW LDCT 0 #100 9 9L6G BRN XLOBS1 4 9LL6 [ 17 9M5Q WRITEB [WRITEB. N/Z DEPTH 4 9MKB [ 7 9N52 LDN 0 0 5 9NJL XLOBS1 10 9P4= STO 0 ACOMMUNE1(2) 21 9PHW CALL 7 PARAPOINT [X6=DEPTH,X3->FCA,X2->FCB,X1->FSTACK 9 9Q3G BRN MERGEWRB 4 9QH6 [ 21 9R2Q ZWRITBREAK [WRITEB. ZERO DEPTH PLUS BREAKIN PARA 4 9RGB [ 8 9S22 LDCT 0 #400 9 9SFL BRN XLOBS2 4 9S_= [ 21 9TDW ZWRITANS [WRITEB. ZERO DEPTH PLUS ANSWER PARAM 4 9TYG [ 8 9WD6 LDCT 0 #200 9 9WXQ BRN XLOBS2 4 9XCB [ 21 9XX2 ZWRITFORCE [WRITEB. ZERO DEPTH PLUS FORCED PARAM 4 9YBL [ 8 9YW= LDCT 0 #100 9 9_*W BRN XLOBS2 4 9_TG [ 17 =2*6 ZWRITEB [WRITEB. ZERO DEPTH. 4 =2SQ [ 7 =3#B LDN 0 0 5 =3S2 XLOBS2 10 =4?L STO 0 ACOMMUNE1(2) 15 =4R= LDN 6 0 [ZERO DEPTH 19 =5=W CALL 7 NOWP1 [X3 ->FCA,X-->FCB,X1->FSTACK. 5 =5QG MERGEWRB 7 =6=6 #SKI K6REWRITE 4 =6PQ ( 21 =747 ... JMBS SWRITE,3,BAMWRITE,BAMGEN,BAMAPP [CHECK FILE OPEN IN WR 3 =7BJ ... 18 =7P2 [OR GENERAL MODE. 4 =88L WRAP 15 =8N= GEOERR 1,CAN'TAPP [ERROR IF NOT 5 =97W SWRITE 4 =9MG ) 10 =9RC ... JBS WRAP,3,BACOMM 13 =9X# ...[ ERROR IF FILE OPEN IN COMMUNE MODE 15 ==39 ...[ N.B. THIS CAN ONLY HAPPEN WITH *FH PERIS 19 ==76 LDN 0 #77 [B18-23 OF FINFC NON-ZERO, 18 ==LQ ANDX 0 FINFC(2) [IMPLIES INDEXED FILE. 15 =?6B BZE 0 NOTINDEX [ERROR IF SO. 10 =?L2 GEOERR 1,INDEXED! 5 =#5L NOTINDEX 7 =#K= LDN 0 2 9 =*4W NGS 0 CMOD(2) 10 =*JG ADDSKIP I516A,IWRIT 18 =B46 LDX 5 FBLMOD(2) [LENGTH OF FCB BEING USED 7 =BHQ LDX 0 5 21 =C3B SBN 0 FBLKS-A1 [NUMBER OF BLOCKS IN FILE BEING USED 17 =CH2 BXU 0 FSIZE(2),NOTFULL [J IF FILE NOT FULL 17 =D2L [THIS SECTION DEALS WITH PROCEEDURE WHEN FILE IS FULL 9 =DG= #SKI K6REWRITE>99-99 11 =D_W TRACE FLOC1(2),FILEFULL 9 =FFG SETREP FILEFULL 5 =F_6 UPPLUS 7 =GDQ UPPLUS 1 4 =GYB XBRK 5 =HD2 UP 5 =HXL NOTFULL 8 =JC= LDX 2 FX2 14 =JWW LDX 6 AWORK4(2) [DEPTH 20 =KBG APPCUBS XBRK,3 [ARE WE ALLOWED ANY MORE BLOCKS? 14 =KW6 TESTREPN OK,UPPLUS [J IF NOT 8 =L*Q CALL 7 NOWP 11 =LTB BXGE 5 FUSEBL(2),NEWFCB 20 =M*2 STOZ 7 [INDICATES NOT LENGTHENING FCB. 20 =MSL ADN 5 1 [ADD ONE TO LENGTH OF FCB USED 8 =N#= BRN UPFCB 5 =NRW NEWFCB 10 =P?G LDX 5 ALOGLEN(2) 7 =PR6 ADN 5 1 7 =Q=Q LDX 3 2 14 =QQB ALTLEN 3,5 [ALTLEN FCB 18 =R=2 CALL 6 SGETBACK [GET A B.S.BLOCK(IN ACC 5) 9 =RPL SMO FBLMOD(2) 17 =S9= STO 5 A1(2) [STORE NEW BLOCK IN FCB 19 =SNW ... LDX 7 6 [SET 'LENGTHENING FCB' SWITCH 7 =T8G LDN 5 1 9 =TN6 ADS 5 FUSEBL(2) 9 =W7Q ADX 5 FBLMOD(2) 5 =WMB UPFCB 21 =X72 MBS 2,BFALTB,BFALTR [SET BITS FOR BLOCKS AND FILE ALTERED 15 =XLL MHUNT 3,FILE,FWB [FIND THE FWB 7 =Y6= #SKI K6REWRITE 4 =YKW ( 10 =_5G LDX 0 ALOGLEN(3) 17 =_K6 BXGE 0 BSBS,NOTSHORT [J IF FWB LONG ENOUGH 5 ?24Q WRITERR 10 ?2JB GEOERR 1,FWBSHORT 4 ?342 ) 5 ?3HL NOTSHORT 8 ?43= SMO FX2 9 ?4GW LDX 6 AWORK4 19 ?52G JBC NOTCARE,2,BFCARE [J IF NOT A 'CAREFUL' FILE. 18 ?5G6 BZE 7 SETBIT [J IF FCB NOT LENGTHENED. 9 ?5_Q LDX 0 FBLMOD(2) 10 ?6FB SBN 0 FBLKS-A1-1 20 ?6_2 MAPBIN 0,6 [INSERT BIT AT END(I.E APPEND BIT 9 ?7DL BRN XPOINT 5 ?7Y= SETBIT 9 ?8CW LDX 0 FBLMOD(2) 10 ?8XG SBN 0 FBLKS-A1-1 8 ?9C6 MAPBSE 0,2 5 ?9WQ XPOINT 13 ?=BB CALL 7 NOWP [PTRS. 10 ?=W2 MHUNT 3,FILE,FWB 5 ??*L NOTCARE 20 ??T= STO 5 FBLMOD(2) [WE CANT UPDATE FBLMOD UNTIL NOW 21 ?##W [BECAUSE OF COPYFILE(MAPBIN &GETBAX 21 ?#SG [COORDINATE). WE MUST ALSO RENAME WRI 21 ?*#6 [BLOCK A FILE/FUWB WHEN WE B/WRITE IT 9 ?*RQ SMO FBLMOD(2) 21 ?B?B LDX 7 A1-1(2) [PICK UP BLOCK NO.(WHICH MAX HAVE CHA 18 ?BR2 STO 7 BACK2(3) [OVER THE COORDINATION ) 7 ?C=L #SKI K6REWRITE 4 ?CQ= ( 8 ?D9W BPZ 7 OKBSA 10 ?DPG GEOERR 1,BACKADDR 5 ?F96 OKBSA 4 ?FNQ ) 19 ?G8B LDX 0 BSPRE(2) [OTHER GALF OF B.S.HOME PAIR 9 ?GN2 STO 0 BACK1(3) 9 ?H7L LDX 7 FBLMOD(2) 9 ?HM= SBX 7 FSIZE(2) 7 ?J6W VARIADNW 2 9 ?JLG LDX 4 FBLMOD(2) 8 ?K66 ADN 4 A1-1 8 ?KKQ CHAIN 3,FX2 10 ?L5B NAME 3,FILE,FUWB 11 ?LK2 FILEAUTW 6,FAIL+FREE,,4 11 ?M4L SBN 7 AF2-A1+FNEARLY 9 ?MJ= BPZ 7 SETFNRP 8 ?N3W SETREP OK 9 ?NHG BRN UPPLUS 5 ?P36 SETFNRP 10 ?PGQ SKIPTRACE 99,7,FNEARLY 9 ?Q2B SETREP FNEARLY 9 ?QG2 BRN UPPLUS 4 ?Q_L # 4 ?RF= # 4 ?RYW [ 19 ?SDG SUBS [SUBSTITUTE ENTRY,N/Z DEPTH 4 ?SY6 [ 21 ?TCQ CALL 7 PARAPOINT [X6=DEPTH,X3->FCA,X2->FCB,X1->FSTACK 9 ?TXB BRN MERGESTW 4 ?WC2 [ 19 ?WWL ZSUBS [SUBSTITUTE ENTRY,ZERO DEPTH. 4 ?XB= [ 14 ?XTW LDN 6 0 [DEPTH 20 ?Y*G CALL 7 NOWP1 [X3 ->FCA,X2 ->FCB,X1 ->FSTACK 5 ?YT6 MERGESTW 7 ?_#Q #SKI K6REWRITE 4 ?_SB ( 21 #2#2 JMBS STWOK,3,BAMREAD,BAMAPP,BAMWRITE,BAMGEN [CHECK FILE OPEN 21 #2RL [IN READ,APPEND,WRITE OR GENERAL MODE 10 #3?= GEOERR 1,CANTSUBS 5 #3QW STWOK 4 #4=G ) 10 #4Q6 ADDSKIP I516A,ISTPW 16 #59Q CALL 7 SEEKBLOCK [X1->USAGE BLOCK. 16 #5PB CALL 7 SWITCHBLOCK [CAREFUL UPDATING 5 #692 UP 4 #6NL # 10 #78= MENDAREA 50,K99REWRITE 4 #7MW #END 8 ____ ...00021622000100000000