mirror of https://github.com/AR1972/DOS3.3
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.7 KiB
124 lines
3.7 KiB
; SCCSID = @(#)cpmfcb.asm 1.1 85/04/10
|
|
; SCCSID = @(#)cpmfcb.asm 1.1 85/04/10
|
|
BREAK <File Control Block definition>
|
|
|
|
;
|
|
; Field definition for FCBs
|
|
; The FCB has the following structure:
|
|
;
|
|
; +---------------------------+
|
|
; | Drive indicator(byte) |
|
|
; +---------------------------+
|
|
; | Filename (8 chars) |
|
|
; +---------------------------+
|
|
; | Extension (3 chars) |
|
|
; +---------------------------+
|
|
; | Current Extent(word) |
|
|
; +---------------------------+
|
|
; | Record size (word) |
|
|
; +---------------------------+
|
|
; | File Size (2 words) |
|
|
; +---------------------------+
|
|
; | Date of write |
|
|
; +---------------------------+
|
|
; | Time of write |
|
|
; +---------------------------+
|
|
;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
|
|
; C A V E A T P R O G R A M M E R ;
|
|
; ;
|
|
; +---------------------------+
|
|
; | 8 bytes reserved |
|
|
; +---------------------------+
|
|
; ;
|
|
; C A V E A T P R O G R A M M E R ;
|
|
;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
|
|
; | next record number |
|
|
; +---------------------------+
|
|
; | random record number |
|
|
; +---------------------------+
|
|
;
|
|
|
|
sys_fcb STRUC
|
|
fcb_drive DB ?
|
|
fcb_name DB 8 DUP (?)
|
|
fcb_ext DB 3 DUP (?)
|
|
fcb_EXTENT DW ?
|
|
fcb_RECSIZ DW ? ; Size of record (user settable)
|
|
fcb_FILSIZ DW ? ; Size of file in bytes; used with the
|
|
; following word
|
|
fcb_DRVBP DW ? ; BP for SEARCH FIRST and SEARCH NEXT
|
|
fcb_FDATE DW ? ; Date of last writing
|
|
fcb_FTIME DW ? ; Time of last writing
|
|
;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
|
|
; C A V E A T P R O G R A M M E R ;
|
|
; ;
|
|
fcb_reserved DB 8 DUP (?) ; RESERVED
|
|
; ;
|
|
; C A V E A T P R O G R A M M E R ;
|
|
;----+----+----+----+----+----+----+----+----+----+----+----+----+----+----;
|
|
fcb_NR DB ? ; Next record
|
|
fcb_RR DB 4 DUP (?) ; Random record
|
|
sys_fcb ENDS
|
|
|
|
FILDIRENT = fcb_FILSIZ ; Used only by SEARCH FIRST and SEARCH
|
|
; NEXT
|
|
|
|
fcb_sfn EQU BYTE PTR fcb_reserved
|
|
|
|
; Note that fcb_net_handle, fcb_nsl_drive, fcb_nsld_drive and fcb_l_drive
|
|
; all must point to the same byte. Otherwise, the FCBRegen will fail.
|
|
; NOTE about this byte (fcb_nsl_drive)
|
|
; The high two bits of this byte are used as follows to indicate the FCB type
|
|
; 00 means a local file or device with sharing loaded
|
|
; 10 means a remote (network) file
|
|
; 01 means a local file with no sharing loaded
|
|
; 11 means a local device with no sharing loaded
|
|
|
|
;
|
|
; Network FCB
|
|
;
|
|
fcb_net_drive EQU BYTE PTR fcb_reserved+1
|
|
fcb_net_handle EQU WORD PTR fcb_reserved+2
|
|
fcb_netID EQU DWORD PTR fcb_reserved+4
|
|
|
|
;
|
|
; No sharing local file FCB
|
|
;
|
|
fcb_nsl_drive EQU BYTE PTR fcb_reserved+1
|
|
fcb_nsl_bits EQU BYTE PTR fcb_reserved+2
|
|
fcb_nsl_firclus EQU WORD PTR fcb_reserved+3
|
|
fcb_nsl_dirsec EQU WORD PTR fcb_reserved+5
|
|
fcb_nsl_dirpos EQU BYTE PTR fcb_reserved+7
|
|
|
|
;
|
|
; No sharing local device FCB
|
|
;
|
|
fcb_nsld_drive EQU BYTE PTR fcb_reserved+1
|
|
fcb_nsld_drvptr EQU DWORD PTR fcb_reserved+2
|
|
|
|
;
|
|
; Sharing local FCB
|
|
;
|
|
fcb_l_drive EQU BYTE PTR fcb_reserved+1
|
|
fcb_l_firclus EQU WORD PTR fcb_reserved+2
|
|
fcb_l_mfs EQU WORD PTR fcb_reserved+4
|
|
fcb_l_attr EQU BYTE PTR fcb_reserved+6
|
|
|
|
;
|
|
; Bogusness: the four cases are:
|
|
;
|
|
; local file 00
|
|
; local device 40
|
|
; local sharing C0
|
|
; network 80
|
|
;
|
|
; Since sharing and network collide, we cannot use a test instruction for
|
|
; deciding whether a network or a share check in involved
|
|
;
|
|
FCBDEVICE EQU 040h
|
|
FCBNETWORK EQU 080h
|
|
FCBSHARE EQU 0C0h
|
|
|
|
; FCBSPECIAL must be able to mask off both net and share
|
|
FCBSPECIAL EQU 080h
|
|
FCBMASK EQU 0C0h
|