Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-1


				PAGE	,132
				TITLE	ANSI Console device CON$INIT routine
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				;  MODULE_NAME: CON$INIT
				;
				;  FUNCTION:
				;    THIS PROCEDURE PERFORMS ALL NECESSARY INITIALIZATION ROUTINES
				;  FOR ANSI.SYS.
				;
				;  THIS ROUTINE WAS SPLIT FROM THE ORIGINAL ANSI.ASM SOURCE FILE
				;  FOR RELEASE 4.00 OF DOS.  ALL CHANGED LINES HAVE BEEN MARKED WITH
				;  WGR. NEW PROCS HAVE BEEN MARKED AS SUCH.
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;AN001; P1767 VIDEO_MODE_TABLE not initialized correctly	   10/16/87 J.K.
				;AN002; P2617 Order dependecy problem with Display.sys		   11/23/87 J.K.
				;AN003; D479  An option to disable the extended keyboard functions 02/12/88 J.K.
				;AN004; D493 New INIT request structure for error message	   02/25/88 J.K.
				;-------------------------------------------------------------------------------
				
				INCLUDE    ANSI.INC		   ; WGR equates and strucs				 ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	;   Equates and Strucs.
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;------------------------------------------------------------------------------
			     C	;AN001; D425 For OS2 compatibiltiy box, /L option status query     01/14/88 J.K.
			     C	;AN002; D493 New INIT request structure for error message          02/25/88 J.K.
			     C	;AN003; P4934 Change ANSI 2F function number t0 1Ah                05/20/88 F.G.
			     C	;------------------------------------------------------------------------------
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	;      DEVICE  Header     DS:[SI]      -- to locate the next CON header
			     C	;      NEXT device header ES:[DI]
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 = DS:[SI]                   C	HP      EQU     DS:[SI]                 ;                                      ;AN000;
 = ES:[DI]                   C	NHD     EQU     ES:[DI]                 ;                                      ;AN000;
			     C	                                        ;
 = 0008                      C	NAME_LEN EQU    8                       ;                                      ;AN000;
			     C	                                        ;
			     C	DHS     STRUC                           ;                                      ;AN000;
 0000  0000                  C	DH_NEXTO DW     ?                       ; offset of pointer to next header     ;AN000;
 0002  0000                  C	DH_NEXTS DW     ?                       ; segment of pointer to next header    ;AN000;
 0004  0000                  C	        DW      ?                       ; attribute                            ;AN000;
 0006  0000                  C	DH_STRAO DW     ?                       ; offset to strategy routine           ;AN000;
 0008  0000                  C	DH_INTRO DW     ?                       ; offset to interrupt routine          ;AN000;
 000A  0008[                 C	DH_NAME DB      NAME_LEN DUP(0)         ; device name in this header           ;AN000;
	   00                C	
			 ]   C	
			     C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-2


 0012                        C	DHS     ENDS                            ; end of common portion                ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; CON data structure  CS:[BX]
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 = CS:[BX]                   C	CONPTR  EQU     CS:[BX]                 ;                                      ;AN000;
			     C	                                        ; STATES                               ;AN000;
			     C	BUF_DATA STRUC                          ;                                      ;AN000;
 0000  FFFF                  C	DEV_HDRO DW     -1                      ; device driver header offset          ;AN000;
 0002  FFFF                  C	DEV_HDRS DW     -1                      ;                                      ;AN000;
 0004  FFFF                  C	CON_STRAO DW    -1                      ; dos CON strategy offset              ;AN000;
 0006  FFFF                  C	CON_STRAS DW    -1                      ;                                      ;AN000;
 0008  FFFF                  C	CON_INTRO DW    -1                      ; dos CON strategy offset              ;AN000;
 000A  FFFF                  C	CON_INTRS DW    -1                      ;                                      ;AN000;
 000C                        C	BUF_DATA ENDS                           ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                      ;AN000;
			     C	;
			     C	;  INIT Structures and equates
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 = 0040                      C	ROM_BIOS        EQU     40h             ; Segment of ROM_BIOS data area        ;AN000;
 = 0010                      C	EQUIP_FLAG      EQU     10h             ; equipment flag. (for LCD)            ;AN000;
 = 0096                      C	KBD_FLAG_3      EQU     96h             ; offset of KBD_FLAG_3 in data area    ;AN000;
 = 0084                      C	NUM_ROWS        EQU     84h             ; offset of number of rows in data area;AN000;
 = 0010                      C	EXT16_FLAG      EQU     00010000b       ; mask for Extended INT16 bit          ;AN000;
 = FFCF                      C	INIT_VID_MASK   EQU     0FFCFh          ; mask for equipment list              ;AN000;
 = 0020                      C	LCD_COLOR_MODE  EQU     20h             ; LCD as color                         ;AN000;
 = 0030                      C	LCD_MONO_MODE   EQU     30h             ; LCD as MONOchrome                    ;AN000;
 = 8103                      C	UNKNOWN_CMD     EQU     8103H           ; unknown command status byte          ;AN000;
 =-0001                      C	RC_EOL          EQU     -1              ; parser return code for EOL           ;AN000;
 = 0000                      C	RC_NO_ERROR     EQU     0               ; parser return code for not in switch list  ;AN000;
 = 000A                      C	INVALID_PARM    EQU     10              ; PARSE Invalid parameter message number     ;AN000;
 = 0003                      C	SSTRING         EQU     3               ; PARSE Too many parameters message    ;AN000;
 = 001B                      C	FUNC_CALL       EQU     1BH             ; VGA functionality call               ;AN000;
 = 0012                      C	ALT_SELECT      EQU     12H             ; EGA alternate select call            ;AN000;
 = 0010                      C	EGA_INFO        EQU     10H             ; EGA return information subcall       ;AN000;
 = 0020                      C	ALT_PRT_SC      EQU     20H             ; select alternate print screen subcall;AN000;
 = 0001                      C	MONOCHROME      EQU     1               ; monochrome attached to EGA           ;AN000;
 = 0000                      C	COLOR           EQU     0               ; some color attached to EGA           ;AN000;
 = 0007                      C	PS2_MONO        EQU     7               ; display adapter types...             ;AN000;
 = 0008                      C	PS2_COLOR       EQU     8               ;                                      ;AN000;
 = 000B                      C	MOD30_MONO      EQU     0BH             ;                                      ;AN000;
 = 000C                      C	MOD30_COLOR     EQU     0CH             ;                                      ;AN000;
 = 00F9                      C	LCD_MODEL       EQU     0F9H            ; Convertible model byte value         ;AN000;
 = 00C0                      C	GET_SYS_ID      EQU     0C0H            ; INT15H call for system identification;AN000;
 = 0043                      C	GET_STATUS      EQU     43H             ; read system status (Convertible)     ;AN000;
 = B000                      C	MONO_ADDRESS    EQU     0B000H          ; base address for monochrome          ;AN000;
 = B800                      C	COLOR_ADDRESS   EQU     0B800H          ; base address for CGA                 ;AN000;
 =-0001                      C	UNOCCUPIED      EQU     -1              ; value in VIDEO_MODE_TABLE if space unused  ;AN000;
 = 0001                      C	LCD_ACTIVE      EQU     00000001B       ; LCD adapter is present               ;AN000;
 = 0002                      C	MONO_ACTIVE     EQU     00000010B       ; monochrome adapter is present        ;AN000;
 = 0004                      C	CGA_ACTIVE      EQU     00000100B       ; CGA adapter is present               ;AN000;
 = 0008                      C	MCGA_ACTIVE     EQU     00001000B       ; MCGA is present                      ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-3


 = 0010                      C	E5151_ACTIVE    EQU     00010000B       ; EGA with monochrome is present       ;AN000;
 = 0020                      C	E5153_ACTIVE    EQU     00100000B       ; EGA with color display is present    ;AN000;
 = 0040                      C	E5154_ACTIVE    EQU     01000000B       ; EGA with enhanced color display is present ;AN000;
 = 0080                      C	VGA_ACTIVE      EQU     10000000B       ; VGA is present                       ;AN000;
 = 0040                      C	INT10_LOW       EQU     (4*10H)         ; interrupt 10 vector location         ;AN000;
 = 0042                      C	INT10_HI        EQU     (4*10H)+2       ;                                      ;AN000;
 = 00BC                      C	INT2F_LOW       EQU     (4*2FH)         ; interrupt 2F vector location         ;AN000;
 = 00BE                      C	INT2F_HI        EQU     (4*2FH)+2       ;                                      ;AN000;
 = 0001                      C	ONE             EQU     1               ;                                      ;AN000;
 = 0003                      C	THREE           EQU     3               ;                                      ;AN000;
 = 0008                      C	EIGHT           EQU     8               ;                                      ;AN000;
 = 0009                      C	NINE            EQU     9               ;                                      ;AN000;
 = 000E                      C	FOURTEEN        EQU     14              ;                                      ;AN000;
 = 0003                      C	REQ_CRSR_POS    EQU     3               ; function call to return cursor position    ;AN000;
 = 0007                      C	MODE7           EQU     7               ;                                      ;AN000;
 = 000D                      C	MODE13          EQU     13              ;                                      ;AN000;
 = 000F                      C	MODE15          EQU     15              ;                                      ;AN000;
 = 0013                      C	MODE19          EQU     19              ;                                      ;AN000;
			     C	                                        ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                      ;AN000;
			     C	;
			     C	;  Request Header Structure (INIT)
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	INIT_REQ_HDR    STRUC                   ; INIT Request header structure        ;AN000;
 0000  000D[                 C	                DB   13 DUP(?)          ; standard request header              ;AN000;
	   ??                C	
			 ]   C	
			     C	
 000D  00                    C	NUM_UNITS       DB   ?                  ; number of units (N/A)                ;AN000;
 000E  0000                  C	END_ADDRESS_O   DW   ?                  ; ending address of resident code      ;AN000;
 0010  0000                  C	END_ADDRESS_S   DW   ?                  ;                                      ;AN000;
 0012  00000000              C	ARG_PTR         DD   ?                  ; ptr. to remaining arguments          ;AN000;
 0016  00                    C	DRIVE_NUM       DB   ?                  ; drive number (N/A)                   ;AN000;
 0017  0000                  C	CONFIG_ERRMSG   dw   0                  ;Flag to control "Error in CONFIG.SYS.." msg.;AN002;
 0019                        C	INIT_REQ_HDR    ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; Information Block Structure
			     C	;    (for functionality call)
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	INFO_BLOCK      STRUC                   ; information block for functionality call   ;AN000;
 0000  00000000              C	STATIC_ADDRESS  DD   ?                  ; address of static functionality table      ;AN000;
 0004  0021[                 C	                DB   33 DUP(?)          ; don't care                           ;AN000;
	   ??                C	
			 ]   C	
			     C	
 0025  00                    C	ACTIVE_DISPLAY  DB   ?                  ; active display code                  ;AN000;
 0026  00                    C	ALT_DISPLAY     DB   ?                  ; alternate display code               ;AN000;
 0027  0003[                 C	                DB   3  DUP(?)          ; don't care                           ;AN000;
	   ??                C	
			 ]   C	
			     C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-4


 002A  00                    C	CURRENT_SCANS   DB   ?                  ; current number of scan lines         ;AN000;
 002B  0002[                 C	                DB   2  DUP(?)          ; don't care                           ;AN000;
	   ??                C	
			 ]   C	
			     C	
 002D  00                    C	MISC_INFO       DB   ?                  ; miscellaneous state information      ;AN000;
 002E  0012[                 C	                DB   18 DUP(?)          ; don't care                           ;AN000;
	   ??                C	
			 ]   C	
			     C	
 0040                        C	INFO_BLOCK      ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; Video table entry structure
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	MODE_TABLE      STRUC                   ;                                      ;AN000;
 0000  FF                    C	V_MODE          DB    -1                ; video mode                           ;AN000;
 0001  FF                    C	D_MODE          DB    -1                ; display mode                         ;AN000;
 0002  00                    C	RESERVED_BYTE   DB    0                 ; reserved                             ;AN000;
 0003  FFFF                  C	COLORS          DW    -1                ; colors                               ;AN000;
 0005  FFFF                  C	SCR_WIDTH       DW    -1                ; screen width (pels)                  ;AN000;
 0007  FFFF                  C	SCR_LENGTH      DW    -1                ; screen length (pels)                 ;AN000;
 0009  FFFF                  C	SCR_COLS        DW    -1                ; number columns                       ;AN000;
 000B  FFFF                  C	SCR_ROWS        DW    -1                ; number rows                          ;AN000;
 000D                        C	MODE_TABLE      ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; Structure of Static Block
			     C	;  (for functionality call
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	STATIC_BLOCK    STRUC                   ; format of static functionality table ;AN000;
 0000  0007[                 C	                DB   7  DUP(?)          ; don't care                           ;AN000;
	   ??                C	
			 ]   C	
			     C	
 0007  00                    C	SCAN_TEXT       DB   ?                  ; available scan lines in text modes   ;AN000;
 0008                        C	STATIC_BLOCK    ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; Structure of System ID call return block
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	SYS_ID          STRUC                   ; format of return system config data  ;AN000;
 0000  0000                  C	                DW   ?                  ; don't care                           ;AN000;
 0002  00                    C	MODEL_BYTE      DB   ?                  ; model byte                           ;AN000;
 0003                        C	SYS_ID          ENDS                    ;                                      ;AN000;
			     C	
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; INT2f Strucs and Equates
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-5


 = 001A                      C	MULT_ANSI       EQU     1Ah             ; ANSI multiplex number                ;AC003;
			     C	;Catagory code
 = 0000                      C	INSTALL_CHECK   EQU     0               ; install check for ANSI               ;AN000;
 = 0001                      C	IOCTL_2F        EQU     1               ; 2F interface to IOCTL                ;AN000;
 = 0002                      C	DA_INFO_2F      EQU     2h              ;J.K. Information passing to ANSI.
			     C	;Subfunction code for IOCTL_2F
 = 007F                      C	GET_SUBFUNC   EQU    7FH                ; WGR Same structure as GET_IOCTL(ANSI);AN000;
			     C	
			     C	;Info Struture for DA_INFO_2F. (DS:DX point to this packet)
			     C	;J.K. Note: For DOS 4.00, DA_INFO_PACKET is used by DISPLAY.SYS to signal ANSI.SYS that
			     C	;DISPLAY.SYS is calling/finishing INT 10h SET MODE call.  ANSI.SYS needs this
			     C	;infomration since it also hooks INT 10h vector.
			     C	;For this DA_SETMODE_FLAG purpose, DA_INFO_LEVEL and DA_INFO_DIRECTION should always be
			     C	;set to 0.  This can be extended for another information passing scheme between
			     C	;DISPLAY.SYS and ANSI.SYS in the future version.
			     C	;For DA_SETMODE_FLAG, DISPLAY.SYS should be extremely careful that when it calls
			     C	;with DA_SETMODE_FLAG =1, then it should calls with DA_SETMODE_FLAG=0
			     C	;when it finished INT 10h function call. Otherwise, the system goes .....
			     C	;
			     C	;D425. At the request of OS2 compatibility box, when the user ask to ANSI
			     C	; with DA_INFO_LEVEL=1, then ANSI sets DA_OPTION_L_STATE based on /L option
			     C	; status.
			     C	
			     C	DA_INFO_PACKET   struc
 0000  00                    C	DA_INFO_LEVEL       db      0           ; 0=used for SET_MODE_FLAG 1=for OPTION_L_STATE
 0001  00                    C	DA_SETMODE_FLAG     db      0           ; 1: DISPLAY.SYS is calling INT 10h call, SET MODE. 0=finish
				ed.
 0002  00                    C	DA_OPTION_L_STATE   db      0           ; 1 = /L active, 0 = /L inactive
 0003                        C	DA_INFO_PACKET   ends
			     C	
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; GENERIC IOCTL Strucs and Equates
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	                                        ;                                      ;AN000;
 = 0003                      C	DISPLAY_TYPE    EQU     3               ; MAJ_FUNC type for display            ;AN000;
 = 007F                      C	GET_FUNC        EQU     7FH             ; MIN_FUNC for get subfunction         ;AN000;
 = 005F                      C	SET_FUNC        EQU     5FH             ; MIN_FUNC for set subfunction         ;AN000;
 = 000F                      C	REQ_VID_MODE    EQU     0FH             ; request video mode INT10h function call    ;AN000;
 = 0100                      C	DONE            EQU     0100H           ; set done bit for IOCTL status        ;AN000;
 = 8000                      C	CMD_ERROR       EQU     8000H           ; set error bit for IOCTL status       ;AN000;
 = 0001                      C	INVALID_FUNC    EQU     1               ; invalid function                     ;AN000;
 = 000A                      C	NOT_SUPPORTED   EQU     10              ; return code non-supported ioctl function   ;AN000;
 = 000C                      C	NOT_AVAILABLE   EQU     12              ; return code for font not available   ;AN000;
 = 0001                      C	TEXT_MODE       EQU     1               ; text mode = 1 in request packet      ;AN000;
 = 0002                      C	GRAPHICS_MODE   EQU     2               ; graphics mode = 2                    ;AN000;
 = 0019                      C	DEFAULT_LENGTH  EQU     25              ; normal screen length                 ;AN000;
 = 0000                      C	OFF             EQU     0000H           ;                                      ;AN000;
 = 0001                      C	ON              EQU     0001H           ;                                      ;AN000;
 = 0020                      C	INT_BIT         EQU     00100000b       ; mask for int. bit from functionality call  ;AN000;
 = 0001                      C	FOUND           EQU     1               ; flag value for FOUND                 ;AN000;
 = 0000                      C	NOT_FOUND       EQU     0               ; flag value for not FOUND             ;AN000;
 = 0000                      C	SET_MODE        EQU     0               ; set mode INT10H function number      ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-6


 = AD00                      C	DISPLAY_CHECK   EQU     0AD00H          ; install check for DISPLAY.SYS        ;AN000;
 = AD02                      C	CHECK_ACTIVE    EQU     0AD02H          ; active code page check for DISPLAY.SY;AN000;
 = 00FF                      C	INSTALLED       EQU     0FFH            ; present in AL if installed           ;AN000;
 = 1112                      C	LOAD_8X8        EQU     1112H           ; register value for 8x8 ROM load      ;AN000;
 = 1103                      C	SET_BLOCK_0     EQU     1103H           ; activate block = 0.                  ;AN000;
 = AD10                      C	CHECK_FOR_FONT  EQU     0AD10H          ; check for 8x8 RAM font - DISPLAY.SYS ;AN000;
 = 0030                      C	SELECT_SCAN     EQU     30H             ; subfunction to set scan lines (VGA)  ;AN000;
 = 0000                      C	SET_INTENSIFY   EQU     0               ; value to enable intensify.           ;AN000;
 = 0001                      C	SET_BLINK       EQU     1               ; value to enable blink.               ;AN000;
 = 1003                      C	BLINK_TOGGLE    EQU     1003H           ; INT10 call to toggle int/blink bit.  ;AN000;
 = 0087                      C	CURSOR_FLAG     EQU     87H             ; cursor flag byte in ROM_BIOS         ;AN000;
 = 0001                      C	SET_CURSOR_CALL EQU     1               ; INT10 function call to set cursor typ;AN000;
 = 007F                      C	VIDEO_MASK      EQU     7FH             ; turn of clear buffer bit of mode value     ;AN000;
 = 001A                      C	MULT_ANSI       EQU     1Ah             ; ANSI multiplex number                ;AC003;
 = 0000                      C	INSTALL_CHECK   EQU     0               ; install check for ANSI               ;AN000;
 = 0001                      C	IOCTL_2F        EQU     1               ; 2F interface to IOCTL                ;AN000;
 = FFFE                      C	NOT_CY          EQU     0FFFEH          ; turn carry bit off                   ;AN000;
 = 0001                      C	CY              EQU     1               ; turn carry bit off                   ;AN000;
 = FFFE                      C	INVALID_FLAGS   EQU     0FFFEH          ; test for invalid flags in control word     ;AN000;
 = 00FE                      C	TURN_OFF        EQU     0FEH            ; values to turn off and on cursor..   ;AN000;
 = FF01                      C	TURN_ON         EQU     NOT TURN_OFF    ; emulation                            ;AN000;
 = 000B                      C	SUB_SIZE        EQU     11              ; sublist size                         ;AN000;
 = 0010                      C	LEFT_ASCIIZ     EQU     00010000B       ; left-aligned asciiz string           ;AN000;
 = 0000                      C	UNLIMITED       EQU     0               ; unlimited message size.              ;AN000;
			     C	                                        ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	;  Request Header Structure (Generic IOCTL)
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	INIT_REQ_HDR    STRUC                   ;                                      ;AN000;
 0000  000D[                 C	                DB   13 DUP(?)          ; standard request header              ;AN000;
	   ??                C	
			 ]   C	
			     C	
 000D  00                    C	MAJ_FUNC        DB   ?                  ; major function                       ;AN000;
 000E  00                    C	MIN_FUNC        DB   ?                  ; minor function                       ;AN000;
 000F  0000                  C	IOCTL_SI        DW   ?                  ; contents of SI                       ;AN000;
 0011  0000                  C	IOCTL_DI        DW   ?                  ; contents of DI                       ;AN000;
 0013  00000000              C	REQ_PCKT_PTR    DD   ?                  ; pointer to request packet            ;AN000;
 0017                        C	INIT_REQ_HDR    ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; REQUEST PACKET STRUCTURE (Generic IOCTL)
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	REQ_PCKT        STRUC                   ;                                      ;AN000;
 0000  00                    C	INFO_LEVEL      DB   ?                  ; information level (should be 0)      ;AN000;
 0001  00                    C	                DB   ?                  ; reserved                             ;AN000;
 0002  0000                  C	DATA_LENGTH     DW   ?                  ; length of remaining data             ;AN000;
 0004  0000                  C	RP_FLAGS        DW   ?                  ; control flags                        ;AN000;
 0006  00                    C	RP_MODE         DB   ?                  ; display mode                         ;AN000;
 0007  00                    C	RESERVED2       DB   ?                  ; reserved                             ;AN000;
 0008  0000                  C	RP_COLORS       DW   ?                  ; # of colors                          ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-7


 000A  0000                  C	RP_WIDTH        DW   ?                  ; screen width                         ;AN000;
 000C  0000                  C	RP_LENGTH       DW   ?                  ; screen length                        ;AN000;
 000E  0000                  C	RP_COLS         DW   ?                  ; columns                              ;AN000;
 0010  0000                  C	RP_ROWS         DW   ?                  ; rows                                 ;AN000;
 0012                        C	REQ_PCKT        ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; Scan Lines available structure
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	SCAN_LINE_STR   STRUC                   ;                                      ;AN000;
 0000  0000                  C	NUM_LINES       DW   ?                  ; number of scan lines                 ;AN000;
 0002  00                    C	REP_1BH         DB   ?                  ; representation in 1Bh call           ;AN000;
 0003  00                    C	REP_12H         DB   ?                  ; representation in 12h call           ;AN000;
 0004                        C	SCAN_LINE_STR   ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; SUBLIST struc
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	SUB_STRUC       STRUC                   ;                                      ;AN000;
 0000  0002[                 C	                DB  2 DUP(?)            ;                                      ;AN000;
	   ??                C	
			 ]   C	
			     C	
 0002  0000                  C	SUB_PTR_O       DW  ?                   ;                                      ;AN000;
 0004  0000                  C	SUB_PTR_S       DW  ?                   ;                                      ;AN000;
 0006                        C	SUB_STRUC       ENDS                    ;                                      ;AN000;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;
			     C	; RESULT BUFFER struc
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	RESULT_STRUC    STRUC                   ;                                      ;AN000;
 0000  00                    C	RESULT_TYPE     DB  ?                   ;                                      ;AN000;
 0001  00                    C	                DB  ?                   ;                                      ;AN000;
 0002  0000                  C	RES_SYN_PTR     DW  ?                   ;                                      ;AN000;
 0004  00000000              C	RES_PTR         DD  ?                   ;                                      ;AN000;
 0008                        C	RESULT_STRUC    ENDS                    ;                                      ;AN000;
				.LIST
				
				PUBLIC	   CON$INIT		   ; WGR						 ;AN000;
				
				
 0000				CODE	SEGMENT  PUBLIC  BYTE
					ASSUME	CS:CODE,DS:CODE
				
				EXTRN	VIDEO_MODE_TABLE:BYTE	       ; WGR						 ;AN000;
				EXTRN	FUNC_INFO:BYTE		       ; WGR						 ;AN000;
				EXTRN	HDWR_FLAG:WORD		       ; WGR						 ;AN000;
				EXTRN	VIDEO_TABLE_MAX:ABS	       ; WGR						 ;AN000;
				EXTRN	SCAN_LINES:BYTE 	       ; WGR						 ;AN000;
				EXTRN	PTRSAV:DWORD		       ; WGR						 ;AN000;
				EXTRN	PARSE_PARM:NEAR 	       ; WGR						 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-8


				EXTRN	ERR2:NEAR		       ; WGR						 ;AN000;
				EXTRN	EXT_16:BYTE		       ; WGR						 ;AN000;
				EXTRN	BRKADR:ABS		       ; WGR						 ;AN000;
				EXTRN	BRKKY:NEAR		       ; WGR						 ;AN000;
				EXTRN	COUT:NEAR		       ; WGR						 ;AN000;
				EXTRN	BASE:WORD		       ; WGR						 ;AN000;
				EXTRN	MODE:BYTE		       ; WGR						 ;AN000;
				EXTRN	MAXCOL:BYTE		       ; WGR						 ;AN000;
				EXTRN	TRANS:ABS		       ; WGR						 ;AN000;
				EXTRN	STATUS:ABS		       ; WGR						 ;AN000;
				EXTRN	EXIT:NEAR		       ; WGR						 ;AN000;
				EXTRN	MAX_SCANS:BYTE		       ; WGR						 ;AN000;
				EXTRN	ROM_INT10:WORD		       ; WGR						 ;AN000;
				EXTRN	INT10_COM:NEAR		       ; WGR						 ;AN000;
				EXTRN	ROM_INT2F:WORD		       ; WGR						 ;AN000;
				EXTRN	INT2F_COM:NEAR		       ; WGR						 ;AN000;
				EXTRN	ABORT:BYTE		       ; WGR						 ;AN000;
				extrn	Display_Loaded_Before_me:byte  ;AN002;Defined in IOCTL.ASM
				extrn	Switch_K:Byte		       ;AN003;
				
				INCLUDE   ANSIVID.INC		       ; WGR video tables data				 ;AN000;
 0000                        C	VGA_TABLE	   LABEL BYTE						       ;AN000;
 0000  01                    C	    MODE_TABLE	 < 1, 1,, 16,  -1,  -1, 40, -1> ; mode	1 Ä¿ To give preference;AN000;
 0001  01                    C	
 0002  00                    C	
 0003  1000                  C	
 0005  FFFF                  C	
 0007  FFFF                  C	
 0009  2800                  C	
 000B  FFFF                  C	
			     C	
 000D  00                    C	    MODE_TABLE	 < 0, 1,, 16,  -1,  -1, 40, -1> ; mode	0  ³ of COxx over      ;AN000;
 000E  01                    C	
 000F  00                    C	
 0010  1000                  C	
 0012  FFFF                  C	
 0014  FFFF                  C	
 0016  2800                  C	
 0018  FFFF                  C	
			     C	
 001A  03                    C	    MODE_TABLE	 < 3, 1,, 16,  -1,  -1, 80, -1> ; mode	3  ³ BWxx.	       ;AN000;
 001B  01                    C	
 001C  00                    C	
 001D  1000                  C	
 001F  FFFF                  C	
 0021  FFFF                  C	
 0023  5000                  C	
 0025  FFFF                  C	
			     C	
 0027  02                    C	    MODE_TABLE	 < 2, 1,, 16,  -1,  -1, 80, -1> ; mode	2 ÄÙ	(see text)     ;AN000;
 0028  01                    C	
 0029  00                    C	
 002A  1000                  C	
 002C  FFFF                  C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-9


 002E  FFFF                  C	
 0030  5000                  C	
 0032  FFFF                  C	
			     C	
 0034  07                    C	    MODE_TABLE	 < 7, 1,,  0,  -1,  -1, 80, -1> ; mode	7		       ;AN000;
 0035  01                    C	
 0036  00                    C	
 0037  0000                  C	
 0039  FFFF                  C	
 003B  FFFF                  C	
 003D  5000                  C	
 003F  FFFF                  C	
			     C	
 0041  0D                    C	    MODE_TABLE	 <13, 2,, 16, 320, 200, 40, 25> ; mode 13		       ;AN000;
 0042  02                    C	
 0043  00                    C	
 0044  1000                  C	
 0046  4001                  C	
 0048  C800                  C	
 004A  2800                  C	
 004C  1900                  C	
			     C	
 004E  0E                    C	    MODE_TABLE	 <14, 2,, 16, 640, 200, 80, 25> ; mode 14		       ;AN000;
 004F  02                    C	
 0050  00                    C	
 0051  1000                  C	
 0053  8002                  C	
 0055  C800                  C	
 0057  5000                  C	
 0059  1900                  C	
			     C	
 005B  0F                    C	    MODE_TABLE	 <15, 2,,  0, 640, 350, 80, 25> ; mode 15		       ;AN000;
 005C  02                    C	
 005D  00                    C	
 005E  0000                  C	
 0060  8002                  C	
 0062  5E01                  C	
 0064  5000                  C	
 0066  1900                  C	
			     C	
 0068  10                    C	    MODE_TABLE	 <16, 2,, 16, 640, 350, 80, 25> ; mode 16		       ;AN000;
 0069  02                    C	
 006A  00                    C	
 006B  1000                  C	
 006D  8002                  C	
 006F  5E01                  C	
 0071  5000                  C	
 0073  1900                  C	
			     C	
 0075  11                    C	    MODE_TABLE	 <17, 2,,  2, 640, 480, 80, 30> ; mode 17		       ;AN000;
 0076  02                    C	
 0077  00                    C	
 0078  0200                  C	
 007A  8002                  C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-10


 007C  E001                  C	
 007E  5000                  C	
 0080  1E00                  C	
			     C	
 0082  12                    C	    MODE_TABLE	 <18, 2,, 16, 640, 480, 80, 30> ; mode 18		       ;AN000;
 0083  02                    C	
 0084  00                    C	
 0085  1000                  C	
 0087  8002                  C	
 0089  E001                  C	
 008B  5000                  C	
 008D  1E00                  C	
			     C	
 008F  13                    C	    MODE_TABLE	 <19, 2,,256, 320, 200, 40, 25> ; mode 19		       ;AN000;
 0090  02                    C	
 0091  00                    C	
 0092  0001                  C	
 0094  4001                  C	
 0096  C800                  C	
 0098  2800                  C	
 009A  1900                  C	
			     C	
 = 000C                      C	VGA_NUM 	 EQU  ($ - VGA_TABLE)/(TYPE MODE_TABLE) 		       ;AN000;
			     C	
 009C                        C	MCGA_TABLE	   LABEL BYTE						       ;AN000;
 009C  11                    C	    MODE_TABLE	 <17, 2,,  2, 640, 480, 80, 30> ; mode 17		       ;AN000;
 009D  02                    C	
 009E  00                    C	
 009F  0200                  C	
 00A1  8002                  C	
 00A3  E001                  C	
 00A5  5000                  C	
 00A7  1E00                  C	
			     C	
 00A9  13                    C	    MODE_TABLE	 <19, 2,,256, 320, 200, 40, 25> ; mode 19		       ;AN000;
 00AA  02                    C	
 00AB  00                    C	
 00AC  0001                  C	
 00AE  4001                  C	
 00B0  C800                  C	
 00B2  2800                  C	
 00B4  1900                  C	
			     C	
 = 0002                      C	MCGA_NUM	 EQU  ($ - MCGA_TABLE)/(TYPE MODE_TABLE)		       ;AN000;
			     C	
 00B6                        C	EGA_5154_TABLE	   LABEL BYTE						       ;AN000;
 00B6  01                    C	    MODE_TABLE	 < 1, 1,, 16,  -1,  -1, 40, 43> ; mode	1 Ä¿ To give preference;AN000;
 00B7  01                    C	
 00B8  00                    C	
 00B9  1000                  C	
 00BB  FFFF                  C	
 00BD  FFFF                  C	
 00BF  2800                  C	
 00C1  2B00                  C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-11


			     C	
 00C3  00                    C	    MODE_TABLE	 < 0, 1,, 16,  -1,  -1, 40, 43> ; mode	0  ³ of COxx over      ;AN000;
 00C4  01                    C	
 00C5  00                    C	
 00C6  1000                  C	
 00C8  FFFF                  C	
 00CA  FFFF                  C	
 00CC  2800                  C	
 00CE  2B00                  C	
			     C	
 00D0  03                    C	    MODE_TABLE	 < 3, 1,, 16,  -1,  -1, 80, 43> ; mode	3  ³ BWxx.	       ;AN000;
 00D1  01                    C	
 00D2  00                    C	
 00D3  1000                  C	
 00D5  FFFF                  C	
 00D7  FFFF                  C	
 00D9  5000                  C	
 00DB  2B00                  C	
			     C	
 00DD  02                    C	    MODE_TABLE	 < 2, 1,, 16,  -1,  -1, 80, 43> ; mode	2 ÄÙ	(see text)     ;AN000;
 00DE  01                    C	
 00DF  00                    C	
 00E0  1000                  C	
 00E2  FFFF                  C	
 00E4  FFFF                  C	
 00E6  5000                  C	
 00E8  2B00                  C	
			     C	
 00EA  0D                    C	    MODE_TABLE	 <13, 2,, 16, 320, 200, 40, 25> ; mode 13		       ;AN000;
 00EB  02                    C	
 00EC  00                    C	
 00ED  1000                  C	
 00EF  4001                  C	
 00F1  C800                  C	
 00F3  2800                  C	
 00F5  1900                  C	
			     C	
 00F7  0E                    C	    MODE_TABLE	 <14, 2,, 16, 640, 200, 80, 25> ; mode 14		       ;AN000;
 00F8  02                    C	
 00F9  00                    C	
 00FA  1000                  C	
 00FC  8002                  C	
 00FE  C800                  C	
 0100  5000                  C	
 0102  1900                  C	
			     C	
 0104  10                    C	    MODE_TABLE	 <16, 2,, 16, 640, 350, 80, 25> ; mode 16		       ;AN000;
 0105  02                    C	
 0106  00                    C	
 0107  1000                  C	
 0109  8002                  C	
 010B  5E01                  C	
 010D  5000                  C	
 010F  1900                  C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-12


			     C	
 = 0007                      C	EGA_5154_NUM	 EQU  ($ - EGA_5154_TABLE)/(TYPE MODE_TABLE)		       ;AN000;
			     C	
 0111                        C	EGA_5153_TABLE	   LABEL BYTE						       ;AN000;
 0111  0D                    C	    MODE_TABLE	 <13, 2,, 16, 320, 200, 40, 25> ; mode 13		       ;AN000;
 0112  02                    C	
 0113  00                    C	
 0114  1000                  C	
 0116  4001                  C	
 0118  C800                  C	
 011A  2800                  C	
 011C  1900                  C	
			     C	
 011E  0E                    C	    MODE_TABLE	 <14, 2,, 16, 640, 200, 80, 25> ; mode 14		       ;AN000;
 011F  02                    C	
 0120  00                    C	
 0121  1000                  C	
 0123  8002                  C	
 0125  C800                  C	
 0127  5000                  C	
 0129  1900                  C	
			     C	
 = 0002                      C	EGA_5153_NUM	 EQU  ($ - EGA_5153_TABLE)/(TYPE MODE_TABLE)		       ;AN000;
			     C	
 012B                        C	EGA_5151_TABLE	   LABEL BYTE						       ;AN000;
 012B  07                    C	    MODE_TABLE	 < 7, 1,,  0,  -1,  -1, 80, 43> ; mode	7		       ;AN000;
 012C  01                    C	
 012D  00                    C	
 012E  0000                  C	
 0130  FFFF                  C	
 0132  FFFF                  C	
 0134  5000                  C	
 0136  2B00                  C	
			     C	
 0138  0F                    C	    MODE_TABLE	 <15, 2,,  0, 640, 350, 80, 25> ; mode 15		       ;AN000;
 0139  02                    C	
 013A  00                    C	
 013B  0000                  C	
 013D  8002                  C	
 013F  5E01                  C	
 0141  5000                  C	
 0143  1900                  C	
			     C	
 = 0002                      C	EGA_5151_NUM	 EQU  ($ - EGA_5151_TABLE)/(TYPE MODE_TABLE)		       ;AN000;
			     C	
 0145                        C	MONO_TABLE	   LABEL BYTE						       ;AN000;
 0145  07                    C	    MODE_TABLE	 < 7, 1,,  0,  -1,  -1, 80, 25> ; mode	7		       ;AN000;
 0146  01                    C	
 0147  00                    C	
 0148  0000                  C	
 014A  FFFF                  C	
 014C  FFFF                  C	
 014E  5000                  C	
 0150  1900                  C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-13


			     C	
 = 0001                      C	MONO_NUM	 EQU  ($ - MONO_TABLE)/(TYPE MODE_TABLE)		       ;AN000;
			     C	
 0152                        C	COLOR_TABLE	   LABEL BYTE						       ;AN000;
 0152  01                    C	    MODE_TABLE	 < 1, 1,, 16,  -1,  -1, 40, 25> ; mode	1 Ä¿ To give preference;AN000;
 0153  01                    C	
 0154  00                    C	
 0155  1000                  C	
 0157  FFFF                  C	
 0159  FFFF                  C	
 015B  2800                  C	
 015D  1900                  C	
			     C	
 015F  00                    C	    MODE_TABLE	 < 0, 1,, 16,  -1,  -1, 40, 25> ; mode	0  ³ of COxx over      ;AN000;
 0160  01                    C	
 0161  00                    C	
 0162  1000                  C	
 0164  FFFF                  C	
 0166  FFFF                  C	
 0168  2800                  C	
 016A  1900                  C	
			     C	
 016C  03                    C	    MODE_TABLE	 < 3, 1,, 16,  -1,  -1, 80, 25> ; mode	3  ³ BWxx.	       ;AN000;
 016D  01                    C	
 016E  00                    C	
 016F  1000                  C	
 0171  FFFF                  C	
 0173  FFFF                  C	
 0175  5000                  C	
 0177  1900                  C	
			     C	
 0179  02                    C	    MODE_TABLE	 < 2, 1,, 16,  -1,  -1, 80, 25> ; mode	2 ÄÙ	(see text)     ;AN000;
 017A  01                    C	
 017B  00                    C	
 017C  1000                  C	
 017E  FFFF                  C	
 0180  FFFF                  C	
 0182  5000                  C	
 0184  1900                  C	
			     C	
 0186  04                    C	    MODE_TABLE	 < 4, 2,,  4, 320, 200, 40, 25> ; mode	4		       ;AN000;
 0187  02                    C	
 0188  00                    C	
 0189  0400                  C	
 018B  4001                  C	
 018D  C800                  C	
 018F  2800                  C	
 0191  1900                  C	
			     C	
 0193  05                    C	    MODE_TABLE	 < 5, 2,,  2, 320, 200, 40, 25> ; mode	5		       ;AN000;
 0194  02                    C	
 0195  00                    C	
 0196  0200                  C	
 0198  4001                  C	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-14


 019A  C800                  C	
 019C  2800                  C	
 019E  1900                  C	
			     C	
 01A0  06                    C	    MODE_TABLE	 < 6, 2,,  2, 640, 200, 80, 25> ; mode	6		       ;AN000;
 01A1  02                    C	
 01A2  00                    C	
 01A3  0200                  C	
 01A5  8002                  C	
 01A7  C800                  C	
 01A9  5000                  C	
 01AB  1900                  C	
			     C	
 = 0007                      C	COLOR_NUM	 EQU  ($ - COLOR_TABLE)/(TYPE MODE_TABLE)		       ;AN000;
			     C	
				
 01AD				CON$INIT:
 01AD  2E: C5 1E 0000 E			LDS	BX,CS:[PTRSAV]	       ; WGR establish addressability to request header  ;AC000;
 01B2  C5 77 12				LDS	SI,[BX].ARG_PTR        ; WGR DS:SI now points to rest of DEVICE=statement;AN000;
 01B5  E8 0000 E			CALL	PARSE_PARM	       ; WGR parse DEVICE= command line 		 ;AN000;
 01B8  73 1F				JNC	CONT_INIT	       ; WGR no error in parse...continue install	 ;AN000;
 01BA  2E: C5 1E 0000 E			LDS	BX,CS:[PTRSAV]	       ; WGR prepare to abort install			 ;AC000;
 01BF  33 C0				XOR	AX,AX		       ; WGR						 ;AC000;
 01C1  88 47 0D				MOV	[BX].NUM_UNITS,AL      ; WGR set number of units to zero		 ;AC000;
 01C4  89 47 0E				MOV	[BX].END_ADDRESS_O,AX  ; WGR set ending address offset to 0		 ;AC000;
 01C7  8C 4F 10				MOV	[BX].END_ADDRESS_S,CS  ; WGR set ending address segment to CS		 ;AC000;
 01CA  C7 47 17 FFFF			mov	word ptr [bx].CONFIG_ERRMSG, -1 ;AN004; Let IBMBIO display "Error in CONFIG.SYS..".
 01CF  B8 8103				MOV	AX,UNKNOWN_CMD	       ; WGR set error in status			 ;AC000;
 01D2  89 87 0000 E			MOV	WORD PTR [BX].STATUS,AX ; WGR set error status				 ;AC000;
 01D6  E9 0000 E			JMP	ERR2		       ; WGR prepare to exit				 ;AN000;
				
 01D9				CONT_INIT:			       ; WGR						 ;AN000;
 01D9  0E				PUSH	CS		       ; WGR						 ;AN000;
 01DA  1F				POP	DS		       ; WGR restore DS to ANSI segment 		 ;AN000;
 01DB  B8 0040				MOV	AX,ROM_BIOS	       ; WGR						 ;AN000;
 01DE  8E C0				MOV	ES,AX		       ; WGR DS now points to BIOS data area		 ;AN000;
 01E0  26: 8A 26 0096			MOV	AH,ES:[KBD_FLAG_3]     ; WGR load AH with KBD_FLAG_3			 ;AN000;
					.IF  <BIT AH AND EXT16_FLAG> AND   ; WGR see if extended INT16 is loaded	       ;AN00
				0;
 01E5  F6 C4 10              3						test AH,EXT16_FLAG 
 01E8  74 0C                 6						jz $l1 
					.IF  <Switch_K EQ OFF>	       ;The user does not want to disable the extended INT 16h ;AN00
				3;
 01EA  80 3E 0000 E 00       3						cmp Switch_K,OFF 
 01EF  75 05                 6						jne $l1 
 01F1  C6 06 0000 E 01			  MOV	  EXT_16,ON	       ; WGR extended INT16 available, set flag 	 ;AN000;
					.ENDIF			       ; WGR						 ;AN000;
 01F6                        2	$l1: 
 01F6  E8 0252 R			CALL	DET_HDWR	       ; WGR procedure to determine video hardware status;AN000;
					.IF <HDWR_FLAG GE MCGA_ACTIVE> ; WGR if we have EGA or better then..		 ;AN000;
 01F9  83 3E 0000 E 08       3						cmp HDWR_FLAG,MCGA_ACTIVE 
 01FE  7C 06                 5						jnGE $l4 
 0200  B4 12				  MOV	  AH,ALT_SELECT        ; WGR issue select alternate print..		 ;AN000;
 0202  B3 20				  MOV	  BL,ALT_PRT_SC        ; WGR screen routine call..			 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-15


 0204  CD 10				  INT	  10H		       ; WGR						 ;AN000;
					.ENDIF
 0206                        2	$l4: 
 0206  E8 03D6 R			CALL	LOAD_INT10	       ; WGR load interrupt 10h handler 		 ;AN000;
 0209  E8 040E R			CALL	LOAD_INT2F	       ; WGR load interrupt 2Fh handler 		 ;AN000;
 020C  CD 11				int	11h
 020E  24 30				and	al,00110000b
 0210  3C 30				cmp	al,00110000b
 0212  75 06				jnz	iscolor
 0214  C7 06 0000 E B000		mov	[base],0b000h		;look for bw card
 021A				iscolor:
 021A  3C 10				cmp	al,00010000b		;look for 40 col mode
 021C  77 0A				ja	setbrk
 021E  C6 06 0000 E 00			mov	[mode],0
 0223  C6 06 0000 E 27			mov	[maxcol],39
				
 0228				setbrk:
 0228  33 DB				XOR	BX,BX
 022A  8E DB				MOV	DS,BX
 022C  BB 0000 E			MOV	BX,BRKADR
 022F  C7 07 0000 E			MOV	WORD PTR [BX],OFFSET BRKKY
 0233  8C 4F 02				MOV	WORD PTR [BX+2],CS
				
 0236  BB 00A4				MOV	BX,29H*4
 0239  C7 07 0000 E			MOV	WORD PTR [BX],OFFSET COUT
 023D  8C 4F 02				MOV	WORD PTR [BX+2],CS
				
 0240  2E: C5 1E 0000 E			LDS	BX,CS:[PTRSAV]
 0245  C7 87 0000 E 01AD R		MOV	WORD PTR [BX].TRANS,OFFSET CON$INIT	;SET BREAK ADDRESS
 024B  8C 8F 0002 E			MOV	[BX].TRANS+2,CS
 024F  E9 0000 E			JMP	EXIT
				
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				;  PROCEDURE_NAME: DET_HDWR
				;
				;  FUNCTION:
				;  THIS CODE DETERMINES WHAT VIDEO HARDWARE IS AVAILABLE.  THIS INFORMATION
				;  IS USED TO LOAD APPROPRIATE VIDEO TABLES INTO MEMORY FOR USE IN THE
				;  GENERIC IOCTL.
				;
				;  AT ENTRY:
				;
				;  AT EXIT:
				;     NORMAL: FLAG WORD WILL CONTAIN BITS SET FOR THE APPROPRIATE
				;	      TABLES. IN ADDITION, FOR VGA SUPPORT, A FLAG BYTE
				;	      WILL CONTAIN THE AVAILABLE SCAN LINE SETTINGS FOR THE
				;	      INSTALLED ADAPTER.
				;	      VIDEO TABLES WILL BE LOADED INTO MEMORY REFLECTING
				;	      APPLICABLE MODE SETTINGS AND SCREEN LINE LENGTHS.
				;
				;     ERROR:  N/A
				;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-16


				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 0252				DET_HDWR  PROC	  NEAR									 ;AN000;
 0252  B4 C0				  MOV	 AH,GET_SYS_ID		     ; see if this is a Convertible		 ;AN000;
 0254  CD 15				  INT	 15H			     ;						 ;AN000;
					  .IF <ES:[BX].MODEL_BYTE EQ LCD_MODEL> AND ; yes...check for LCD attached?	 ;AN000;
 0256  26: 80 7F 02 F9       3						cmp ES:[BX].MODEL_BYTE,LCD_MODEL 
 025B  75 23                 6						jne $l8 
 025D  B4 43				  MOV	 AH,GET_STATUS		     ; system status will tell us		 ;AN000;
 025F  CD 15				  INT	 15H			     ;						 ;AN000;
					  .IF <BIT AL NAND ON>		     ; if bit 0 = 0 then LCD..			 ;AN000;
 0261  A8 01                 3						test AL,ON 
 0263  75 1B                 6						jnz $l8 
 0265  83 0E 0000 E 01			     OR     HDWR_FLAG,LCD_ACTIVE     ; so ...set hdwr flag and...		 ;AN000;
 026A  8D 36 0152 R			     LEA    SI,COLOR_TABLE	     ;						 ;AN000;
 026E  B9 0007				     MOV    CX,COLOR_NUM	     ; load color table (for LCD)		 ;AN000;
 0271  E8 03A3 R			     CALL   LOAD_TABLE		     ;						 ;AN000;
 0274  8D 36 0145 R			     LEA    SI,MONO_TABLE	     ; and mono table				 ;AN000;
 0278  B9 0001				     MOV    CX,MONO_NUM 	     ;						 ;AN000;
 027B  E8 03A3 R			     CALL   LOAD_TABLE		     ;						 ;AN000;
					  .ELSE 			     ; not LCD...check for CGA and mono 	 ;AN000;
 027E  EB 32                 3						jmp short $l7 
 0280                        2	$l8: 
 0280  B8 B000				    MOV   AX,MONO_ADDRESS	     ; write to mono buffer to see if present	 ;AN000;
 0283  E8 038B R			    CALL  CHECK_BUF		     ;						 ;AN000;
					    .IF <AH EQ AL>		     ; if present then...			 ;AN000;
 0286  3A E0                 3						cmp AH,AL 
 0288  75 0F                 6						jne $l11 
 028A  83 0E 0000 E 02			      OR     HDWR_FLAG,MONO_ACTIVE   ; set hdwr flag and..			 ;AN000;
 028F  8D 36 0145 R			      LEA    SI,MONO_TABLE	     ;						 ;AN000;
 0293  B9 0001				      MOV    CX,MONO_NUM	     ; load mono table				 ;AN000;
 0296  E8 03A3 R			      CALL   LOAD_TABLE 	     ;						 ;AN000;
					    .ENDIF			     ;						 ;AN000;
 0299                        2	$l11: 
 0299  B8 B800				    MOV   AX,COLOR_ADDRESS	     ; write to CGA buffer to see if present	 ;AN000;
 029C  E8 038B R			    CALL  CHECK_BUF		     ;						 ;AN000;
					    .IF <AH EQ AL>		     ; if present then..			 ;AN000;
 029F  3A E0                 3						cmp AH,AL 
 02A1  75 0F                 6						jne $l7 
 02A3  83 0E 0000 E 04			      OR     HDWR_FLAG,CGA_ACTIVE    ; set hdwr flag and...			 ;AN000;
 02A8  8D 36 0152 R			      LEA    SI,COLOR_TABLE	     ;						 ;AN000;
 02AC  B9 0007				      MOV    CX,COLOR_NUM	     ; load color table 			 ;AN000;
 02AF  E8 03A3 R			      CALL   LOAD_TABLE 	     ;						 ;AN000;
					    .ENDIF			     ;						 ;AN000;
					  .ENDIF			     ;						 ;AN000;
 02B2                        2	$l7: 
 02B2  0E				  PUSH	  CS			     ; setup addressiblity for			 ;AN000;
 02B3  07				  POP	  ES			     ;	functionality call			 ;AN000;
 02B4  33 C0				  XOR	  AX,AX 		     ;						 ;AN000;
 02B6  B4 1B				  MOV	  AH,FUNC_CALL		     ; functionality call			 ;AN000;
 02B8  33 DB				  XOR	  BX,BX 		     ; implementation type 0			 ;AN000;
 02BA  8D 3E 0000 E			  LEA	  DI,FUNC_INFO		     ; block to hold data			 ;AN000;
 02BE  CD 10				  INT	  10H			     ;						 ;AN000;
					  .IF <AL EQ FUNC_CALL> 	     ; if call supported then.. 		 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-17


 02C0  3C 1B                 3						cmp AL,FUNC_CALL 
 02C2  75 64                 6						jne $l18 
					    .IF <BIT [DI].MISC_INFO AND ON>  ; test bit to see if VGA			 ;AN000;
 02C4  F6 45 2D 01           3						test [DI].MISC_INFO,ON 
 02C8  74 1C                 6						jz $l21 
 02CA  81 0E 0000 E 0080		      OR     HDWR_FLAG,VGA_ACTIVE    ; yes ....so				 ;AN000;
 02D0  8D 36 0152 R			      LEA    SI,COLOR_TABLE	     ; set hdwr flag and...			 ;AN000;
 02D4  B9 0007				      MOV    CX,COLOR_NUM	     ; load color table +..			 ;AN000;
 02D7  E8 03A3 R			      CALL   LOAD_TABLE 	     ;						 ;AN000;
 02DA  8D 36 0000 R			      LEA    SI,VGA_TABLE	     ; load VGA table				 ;AN000;
 02DE  B9 000C				      MOV    CX,VGA_NUM 	     ;						 ;AN000;
 02E1  E8 03A3 R			      CALL   LOAD_TABLE 	     ;						 ;AN000;
					    .ELSE			     ; not VGA...then must be MCGA		 ;AN000;
 02E4  EB 31                 3						jmp short $l20 
 02E6                        2	$l21: 
					      .IF <[DI].ACTIVE_DISPLAY EQ MOD30_MONO> OR				 ;AN000;
 02E6  80 7D 25 0B           3						cmp [DI].ACTIVE_DISPLAY,MOD30_MONO 
 02EA  74 12                 6						je $l26 
					      .IF <[DI].ACTIVE_DISPLAY EQ MOD30_COLOR> OR				 ;AN000;
 02EC  80 7D 25 0C           3						cmp [DI].ACTIVE_DISPLAY,MOD30_COLOR 
 02F0  74 0C                 6						je $l26 
					      .IF <[DI].ALT_DISPLAY EQ MOD30_MONO> OR					 ;AN000;
 02F2  80 7D 26 0B           3						cmp [DI].ALT_DISPLAY,MOD30_MONO 
 02F6  74 06                 6						je $l26 
					      .IF <[DI].ALT_DISPLAY EQ MOD30_COLOR>					 ;AN000;
 02F8  80 7D 26 0C           3						cmp [DI].ALT_DISPLAY,MOD30_COLOR 
 02FC  75 19                 6						jne $l20 
 02FE                        3	$l26: 
 02FE  83 0E 0000 E 08				OR     HDWR_FLAG,MCGA_ACTIVE ; so...set hdwr flag and...		 ;AN000;
 0303  8D 36 0152 R				LEA    SI,COLOR_TABLE	     ;						 ;AN000;
 0307  B9 0007					MOV    CX,COLOR_NUM	     ; load color table +..			 ;AN000;
 030A  E8 03A3 R				CALL   LOAD_TABLE	     ;						 ;AN000;
 030D  8D 36 009C R				LEA    SI,MCGA_TABLE	     ; load MCGA table				 ;AN000;
 0311  B9 0002					MOV    CX,MCGA_NUM	     ;						 ;AN000;
 0314  E8 03A3 R				CALL   LOAD_TABLE	     ;						 ;AN000;
					      .ENDIF			     ;						 ;AN000;
					    .ENDIF			     ;						 ;AN000;
 0317                        2	$l20: 
 0317  8A 45 2A				    MOV    AL,[DI].CURRENT_SCANS     ; copy current scan line setting.. 	 ;AN000;
 031A  A2 0000 E			    MOV    MAX_SCANS,AL 	     ; as maximum text mode scan setting.	 ;AN000;
 031D  C4 3D				    LES    DI,[DI].STATIC_ADDRESS    ; point to static functionality table	 ;AN000;
 031F  26: 8A 45 07			    MOV    AL,ES:[DI].SCAN_TEXT      ; load available scan line flag byte..	 ;AN000;
 0323  A2 0000 E			    MOV    SCAN_LINES,AL	     ; and store it in resident data.		 ;AN000;
					  .ELSE 			     ; call not supported..try EGA		 ;AN000;
 0326  EB 62                 3						jmp short $l17 
 0328                        2	$l18: 
 0328  B4 12				    MOV    AH,ALT_SELECT	     ; alternate select call			 ;AN000;
 032A  B3 10				    MOV    BL,EGA_INFO		     ; get EGA information subcall		 ;AN000;
 032C  CD 10				    INT    10H			     ;						 ;AN000;
					    .IF <BL NE EGA_INFO>	     ; check if call was valid			 ;AN000;
 032E  80 FB 10              3						cmp BL,EGA_INFO 
 0331  74 57                 6						je $l17 
					      .IF <BH EQ MONOCHROME>	     ; yes...check for monochrome		 ;AN000;
 0333  80 FF 01              3						cmp BH,MONOCHROME 
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-18


 0336  75 11                 6						jne $l32 
 0338  83 0E 0000 E 10				OR    HDWR_FLAG,E5151_ACTIVE ; ..5151 found so set hdwr flag and..	 ;AN000;
 033D  8D 36 012B R				LEA   SI,EGA_5151_TABLE      ;						 ;AN000;
 0341  B9 0002					MOV   CX,EGA_5151_NUM	     ; load 5151 table. 			 ;AN000;
 0344  E8 03A3 R				CALL  LOAD_TABLE	     ;						 ;AN000;
					      .ELSE			     ;						 ;AN000;
 0347  EB 41                 3						jmp short $l17 
 0349                        2	$l32: 
 0349  80 E1 0F					AND   CL,0FH		     ; clear upper nibble of switch setting byte ;AN000;
						.IF <CL EQ NINE> OR	     ; test for switch settings of 5154 	 ;AN000;
 034C  80 F9 09              3						cmp CL,NINE 
 034F  74 05                 6						je $l37 
						.IF <CL EQ THREE>	     ; ..5154 found..				 ;AN000;
 0351  80 F9 03              3						cmp CL,THREE 
 0354  75 1B                 6						jne $l36 
 0356                        3	$l37: 
 0356  83 0E 0000 E 40				  OR	 HDWR_FLAG,E5154_ACTIVE ; so..set hdwr flag and...		 ;AN000;
 035B  8D 36 0152 R				  LEA	 SI,COLOR_TABLE      ;						 ;AN000;
 035F  B9 0007					  MOV	 CX,COLOR_NUM	     ; load color table +..			 ;AN000;
 0362  E8 03A3 R				  CALL	 LOAD_TABLE	     ;						 ;AN000;
 0365  8D 36 00B6 R				  LEA	 SI,EGA_5154_TABLE   ; load 5154 table				 ;AN000;
 0369  B9 0007					  MOV	 CX,EGA_5154_NUM     ;						 ;AN000;
 036C  E8 03A3 R				  CALL	 LOAD_TABLE	     ;						 ;AN000;
						.ELSE			     ; 5154 not found...must be 5153... 	 ;AN000;
 036F  EB 19                 3						jmp short $l17 
 0371                        2	$l36: 
 0371  83 0E 0000 E 20				  OR	 HDWR_FLAG,E5153_ACTIVE ; so..set hdwr flag and...		 ;AN000;
 0376  8D 36 0152 R				  LEA	 SI,COLOR_TABLE      ;						 ;AN000;
 037A  B9 0007					  MOV	 CX,COLOR_NUM	     ; load color table +..			 ;AN000;
 037D  E8 03A3 R				  CALL	 LOAD_TABLE	     ;						 ;AN000;
 0380  8D 36 0111 R				  LEA	 SI,EGA_5153_TABLE   ; load 5153 table				 ;AN000;
 0384  B9 0002					  MOV	 CX,EGA_5153_NUM     ;						 ;AN000;
 0387  E8 03A3 R				  CALL	 LOAD_TABLE	     ;						 ;AN000;
						.ENDIF			     ;						 ;AN000;
					      .ENDIF			     ;						 ;AN000;
					    .ENDIF			     ;						 ;AN000;
					  .ENDIF			     ;						 ;AN000;
 038A                        2	$l17: 
 038A  C3				  RET
 038B				DET_HDWR  ENDP
				
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; PROCEDURE_NAME: CHECK_BUF
				;
				; FUNCTION:
				; THIS PROCEDURE WRITES TO THE VIDEO BUFFER AND READS THE DATA BACK
				; AGAIN TO DETERMINE THE EXISTANCE OF THE VIDEO CARD.
				;
				; AT ENTRY:
				;
				; AT EXIT:
				;    NORMAL: AH EQ AL IF BUFFER PRESENT
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-19


				;	     AH NE AL IF NO BUFFER
				;
				;    ERROR: N/A
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 038B				CHECK_BUF PROC	 NEAR		    ; write to video buffer to see if it is present	 ;AN000;
 038B  1E				  PUSH	 DS		    ;							 ;AN000;
 038C  8E D8				  MOV	 DS,AX		    ; load DS with address of buffer			 ;AN000;
 038E  8A 2E 0000			  MOV	 CH,DS:0	    ; save buffer information (if present)		 ;AN000;
 0392  B0 55				  MOV	 AL,55H 	    ; prepare to write sample data			 ;AN000;
 0394  A2 0000				  MOV	 DS:0,AL	    ; write to buffer					 ;AN000;
 0397  53				  PUSH	 BX		    ; terminate the bus so that lines.. 		 ;AN000;
 0398  5B				  POP	 BX		    ; are reset 					 ;AN000;
 0399  8A 26 0000			  MOV	 AH,DS:0	    ; bring sample data back... 			 ;AN000;
 039D  88 2E 0000			  MOV	 DS:0,CH	    ; repair damage to buffer				 ;AN000;
 03A1  1F				  POP	 DS		    ;							 ;AN000;
 03A2  C3				  RET										 ;AN000;
 03A3				CHECK_BUF ENDP
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; PROCEDURE_NAME: LOAD_TABLE
				;
				; FUNCTION:
				; THIS PROCEDURE COPIES ONE OF THE VIDEO TABLES INTO RESIDENT DATA.
				; IT MAY BE REPEATED TO LOAD SEVERAL TABLES INTO THE SAME DATA SPACE.
				; MATCHING MODES WILL BE OVERWRITTEN...THEREFORE..CARE MUST BE TAKEN
				; IN LOAD ORDERING.
				;
				; AT ENTRY:
				;   SI: POINTS TO TOP OF TABLE TO COPY
				;   CX: NUMBER OF RECORDS TO COPY
				;
				; AT EXIT:
				;    NORMAL: TABLE POINTED TO BY SI IS COPIED INTO RESIDENT DATA AREA
				;
				;    ERROR: N/A
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 03A3				LOAD_TABLE PROC   NEAR									 ;AN000;
 03A3  57				   PUSH   DI			  ; save DI					 ;AN000;
 03A4  06				   PUSH   ES			  ; and ES					 ;AN000;
 03A5  0E				   PUSH   CS			  ; setup ES to code segment			 ;AN000;
 03A6  07				   POP	  ES			  ;						 ;AN000;
 03A7  8D 3E 0000 E			   LEA	  DI,VIDEO_MODE_TABLE	  ; point DI to resident video table		 ;AN000;
					   .WHILE <CX NE 0> AND 	  ; do for as many records as there are 	 ;AN000;
 03AB                        2	$l39: 
 03AB  83 F9 00              3						cmp CX,0 
 03AE  74 23                 6						je $l40 
					   .WHILE <DI LT VIDEO_TABLE_MAX> ; check to ensure other data not overwritten	 ;AN000;
 03B0  81 FF 0000 E          3						cmp DI,VIDEO_TABLE_MAX 
 03B4  7D 1D                 6						jnl $l40 
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-20


 03B6  8A 05				     MOV    AL,[DI].V_MODE	  ; prepare to check resident table		 ;AN000;
					     .IF <AL NE UNOCCUPIED> AND   ; if this spot is occupied...and		 ;AN000;
 03B8  3C FF                 3						cmp AL,UNOCCUPIED 
 03BA  74 09                 6						je $l43 
					     .IF <AL NE [SI].V_MODE>	  ; ...is not the same mode then...		 ;AN000;
 03BC  3A 04                 3						cmp AL,[SI].V_MODE 
 03BE  74 05                 6						je $l43 
 03C0  83 C7 0D				       ADD    DI,TYPE MODE_TABLE  ; do not touch...go to next mode		 ;AN000;
					     .ELSE			  ; can write at this location			 ;AN000;
 03C3  EB E6                 3						jmp short $l39 
 03C5                        2	$l43: 
 03C5  51				       PUSH   CX		  ; save record count				 ;AN000;
 03C6  B9 000D				       MOV    CX,TYPE MODE_TABLE  ; load record length				 ;AN000;
 03C9  F3/ A4				       REP    MOVSB		  ; copy record to resident data		 ;AN000;
 03CB  8D 3E 0000 E			       lea    DI,VIDEO_MODE_TABLE ;AN001; Set DI to the top of the target again.
 03CF  59				       POP    CX		  ; restore record count and..			 ;AN000;
 03D0  49				       DEC    CX		  ; decrement					 ;AN000;
					     .ENDIF			  ;						 ;AN000;
					   .ENDWHILE			  ;						 ;AN000;
 03D1  EB D8                 3						jmp $l39 
 03D3                        2	$l40: 
 03D3  07				   POP	  ES			  ; restore..					 ;AN000;
 03D4  5F				   POP	  DI			  ; registers					 ;AN000;
 03D5  C3				   RET				  ;						 ;AN000;
 03D6				LOAD_TABLE ENDP
				
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; PROCEDURE_NAME: LOAD_INT10
				;
				; FUNCTION:
				; THIS PROCEDURE LOADS THE INTERRUPT HANDLER FOR INT10H
				;
				; AT ENTRY:
				;
				; AT EXIT:
				;    NORMAL: INTERRUPT 10H VECTOR POINTS TO INT10_COM. OLD INT 10H
				;	     VECTOR STORED.
				;
				;    ERROR:  N/A
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 03D6				LOAD_INT10 PROC   NEAR									 ;AN000;
 03D6  06				   PUSH   ES									 ;AN000;
 03D7  33 C0				   XOR	  AX,AX 			   ; point ES to low..			 ;AN000;
 03D9  8E C0				   MOV	  ES,AX 			   ; memory.				 ;AN000;
 03DB  26: 8B 0E 0040			   MOV	  CX,ES:WORD PTR INT10_LOW	   ; store original..			 ;AN000;
 03E0  2E: 89 0E 0000 E			   MOV	  CS:ROM_INT10,CX		   ; interrupt 10h..			 ;AN000;
 03E5  26: 8B 0E 0042			   MOV	  CX,ES:WORD PTR INT10_HI	   ; location.. 			 ;AN000;
 03EA  2E: 89 0E 0002 E			   MOV	  CS:ROM_INT10+2,CX		   ;					 ;AN000;
 03EF  FA				   CLI					   ;					 ;AN000;
 03F0  26: C7 06 0040 0000 E		   MOV	  ES:WORD PTR INT10_LOW,OFFSET INT10_COM ; replace vector..		 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-21


 03F7  26: 8C 0E 0042			   MOV	  ES:WORD PTR INT10_HI,CS	   ; with our own..			 ;AN000;
 03FC  FB				   STI					   ;					 ;AN000;
 03FD  B8 AD00				   mov	  ax, DISPLAY_CHECK		   ;AN002;DISPLAY.SYS already loaded?
 0400  CD 2F				   int	  2fh				   ;AN002;
 0402  3C FF				   cmp	  al, INSTALLED 		   ;AN002;
 0404  75 06				   jne	  L_INT10_Ret			   ;AN002;
 0406  2E: C6 06 0000 E 01		   mov	  cs:Display_Loaded_Before_Me,1    ;AN002;
 040C				L_INT10_Ret:					   ;AN002;
 040C  07				   POP	  ES				   ;					 ;AN000;
 040D  C3				   RET					   ;					 ;AN000;
 040E				LOAD_INT10 ENDP
				
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; PROCEDURE_NAME: LOAD_INT2F
				;
				; FUNCTION:
				; THIS PROCEDURE LOADS THE INTERRUPT HANDLER FOR INT2FH
				;
				; AT ENTRY:
				;
				; AT EXIT:
				;    NORMAL: INTERRUPT 2FH VECTOR POINTS TO INT2F_COM. OLD INT 2FH
				;	     VECTOR STORED.
				;
				;    ERROR:  N/A
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 040E				LOAD_INT2F PROC   NEAR									 ;AN000;
 040E  06				   PUSH   ES									 ;AN000;
 040F  33 C0				   XOR	  AX,AX 			   ; point ES to low..			 ;AN000;
 0411  8E C0				   MOV	  ES,AX 			   ; memory.				 ;AN000;
 0413  26: A1 00BC			   MOV	  AX,ES:WORD PTR INT2F_LOW	   ; store original..			 ;AN000;
 0417  2E: A3 0000 E			   MOV	  CS:ROM_INT2F,AX		   ; interrupt 2Fh..			 ;AN000;
 041B  26: 8B 0E 00BE			   MOV	  CX,ES:WORD PTR INT2F_HI	   ; location.. 			 ;AN000;
 0420  2E: 89 0E 0002 E			   MOV	  CS:ROM_INT2F+2,CX		   ;					 ;AN000;
 0425  0B C1				   OR	  AX,CX 			   ; check if old int2F..		 ;AN000;
					   .IF Z				   ; is 0.				 ;AN000;
 0427  75 0D                 5						jnZ $l46 
 0429  B8 0000 E			     MOV    AX,OFFSET ABORT		   ; yes....point to..			 ;AN000;
 042C  2E: A3 0000 E			     MOV    CS:ROM_INT2F,AX		   ; IRET.				 ;AN000;
 0430  8C C8				     MOV    AX,CS			   ;					 ;AN000;
 0432  2E: A3 0002 E			     MOV    CS:ROM_INT2F+2,AX		   ;					 ;AN000;
					   .ENDIF				   ;					 ;AN000;
 0436                        2	$l46: 
 0436  FA				   CLI					   ;					 ;AN000;
 0437  26: C7 06 00BC 0000 E		   MOV	  ES:WORD PTR INT2F_LOW,OFFSET INT2F_COM ; replace vector..		 ;AN000;
 043E  26: 8C 0E 00BE			   MOV	  ES:WORD PTR INT2F_HI,CS	   ; with our own..			 ;AN000;
 0443  FB				   STI					   ;					 ;AN000;
 0444  07				   POP	  ES				   ;					 ;AN000;
 0445  C3				   RET					   ;					 ;AN000;
 0446				LOAD_INT2F ENDP 									 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Page     1-22


				
				
 0446				CODE	ENDS
					END

Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Symbols-1


Macros:

		N a m e			Lines

.ELSE  . . . . . . . . . . . . .  	  21
.ELSEIF  . . . . . . . . . . . .  	  16
.ENDIF . . . . . . . . . . . . .  	  11
.ENDSELECT . . . . . . . . . . .  	  15
.ENDWHILE  . . . . . . . . . . .  	  10
.FOR . . . . . . . . . . . . . .  	  23
.IF  . . . . . . . . . . . . . .  	  13
.LEAVE . . . . . . . . . . . . .  	   1
.LOOP  . . . . . . . . . . . . .  	  12
.NEXT  . . . . . . . . . . . . .  	  20
.OTHERWISE . . . . . . . . . . .  	  21
.REPEAT  . . . . . . . . . . . .  	   9
.SELECT  . . . . . . . . . . . .  	   4
.THEN  . . . . . . . . . . . . .  	   6
.UNTIL . . . . . . . . . . . . .  	   1
.WHEN  . . . . . . . . . . . . .  	  24
.WHILE . . . . . . . . . . . . .  	  14

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

BUF_DATA . . . . . . . . . . . .  	000C	0006
  DEV_HDRO . . . . . . . . . . .  	0000
  DEV_HDRS . . . . . . . . . . .  	0002
  CON_STRAO  . . . . . . . . . .  	0004
  CON_STRAS  . . . . . . . . . .  	0006
  CON_INTRO  . . . . . . . . . .  	0008
  CON_INTRS  . . . . . . . . . .  	000A
DA_INFO_PACKET . . . . . . . . .  	0003	0003
  DA_INFO_LEVEL  . . . . . . . .  	0000
  DA_SETMODE_FLAG  . . . . . . .  	0001
  DA_OPTION_L_STATE  . . . . . .  	0002
DHS  . . . . . . . . . . . . . .  	0012	0006
  DH_NEXTO . . . . . . . . . . .  	0000
  DH_NEXTS . . . . . . . . . . .  	0002
  DH_STRAO . . . . . . . . . . .  	0006
  DH_INTRO . . . . . . . . . . .  	0008
  DH_NAME  . . . . . . . . . . .  	000A
INFO_BLOCK . . . . . . . . . . .  	0040	0009
  STATIC_ADDRESS . . . . . . . .  	0000
  ACTIVE_DISPLAY . . . . . . . .  	0025
  ALT_DISPLAY  . . . . . . . . .  	0026
  CURRENT_SCANS  . . . . . . . .  	002A
  MISC_INFO  . . . . . . . . . .  	002D
INIT_REQ_HDR . . . . . . . . . .  	0017	0006
  MAJ_FUNC . . . . . . . . . . .  	000D
  MIN_FUNC . . . . . . . . . . .  	000E
  IOCTL_SI . . . . . . . . . . .  	000F
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Symbols-2


  IOCTL_DI . . . . . . . . . . .  	0011
  REQ_PCKT_PTR . . . . . . . . .  	0013
MODE_TABLE . . . . . . . . . . .  	000D	0008
  V_MODE . . . . . . . . . . . .  	0000
  D_MODE . . . . . . . . . . . .  	0001
  RESERVED_BYTE  . . . . . . . .  	0002
  COLORS . . . . . . . . . . . .  	0003
  SCR_WIDTH  . . . . . . . . . .  	0005
  SCR_LENGTH . . . . . . . . . .  	0007
  SCR_COLS . . . . . . . . . . .  	0009
  SCR_ROWS . . . . . . . . . . .  	000B
REQ_PCKT . . . . . . . . . . . .  	0012	000B
  INFO_LEVEL . . . . . . . . . .  	0000
  DATA_LENGTH  . . . . . . . . .  	0002
  RP_FLAGS . . . . . . . . . . .  	0004
  RP_MODE  . . . . . . . . . . .  	0006
  RESERVED2  . . . . . . . . . .  	0007
  RP_COLORS  . . . . . . . . . .  	0008
  RP_WIDTH . . . . . . . . . . .  	000A
  RP_LENGTH  . . . . . . . . . .  	000C
  RP_COLS  . . . . . . . . . . .  	000E
  RP_ROWS  . . . . . . . . . . .  	0010
RESULT_STRUC . . . . . . . . . .  	0008	0004
  RESULT_TYPE  . . . . . . . . .  	0000
  RES_SYN_PTR  . . . . . . . . .  	0002
  RES_PTR  . . . . . . . . . . .  	0004
SCAN_LINE_STR  . . . . . . . . .  	0004	0003
  NUM_LINES  . . . . . . . . . .  	0000
  REP_1BH  . . . . . . . . . . .  	0002
  REP_12H  . . . . . . . . . . .  	0003
STATIC_BLOCK . . . . . . . . . .  	0008	0002
  SCAN_TEXT  . . . . . . . . . .  	0007
SUB_STRUC  . . . . . . . . . . .  	0006	0003
  SUB_PTR_O  . . . . . . . . . .  	0002
  SUB_PTR_S  . . . . . . . . . .  	0004
SYS_ID . . . . . . . . . . . . .  	0003	0002
  MODEL_BYTE . . . . . . . . . .  	0002

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

CODE . . . . . . . . . . . . . .  	0446	BYTE	PUBLIC	

Symbols:            

                N a m e         	Type	 Value	 Attr

ABORT  . . . . . . . . . . . . .  	V BYTE	0000	CODE	External
ALT_PRT_SC . . . . . . . . . . .  	NUMBER	0020	
ALT_SELECT . . . . . . . . . . .  	NUMBER	0012	
ARG_PTR  . . . . . . . . . . . .  		0012	

BASE . . . . . . . . . . . . . .  	V WORD	0000	CODE	External
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Symbols-3


BLINK_TOGGLE . . . . . . . . . .  	NUMBER	1003	
BRKADR . . . . . . . . . . . . .  	NUMBER	0000		Communal
BRKKY  . . . . . . . . . . . . .  	L NEAR	0000	CODE	External

CGA_ACTIVE . . . . . . . . . . .  	NUMBER	0004	
CHECK_ACTIVE . . . . . . . . . .  	NUMBER	AD02	
CHECK_BUF  . . . . . . . . . . .  	N PROC	038B	CODE	Length = 0018
CHECK_FOR_FONT . . . . . . . . .  	NUMBER	AD10	
CMD_ERROR  . . . . . . . . . . .  	NUMBER	8000	
COLOR  . . . . . . . . . . . . .  	NUMBER	0000	
COLOR_ADDRESS  . . . . . . . . .  	NUMBER	B800	
COLOR_NUM  . . . . . . . . . . .  	NUMBER	0007	
COLOR_TABLE  . . . . . . . . . .  	L BYTE	0152	CODE
CON$INIT . . . . . . . . . . . .  	L NEAR	01AD	CODE	Global
CONFIG_ERRMSG  . . . . . . . . .  		0017	
CONPTR . . . . . . . . . . . . .  	TEXT  CS:[BX]		
CONT_INIT  . . . . . . . . . . .  	L NEAR	01D9	CODE
COUT . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
CURSOR_FLAG  . . . . . . . . . .  	NUMBER	0087	
CY . . . . . . . . . . . . . . .  	NUMBER	0001	

DA_INFO_2F . . . . . . . . . . .  	NUMBER	0002	
DEFAULT_LENGTH . . . . . . . . .  	NUMBER	0019	
DET_HDWR . . . . . . . . . . . .  	N PROC	0252	CODE	Length = 0139
DISPLAY_CHECK  . . . . . . . . .  	NUMBER	AD00	
Display_Loaded_Before_me . . . .  	V BYTE	0000	CODE	External
DISPLAY_TYPE . . . . . . . . . .  	NUMBER	0003	
DONE . . . . . . . . . . . . . .  	NUMBER	0100	
DRIVE_NUM  . . . . . . . . . . .  		0016	

E5151_ACTIVE . . . . . . . . . .  	NUMBER	0010	
E5153_ACTIVE . . . . . . . . . .  	NUMBER	0020	
E5154_ACTIVE . . . . . . . . . .  	NUMBER	0040	
EGA_5151_NUM . . . . . . . . . .  	NUMBER	0002	
EGA_5151_TABLE . . . . . . . . .  	L BYTE	012B	CODE
EGA_5153_NUM . . . . . . . . . .  	NUMBER	0002	
EGA_5153_TABLE . . . . . . . . .  	L BYTE	0111	CODE
EGA_5154_NUM . . . . . . . . . .  	NUMBER	0007	
EGA_5154_TABLE . . . . . . . . .  	L BYTE	00B6	CODE
EGA_INFO . . . . . . . . . . . .  	NUMBER	0010	
EIGHT  . . . . . . . . . . . . .  	NUMBER	0008	
END_ADDRESS_O  . . . . . . . . .  		000E	
END_ADDRESS_S  . . . . . . . . .  		0010	
EQUIP_FLAG . . . . . . . . . . .  	NUMBER	0010	
ERR2 . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
EXIT . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
EXT16_FLAG . . . . . . . . . . .  	NUMBER	0010	
EXT_16 . . . . . . . . . . . . .  	V BYTE	0000	CODE	External

FOUND  . . . . . . . . . . . . .  	NUMBER	0001	
FOURTEEN . . . . . . . . . . . .  	NUMBER	000E	
FUNC_CALL  . . . . . . . . . . .  	NUMBER	001B	
FUNC_INFO  . . . . . . . . . . .  	V BYTE	0000	CODE	External

Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Symbols-4


GET_FUNC . . . . . . . . . . . .  	NUMBER	007F	
GET_STATUS . . . . . . . . . . .  	NUMBER	0043	
GET_SUBFUNC  . . . . . . . . . .  	NUMBER	007F	
GET_SYS_ID . . . . . . . . . . .  	NUMBER	00C0	
GRAPHICS_MODE  . . . . . . . . .  	NUMBER	0002	

HDWR_FLAG  . . . . . . . . . . .  	V WORD	0000	CODE	External
HP . . . . . . . . . . . . . . .  	TEXT  DS:[SI]		

INIT_VID_MASK  . . . . . . . . .  	NUMBER	FFCF	
INSTALLED  . . . . . . . . . . .  	NUMBER	00FF	
INSTALL_CHECK  . . . . . . . . .  	NUMBER	0000	
INT10_COM  . . . . . . . . . . .  	L NEAR	0000	CODE	External
INT10_HI . . . . . . . . . . . .  	NUMBER	0042	
INT10_LOW  . . . . . . . . . . .  	NUMBER	0040	
INT2F_COM  . . . . . . . . . . .  	L NEAR	0000	CODE	External
INT2F_HI . . . . . . . . . . . .  	NUMBER	00BE	
INT2F_LOW  . . . . . . . . . . .  	NUMBER	00BC	
INT_BIT  . . . . . . . . . . . .  	NUMBER	0020	
INVALID_FLAGS  . . . . . . . . .  	NUMBER	FFFE	
INVALID_FUNC . . . . . . . . . .  	NUMBER	0001	
INVALID_PARM . . . . . . . . . .  	NUMBER	000A	
IOCTL_2F . . . . . . . . . . . .  	NUMBER	0001	
ISCOLOR  . . . . . . . . . . . .  	L NEAR	021A	CODE

KBD_FLAG_3 . . . . . . . . . . .  	NUMBER	0096	

LCD_ACTIVE . . . . . . . . . . .  	NUMBER	0001	
LCD_COLOR_MODE . . . . . . . . .  	NUMBER	0020	
LCD_MODEL  . . . . . . . . . . .  	NUMBER	00F9	
LCD_MONO_MODE  . . . . . . . . .  	NUMBER	0030	
LEFT_ASCIIZ  . . . . . . . . . .  	NUMBER	0010	
LOAD_8X8 . . . . . . . . . . . .  	NUMBER	1112	
LOAD_INT10 . . . . . . . . . . .  	N PROC	03D6	CODE	Length = 0038
LOAD_INT2F . . . . . . . . . . .  	N PROC	040E	CODE	Length = 0038
LOAD_TABLE . . . . . . . . . . .  	N PROC	03A3	CODE	Length = 0033
L_INT10_RET  . . . . . . . . . .  	L NEAR	040C	CODE

MAXCOL . . . . . . . . . . . . .  	V BYTE	0000	CODE	External
MAX_SCANS  . . . . . . . . . . .  	V BYTE	0000	CODE	External
MCGA_ACTIVE  . . . . . . . . . .  	NUMBER	0008	
MCGA_NUM . . . . . . . . . . . .  	NUMBER	0002	
MCGA_TABLE . . . . . . . . . . .  	L BYTE	009C	CODE
MOD30_COLOR  . . . . . . . . . .  	NUMBER	000C	
MOD30_MONO . . . . . . . . . . .  	NUMBER	000B	
MODE . . . . . . . . . . . . . .  	V BYTE	0000	CODE	External
MODE13 . . . . . . . . . . . . .  	NUMBER	000D	
MODE15 . . . . . . . . . . . . .  	NUMBER	000F	
MODE19 . . . . . . . . . . . . .  	NUMBER	0013	
MODE7  . . . . . . . . . . . . .  	NUMBER	0007	
MONOCHROME . . . . . . . . . . .  	NUMBER	0001	
MONO_ACTIVE  . . . . . . . . . .  	NUMBER	0002	
MONO_ADDRESS . . . . . . . . . .  	NUMBER	B000	
MONO_NUM . . . . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Symbols-5


MONO_TABLE . . . . . . . . . . .  	L BYTE	0145	CODE
MULT_ANSI  . . . . . . . . . . .  	NUMBER	001A	

NAME_LEN . . . . . . . . . . . .  	NUMBER	0008	
NHD  . . . . . . . . . . . . . .  	TEXT  ES:[DI]		
NINE . . . . . . . . . . . . . .  	NUMBER	0009	
NOT_AVAILABLE  . . . . . . . . .  	NUMBER	000C	
NOT_CY . . . . . . . . . . . . .  	NUMBER	FFFE	
NOT_FOUND  . . . . . . . . . . .  	NUMBER	0000	
NOT_SUPPORTED  . . . . . . . . .  	NUMBER	000A	
NUM_ROWS . . . . . . . . . . . .  	NUMBER	0084	
NUM_UNITS  . . . . . . . . . . .  		000D	

OFF  . . . . . . . . . . . . . .  	NUMBER	0000	
ON . . . . . . . . . . . . . . .  	NUMBER	0001	
ONE  . . . . . . . . . . . . . .  	NUMBER	0001	

PARSE_PARM . . . . . . . . . . .  	L NEAR	0000	CODE	External
PS2_COLOR  . . . . . . . . . . .  	NUMBER	0008	
PS2_MONO . . . . . . . . . . . .  	NUMBER	0007	
PTRSAV . . . . . . . . . . . . .  	V DWORD	0000	CODE	External

RC_EOL . . . . . . . . . . . . .  	NUMBER	-0001	
RC_NO_ERROR  . . . . . . . . . .  	NUMBER	0000	
REQ_CRSR_POS . . . . . . . . . .  	NUMBER	0003	
REQ_VID_MODE . . . . . . . . . .  	NUMBER	000F	
ROM_BIOS . . . . . . . . . . . .  	NUMBER	0040	
ROM_INT10  . . . . . . . . . . .  	V WORD	0000	CODE	External
ROM_INT2F  . . . . . . . . . . .  	V WORD	0000	CODE	External

SCAN_LINES . . . . . . . . . . .  	V BYTE	0000	CODE	External
SELECT_SCAN  . . . . . . . . . .  	NUMBER	0030	
SETBRK . . . . . . . . . . . . .  	L NEAR	0228	CODE
SET_BLINK  . . . . . . . . . . .  	NUMBER	0001	
SET_BLOCK_0  . . . . . . . . . .  	NUMBER	1103	
SET_CURSOR_CALL  . . . . . . . .  	NUMBER	0001	
SET_FUNC . . . . . . . . . . . .  	NUMBER	005F	
SET_INTENSIFY  . . . . . . . . .  	NUMBER	0000	
SET_MODE . . . . . . . . . . . .  	NUMBER	0000	
SSTRING  . . . . . . . . . . . .  	NUMBER	0003	
STATUS . . . . . . . . . . . . .  	NUMBER	0000		Communal
SUB_SIZE . . . . . . . . . . . .  	NUMBER	000B	
Switch_K . . . . . . . . . . . .  	V BYTE	0000	CODE	External

TEXT_MODE  . . . . . . . . . . .  	NUMBER	0001	
THREE  . . . . . . . . . . . . .  	NUMBER	0003	
TRANS  . . . . . . . . . . . . .  	NUMBER	0000		Communal
TURN_OFF . . . . . . . . . . . .  	NUMBER	00FE	
TURN_ON  . . . . . . . . . . . .  	NUMBER	FF01	

UNKNOWN_CMD  . . . . . . . . . .  	NUMBER	8103	
UNLIMITED  . . . . . . . . . . .  	NUMBER	0000	
UNOCCUPIED . . . . . . . . . . .  	NUMBER	-0001	

Microsoft (R) Macro Assembler Version 5.10                  5/17/24 09:43:48
ANSI Console device CON$INIT routine                        Symbols-6


VGA_ACTIVE . . . . . . . . . . .  	NUMBER	0080	
VGA_NUM  . . . . . . . . . . . .  	NUMBER	000C	
VGA_TABLE  . . . . . . . . . . .  	L BYTE	0000	CODE
VIDEO_MASK . . . . . . . . . . .  	NUMBER	007F	
VIDEO_MODE_TABLE . . . . . . . .  	V BYTE	0000	CODE	External
VIDEO_TABLE_MAX  . . . . . . . .  	NUMBER	0000		Communal

$L1  . . . . . . . . . . . . . .  	L NEAR	01F6	CODE
$L11 . . . . . . . . . . . . . .  	L NEAR	0299	CODE
$L17 . . . . . . . . . . . . . .  	L NEAR	038A	CODE
$L18 . . . . . . . . . . . . . .  	L NEAR	0328	CODE
$L20 . . . . . . . . . . . . . .  	L NEAR	0317	CODE
$L21 . . . . . . . . . . . . . .  	L NEAR	02E6	CODE
$L26 . . . . . . . . . . . . . .  	L NEAR	02FE	CODE
$L32 . . . . . . . . . . . . . .  	L NEAR	0349	CODE
$L36 . . . . . . . . . . . . . .  	L NEAR	0371	CODE
$L37 . . . . . . . . . . . . . .  	L NEAR	0356	CODE
$L39 . . . . . . . . . . . . . .  	L NEAR	03AB	CODE
$L4  . . . . . . . . . . . . . .  	L NEAR	0206	CODE
$L40 . . . . . . . . . . . . . .  	L NEAR	03D3	CODE
$L43 . . . . . . . . . . . . . .  	L NEAR	03C5	CODE
$L46 . . . . . . . . . . . . . .  	L NEAR	0436	CODE
$L7  . . . . . . . . . . . . . .  	L NEAR	02B2	CODE
$L8  . . . . . . . . . . . . . .  	L NEAR	0280	CODE
$LL1 . . . . . . . . . . . . . .  	NUMBER	0001	
$LL11  . . . . . . . . . . . . .  	NUMBER	000B	
$LL17  . . . . . . . . . . . . .  	NUMBER	0011	
$LL20  . . . . . . . . . . . . .  	NUMBER	0014	
$LL4 . . . . . . . . . . . . . .  	NUMBER	0004	
$LL46  . . . . . . . . . . . . .  	NUMBER	002E	
$LL7 . . . . . . . . . . . . . .  	NUMBER	0007	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  ansiinit		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   1481 Source  Lines
   9154 Total   Lines
    412 Symbols

  46172 + 170880 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
