summaryrefslogtreecommitdiff
path: root/v4.0/src/INC/DEVSYM.INC
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/INC/DEVSYM.INC')
-rw-r--r--v4.0/src/INC/DEVSYM.INC207
1 files changed, 207 insertions, 0 deletions
diff --git a/v4.0/src/INC/DEVSYM.INC b/v4.0/src/INC/DEVSYM.INC
new file mode 100644
index 0000000..951a894
--- /dev/null
+++ b/v4.0/src/INC/DEVSYM.INC
@@ -0,0 +1,207 @@
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:
6SYSDEV STRUC
7SDEVNEXT DD ? ;POINTER TO NEXT DEVICE HEADER
8SDEVATT DW ? ;ATTRIBUTES OF THE DEVICE
9SDEVSTRAT DW ? ;STRATEGY ENTRY POINT
10SDEVINT DW ? ;INTERRUPT ENTRY POINT
11SDEVNAME DB 8 DUP (?) ;NAME OF DEVICE (ONLY FIRST BYTE USED FOR BLOCK)
12SYSDEV 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
59DEVTYP EQU 8000H ; BIT 15 - 1 IF CHAR, 0 IF BLOCK
60CHARDEV EQU 8000H
61DEVIOCTL EQU 4000H ; BIT 14 - CONTROL MODE BIT
62ISFATBYDEV EQU 2000H ; BIT 13 - DEVICE USES FAT ID BYTES,
63 ; COMP MEDIA.
64OUTTILBUSY EQU 2000H ; OUTPUT UNTIL BUSY IS ENABLED
65ISNET EQU 1000H ; BIT 12 - 1 IF A NET DEVICE, 0 IF
66 ; NOT. CURRENTLY BLOCK ONLY.
67DEVOPCL EQU 0800H ; BIT 11 - 1 IF THIS DEVICE HAS
68 ; OPEN,CLOSE AND REMOVABLE MEDIA
69 ; ENTRY POINTS, 0 IF NOT
70
71EXTENTBIT 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
81DEV320 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.
88ISSPEC EQU 0010H ;BIT 4 - THIS DEVICE IS SPECIAL
89ISCLOCK EQU 0008H ;BIT 3 - THIS DEVICE IS THE CLOCK DEVICE.
90ISNULL EQU 0004H ;BIT 2 - THIS DEVICE IS THE NULL DEVICE.
91ISCOUT EQU 0002H ;BIT 1 - THIS DEVICE IS THE CONSOLE OUTPUT.
92ISCIN EQU 0001H ;BIT 0 - THIS DEVICE IS THE CONSOLE INPUT.
93EXTDRVR EQU 0002H ;BIT 1 - BLOCK DEVICE EXTNDED DRIVER
94
95;STATIC REQUEST HEADER
96SRHEAD STRUC
97REQLEN DB ? ;LENGTH IN BYTES OF REQUEST BLOCK
98REQUNIT DB ? ;DEVICE UNIT NUMBER
99REQFUNC DB ? ;TYPE OF REQUEST
100REQSTAT DW ? ;STATUS WORD
101 DB 8 DUP(?) ;RESERVED FOR QUEUE LINKS
102SRHEAD ENDS
103
104;STATUS WORD MASKS
105STERR EQU 8000H ;BIT 15 - ERROR
106STBUI EQU 0200H ;BIT 9 - BUISY
107STDON EQU 0100H ;BIT 8 - DONE
108STECODE EQU 00FFH ;ERROR CODE
109; 2/12/KK
110; Interim character identifier 2/12/KK
111Ddkey EQU 0000010000000000B ; 2/12/KK
112
113;FUNCTION CODES
114DEVINIT EQU 0 ;INITIALIZATION
115DINITHL EQU 26 ;SIZE OF INIT HEADER
116DEVMDCH EQU 1 ;MEDIA CHECK
117DMEDHL EQU 15 ;SIZE OF MEDIA CHECK HEADER
118DEVBPB EQU 2 ;GET BPB
119DEVRDIOCTL EQU 3 ;IOCTL READ
120DBPBHL EQU 22 ;SIZE OF GET BPB HEADER
121DEVRD EQU 4 ;READ
122DRDWRHL EQU 22 ;SIZE OF RD/WR HEADER
123DEVRDND EQU 5 ;NON DESTRUCTIVE READ NO WAIT (CHARACTER DEVS)
124DRDNDHL EQU 14 ;SIZE OF NON DESTRUCTIVE READ HEADER
125DEVIST EQU 6 ;INPUT STATUS
126DSTATHL EQU 13 ;SIZE OF STATUS HEADER
127DEVIFL EQU 7 ;INPUT FLUSH
128DFLSHL EQU 15 ;SIZE OF FLUSH HEADER
129DEVWRT EQU 8 ;WRITE
130DEVWRTV EQU 9 ;WRITE WITH VERIFY
131DEVOST EQU 10 ;OUTPUT STATUS
132DEVOFL EQU 11 ;OUTPUT FLUSH
133DEVWRIOCTL EQU 12 ;IOCTL WRITE
134DEVOPN EQU 13 ;DEVICE OPEN
135DEVCLS EQU 14 ;DEVICE CLOSE
136DOPCLHL EQU 13 ;SIZE OF OPEN/CLOSE HEADER
137DEVRMD EQU 15 ;REMOVABLE MEDIA
138REMHL EQU 13 ;SIZE OF REMOVABLE MEDIA HEADER
139GENIOCTL EQU 19
140; THE NEXT THREE ARE USED IN DOS 4.0
141; 20
142; 21
143; 22
144DEVGETOWN EQU 23 ;GET DEVICE OWNER
145DEVSETOWN EQU 24 ;SET DEVICE OWNER
146OWNHL EQU 13 ;SIZE OF DEVICE OWNER HEADER
147
148DEVOUT EQU 16 ; OUTPUT UNTIL BUSY.
149DEVOUTL 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;
154IOCTL_REQ STRUC
155 DB (SIZE SRHEAD) DUP(?)
156 ; GENERIC IOCTL ADDITION.
157MAJORFUNCTION DB ? ;FUNCTION CODE
158MINORFUNCTION DB ? ;FUNCTION CATEGORY
159REG_SI DW ?
160REG_DI DW ?
161GENERICIOCTL_PACKET DD ? ; POINTER TO DATA BUFFER
162IOCTL_REQ ENDS
163
164; DEFINITIONS FOR IOCTL_REQ.MINORFUNCTION
165GEN_IOCTL_WRT_TRK EQU 40H
166GEN_IOCTL_RD_TRK EQU 60H
167GEN_IOCTL_FN_TST EQU 20H ; USED TO DIFF. BET READS AND WRTS
168
169;; 32-bit absolute read/write input list structure
170
171ABS_32RW STRUC
172SECTOR_RBA DD ? ; relative block address
173ABS_RW_COUNT DW ? ; number of sectors to be transferred
174BUFFER_ADDR DD ? ; data addrress
175ABS_32RW ENDS
176
177;; media ID info
178
179MEDIA_ID_INFO STRUC
180MEDIA_level DW 0 ; info level
181MEDIA_Serial DD 0 ; serial #
182MEDIA_Label DB 11 dup (' ') ;volume label
183MEDIA_System DB 8 dup (' ') ;system type
184MEDIA_ID_INFO ENDS
185
186;; equates for DOS34_FLAG
187
188IFS_ABSRW EQU 00001H ;IFS absolute read/write
189NO_IFS_ABSRW EQU 0FFFEH ;no IFS absolute read/write
190IFS_DRIVE_RESET EQU 00002H ;IFS drvive reset
191NO_IFS_DRIVE_RESET EQU 0FFFDH ;no IFS drive reset
192FROM_DISK_RESET EQU 00004H ;from disk reset
193NO_FROM_DISK_RESET EQU 0FFFBH ;not from disk reset
194From_String_Output EQU 00008H ;from con string output
195NO_From_String_Output EQU 0FFF7H ;not from con string output
196From_DOS_WRITE EQU 00010H ;from dos_write
197NO_From_DOS_WRITE EQU 0FFEFH ;not from dos_write
198Force_I24_Fail EQU 00020H ;form IFS CALL BACK
199NO_Force_I24_Fail EQU 0FFDFH ;not form IFS CALL BACK
200Disable_EOF_I24 EQU 00040H ;disable EOF int24 for input status
201NO_Disable_EOF_I24 EQU 0FFBFH ;disable EOF int24 for input status
202DBCS_VOLID EQU 00080H ;indicate from volume id
203DBCS_VOLID2 EQU 00100H ;indicate 8th char is DBCS
204CTRL_BREAK_FLAG EQU 00200H ;indicate control break is input
205NO_CTRL_BREAK_FLAG EQU 0FDFFH ;reset control break
206SEARCH_FASTOPEN EQU 00400H ;set fastopen flag for search
207X25_special EQU 00800H ;flag for X25 driver