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