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