10 2263 ... SEG MTOBJ,8,FILE,OLP 18 22=4 ... SEGENTRY K1MTOBJ,Z1MTOBJ [RE-ENTRY FOR ALL PERIS 21 22B5 ... SEGENTRY K3MTOBJ,SETREPLY [ENTRY FROM MTSTART IF 1ST PERI IS 16 22G6 ... [ AN OPEN MODE 21 22L7 ... SEGENTRY K7MTOBJ,READINDEX [ENTRY FROM MTSTART & MATALO TO GET 19 22Q8 ... [ INDEX BLOCK INTO FILE CHAIN 4 22W9 ...[ 19 232= ...[ THIS SEGMENT IMPLEMENTS ALL OBJECT PROGRAM TRANSFER PERIS TO 11 236? ...[ FILESTORE MAGNETIC TAPE FILES. 20 23=# ...[ IT PERFORMS ALL TRANSFERS BETWEEN THE INDEX FILE AND THE OBJECT 16 23B* ...[ PROGRAM & USES K5MTCODE TO PERFORM BULK TRANSFERS. 20 23GB ...[ OTHER ROUTINES IN MTCODE ARE USED TO EXTEND & CONTRACT THE FILE 4 23LC ...[ 17 23QD ...[ MTSTART IS ENTERED TO IMPLEMENT RENAME & CLOSE PERIS 4 23WF ...[ 4 242G ...[ 21 246H ...[ THIS SEGMENT PERFORMS INDEX TRANSFERS FOR ALL FILESTORE MT SEGMENTS 14 24=J ...[ & CONTROLS FREEING OF INDEX BUFFER BLOCKS 20 24BK ...[ ONLY ONE INDEX BUFFER BLOCK CAN EXIST IF THE FILE IS BEING WRITTEN 21 24GL ...[ HOWEVER MTCODE SETS UP AN EMPTY FINDEXW BLOCK WHEN EXTENDING THE FILE. 4 24LM ...[ 16 24QN ...[ IT IS ASSUMED THAT COMMUNAL WRITING IS PROHIBITED 4 24WP ...[ 16 252Q ...[ FOR FORMAT OF MT FILESTORE FILES SEE PRM 5.5.3.2 20 256R ...[ FREADWORD : B0-11 :INDEX BLOCKLET POINTER RELATIVE TO FBLKS*BLN 17 25=S ...[ B12-23:WORD POINTER WITHIN INDEX BLOCKLET 4 25CB [ 11 25HN ...[ FORMAT OF AOLPT EXTENSION 7 25N2 ...[ ACA1 ) 10 25S# ...[ ACA2 ) NORMAL 4 WORD 11 25YL ...[ ACA3 ) CONTROL AREA 7 264Y ...[ ACA4 ) 20 269= ...[ ACA6 LENGTH OF A TYPE TRANSFER ) LENGTH ACTUALLY 19 26*J ...[ ACA7 LENGTH OF B TYPE TRANSFER ) TRANSFERRED 20 26FW ...[ ACA8 LENGTH OF C TYPE TRANSFER ) =COUNTBLOCK :ON EXIT X1=RESULT; X2->FCB 9 38FM ...[ X3-X7 UNCHANGED: 15 38X8 ... STO 0 GEN0 [SAVE LINK 16 39#P ... BLAM ,3 [DO CONVERSION 9 39Q= ... BRN (GEN0) 4 3=7R ...[ 21 3=K# ...[ ZINDEX SEARCH FOR THE CURRENT INDEX BLOCK AS INDICATED BY FREADWORD. 18 3?2T ...[ ANY UNUSED INDEX BLOCKS ARE FREED. IF THE REQUIRED BLOCK 21 3?DB ...[ IS NOT FOUND IT IS READ FROM BACKING STORE AND ZINDEX STARTS AGAIN. 4 3?TX ...[ 10 3#?D ...[ ENTRY CONDS......X6=LINK 19 3#N_ ...[ EXIT CONDS.......X1=X3->INDEX BLOCKLET: X0=FILE+FINDEXW*4096 16 3*6G ...[ X5,X4,AWORK3, DESTROYED,X2=FX2 4 3*J3 ...[ 4 3*_J ...[ 21 3BC5 ...READINDEX [ENTRY POINT TO READ INDEX BLOCKLET 16 3BSL ... LDX 6 FX1 [TO GIVE AWORK3=0 4 3C=7 ...[ 14 3CMN ...ZINDEX [GET POINTER TO INDEX BLOCK 8 3D59 ... SBX 6 FX1 8 3DGQ ... LDX 2 FX2 15 3DY? ... STO 6 AWORK3(2) [ STORE LINK 17 3F*S ...ZRESTART [(RE)CALCULATE BLOCKLET NO. AFTER COOR 18 3FR* ... [DURING WHICH COPYFILE MAY HAVE INTERVENED 16 3G8W ... TOPFCAB2 3,1 [X3->FCA: X1->FCB 18 3GLC ... LDX 6 FREADWORD(3) [B0-11 = BLOCKLET POINTER 8 3H3Y ... SRL 6 12 7 3HFF ... LDX 0 6 14 3HX2 ... SRL 6 BLS [BLK PTR 7 3J#H ... SMO 6 15 3JQ4 ... LDX 4 0(1) [BLOCK NUMBER 7 3K7K ... ANDN 0 3 16 3KK6 ... ADX 4 0 [BLT NO. REQUIRED 15 3L2M ... LDX 3 FPTR(1) [X3->FSTACK 17 3LD8 ... LDN 6 0 [BLOCK NOT YET FOUND 4 3LTP ...[ 15 3M?= ...ZMOREBL12 [RESET X1,X2 & LOOK @ NEXT BLOCK 4 3MNR ...[ 8 3N8B LDX 1 FX1 8 3N?G ... LDX 2 FX2 4 3NBL ...[ 12 3NFQ ...ZMOREBL [LOOK @ NEXT BLOCK 4 3NJW ...[ 17 3NN2 LDX 3 FPTR(3) [ POINT TO NEXT BLK 10 3NXS ... BXE 3 CXFI,NOTFOUND 9 3P7L LDX 0 ATYPE(3) 16 3PM= ... BXE 0 FFSFCB,NOTFOUND [ END OF CHAIN 15 3Q6W ... BXE 0 ZFEXTRA(1),NOTFOUND [END OF !RING 14 3QLG ... BXE 0 ZFINDEX(1),READ [ FINDEX 15 3R66 BXU 0 ZFINDEXW(1),ZMOREBL [ NOT FINDEXW 4 3RG= ...[ 21 3RWB ...[ A FINDEXW HAS BEEN FOUND THEREFORE THE FILE CANNOT BE COMMUNALLY OPEN 15 3S=G ...[ THEREFORE NO-ONE ELSE CAN BE USING THIS ONE 4 3SLL ...[ 17 3T2Q ... BXU 4 BACK2(3),WRONGINDEXW [J IF WRONG BLOCK 20 3TBW ... BNZ 6 (GEOERR) [SHOULDN'T FIND SAME BLOCK TWICE 17 3TR2 ... LDX 6 3 [KEEP BLOCK ADDRESS 9 3W76 ... BRN ZMOREBL 4 3WH= ...[ 6 3WXB ...WRONGINDEXW 18 3X?G ... CHAIN 3,2 [MOVE TO ACTIVITY CHAIN 21 3XML ... CALL 0 ZBLAM [CONVERT TO FREADBLOCK-TYPE MODIFIER 19 3Y3Q ... LDX 5 1 [ MODIFIER IN X1 FOR FILEAUTW 17 3YCW ... DOWN MTCHECK,3 [ENSURE BLOCK VALID 21 3YS2 ... FILEAUTW ,FAIL+FREE,BSBS4,5,,,NOCHECK [BACKWRITE BLT AUTONOMOUSLY 9 3_86 ... BRN ZRESTART 4 3_J= ...[ 4 3_YW READ 17 425M ... BXU 4 BACK2(3),WRONGINDEX [J UNLESS RIGHT BLOCK 20 42=D ... BNZ 6 (GEOERR) [SHOULDN'T FIND SAME BLOCK TWICE 17 42C9 ... LDX 6 3 [KEEP BLOCK ADDRESS 20 42J2 ... BRN ZMOREBL [SEE IF ANY MORE UNUSED BLOCKS 4 42NR ...[ 6 42TJ ...WRONGINDEX 4 432* ...[ 20 4376 ...[ CHECK TO SEE IF ANYONE ELSE IS USING THIS FINDEX BEFORE FREEING IT 4 43?X ...[ 7 43DN ... TOPFCA2 2 16 43KF ... PSTAC 2,2 [X2->FSTACK BLOCK 16 43Q= ... LDEX 5 ARINGNO(2) [ NO OF ELEMENTS 7 43XB SBN 5 1 19 44C2 ... BZE 5 ZREADFREE [ ONE ELEMENT : MUST BE US 7 44WL ADN 5 1 19 45B= ... CALL 0 ZBLAM [GET POINTER FOR COMPARISON 19 45TW ... SLC 1 2 [CONVERT TO MT FREADWORD FORM 14 4?PB LDX 2 FPTR(2) [ FSTACK 8 4?_8 ... ADN 2 A1 5 4#92 ZFELL 10 4#NL ... LDX 0 FREADWORD(2) 8 4*8= SRL 0 12 15 4*MW ... BXE 0 1,ZMOREBL12 [BLK OWNED 9 4B7G ADN 2 FELLEN 8 4BM6 BCT 5 ZFELL 16 4C6Q ZREADFREE [ BLK NOT OWNED 19 4CLB ... LDX 3 BPTR(3) [KEEP PREVIOUS BLOCK ADDRESS 20 4D62 ... FREECORE FPTR(3) [GET RID OF UNUSED FINDEX BLOCK 19 4DKL ... BRN ZMOREBL [LOOK FOR MORE UNUSED BLOCKS 4 4F5= ...[ 5 4FJW NOTFOUND 20 4G2H ... LDX 3 6 [ADDRESS OF SOUGHT BLOCK IF FOUND 16 4GD8 ... BNZ 3 ZOUT [J IF BLOCK FOUND 4 4GTT ...[ 5 4H?G ...READNOW 10 4HP7 ... HUNTW 3,BSTB,BREAD 19 4J6S ... BPZ 3 ZBREAD [J IF ALREADY DONE A FILEREAD 7 4JJF ... TOPFCA2 3 10 4K2= LDX 5 FREADWORD(3) 8 4KFW SRL 5 12 21 4KXC ... SRC 5 BLS [TURN BLOCKLET POINTER INTO STANDARD 17 4L#Y ... [ FORM FOR FILEREAD 20 4LQF ... FILEREAD ,FAIL,BSBS4,5,,,NOCHECK [READ BLKLET NON-AUTONOMOUSLY 16 4M82 ... DOWN MTCHECK,2 [CHECK DATA READ 9 4MKH ... LDX 0 AWORK3(2) 17 4N34 ... BZE 0 NOILLREP [J IF READINDEX ENTRY 9 4NDK ... LDN 3 FYILLINS 18 4NW6 ... TESTRPN2 OK,QERROR [J IF FAILED OR CORRUPT 5 4P?M ...NOILLREP 7 4PP8 ... TOPFCA2 3 19 4Q6P ... JBS READNOW,3,BAMWRITE [SOLE OPENER-NEEDN'T RESEARCH 21 4QJ= ... BRN ZRESTART [GO ROUND AGAIN IN CASE SOMEONE ELSE 17 4Q_R ... [ HAS READ SAME BLOCK 4 4RC# ...[ 5 4RT2 ZBREAD 10 4SS= NAME 3,FILE,FINDEX 7 4T6M ... TOPFCA2 2 8 4TF4 ... PSTAC 2,2 20 4TRF ... CHAIN 3,2 [PUT INDEX BLOCK IN FILE CHAIN 4 4W5W ...ZOUT 21 4WD? ... VFREEW BSTB,BREAD [( SOMEONE ELSE HAS ALREADY READ IT) 8 4WQN ... SMO FX1 9 4X55 ... LDX 0 ZFINDEXW 20 4XCG ... LDX 1 3 [PUT FINDEX POINTER IN X1 AS WELL 8 4XQ2 LDX 2 FX2 16 4Y9L ... LDX 6 AWORK3(2) [LINK IN B2-23 17 4YP= ... BZE 6 UP [J IF READINDEX ENTRY 8 4_8W ADX 6 FX1 13 4_DN ... BRN (6) [EXIT 5 4_NG ...UP UP 4 4_Y# ...[ 4 5286 [ 19 52MQ Z1MTOBJ [NORMAL ENTRY FOR NEXT PERI 4 537B [ 17 53M2 ... LDX 7 EVENT4(2) [GET TYPE/MODE WORD 8 546L ... ANDN 7 #3777 14 54L= ... JBC NOTLIM,FILERING(2),BAMWRITE 20 555W ... LDX 0 AMTLIM(2) [CHECK LIMIT IF OPEN FOR WRITING 9 5=_B LDN 3 FYOUTPUT 17 5?F2 ... BXL 0 ACOUNT(2),QERROR [J IF LIMIT REACHED 5 5?YL ...NOTLIM 11 5#D= ... BXU 7 MODE500(1),TMTS 21 5BBQ ACROSS MTSTART,2 [GOTO MTSTART FOR RENAME PERI #500 4 5BLJ ...[ 4 5BWB TMTS 7 5C6H ... LDN 6 4 17 5CBN ... LDX 3 ACAP(2) [CONTROL AREA ADDRESS 5 5CLT ...#SKI G4 21 5CX2 ... LDN 4 CHREAD+CHWRITE [NEED READ & WRITE ACCESS TO CONTROL 18 5D77 ... CALL 5 XCHECK [CHECK RESERVATIONS ETC. 9 5DC# ... LDN 4 ACA1(2) 5 5DMF ...#SKI G3 18 5DXL ... FOUTMOVE APETADDR(2),3,4,6 [MOVE 4 WORD CA TO AOLPT 5 5F7R ...#SKI G4 18 5FCY ... CALL 5 OUTMOVE [MOVE 4-WORD CA TO AOLPT 15 5FN5 ... TRACEIF K6MTOBJ,199,299,ACA1(2),TYPEMODE 9 5FY= ...#SKI K6MTOBJ>199$199 4 5G8C ...( 7 5GDJ ... TOPFCA2 2 16 5GNP ... TRACEIF K6MTOBJ,199,299,FREADWORD(2),READWORD 8 5GYW ... LDX 2 FX2 4 5H93 ...) 15 5HF8 ... STOZ ACA2(2) [REPLY WORD 8 5HP* ... LDX 0 BIT10 18 5H_G ... ANDX 0 7 [CHECK B10 OF MODE WORD 17 5J== BZE 0 TMON [J.IF NO OWN MONITOR 18 5JPW ... ADX 0 BIT11 [- MUST BE B11 AND/OR B10 7 5K9G ... ANDX 0 7 20 5KP6 ... ERS 0 7 [ELIMINATE OWN MONITOR FROM X4 4 5L8Q TMON 15 5LF7 ... BXE 7 MODE3(1),TBACKSP [BACKSPACE 14 5LPJ ... BXE 7 MODE7(1),TREWIND [REWIND 12 5L__ ... BXE 7 MODE1007(1),TCLOSE 20 5M=B ... BXE 7 MODE1000(1),TCLOSE [MODES 1000 & 1007 ARE THE SAME 19 5MGR ... BXE 7 MODE4(1),TSKIPF [SKIP FORWARD TO TAPE MARK 15 5MR8 ... BXE 7 MODE6(1),TSKIPB [SKIP BACK 16 5N3K ... BXE 7 MODE5(1),TTAPEMARK [WRITE TAPEMARK 8 5N#2 ... LDN 0 #7774 7 5NJC ... ANDX 0 7 17 5NSS ... BZE 0 TMODES [J IF MODE 0 1 OR 2 9 5P59 ...[ CHECK NOT AN OPEN MODE 12 5P*L ...[ ELIMINATE POSSIBLE ADDITIVE #34000 9 5PL6 LDN 3 FYALLOC 9 5Q5Q LDX 5 ACA1(2) 9 5QKB ANDX 5 MAD34(1) 9 5SHW ERX 5 ACA1(2) 8 5T3G ANDX 5 BSP16 7 5TH6 ... LDN 0 5 5 5W2Q ...NEXTOPEN 20 5WGB ... BXE 5 OPENMODES(1),QERROR [ALREADY OPEN : OPEN MODE ILLEGAL 7 5X22 ... BUX 1 / 9 5XFL ... BCT 0 NEXTOPEN 9 6*76 LDN 3 FYMODE 9 6*LQ BRN QERROR 4 6*NH ...[ 5 6*Q# ...TMODES 14 6*S5 ... TRACEIF K6MTOBJ,199,299,ACA3(2),COUNT 9 6*TW ... LDX 5 ACA4(2) 10 6*XM ... PMODES 3,APETADDR(2) 8 6*_D ... ANDN 3 #10 19 6B39 ... BNZ 3 TCOM [J. IF EXTENDED STORE MODE 20 6B52 ... ANDX 5 BSP16 [BUFFER ADDRESS IS B9-23 IN 15AM 4 6B6R ...TCOM 9 6B8J ... ANDX 5 BITS22LS 9 6B=* ... STO 5 ACA4(2) 9 6B#6 ... LDN 3 FYCOUNT 9 6B*X ... LDX 6 ACA3(2) 16 6BCN ... BZE 6 QERROR [ 0OR=32K 5 6BLS ...#SKI G4 4 6BNK ...( 9 6BQB ... LDN 4 CHREAD 20 6BS7 ... BXE 7 MODE1(1),NOWACC [J UNLESS WRITE PERMISSION NEEDED 9 6BTY ... LDN 4 CHWRITE 5 6BXP ...NOWACC 4 6B_G ...) 16 6C3? ... LDX 3 ACA4(2) [BUFFER ADDRESS 14 6C54 ... LDX 6 ACA3(2) [COUNT 18 6C6T ... CALL 5 XCHECK [CHECK RESERVATIONS ETC. 4 6C8L ...[ 7 6C=C ...[ TRANSFER MODES 16 6C#8 ...[ PERI CONTROL AREA OK : NOW POSITION ON INDEX FILE 4 6C*_ ...[ 15 6CCQ ... BXE 7 MODE2(1),TREADR [READ REVERSE 14 6CFH ... BXE 7 MODE1(1),TWRITE [WRITE 4 6CH# ...[ 5 6CK= TREADF 21 6CT4 ... NGN 7 1 [X7 NEGATIVE FOR READ FORWARD MODE 0 9 6D4W ... BRN SKIPREAD 4 6D#N ...[ 5 6DJG ...TSKIPF 19 6DS# ... LDN 7 1 [X7=1 FOR SKIP TO TM MODE #4 5 6F46 SKIPREAD 4 6F?Y ...[ 10 6FHQ ...[ POSITION FORWARDS ON INDEX 4 6FRJ ...[ 16 6G3B CALL 6 ZINDEX [X1->INDEX BLOCK 10 6H2L SMO FILERING(2) 19 6HG= ... LDEX 1 FREADWORD [CANT BE > 127 SO LDEX IS OK 19 6H_W ... ADN 1 A1(3) [GET WORD POINTER TO FINDEX 17 6J_6 RULP LDX 5 1(1) [GET NEXT HEADER WORD 17 6KDQ BNG 5 RDATA [J. IF NOT DATA REC 18 6KYB BNZ 5 RERO [J.UNLESS END OF BLOCKLET 7 6LD2 ... TOPFCA2 2 10 6LXL ... LDX 0 FREADWORD(2) 9 6MC= ... ANDX 0 HALFTOP 8 6MWW ... ADX 0 BIT11 18 6NBG ... STO 0 FREADWORD(2) [ADD 1 TO BLOCK POINTER 8 6RRW LDX 2 FX2 9 6S?G BRN SKIPREAD 4 6SH# ...[ 4 6SR6 RERO 12 6T2Y ...[ DATA BLOCK FOUND : UPDATE POINTER 9 6T=Q LDN 0 AMTDATA 10 6TQB SMO FILERING(2) 9 6W=2 ADS 0 FREADWORD 15 6WPL ... BNG 7 QR [J IF MODE 0 9 6Y8G ADN 1 AMTDATA 18 6YGX ... BRN RULP [LOOP IF SKIP TO TAPEMARK 4 6YT# ...[ 5 6_7Q RDATA 14 6_G7 ...[ NON-DATA RECORD FOUND : CHECK WHICH TYPE 18 6_SJ ... LDX 3 FX1 [NEED TO KEEP X1 FOR REND 16 7272 BXE 5 MARK(3),RMRK [J IF TAPEMARK 10 72LL ... BXE 5 QUAL(3),REND 20 736= ... BXE 5 MDDR(3),REND [J IF HEADER OR QUALIFIER BLOCK 18 73KW ... LDN 3 FYENDFILE [MUST BE END : ILLEGAL 9 7642 BRN QERROR 4 76?S ...[ 18 76HL ...RMRK [ TAPEMARK FOUND : UPDATE POINTER & SET REPLY 4 76RD ...[ 9 773= LDN 0 AMTMARK 14 77?4 ...UMARK [REVERSING PATH JOINS HERE 10 77GW SMO FILERING(2) 9 782G ADS 0 FREADWORD 20 78G6 ... SETBIT 4,ACA2(2) [SET TAPEMARK BIT IN REPLY WORD 9 79FB BRN SETREPLY 4 79ML ...[ 16 79TW ...REND [ QUAL OR HDDR FOUND : UPDATE POINTER 4 7=46 ...[ 9 7==B ... LDN 0 AMTQUAL 10 7=DL SMO FILERING(2) 9 7=Y= ADS 0 FREADWORD 15 7?CW ... BNG 7 UR [J IF MODE 0 9 7?XG ADN 1 AMTQUAL 18 7#9X ... BRN RULP [LOOP IF SKIP TO TAPEMARK 4 7#J# ...[ 14 7#WP ...UR [READ FORWARD & REVERSE PATH 4 7*96 ...[ 15 7*HH ... LDX 0 ACA3(2) [PERI COUNT 9 7*W2 SBN 0 AMTSENT 18 7B*L ... SBS 0 ACA3(2) [SET ACA3= RECORD LENGTH 17 7BT= ... BPZ 0 QNOTLONG [J UNLESS LONG BLOCK 8 7C#W ... LDCT 6 #200 20 7CSG ... ORS 6 ACA2(2) [SET LONG BLOCK BIT IN REPLY WORD 18 7D#6 ... ADS 0 ACA3(2) [SET ACA3 BACK TO COUNT 18 7DRQ ... BNG 7 QTRANF [J IF READ FORWARD MODE 0 21 7F?B ... SBS 0 1 [READ REVERSE LOSE FRONT OF RECORD 9 7G=L BRN QTRANF 4 7GGD ...[ 5 7GQ= QNOTLONG 15 7H5_ ... BNG 7 QTRANF [J IF MODE 0 20 7HFN ... ADS 0 ACA4(2) [READ REVERSE - DONT USE FRONT 15 7HTC ... [ OF BUFFER 5 7J96 QTRANF 18 7JJT ... LDN 4 2(1) [-> QUALIFIER DATA BLOCK 19 7JYJ ... LDX 6 ACA3(2) [CORRECTED LENGTH OF TRANSFER 18 7K#? ... LDX 5 ACA4(2) [PROGRAM BUFFER ADDRESS 5 7KN2 ...#SKI G4 18 7L3P ... INMOVE APETADDR(2),5,4,6, [MOVE DATA INTO PROGRAM 5 7LCD ...#SKI G3 18 7LR7 ... FINMOVE APETADDR(2),5,4,6 [MOVE DATA INTO PROGRAM 20 7M6W ... ADS 6 ACA4(2) [UPDATE ^NEXT TRANSFER^ ADDRESS 18 7MGK ... BRN REPLY [FOR USE IN REPLY WORD 4 7MW# ...[ 4 7N=3 ...[ 5 7NKQ TSKIPB 20 7N_F ... LDX 7 GSIGN [X7- B0 SET FOR SKIP BACK MODE #6 9 7P*8 ... BRN RMERGE 4 7PNX ...[ 5 7Q4L TREADR 19 7QD* ... LDN 7 1 [X7=1 FOR READ REVERSE MODE 2 9 7QS4 ... BRN RMERGE 4 7R7R ...[ 5 7RHG TBACKSP 19 7S36 ... LDN 7 0 [X7=0 FOR BACKSPACE MODE 3 5 7SGQ ...RMERGE 11 7T2B ...[ POSITION BACKWARDS IN INDEX 18 7TG2 ...[ NOTE THAT A1 OF AN INDEX BLOCK LOOKS LIKE A DATA RECORD 17 7TPS ... STOZ AWORK1(2) [CLEAR E.O.T. MARKER 7 7T_L TOPFCA2 1 10 7WF= ... LDEX 5 FREADWORD(1) 20 7WYW ... BNZ 5 QCURBLK [J UNLESS @ BEGINNING OF BLOCK 10 7XY6 LDX 4 FREADWORD(1) 8 7YCQ SRL 4 12 9 7YXB SBN 4 FBLKS*4 9 7_C2 ... LDN 3 FYBEGFILE 21 7_WL ... BZE 4 QERROR [J IF @ BEGINNING OF FILE : ILLEGAL 9 83*G ADN 4 FBLKS*4-1 8 83T6 SLL 4 12 8 84#Q LDN 0 #7777 20 84SB ... ANDS 0 FREADWORD(1) [DECREMENT BLOCKLET POINTER BY 1 10 85#2 ADS 4 FREADWORD(1) 18 85RL ... CALL 6 ZINDEX [ X3=CUR INDEX BLT ADD 7 86QW NGX 5 3 14 87=G ADN 3 GSBS4-1+A1-1 [ WD 126 17 87Q6 ... SBX 3 1(3) [BACKWARDS POINTER 16 889Q ... ADX 5 3 [GET BLOCKLET PTR 8 88PB SBN 5 A1 7 8992 ... TOPFCA2 1 9 89NL LDX 0 HALFTOP 20 8=8= ... ANDS 0 FREADWORD(1) [CLEAR WORD POINTER & RESET TO 15 8=MW ADS 5 FREADWORD(1) [ LAST REC 5 8?7G QLOOP 19 8?M6 ... LDX 4 0(3) [PICK UP PREVIOUS HEADER WORD 18 8#6Q ... BZE 5 RMERGE [J TO GET PRECEEDING BLT 17 8#LB ... BNG 4 QDATA [J UNLESS DATA RECORD 21 8*62 ... LDN 0 AMTDATA [ IF REACHED BEGINNING OF BLOCK 8 8JDB BRN QREC 4 8JY2 ...[ 5 8KCL ...QDATA 9 8KX= ... NGN 0 AMTMARK 8 8LBW ... SMO FX1 21 8LWG ... BXE 4 MARK,UMARK [TAPEMARK : JOIN FORWARD MOVE PATH 17 8MB6 ... LDN 0 AMTQUAL [MUST BE QUAL OR HDDR 16 8MTQ ...QREC [STEP BACK PTRS 20 8N*B ... SBS 0 3 [ TO RECORD IN INDEX BLOCK 20 8NT2 ... SBS 0 5 [ WORD POINTER FROM FREADWORD 20 8P#L ... SBS 0 FREADWORD(1) [UPDATE WORD POINTER IN FREADWORD 15 8PS= ... BNG 7 QLOOP [SKIP BACK 15 8Q?W ... BZE 7 SETREPLY [BACKSPACE 15 8QRG ... LDX 1 3 [READ REVERSE 21 8R?6 ... BPZ 4 QR [J IF DATA RECORD:JOIN TRANSFER PATH 21 8RQQ ... BRN UR [QUALIFIER BLOCK :JOIN FORWARD PATH 4 8S=B ...[ 5 8SQ2 ...QCURBLK 17 8T9L ... CALL 6 ZINDEX [GET X3->INDEX BLOCK 7 8TP= ... TOPFCA2 1 15 8W8W ... LDEX 5 FREADWORD(1) [WORD POINTER 8 8WNG ... ADN 3 A1 19 8X86 ... ADX 3 5 [X3->RECORD IN INDEX BLOCK 8 8XMQ ... BRN QLOOP 4 8Y7B ...[ 4 8YM2 ...[ 5 8_6L TCLOSE 16 8_F3 ... ACROSS MTSTART,4 [RELEASE CHANNEL 4 8_RD ...[ 5 925W TREWIND 17 92KG ... STOZ AWORK1(2) [CLEAR E.O.T. MARKER 9 93JQ LDN 0 FBLKS*4 8 944B SLL 0 12 10 94J2 SMO FILERING(2) 20 953L ... STO 0 FREADWORD [SET INDEX RECORD POINTER TO BOF 9 96GG BRN SETREPLY 4 96MN ...[ 4 96SW ...[ 6 9726 TTAPEMARK 21 97*T ... LDX 7 GSIGN [X7- B0 SET FOR WRITE A TM MODE #5 9 97PJ ... BRN WMERGE 4 985? ...[ 5 98F2 TWRITE 20 98YL ... LDN 7 0 [X7=0 FOR WRITE A BLOCK MODE #1 5 99D= ...WMERGE 17 99KD ... LDX 0 AWORK1(2) [COPY E.O.T. MARKER 16 99QL ... ORS 0 ACA2(2) [ TO REPLY WORD 7 99XW ... TOPFCA2 1 9 9=CG ... LDN 3 FYNOWRITE 21 9=X6 ... JBC QERROR,1,BAMWRITE [J IF NOT OPEN FOR WRITING :ILLEGAL 8 9?BQ ... PSTAC 1,1 14 9?WB ... BFCBX 1,1 [X1->FCB 9 9#B2 ... BS 1,BFALTR 4 9#TL ...[ 6 9**= ...SHORTENED 4 9*SW ...[ 17 9B#G ... CALL 6 ZINDEX [GET X1 & X3 ->FINDEX 7 9BS6 ... NAMEX 1 10 9D?2 SMO FILERING(2) 9 9DKL ... LDEX 1 FREADWORD 8 9DY= ... ADN 1 A1(3) 7 9F=W ... LDX 3 1 8 9FKG ...ZLOP LDX 0 0(3) 16 9FY6 ... BPZ 0 ZDATA [J. IF DATA ENTRY 9 9G=Q ... SBN 3 AMTMARK 8 9GKB ... SMO FX1 16 9GY2 ... BXE 0 MARK,ZLOP [LOOP IF TAPEMARK 11 9H=L ... SBN 3 AMTQUAL-AMTMARK 17 9HK= ... BRN ZLOP [LOOP IF QB OR HDDR 4 9HXW ...[ 18 9J=G ...ZDATA STO 0 AWORK2(2) [SET UP AWORK2 FOR MTCODE 16 9JK6 ... TRACEIF K6MTOBJ,199,299,AWORK2(2),BULKSIZE 18 9JXQ ... LDX 4 1(1) [PICK UP RECORD HEADER 8 9K=B ... SMO FX1 8 9KK2 ... LDX 0 MEND 18 9KXL ... BXE 0 4,SEXT [J IF WRITING @ E.O.F. 21 9L== ... STO 0 1(1) [WRITING TO MIDDLE OF EXISTING FILE 17 9LJW ... DOWN MTCODE,2 [FREE SURPLUS BLOCKS 15 9LXG ... BRN SHORTENED [START AGAIN 4 9M=6 ...[ 4 9MKB SEXT 10 9Q3G SMO FILERING(2) 9 9QH6 ... LDEX 4 FREADWORD 9 9R2Q ... SBN 4 GSBS4-1 19 9SFL BNG 7 STMRITE [J. IF WRITING A TAPE-MARK 9 9S_= ADN 4 AMTDATA 9 9TDW BRN SMERGE 4 9TNN ...[ 5 9TYG STMRITE 11 9WD6 ADN 4 AMTMARK+AMTQUAL 4 9WXQ ...[ 13 9XCB ...SMERGE [WRITE THE INDEX RECORD 4 9XX2 ...[ 21 9YBL ... BNG 4 SOKFIT [J IF ENOUGH ROOM IN THIS BLOCKLET 17 =5=W STOZ 1(1) [END OF BLOCKLET MARK 10 =5QG LDN 0 GSBS/BLN-1 10 =6=6 SMO FILERING(2) 9 =6PQ ... LDEX 6 FREADWORD 7 =7P2 SBX 0 6 7 =88L ADX 1 0 19 =8N= SBN 0 1 [SET UP CONTENTS FOR THE - 18 =97W STO 0 0(1) [LAST WORD OF BLOCKLET 20 =9MG ... DOWN MTCODE,4 [EXTEND INDEX & GET NEW FINDEXW 15 ==76 ... TESTREP2 REFUSED,REFUSEDX,FILEFULL,NOROOM 17 ==## ... LDX 0 ACA2(2) [REMEMBER E.O.T. BIT 19 ==FG ... ORS 0 AWORK1(2) [ UNTIL TAPE MOVED BACKWARDS 15 ==LQ ... BRN SHORTENED [START AGAIN 4 =?6B ...[ 5 =LTB SOKFIT 8 =M*2 LDX 3 FX1 20 =MSL BZE 7 SRITEDATA [J. IF NOT WRITING A TAPE-MARK 17 =N#= LDX 0 MARK(3) [WRITE THE TAPE-MARK 8 =NRW STO 0 1(1) 19 =P?G LDX 0 MEND(3) [WRITE THE END OF FILE MARK 10 =PR6 STO 0 AMTMARK+1(1) 9 =Q=Q LDN 0 AMTMARK 10 =QQB ... SMO FILERING(2) 19 =R=2 ... ADS 0 FREADWORD [UPDATE INDEX RECORD POINTER 9 =RPL BRN SETREPLY 4 =RQF ...[ 5 =RR# ...REFUSEDX 15 =RS7 ... CALL 7 TIDYUP [RESET E.O.F. 7 =RT2 ... LDN 3 1 14 =RTT ...REFUSED [BACKING STORE LIMIT EXCEEDED 18 =RWN ... CALL 7 TOPCA [CHANGE ACTIVITY TO APET 19 =RXH ... [ & LEAVE LINK TO K1MTOBJ 18 =RYB ... LDX 6 3 [OLPODD EXPECTS NO. OF 17 =R_9 ... [ BLOCKS WANTED IN X6 9 =S24 ... ACROSS OLPODD,3 4 =S2X ...[ 10 =S3Q ...NOROOM [FILE IS FULL 15 =S4K ... CALL 7 TIDYUP [RESET E.O.F. 5 =S5D ...OUTFULL 9 =S6? ... LDN 3 FYOUTFULL 9 =S76 ... BRN QERROR 4 =S7_ ...[ 6 =S9= SRITEDATA 8 =SNW LDX 0 0(1) 20 =T8G ... BXU 0 MARK(3),SNOBDMK [J IF CAN'T BE A QUALIFIER BLOCK 9 =W7Q LDX 0 ACA3(2) 9 =WMB SBN 0 AMTSENT 20 =X72 ... BNZ 0 SNOBDMK [NOT 20 WDS : DON'T TREAT AS QB 9 =XLL ... LDX 0 QUAL(3) 20 =Y6= ... STO 0 1(1) [WRITE '4HQUAL' IN RECORD HEADER 17 =YKW ... STO 0 AMTQUAL(1) [& @ END OF RECORD 16 =_5G LDX 0 MEND(3) [WRITE '4HEND ' 10 =_K6 STO 0 AMTQUAL+1(1) 18 ?22R ... LDN 4 2(1) [->DATA AREA IN QB RECORD 17 ?2DD ... LDX 6 ACA3(2) [LENGTH OF TRANSFER 18 ?2W5 ... LDX 3 ACA4(2) [PROGRAM BUFFER ADDRESS 5 ?3?Q ...#SKI G4 9 ?3PC ... CALL 5 OUTMOVE 5 ?474 ...#SKI G3 11 ?4JP ... FOUTMOVE APETADDR(2),3,4,6 9 ?52G LDX 0 ACA3(2) 20 ?5G6 ... ADS 0 ACA4(2) [UPDATE ^NEXT TRANSFER ^ ADDRESS 7 ?5_Q ADN 0 2 10 ?6FB SMO FILERING(2) 19 ?6_2 ... ADS 0 FREADWORD [UPDATE INDEX RECORD POINTER 8 ?7DL BRN REPLY 4 ?7S* ...[ 14 ?884 ...SNOBDMK [ORDINARY WRITE TO BULK FILE 4 ?8HR ...[ 14 ?8XG ... LDX 3 ACA3(2) [COUNT 19 ?9?9 ... ADX 3 AWORK2(2) [ +BULK FILE START ADDRESS 19 ?9LY ... ADN 3 GSBS-1 [ROUND UP TO GET END ADDRESS 17 ?=2M ... SRL 3 GSBSLOG [& CONVERT TO BLOCKS 9 ?=BB LDX 0 AWORK2(2) 9 ?=W2 ADN 0 GSBS-1 18 ??*L ... SRL 0 GSBSLOG [START ADDRESS IN BLOCKS 19 ??T= SBX 3 0 [X3=NO OF NEW BLOCKS NEEDED 9 ?##W BZE 3 NONEWBL 19 ?#JN ... LDX 7 3 [SAVE NO. OF BLOCKS NEEDED 4 ?#SG ...[ 16 ?*#6 ... DOWN MTCODE,1 [EXTEND BULK FILE 15 ?*HY ... TESTREP2 REFUSED,REFUSED,FILEFULL,OUTFULL 17 ?*RQ ... LDX 0 ACA2(2) [REMEMBER E.O.T. BIT 19 ?B3J ... ORS 0 AWORK1(2) [ UNTIL TAPE MOVED BACKWARDS 19 ?B?B ... CALL 6 ZINDEX [OK - GET X1 & X3 ->FINDEX 21 ?BR2 ... NAMEX 1 [ENSURE INDEX BLOCK WILL BE WRITTEN 21 ?C=L ... TOPFCB2 1 [UPDATE FBLMOD AFTER FINDING FINDEX 20 ?CQ= ... ADS 7 FBLMOD(1) [ELSE FINDEX WILL APPEAR CORRUPT 18 ?D9W ... LDN 7 0 [RESTORE X7 SWITCH VALUE 10 ?FNQ SMO FILERING(2) 21 ?G37 ... LDEX 1 FREADWORD [PICK UP WORD POINTER TO INDEX BLOCK 16 ?G*J ... ADN 1 A1(3) [X1->INDEX RECORD 4 ?GM_ ...[ 14 ?H2B ...NONEWBL [SET UP DATA RECORD IN INDEX 4 ?H#R ...[ 9 ?HM= LDX 0 ACA3(2) 19 ?J6W ... STO 0 1(1) [RECORD LENGTH IN 1ST WORD 18 ?JLG ... ADX 0 AWORK2(2) [NEXT BULK FILE ADDRESS 15 ?K66 ... STO 0 AMTDATA(1) [ IN 2ND WORD 8 ?L5B SMO FX1 18 ?LK2 ... LDX 0 MEND [^ END^ IN NEXT RECORD 10 ?M4L STO 0 AMTDATA+1(1) 9 ?MJ= LDN 0 AMTDATA 10 ?N3W SMO FILERING(2) 17 ?NHG ... ADS 0 FREADWORD [UPDATE INDEX RECORD 4 ?P36 QR 19 ?PGQ ... LDX 5 AMTDATA(1) [START ADDRESS IN BULK FILE 17 ?Q2B ... LDX 6 1(1) [LENGTH OF TRANSFER 4 ?QG2 NQR 4 ?QJK ...[ 9 ?QM8 ...[ TRANSFER PERIS ONLY 13 ?QPR ...[ ALL CHECKING & POSITIONING COMPLETE 12 ?QSB ...[ CAN NOW DO TRANSFER AUTONOMOUSLY 4 ?QW_ ...[ 16 ?Q_L AUTSTART [RESTART OBJ PROG 19 ?RF= NGX 7 7 [RESET FOR EASE OF CHECKING 9 ?RYW LDX 0 ACA3(2) 20 ?SDG ... BXGE 0 6,ONOLONG [J UNLESS A LONG BLOCK IS FOUND 20 ?SY6 ... SETBIT 1,ACA2(2) [SET LONGBLOCK BIT IN REPLY WORD 17 ?WC2 BNG 7 OREV [J. IF READ REVERSE 7 ?WWL SBX 5 6 18 ?XB= ADX 5 ACA3(2) [RESET E.O.REC POINTER 4 ?XTW OREV 16 ?Y*G LDX 6 ACA3(2) [RESET REC LENGTH 9 ?YT6 BRN ONOREV 5 ?_#Q ONOLONG 18 ?_SB BPZ 7 ONOREV [J. UNLESS READ REVERSE 19 #2#2 ADS 0 ACA4(2) [RESET BUFFER START ADDRESS 9 #2RL SBS 6 ACA4(2) 5 #3?= ONOREV 20 #3QW NGX 7 7 [RETURN X7 TO ITS PREVIOUS STATE 9 #4=G DOWN MTCODE,5 5 #4Q6 REPLY 17 #59Q ... BNG 7 Y [J IF READ FORWARD 15 #5PB ... BZE 7 Y [J IF WRITE 21 #692 ... ADN 6 1 [READ REVERSE: ADJUST TRANSFER LENGTH 20 #6NL ... SBS 6 ACA4(2) [TO GIVE ^NEXT TRANSFER^ ADDRESS 4 #78= Y 20 #7MW ... LDCT 0 #770 [RESTRICT ^NEXT TRANSFER^ ADDRESS 15 #87G ... ANDX 0 ACA4(2) [TO 18 BITS 20 #8M6 ... ERX 0 ACA4(2) [ BEFORE PUTTING IN REPLY WORD 20 #96Q ... ORS 0 ACA2(2) [ B0-5 : BIT SIGNIFICANT REPLY 5 #?JW SETREPLY 16 ##4G ... AUTFIN ACA2(2) [REPLY IS IN ACA2 9 #*HB BRN K1MTOBJ 4 #B32 ...[ 5 #DF6 QERROR 9 #DYQ LDX 4 FTYPNO(2) 8 #FDB ... CALL 7 TOPCA 9 #GCL ACROSS OLPODD,4 4 #GMD ...[ 10 #GX= MENDAREA 30,K99MTOBJ 4 #HBW #END 8 ____ ...32710614000100000000