72
|
1 *********************************************************************
|
|
2 * Defs for the MSDos file manager
|
|
3
|
|
4 * system direct page for MSF file manager
|
|
5
|
|
6 D.MSF equ $7c pointer to linked list of MSF paths
|
|
7
|
|
8 * path table (static storage) offsets
|
|
9
|
|
10 *** rev 2.2
|
|
11 V.DNS equ $1F disk density 8=Hi-density, 4=96tpi, 0=48tpi
|
|
12 V.BPB equ $20 pointer to disk information (64 bytes)
|
|
13 ***
|
|
14
|
|
15 V.FLG equ $22 FAT must be read if NE
|
|
16 V.CNT equ $23 number of paths open to this device
|
|
17 V.FAT equ $24 point to FAT (in reserved section of device table)
|
|
18
|
|
19 *** rev 2.1
|
|
20 V.FS equ V.FLG FAT size/256 (V.FLG no longer used)
|
|
21 ***
|
|
22
|
|
23 DRVBEG2 set $0e offset from beg. of device static storage to 1st drive table
|
|
24
|
|
25 modmem equ 0
|
|
26
|
|
27 type set FlMgr+Objct
|
|
28 revs set Reent+1
|
|
29
|
|
30 SS.DREAD set $80 direct sector read/write
|
|
31 SS.SREAD equ $84 direct sector read/write in system space
|
|
32 *SS.ATTR equ $85 get/set file attribute
|
|
33 SS.RENAM equ $86 rename file
|
|
34 SS.ALLOW equ $87 allow writing to disk or directory
|
|
35
|
|
36 E$BadFAT equ 255
|
|
37
|
|
38 EOL equ 13
|
|
39 CR equ EOL
|
|
40 SPC equ 32
|
|
41 SP equ SPC
|
|
42 MSDEOF equ $1A end of line character for MSDOS text files
|
|
43
|
|
44 ********************************************************
|
|
45 * MSDOS directory entry offsets
|
|
46 *
|
|
47 msd.name equ 0 offset to file name
|
|
48 msd.ext equ 8 offset to file extension
|
|
49 msd.attr equ 11 offset to file attribute
|
|
50 msd.res equ 12 offset to reserved bytes
|
|
51 msd.time equ 22 offset to time
|
|
52 msd.date equ 24 offset to date
|
|
53 msd.strt equ 26 offset to starting cluster number
|
|
54 msd.size equ 28 offset to file size
|
|
55
|
|
56 MSDSIZE equ 32 size of directory entry
|
|
57 SECSIZE equ 512 size of an MSDOS sector
|
|
58 DIRSIZE equ 64 size of directory entry in memory
|
|
59
|
|
60 * name is 8 bytes
|
|
61 * extention is 3 bytes
|
|
62 * attribute:
|
|
63 attr.RO equ 1 - read only
|
|
64 attr.HD equ 2 - hidden file (excluded from search)
|
|
65 attr.SY equ 4 - system file (excluded from search)
|
|
66 attr.VL equ 8 - volume label
|
|
67 attr.DR equ $10 - subdirectory
|
|
68 attr.AR equ $20 - archive bit (set if file has been written and closed)
|
|
69 *
|
|
70 * time:
|
|
71 * H H H H H M M M M M M S S S S S
|
|
72 * 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8
|
|
73 *
|
|
74 * date:
|
|
75 * Y Y Y Y Y Y Y M M M M D D D D D
|
|
76 * 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8
|
|
77 *
|
|
78 * starting cluster:
|
|
79 * two bytes, LSB first
|
|
80 *
|
|
81 * file size:
|
|
82 * 4 bytes (byte 0, 1, 2, 3)
|
|
83 ******************************************************
|
|
84
|
|
85 ******************************************************
|
|
86 * FAT ID byte:
|
|
87 * bit 3-7 set
|
|
88 * bit 2 - clear if 80 tracks
|
|
89 * bit 1 - set if media has 8 sectors/track (1 sector/FAT)
|
|
90 * bit 0 - set if media has two heads (112 directory entries)
|
|
91
|
|
92 ******************************************************
|
|
93
|
|
94 ******************************************************
|
|
95 * File manager path descriptor offsets
|
|
96 *
|
|
97 org 0
|
|
98
|
|
99 msp.path rmb 1 equ PD.PD path number
|
|
100 msp.mod rmb 1 equ PD.MOD file access mode
|
|
101 msp.cnt rmb 1 equ PD.CNT dupe path count
|
|
102 msp.dev rmb 2 equ PD.DEV address of device table
|
|
103 msp.proc rmb 1 equ PD.CPR process ID to which this path belongs
|
|
104 msp.rgs rmb 2 equ PD.RGS passed registers
|
|
105 msp.buf rmb 2 equ PD.BUF address of buffer
|
|
106 msp.sest rmb 1 equ PD.SMF current sector status
|
|
107 msp.pos rmb 3 current logical file position
|
|
108 msp.lolk rmb 3 start of lock (logical sector)
|
|
109 msp.lksz rmb 3 size of lock
|
|
110 msp.dtb rmb 2 address of drive table
|
|
111 msp.wrt rmb 1 NE-don't allow writing to path
|
|
112 msp.ncpr rmb 1 value to store in V.BUSY after using driver
|
|
113 msp.end rmb 2 number of last logical sector+1 of root or entire disk
|
|
114
|
|
115 rmb 6 space left til option table
|
|
116
|
|
117 org $30
|
|
118
|
|
119 msp.next rmb 2 address of next MSDOS path descriptor
|
|
120 msp.prev rmb 2 address of prev MSDOS path descriptor for SAME file
|
|
121 msp.dir rmb 2 address of directory entry in memory
|
|
122 msp.dnxt rmb 2 next path to same file
|
|
123 msp.dprv rmb 2 previous path to same file
|
|
124
|
|
125 msp.cls rmb 2 current cluster number
|
|
126 msp.sec rmb 2 current logical sector number
|
|
127 msp.clss rmb 1 current cluster sector number (0 or 1)
|
|
128
|
|
129 *******************************************************
|
|
130 * sector status (msp.sest) codes
|
|
131
|
|
132 SECGOOD equ 1 sector contains next data to be read
|
|
133 SECREAD equ 2 sector has been completely read
|
|
134 * (next sector needs to be read before next READ)
|
|
135 SECUPD equ 4 sector has been written to
|
|
136 SECBUF equ 8 sector msp.sec is in the buffer (PD.BUF)
|
|
137 SECEXP equ $10 sector does not need to be read
|
|
138
|
|
139 *******************************************************
|
|
140 * memory record for the directory entry
|
|
141
|
|
142 * 1 byte reserved for memory management use
|
|
143 dir.stat equ 1 status (0=needs update)
|
|
144 dir.chg equ 2 NE - directory entry needs update
|
|
145 dir.last equ 3 address of last MSDOS path descriptor for this file
|
|
146 dir.loc equ 5 logical location of directory entry on disk
|
|
147 dir.pos equ 7 offset from beginning of sector to directory entry
|
|
148 dir.drv equ 9 drive number
|
|
149 dir.esec equ 10 first directory sector with unused entry
|
|
150 dir.eoff equ 12 offset to first unused entry in above sector
|
|
151 dir.prnt equ 14 first cluster of parent directory
|
|
152 dir.msd equ 16 directory entry
|
|
153
|
|
154 ********************************************************
|
|
155 * type byte bit for MSDOS disk type
|
|
156
|
|
157 MSDOS. set %00001000 bit in PD.TYP to indicate MSDOS format
|
|
158
|
|
159 ********************************************************
|
|
160 * revision 2.2 offsets in the boot sector of an MSDOS disk
|
|
161
|
|
162 ID.ver equ 0 E9xxxx DOS 2, EBxx90 DOS 3
|
|
163 ID.OEM equ 3 8 byte OEM name
|
|
164 * these are the important ones
|
|
165 ID.skip equ 11 number of bytes to skip
|
|
166
|
|
167 ID.BPS equ 1 11 word, bytes/sector
|
|
168 ID.SPA equ 3 13 byte, sectors/cluster
|
|
169 ID.res equ 4 14 word, reserved sectors
|
|
170 ID.FATs equ 6 16 byte, number of FATs
|
|
171 ID.RDE equ 7 17 word, root directory entries
|
|
172 ID.secs equ 9 19 word, total number of sectors
|
|
173 ID.ID equ 11 21 byte, media ID byte
|
|
174 ID.spf equ 12 22 word, sectors/FAT
|
|
175 ID.spt equ 14 24 word, sectors/track
|
|
176 ID.hds equ 16 26 word, number of heads/sides
|
|
177 ID.hidn equ 18 28 word, number of hidden sectors
|
|
178
|
|
179 IDsize equ 19 number of bytes of disk info
|
|
180
|
|
181 ID.clus equ 20 number of usable clusters
|