MACRO 00001000 FVS &SECT 00002000 PUSH PRINT 00002200 AIF ('&SYSPARM' NE 'SUP').ACC01 00002400 PRINT OFF,NOGEN 00002600 .ACC01 ANOP 00002800 AIF ('&SECT' EQ 'CSECT').CSECT 00003000 FVSECT DSECT 00004000 AGO .CONT 00005000 .CSECT ANOP 00006000 FVS DS 0D 00007000 ENTRY FVS 00008000 ENTRY ADTFVS 00009000 ENTRY KXFLAG 00010000 ENTRY UFDBUSY 00011000 .CONT ANOP 00012000 DISK$SEG DS 15F (1) FOR FSTLKP, FSTLKW, ACTLKP, TRKLKP, QQTRK 00013000 REGSAV3 DS 15F (2) FOR RDBUF, WRBUF, FINIS, STATE, POINT 00014000 RWFSTRG DS 18F (3) REMAINING STORAGE FOR RDBUF, WRBUF, FINIS 00015000 * 00016000 ADTFVS DC 2F'0' ADTLKP 00017000 * 00018000 * SAVE-AREA FOR LOWEST-LEVEL ROUTINES: 00019000 * E.G. READMFD, RELUFD, UPDISK, TYPSRCH, ADTLKW 00020000 REGSAV0 DS 15F -- (1) SAVED R0-R15 00021000 DC AL3(00) -- (2) FIRST 3 BYTES OF RETURN-CODE 00022000 ERRCOD0 DC AL1(*-*) -- (3) ERROR-CODE GOES HERE 00023000 * 00024000 TRKLSAVE EQU REGSAV0 FOR TRKLKP/X ONLY WHEN CALLED BY QQTRK/X 00025000 * 00026000 * SAVE-AREA FOR NEXT-TO-LOWEST LEVEL ROUTINES: 00027000 * E.G. READFST, ERASE, ALTER, INTSVC-LOADMOD 00028000 REGSAV1 DS 15F -- (1) 00029000 DC AL3(00) -- (2) 00030000 ERRCOD1 DC AL1(*-*) -- (3) 00031000 * 00032000 F65535 DC F'65535' = X'0000FFFF' 00033000 * 00034000 FW4 DC F'4' 00035000 HW4 EQU FW4+2 00036000 * 00037000 VFREE DC V(FREE) -- (1) 00038000 F100 DC F'100' -- (2) 00039000 * 00040000 VFRET DC V(FRET) (INTO R15) 00041000 JSR0 DC F'0' R0 AND ... 00042000 JSR1 DC F'0' R1 SAVED HERE FOR FRET CALLS. 00043000 * 00044000 * PARAMETER-LIST TO READ/WRITE MFD... 00045000 RWMFD DC A(*-*) -- CORE-ADDRESS 00046000 F800 DC F'800' -- 800 BYTES 00047000 DC A(HW4) 00048000 FVSDSKA DC A(*-*) -- ADD. OF ACTIVE-DISK-TABLE 00049000 * 00050000 DSKLST DS 0F ALL-PURPOSE RDTK/WRTK P-LIST... 00051000 DSKLOC DC A(*-*) CORE LOC. OF ITEM 00052000 RWCNT DC A(*-*) BYTE-COUNT (USUALLY 800) 00053000 DSKADR DC A(*-*) DISK ADDRESS OF ITEM 00054000 ADTADD DC A(*-*) ADDRESS OF CORRECT ACTIVE-DISK-TABLE 00055000 * 00056000 FINISLST DC CL8'FINIS' P-LIST TO CLOSE ALL FILES 00057000 DC CL8'*' 00058000 DC CL8'*' 00059000 DC CL2'*' 00060000 * 00061000 DS 0H HALFWORD CONSTANTS ... 00062000 FFF DC X'FFFF' MEANS NO SIGNIFICANT DATA PAST 215TH BYTE 00063000 FFE DC X'FFFE' 1968-ERA MFD STILL SUPPORTED ON INPUT ONLY 00064000 FFD DC X'FFFD' NEWEST SIGNAL FOR FULL 2314 HANDLING 00065000 * 00066000 * 'SIGNAL' = SCRATCH HALFWORD USED BY READMFD OR ERASE... 00067000 SIGNAL DC H'0' = 0000, X'FFFF', X'FFFE', OR X'FFFD' 00068000 SWTCH EQU SIGNAL+1 00, FF, FE, OR FD 00069000 * 00070000 UFDBUSY DC X'00' NONZERO MEANS 'UFD IS BUSY BEING UPDATED' 00071000 KXFLAG DC X'00' 'KX' FLAGS 00072000 KXWANT EQU X'80' KX WANTED ASAP 00073000 KXWSVC EQU X'01' HOLD KX UNTIL ANY SVC ACTIVITY 00074000 * 00075000 DC X'00' RESERVED FOR FUTURE USE @VM08901 00076100 FLGSAVE DC X'00' FOR SCRATCH USE (E.G. BY RELUFD) 00077000 * 00078000 * FLAG BITS FOR 'UFDBUSY' FLAG... 00079000 WRBIT EQU X'80' WRBUF 00080000 UPBIT EQU X'40' UPDISK - READMFD 00081000 FNBIT EQU X'20' FINIS 00082000 ERBIT EQU X'10' ERASE - ALTER - READFST 00083000 DIOBIT EQU X'08' RDTK/WRTK 00084000 * THE FOLLOWING BITS ARE FOR ROUTINES WHICH DO NOT UPDATE THE DISK, 00085000 * BUT WHICH CAN'T BE INTERRUPTED BY A KX ANYWAY. 00086000 ABNBIT EQU X'02' DMSABN -- ABEND RECOVERY ROUTINE 00087000 ITSBIT EQU X'01' DMSITS -- SVC HANDLING ROUTINE 00088000 * 00089000 FVSFLAG DC X'00' (FOR GENERAL USE - AS NEEDED) 00090000 * 00091000 * MISCELLANEOUS STORAGE USED BY ERASE (OR ALTER) .... 00092000 ERSFLAG DC X'00' FLAG FOR USE BY ERASE OR ALTER 00093000 * 00094000 FVSERAS0 DC F'0' (1) - R0 TO/FROM FSTLKW (FOR ERASE) 00095000 FVSERAS1 DC F'0' (2) - R1 TO ACTLKP OR FSTLKW (FOR ERASE) 00096000 FVSERAS2 DC F'0' (3) ADDRESS OF FREE STORAGE USED BY ERASE 00097000 SPACE 00098000 READCNT DC F'0' CURRENT READ COUNT (DMSBRD) @VM08888 00099100 SPACE 00099200 DC F'0' RESERVED FOR FUTURE USE @VM08888 00099300 SPACE 1 00100000 * 00101000 * FILE STATUS TABLE (FST) COPY FROM "STATE" 00102000 * 00103000 STATEFST DS 0D FULL FST OF 'STATED' FILE 00104000 FVSFSTN DC D'0' FILENAME -0 00105000 FVSFSTT DC D'0' FILETYPE -8 00106000 FVSFSTDT DC 2H'0' DATE/TIME LAST WRITTEN -16,18 00107000 FVSFSTWP DC H'0' WRITE POINTER (ITEM ID) -20 00108000 FVSFSTRP DC H'0' READ POINTER (ITEM ID) -22 00109000 FVSFSTM DC H'0' FILEMODE -24 00110000 FVSFSTIC DC H'0' N'ITEMS IN FILE -26 00111000 FVSFSTCL DC H'0' DA(FIRST CHAIN LINK) -28 00112000 FVSFSTFV DC C' ' FIXED(F) / VARIABLE(V) INDICATOR -30 00113000 FVSFSTFB DC X'00' FLAG BYTE -31 00114000 FVSFSTIL DC F'0' L'ITEMS -32 00115000 FVSFSTDB DC H'0' N'DATA BLOCKS -36 00116000 FVSFSTYR DC 2C' ' YEAR LAST WRITTEN -38 00117000 DC F'0' HRC105DS 00117100 FVSFSTAB DC F'0' Alternate block count - 44 HRC105DS 00117200 FVSFSTAI DC F'0' Alternate item count - 48 HRC105DS 00117300 DC XL1'00' HRC105DS 00117400 DC XL1'00' HRC105DS 00117500 FVSFSTAT DC CL6' ' Alternate date and time - 54 HRC105DS 00117600 DC F'0' Reserved HRC105DS 00117700 * 00118000 FVSFSTAD DC A(0) A(ADT FOR THIS FILE) 00119000 STATER0 EQU FVSFSTAD 00120000 FVSFSTAC DC A(0) A(REAL FST ENTRY FOR THIS FILE) 00121000 STATER1 EQU FVSFSTAC 00122000 * 00123000 STFSTSIZ EQU (*-STATEFST) STATEFST size in bytes HRC015DS 00123100 STFSTSDW EQU (STFSTSIZ+7)/8 STATEFST size in doublewords HRC015DS 00123200 * HRC015DS 00123300 EJECT 00124000 POP PRINT 00124100 MEND 00125000