11 22FL ... SEG MATALO,8,FILE,OLP 17 22_= ... SEGENTRY K1MATALO,ZMAGSTEP [MAGSTEP MACRO ENTRY 17 23DW ... SEGENTRY K2MATALO,ZMAGREAD [MAGREAD MACRO ENTRY 16 23YG ... SEGENTRY K3MATALO,ZFTM [FTM MACRO ENTRY 4 24D6 [ 20 24RN ...[ THIS SEGMENT IMPLEMENTS THE FILESTORE MAGNETIC TAPE FILE ACCESS 19 257= ...[ MACROS USED BY LOAD & CONT EXTRACODE (& BY RV TESTING SYSTEM). 20 25GS ...[ IT DOES NOT PERFORM ANY TRANSFERS ON THE FILE, THESE BEING DONE 21 25WB ...[ VIA BUFFERS ORGANIZED BY ENTRY TO K7MTOBJ FOR INDEX BUFFERS & K7MTCODE 8 269Y ...[ FOR BULK BUFFERS. 18 26KG ...[ THE FILE MUST BE OPEN IN READR OR WRITE MODE @ DEPTH ZERO. 4 26_4 ...[ 16 27#L ...[ FOR FORMAT OF MT FILESTORE FILES SEE PRM 5.5.3.2 20 27N8 ...[ FREADWORD : B0-11 :INDEX BLOCKLET POINTER RELATIVE TO FBLKS*BLN 17 283Q ...[ B12-23:WORD POINTER WITHIN INDEX BLOCKLET 4 28C# ...[ 10 28QW ...[ USE OF WORKING SPACE 21 296D ...[ AWORK1 -B0-5 =LENGTH OF B TYPE TRANSFER (IN BS BLOCKS) 17 29G2 ...[ B6-14 =LENGTH OF A TYPE TRANSFER 18 29TJ ...[ B15-23=LENGTH OF C OR D TYPE TRANSFER 15 2=96 ... BITDEFS AWORK2,0,STEP,SKIP,READ,MAGLONG 15 2=JN ...[ AWORK3 WORD POINTER IN BULK FILE 17 2=Y= ...[ AWORK4 MAGSTEP = DENOTES PROGRAM ADDRESS 21 2??S ...[ MAGREAD = AMOUNT OF DATA ALREADY MOVED TO FRRB 4 2?MB ...[ 5 2#2Y ...SFINDEX 16 2#BG ...#HAL FILE+FINDEX,0 [INDEX READ BLOCK 5 2#Q4 ...SFINDEXW 17 2*5L ...#HAL FILE+FINDEXW,0 [INDEX WRITE BLOCK 5 2*F8 ...SFEXTRA 8 2*SQ ...#HAL FILE+FEXTRA,0 9 2B8L TMARK 4HMARK 8 2BN= TEND 4HEND 4 2C7W # 17 2CKY ...SBUFF [SEARCH FOR BULK OR INDEX BUFFER BLOCK 14 2D42 ...[ REQUIRES X4=BLOCK PTR OF REQUIRED BLOCK 9 2DG4 ...[ X2->FCB 13 2DY6 ...[ LINK X5; X0,X6 DESTROYED 17 2FB8 ...[ GIVES X1->REQUIRED BLOCK IF AVAILABLE, X2=FX2 19 2FS= ...[ IF THE BLOCK IS LOCATED THE EXIT IS ON X7, IT BEING ASSUMED 21 2G=# ...[ THAT THE SUBROUTINE IS CALLED FROM SFINDBUFF OR SFINDINDX WHICH ARE 10 2GNB ...[ THEMSELVES CALLED ON X7. 20 2H6D ...[ IF THE BLOCK IS NOT FOUND EXIT IS ON X5 TO ENABLE THE CALLING SUB- 18 2HJG ...[ ROUTINE TO ENTER K7MTOBJ OR K7MTCODE AS APPROPRIATE BEFORE 9 2J2J ...[ REPEATING THE SEARCH. 4 2JDL ...[ 17 2JWN ... LDX 1 FPTR(2) [MISS OUT THE FSTACK 16 2K#Q ... LDX 6 4 [BLOCK POINTER 16 2KQS ... SLC 6 2 [BLOCKLET BITS 16 2L8W ... ANDN 6 3 [MASK OUT OTHERS 7 2LLY ... SMO 4 17 2M52 ... ORX 6 0(2) [BLOCK(LET) NUMBER 8 2MH4 ... LDX 2 FX2 5 2M_6 SLOOP 9 2NDQ LDX 1 FPTR(1) 19 2NYB ... BXE 1 CXFI,(5) [EXIT IF END OF FILE CHAIN 9 2PD2 ... LDX 0 ATYPE(1) 16 2PXL ... BXE 0 FFSFCB,(5) [EXIT IF NEXT FCB 8 2QC= ... SMO FX1 18 2QWW ... BXE 0 SFEXTRA,(5) [ EXIT IF END OF ! RING 16 2RBG ... BXE 0 FFSFURB,SFURB [J IF FURB FOUND 16 2RW6 ... BXE 0 FFSFUWB,SFURB [J IF FUWB FOUND 8 2S*Q ... SMO FX1 15 2STB ... BXE 0 SFINDEXW,SFURB [J IF FINDEXW 8 2T*2 ... SMO FX1 19 2TSL ... BXU 0 SFINDEX,SLOOP [TRY NEXT BLOCK IF NOT FINDEX 5 2W#= ...SFURB 17 2WRW ... BXE 6 BACK2(1),(7) [EXIT IF RIGHT BLOCK 16 2X?G ... BRN SLOOP [ELSE TRY NEXT 4 2XR6 ...[ 15 2Y=Q ...SFINDINDX [FIND THE CURRENT INDEX BLOCKLET 19 2YQB ...[ EXPECTS X2=FX2; LINK X7; X0,X4,X5,X6 DESTROYED 16 2_=2 ...[ ON EXIT X1->FINDEX, X2=FX2, X3->FCA 4 2_PL ...[ 17 329= ... TOPFCAB2 3,2 [X3->FCA : X2->FCB 17 32NW ... LDX 4 FREADWORD(3) [PICK UP BLOCK MOD 20 338G ... BPZ 4 SNOINIT [J.UNLESS INITIALISATION REQUIRED 20 33N6 ... LDX 4 FBLMOD(2) [FILE HAS NOT BEEN ACCESSED YET 9 347Q ... SBN 4 FBLKS-A1 17 34MB ... BZE 4 SEOF [J. IF FILE IS EMPTY 19 3572 ...[THE BLOCK PTR IS THE USUAL DISTANCE THROUGH FCB BUT IN BITS 0-9 14 35LL ...[B10,11 GIVE THE BLOCKLET WITHIN THE BLOCK 9 366= ... LDN 4 FBLKS*4 8 36KW ... SLL 4 12 20 375G ... STO 4 FREADWORD(3) [SET BLOCKLET POINTER TO B.O.F. 5 37K6 SNOINIT 8 384Q ... SRL 4 12 18 38JB ... SRC 4 2 [CONVERT TO PTR IN FCB 21 3942 ... CALL 5 SBUFF [LOCATE BUFFER : EXIT ON X7 IF FOUND 16 39HL ... SBX 7 FX1 [BUFFER NOT FOUND 19 3=3= ... DOWN MTOBJ,7 [GET BLOCK INTO FILE CHAIN 21 3=GW ... TESTRPN2 OK,SEOF [TREAT AS EOF IF FAILED OR CORRUPT 8 3?2G ... ADX 7 FX1 15 3?G6 ... BRN SFINDINDX [START AGAIN 4 3?_Q ...[ 4 3#FB ...[ 16 3#_2 ...SFINDBUFF [FIND THE CURRENT BULK BUFFER BLOCK 20 3*DL ...[ EXPECTS X2=FX2; LINK X7: ON EXIT X1->FURB, X2->FCB 16 3*Y= ...[ X0,X4,X5,X6 DESTROYED: X3 UNCHANGED 4 3BCW ...[ 17 3BXG ... LDX 4 AWORK3(2) [BULK FILE ADDRESS 7 3CC6 ... TOPFCB2 2 17 3CWQ ... SRL 4 9 [CONVERT TO BLOCKS 19 3DBB ... ADX 4 BULKMOD(2) [PLUS NUMBER OF INDEX BLOCKS 17 3DW2 ... ADN 4 FBLKS [GET BLOCK NO. IN X4 21 3F*L ... CALL 5 SBUFF [LOCATE BUFFER : EXIT ON X7 IF FOUND 15 3FT= ... SBX 7 FX1 [NOT FOUND 20 3G#W ... DOWN MTCODE,7 [GET INDEX BLOCK INTO FILE CHAIN 8 3GSG ... ADX 7 FX1 15 3H#6 ... BRN SFINDBUFF [START AGAIN 4 3HRQ ...[ 4 3J?B ...[ 15 3JR2 ...SFREEFRRB [GET RID OF FRRB IF MAGREAD MACRO 15 3K=L ... JBC (7),FX2,READ [J IF MAGREAD 9 4WJG ... MFREEW FILE,FRRB 7 4WL4 ... EXIT 7 0 4 4WML ...[ 4 4WP8 ...[ 4 4WQQ # 8 4X=B ...[ FTM MACRO ENTRY 4 4XQ2 ZFTM 4 4Y9L [ 17 4YJ3 ... STOZ AWORK2(2) [CLEAR SWITCH WORD 19 4YWD ... BS 2,SKIP [SET FTM MACRO ENTRY MARKER 10 4_8W BRN READASWELL 4 4_NG [ 13 5286 ZMAGSTEP [ENTRY FROM MAGSTEP MACRO 4 52MQ [ 17 52_6 ... STOZ AWORK2(2) [CLEAR SWITCH WORD 20 53=G ... BS 2,STEP [SET MAGSTEP MACRO ENTRY MARKER 18 53HW ... LDX 0 ACOMMUNE8(2) [OBJECT PROGRAM ADDRESS 9 53T= ... STO 0 AWORK4(2) 10 546L BRN READASWELL 4 54L= [ 13 555W ZMAGREAD [ENTRY FROM MAGREAD MACRO 4 55KG [ 17 562G ... STOZ AWORK2(2) [CLEAR SWITCH WORD 20 56CG ... BS 2,READ [SET MAGREAD MACRO ENTRY MARKER 21 56SG ... STOZ AWORK4(2) [AMOUNT OF DATA ALREADY MOVED TO FRRB 18 579G ... SETUPCOR ACOMMUNE9(2),3,FILE,FRRB [BUFFER FOR MAGREAD 4 57LG ...[ 6 583L READASWELL 4 58H= ...[ 10 592W ... LDX 0 ACOMMUNE9(2) 9 59GG STO 0 AWORK1(2) 21 5=26 ... TRACEIF K6MATALO,99,299,AWORK2(2),MTMACRO [B0=STEP;B1=FTM;B2=READ 4 5=FQ ...[ 5 5?YL RESTMERJ 4 5#D= ...[ 15 5#XW ... CALL 7 SFINDINDX [X1->FINDEX 16 5*CG ... TRACEIF K6MATALO,99,299,FREADWORD(3),MTPOSN 18 5*X6 ... LDEX 0 FREADWORD(3) [WORD POINTER IN FINDEX 7 5BWB ADX 1 0 20 5CB2 ... LDN 7 0 [ZERO POINTER INCREMENT 1ST TIME 4 5CTL ...[ 5 5J== SFTMERGE 4 5JPW ...[ 20 5K9G ... ADX 1 7 [INCREMENT POINTER TO INDEX BLOCK 19 5QKB LDX 4 A1+1(1) [PICK UP NEXT WORD IN INDEX 20 5R52 BZE 4 XLASTREC [J.IF AT THE END OF A BLOCKLET 17 5RG2 ... BNG 4 NOBULK [J UNLESS BULK RECORD 9 5RX2 ... LDN 7 AMTDATA 18 5S#2 ... ADS 7 FREADWORD(3) [INCREMENT WORD POINTER 19 5SP2 ... JBS SFTMERGE,2,SKIP [J TO TRY NEXT RECORD IF FTM 18 5T62 ...[ MAGREAD & MAGSTEP ONLY FROM HERE: TRANSFER FROM BULK FILE 9 5TH6 SBX 4 AWORK1(2) 17 5W2Q BZE 4 RIGHTLEN [COUNT=RECORD LENGTH 18 5WGB ... BNG 4 SHORTBLOCK [J IF COUNT>RECORD LENGTH 18 5X22 ... BS 2,MAGLONG [SET LONG BLOCK MARKER 9 5XFL ... BRN RIGHTLEN 4 5X_= ...[ 6 5YDW SHORTBLOCK 19 5YYG ADS 4 AWORK1(2) [USE RECORD LENGTH AS COUNT 15 5_D6 ... JBS RIGHTLEN,2,STEP [J IF MAGSTEP 10 62CB MHUNTW 3,FILE,FRRB 16 62X2 ALTLEN 3,AWORK1(2) [SHORTEN BLOCK 20 63BL ... CALL 7 SFINDINDX [RECOVER POINTER TO INDEX RECORD 10 63W= ... LDEX 0 FREADWORD(3) 9 64*W ... SBN 0 AMTDATA 7 65SQ ADX 1 0 4 66#B ...[ 5 66S2 RIGHTLEN 4 678G ...[ 15 67K2 ...[ REGION A B C D X 15 67_G ...[ TRANSFER *** **** *** OR * 16 68B2 ...[ BLOCK BOUNDARY _ _ _ _ _ _ 4 68QG ...[ 20 6972 ... LDX 0 AMTDATA+A1(1) [BULK FILE ADDRESS OF NEXT RECORD 18 69HG ... SBX 0 A1+1(1) [ -LENGTH OF THIS RECORD= 20 69Y2 ... STO 0 AWORK3(2) [ CURRENT BULK FILE ADDRESS (S) 21 6=#G ... ADX 0 AWORK1(2) [ + TRANSFER LENGTH=S+A+B+C OR S+D 16 6=P2 ... ANDN 0 #777 [GIVES C OR D+X 19 6?5G ... LDX 3 AWORK1(2) [TRANSFER LENGTH (A+B+C) OR D 19 6?G2 ... STO 0 AWORK1(2) [B15-23=C OR D+X (B0-14=0) 19 6?WG ... SBX 0 3 [C-(A+B+C)=-A-B OR D+X-D=-X 18 6#?2 ... NGX 0 0 [GIVES B+A OR -X 21 6#MG BNG 0 TYPED [ THE PRESENCE OF X DENOTES TYPE D 17 6*76 ... SLL 0 9 [MOVE B+A TO B0-14 5 6*LQ TYPED 21 6B6B ... ADS 0 AWORK1(2) [HENCE B+A+C OR D IN AWORK1 16 6BL2 ... TRACEIF K6MATALO,199,299,AWORK1(2),TYPE BAC 9 6C5L ... LDX 3 AWORK1(2) 7 6CK= ... SRL 3 9 15 6D4W ... ANDN 3 #777 [PICK UP A 18 6DJG ... BZE 3 QNOTA [J IF NO TYPE A TRANSFER 15 6F46 ... CALL 7 SFINDBUFF [GET X1->FURB 4 6FHQ ...[ 5 6G3B ...MOREBL 4 6GH2 ...[ 20 6H2L ... LDEX 4 AWORK3(2) [B15-23 OF S GIVE START ADDRESS 19 6HG= ... ADN 4 A1(1) [GET X4->(NEXT) CHUNK OF DATA 4 6H_W ...[ 16 6JFG ...QUALMOVE [TRANSFER FROM INDEX FILE MERGES HERE 4 6J_6 ...[ 15 6KDQ ... JBS MAGSTEPA,2,STEP [J IF MAGSTEP 10 6LXL MHUNTW 1,FILE,FRRB 19 6M=3 ... LDN 5 A1(1) [GET ADDRESS OF A1 OF FRRB 20 6MJD ... ADX 5 AWORK4(2) [JUMP OVER DATA ALREADY INSERTED 17 6MWT ... MOVE 4 0(3) [MOVE IN THIS CHUNK 17 6N9= ... BRN QNOTAX [MERGE WITH MAGSTEP 4 6NHM ...[ 5 6NW6 MAGSTEPA 18 6P*Q ... LDX 5 AWORK4(2) [OBJECT PROGRAM ADDRESS 15 6PTB ... FPCACA 1,2 [GET X1->APET 20 6Q*2 ...#SKI G4 [USE INMOVE IN G4 BECAUSE START 21 6QSL ... INMOVE 1,5,4,3 [ADDRESS NOT IN 1ST K OF CHECKED AREA 5 6R#= ...#SKI G3 19 6RRW ... FINMOVE 1,5,4,3 [MOVE DATA INTO PROGRAM AREA 4 6S?G ...[ 18 6SR6 ...QNOTAX [UPDATE POINTERS WITH LENGTH OF DATA MOVED 4 6T=Q ...[ 14 6TQB ... ADS 3 AWORK3(2) [UPDATE S 20 6W=2 ... ADS 3 AWORK4(2) [UPDATE PROGRAM OR FRRB ADDRESS 4 6WPL ...[ 12 6X9= ...QNOTA [CHECK FOR MORE DATA 4 6XNW ...[ 16 6Y8G ... LDCH 7 AWORK1(2) [PICK UP B (B0-5) 18 745G BZE 7 QNOTB [J.IF NO TYPE B TRANSFER 15 74K6 ... SBN 7 1 [DECREMENT B 15 754Q ... DCH 7 AWORK1(2) [ & RESTORE 15 75JB ... CALL 7 SFINDBUFF [GET X1->FURB 20 7642 ... LDN 3 GSBS [SET TRANSFER LENGTH=WHOLE BLOCK 15 76HL ... BRN MOREBL [MOVE DATA 4 773= ...[ 5 7LM= QNOTB 18 7M6W ... LDEX 3 AWORK1(2) [PICK UP C OR D (B15-23) 19 7MLG ... BZE 3 QNOTC [J IF NO TYPE C OR D TRANSFER 15 7N66 ... ERS 3 AWORK1(2) [CLEAR C OR D 15 7NKQ ... CALL 7 SFINDBUFF [GET X1->FURB 9 7P5B ... BRN MOREBL 4 7PK2 ...[ 13 7Q4L ...XLASTREC [END OF INDEX BLOCKLET 7 7QJ= ... TOPFCA2 3 10 8992 LDX 0 FREADWORD(3) 19 89NL ... ADX 0 BIT11 [INCREMENT BLOCKLET POINTER 18 8=8= ... ANDX 0 HALFTOP [ & ZEROIZE WORD POINTER 14 8=MW ... STO 0 FREADWORD(3) [RESET 9 8#6Q BRN RESTMERJ 4 8#F7 ...[ 12 8#RJ ...NOBULK [ALL MACROS FROM HERE 8 8*62 LDX 3 FX1 16 8*KL BXE 4 TEND(3),SEOF [J IF EOF REACHED 16 8G2= BXE 4 TMARK(3),SMARK [J IF TAPEMARK 12 8GFW ...[ MUST BE QUAL OR HDDR 9 8G_G ... LDN 7 AMTQUAL 7 8HF6 ... TOPFCA2 3 18 8HYQ ... ADS 7 FREADWORD(3) [INCREMENT WORD POINTER 14 8JDB ... JBS SFTMERGE,2,SKIP [J IF FTM 19 8JY2 ... LDN 4 A1+2(1) [ADDRESS OF QUALIFIER DATA 16 8KCL ... LDN 3 AMTSENT [LENGTH OF DATA 11 8KX= ... BXL 3 AWORK1(2),NOTLONG 18 8LBW ... BXE 3 AWORK1(2),NOTLONG [J IF BUFFER>=DATA LENGTH 18 8LWG ... BS 2,MAGLONG [SET LONG BLOCK MARKER 21 8MB6 ... LDX 3 AWORK1(2) [CUT TRANSFER LENGTH TO BUFFER SIZE 5 8MTQ ...NOTLONG 16 8N*B ... STOZ AWORK1(2) [SET A,B & C ZERO 19 8NT2 ... BRN QUALMOVE [MOVE DATA TO PROGRAM OR FRRB 4 8P#L ...[ 12 8PS= ...QNOTC [TRANSFER COMPLETE 4 8Q?W ...[ 17 8QRG ... JBC NORMALEXIT,2,MAGLONG[J UNLESS LONG BLOCK 15 95H= UPPLUS 2 [LONG BLOCK 4 95R4 ...[ 6 962W NORMALEXIT 7 96GG UPPLUS 3 4 96Q# ...[ 4 9726 SEOF 9 98NS ... CALL 7 SFREEFRRB 15 98YL UP [END OF FILE 4 99=2 ...[ 11 99HB ...SMARK [TAPEMARK FOUND 4 99SQ ...[ 7 9=66 ... TOPFCA2 3 9 9=CG LDN 0 AMTMARK 17 9=X6 ADS 0 FREADWORD(3) [UPDATE THE POINTERS 9 9?6Y ... CALL 7 SFREEFRRB 15 9?BQ UPPLUS 1 [TAPE MARK 4 9?LJ ...[ 4 9?WB [ 11 9#B2 MENDAREA AOLPGAP,K99MATALO 4 9#TL #END 8 ____ ...74137221000300000000