14 22FL ... SEG CLOSEFUL,860,SECTION FILE,CLOSE 4 24XQ # 15 257J ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 9 25CB '170 7 BRIEFPM 11 25X2 SEGENTRY K1CLOSEFUL,XENT1 4 26BL # 12 26W= # UPDATES THE DIRECTORY ENTRY 20 27*W # IF NO BLOCK NUMBERS HAVE CHANGED, JUST UPDATE THE NAME RECORD, 21 27TG # FREE ANY BS WE MAY HAVE BEEN GIVEN AND CLOSE THE DIRECTORY 20 28*6 # IF ONE BLOCK ONLY HAS CHANGED, THIS IS THE LAST STAGE OF THE 21 28SQ # CAREFUL UPDATE - WE DO A NON-AUTONOMOUS FILE WRITE FOR THE 21 29#B # NEW DIRECTORY ENTRY, FREE THE BS, DERING THE TRAILING FILES, 21 29S2 # RELEASE ANY CLOSESET WAITERS ON THESE FILES AND CLOSE THE 9 2=?L # DIRECTORY 21 2=R= # IF MORE THAN ONE BLOCK NUMBER HAS CHANGED, WE REWRITE THE BLOCKS 21 2?=W # RECORD BY A STEPWRITE, AND THEN GO ACROSS TO K8CLOSEDIR TO 14 2?QG # CLOSE THE DIRECTORY JUST UPDATED 20 2#=6 # IF THE LENGTH OF THE BLOCKS RECORD HAS ALTERED, WE REWRITE BY 18 2#PQ # INSERT/REPLACE BEFORE GOING ACROSS TO K8CLOSEDIR 4 2*9B # 9 2B8L MASKWRIT #57770000 20 2BBD ...MASKRV #177777 [BOTTOM 16 BITS =SIZE OF FEGMTRV 16 2BDB ...VALBIT16 65536 [=2**16 OR BIT 7 9 2BH? ...N4AST 4H**** 4 2DLQ SINX 8 2F6B #HAL FI+FINDEXF,0 4 2F?J ...# 4 2FDQ ...# 5 2FL2 OLDFCB 7 2G5L LDN 0 1 17 2GK= SFCAB 0,2,2 [X2->FCB AT LEVEL 1 7 2H4W EXIT 7 0 4 2H#N ...# 5 2HJG OLDFCAB 7 2J46 LDN 0 1 19 2JHQ SFCAB 0,3,2 [X2->FCB X3->FCA AT LEVEL 1 7 2K3B EXIT 7 0 4 2K?8 ...# 5 2KH2 TOPFCAB 16 2L2L SFCAB ,3,2 [X2->FCB X3->FCA 7 2LG= EXIT 7 0 4 2L_W # 16 2MFG # FIND THE FMAPP AFTER THE BLOCK ADDRESSED BY X2 5 2M_6 SFMAPP 9 2NDQ ... LDX 0 FFSFMAPP 5 2PD2 XAGMAP 9 2PXL LDX 2 FPTR(2) 17 2QC= ... BXU 0 ATYPE(2),XAGMAP [J IF FMAPP NOT FOUND 7 2RBG EXIT 7 0 4 2RL# ...# 16 2RW6 # FIND FINDEXF BLOCK AFTER BLOCK ADDRESSED BY X2 5 2S*Q SFINX 8 2STB SMO FX1 8 2T*2 LDX 0 SINX 4 2TSL XINX 9 2W#= LDX 2 FPTR(2) 16 2WRW ... BXU 0 ATYPE(2),XINX [J IF NOT FINDEXF 7 2XR6 EXIT 7 0 4 2Y=Q # 20 2YQB # LOOK AT THE FILE BEING CLOSED (AT LEVEL 1) AND IF SOMEONE IS 21 2_=2 # COPYING IT, OR WRITING TO IT UNCLEANLY, CLOSE THE DIRECTORY AND 21 2_PL # WAIT UNTIL THEY'VE FINISHED. THEN GO BACK TO CLOSEONE TO REOPEN 12 329= # THE DIRECTORY AND TRY AGAIN 4 32NW [ 19 338G [ UNCLEAN ACCESSORS, NOT MACROISED CODE, SHOULD BE! 6 33N6 WRITCLOSE 13 347Q JMBS XWT,2,BFMCOP,BFDCF,BFGDR 9 34MB LDX 0 CTOPEN(2) 8 3572 SMO FX1 9 35LL ANDX 0 MASKWRIT 19 366= BZE 0 (6) [EXIT UNLESS OPEN FOR WRITING 8 36KW STO 2 GEN2 8 375G STO 6 GEN6 8 37K6 LDCT 6 #004 18 384Q CALL 7 SEARCHFCA [LOOK FOR A CLEAN OPENER 17 38JB BRN XCLEAN [DONT WAIT IF CLEAN 8 3942 LDX 2 GEN2 8 39HL LDX 6 GEN6 8 3=3= ... BRN XWT 5 3=GW XCLEAN 8 3?2G LDX 2 GEN2 8 3?G6 LDX 6 GEN6 7 3?_Q EXIT 6 0 4 3#FB XWT 10 3#_2 BS 2,BFCLEANW 13 3*DL [ GOING TO WAIT IN STYLE CLOSEFREE 7 3*Y= LDX 1 2 16 3BCW ... TRACEIF K6CLOSEFUL,99,299,FLOC1(2),WT CLFR 13 3CC6 LONGSET CLOSEFREE,XBRK,BACK2(1) 9 3CWQ MFREEW FILE,ENT 20 3DBB CLOSETOP [CLOSE THE DIRECTORY FOR THE WAIT 7 3F*L LONGCOOR 19 3FT= ACROSS CLOSEONE,3 [TO OPEN THE DIRECTORY AGAIN 4 3TJ= # 4 4BM6 # 21 4C6Q # LOOK FOR AN FCA, IN THE FSTACK CONTAINING THE FCA ADDRESSED BY X3, 19 4CLB # WITH THE SAME BIT SET IN FGENERAL1 AS IN X6, AND LEAVE ITS 8 4D62 # ADDRESS IN X2 6 4DKL SEARCHFCA 10 4F5= SMO FBACKPOINT(3) 8 4FJW LDN 2 0(3) 18 4G4G LDEX 4 ARINGNO(2) [PICK COUNT OF ELEMENTS 18 4GJ6 ADN 2 A1 [SET X2-> FIRST ELEMENT 5 4H3Q SFCAPT 7 4HHB TXU 2 3 15 4J32 BCC OURFCA [J.IF OWN FCA 10 4JGL LDX 0 FGENERAL1(2) 17 4K2= ANDX 0 6 [CHECK AGAINST MASK 16 4KFW BNZ 0 (7) [AND EXIT IF FIT 5 4K_G OURFCA 17 4LF6 ADN 2 FELLEN [STEP TO NEXT ELEMENT 21 4MDB BCT 4 SFCAPT [EXIT +1 WHEN NOMORE FCAS IN STACK 7 4MY2 EXIT 7 1 4 4NCL # 21 4NX= # ANY FULLB'S BEHIND THE FMAPP ADDRESSED BY X6 ARE RECHAINED AFTER 20 4PBW # THE FMAPP ADDRESSED BY X5, OR AFTER THE FIRST FULLB IF PRESENT 6 4PWG MOVEFULLBS 20 4QB6 ... BXE 6 5,(7) [EXIT IF SAME FMAPP - SAME FILE 9 4QTQ ... LDX 4 FFSFULLB 7 4S#L SMO 5 8 4SS= LDX 2 FPTR 18 4T?W ... BXU 4 ATYPE(2),MVFLBS [J IF NO CURRENT FULLB 7 4W?6 LDX 5 2 5 4X=B MVFLBS 16 4XQ2 SMO 6 [X6->OLD FMAPP 16 4Y9L LDX 2 FPTR [X2->NEXT BLOCK 20 4YP= ... BXU 4 ATYPE(2),(7) [EXIT IF NO MORE FULLBS TO MOVE 14 4_NG CHAIN 2,5 [A FULLB 9 5286 BRN MVFLBS 4 52MQ # 18 537B # UPDATE THE COPY OF THE NAME RECORD IN THE ENT BLOCK 20 53M2 [ IF THE FOLLOWING CONDITIONS THEN EXIT 0+ => NAME RECORD UPDATE 10 546L [ NO OF BLOCKS CHANGED 7 54L= [ UWB SET 8 555W [ REVERED FILE 21 55KG [ NOT A VSF & REEL ALTERED IE UPDATE DATE WRITTEN CAREFULLY, THIS 10 5656 [ IS VITAL INFORMATION 18 56JQ # WE MAKE THE FOLLOWING CHANGES TO THE ENT AND THE FCB: 21 574B # RESET THE AVERAGE ACCESS TIME, DATE AND TIME LAST ACCESSED 20 57J2 # AND, IF WRITTEN TO, THE DATE AND TIME LAST WRITTEN 13 583L # AND THE TO-BE-DUMPED BIT 21 58H= # RESET EINF1 B4,5, EENDBUCK, EVERSION AND PUT FSIZE IN EINF3 21 592W # UNSET COMM B1,2,18,22 - BLOCKS ALT, FILE ALT, AUTOCLOSE-ON- 14 59GG # -THIS-FILE AND DONT-DUMP BITS 17 5=26 # UNSET FCOMM B20 - THE NOT-A-SYSTEM-CLOSE BIT 21 5=FQ # UNSET FGENERAL1 B17 - SHOWS THAT THE NAME REC.UPDATE IS DONE 21 5=_B # UNSET UNCLEAN WB'S IN COMM AND EINF1, AND CHECK CONSISTENCY 14 5??Q ...# CLEAR FEGMTRV IF NECESSARY 5 5?F2 UDATEDIR 11 5?YL MHUNTW 2,FILE,FINTER3 10 5#D= MHUNTW 3,FILE,ENT 15 5#QL ... TOPFCB 1 [DIR'S FCB 8 5#XW SMO A1(2) 8 5*CG LDCT 6 #776 7 5*X6 ADN 6 1 7 5BBQ LDN 0 1 17 5BWB ... SFCAB 0,2,2 [X2-> FCB AT DEPTH 1 9 5CB2 TXU 6 ECOPS(3) 8 5CTL BCS XCARE 13 5D*= JMBS XCARE,3,BEUWB,BEREVERE 11 5DSW JBS XNOTCARE,2,BFVSF 11 5F#G JBC XNOTCARE,2,BFALTR 5 5FLX ...XCARE 7 5F_# ... SBN 7 1 5 5G?Q XNOTCARE 9 5GRB ERS 6 ECOPS(3) 9 5H?2 ERX 6 ECOPS(3) 17 5HQL ERS 6 ECOPS(3) [OLD & NEW SWITCHED. 8 5J== SMO FX2 16 5JPW STO 6 AWORK3 [KEEP OLD ECOPS. 4 5K9G # 9 5KP6 # CALCULATE EAVACC 9 5LNB LDX 0 EAVACC(3) 20 5M82 BNZ 0 NZEAVACC [J IF EAVACC SET AT LAST CLOSE 10 5MML LDX 0 EWRITDAY(3) 20 5N7= BZE 0 SETEAVACC [J. NOT PREVIOUSLY WRITTEN TO. 9 5NLW LDX 0 GMTNOW 17 5P6G SBX 0 EGMTLA(3) [TIME BETWEEN ACESSES 9 5PL6 BRN TESTZERO 18 5Q5Q [ EAVACC= TIME BETWEEN ACESSES FOR 2ND ACCESS. 5 5QKB NZEAVACC 21 5R52 [ EAVACC= EXP FNC. OF OLD EAVACC & TIME SINCE LAST ACCESS. 9 5RJL LDX 0 EAVACC(3) 7 5S4= ADX 0 0 14 5SHW ADX 0 EAVACC(3) [3XEAVACC 9 5T3G SBX 0 EGMTLA(3) 18 5TH6 ADX 0 GMTNOW [+TIME BETWEEN ACCESSES. 17 5W2Q SRL 0 2 [= AVE ACCESS TIME 5 5WGB TESTZERO 9 5X22 BNZ 0 SETEAVACC 18 5XFL LDN 0 1 [1 UNIT OF GMT = EAVACC 6 5X_= SETEAVACC 9 5YDW STO 0 EAVACC(3) 19 5YH# ... LF 3,FEGMTRV,0 [GMT AT TIME OF LAST RETRIEVE 15 5YJ6 ... BZE 0 NOTRET [J IF UNSET 18 5YJY ... LDX 6 GMTNOW [THE CURRENT VALUE OF GMT 8 5YKQ ... SMO FX1 18 5YLJ ... ANDX 6 MASKRV [MASK OFF BOTTOM 16BITS 20 5YMB ... BXGE 6 0,NOVERF [J IF 16 BITS HAVE NOT OVERFLOWN 21 5YN8 ... SMO FX1 [COPE WITH OVERFLOW OF 16 BIT FIELD 21 5YP2 ... ADX 6 VALBIT16 [BY ADDING VALUE OF THE OVERFLOW BIT 5 5YPS ...NOVERF 18 5YQL ... SBX 6 0 [GET GMT SINCE RETRIEVE 7 5YR3 ... LDX 0 6 21 5YRD ... SEGENTRY K99CLOSEFUL [SEGENTRY FOR RETAINRV RESTORE TIME M 17 5YS= ... SBN 0 150 [DEFAULT 150 MINUTES 21 5YT4 ... BNG 0 NOTRET [J IF STILL WITHIN PROTECTED PERIOD 17 5YTW ... FC 3,FEGMTRV [ELSE CLEAR THE FIELD 5 5YWN ...NOTRET 8 5YYG LDX 0 EDATE 17 5_D6 STO 0 EDLA(3) [DATE LAST ACCESSED 9 5_XQ LDX 0 CLEANCT 17 62CB STO 0 ETLA(3) [TIME LAST ACCESSED 9 62X2 LDX 0 GMTNOW 9 63BL STO 0 EGMTLA(3) 11 63W= JBC NOTDUMP,2,BFALTR 8 64*W LDX 0 EDATE 17 64TG STO 0 EWRITDAY(3) [DATE LAST WRITTEN 9 65*6 LDX 0 CLEANCT 17 65SQ STO 0 EWRITTIME(3) [TIME LAST WRITTEN 11 66GB ... JBS NOTDUMP,2,BFDIR 9 66HB ... LDX 0 ELAN(3) 8 66JB ... SMO FX1 8 66KB ... SBX 0 N4AST 10 66LB ... BZE 0 USERJOBLIST 17 66MB ... BS 3,BEDUMP [IN ENT BLOCK FOR SUP 17 66NB ... JBC NODUMPER,,BDUMPING [IF DUMPER NOT ACTIVE 20 66PB ... HUNTMISB 3,FI,FDUMPCOM [DUMPER CLOSE COMMUNICATION BLOCK 9 66QB ... LDX 5 FUSE1(1) 9 66RB ... LDX 6 FUSE2(1) 9 66SB ... LDX 0 FUSE1(1) 11 66TB ... TXU 0 FDUMPUSER+2(3) 11 66WB ... TXU 6 FDUMPUSER+1(3) 10 66XB ... TXU 5 FDUMPUSER(3) 10 66YB ... BCS NSTDUMCOMBT 10 66_B ... BS 3,BFDUMPCOM 6 672B ...NSTDUMCOMBT 10 673B ... MHUNTW 3,FILE,ENT 5 674B ...NODUMPER 12 675B ... MBS 1,BFDUMP,BFDIRUPDATE 10 676B ... BRN NOMOREFNSAD 6 678B ...USERJOBLIST 9 679B ... LDX 0 ECOPS(3) 8 67=B ... SRL 0 15 17 67?B ... BZE 0 UJLEMPTY [IF JOBLIST IS EMPTY 13 67#B ... JBS NOMOREFNSAD,1,BFJOB4ASTR 13 67*B ... MBS 1,BFJOB4ASTR,BFDIRUPDATE 10 67BB ... BRN NOMOREFNSAD 5 67CB ...UJLEMPTY 13 67DB ... JBCC NOMOREFNSAD,1,BFJOB4ASTR 10 67FB ... BS 1,BFDIRUPDATE 10 67GB ... BRN NOMOREFNSAD 5 67HB ...NOTDUMP 13 67JB ... JBCC NOUPDATEDIR,2,BFDIRUPDATE 11 67KB ... JBC M1,2,BFDIRBELOW 10 67LB ... BS 3,BEDIRBELOW 8 67MB ... BRN M2 4 67NB ...M1 10 67PB ... BC 3,BEDIRBELOW 4 67QB ...M2 10 67RB ... JBC M3,2,BFDUMP 9 67SB ... BS 3,BEDUMP 4 67TB ...M3 11 67WB ... JBC M4,2,BFJOB4ASTR 10 67XB ... BS 3,BEJOB4ASTR 8 67YB ... BRN M5 4 67_B ...M4 10 682B ... BC 3,BEJOB4ASTR 4 683B ...M5 11 684B ... JBC M6,2,BFALLINCS 10 685B ... BS 3,BEALLINCS 4 686B ...M6 6 687B ...NOUPDATEDIR 6 688B ...NOMOREFNSAD 12 68=W MBC 3,BEMULT,BEFOPENER 9 68QG LDX 0 COMM(2) 21 69=6 ANDN 0 #14 [STREAM-MEMBER AND OPEN-TO-ERASE BITS 7 69PQ SRC 0 8 20 6=9B ORS 0 EINF1(3) [AND REPLACE BY B20-21 FROM COMM 10 6=P2 LDX 0 FENDBUCK(2) 10 6?8L STO 0 EENDBUCK(3) 10 6?N= LDX 0 FVERSION(2) 10 6#7W STO 0 EVERSION(3) 16 6#*4 ... LDX 0 FETM(2) [TYPE-MODE WORD 15 6#G= ... STO 0 ETM(3) [FCB=>DIR ENT 9 6#MG LDX 0 FSIZE(2) 9 6*76 DEX 0 EINF3(3) 12 6*?3 ... JBC NOTABD,2,BFCLOSEAB 10 6*BY ... BS 3,BECLOSEAB 5 6*GT ...NOTABD 14 6*SK ... MBC 2,BFALTB,BFALTR,BFSOLE,BFAUTO 12 6B6B JBSC XINDALT,2,BFINDEXALT 9 6BL2 LDX 0 FINFC(2) 8 6C5L ANDN 0 #77 17 6CK= ... BZE 0 XINDALT [NO CFINDEXF BLOCK 19 6D4W MFREE FI,CFINDEXF [FREE IF INDEX NOT ALTERED. 5 6DJG XINDALT 9 6JFG LDX 0 CTOPEN(2) 8 6J_6 SMO FX1 9 6KDQ ANDX 0 MASKWRIT 10 6KYB ADX 0 FWAITCOUNT(2) 21 6LD2 BNZ 0 NOUNCL [REMOVE UWB IF NO WRITERS OR WAITERS 11 6LHX ... JBCC NREVERE,2,BFREV 17 6LMS ... BC 3,BEREVERE [CLEAR 'REVERE' BIT 5 6LRP ...NREVERE 10 6LXL JBCC SAME,2,BFUWB 11 6MC= JBSC NOUNCL,3,BEUWB 11 6MWW GEOERR BRIEFPM,CLEAN??? 4 6NBG SAME 11 6NW6 JBC NOUNCL,3,BEUWB 11 6P*Q GEOERR BRIEFPM,UNCLEAN 5 6PTB NOUNCL 7 6P_? ... LDN 0 1 17 6Q58 ... SFCA 0,1 [X1-> FCA AT LEVEL 1 20 6Q7R ... BC 1,BASOLE [CLEAR 'AUTONOMOUS CLOSE HAS FILE 15 6Q=B ... [ OPEN' BIT 7 6Q*2 EXIT 7 1 4 6S?G # 16 6SR6 # ENTRY FROM CLOSEONE TO UPDATE THE DIRECTORY 21 6T=Q # THE DIRECTORY IS OPEN AT LEVEL 0, THE FILE BEING CLOSED AT LEVEL 1 21 6TQB # AND THERE COULD BE CONVERTED FILES AT HIGHER LEVELS, RINGED 14 6W=2 # IN UNTIL THE CAREFUL UPDATE ENDS 5 6WPL XENT1 7 6XNW STEPAGAIN 19 6Y8G STO 3 AWORK4(2) [STORE POINTER TO NAME REC. 20 6YN6 ... CALL 7 OLDFCAB [RELOCATE FCB (X2->FCB,X3->FCA AT 15 6_7Q ... [ DEPTH 1) 21 7272 CALL 6 WRITCLOSE [WAIT IF THERE'S A WRITER OR COPIER 4 72LL # 20 736= # MOVE THE FILE'S BLOCK NUMBERS INTO THE FINTER3, CHECKING FIRST 20 73KW # THAT THE FINTER3 IS STILL THE RIGHT LENGTH - THE FCB MAY 19 745G # HAVE CHANGED IN LENGTH OVER THE LAST COORDINATION 21 74K6 # THIS IS THE NEW BLOCKS RECORD. FROM NOW ON ANY CHANGES IN THE FCB 16 754Q # WILL HAVE TO BE TAKEN CARE OF BY ANOTHER CLOSE 4 75JB # 11 7642 MHUNTW 3,FILE,FINTER3 9 76HL LDX 4 FBLMOD(2) 10 773= SBN 4 FBLKS-A1-2 10 77GW TXU 4 ALOGLEN(3) 20 782G BCC OKBLKS [J IF FINTER STILL RIGHT LENGTH 14 78G6 ... TRACEIF K6CLOSEFUL,99,299,4,ALT FIN3 15 79FB ALTLEN 3,4 [ALTER IF NOT 16 79_2 HUNTW 3,FI,CFINDEXF [IF EXIST IN THE 20 7=DL ... BNG 3 XENT1 [ACTIVITY CHAIN ITS LENGTH WILL 19 7=Y= ADN 4 1 [HAVE CHANGED AS WELL AS THE 5 7?CW NOWALT 8 7?XG ... ALTLEN 3,4 8 7#C6 ... BRN XENT1 5 7#WQ OKBLKS 19 7*BB STO 4 A1(3) [STORE BLOCKS RECORD HEADER 8 7*W2 ADN 3 A1+1 8 7B*L ADN 2 BSPRE 7 7BT= SMO 4 18 7C#W MOVE 2 511 [SET UP THE BLOCKS RECORD 4 7CSG # 21 7D#6 # IF THIS IS AN INDEXED FILE AND THE INDEX HAS BEEN ALTERED, COPY 21 7DRQ # THE FINDEXF IN THE FILE CHAIN TO THAT IN THE ACTIVITY CHAIN 4 7F?B # 10 7FR2 HUNTW 3,FI,CFINDEXF 16 7G=L BNG 3 NFIN [J NOT INDEXED. 9 7GQ= CALL 7 OLDFCB 11 7H9W JBC NFIN,2,BFINDEXALT 8 7J96 CALL 7 SFINX 19 7JNQ LDN 2 A1(2) [X2->FINDEXF IN FILE CHAIN 20 7K8B ... LDN 3 A1(3) [X3->CFINDEXF IN ACTIVITY CHAIN 9 7KN2 SMO FRH(2) 7 7L7L MOVE 2 0 4 7LM= NFIN 4 7M6W # 17 7MLG # PUT ANY SPARE BLOCKS IN A FULLB AND CHAIN IT AFTER 10 7N66 # THE DIRECTORY'S FMAPP 4 7NKQ # 21 7P5B CALL 7 OLDFCAB [X2->FCB, X3->FCA OF FILE AT LEVEL 1 8 7PK2 LDN 0 #20 19 7Q4L ANDX 0 FGENERAL2(3) [X0=1 IF THERE'S AN EMPTYB 9 7QJ= LDX 4 FUSEBL(2) 9 7R3W SBX 4 FBLMOD(2) 17 7RHG BNZ 4 SPARE1 [J IF SPARE BLOCKS 20 7S36 BZE 0 NOSPARE1 [J IF NO EMPTYB NOR SPARE BLOCKS 10 7SGQ MFREEW BSTB,EMPTYB 9 7T2B BRN NOSPARE2 5 7TG2 SPARE1 7 7T_L ADN 4 2 19 7WF= BNZ 0 SPARE2 [J IF SPARE BLOCKS AND EMPTYB 11 7WYW SETUPCORE 4,2,BSTB,EMPTYB 21 7XDG ... CALL 7 OLDFCAB [X2->FCB, X3->FCA OF FILE AT DEPTH 1 10 7XY6 BS 3,BAEMPTYB 8 7YCQ ... BRN XENT1 5 7YXB SPARE2 10 7_C2 MHUNTW 3,BSTB,EMPTYB 10 7_WL TXU 4 ALOGLEN(3) 20 82B= BCS NOWALT [J TO ALTLEN IF LENGTH CHANGED 10 82TW NAME 3,BSTB,FULLB 8 83*G STO 4 A1(3) 7 83T6 SBN 4 2 12 84#Q JBC NOTCAREFUL,2,BFCARE 17 84SB [ NOW UP-DATE FBITMOD IN THE FMAPP BLOCK. 19 85#2 [ RESET NO OF BLOCKS IN FILE IN THE FMAPP BLOCK. 19 85RL LDX 6 2 [COPY OF LEVEL 1 FCB ADDR. 15 86?= CALL 7 SFMAPP [X2-> FMAPP 14 86QW SMO 6 [X6->FCB 9 87=G LDX 0 FUSEBL 9 87Q6 SBN 0 FBLKS-A1 18 889Q STO 0 FBITMOD(2) [NO OF BLOCKS ALLOCATED. 16 88PB LDX 2 6 [RESET X2-> FCB1 6 8992 NOTCAREFUL 9 89NL LDX 0 BSPRE(2) 16 8=8= STO 0 A1+1(3) [FILE RESIDENCE 9 8=MW ADX 2 FBLMOD(2) 8 8?7G ADN 2 A1 8 8?M6 ADN 3 A1+2 7 8#6Q SMO 4 18 8#LB MOVE 2 0 [MOVE IN THE SPARE BLOCKS 15 8*62 SBN 3 A1+2 [X3->FULLB 7 8*KL LDX 6 3 20 8B5= CALL 7 TOPFCAB [X2->FCB OF DIRECTORY AT LEVEL 0 15 8BJW CALL 7 SFMAPP [X2->FMAPP 9 8C4G LDX 2 FPTR(2) 9 8CJ6 LDX 7 ATYPE(2) 9 8CRY ... TXU 7 FFSFULLB 18 8DHB BCC YFULLB [J IF FULLB AFTER FMAPP 9 8F32 LDX 2 BPTR(2) 5 8FGL YFULLB 21 8G2= CHAIN 6,2 [CHAIN AFTER FMAPP, OR FULLB IF THERE 17 8GFW CALL 7 OLDFCB [X2->FCB AT LEVEL 1 9 8G_G SBS 4 FUSEBL(2) 5 8HF6 NOSPARE2 21 8HYQ CALL 7 OLDFCAB [X2->FCB, X3->FCA OF FILE AT LEVEL 1 4 8JDB # 19 8JY2 # INDICATE, IN AWORK2, HOW MANY BLOCK NUMBERS HAVE CHANGED: 15 8KCL # IF CAREFUL, FBCOMM IN THE FMAPP HAS 18 8KX= # B22 SET IF MORE THAN ONE BLOCK HAS CHANGED 15 8LBW # B23 SET IF ONLY ONE HAS CHANGED 21 8LWG # IF NOT CAREFUL, AND BLOCKS ALT BIT SET, SET AS IF MORE THAN 11 8MB6 # ONE BLOCK CHANGED 21 8MTQ # REINITIALISE THE FMAPP AND GIVE ANY FULLB'S TO THE DIRECTORY, IF 13 8N*B # WE'RE CLOSING A CAREFUL FILE 5 8NT2 NOSPARE1 11 8P#L JBC NOMAP,2,BFCARE 17 8PS= CALL 7 SFMAPP [LOCATE FMAPP WITH X2 9 8Q?W LDX 0 FBCOMM(2) 7 8QRG ANDN 0 3 8 8R?6 SMO FX2 17 8RQQ STO 0 AWORK2 [KEEP FBCOMM B22,23 20 8S=B ERS 0 FBCOMM(2) [RECOVER AND INITIALISE FBCOMM 7 8SQ2 LDX 6 2 10 8T9L LDX 2 ALOGLEN(2) 17 8TP= SBN 2 FBITS-A1 [NO OF FBITS WORDS 16 8W8W BZE 2 MVBS [J IF NO FBITS 4 8WH? ...MORB 7 8WTN ... SMO 6 10 8X86 STOZ FBITS-1(2) 8 8XMQ BCT 2 MORB 4 8Y27 ...MVBS 7 8Y#J ... LDX 2 6 9 8YM2 LDX 2 FPTR(2) 9 8_6L ... LDX 4 FFSFULLB 9 8_L= TXU 4 ATYPE(2) 17 925W BCS MAPHAS [J IF NO BS TO MOVE 7 92KG TOPFCB 2 16 9356 CALL 7 SFMAPP [LOCATE NEW FMAPP 7 93JQ LDX 5 2 16 944B CALL 7 MOVEFULLBS [AND MOVE THE BS 9 94J2 BRN MAPHAS 5 953L NOMAP 8 95H= LDCT 0 #200 9 962W ANDX 0 COMM(2) 7 96GG SLC 0 3 8 9726 SMO FX2 19 97FQ STO 0 AWORK2 [B22 SET IF ANY BLOCKS ALT 5 97_B MAPHAS 17 98F2 CALL 7 UDATEDIR [UPDATE THE ENT BLOCK 18 98YL BRN NUMCHANG [J.IF ECOPS IS ALTERED 8 99D= LDX 2 FX2 9 99XW LDX 0 AWORK2(2) 7 9=CG ANDN 0 2 21 9=X6 BNZ 0 MANYALT [J IF MORE THAN ONE BLOCK NO CHANGED 21 9?BQ LDX 4 AWORK4(2) [POINTER TO NAME REC IN USAGE BLOCK 8 9?WB ADN 3 A1 9 9#B2 LDEX 1 FRH(3) 20 9#TL MOVE 3 0(1) [MOVE IN THE UPDATED NAME RECORD 7 9**= LDX 3 4 8 9*SW STEPREWRITE 9 9B#G LDX 0 AWORK2(2) 20 9BS6 BNZ 0 ONEALT [J IF ONLY ONE BLOCK NO.CHANGED 21 9C?Q [ NOTE THAT THE CASE WHERE A FILE THAT WAS OPEN NON-CAREFULLY BUT 21 9CRB [ IS NOW OPEN CAREFULLY, AND WAS PREVIOUSLY ALTERED IS CATERED FOR 8 9D?2 [ BY UPDATEDIR. 10 9FPW ACROSS CLOSEALT,1 5 9G9G NUMCHANG 10 9GP6 ACROSS CLOSEALT,2 5 9H8Q MANYALT 10 9HNB ACROSS CLOSEALT,3 5 9J82 ONEALT 10 9JML ACROSS CLOSEALT,4 4 9N52 XBRK 11 9NJL GEOERR BRIEFPM,CL BRKIN 4 9P4= ...# 4 9Q3G #END 8 ____ ...51557331000100000000