summaryrefslogtreecommitdiff
path: root/v4.0/src/DEV/ANSI/ANSI.INC
blob: ff0a2173c4d9c0a1c01fab43f94d1ffe436bf21a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;   Equates and Strucs.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;------------------------------------------------------------------------------
;AN001; D425 For OS2 compatibiltiy box, /L option status query     01/14/88 J.K.
;AN002; D493 New INIT request structure for error message          02/25/88 J.K.
;AN003; P4934 Change ANSI 2F function number t0 1Ah                05/20/88 F.G.
;------------------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;      DEVICE  Header     DS:[SI]      -- to locate the next CON header
;      NEXT device header ES:[DI]
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HP      EQU     DS:[SI]                 ;                                      ;AN000;
NHD     EQU     ES:[DI]                 ;                                      ;AN000;
                                        ;
NAME_LEN EQU    8                       ;                                      ;AN000;
                                        ;
DHS     STRUC                           ;                                      ;AN000;
DH_NEXTO DW     ?                       ; offset of pointer to next header     ;AN000;
DH_NEXTS DW     ?                       ; segment of pointer to next header    ;AN000;
        DW      ?                       ; attribute                            ;AN000;
DH_STRAO DW     ?                       ; offset to strategy routine           ;AN000;
DH_INTRO DW     ?                       ; offset to interrupt routine          ;AN000;
DH_NAME DB      NAME_LEN DUP(0)         ; device name in this header           ;AN000;
DHS     ENDS                            ; end of common portion                ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; CON data structure  CS:[BX]
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONPTR  EQU     CS:[BX]                 ;                                      ;AN000;
                                        ; STATES                               ;AN000;
BUF_DATA STRUC                          ;                                      ;AN000;
DEV_HDRO DW     -1                      ; device driver header offset          ;AN000;
DEV_HDRS DW     -1                      ;                                      ;AN000;
CON_STRAO DW    -1                      ; dos CON strategy offset              ;AN000;
CON_STRAS DW    -1                      ;                                      ;AN000;
CON_INTRO DW    -1                      ; dos CON strategy offset              ;AN000;
CON_INTRS DW    -1                      ;                                      ;AN000;
BUF_DATA ENDS                           ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                      ;AN000;
;
;  INIT Structures and equates
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ROM_BIOS        EQU     40h             ; Segment of ROM_BIOS data area        ;AN000;
EQUIP_FLAG      EQU     10h             ; equipment flag. (for LCD)            ;AN000;
KBD_FLAG_3      EQU     96h             ; offset of KBD_FLAG_3 in data area    ;AN000;
NUM_ROWS        EQU     84h             ; offset of number of rows in data area;AN000;
EXT16_FLAG      EQU     00010000b       ; mask for Extended INT16 bit          ;AN000;
INIT_VID_MASK   EQU     0FFCFh          ; mask for equipment list              ;AN000;
LCD_COLOR_MODE  EQU     20h             ; LCD as color                         ;AN000;
LCD_MONO_MODE   EQU     30h             ; LCD as MONOchrome                    ;AN000;
UNKNOWN_CMD     EQU     8103H           ; unknown command status byte          ;AN000;
RC_EOL          EQU     -1              ; parser return code for EOL           ;AN000;
RC_NO_ERROR     EQU     0               ; parser return code for not in switch list  ;AN000;
INVALID_PARM    EQU     10              ; PARSE Invalid parameter message number     ;AN000;
SSTRING         EQU     3               ; PARSE Too many parameters message    ;AN000;
FUNC_CALL       EQU     1BH             ; VGA functionality call               ;AN000;
ALT_SELECT      EQU     12H             ; EGA alternate select call            ;AN000;
EGA_INFO        EQU     10H             ; EGA return information subcall       ;AN000;
ALT_PRT_SC      EQU     20H             ; select alternate print screen subcall;AN000;
MONOCHROME      EQU     1               ; monochrome attached to EGA           ;AN000;
COLOR           EQU     0               ; some color attached to EGA           ;AN000;
PS2_MONO        EQU     7               ; display adapter types...             ;AN000;
PS2_COLOR       EQU     8               ;                                      ;AN000;
MOD30_MONO      EQU     0BH             ;                                      ;AN000;
MOD30_COLOR     EQU     0CH             ;                                      ;AN000;
LCD_MODEL       EQU     0F9H            ; Convertible model byte value         ;AN000;
GET_SYS_ID      EQU     0C0H            ; INT15H call for system identification;AN000;
GET_STATUS      EQU     43H             ; read system status (Convertible)     ;AN000;
MONO_ADDRESS    EQU     0B000H          ; base address for monochrome          ;AN000;
COLOR_ADDRESS   EQU     0B800H          ; base address for CGA                 ;AN000;
UNOCCUPIED      EQU     -1              ; value in VIDEO_MODE_TABLE if space unused  ;AN000;
LCD_ACTIVE      EQU     00000001B       ; LCD adapter is present               ;AN000;
MONO_ACTIVE     EQU     00000010B       ; monochrome adapter is present        ;AN000;
CGA_ACTIVE      EQU     00000100B       ; CGA adapter is present               ;AN000;
MCGA_ACTIVE     EQU     00001000B       ; MCGA is present                      ;AN000;
E5151_ACTIVE    EQU     00010000B       ; EGA with monochrome is present       ;AN000;
E5153_ACTIVE    EQU     00100000B       ; EGA with color display is present    ;AN000;
E5154_ACTIVE    EQU     01000000B       ; EGA with enhanced color display is present ;AN000;
VGA_ACTIVE      EQU     10000000B       ; VGA is present                       ;AN000;
INT10_LOW       EQU     (4*10H)         ; interrupt 10 vector location         ;AN000;
INT10_HI        EQU     (4*10H)+2       ;                                      ;AN000;
INT2F_LOW       EQU     (4*2FH)         ; interrupt 2F vector location         ;AN000;
INT2F_HI        EQU     (4*2FH)+2       ;                                      ;AN000;
ONE             EQU     1               ;                                      ;AN000;
THREE           EQU     3               ;                                      ;AN000;
EIGHT           EQU     8               ;                                      ;AN000;
NINE            EQU     9               ;                                      ;AN000;
FOURTEEN        EQU     14              ;                                      ;AN000;
REQ_CRSR_POS    EQU     3               ; function call to return cursor position    ;AN000;
MODE7           EQU     7               ;                                      ;AN000;
MODE13          EQU     13              ;                                      ;AN000;
MODE15          EQU     15              ;                                      ;AN000;
MODE19          EQU     19              ;                                      ;AN000;
                                        ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                      ;AN000;
;
;  Request Header Structure (INIT)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INIT_REQ_HDR    STRUC                   ; INIT Request header structure        ;AN000;
                DB   13 DUP(?)          ; standard request header              ;AN000;
NUM_UNITS       DB   ?                  ; number of units (N/A)                ;AN000;
END_ADDRESS_O   DW   ?                  ; ending address of resident code      ;AN000;
END_ADDRESS_S   DW   ?                  ;                                      ;AN000;
ARG_PTR         DD   ?                  ; ptr. to remaining arguments          ;AN000;
DRIVE_NUM       DB   ?                  ; drive number (N/A)                   ;AN000;
CONFIG_ERRMSG   dw   0                  ;Flag to control "Error in CONFIG.SYS.." msg.;AN002;
INIT_REQ_HDR    ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Information Block Structure
;    (for functionality call)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INFO_BLOCK      STRUC                   ; information block for functionality call   ;AN000;
STATIC_ADDRESS  DD   ?                  ; address of static functionality table      ;AN000;
                DB   33 DUP(?)          ; don't care                           ;AN000;
ACTIVE_DISPLAY  DB   ?                  ; active display code                  ;AN000;
ALT_DISPLAY     DB   ?                  ; alternate display code               ;AN000;
                DB   3  DUP(?)          ; don't care                           ;AN000;
CURRENT_SCANS   DB   ?                  ; current number of scan lines         ;AN000;
                DB   2  DUP(?)          ; don't care                           ;AN000;
MISC_INFO       DB   ?                  ; miscellaneous state information      ;AN000;
                DB   18 DUP(?)          ; don't care                           ;AN000;
INFO_BLOCK      ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Video table entry structure
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MODE_TABLE      STRUC                   ;                                      ;AN000;
V_MODE          DB    -1                ; video mode                           ;AN000;
D_MODE          DB    -1                ; display mode                         ;AN000;
RESERVED_BYTE   DB    0                 ; reserved                             ;AN000;
COLORS          DW    -1                ; colors                               ;AN000;
SCR_WIDTH       DW    -1                ; screen width (pels)                  ;AN000;
SCR_LENGTH      DW    -1                ; screen length (pels)                 ;AN000;
SCR_COLS        DW    -1                ; number columns                       ;AN000;
SCR_ROWS        DW    -1                ; number rows                          ;AN000;
MODE_TABLE      ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Structure of Static Block
;  (for functionality call
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STATIC_BLOCK    STRUC                   ; format of static functionality table ;AN000;
                DB   7  DUP(?)          ; don't care                           ;AN000;
SCAN_TEXT       DB   ?                  ; available scan lines in text modes   ;AN000;
STATIC_BLOCK    ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Structure of System ID call return block
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SYS_ID          STRUC                   ; format of return system config data  ;AN000;
                DW   ?                  ; don't care                           ;AN000;
MODEL_BYTE      DB   ?                  ; model byte                           ;AN000;
SYS_ID          ENDS                    ;                                      ;AN000;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; INT2f Strucs and Equates
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MULT_ANSI       EQU     1Ah             ; ANSI multiplex number                ;AC003;
;Catagory code
INSTALL_CHECK   EQU     0               ; install check for ANSI               ;AN000;
IOCTL_2F        EQU     1               ; 2F interface to IOCTL                ;AN000;
DA_INFO_2F      EQU     2h              ;J.K. Information passing to ANSI.
;Subfunction code for IOCTL_2F
GET_SUBFUNC   EQU    7FH                ; WGR Same structure as GET_IOCTL(ANSI);AN000;

;Info Struture for DA_INFO_2F. (DS:DX point to this packet)
;J.K. Note: For DOS 4.00, DA_INFO_PACKET is used by DISPLAY.SYS to signal ANSI.SYS that
;DISPLAY.SYS is calling/finishing INT 10h SET MODE call.  ANSI.SYS needs this
;infomration since it also hooks INT 10h vector.
;For this DA_SETMODE_FLAG purpose, DA_INFO_LEVEL and DA_INFO_DIRECTION should always be
;set to 0.  This can be extended for another information passing scheme between
;DISPLAY.SYS and ANSI.SYS in the future version.
;For DA_SETMODE_FLAG, DISPLAY.SYS should be extremely careful that when it calls
;with DA_SETMODE_FLAG =1, then it should calls with DA_SETMODE_FLAG=0
;when it finished INT 10h function call. Otherwise, the system goes .....
;
;D425. At the request of OS2 compatibility box, when the user ask to ANSI
; with DA_INFO_LEVEL=1, then ANSI sets DA_OPTION_L_STATE based on /L option
; status.

DA_INFO_PACKET   struc
DA_INFO_LEVEL       db      0           ; 0=used for SET_MODE_FLAG 1=for OPTION_L_STATE
DA_SETMODE_FLAG     db      0           ; 1: DISPLAY.SYS is calling INT 10h call, SET MODE. 0=finished.
DA_OPTION_L_STATE   db      0           ; 1 = /L active, 0 = /L inactive
DA_INFO_PACKET   ends

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; GENERIC IOCTL Strucs and Equates
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                        ;                                      ;AN000;
DISPLAY_TYPE    EQU     3               ; MAJ_FUNC type for display            ;AN000;
GET_FUNC        EQU     7FH             ; MIN_FUNC for get subfunction         ;AN000;
SET_FUNC        EQU     5FH             ; MIN_FUNC for set subfunction         ;AN000;
REQ_VID_MODE    EQU     0FH             ; request video mode INT10h function call    ;AN000;
DONE            EQU     0100H           ; set done bit for IOCTL status        ;AN000;
CMD_ERROR       EQU     8000H           ; set error bit for IOCTL status       ;AN000;
INVALID_FUNC    EQU     1               ; invalid function                     ;AN000;
NOT_SUPPORTED   EQU     10              ; return code non-supported ioctl function   ;AN000;
NOT_AVAILABLE   EQU     12              ; return code for font not available   ;AN000;
TEXT_MODE       EQU     1               ; text mode = 1 in request packet      ;AN000;
GRAPHICS_MODE   EQU     2               ; graphics mode = 2                    ;AN000;
DEFAULT_LENGTH  EQU     25              ; normal screen length                 ;AN000;
OFF             EQU     0000H           ;                                      ;AN000;
ON              EQU     0001H           ;                                      ;AN000;
INT_BIT         EQU     00100000b       ; mask for int. bit from functionality call  ;AN000;
FOUND           EQU     1               ; flag value for FOUND                 ;AN000;
NOT_FOUND       EQU     0               ; flag value for not FOUND             ;AN000;
SET_MODE        EQU     0               ; set mode INT10H function number      ;AN000;
DISPLAY_CHECK   EQU     0AD00H          ; install check for DISPLAY.SYS        ;AN000;
CHECK_ACTIVE    EQU     0AD02H          ; active code page check for DISPLAY.SY;AN000;
INSTALLED       EQU     0FFH            ; present in AL if installed           ;AN000;
LOAD_8X8        EQU     1112H           ; register value for 8x8 ROM load      ;AN000;
SET_BLOCK_0     EQU     1103H           ; activate block = 0.                  ;AN000;
CHECK_FOR_FONT  EQU     0AD10H          ; check for 8x8 RAM font - DISPLAY.SYS ;AN000;
SELECT_SCAN     EQU     30H             ; subfunction to set scan lines (VGA)  ;AN000;
SET_INTENSIFY   EQU     0               ; value to enable intensify.           ;AN000;
SET_BLINK       EQU     1               ; value to enable blink.               ;AN000;
BLINK_TOGGLE    EQU     1003H           ; INT10 call to toggle int/blink bit.  ;AN000;
CURSOR_FLAG     EQU     87H             ; cursor flag byte in ROM_BIOS         ;AN000;
SET_CURSOR_CALL EQU     1               ; INT10 function call to set cursor typ;AN000;
VIDEO_MASK      EQU     7FH             ; turn of clear buffer bit of mode value     ;AN000;
MULT_ANSI       EQU     1Ah             ; ANSI multiplex number                ;AC003;
INSTALL_CHECK   EQU     0               ; install check for ANSI               ;AN000;
IOCTL_2F        EQU     1               ; 2F interface to IOCTL                ;AN000;
NOT_CY          EQU     0FFFEH          ; turn carry bit off                   ;AN000;
CY              EQU     1               ; turn carry bit off                   ;AN000;
INVALID_FLAGS   EQU     0FFFEH          ; test for invalid flags in control word     ;AN000;
TURN_OFF        EQU     0FEH            ; values to turn off and on cursor..   ;AN000;
TURN_ON         EQU     NOT TURN_OFF    ; emulation                            ;AN000;
SUB_SIZE        EQU     11              ; sublist size                         ;AN000;
LEFT_ASCIIZ     EQU     00010000B       ; left-aligned asciiz string           ;AN000;
UNLIMITED       EQU     0               ; unlimited message size.              ;AN000;
                                        ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;  Request Header Structure (Generic IOCTL)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INIT_REQ_HDR    STRUC                   ;                                      ;AN000;
                DB   13 DUP(?)          ; standard request header              ;AN000;
MAJ_FUNC        DB   ?                  ; major function                       ;AN000;
MIN_FUNC        DB   ?                  ; minor function                       ;AN000;
IOCTL_SI        DW   ?                  ; contents of SI                       ;AN000;
IOCTL_DI        DW   ?                  ; contents of DI                       ;AN000;
REQ_PCKT_PTR    DD   ?                  ; pointer to request packet            ;AN000;
INIT_REQ_HDR    ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; REQUEST PACKET STRUCTURE (Generic IOCTL)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
REQ_PCKT        STRUC                   ;                                      ;AN000;
INFO_LEVEL      DB   ?                  ; information level (should be 0)      ;AN000;
                DB   ?                  ; reserved                             ;AN000;
DATA_LENGTH     DW   ?                  ; length of remaining data             ;AN000;
RP_FLAGS        DW   ?                  ; control flags                        ;AN000;
RP_MODE         DB   ?                  ; display mode                         ;AN000;
RESERVED2       DB   ?                  ; reserved                             ;AN000;
RP_COLORS       DW   ?                  ; # of colors                          ;AN000;
RP_WIDTH        DW   ?                  ; screen width                         ;AN000;
RP_LENGTH       DW   ?                  ; screen length                        ;AN000;
RP_COLS         DW   ?                  ; columns                              ;AN000;
RP_ROWS         DW   ?                  ; rows                                 ;AN000;
REQ_PCKT        ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Scan Lines available structure
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SCAN_LINE_STR   STRUC                   ;                                      ;AN000;
NUM_LINES       DW   ?                  ; number of scan lines                 ;AN000;
REP_1BH         DB   ?                  ; representation in 1Bh call           ;AN000;
REP_12H         DB   ?                  ; representation in 12h call           ;AN000;
SCAN_LINE_STR   ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; SUBLIST struc
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUB_STRUC       STRUC                   ;                                      ;AN000;
                DB  2 DUP(?)            ;                                      ;AN000;
SUB_PTR_O       DW  ?                   ;                                      ;AN000;
SUB_PTR_S       DW  ?                   ;                                      ;AN000;
SUB_STRUC       ENDS                    ;                                      ;AN000;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; RESULT BUFFER struc
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RESULT_STRUC    STRUC                   ;                                      ;AN000;
RESULT_TYPE     DB  ?                   ;                                      ;AN000;
                DB  ?                   ;                                      ;AN000;
RES_SYN_PTR     DW  ?                   ;                                      ;AN000;
RES_PTR         DD  ?                   ;                                      ;AN000;
RESULT_STRUC    ENDS                    ;                                      ;AN000;