DOS 3.30 source code leak
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

; 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