316 lines
9.7 KiB
PHP
316 lines
9.7 KiB
PHP
|
||
|
||
; Equates and Strucs.
|
||
|
||
|
||
;------------------------------------------------------------------------------
|
||
; D425 For OS2 compatibiltiy box, /L option status query 01/14/88 J.K.
|
||
; D493 New INIT request structure for error message 02/25/88 J.K.
|
||
; P4934 Change ANSI 2F function number to 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]
|
||
NHD EQU ES:[DI]
|
||
|
||
; CON data structure CS:[BX]
|
||
|
||
CONPTR EQU CS:[BX]
|
||
; STATES
|
||
BUF_DATA STRUC
|
||
DEV_HDRO DW -1 ; device driver header offset
|
||
DEV_HDRS DW -1
|
||
CON_STRAO DW -1 ; dos CON strategy offset
|
||
CON_STRAS DW -1
|
||
CON_INTRO DW -1 ; dos CON strategy offset
|
||
CON_INTRS DW -1
|
||
BUF_DATA ENDS
|
||
|
||
; INIT Structures and equates
|
||
IFNDEF TRUE
|
||
TRUE EQU -1
|
||
ENDIF
|
||
IFNDEF FALSE
|
||
FALSE EQU 0
|
||
ENDIF
|
||
BRKADR EQU 6Ch ; Break vector address
|
||
CR EQU 13 ; carriage return
|
||
BACKSP EQU 8 ; backspace
|
||
ESC_CHAR EQU 1BH
|
||
ASNMAX EQU 400 ; (increased) SIZE OF KEY ASSIGNMENT BUFFER
|
||
ROM_BIOS EQU 40h ; Segment of ROM_BIOS data area
|
||
EQUIP_FLAG EQU 10h ; equipment flag. (for LCD)
|
||
KBD_FLAG_3 EQU 96h ; offset of KBD_FLAG_3 in data area
|
||
NUM_ROWS EQU 84h ; offset of number of rows in data area
|
||
EXT16_FLAG EQU 00010000b ; mask for Extended INT16 bit
|
||
INIT_VID_MASK EQU 0FFCFh ; mask for equipment list
|
||
LCD_COLOR_MODE EQU 20h ; LCD as color
|
||
LCD_MONO_MODE EQU 30h ; LCD as MONOchrome
|
||
UNKNOWN_CMD EQU 8103H ; unknown command status byte
|
||
RC_EOL EQU -1 ; parser return code for EOL
|
||
RC_NO_ERROR EQU 0 ; parser return code for not in switch list
|
||
INVALID_PARM EQU 10 ; PARSE Invalid parameter message number
|
||
SSTRING EQU 3 ; PARSE Too many parameters message
|
||
FUNC_CALL EQU 1BH ; VGA functionality call
|
||
ALT_SELECT EQU 12H ; EGA alternate select call
|
||
EGA_INFO EQU 10H ; EGA return information subcall
|
||
ALT_PRT_SC EQU 20H ; select alternate print screen subcall
|
||
MONOCHROME EQU 1 ; monochrome attached to EGA
|
||
COLOR EQU 0 ; some color attached to EGA
|
||
PS2_MONO EQU 7 ; display adapter types...
|
||
PS2_COLOR EQU 8
|
||
MOD30_MONO EQU 0BH
|
||
MOD30_COLOR EQU 0CH
|
||
LCD_MODEL EQU 0F9H ; Convertible model byte value
|
||
GET_SYS_ID EQU 0C0H ; INT15H call for system identification
|
||
GET_STATUS EQU 43H ; read system status (Convertible)
|
||
MONO_ADDRESS EQU 0B000H ; base address for monochrome
|
||
COLOR_ADDRESS EQU 0B800H ; base address for CGA
|
||
UNOCCUPIED EQU -1 ; value in VIDEO_MODE_TABLE if space unused
|
||
LCD_ACTIVE EQU 00000001B ; LCD adapter is present
|
||
MONO_ACTIVE EQU 00000010B ; monochrome adapter is present
|
||
CGA_ACTIVE EQU 00000100B ; CGA adapter is present
|
||
MCGA_ACTIVE EQU 00001000B ; MCGA is present
|
||
E5151_ACTIVE EQU 00010000B ; EGA with monochrome is present
|
||
E5153_ACTIVE EQU 00100000B ; EGA with color display is present
|
||
E5154_ACTIVE EQU 01000000B ; EGA with enhanced color display is present
|
||
VGA_ACTIVE EQU 10000000B ; VGA is present
|
||
INT10_LOW EQU (4*10H) ; interrupt 10 vector location
|
||
INT10_HI EQU (4*10H)+2
|
||
INT2F_LOW EQU (4*2FH) ; interrupt 2F vector location
|
||
INT2F_HI EQU (4*2FH)+2
|
||
ONE EQU 1
|
||
THREE EQU 3
|
||
EIGHT EQU 8
|
||
NINE EQU 9
|
||
FOURTEEN EQU 14
|
||
REQ_CRSR_POS EQU 3 ; function call to return cursor position
|
||
MODE7 EQU 7
|
||
MODE13 EQU 13
|
||
MODE15 EQU 15
|
||
MODE19 EQU 19
|
||
|
||
; Request Header Structure (INIT)
|
||
|
||
INIT_REQ_HDR STRUC ; INIT Request header structure
|
||
DB 13 DUP(?) ; standard request header
|
||
NUM_UNITS DB ? ; number of units (N/A)
|
||
END_ADDRESS_O DW ? ; ending address of resident code
|
||
END_ADDRESS_S DW ?
|
||
ARG_PTR DD ? ; ptr. to remaining arguments
|
||
DRIVE_NUM DB ? ; drive number (N/A)
|
||
CONFIG_ERRMSG DW 0 ; Flag to control "Error in CONFIG.SYS.." msg.
|
||
INIT_REQ_HDR ENDS
|
||
|
||
|
||
; Information Block Structure
|
||
; (for functionality call)
|
||
|
||
|
||
INFO_BLOCK STRUC ; information block for functionality call
|
||
STATIC_ADDRESS DD ? ; address of static functionality table
|
||
DB 33 DUP(?) ; don't care
|
||
ACTIVE_DISPLAY DB ? ; active display code
|
||
ALT_DISPLAY DB ? ; alternate display code
|
||
DB 3 DUP(?) ; don't care
|
||
CURRENT_SCANS DB ? ; current number of scan lines
|
||
DB 2 DUP(?) ; don't care
|
||
MISC_INFO DB ? ; miscellaneous state information
|
||
DB 18 DUP(?) ; don't care
|
||
INFO_BLOCK ENDS
|
||
|
||
; Video table entry structure
|
||
|
||
|
||
MODE_TABLE STRUC
|
||
V_MODE DB -1 ; video mode
|
||
D_MODE DB -1 ; display mode
|
||
RESERVED_BYTE DB 0 ; reserved
|
||
COLORS DW -1 ; colors
|
||
SCR_WIDTH DW -1 ; screen width (pels)
|
||
SCR_LENGTH DW -1 ; screen length (pels)
|
||
SCR_COLS DW -1 ; number columns
|
||
SCR_ROWS DW -1 ; number rows
|
||
MODE_TABLE ENDS
|
||
|
||
|
||
; Structure of Static Block
|
||
; (for functionality call
|
||
|
||
|
||
STATIC_BLOCK STRUC ; format of static functionality table
|
||
DB 7 DUP(?) ; don't care
|
||
SCAN_TEXT DB ? ; available scan lines in text modes
|
||
STATIC_BLOCK ENDS
|
||
|
||
|
||
; Structure of System ID call return block
|
||
|
||
|
||
SYS_ID STRUC ; format of return system config data
|
||
DW ? ; don't care
|
||
MODEL_BYTE DB ? ; model byte
|
||
SYS_ID ENDS
|
||
|
||
|
||
|
||
; INT2f Strucs and Equates
|
||
|
||
|
||
MULT_ANSI EQU 1Ah ; ANSI multiplex number
|
||
INSTALL_CHECK EQU 0 ; install check for ANSI
|
||
IOCTL_2F EQU 1 ; 2F interface to IOCTL
|
||
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)
|
||
|
||
;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 L_STATE
|
||
DA_SETMODE_FLAG DB 0 ; 1: DISPLAY.SYS is calling INT 10h call, SET MODE. 0=finished.
|
||
DA_L_STATE DB 0 ; 1 = /L active, 0 = /L inactive
|
||
DA_INFO_PACKET ENDS
|
||
|
||
|
||
|
||
; GENERIC IOCTL Strucs and Equates
|
||
|
||
|
||
|
||
DISPLAY_TYPE EQU 3 ; MAJ_FUNC type for display
|
||
GET_FUNC EQU 7FH ; MIN_FUNC for get subfunction
|
||
SET_FUNC EQU 5FH ; MIN_FUNC for set subfunction
|
||
REQ_VID_MODE EQU 0FH ; request video mode INT10h function call
|
||
DONE EQU 0100H ; set done bit for IOCTL status
|
||
CMD_ERROR EQU 8000H ; set error bit for IOCTL status
|
||
INVALID_FUNC EQU 1 ; invalid function
|
||
NOT_SUPPORTED EQU 10 ; return code non-supported ioctl function
|
||
NOT_AVAILABLE EQU 12 ; return code for font not available
|
||
TEXT_MODE EQU 1 ; text mode = 1 in request packet
|
||
GRAPHICS_MODE EQU 2 ; graphics mode = 2
|
||
DEFAULT_LENGTH EQU 25 ; normal screen length
|
||
OFF EQU 0000H
|
||
ON EQU 0001H
|
||
INT_BIT EQU 00100000b ; mask for int. bit from functionality call
|
||
FOUND EQU 1 ; flag value for FOUND
|
||
NOT_FOUND EQU 0 ; flag value for not FOUND
|
||
SET_MODE EQU 0 ; set mode INT10H function number
|
||
DISPLAY_CHECK EQU 0AD00H ; install check for DISPLAY.SYS
|
||
CHECK_ACTIVE EQU 0AD02H ; active code page check for DISPLAY.SY
|
||
INSTALLED EQU 0FFH ; present in AL if installed
|
||
LOAD_8X8 EQU 1112H ; register value for 8x8 ROM load
|
||
SET_BLOCK_0 EQU 1103H ; activate block = 0.
|
||
CHECK_FOR_FONT EQU 0AD10H ; check for 8x8 RAM font - DISPLAY.SYS
|
||
SELECT_SCAN EQU 30H ; subfunction to set scan lines (VGA)
|
||
SET_INTENSIFY EQU 0 ; value to enable intensify.
|
||
SET_BLINK EQU 1 ; value to enable blink.
|
||
BLINK_TOGGLE EQU 1003H ; INT10 call to toggle int/blink bit.
|
||
CURSOR_FLAG EQU 87H ; cursor flag byte in ROM_BIOS
|
||
SET_CURSOR_CALL EQU 1 ; INT10 function call to set cursor typ
|
||
VIDEO_MASK EQU 7FH ; turn of clear buffer bit of mode value
|
||
MULT_ANSI EQU 1Ah ; ANSI multiplex number ;AC003
|
||
INSTALL_CHECK EQU 0 ; install check for ANSI
|
||
IOCTL_2F EQU 1 ; 2F interface to IOCTL
|
||
NOT_CY EQU 0FFFEH ; turn carry bit off
|
||
CY EQU 1 ; turn carry bit off
|
||
INVALID_FLAGS EQU 0FFFEH ; test for invalid flags in control word
|
||
TURN_OFF EQU 0FEH ; values to turn off and on cursor..
|
||
TURN_ON EQU NOT TURN_OFF ; emulation
|
||
SUB_SIZE EQU 11 ; sublist size
|
||
LEFT_ASCIIZ EQU 00010000B ; left-aligned asciiz string
|
||
UNLIMITED EQU 0 ; unlimited message size.
|
||
|
||
|
||
CMDLEN = 0 ;LENGTH OF THIS COMMAND
|
||
UNIT = 1 ;SUB UNIT SPECIFIER
|
||
CMD = 2 ;COMMAND CODE
|
||
STATUS = 3 ;STATUS
|
||
MEDIA = 13 ;MEDIA DESCRIPTOR
|
||
TRANS = 14 ;TRANSFER ADDRESS
|
||
COUNT = 18 ;COUNT OF BLOCKS OR CHARACTERS
|
||
START = 20 ;FIRST BLOCK TO TRANSFER
|
||
|
||
|
||
; REQUEST PACKET STRUCTURE (Generic IOCTL)
|
||
|
||
|
||
REQ_PCKT STRUC
|
||
INFO_LEVEL DB ? ; information level (should be 0)
|
||
DB ? ; reserved
|
||
DATA_LENGTH DW ? ; length of remaining data
|
||
RP_FLAGS DW ? ; control flags
|
||
RP_MODE DB ? ; display mode
|
||
RESERVED2 DB ? ; reserved
|
||
RP_COLORS DW ? ; # of colors
|
||
RP_WIDTH DW ? ; screen width
|
||
RP_LENGTH DW ? ; screen length
|
||
RP_COLS DW ? ; columns
|
||
RP_ROWS DW ? ; rows
|
||
REQ_PCKT ENDS
|
||
|
||
|
||
; Scan Lines available structure
|
||
|
||
|
||
SCAN_LINE_STR STRUC
|
||
NUM_LINES DW ? ; number of scan lines
|
||
REP_1BH DB ? ; representation in 1Bh call
|
||
REP_12H DB ? ; representation in 12h call
|
||
SCAN_LINE_STR ENDS
|
||
|
||
|
||
; SUBLIST struc
|
||
|
||
|
||
SUB_STRUC STRUC
|
||
DB 2 DUP(?)
|
||
SUB_PTR_O DW ?
|
||
SUB_PTR_S DW ?
|
||
SUB_STRUC ENDS
|
||
|
||
|
||
; RESULT BUFFER struc
|
||
|
||
|
||
RESULT_STRUC STRUC
|
||
RESULT_TYPE DB ?
|
||
DB ?
|
||
RES_SYN_PTR DW ?
|
||
RES_PTR DD ?
|
||
RESULT_STRUC ENDS
|
||
|
||
BREAK MACRO subtitle
|
||
SUBTTL subtitle
|
||
PAGE ,132
|
||
ENDM
|
||
|
||
AsmVars Macro varlist
|
||
IRP var,<varlist>
|
||
AsmVar var
|
||
ENDM
|
||
ENDM
|
||
|
||
AsmVar Macro var
|
||
IFNDEF var
|
||
var = FALSE
|
||
ENDIF
|
||
ENDM
|