]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/DEV/DISPLAY/DEF-EQU.INC

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / DEV / DISPLAY / DEF-EQU.INC
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; *** DEF-EQU *** DEF-EQU *** DEF-EQU ***
3 ;
4 ; EQU's, STRUC's, and OTHER
5 ;
6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7 ;Modification history *********************************************************
8 ;AN001; D358 New device driver INIT function package 12/07/87 J.K.
9 ;AN002; D493 Undo D358 02/24/88 J.K.
10 ;AN003; D4934 Change ANSI 2F function number to 1Ah 05/20/88 F.G.
11 ;******************************************************************************
12 IF1 ;
13 %OUT . ®DEF-EQU .INC¯
14 ENDIF ;
15 ZERO EQU 0H ;
16 ONE EQU 1H ;
17 TWO EQU 2H ;
18 THREE EQU 3H ;
19 FOUR EQU 4H ;
20 FIVE EQU 5H ;
21 SIX EQU 6H ;
22 SEVEN EQU 7H ;
23 EIGHT EQU 8H ;
24 NINE EQU 9H ;
25 TEN EQU 0AH ;
26 ELEVEN EQU 0BH ;
27 TWELVE EQU 0CH ;
28 ;
29 FAIL EQU 8000H ; fail in designate
30 ;
31 NOT_CY EQU 0FFFEH ;
32 CY EQU ONE ;
33 ;
34 ID_IOCTL EQU 5 ; MAJOR FNCT # FOR 'other' DEVICE
35 ;
36 RH EQU ES:[DI] ; addressability to Request Header
37 ;
38 RHC STRUC ; fields common to all request types
39 DB ? ; length of Request Header
40 DB ? ; unit code (subunit)
41 RHC_CMD DB ? ; command code
42 RHC_STA DW ? ; status
43 DQ ? ; reserved for DOS
44 RHC ENDS ; end of common portion
45 ;
46 CMD_INPUT EQU 4 ; RHC_CMD is INPUT request
47 ;
48 ; Status values for RHC_STA
49 STAT_DONE EQU 0001H ; function complete - high order byte
50 STAT_CMDERR EQU 8000H ; Error code
51 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
52 ;
53 ; DEVICE Header DS:[SI] -- to locate the next CON header
54 ; NEXT device header ES:[DI]
55 ;
56 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
57 HP EQU DS:[SI] ;
58 NHD EQU ES:[DI] ;
59 ;
60 NAME_LEN EQU 8 ;
61 ;
62 DHS STRUC ;
63 DH_NEXTO DW ? ; offset of pointer to next header
64 DH_NEXTS DW ? ; segment of pointer to next header
65 DW ? ; attribute
66 DH_STRAO DW ? ; offset to strategy routine
67 DH_INTRO DW ? ; offset to interrupt routine
68 DH_NAME DB NAME_LEN DUP(0) ; device name in this header
69 DHS ENDS ; end of common portion
70 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
71 ;
72 ; Request Header for INIT
73 ;
74 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
75 RH0 STRUC ;
76 DB (TYPE RHC) DUP (?) ;
77 ;
78 RH0_UNIT DB ? ; not used for CHAR devices
79 RH0_ENDO DW ? ; offset of ending address
80 RH0_ENDS DW ? ; segment of ending address
81 RH0_BPBA DD ? ; POINTER TO BPB FOR CHAR DEVICES
82 db ? ;
83 RH0 ENDS ;
84 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
85 ;
86 ; Request Header for IOCTL
87 ;
88 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
89 RH3 STRUC ;
90 DB (TYPE RHC) DUP (?) ; common portion
91 ;
92 ;
93 DB ? ; media descriptor
94 RH3_DTAO DW ? ; offset of transfer address
95 RH3_DTAS DW ? ; segment of transfer address
96 RH3_CNT DW ? ; byte count
97 RH3 ENDS ;
98 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
99 ;
100 ; IOCTL header format
101 ;
102 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
103 RH_IOCTL STRUC ;
104 STATIC_RH DB 13 DUP(?) ; STANDARD STATIC REQUEST HEADER
105 MAJOR_F DB ? ; MAJOR FUNCTION CALL (SEE DOS 3.30)
106 MINOR_F DB ? ; MINOR FUNCTION CALL (SEE DOS 3.30)
107 CONTENT_SI DW ? ; CONTENTS OF SI
108 CONTENT_DI DW ? ; CONTENTS OF DI
109 REQUEST_PACKET DD ? ; POINTER TO GENERIC IOCTL REQ. PACKET
110 RH_IOCTL ENDS ;
111 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
112 ;
113 ; DESIGNATE BUFFER FORMAT
114 ;
115 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
116 DESG_BUFFER STRUC ;
117 DESG_CARTRIDGE DW ? ; 0=NO CARTRIDGE, 1=CARTRIDGE
118 DESG_LENGTH DW ? ; LENGTH OF REMAINING HEADER
119 DESG_N DW ? ; NUMBER OF CP's DESIGNATED
120 DESG_CP DW ? ; FIRST CP DESIGNATED
121 DESG_BUFFER ENDS ;
122 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
123 ;
124 ; INVOKE BUFFER FORMAT
125 ;
126 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
127 INVK_BUFFER STRUC ;
128 INVK_LENGTH DW ? ; LENGTH OF REMAINING HEADER
129 INVK_CP DW ? ; CP TO INVOKE
130 INVK_BUFFER ENDS ;
131 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
132 ;
133 ; QUERY LIST BUFFER FORMAT
134 ;
135 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
136 QLST_BUFFER STRUC ;
137 QLST_LENGTH DW ? ; LENGTH OF REMAINING HEADER
138 QLST_N_HDWR DW ? ; NUMBER OF HARDWARE CP's
139 QLST_HDWR_CP DW ? ; FIRST HDWR CODE PAGE
140 QLST_N_DESG DW ? ; NUMBER OF DESIGNATED CP's
141 QLST_DESG_CP DW ? ; DESINATED CODE PAGES
142 ; ...there is more data to be
143 ; filled in by the DRIVER
144 QLST_BUFFER ENDS ;
145 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
146 ;
147 ; PARSER STRUC STATEMENTS
148 ;
149 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
150 PARSE_TABLE1 STRUC ; [[[ TABLE 1 ]]]
151 NUM_DEVICES DW ? ; NUMBER OF DEVICES TO SUPPORT
152 DEVICE1_OFFSET DW ? ; (hopefully) CON!!!
153 PARSE_TABLE1 ENDS ;
154 ;
155 PARSE_TABLE2 STRUC ; [[[ TABLE 2 ]]]
156 NUM_ITEMS DW ? ; NUMBER OF ITEMS CREATED BY THE
157 OFFSET_LIST DW ? ; THE 1ST OFFSET OF [ TABLE 2 ]
158 PARSE_TABLE2 ENDS ; PARSER!
159 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
160 ;
161 ; CODE PAGE POINTER STRUCTURE
162 ;
163 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
164 CP_PNTER_STRUC STRUC ;
165 HDWR_CP_STRUC DW ? ;
166 DESG_CP_STRUC DW ? ;
167 FONT_CP_STRUC DW ? ;
168 WRITE_DATA_STRUC DW ? ;
169 FONT_DATA_STRUC DW ? ;
170 CP_PNTER_STRUC ENDS ;
171 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
172 ;
173 ; CON data structure CS:[BX]
174 ;
175 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
176 BUF EQU CS:[BX] ;
177 ; STATES
178 BUF_DATA STRUC ;
179 DEV_HDRO DW -1 ; device driver header offset
180 DEV_HDRS DW -1 ;
181 CON_STRAO DW -1 ; dos CON strategy offset
182 CON_STRAS DW -1 ;
183 CON_INTRO DW -1 ; dos CON strategy offset
184 CON_INTRS DW -1 ;
185 RH_PTRO DW -1 ; request header offset
186 RH_PTRS DW -1 ; segment
187 STATE DW ? ;
188 STATUS DW ? ;
189 BUF_DATA ENDS ;
190 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
191 ;
192 ; General Constants
193 ;
194 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
195 INT_2F_LOW EQU (4*2FH) ; INTERRUPT 2FH CON/KEYB COMMUNICATION
196 INT_2F_HI EQU (4*2FH)+2 ;
197 INT_43_LOW EQU (4*43H) ; INTERRUPT 43H 0-255 CHARACTER VECTOR
198 INT_43_HI EQU (4*43H)+2 ;
199 INT_44_LOW EQU (4*44H) ; INTERRUPT 44H 0-255 CHARACTER VECTOR
200 INT_44_HI EQU (4*44H)+2 ;
201 INT_1F_LOW EQU (4*1FH) ; INTERRUPT 1FH EXTENDED CHARACTER SUPPORT
202 INT_1F_HI EQU (4*1FH)+2 ;
203 INT_10_LOW EQU (4*10H) ; INTERRUPT 10H fix FOR PALACE
204 INT_10_HI EQU (4*10H)+2 ;
205 GET_MODE EQU 0FH ; WGR ;AN000;
206 ON EQU 1 ; WGR ;AN000;
207 OFF EQU 0 ; WGR ;AN000;
208 RECALC_ON EQU 0010H ; WGR ;AN000;
209 VIDEO_CTRL EQU 487H ; WGR ;AN000;
210 ANSI_BUF_SIZE EQU 14 ; WGR ;AN000;
211 DEFAULT_LEN EQU 25 ; WGR ;AN000;
212 NUMBER EQU 1 ; WGR ;AN000;
213 STRING EQU 3 ; WGR ;AN000;
214 COMPLEX EQU 4 ; WGR ;AN000;
215 RC_EOL EQU -1 ; WGR ;AN000;
216 RC_NO_ERROR EQU 0 ; WGR ;AN000;
217 FUNC_CALL EQU 1BH ; WGR ;AN000;
218 VGA_FOUND EQU 00000001B ; WGR ;AN000;
219 EGA_FOUND EQU 00000001B ; WGR ;AN000;
220 LCD_FOUND EQU 00000010B ; WGR ;AN000;
221 CGA_FOUND EQU 00000100B ; WGR ;AN000;
222 MONO_FOUND EQU 00001000B ; WGR ;AN000;
223 ALT_SELECT EQU 12H ; WGR ;AN000;
224 EGA_INFO_CALL EQU 10H ; WGR ;AN000;
225 GET_SYS_ID EQU 0C0H ; WGR ;AN000;
226 GET_STATUS EQU 43H ; WGR ;AN000;
227 LCD_MODEL EQU 0F9H ; WGR ;AN000;
228 COLOR_ADDRESS EQU 0B800H ; WGR ;AN000;
229 MONO_ADDRESS EQU 0B000H ; WGR ;AN000;
230 ERROR_1 EQU 2 ; WGR ;AN000;
231 ERROR_2 EQU 12 ; WGR ;AN000;
232 ERROR_3 EQU 8 ; WGR ;AN000;
233 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
234 ;
235 ; *** INT 2Fh used
236 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
237
238 ANSI_2F EQU 1Ah ; WGR Muliflex number for ANSI ;AC003;
239 ;Catagory code
240 IOCTL_2F EQU 1h ;
241 DA_INFO_2F EQU 2h ;J.K. Information passing to ANSI.
242 ;Subfunction code for IOCTL_2F
243 GET_SUBFUNC EQU 7FH ; WGR Same structure as GET_IOCTL(ANSI);AN000;
244
245 ;Info Struture for DA_INFO_2F. (DS:DX point to this packet)
246 ;J.K. Note: For DOS 4.00, DA_INFO_PACKET is used to signal ANSI.SYS that
247 ;DISPLAY.SYS is calling/finishing INT 10h SET MODE call. ANSI.SYS needs this
248 ;infomration since it also hooks INT 10h vector.
249 ;For this DA_SETMODE_FLAG purpose, DA_INFO_LEVEL and DA_INFO_DIRECTION should always be
250 ;set to 0. This can be extended for another information passing scheme between
251 ;DISPLAY.SYS and ANSI.SYS in the future version.
252 ;For DA_SETMODE_FLAG, DISPLAY.SYS should be extremely careful that when it calls
253 ;with DA_SETMODE_FLAG =1, then it should calls with DA_SETMODE_FLAG=0
254 ;when it finished INT 10h function call. Otherwise, the system goes .....
255 DA_INFO_PACKET struc
256 DA_INFO_LEVEL db 0 ; 0 for DA_SETMODE_FLAG, 1 for DA_OPTION_L_STATE query (for OS2 compat. box).
257 DA_SETMODE_FLAG db 0 ; 1: DISPLAY.SYS is calling INT 10h call, SET MODE. 0= finished.
258 DA_OPTION_L_STATE db 0 ; on return from ANSI, 1 = ANSI /L option active, 0 = inactive.
259 DA_INFO_PACKET ends
260
261 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
262 ;
263 ; *** DEF-EQU *** DEF-EQU *** DEF-EQU ***
264 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
265 ;
266 ; Information Block Structure
267 ; (for functionality call)
268 ;
269 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
270 INFO_BLOCK STRUC ; info block for functionality call ;AN000;
271 STATIC_ADDRESS DD ? ; address of static functionality table;AN000;
272 DB 33 DUP(?) ; don't care ;AN000;
273 ACTIVE_DISPLAY DB ? ; active display code ;AN000;
274 ALT_DISPLAY DB ? ; alternate display code ;AN000;
275 DB 3 DUP(?) ; don't care ;AN000;
276 CURRENT_SCANS DB ? ; current number of scan lines ;AN000;
277 DB 2 DUP(?) ; don't care ;AN000;
278 MISC_INFO DB ? ; miscellaneous state information ;AN000;
279 DB 18 DUP(?) ; don't care ;AN000;
280 INFO_BLOCK ENDS ;
281 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
282 ;
283 ; Structure of System ID call return block
284 ;
285 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
286 SYS_ID STRUC ; format of return system config data ;AN000;
287 DW ? ; don't care ;AN000;
288 MODEL_BYTE DB ? ; model byte ;AN000;
289 SYS_ID ENDS ; ;AN000;
290 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;