1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; *** DEF-EQU *** DEF-EQU *** DEF-EQU ***
4 ; EQU's, STRUC's, and OTHER
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 ;******************************************************************************
29 FAIL EQU 8000H ; fail in designate
34 ID_IOCTL EQU 5 ; MAJOR FNCT # FOR 'other' DEVICE
36 RH EQU ES:[DI] ; addressability to Request Header
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
43 DQ ? ; reserved for DOS
44 RHC ENDS ; end of common portion
46 CMD_INPUT EQU 4 ; RHC_CMD is INPUT request
48 ; Status values for RHC_STA
49 STAT_DONE EQU 0001H ; function complete - high order byte
50 STAT_CMDERR EQU 8000H ; Error code
51 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
53 ; DEVICE Header DS:[SI] -- to locate the next CON header
54 ; NEXT device header ES:[DI]
56 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
63 DH_NEXTO DW ? ; offset of pointer to next header
64 DH_NEXTS DW ? ; segment of pointer to next header
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
72 ; Request Header for INIT
74 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
76 DB (TYPE RHC) DUP (?) ;
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
84 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
86 ; Request Header for IOCTL
88 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
90 DB (TYPE RHC) DUP (?) ; common portion
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
98 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
100 ; IOCTL header format
102 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
111 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
113 ; DESIGNATE BUFFER FORMAT
115 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
122 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
124 ; INVOKE BUFFER FORMAT
126 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
128 INVK_LENGTH DW ? ; LENGTH OF REMAINING HEADER
129 INVK_CP DW ? ; CP TO INVOKE
131 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
133 ; QUERY LIST BUFFER FORMAT
135 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
145 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
147 ; PARSER STRUC STATEMENTS
149 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
150 PARSE_TABLE1 STRUC ; [[[ TABLE 1 ]]]
151 NUM_DEVICES DW ? ; NUMBER OF DEVICES TO SUPPORT
152 DEVICE1_OFFSET DW ? ; (hopefully) CON!!!
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
161 ; CODE PAGE POINTER STRUCTURE
163 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
164 CP_PNTER_STRUC STRUC ;
168 WRITE_DATA_STRUC DW ? ;
169 FONT_DATA_STRUC DW ? ;
170 CP_PNTER_STRUC ENDS ;
171 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
173 ; CON data structure CS:[BX]
175 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
179 DEV_HDRO DW -1 ; device driver header offset
181 CON_STRAO DW -1 ; dos CON strategy offset
183 CON_INTRO DW -1 ; dos CON strategy offset
185 RH_PTRO DW -1 ; request header offset
186 RH_PTRS DW -1 ; segment
190 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
236 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
238 ANSI_2F EQU 1Ah ; WGR Muliflex number for ANSI ;AC003;
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;
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 .....
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.
261 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
263 ; *** DEF-EQU *** DEF-EQU *** DEF-EQU ***
264 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
266 ; Information Block Structure
267 ; (for functionality call)
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;
281 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
283 ; Structure of System ID call return block
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;