11 223S ... SEG MTSTART,8,FILE,OLP 21 225L ... SEGENTRY K1MTSTART,ZFIRSTPERI[ENTRY TO PROCESS FIRST RERI ON FILE 20 227D ... SEGENTRY K2MTSTART,RENAMEPERI[ENTRY FOR RENAME PERI FROM MTOBJ 20 229= ... SEGENTRY K4MTSTART,ZCLOSEPERI[ENTRY FOR CLOSE PERI FROM MTOBJ 4 22?4 ...[ 18 22#W ...[ THIS SEGMENT IMPLEMENTS THE FIRST OBJECT PROGRAM PERI ON 20 22BN ...[ A MAGNETIC TAPE FILESTORE FILE, A LINK TO K1MTSTART BEING SET IN 20 22DG ...[ THE AOLPT BY ASSIGN WHEN IT IS SET UP BY AN ASSIGN COMMAND OR AN 17 22G# ...[ ASSILO MACRO (IN THE RETAINED LOAD PERIPHERAL CASE). 21 22J6 ...[ IT EXITS TO MTOBJ IF THE FILE IS ALREADY OPEN (FOR ALLOT PURPOSES) 20 22KY ...[ I.E. IF THE GIVE QUALIFIER HAS BEEN USED AND IN THE ASSILO CASE, 21 22MQ ...[ OR IF THE PERI IS NOT AN OPEN PERI, HAVING FIRST POSITIONED THE FILE 20 22PJ ...[ AFTER THE FIRST RECORD (USUALLY A HEADER LABEL) IF IT HAS NOT YET 15 22RB ...[ BEEN POSITIONED (I.E. ALL CASES EXCEPT ASSILO) 20 22T8 ...[ OTHERWISE IF THE FIRST PERI IS AN OPEN FOR READING PERI THE FILE 19 22X2 ...[ IS POSITIONED AFTER THE FIRST RECORD AND MTOBJ ENTERED TO SET 21 22YS ...[ THE REPLY WORD, OR IF THE PERI IS ^OPEN FOR WRITING^ (INCLUDING MODE 20 232L ...[ #300 ON AN EMPTY FILE) THE FILE IS EMPTIED AND A HEADER LABEL IS 21 234D ...[ WRITTEN TO THE FILE WHICH IS THEN POSITIONED AFTER IT BEFORE ENTERING 11 236= ...[ MTOBJ TO SET THE REPLY WORD 4 2384 ...[ 19 239W ...[ THE SEGMENT IS ALSO ENTERED AT K2MTSTART BY ACROSS FROM MTOBJ 20 23?N ...[ WHEN A RENAME PERI IS ENCOUNTERED. AFTER CHECKING FOR A MONITOR 21 23*G ...[ EVENT ALL EXISTING USAGE BLOCKS ARE FREECORED (INCLUDING WRITE BLOCKS) 20 23C# ...[ AND THE SUBSEQUENT PATH IS SIMILAR TO AN ^OPEN FOR WRITING PERI. 4 23F6 ...[ 19 23GY ...[ THE K4MTSTART ENTRY POINT IS ENTERED ACROSS FROM MTOBJ WHEN 19 23JQ ...[ A CLOSE OR UNLOAD PERI IS ENCOUNTERED & SIMPLY RELEASES THE 21 23LJ ...[ PERIPHERAL CHANNEL AFTER CHECKING FOR A MONITOR EVENT. USAGE BLOCKS 11 23NB ...[ WILL BE CLEARED UP BY CLOSE. 4 23Q8 ...[ 4 23S2 ...[ 16 23TS ...[ FOR FORMAT OF MT FILESTORE FILES SEE PRM 5.5.3.2 20 23XL ...[ FREADWORD : B0-11 :INDEX BLOCKLET POINTER RELATIVE TO FBLKS*BLN 17 23_D ...[ B12-23:WORD POINTER WITHIN INDEX BLOCKLET 4 243= ...[ 20 2454 ...[ THIS SEGMENT PERFORMS NO BACKING STORE TRANSFERS BUT USES MTOBJ 18 246W ...[ AND MTCODE TO SET UP INDEX BUFFERS & RELIES ON MTOBJ TO 13 248N ...[ FREE THEM (EXCEPT IN THE RENAME CASE). 4 24=G ...[ 16 24## ...[ IT IS ASSUMED THAT COMMUNAL WRITING IS PROHIBITED 4 24B6 ...[ 4 24D6 [ 17 24PS ...ZFINDEX [ DO ) BUFFER 15 253G ...#HAL FINDEX+FILE,0 [ ) 16 25*8 ...ZFINDEXW [ ) BLOCK 15 25LW ...#HAL FINDEXW+FILE,0 [ NOT ) 16 25YJ ...#HAL FILE+FURB,0 [ ) TYPES 15 26== ...#HAL FILE+FUWB,0 [ DISTURB ) 4 26HY ...[ 20 26TL ... BITDEFS AWORK4,0,NOTOPENMODE,,,MODE3C,OUTPUT,RENAME,SCRATCH 4 277# ...[ 21 27F2 ...OWNMON #34000 [OPEN PERI ADDITIVE MODE (IGNORED) 4 27QN ...[ 19 284B ...MODE100 #100 [OPEN FOR READING & WRITING 16 28B4 ... [ WPR IRRELEVANT 19 28MQ ...MODE200 #200 [OPEN FOR READING : NO WPR 19 28_D ...MODE300 #300 [OPEN FOR READING & WRITING 15 29?6 ... [ WPR NEEDED 16 29JS ...MODE400 #400 [OPEN FOR OUTPUT 17 29WG ...MODE600 #600 [OPEN SCRATCH TAPE 4 2=88 ...[ 19 2=FW ...TSN 4H TSN [REPLY WORD FOR OPEN PERIS 4 2=RJ ...[ 11 2?5= ...[ SCRATCH TAPE HEADER LABEL 21 2?BY ...THEAD 0,24HHDDRHDDR TSNSCRATCH TAPE,0,0,0,0,0 [ DO ) 21 2?NL ...#REP 10 [ ) 21 2#2# ... +0 [ NOT ) 21 2##2 ...THDDR 4HHDDR [ ) 21 2#KN ...TEND 4HEND [ DISTURB ) 4 2#XB ...[ 9 2*9B TMARK 4HMARK 4 2*P2 ...[ 5 2B8L ...ZFEXTRA 10 2BN= ...#HAL FILE+FEXTRA,0 4 2C7W ...[ 9 2CMG ...[ LINKS FOR TOPCA 6 2D76 ...STARTLINK 9 2DLQ ... LINK MTSTART,1 5 2F6B ...OBJLINK 9 2FL2 ... LINK MTOBJ,1 4 2G5L ...[ 4 2GK= ...[ 15 2H4W ...TOPCA [CHANGE CURRENT ACTIVITY TO APET 16 2HJG ...[ ON ENTRY X1->LINK TO BE LEFT IN AOLPT 8 2J46 ... TOPCA1 0(1) 7 2JHQ ... EXIT 4 0 4 2K3B ...[ 4 2KH2 ...[ 19 2L2L ...TESTMON [EXIT IF MONITOR OFF : REPORT EVENT IF MONITOR ON 15 2LG= ...[ EXPECTS X5=MONITOR TYPE & X2=FX2 8 2L_W ... SBX 6 FX1 15 6Y8G TESTMON APETADDR(2),5,FTYPNO(2),XMONITOR 7 6_MB ADX 6 1 15 6_M_ ... EXIT 6 0 [MONITOR OFF 4 6_NJ ...[ 15 6_P7 ...XMONITOR [MONITOR ON 18 6_PQ ... ADN 1 OBJLINK [LEAVE LINK TO K1MTOBJ 20 6_Q* ... LDX 6 FTYPNO(2) [PERIPHERAL TYPE/MODE FOR REPMON 19 6_QY ... LDX 7 ACAP(2) [PROGRAM CONTROL AREA ADDRESS 8 6_RH ... CALL 4 TOPCA 17 6_S6 ... REPMON 1 [REPORT MONITOR EVENT 4 6_SP ...[ 4 6_T# ...[ 17 6_TX ...SINDEX [GET POINTER TO 1ST INDEX BLOCKLET IN X3 15 6_WG ...[ EXPECTS & LEAVES X1=FX1,X2=FX2 12 6_X5 ...[ DESTROYS X4; LINK X6 14 6_XN ... TOPFCA2 3 [X3->FCA 15 6_Y? ... PSTAC 3,3 [X3->FSTACK 14 6_YW ... BFCBX 2,3 [X2->FCB 19 6__F ... LDX 4 FBLKS(2) [GET 1ST BLKLT NO. IN FILE 8 7224 ... LDX 2 FX2 5 722M ...NEXTBL 16 723= ... LDX 3 FPTR(3) [GET NEXT BLOCK 19 723T ... BXE 3 CXFI,NOTFOUND [EXIT IF END OF FILE CHAIN 9 724D ... LDX 0 ATYPE(3) 16 7253 ... BXE 0 FFSFCB,NOTFOUND [EXIT IF NEXT FCB 15 725L ... BXE 0 ZFEXTRA(1),NOTFOUND [END OF !RING 17 7269 ... BXE 0 ZFINDEX(1),PHOUND [MT INDEX BLKLT FOUND 21 726S ... BXU 0 ZFINDEXW(1),NEXTBL [TRY NEXT BLOCK IF NOT MT INDEX BLKLT 5 727C ...PHOUND 20 7282 ... BXE 4 BACK2(3),(6) [EXIT IF 1ST INDEX BLKLT FOUND 17 728K ... BRN NEXTBL [ELSE TRY NEXT BLOCK 5 7298 ...NOTFOUND 8 729R ... SBX 6 FX1 19 72=B ... DOWN MTOBJ,7 [READ 1ST INDEX BLKLT FROM BS 9 72=_ ... LDN 3 FYILLINS 18 72?J ... TESTRPN2 OK,QERROR [J IF FAILED OR CORRUPT 8 72#7 ... ADX 6 FX1 19 72#Q ... BRN SINDEX [START AGAIN TO LOCATE BLKLT 4 72** ...[ 4 72*Y ...[ 20 72BH ...ZCLOSEPERI [ENTRY FROM MTOBJ FOR CLOSE PERI 4 72C6 ...[ 9 72CP ... LDN 5 BBCLOSE 9 72D# ... CALL 6 TESTMON 20 72DX ... RELOFP FTYPNO(2) [MONITOR OFF : RELEASE CHANNEL 4 72FG ...[ 4 72G5 ...[ 16 72GN ...ZFIRSTPERI [INITIAL ENTRY POINT : SET BY ASSIGN 4 72H? ...[ 15 72HW ... STOZ AWORK4(2) [SWITCH WORD 9 72JF ... LDX 0 GIVE(2) 20 72K4 ... BNG 0 NOTOPEN [J IF GIVE QUALIFIER SPECIFIED 16 72KM ... LDX 4 EVENT4(2) [TYPE-MODE WORD 14 72L= ... ANDX 4 BSP16 [B9-23 9 72LT ... LDX 0 OWNMON(1) 7 72MD ... ANDX 0 4 20 72N3 ... BZE 0 NOOWN [J. IF #34000 MODE NOT PRESENT 21 72NL ... ERX 0 OWNMON(1) [CHECK IF #34000 OR SOME OTHER MODE 20 72P9 ... BNZ 0 NOTOPEN [J. IF NOT AN OPEN MODE AT ALL 20 72PS ... ERX 4 OWNMON(1) [REMOVE #34000 FROM THE MODE WORD 5 72QC ...NOOWN 12 72R2 ... BXE 4 MODE300(1),YESMODE300 11 72RK ... BXE 4 MODE100(1),WPR 11 72S8 ... BXU 4 MODE200(1),MORECH 13 72SR ... JBC WPR,FILERING(2),BAMWRITE 21 72TB ... LDN 3 FYMODER [MODE 200 ILLEGAL IF OPEN FOR WRITING 9 72T_ ... BRN QERROR 4 72WJ ...[ 6 72X7 ...YESMODE300 16 72XQ ... BS 2,MODE3C [I.E. MODE 300 9 72Y* ... BRN NOTMODE 4 72YY ...[ 5 72_H ...MORECH 12 7326 ... BXE 4 MODE400(1),NOTMODE 18 732P ... BXU 4 MODE600(1),NOTOPEN [J IF NOT AN OPEN MODE 9 733# ... BS 2,SCRATCH 9 733X ... BRN NOTMODE 4 734G ...[ 11 7355 ...[ NOT AN OPEN PERI 5 735N ...NOTOPEN 10 736? ... BS 2,NOTOPENMODE 16 736W ... TOPFCAB2 1,2 [X1->FCA; X2->FCB 9 737F ... LDX 0 FBLMOD(2) 9 7384 ... SBN 0 FBLKS-A1 16 738M ... BNZ 0 POSITION [J. IF NOT EMPTY 9 739= ... LDN 3 FYENDFILE 21 739T ... JBC QERROR,1,BAMWRITE [OPEN EMPTY FILE FOR READING:ILLEGAL 9 73=D ... LDN 3 FLOC1(2) 8 73?3 ... SMO FX2 8 73?L ... LDN 4 ACA3 20 73#9 ... MOVE 3 3 [SET UP THE FILE NAME IN ACA3,4,5 9 73#S ... BRN NOTOPEMP 4 73*C ...[ 20 73B2 ...RENAMEPERI [ENTRY FROM MTOBJ FOR RENAME PERI 4 73BK ...[ 9 73C8 ... LDN 5 BBRENAME 9 73CR ... CALL 6 TESTMON 15 73DB ... STOZ AWORK4(2) [MONITOR OFF 9 73D_ ... BS 2,RENAME 4 73FJ ...[ 17 73G7 ...NOTMODE [EMPTY THE FILE IF RENAME,MODE 400 OR 600 4 73GQ ...[ 9 73H* ... BS 2,OUTPUT 9 73HY ... LDN 3 FYNOWRITE 21 73JH ... JBC QERROR,FILERING(2),BAMWRITE [MODES 300,400,500,600 ILLEGA 19 73K6 ... [UNLESS FILE OPEN FOR WRITING 21 73KP ...WPR LDN 5 9 [CHECK 9 WORDS EVEN IF MODE 500 OR 60 18 73L# ... CHECKA ACAP(2),5,RV,APETADDR(2),,QCOOR,,,K1MTSTART 17 73LX ...QCOOR [CHECK CONTROL AREA 9 73MG ... LDX 6 ACAP(2) 9 73N5 ... LDN 7 ACA1(2) 21 73NN ... FOUTMOVE APETADDR(2),6,7,5,HLOCK1,2 [MOVE CONTROL AREA TO ACA1 - A 20 73P? ... JBC NOUT,2,OUTPUT [J TO POSITION IF MODE 100 OR 200 20 73PW ... JBS NOUT,2,MODE3C [J TO POSITION FILE IF MODE 300 16 73QF ... JBC NOTOPEMP,2,RENAME [J UNLESS RENAME 19 73R4 ...MORE [RENAME : FILE EMPTIED - FREE ALL USAGE BLOCKS 7 73RM ... TOPFCA2 3 8 73S= ... PSTAC 3,3 5 73ST ...MOREBLKS 16 73TD ... LDX 3 FPTR(3) [GET NEXT BLOCK 19 73W3 ... BXE 3 CXFI,NOTOPEMP [J IF NO MORE USAGE BLOCKS 9 73WL ... LDX 0 ATYPE(3) 19 73X9 ... BXE 0 FFSFCB,NOTOPEMP [J IF NO MORE USAGE BLOCKS 18 73XS ... BXE 0 ZFEXTRA(1),NOTOPEMP [ DITTO (WORKFILE) 7 73YC ... LDN 4 5 5 73_2 ...MORETY 7 73_K ... SBN 4 1 19 7428 ... BZE 4 MOREBLKS [J TO TRY NEXT BLOCK IN CHAIN 7 742R ... SMO 4 21 743B ... BXU 0 ZFINDEX-1(1),MORETY [TRY EACH USAGE BLOCK TYPE IN TURN 7 743_ ... FREECORE 3 8 744J ... BRN MORE 4 7457 ...[ 5 745Q ...NOTOPEMP 7 746* ... TOPFCA 3 18 746Y ... SUBCUBS 3,FILE,JOB [REMOVE FILE FROM CUBS 19 747H ...Z300 [MODE 300 ON EMPTY FILE MUST 18 7486 ... TOPFCB2 2 [ WRITE A HEADER LABEL 11 748P ... MBS 2,BFALTR,BFALTB 9 749# ... LDN 0 FBLKS-A1 9 749X ... STO 0 FBLMOD(2) 15 74=G ... STOZ BULKMOD(2) [ EMPTY FILE 10 74=N ... FSHSKIP B,NOTIFINB 4 74=W ...( 20 74?5 ...#SKI 0 [CODE FOLLOWING WAS TO ENSURE MT FILES HAD AT LEAST 16 74?N ...( [64 BLOCKS - PROBABLY UNNECESSARY NOW 15 74#? ...[ (TO ASSIST BS ALLOCATION SYSTEM) 9 74#W ... SBX 0 FUSEBL(2) 18 74*F ... BZE 0 NOBLOCKS [J IF NO BLOCKS IN FCB 18 74B4 ... ADN 0 AMTFLSZ [GOT ENUFF IF >AMTFLSZ 9 74BM ... BNG 0 NALRDY 9 74C= ... SBN 0 AMTFLSZ+2 7 74CT ... NGX 3 0 11 74DD ... SETUPCOR 3,1,BSTB,FULLB 7 74F3 ... TOPFCB2 2 8 74FL ... STO 3 A1(1) 8 74G9 ... ADN 1 A1+1 9 74GS ... LDN 0 BSPRE(2) 9 74HC ... MOVE 0 511(3) 9 74J2 ... LDN 0 FBLKS-A1 9 74JK ... STO 0 FUSEBL(2) 7 74K8 ... FREEBAX 10 74KR ... MFREEW BSTB,EMPTYB 7 74LB ... TOPFCB2 2 5 74L_ ...NOBLOCKS 7 74MJ ... LDX 3 2 12 74N7 ... ALTLEND 3,FBLKS-A1+AMTFLSZ 18 74NQ ... LDN 1 AMTFLSZ [PICK UP BLOCKS FOR FILE 8 74P* ... WHATBACK 7,1 7 74PY ... TOPFCB2 2 10 74QH ... MHUNTW 1,BSTB,FULLB 8 74R6 ... ADN 1 A1+1 8 74RP ... ADN 2 BSPRE 19 74S# ... MOVE 1 AMTFLSZ+1 [MOVE IN THE BLOCK NUMBERS 8 74SX ... SBN 1 A1+1 7 74TG ... FREECORE 1 7 74W5 ... TOPFCB2 2 11 74WN ... LDN 0 AMTFLSZ+FBLKS-A1 9 74X? ... STO 0 FUSEBL(2) 5 74XW ...NALRDY 4 74YF ...) 5 74YM ...NOTIFINB 4 74YT ...) 8 74_4 ... LDX 2 FX2 7 74_M ... TOPFCA2 1 10 752= ... LDN 0 FBLKS*BLN-1 8 752T ... SLL 0 12 17 753D ... STO 0 FREADWORD(1) [SET BLKLT PTR TO -1 17 7543 ... STOZ AWORK2(2) [BULK FILE ADDRESS 18 754L ... DOWN MTCODE,4 [EXTEND INDEX TO 1 BLOCK 15 7559 ... TESTREP2 REFUSED,REFUSED,FILEFULL,ZGEOERR 16 755S ... CALL 6 SINDEX [GET X3->FINDEX 10 756C ... LDX 0 ZFINDEXW(1) 17 7572 ... NAMEX 3 [NAME BLOCK FINDEXW 18 757K ... LDN 0 AMTQUAL [POSITION AFTER HEADER 10 7588 ... SMO FILERING(2) 9 758R ... ADS 0 FREADWORD 8 759B ... ADN 3 A1 9 759_ ... LDN 2 THEAD(1) 19 75=J ... MOVE 2 AMTSENT+4 [WRITE THE HEADER LABEL & END 18 75?7 ... LDX 2 FX2 [ (NAME SCRATCH TAPE) 20 75?Q ... JBS NEND,2,SCRATCH [J IF SCRATCH ELSE PUT IN NAME 21 75#* ... LDN 6 ACA3(2) [MOVE FILENAME ETC FROM CONTROL AREA 16 75#Y ... LDN 7 4(3) [ TO HEADER LABEL 7 75*H ... MOVE 6 6 8 75B6 ... BRN NEND 4 75BP ...[ 14 75C# ...REFUSED [BACKING STORE LIMIT REACHED 10 75CX ... SMO FILERING(2) 15 75DG ... NGS 2 FREADWORD [REINITIALIZE 18 75F5 ... ADN 1 STARTLINK [LEAVE LINK TO K1MTSTART 8 75FN ... CALL 4 TOPCA 16 75G? ... ACROSS OLPODD,2 [ASK FOR 1 MORE 4 75GW ...[ 12 75HF ...NOUT [MODES 100, 200 & 300 7 75J4 ... TOPFCB2 1 9 75JM ... LDX 0 FBLMOD(1) 9 75K= ... SBN 0 FBLKS-A1 19 75KT ... BNZ 0 POSITION [J TO POSITION IF NOT EMPTY 20 75LD ... JBS Z300,2,MODE3C [WRITE HEADER IF EMPTY & MODE 300 5 75M3 ...TAPEND 9 75ML ... LDN 3 FYENDFILE 9 75N9 ... BRN QERROR 4 75NS ...[ 18 75PC ...RV [RESERVATION VIOLATION 9 75Q2 ... LDN 3 FYNOCA 19 75QK ...QERROR [REPORT ILLEGAL : OLPODD EXPECTS IDENTIFIER IN X3 8 75R8 ... LDX 1 FX1 18 75RR ... ADN 1 STARTLINK [LEAVE LINK TO K1MTSTART 16 75SB ... CALL 4 TOPCA [CHANGE TO APET 17 75S_ ... ACROSS OLPODD,4 [TO REPORT ILLEGAL 4 75TJ ...[ 14 75W7 ...POSITION [POSITION AFTER 1ST RECORD 8 75WQ ... LDX 2 FX2 7 75X* ... TOPFCA2 1 10 75XY ... LDX 0 FREADWORD(1) 19 75YH ... BPZ 0 NEND [JIF FILE ALREADY POSITIONED 9 75_6 ... LDN 0 FBLKS*BLN 8 75_P ... SLL 0 12 19 762# ... STO 0 FREADWORD(1) [SET INDEX POINTER TO B.O.F. 8 762X ... LDX 1 FX1 19 763G ... CALL 6 SINDEX [GET X3-> 1ST INDEX BLOCKLET 9 7645 ... LDX 0 A1+1(3) 17 764N ... BNG 0 NDATA [J UNLESS DATA RECORD 9 765? ... LDN 0 AMTDATA 8 765W ... BRN TPOS 4 766F ...[ 5 7674 ...NDATA 18 767M ... BXU 0 TMARK(1),NMARK [CHECK WHETHER TAPEMARK 9 768= ... LDN 0 AMTMARK 8 768T ... BRN TPOS 4 769D ...[ 5 76=3 ...NMARK 18 76=L ... BXE 0 TEND(1),TAPEND [ILLEGAL IF FILE EMPTY 9 76?9 ... LDN 0 AMTQUAL 4 76?S ...TPOS 10 76#C ... SMO FILERING(2) 20 76*2 ... ADS 0 FREADWORD [SET INDEX POINTER TO NEXT RECORD 4 76*K ...NEND 20 76*W ... STOZ AWORK1(2) [CLEAR E.O.T. MARKER FOR MTOBJ 21 76B8 ... SETBIT 0,GIVE(2) [FILE NOW OPEN FOR ALLOT EXTRACODE 13 76BR ... JBS NOTSTANDARD,2,NOTOPENMODE 8 76CB ... SMO FX1 8 76C_ ... LDX 0 TSN 20 76DJ ... STO 0 ACA2(2) [REPLY WORD TO BE SET BY MTOBJ 21 76F7 ... ACROSS MTOBJ,3 [TO SET REPLY WORD & RESTART PROGRAM 4 76FQ ...[ 6 76G* ...NOTSTANDARD 16 76GY ... ACROSS MTOBJ,1 [TO PROCESS PERI 4 76R5 ...[ 5 76T6 ...ZGEOERR 10 76X7 ... GEOERR 1,FILEFULL 4 76_8 ...[ 10 773= MENDAREA 30,K99MTSTART 4 77GW #END 8 ____ ...75566567000200000000