        SUBT    Low level Filing System interfaces => &.Hdr.LowFSi

OldOpt  SETA    {OPT}
        OPT     OptNoList+OptNoP1List

; ***********************************
; ***    C h a n g e   L i s t    ***
; ***********************************

; Date       Name  Description
; ----       ----  -----------
; 03-Mar-88  SKS   Add fsinfo_flushnotify
; 08-Mar-88  SKS   Add fsinfo_fsfilereadinfonolen, fsfile_ReadInfoNoLen
; 18-Mar-88  BC    Add fsfunc_FileInfo
; 21-Apr-88  SKS   Add fsinfo_fileinfo
; 13-Jul-88  SKS   Add fsinfo_nfiles, removed pre 1-20 mods

        MACRO
$label  FSHeader $info
$label._FSInfoBlock
        DCD     $label._Name        -$label._ModuleBase
        DCD     $label._StartupText -$label._ModuleBase
        DCD     $label._Open        -$label._ModuleBase
        DCD     $label._Get         -$label._ModuleBase
        DCD     $label._Put         -$label._ModuleBase
        DCD     $label._Args        -$label._ModuleBase
        DCD     $label._Close       -$label._ModuleBase
        DCD     $label._File        -$label._ModuleBase
        DCD     $info
        DCD     $label._Func        -$label._ModuleBase
        DCD     $label._GBPB        -$label._ModuleBase
 ASSERT (.-$label._FSInfoBlock) = FS_size
        MEND


; Offsets from start of FS information block in a FS module

         ^      0
FS_name  #      4
FS_startuptext # 4
FS_open  #      4 ; --\
FS_get   #      4 ;   |
FS_put   #      4 ;   } Module offsets in same order and offset as fscb_xxx
FS_args  #      4 ;   |
FS_close #      4 ;   |
FS_file  #      4 ; --/
FS_info  #      4
FS_func  #      4 ; --\
FS_gbpb  #      4 ; --/ For fast unbuffered gbpb
FS_size  *      @-FS_name

; Bits in FS_info

fsinfo_special          * 1 :SHL: 31
fsinfo_notpermanent     * 1 :SHL: 30
fsinfo_nullnameok       * 1 :SHL: 29
fsinfo_alwaysopen       * 1 :SHL: 28    ; Try to open regardless of file exist
fsinfo_flushnotify      * 1 :SHL: 27    ; Tell filing system when flushing
fsinfo_fsfilereadinfonolen * 1 :SHL: 26 ; fsfile_ReadInfoNoLen supported
fsinfo_fileinfo         * 1 :SHL: 25    ; fsfunc_FileInfo supported
fsinfo_setcontexts      * 1 :SHL: 24    ; fsfunc_SetContexts supported

fsinfo_nfiles           * &FF :SHL: 8   ; Min number of files openable on fs
                                        ; 0 -> unlimited by fs
fsinfo_number           * &FF :SHL: 0


; Reason codes passed to fscb^.File

fsfile_Load          *  &FF
fsfile_Save          *  0
fsfile_WriteInfo     *  1
fsfile_WriteLoad     *  2
fsfile_WriteExec     *  3
fsfile_WriteAttr     *  4
fsfile_ReadInfo      *  5
fsfile_Delete        *  6
fsfile_Create        *  7
fsfile_CreateDir     *  8
fsfile_ReadInfoNoLen *  9


; Reason codes passed to fscb^.Open

                    ^ 0
fsopen_ReadOnly     # 1
fsopen_CreateUpdate # 1
fsopen_Update       # 1


; Bits in r0 passed back from fscb^.Open

fsopen_WritePermission  * 1 :SHL: 31
fsopen_ReadPermission   * 1 :SHL: 30
fsopen_IsDirectory      * 1 :SHL: 29
fsopen_UnbufferedGBPB   * 1 :SHL: 28
fsopen_Interactive      * 1 :SHL: 27
fsopen_DeviceIdentity   * &FFFFFFFF :SHR: (32-27)


; Reason codes passed to fscb^.Args

                        ^ 0
fsargs_ReadPTR          # 1     ; ARGS 0        Only unbuffered fs
fsargs_SetPTR           # 1     ; ARGS 1        Only unbuffered fs
fsargs_ReadEXT          # 1     ; ARGS 2        Only unbuffered fs
fsargs_SetEXT           # 1     ; ARGS 3        All fs
fsargs_ReadSize         # 1     ; ARGS 4        Only unbuffered fs
fsargs_EOFCheck         # 1     ; ARGS 5        Only unbuffered fs
fsargs_Flush            # 1     ; ARGS 255      Only unbuffered fs (or Nick)
fsargs_EnsureSize       # 1     ; ARGS 6        All fs
fsargs_WriteZeroes      # 1     ; internal      Only buffered fs
fsargs_ReadLoadExec     # 1     ; internal      All fs


; Reason codes passed to fscb^.Func

                        ^ 0
fsfunc_Dir              # 1 ; FSC 0
fsfunc_Lib              # 1 ; FSC 1
fsfunc_Cat              # 1 ; FSC 5
fsfunc_Ex               # 1 ; FSC 6
fsfunc_LCat             # 1 ; FSC 7
fsfunc_LEx              # 1 ; FSC 8
fsfunc_Info             # 1 ; FSC 9
fsfunc_Opt              # 1 ; FSC 10
fsfunc_Rename           # 1 ; FSC 25
fsfunc_Access           # 1 ; FSC 24
fsfunc_Bootup           # 1 ; FSC 15
fsfunc_ReadDiscName     # 1 ; GBPB 5
fsfunc_ReadCSDName      # 1 ; GBPB 6
fsfunc_ReadLIBName      # 1 ; GBPB 7
fsfunc_ReadDirEntries   # 1 ; GBPB 9
fsfunc_ReadDirEntriesInfo # 1 ; GBPB 10
fsfunc_ShutDown         # 1 ; FSC 23
fsfunc_PrintBanner      # 1 ; internal
fsfunc_SetContexts      # 1 ; FSC ??
fsfunc_CatalogObjects   # 1 ; GBPB 11
fsfunc_FileInfo         # 1 ; FSC 32 *FileInfo

        OPT OldOpt
        END
