]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/INC/DEVSYM.INC

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / INC / DEVSYM.INC
1 %OUT DEVSYM.INC...
2 ; SCCSID = @(#)DEVSYM.ASM 1.10 85/09/04
3 ; SCCSID = @(#)DEVSYM.ASM 1.10 85/09/04
4
5 ; THE DEVICE TABLE LIST HAS THE FORM:
6 SYSDEV STRUC
7 SDEVNEXT DD ? ;POINTER TO NEXT DEVICE HEADER
8 SDEVATT DW ? ;ATTRIBUTES OF THE DEVICE
9 SDEVSTRAT DW ? ;STRATEGY ENTRY POINT
10 SDEVINT DW ? ;INTERRUPT ENTRY POINT
11 SDEVNAME DB 8 DUP (?) ;NAME OF DEVICE (ONLY FIRST BYTE USED FOR BLOCK)
12 SYSDEV ENDS
13
14 ;
15 ; ATTRIBUTE BIT MASKS
16 ;
17 ; CHARACTER DEVICES:
18 ;
19 ; BIT 15 -> MUST BE 1
20 ; 14 -> 1 IF THE DEVICE UNDERSTANDS IOCTL CONTROL STRINGS
21 ; 13 -> 1 IF THE DEVICE SUPPORTS OUTPUT-UNTIL-BUSY
22 ; 12 -> UNUSED
23 ; 11 -> 1 IF THE DEVICE UNDERSTANDS OPEN/CLOSE
24 ; 10 -> MUST BE 0
25 ; 9 -> MUST BE 0
26 ; 8 -> UNUSED
27 ; 7 -> UNUSED
28 ; 6 -> UNUSED
29 ; 5 -> UNUSED
30 ; 4 -> 1 IF DEVICE IS RECIPIENT OF INT 29H
31 ; 3 -> 1 IF DEVICE IS CLOCK DEVICE
32 ; 2 -> 1 IF DEVICE IS NULL DEVICE
33 ; 1 -> 1 IF DEVICE IS CONSOLE OUTPUT
34 ; 0 -> 1 IF DEVICE IS CONSOLE INPUT
35 ;
36 ; BLOCK DEVICES:
37 ;
38 ; BIT 15 -> MUST BE 0
39 ; 14 -> 1 IF THE DEVICE UNDERSTANDS IOCTL CONTROL STRINGS
40 ; 13 -> 1 IF THE DEVICE DETERMINES MEDIA BY EXAMINING THE FAT ID BYTE.
41 ; THIS REQUIRES THE FIRST SECTOR OF THE FAT TO *ALWAYS* RESIDE IN
42 ; THE SAME PLACE.
43 ; 12 -> UNUSED
44 ; 11 -> 1 IF THE DEVICE UNDERSTANDS OPEN/CLOSE/REMOVABLE MEDIA
45 ; 10 -> MUST BE 0
46 ; 9 -> MUST BE 0
47 ; 8 -> UNUSED
48 ; 7 -> UNUSED
49 ; 6 -> IF DEVICE HAS SUPPORT FOR GETMAP/SETMAP OF LOGICAL DRIVES.
50 ; IF THE DEVICE UNDERSTANDS GENERIC IOCTL FUNCTION CALLS.
51 ; 5 -> UNUSED
52 ; 4 -> UNUSED
53 ; 3 -> UNUSED
54 ; 2 -> UNUSED
55 ; 1 -> UNUSED
56 ; 0 -> UNUSED
57 ;
58
59 DEVTYP EQU 8000H ; BIT 15 - 1 IF CHAR, 0 IF BLOCK
60 CHARDEV EQU 8000H
61 DEVIOCTL EQU 4000H ; BIT 14 - CONTROL MODE BIT
62 ISFATBYDEV EQU 2000H ; BIT 13 - DEVICE USES FAT ID BYTES,
63 ; COMP MEDIA.
64 OUTTILBUSY EQU 2000H ; OUTPUT UNTIL BUSY IS ENABLED
65 ISNET EQU 1000H ; BIT 12 - 1 IF A NET DEVICE, 0 IF
66 ; NOT. CURRENTLY BLOCK ONLY.
67 DEVOPCL EQU 0800H ; BIT 11 - 1 IF THIS DEVICE HAS
68 ; OPEN,CLOSE AND REMOVABLE MEDIA
69 ; ENTRY POINTS, 0 IF NOT
70
71 EXTENTBIT EQU 0400H ; BIT 10 - CURRENTLY 0 ON ALL DEVS
72 ; THIS BIT IS RESERVED FOR FUTURE USE
73 ; TO EXTEND THE DEVICE HEADER BEYOND
74 ; ITS CURRENT FORM.
75
76 ; NOTE BIT 9 IS CURRENTLY USED ON IBM SYSTEMS TO INDICATE "DRIVE IS SHARED".
77 ; SEE IOCTL FUNCTION 9. THIS USE IS NOT DOCUMENTED, IT IS USED BY SOME
78 ; OF THE UTILITIES WHICH ARE SUPPOSED TO FAIL ON SHARED DRIVES ON SERVER
79 ; MACHINES (FORMAT,CHKDSK,RECOVER,..).
80
81 DEV320 EQU 0040H ;BIT 6 - FOR BLOCK DEVICES, THIS
82 ;DEVICE SUPPORTS SET/GET MAP OF
83 ;LOGICAL DRIVES, AND SUPPORTS
84 ;GENERIC IOCTL CALLS.
85 ;FOR CHARACTER DEVICES, THIS
86 ;DEVICE SUPPORTS GENERIC IOCTL.
87 ;THIS IS A DOS 3.2 DEVICE DRIVER.
88 ISSPEC EQU 0010H ;BIT 4 - THIS DEVICE IS SPECIAL
89 ISCLOCK EQU 0008H ;BIT 3 - THIS DEVICE IS THE CLOCK DEVICE.
90 ISNULL EQU 0004H ;BIT 2 - THIS DEVICE IS THE NULL DEVICE.
91 ISCOUT EQU 0002H ;BIT 1 - THIS DEVICE IS THE CONSOLE OUTPUT.
92 ISCIN EQU 0001H ;BIT 0 - THIS DEVICE IS THE CONSOLE INPUT.
93 EXTDRVR EQU 0002H ;BIT 1 - BLOCK DEVICE EXTNDED DRIVER
94
95 ;STATIC REQUEST HEADER
96 SRHEAD STRUC
97 REQLEN DB ? ;LENGTH IN BYTES OF REQUEST BLOCK
98 REQUNIT DB ? ;DEVICE UNIT NUMBER
99 REQFUNC DB ? ;TYPE OF REQUEST
100 REQSTAT DW ? ;STATUS WORD
101 DB 8 DUP(?) ;RESERVED FOR QUEUE LINKS
102 SRHEAD ENDS
103
104 ;STATUS WORD MASKS
105 STERR EQU 8000H ;BIT 15 - ERROR
106 STBUI EQU 0200H ;BIT 9 - BUISY
107 STDON EQU 0100H ;BIT 8 - DONE
108 STECODE EQU 00FFH ;ERROR CODE
109 ; 2/12/KK
110 ; Interim character identifier 2/12/KK
111 Ddkey EQU 0000010000000000B ; 2/12/KK
112
113 ;FUNCTION CODES
114 DEVINIT EQU 0 ;INITIALIZATION
115 DINITHL EQU 26 ;SIZE OF INIT HEADER
116 DEVMDCH EQU 1 ;MEDIA CHECK
117 DMEDHL EQU 15 ;SIZE OF MEDIA CHECK HEADER
118 DEVBPB EQU 2 ;GET BPB
119 DEVRDIOCTL EQU 3 ;IOCTL READ
120 DBPBHL EQU 22 ;SIZE OF GET BPB HEADER
121 DEVRD EQU 4 ;READ
122 DRDWRHL EQU 22 ;SIZE OF RD/WR HEADER
123 DEVRDND EQU 5 ;NON DESTRUCTIVE READ NO WAIT (CHARACTER DEVS)
124 DRDNDHL EQU 14 ;SIZE OF NON DESTRUCTIVE READ HEADER
125 DEVIST EQU 6 ;INPUT STATUS
126 DSTATHL EQU 13 ;SIZE OF STATUS HEADER
127 DEVIFL EQU 7 ;INPUT FLUSH
128 DFLSHL EQU 15 ;SIZE OF FLUSH HEADER
129 DEVWRT EQU 8 ;WRITE
130 DEVWRTV EQU 9 ;WRITE WITH VERIFY
131 DEVOST EQU 10 ;OUTPUT STATUS
132 DEVOFL EQU 11 ;OUTPUT FLUSH
133 DEVWRIOCTL EQU 12 ;IOCTL WRITE
134 DEVOPN EQU 13 ;DEVICE OPEN
135 DEVCLS EQU 14 ;DEVICE CLOSE
136 DOPCLHL EQU 13 ;SIZE OF OPEN/CLOSE HEADER
137 DEVRMD EQU 15 ;REMOVABLE MEDIA
138 REMHL EQU 13 ;SIZE OF REMOVABLE MEDIA HEADER
139 GENIOCTL EQU 19
140 ; THE NEXT THREE ARE USED IN DOS 4.0
141 ; 20
142 ; 21
143 ; 22
144 DEVGETOWN EQU 23 ;GET DEVICE OWNER
145 DEVSETOWN EQU 24 ;SET DEVICE OWNER
146 OWNHL EQU 13 ;SIZE OF DEVICE OWNER HEADER
147
148 DEVOUT EQU 16 ; OUTPUT UNTIL BUSY.
149 DEVOUTL EQU DEVWRT ; LENGTH OF OUTPUT UNTIL BUSY
150
151 ; GENERIC IOCTL REQUEST STRUCTURE
152 ; SEE THE DOS 4.0 DEVICE DRIVER SPEC FOR FURTHER ELABORATION.
153 ;
154 IOCTL_REQ STRUC
155 DB (SIZE SRHEAD) DUP(?)
156 ; GENERIC IOCTL ADDITION.
157 MAJORFUNCTION DB ? ;FUNCTION CODE
158 MINORFUNCTION DB ? ;FUNCTION CATEGORY
159 REG_SI DW ?
160 REG_DI DW ?
161 GENERICIOCTL_PACKET DD ? ; POINTER TO DATA BUFFER
162 IOCTL_REQ ENDS
163
164 ; DEFINITIONS FOR IOCTL_REQ.MINORFUNCTION
165 GEN_IOCTL_WRT_TRK EQU 40H
166 GEN_IOCTL_RD_TRK EQU 60H
167 GEN_IOCTL_FN_TST EQU 20H ; USED TO DIFF. BET READS AND WRTS
168
169 ;; 32-bit absolute read/write input list structure
170
171 ABS_32RW STRUC
172 SECTOR_RBA DD ? ; relative block address
173 ABS_RW_COUNT DW ? ; number of sectors to be transferred
174 BUFFER_ADDR DD ? ; data addrress
175 ABS_32RW ENDS
176
177 ;; media ID info
178
179 MEDIA_ID_INFO STRUC
180 MEDIA_level DW 0 ; info level
181 MEDIA_Serial DD 0 ; serial #
182 MEDIA_Label DB 11 dup (' ') ;volume label
183 MEDIA_System DB 8 dup (' ') ;system type
184 MEDIA_ID_INFO ENDS
185
186 ;; equates for DOS34_FLAG
187
188 IFS_ABSRW EQU 00001H ;IFS absolute read/write
189 NO_IFS_ABSRW EQU 0FFFEH ;no IFS absolute read/write
190 IFS_DRIVE_RESET EQU 00002H ;IFS drvive reset
191 NO_IFS_DRIVE_RESET EQU 0FFFDH ;no IFS drive reset
192 FROM_DISK_RESET EQU 00004H ;from disk reset
193 NO_FROM_DISK_RESET EQU 0FFFBH ;not from disk reset
194 From_String_Output EQU 00008H ;from con string output
195 NO_From_String_Output EQU 0FFF7H ;not from con string output
196 From_DOS_WRITE EQU 00010H ;from dos_write
197 NO_From_DOS_WRITE EQU 0FFEFH ;not from dos_write
198 Force_I24_Fail EQU 00020H ;form IFS CALL BACK
199 NO_Force_I24_Fail EQU 0FFDFH ;not form IFS CALL BACK
200 Disable_EOF_I24 EQU 00040H ;disable EOF int24 for input status
201 NO_Disable_EOF_I24 EQU 0FFBFH ;disable EOF int24 for input status
202 DBCS_VOLID EQU 00080H ;indicate from volume id
203 DBCS_VOLID2 EQU 00100H ;indicate 8th char is DBCS
204 CTRL_BREAK_FLAG EQU 00200H ;indicate control break is input
205 NO_CTRL_BREAK_FLAG EQU 0FDFFH ;reset control break
206 SEARCH_FASTOPEN EQU 00400H ;set fastopen flag for search
207 X25_special EQU 00800H ;flag for X25 driver