Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-1


				PAGE	    ,132
				TITLE	    PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS
				
				;****************** START OF SPECIFICATIONS **************************
				;
				;  MODULE NAME: PARSER.ASM
				;
				;  DESCRIPTIVE NAME: PARSES THE DEVICE= STATEMENT IN CONFIG.SYS FOR
				;		     ANSI.SYS
				;
				;  FUNCTION: THE COMMAND LINE PASSED TO ANSI.SYS IN THE CONFIG.SYS
				;	     STATEMENT IS PARSED TO CHECK FOR THE /X SWITCH. A FLAG
				;	     IS CLEARED IF NOT FOUND.
				;
				;  ENTRY POINT: PARSE_PARM
				;
				;  INPUT: DS:SI POINTS TO EVERYTHING AFTER DEVICE=
				;
				;  AT EXIT:
				;     NORMAL: SWITCH FLAGS WILL BE SET IF /X or /L IS FOUND
				;
				;     ERROR: CARRY SET
				;
				;  INTERNAL REFERENCES:
				;
				;     ROUTINES: SYSLOADMSG - MESSAGE RETRIEVER LOADING CODE
				;		SYSDISPMSG - MESSAGE RETRIEVER DISPLAYING CODE
				;		PARM_ERROR - DISPLAYS ERROR MESSAGE
				;		SYSPARSE - PARSING CODE
				;
				;     DATA AREAS: PARMS - PARSE CONTROL BLOCK FOR SYSPARSE
				;
				;  EXTERNAL REFERENCES:
				;
				;     ROUTINES: N/A
				;
				;     DATA AREAS: SWITCH - BYTE FLAG FOR EXISTENCE OF SWITCH PARAMETER
				;
				;  NOTES:
				;
				;  REVISION HISTORY:
				;	    A000 - DOS Version 4.00
				;
				;      Label: "DOS ANSI.SYS Device Driver"
				;	      "Version 4.00 (C) Copyright 1988 Microsoft"
				;	      "Licensed Material - Program Property of Microsoft"
				;
				;****************** END OF SPECIFICATIONS ****************************
				;Modification history**********************************************************
				;AN001; P1529 ANSI /x /y gives wrong error message		   10/8/87 J.K.
				;AN002; D397  /L option for "Enforcing" the line number            12/17/87 J.K.
				;AN003; D479  An option to disable the extended keyboard functions 02/12/88 J.K.
				;******************************************************************************
				
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-2


				
				INCLUDE     ANSI.INC	    ; ANSI equates and structures				 ;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	
 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	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-3


 = 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;
 = 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	;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-4


			     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	
 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;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-5


 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	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 = 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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-6


			     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;
 = 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;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-7


 = 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;
 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;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-8


 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	    PARSE_PARM	     ; near procedure for parsing DEVICE= statement		 ;AN000;
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; Set assemble switches for parse code that is not required!!
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 = 0000				DateSW	      EQU     0 								 ;AN000;
 = 0000				TimeSW	      EQU     0 								 ;AN000;
 = 0000				CmpxSW	      EQU     0 								 ;AN000;
 = 0000				DrvSW	      EQU     0 								 ;AN000;
 = 0000				QusSW	      EQU     0 								 ;AN000;
 = 0000				NumSW	      EQU     0 								 ;AN000;
 = 0000				KeySW	      EQU     0 								 ;AN000;
 = 0000				Val1SW	      EQU     0 								 ;AN000;
 = 0000				Val2SW	      EQU     0 								 ;AN000;
 = 0000				Val3SW	      EQU     0 								 ;AN000;
				
				
 0000				CODE	      SEGMENT  PUBLIC word
					      ASSUME CS:CODE
				
				.LIST
				
				
				EXTRN	    SWITCH_X:BYTE	 ; /X switch flag						 ;AN
				000;
				extrn	    Switch_L:Byte	 ;AN002; /L switch flag
				extrn	    Switch_K:Byte	 ;AN003; /K switch
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; PARM control blocks for ANSI
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-9
DOS - Message Retriever - DISPMSG.ASM Module                

				; Parsing DEVICE= statment from CONFIG.SYS
				;
				; DEVICE=[d:][path]ANSI.SYS [/X]
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
															 ;AN000;
 0EAC				PARMS	       LABEL WORD								 ;AN000;
 0EAC  0EAF R				       DW	PARMSX								 ;AN000;
 0EAE  00				       DB	0		   ; no extra delimeters or EOLs.		 ;AN000;
															 ;AN000;
 0EAF				PARMSX	       LABEL BYTE								 ;AN000;
 0EAF  01 01				       DB	1,1		   ;AN001; 1 valid positional operand
 0EB1  0EB7 R				       DW	FILENAME	   ;AN001; filename
 0EB3  01				       DB	1		   ;AN002; 1 switche definition in the following
 0EB4  0EC0 R				       DW	Switches	   ;AN002;
 0EB6  00				       DB	0		   ;AN001; no keywords
															 ;AN000;
 0EB7				FILENAME       LABEL WORD								 ;AN000;
 0EB7  0200				       DW	0200H		   ; file spec					 ;AN000;
 0EB9  0001				       DW	0001H		   ; cap by file table				 ;AN000;
 0EBB  0ED3 R				       DW	RESULT_BUF	   ; result					 ;AN000;
 0EBD  0ED2 R				       DW	NOVALS		   ; no value checking done			 ;AN000;
 0EBF  00				       DB	0		   ; no switch/keyword synonyms 		 ;AN000;
															 ;AN000;
 0EC0				Switches       LABEL WORD								 ;AN000;
 0EC0  0000				       DW	0		   ; switch with no value			 ;AN000;
 0EC2  0000				       DW	0		   ; no functions				 ;AN000;
 0EC4  0ED3 R				       DW	RESULT_BUF	   ; result					 ;AN000;
 0EC6  0ED2 R				       DW	NOVALS		   ; no value checking done			 ;AN000;
 0EC8  03				       DB	3		   ;AN002;AN003; 3 switch synonym
 0EC9  2F 58 00			X_SWITCH       DB	"/X",0             ;AN002; /X name
 0ECC  2F 4C 00			L_SWITCH       DB	"/L",0             ;AN002; /L
 0ECF  2F 4B 00			K_SWITCH       DB	"/K",0             ;AN003; /K
				
 0ED2				NOVALS	       LABEL BYTE								 ;AN000;
 0ED2  00				       DB	0		   ; no value checking done			 ;AN000;
				
 0ED3				RESULT_BUF     LABEL BYTE								 ;AN000;
 0ED3  00				       DB	?		   ; type returned (number, string, etc.)	 ;AN000;
 0ED4  00				       DB	?		   ; matched item tag (if applicable)		 ;AN000;
 0ED5  0000			SYNONYM_PTR    DW	0		   ; synonym ptr (if applicable)		 ;AN000;
 0ED7  00000000				       DD	?		   ; value					 ;AN000;
															 ;AN000;
 0EDB				SUBLIST        LABEL DWORD		   ; list for substitution			 ;AN000;
 0EDB  0B				       DB	SUB_SIZE							 ;AN000;
 0EDC  00				       DB	0								 ;AN000;
 0EDD  00000000				       DD	?								 ;AN000;
 0EE1  01				       DB	1								 ;AN000;
 0EE2  10				       DB	LEFT_ASCIIZ							 ;AN000;
 0EE3  00				       DB	UNLIMITED							 ;AN000;
 0EE4  01				       DB	1								 ;AN000;
 0EE5  20				       DB	" "                                                              ;AN000;
				
 0EE6  0000			Old_SI		dw	?			;AN001;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-10
DOS - Message Retriever - DISPMSG.ASM Module                

 0EE8  00			Saved_Chr	db	0			;AN001;
 0EE9  01			Continue_Flag	db	ON			;AN002;
 0EEA  00			Parse_Err_Flag	db	OFF			;AN002;
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; PROCEDURE_NAME: PARSE_PARM
				;
				; FUNCTION:
				; THIS PROCEDURE PARSES THE DEVICE= PARAMETERS FROM THE INIT REQUEST
				; BLOCK. ERROR MESSAGES ARE DISPLAYED ACCORDINGLY.
				;
				; AT ENTRY: DS:SI POINTS TO EVERYTHING AFTER THE DEVICE= STATEMENT
				;
				; AT EXIT:
				;    NORMAL: CARRY CLEAR - SWITCH FLAG BYTE SET TO 1 IF /X FOUND
				;
				;    ERROR: CARRY SET
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 0EEB				PARSE_PARM    PROC     NEAR								 ;AN000;
 0EEB  E8 00FD R			      CALL     SYSLOADMSG		; load message				 ;AN000;
					      .IF C NEAR								 ;AN000;
 0EEE  73 0A                 5						jnC $l2 
 0EF0  90                    6					nop 
 0EF1  90                    6					nop 
 0EF2  90                    6					nop 
 0EF3  E8 025D R				CALL	 SYSDISPMSG		; display error message 		 ;AN000;
 0EF6  F9					STC				; ensure carry still set		 ;AN000;
					      .ELSE NEAR								 ;AN000;
 0EF7  E9 0F8F R             3						jmp $l1 
 0EFA                        2	$l2: 
 0EFA  0E					PUSH	 CS			; establish ES ..			 ;AN000;
 0EFB  07					POP	 ES			; addressability to data		 ;AN000;
 0EFC  8D 3E 0EAC R				LEA	 DI,PARMS		; point to PARMS control block		 ;AN000;
 0F00  33 C9					XOR	 CX,CX			; clear both CX and DX for		 ;AN000;
 0F02  33 D2					XOR	 DX,DX			;  SYSPARSE				 ;AN000;
 0F04  E8 087B R				CALL	 SYSPARSE		; move pointer past file spec		 ;AN000;
 0F07  2E: C6 06 0000 E 00			mov	 Switch_L, OFF		;AN002;
 0F0D  2E: C6 06 0000 E 00			mov	 Switch_X, OFF		;AN002;
						.WHILE <Continue_Flag EQ ON>	;AN002;
 0F13                        2	$l5: 
 0F13  2E: 80 3E 0EE9 R 01   3						cmp Continue_Flag,ON 
 0F19  75 68                 6						jne $l6 
 0F1B  2E: 89 36 0EE6 R				     mov Old_SI, SI		;AN001;to be use by PARM_ERROR
 0F20  E8 087B R				     call SysParse		;AN002;
						     .IF <AX EQ RC_EOL> 	;AN002;
 0F23  3D FFFF               3						cmp AX,RC_EOL 
 0F26  75 08                 6						jne $l9 
 0F28  2E: C6 06 0EE9 R 00				mov Continue_Flag, OFF	;AN002;
						     .ELSE			;AN002;
 0F2E  EB E3                 3						jmp short $l5 
 0F30                        2	$l9: 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-11
DOS - Message Retriever - DISPMSG.ASM Module                

							.IF <AX NE RC_NO_ERROR> ;AN002;
 0F30  3D 0000               3						cmp AX,RC_NO_ERROR 
 0F33  74 23                 6						je $l13 
 0F35  2E: C6 06 0EE9 R 00				   mov Continue_Flag, OFF    ;AN002;
 0F3B  2E: C6 06 0000 E 00				   mov Switch_X, OFF	;AN002;
 0F41  2E: C6 06 0000 E 00				   mov Switch_L, OFF	;AN002;
 0F47  2E: C6 06 0000 E 00				   mov Switch_K, OFF	;AN003;
 0F4D  E8 0F90 R					   call Parm_Error	;AN002;
 0F50  2E: C6 06 0EEA R 01				   mov Parse_Err_Flag,ON;AN002;
							.ELSE			;AN002;
 0F56  EB BB                 3						jmp short $l5 
 0F58                        2	$l13: 
							   .IF <Synonym_ptr EQ <offset X_SWITCH>>      ;AN002;
 0F58  2E: 81 3E 0ED5 R 0EC9 3						cmp Synonym_ptr,offset X_SWITCH 
 0F5F  75 08                 6						jne $l17 
 0F61  2E: C6 06 0000 E 01					mov	Switch_X, ON		       ;AN002;
							   .ELSE				       ;AN002;
 0F67  EB 17                 3						jmp short $l16 
 0F69                        2	$l17: 
							       .IF <Synonym_ptr EQ <offset L_SWITCH>>  ;AN003;
 0F69  2E: 81 3E 0ED5 R 0ECC 3						cmp Synonym_ptr,offset L_SWITCH 
 0F70  75 08                 6						jne $l21 
 0F72  2E: C6 06 0000 E 01					    mov     Switch_L, ON ;AN002;
							       .ELSE			 ;AN003;Must be /K option.
 0F78  EB 06                 3						jmp short $l16 
 0F7A                        2	$l21: 
 0F7A  2E: C6 06 0000 E 01					    mov     Switch_K, ON ;AN003;/K entered.
							       .ENDIF			 ;AN003;
							   .ENDIF			 ;AN002;
 0F80                        2	$l16: 
 0F80  F8						    clc 		;AN002;
							.ENDIF			;AN002;
						     .ENDIF			;AN002;
						.ENDWHILE			;AN002;
 0F81  EB 90                 3						jmp $l5 
 0F83                        2	$l6: 
						.IF <Parse_Err_Flag EQ ON>	;AN002;
 0F83  2E: 80 3E 0EEA R 01   3						cmp Parse_Err_Flag,ON 
 0F89  75 03                 6						jne $l25 
 0F8B  F9					     stc			;AN002;
						.ELSE				;AN002;
 0F8C  EB 01                 3						jmp short $l1 
 0F8E                        2	$l25: 
 0F8E  F8					     clc			;AN002;
						.ENDIF				;AN002;
					      .ENDIF				;AN002;
 0F8F                        2	$l1: 
				
				;		 mov	  cs:Old_SI, SI 	 ;AN001; Save pointer to parm
				;		 CALL	  SYSPARSE		 ; look for /X switch			  ;AN000;
				;		 .IF <AX EQ RC_EOL>		 ; if EOL then..			  ;AN000;
				;		    MOV     ES:SWITCH_X,0	 ;  no switch...clear flag		  ;AN000;
				;		    CLC 			 ;  clear carry 			  ;AN000;
				;		 .ELSE				 ; else..				  ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-12
DOS - Message Retriever - DISPMSG.ASM Module                

				;		    .IF <AX GT RC_NO_ERROR>	 ;AN001;If any error
				;			call parm_error 	 ;AN001; the show the error msg
				;			stc			 ;AN001;
				;		    .ELSE			 ;  else..leave flag set..		  ;AN000;
				;			mov   cs:Old_SI, SI	 ;AN001;
				;		       CALL    SYSPARSE 	 ; check for further parms		  ;AN000;
				;		       .IF <AX NE RC_EOL>	 ; if other parms then...		  ;AN000;
				;			  CALL	 PARM_ERROR	 ; display 'Invalid parameter' message    ;AN000;
				;			  STC			 ;  error!				  ;AN000;
				;		       .ELSE			 ; no other parms so..			  ;AN000;
				;			  CLC			 ;  clear carry 			  ;AN000;
				;		       .ENDIF			 ;					  ;AN000;
				;		    .ENDIF			 ;					  ;AN000;
				;		 .ENDIF 			 ;					  ;AN000;
				;	       .ENDIF				 ;					  ;AN000;
				
 0F8F  C3				      RET									 ;AN000;
 0F90				PARSE_PARM    ENDP									 ;AN000;
															 ;AN000;
				
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;
				; PROCEDURE_NAME: PARM_ERROR
				;
				; FUNCTION:
				; LOADS AND DISPLAYS "Invalid parameter" MESSAGE
				;
				; AT ENTRY:
				;   DS:Old_SI -> parms that is invalid
				;
				; AT EXIT:
				;    NORMAL: ERROR MESSAGE DISPLAYED
				;
				;    ERROR: N/A
				;
				;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
 0F90				PARM_ERROR    PROC   NEAR								 ;AN000;
 0F90  51				      PUSH   CX 								 ;AN000;
 0F91  56				      PUSH   SI 								 ;AN000;
 0F92  06				      PUSH   ES 		;						 ;AN000;
 0F93  1E				      PUSH   DS 		;						 ;AN000;
				
				;	       PUSH   CS		 ;						  ;AN000;
				;	       POP    DS		 ; establish addressability			  ;AN000;
				;	       MOV    BX,DX		 ;						  ;AN000;
				;	       LES    DX,[BX].RES_PTR	 ; find offending parameter			  ;AN000;
 0F94  1E				       push   ds		;AN001;
 0F95  07				       pop    es		;AN001;
 0F96  2E: 8B 36 0EE6 R			       mov    si, cs:Old_SI	;AN001;Now es:dx -> offending parms
 0F9B  56				       push   si		;AN001;Save it
 0F9C				Get_CR:
 0F9C  26: 80 3C 0D			       cmp    byte ptr es:[si], 13 ;AN001;CR?
 0FA0  74 03				       je     Got_CR		   ;AN001;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-13
DOS - Message Retriever - DISPMSG.ASM Module                

 0FA2  46				       inc    si		   ;AN001;
 0FA3  EB F7				       jmp    Get_CR		   ;AN001;
 0FA5				Got_CR: 				   ;AN001;
 0FA5  46				       inc    si		   ;AN001; The next char.
 0FA6  26: 8A 04			       mov    al, byte ptr es:[si] ;AN001;
 0FA9  2E: A2 0EE8 R			       mov    cs:Saved_Chr, al	   ;AN001; Save the next char
				
 0FAD  26: C6 04 00			       mov    byte ptr es:[si], 0     ;AN001; and make it an ASCIIZ
 0FB1  2E: 89 36 0EE6 R			       mov    cs:Old_SI, si	;AN001; Set it again
 0FB6  5A				       pop    dx		;AN001; saved SI -> DX
				
 0FB7  0E				       push   cs		;AN001;
 0FB8  1F				       pop    ds		;AN001;for addressability
				
 0FB9  8D 36 0EDB R			      LEA    SI,SUBLIST 	; ..and place the offset..			 ;AN000;
 0FBD  89 54 02				      MOV    [SI].SUB_PTR_O,DX	; ..in the SUBLIST..				 ;AN000;
 0FC0  8C 44 04				      MOV    [SI].SUB_PTR_S,ES	;						 ;AN000;
 0FC3  B8 000A				      MOV    AX,INVALID_PARM	; load 'Invalid parameter' message number        ;AN000;
 0FC6  BB 0002				      MOV    BX,STDERR		; to standard error				 ;AN000;
 0FC9  B9 0001				      MOV    CX,ONE		; 1 substitution				 ;AN000;
 0FCC  32 D2				      XOR    DL,DL		; no input					 ;AN000;
 0FCE  B6 FF				      MOV    DH,UTILITY_MSG_CLASS ; parse error 				 ;AN000;
 0FD0  E8 025D R			      CALL   SYSDISPMSG 	; display error message 			 ;AN000;
 0FD3  2E: 8B 36 0EE6 R			      mov    si, cs:Old_SI	;AN001;restore the original char.
 0FD8  2E: 8A 0E 0EE8 R			      mov    cl, cs:Saved_Chr	;AN001;
 0FDD  26: 88 0C			      mov    byte ptr es:[si], cl ;AN001;
				
 0FE0  1F				      POP    DS 								 ;AN000;
 0FE1  07				      POP    ES 								 ;AN000;
 0FE2  5E				      POP    SI 								 ;AN000;
 0FE3  59				      POP    CX 								 ;AN000;
 0FE4  C3				      RET									 ;AN000;
 0FE5				PARM_ERROR    ENDP
				
				include msgdcl.inc
			     C	; This Macro was removed from sysmsg.inc. We had to remove this
			     C	; macro and put it into it's own include file in order to clear up
			     C	; some assembly errors. MS MASM will not allow a public declaration
			     C	; during the second pass of the assembler. IBM MASM will allow this.
			     C	;
			     C	;
			     C	;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;	$M_DECLARE	     Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C	$M_DECLARE    macro	numcls	       ;
			     C	   $M_DCOUNT = 0		       ;
			     C	   REPT  numcls 		       ;
			     C	     $M_DCOUNT =  $M_DCOUNT + 1        ;
			     C	     $M_DECLARE2  %$M_DCOUNT	       ;
			     C	   ENDM 			       ;
			     C	
			     C	  IF COMR
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-14
DOS - Message Retriever - DISPMSG.ASM Module                

			     C	    IFNDEF $M_RT2			;  If Resident table is not in this assembly,
			     C		EXTRN	$M_RT2:BYTE		;     Must be external
			     C	    ELSE
			     C		PUBLIC	$M_RT2
			     C	    ENDIF				;
			     C	  ELSE
			     C	    IFNDEF $M_RT			;  If Resident table is not in this assembly,
			     C		EXTRN	$M_RT:BYTE		;     Must be external
			     C	    ELSE
			     C		PUBLIC	$M_RT
			     C	    ENDIF				;
			     C	  ENDIF
			     C	
			     C	  $M_CHECK $M_GET_MSG_ADDRESS	      ;  If this subroutine is not in this assembly,
			     C	  $M_CHECK $M_MSGSERV_1 	      ;  If this subroutine is not in this assembly,
			     C	  $M_CHECK $M_MSGSERV_2 	      ;  If this subroutine is not in this assembly,
			     C	
			     C	ENDM				       ;
			     C					       ;
			     C	$M_DECLARE2   macro   innum	       ;
			     C	  IF NOT COMR			       ; IF Not resident COMMAND.COM
			     C	    IF NOT COMT 			 ; IF Not transient COMMAND.COM
			     C	      IFNDEF  $M_CLS_&innum		 ; IF class is not in this assembly,
			     C		IF	FARmsg			 ;
			     C		  EXTRN   $M_CLS_&innum:FAR	 ;    Must be external
			     C		ELSE				 ;
			     C		  EXTRN   $M_CLS_&innum:NEAR	 ;    Must be external
			     C		ENDIF				 ;
			     C	      ELSE				 ; ELSE
			     C		PUBLIC	$M_CLS_&innum		 ;    Label PUBLIC
			     C	      ENDIF				 ;
			     C	    ELSE				 ; ELSE
			     C	      IFDIF  <$M_CLS_&innum>,<$M_CLS_1>  ; IF NOT $M_CLS_1 or
			     C		IFDIF <$M_CLS_&innum>,<$M_CLS_2> ;   IF NOT $M_CLS_2 then
			     C		  IFNDEF  $M_CLS_&innum 	 ;     IF class is not in this assembly,
			     C		    IF	    FARmsg		 ;
			     C		      EXTRN   $M_CLS_&innum:FAR  ;	 Must be external
			     C		    ELSE			 ;
			     C		      EXTRN   $M_CLS_&innum:NEAR ;	 Must be external
			     C		    ENDIF			 ;
			     C		  ELSE				 ;     ELSE
			     C		    PUBLIC  $M_CLS_&innum	 ;	 Label PUBLIC
			     C		  ENDIF 			 ;
			     C		ENDIF				 ;
			     C	      ENDIF				 ;
			     C	    ENDIF				 ;
			     C	  ELSE					 ; ELSE
			     C	    IFDIF  <$M_CLS_&innum>,<$M_CLS_1>	 ; IF NOT $M_CLS_1 or
			     C	      IFDIF <$M_CLS_&innum>,<$M_CLS_2>	 ;   IF NOT $M_CLS_2 then
			     C		IFNDEF	$M_CLS_&innum		 ;     IF class is not in this assembly,
			     C		  IF	  FARmsg		 ;
			     C		    EXTRN   $M_CLS_&innum:FAR	 ;	 Must be external
			     C		  ELSE				 ;
			     C		    EXTRN   $M_CLS_&innum:NEAR	 ;	 Must be external
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Page     1-15
DOS - Message Retriever - DISPMSG.ASM Module                

			     C		  ENDIF 			 ;
			     C		ELSE				 ;     ELSE
			     C		  PUBLIC  $M_CLS_&innum 	 ;	 Label PUBLIC
			     C		ENDIF				 ;
			     C	      ENDIF				 ;
			     C	    ENDIF				 ;
			     C	  ENDIF 			       ;
			     C	ENDM				       ;
			     C					       ;
			     C	$M_CHECK      macro   parm	       ;
			     C	  IFNDEF  parm			       ; IF class is not in this assembly,
			     C	    IF	    FARmsg		       ;
			     C	      EXTRN   parm:FAR		       ;    Must be external
			     C	    ELSE			       ;
			     C	      EXTRN   parm:NEAR 	       ;    Must be external
			     C	    ENDIF			       ;
			     C	  ELSE
			     C	    IF COMR
			     C	    ELSE
			     C	      PUBLIC parm
			     C	    ENDIF
			     C	  ENDIF 			       ;
			     C	ENDM				       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	
			     C	
				
 0FE5				CODE	      ENDS
					      END

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-1


Macros:

		N a m e			Lines

$M_BUILD_PTRS  . . . . . . . . .  	  18
$M_CHECK . . . . . . . . . . . .  	  12
$M_DECLARE . . . . . . . . . . .  	  21
$M_DECLARE2  . . . . . . . . . .  	  41
$M_INC . . . . . . . . . . . . .  	   3
$M_MAKE  . . . . . . . . . . . .  	  10
$M_MAKE_COMR . . . . . . . . . .  	  21
$M_MAKE_COMT . . . . . . . . . .  	   5
$M_POPF  . . . . . . . . . . . .  	   5
.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
MSG_SERVICES . . . . . . . . . .  	  34
MSG_SERVICES2  . . . . . . . . .  	  14
MSG_UTILNAME . . . . . . . . . .  	   5

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

$M_CLASS_ID  . . . . . . . . . .  	0004	0003
  $M_CLS_ID  . . . . . . . . . .  	0000
  $M_COMMAND_VER . . . . . . . .  	0001
  $M_NUM_CLS_MSG . . . . . . . .  	0003
$M_COUNTRY_INFO  . . . . . . . .  	0056	000A
  $M_HEADER  . . . . . . . . . .  	0000
  $M_DATE_FORMAT . . . . . . . .  	0044
  $M_CURR_SEPARA . . . . . . . .  	0046
  $M_THOU_SEPARA . . . . . . . .  	004B
  $M_DECI_SEPARA . . . . . . . .  	004D
  $M_DATE_SEPARA . . . . . . . .  	004F
  $M_TIME_SEPARA . . . . . . . .  	0051
  $M_CURR_FORMAT . . . . . . . .  	0053
  $M_SIG_DIGS_CU . . . . . . . .  	0054
  $M_TIME_FORMAT . . . . . . . .  	0055
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-2


$M_ID  . . . . . . . . . . . . .  	0004	0002
  $M_NUM . . . . . . . . . . . .  	0000
  $M_TXT_PTR . . . . . . . . . .  	0002
$M_RES_ADDRS . . . . . . . . . .  	0085	0017
  $M_EXT_ERR_ADDRS . . . . . . .  	0000
  $M_EXT_FILE  . . . . . . . . .  	0004
  $M_EXT_COMMAND . . . . . . . .  	0008
  $M_EXT_TERM  . . . . . . . . .  	000C
  $M_PARSE_COMMAND . . . . . . .  	0010
  $M_PARSE_ADDRS . . . . . . . .  	0014
  $M_PARSE_TERM  . . . . . . . .  	0018
  $M_CRIT_ADDRS  . . . . . . . .  	001C
  $M_CRIT_COMMAND  . . . . . . .  	0020
  $M_CRIT_TERM . . . . . . . . .  	0024
  $M_DISK_PROC_ADDR  . . . . . .  	0028
  $M_CLASS_ADDRS . . . . . . . .  	002C
  $M_CLS_TERM  . . . . . . . . .  	0030
  $M_DBCS_VEC  . . . . . . . . .  	0034
  $M_HANDLE  . . . . . . . . . .  	0038
  $M_SIZE  . . . . . . . . . . .  	003A
  $M_CRLF  . . . . . . . . . . .  	003B
  $M_CLASS . . . . . . . . . . .  	003D
  $M_RETURN_ADDR . . . . . . . .  	003E
  $M_MSG_NUM . . . . . . . . . .  	0040
  $M_DIVISOR . . . . . . . . . .  	0042
  $M_TEMP_BUF  . . . . . . . . .  	0044
  $M_BUF_TERM  . . . . . . . . .  	0084
$M_SUBLIST_STRUC . . . . . . . .  	000B	0008
  $M_S_SIZE  . . . . . . . . . .  	0000
  $M_S_RESV  . . . . . . . . . .  	0001
  $M_S_VALUE . . . . . . . . . .  	0002
  $M_S_ID  . . . . . . . . . . .  	0006
  $M_S_FLAG  . . . . . . . . . .  	0007
  $M_S_MAXW  . . . . . . . . . .  	0008
  $M_S_MINW  . . . . . . . . . .  	0009
  $M_S_PAD . . . . . . . . . . .  	000A
$P_CDI . . . . . . . . . . . . .  	0022	000C
  $P_CDI_DATEF . . . . . . . . .  	0000
  $P_CDI_MONEY . . . . . . . . .  	0002
  $P_CDI_1000  . . . . . . . . .  	0007
  $P_CDI_DEC . . . . . . . . . .  	0009
  $P_CDI_DATES . . . . . . . . .  	000B
  $P_CDI_TIMES . . . . . . . . .  	000D
  $P_CDI_TIMEF . . . . . . . . .  	0011
$P_CONTROL_BLK . . . . . . . . .  	000A	0006
  $P_MATCH_FLAG  . . . . . . . .  	0000
  $P_FUNCTION_FLAG . . . . . . .  	0002
  $P_RESULT_BUF  . . . . . . . .  	0004
  $P_VALUE_LIST  . . . . . . . .  	0006
  $P_NID . . . . . . . . . . . .  	0008
  $P_KEYORSW . . . . . . . . . .  	0009
$P_DOS_TBL . . . . . . . . . . .  	0005	0003
  $P_DOS_INFOID  . . . . . . . .  	0000
  $P_DOS_TBL_OFF . . . . . . . .  	0001
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-3


  $P_DOS_TBL_SEG . . . . . . . .  	0003
$P_PARMSX_BLK  . . . . . . . . .  	0004	0003
  $P_MINP  . . . . . . . . . . .  	0000
  $P_MAXP  . . . . . . . . . . .  	0001
  $P_1ST_CONTROL . . . . . . . .  	0002
$P_PARMS_BLK . . . . . . . . . .  	0004	0003
  $P_PARMSX_ADDRESS  . . . . . .  	0000
  $P_NUM_EXTRA . . . . . . . . .  	0002
  $P_LEN_EXTRA_DELIM . . . . . .  	0003
$P_RESULT_BLK  . . . . . . . . .  	0008	0004
  $P_TYPE  . . . . . . . . . . .  	0000
  $P_ITEM_TAG  . . . . . . . . .  	0001
  $P_SYNONYM_PTR . . . . . . . .  	0002
  $P_PICKED_VAL  . . . . . . . .  	0004
$P_VAL_LIST  . . . . . . . . . .  	0009	0005
  $P_NUMOFLIST . . . . . . . . .  	0000
  $P_VAL_XL  . . . . . . . . . .  	0001
  $P_VAL_XH  . . . . . . . . . .  	0003
  $P_VAL_YL  . . . . . . . . . .  	0005
  $P_VAL_YH  . . . . . . . . . .  	0007
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
  IOCTL_DI . . . . . . . . . . .  	0011
  REQ_PCKT_PTR . . . . . . . . .  	0013
MODE_TABLE . . . . . . . . . . .  	000D	0008
  V_MODE . . . . . . . . . . . .  	0000
  D_MODE . . . . . . . . . . . .  	0001
  RESERVED_BYTE  . . . . . . . .  	0002
  COLORS . . . . . . . . . . . .  	0003
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-4


  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 . . . . . . . . . . . . . .  	0FE5	WORD	PUBLIC	

Symbols:            

                N a m e         	Type	 Value	 Attr

ACTION_39  . . . . . . . . . . .  	NUMBER	0004	
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_GOOD_DOS . . . . . . . . . .  	L NEAR	0241	CODE
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
ALT_PRT_SC . . . . . . . . . . .  	NUMBER	0020	
ALT_SELECT . . . . . . . . . . .  	NUMBER	0012	
AMIS_ID  . . . . . . . . . . . .  	L NEAR	00F4	CODE
AMIS_ID_MSG  . . . . . . . . . .  	L NEAR	00F9	CODE
AMIS_ID_MSG_END  . . . . . . . .  	L NEAR	00FD	CODE
amis_sign  . . . . . . . . . . .  	L NEAR	00E4	CODE	Global
AMIS_SIGN_SEGMENT  . . . . . . .  	ALIAS	 CODE		
ARG_PTR  . . . . . . . . . . . .  		0012	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-5



BELL . . . . . . . . . . . . . .  	NUMBER	0007	
BIN_HEX_BYTE . . . . . . . . . .  	NUMBER	0013	
BIN_HEX_DWORD  . . . . . . . . .  	NUMBER	0033	
BIN_HEX_TYPE . . . . . . . . . .  	NUMBER	0003	
BIN_HEX_WORD . . . . . . . . . .  	NUMBER	0023	
BLINK_TOGGLE . . . . . . . . . .  	NUMBER	1003	

CAPSW  . . . . . . . . . . . . .  	NUMBER	0001	
CGA_ACTIVE . . . . . . . . . . .  	NUMBER	0004	
CHARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
CHAR_FIELD_ASCIIZ  . . . . . . .  	NUMBER	0010	
CHAR_FIELD_CHAR  . . . . . . . .  	NUMBER	0000	
CHAR_TYPE  . . . . . . . . . . .  	NUMBER	0000	
CHECK_ACTIVE . . . . . . . . . .  	NUMBER	AD02	
CHECK_AMIS . . . . . . . . . . .  	L NEAR	01E5	CODE
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	021C	CODE
CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	01EE	CODE
CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	0217	CODE
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	021B	CODE
CHECK_FOR_FONT . . . . . . . . .  	NUMBER	AD10	
CLASS_1_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_2_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_A_MESSAGECOUNT . . . . . .  	NUMBER	0002	
CMD_ERROR  . . . . . . . . . . .  	NUMBER	8000	
CMPXSW . . . . . . . . . . . . .  	NUMBER	0000	
COLON  . . . . . . . . . . . . .  	NUMBER	003A	
COLOR  . . . . . . . . . . . . .  	NUMBER	0000	
COLOR_ADDRESS  . . . . . . . . .  	NUMBER	B800	
COMR . . . . . . . . . . . . . .  	NUMBER	0000	
COMT . . . . . . . . . . . . . .  	NUMBER	0000	
CONFIG_ERRMSG  . . . . . . . . .  		0017	
CONPTR . . . . . . . . . . . . .  	TEXT  CS:[BX]		
CONTINUE_FLAG  . . . . . . . . .  	L BYTE	0EE9	CODE
CR . . . . . . . . . . . . . . .  	NUMBER	000D	
CURSOR_FLAG  . . . . . . . . . .  	NUMBER	0087	
CY . . . . . . . . . . . . . . .  	NUMBER	0001	

DATEMSG  . . . . . . . . . . . .  	NUMBER	0000	
DATESW . . . . . . . . . . . . .  	NUMBER	0000	
DATE_MD  . . . . . . . . . . . .  	NUMBER	0014	
DATE_MDY_2 . . . . . . . . . . .  	NUMBER	0024	
DATE_MDY_4 . . . . . . . . . . .  	NUMBER	0034	
DATE_TYPE  . . . . . . . . . . .  	NUMBER	0004	
DA_INFO_2F . . . . . . . . . . .  	NUMBER	0002	
DEFAULT_LENGTH . . . . . . . . .  	NUMBER	0019	
DISK_PROC  . . . . . . . . . . .  	NUMBER	0000	
DISPLAYMSG . . . . . . . . . . .  	NUMBER	0000	
DISPLAY_CHECK  . . . . . . . . .  	NUMBER	AD00	
DISPLAY_TYPE . . . . . . . . . .  	NUMBER	0003	
DONE . . . . . . . . . . . . . .  	NUMBER	0100	
DOS_BUF_KEYB_INP . . . . . . . .  	NUMBER	000A	
DOS_CLOSE_FILE . . . . . . . . .  	NUMBER	003E	
DOS_CLR_KEYB_BUF . . . . . . . .  	NUMBER	000C	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-6


DOS_CLR_KEYB_BUF_MASK  . . . . .  	NUMBER	00C0	
DOS_CON_INP  . . . . . . . . . .  	NUMBER	0008	
DOS_DIR_CON_INP  . . . . . . . .  	NUMBER	0007	
DOS_DISP_CHAR  . . . . . . . . .  	NUMBER	0002	
DOS_DISP_STRING  . . . . . . . .  	NUMBER	0009	
DOS_EXTENDED_OPEN  . . . . . . .  	NUMBER	6C00	
DOS_GET_ADDR . . . . . . . . . .  	NUMBER	0008	
DOS_GET_COUNTRY  . . . . . . . .  	NUMBER	0038	
DOS_GET_CRITICAL . . . . . . . .  	NUMBER	0004	
DOS_GET_DBCS_INFO  . . . . . . .  	NUMBER	6300	
DOS_GET_EXTENDED . . . . . . . .  	NUMBER	0000	
DOS_GET_EXT_ERROR  . . . . . . .  	NUMBER	0059	
DOS_GET_EXT_ERROR_BX . . . . . .  	NUMBER	0000	
DOS_GET_EXT_PARSE_ADD  . . . . .  	NUMBER	122E	
DOS_GET_FILE . . . . . . . . . .  	NUMBER	0006	
DOS_GET_PARSE  . . . . . . . . .  	NUMBER	0002	
DOS_GET_VERSION  . . . . . . . .  	NUMBER	0030	
DOS_IOCTL_GET_INFO . . . . . . .  	NUMBER	4400	
DOS_IOCTL_SET_INFO . . . . . . .  	NUMBER	4401	
DOS_KEYB_INP . . . . . . . . . .  	NUMBER	0001	
DOS_LSEEK_FILE . . . . . . . . .  	NUMBER	4200	
DOS_READ_BYTE  . . . . . . . . .  	NUMBER	003F	
DOS_SET_ADDR . . . . . . . . . .  	NUMBER	0009	
DOS_WRITE_HANDLE . . . . . . . .  	NUMBER	0040	
DRIVE_NUM  . . . . . . . . . . .  		0016	
DRVSW  . . . . . . . . . . . . .  	NUMBER	0000	

E5151_ACTIVE . . . . . . . . . .  	NUMBER	0010	
E5153_ACTIVE . . . . . . . . . .  	NUMBER	0020	
E5154_ACTIVE . . . . . . . . . .  	NUMBER	0040	
EGA_INFO . . . . . . . . . . . .  	NUMBER	0010	
EIGHT  . . . . . . . . . . . . .  	NUMBER	0008	
END_ADDRESS_O  . . . . . . . . .  		000E	
END_ADDRESS_S  . . . . . . . . .  		0010	
EQUIP_FLAG . . . . . . . . . . .  	NUMBER	0010	
ERROR_CLASS_39 . . . . . . . . .  	NUMBER	0001	
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
EXT16_FLAG . . . . . . . . . . .  	NUMBER	0010	
EXT_ERR_39 . . . . . . . . . . .  	NUMBER	0027	
EXT_ERR_CLASS  . . . . . . . . .  	NUMBER	0001	

FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
FARMSG . . . . . . . . . . . . .  	NUMBER	0000	
FARSW  . . . . . . . . . . . . .  	NUMBER	0000	
FILENAME . . . . . . . . . . . .  	L WORD	0EB7	CODE
FILESW . . . . . . . . . . . . .  	NUMBER	0001	
FORMFD . . . . . . . . . . . . .  	NUMBER	000C	
FOUND  . . . . . . . . . . . . .  	NUMBER	0001	
FOURTEEN . . . . . . . . . . . .  	NUMBER	000E	
FUNC_CALL  . . . . . . . . . . .  	NUMBER	001B	

GETMSG . . . . . . . . . . . . .  	NUMBER	0000	
GET_CR . . . . . . . . . . . . .  	L NEAR	0F9C	CODE
GET_FUNC . . . . . . . . . . . .  	NUMBER	007F	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-7


GET_STATUS . . . . . . . . . . .  	NUMBER	0043	
GET_SUBFUNC  . . . . . . . . . .  	NUMBER	007F	
GET_SYS_ID . . . . . . . . . . .  	NUMBER	00C0	
GOT_CR . . . . . . . . . . . . .  	L NEAR	0FA5	CODE
GRAPHICS_MODE  . . . . . . . . .  	NUMBER	0002	

HOME . . . . . . . . . . . . . .  	NUMBER	000B	
HP . . . . . . . . . . . . . . .  	TEXT  DS:[SI]		

IFSFUNC_INSTALLED  . . . . . . .  	NUMBER	00FF	
IFSFUNC_INSTALL_CHECK  . . . . .  	NUMBER	0500	
IFS_GET_ERR_TEXT . . . . . . . .  	NUMBER	0502	
INCSW  . . . . . . . . . . . . .  	NUMBER	0001	
INIT_VID_MASK  . . . . . . . . .  	NUMBER	FFCF	
INPUTMSG . . . . . . . . . . . .  	NUMBER	0000	
INSTALLED  . . . . . . . . . . .  	NUMBER	00FF	
INSTALL_CHECK  . . . . . . . . .  	NUMBER	0000	
INT10_HI . . . . . . . . . . . .  	NUMBER	0042	
INT10_LOW  . . . . . . . . . . .  	NUMBER	0040	
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	

KBD_FLAG_3 . . . . . . . . . . .  	NUMBER	0096	
KEYSW  . . . . . . . . . . . . .  	NUMBER	0000	
K_SWITCH . . . . . . . . . . . .  	L BYTE	0ECF	CODE

LCD_ACTIVE . . . . . . . . . . .  	NUMBER	0001	
LCD_COLOR_MODE . . . . . . . . .  	NUMBER	0020	
LCD_MODEL  . . . . . . . . . . .  	NUMBER	00F9	
LCD_MONO_MODE  . . . . . . . . .  	NUMBER	0030	
LEFT_ALIGN . . . . . . . . . . .  	NUMBER	0000	
LEFT_ASCIIZ  . . . . . . . . . .  	NUMBER	0010	
LF . . . . . . . . . . . . . . .  	NUMBER	000A	
LFEOLSW  . . . . . . . . . . . .  	NUMBER	0001	
LOADMSG  . . . . . . . . . . . .  	NUMBER	0000	
LOAD_8X8 . . . . . . . . . . . .  	NUMBER	1112	
LOCUS_39 . . . . . . . . . . . .  	NUMBER	0001	
LOWEST_4CH_VERSION . . . . . . .  	NUMBER	0002	
LOW_NIB_MASK . . . . . . . . . .  	NUMBER	000F	
L_SWITCH . . . . . . . . . . . .  	L BYTE	0ECC	CODE

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MCGA_ACTIVE  . . . . . . . . . .  	NUMBER	0008	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MOD30_COLOR  . . . . . . . . . .  	NUMBER	000C	
MOD30_MONO . . . . . . . . . . .  	NUMBER	000B	
MODE13 . . . . . . . . . . . . .  	NUMBER	000D	
MODE15 . . . . . . . . . . . . .  	NUMBER	000F	
MODE19 . . . . . . . . . . . . .  	NUMBER	0013	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-8


MODE7  . . . . . . . . . . . . .  	NUMBER	0007	
MONOCHROME . . . . . . . . . . .  	NUMBER	0001	
MONO_ACTIVE  . . . . . . . . . .  	NUMBER	0002	
MONO_ADDRESS . . . . . . . . . .  	NUMBER	B000	
MSGDATA  . . . . . . . . . . . .  	NUMBER	0000	
MSG_SER_CLASS  . . . . . . . . .  	NUMBER	0000	
MULT_ANSI  . . . . . . . . . . .  	NUMBER	001A	

NAME_LEN . . . . . . . . . . . .  	NUMBER	0008	
NEARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
NEW_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
NEW_MINOR_VERSION  . . . . . . .  	NUMBER	0026	
NHD  . . . . . . . . . . . . . .  	TEXT  ES:[DI]		
NINE . . . . . . . . . . . . . .  	NUMBER	0009	
NOCHECKSTDIN . . . . . . . . . .  	NUMBER	0000	
NOCHECKSTDOUT  . . . . . . . . .  	NUMBER	0000	
NOT_AVAILABLE  . . . . . . . . .  	NUMBER	000C	
NOT_CY . . . . . . . . . . . . .  	NUMBER	FFFE	
NOT_EX_FAIL_EX_OPEN  . . . . . .  	NUMBER	0101	
NOT_FOUND  . . . . . . . . . . .  	NUMBER	0000	
NOT_SUPPORTED  . . . . . . . . .  	NUMBER	000A	
NOVALS . . . . . . . . . . . . .  	L BYTE	0ED2	CODE
NOVERCHECKMSG  . . . . . . . . .  	NUMBER	0000	
NO_CRIT_OPEN . . . . . . . . . .  	NUMBER	2000	
NO_HANDLE  . . . . . . . . . . .  	NUMBER	FFFF	
NO_INPUT . . . . . . . . . . . .  	NUMBER	0000	
NO_REPLACE . . . . . . . . . . .  	NUMBER	0000	
NULL . . . . . . . . . . . . . .  	NUMBER	0000	
NUMMSG . . . . . . . . . . . . .  	NUMBER	0000	
NUMSW  . . . . . . . . . . . . .  	NUMBER	0000	
NUM_ROWS . . . . . . . . . . . .  	NUMBER	0084	
NUM_UNITS  . . . . . . . . . . .  		000D	

OFF  . . . . . . . . . . . . . .  	NUMBER	0000	
OLD_SI . . . . . . . . . . . . .  	L WORD	0EE6	CODE
ON . . . . . . . . . . . . . . .  	NUMBER	0001	
ONE  . . . . . . . . . . . . . .  	NUMBER	0001	

PARMS  . . . . . . . . . . . . .  	L WORD	0EAC	CODE
PARMSX . . . . . . . . . . . . .  	L BYTE	0EAF	CODE
PARM_ERROR . . . . . . . . . . .  	N PROC	0F90	CODE	Length = 0055
PARSE_ERR_CLASS  . . . . . . . .  	NUMBER	0002	
PARSE_ERR_FLAG . . . . . . . . .  	L BYTE	0EEA	CODE
PARSE_PARM . . . . . . . . . . .  	N PROC	0EEB	CODE	Global	Length = 00A5
PS2_COLOR  . . . . . . . . . . .  	NUMBER	0008	
PS2_MONO . . . . . . . . . . . .  	NUMBER	0007	
PSDATA_SEG . . . . . . . . . . .  	ALIAS	 CS		

QUSSW  . . . . . . . . . . . . .  	NUMBER	0000	

RC_EOL . . . . . . . . . . . . .  	NUMBER	-0001	
RC_NO_ERROR  . . . . . . . . . .  	NUMBER	0000	
REQ_CRSR_POS . . . . . . . . . .  	NUMBER	0003	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-9


REQ_VID_MODE . . . . . . . . . .  	NUMBER	000F	
RESERVED . . . . . . . . . . . .  	NUMBER	0000	
RESULT_BUF . . . . . . . . . . .  	L BYTE	0ED3	CODE
RIGHT_ALIGN  . . . . . . . . . .  	NUMBER	0080	
ROM_BIOS . . . . . . . . . . . .  	NUMBER	0040	

SAVED_CHR  . . . . . . . . . . .  	L BYTE	0EE8	CODE
SELECT_SCAN  . . . . . . . . . .  	NUMBER	0030	
SETSTDIO . . . . . . . . . . . .  	NUMBER	0000	
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	
SGN_BIN_BYTE . . . . . . . . . .  	NUMBER	0012	
SGN_BIN_DWORD  . . . . . . . . .  	NUMBER	0032	
SGN_BIN_TYPE . . . . . . . . . .  	NUMBER	0002	
SGN_BIN_WORD . . . . . . . . . .  	NUMBER	0022	
SSTRING  . . . . . . . . . . . .  	NUMBER	0003	
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
SUBLIST  . . . . . . . . . . . .  	L DWORD	0EDB	CODE
SUBLIST_LENGTH . . . . . . . . .  	NUMBER	000B	
SUB_SIZE . . . . . . . . . . . .  	NUMBER	000B	
SWITCHES . . . . . . . . . . . .  	L WORD	0EC0	CODE
Switch_K . . . . . . . . . . . .  	V BYTE	0000	CODE	External
Switch_L . . . . . . . . . . . .  	V BYTE	0000	CODE	External
SWITCH_X . . . . . . . . . . . .  	V BYTE	0000	CODE	External
SWSW . . . . . . . . . . . . . .  	NUMBER	0001	
SYNONYM_PTR  . . . . . . . . . .  	L WORD	0ED5	CODE
SYSDISPMSG . . . . . . . . . . .  	N PROC	025D	CODE	Length = 0047
SYSLOADMSG . . . . . . . . . . .  	N PROC	00FD	CODE	Length = 00A8
SYSPARSE . . . . . . . . . . . .  	N PROC	087B	CODE	Length = 0159

TAB  . . . . . . . . . . . . . .  	NUMBER	0009	
TEXT_MODE  . . . . . . . . . . .  	NUMBER	0001	
THREE  . . . . . . . . . . . . .  	NUMBER	0003	
TIMEMSG  . . . . . . . . . . . .  	NUMBER	0000	
TIMESW . . . . . . . . . . . . .  	NUMBER	0000	
TIME_24_TYPE . . . . . . . . . .  	NUMBER	0006	
TIME_CTY_TYPE  . . . . . . . . .  	NUMBER	0005	
TIME_HHMMSSHH_24 . . . . . . . .  	NUMBER	0026	
TIME_HHMMSSHH_CTY  . . . . . . .  	NUMBER	0025	
TIME_HHMMSS_24 . . . . . . . . .  	NUMBER	0016	
TIME_HHMMSS_CTY  . . . . . . . .  	NUMBER	0015	
TIME_HHMM_24 . . . . . . . . . .  	NUMBER	0006	
TIME_HHMM_CTY  . . . . . . . . .  	NUMBER	0005	
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TURN_OFF . . . . . . . . . . . .  	NUMBER	00FE	
TURN_ON  . . . . . . . . . . . .  	NUMBER	FF01	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-10



UNKNOWN_CMD  . . . . . . . . . .  	NUMBER	8103	
UNLIMITED  . . . . . . . . . . .  	NUMBER	0000	
UNOCCUPIED . . . . . . . . . . .  	NUMBER	-0001	
UNSGN_BIN_BYTE . . . . . . . . .  	NUMBER	0011	
UNSGN_BIN_DWORD  . . . . . . . .  	NUMBER	0031	
UNSGN_BIN_TYPE . . . . . . . . .  	NUMBER	0001	
UNSGN_BIN_WORD . . . . . . . . .  	NUMBER	0021	
UTILITY_MSG_CLASS  . . . . . . .  	NUMBER	00FF	

VAL1SW . . . . . . . . . . . . .  	NUMBER	0000	
VAL2SW . . . . . . . . . . . . .  	NUMBER	0000	
VAL3SW . . . . . . . . . . . . .  	NUMBER	0000	
VGA_ACTIVE . . . . . . . . . . .  	NUMBER	0080	
VIDEO_MASK . . . . . . . . . . .  	NUMBER	007F	

X_SWITCH . . . . . . . . . . . .  	L BYTE	0EC9	CODE

$L1  . . . . . . . . . . . . . .  	L NEAR	0F8F	CODE
$L13 . . . . . . . . . . . . . .  	L NEAR	0F58	CODE
$L16 . . . . . . . . . . . . . .  	L NEAR	0F80	CODE
$L17 . . . . . . . . . . . . . .  	L NEAR	0F69	CODE
$L2  . . . . . . . . . . . . . .  	L NEAR	0EFA	CODE
$L21 . . . . . . . . . . . . . .  	L NEAR	0F7A	CODE
$L25 . . . . . . . . . . . . . .  	L NEAR	0F8E	CODE
$L5  . . . . . . . . . . . . . .  	L NEAR	0F13	CODE
$L6  . . . . . . . . . . . . . .  	L NEAR	0F83	CODE
$L9  . . . . . . . . . . . . . .  	L NEAR	0F30	CODE
$LL1 . . . . . . . . . . . . . .  	NUMBER	0001	
$LL16  . . . . . . . . . . . . .  	NUMBER	0010	
$MDO123  . . . . . . . . . . . .  	L NEAR	0305	CODE
$MDO139  . . . . . . . . . . . .  	L NEAR	036E	CODE
$MDO145  . . . . . . . . . . . .  	L NEAR	0391	CODE
$MDO165  . . . . . . . . . . . .  	L NEAR	03F9	CODE
$MDO167  . . . . . . . . . . . .  	L NEAR	0403	CODE
$MDO175  . . . . . . . . . . . .  	L NEAR	0430	CODE
$MDO215  . . . . . . . . . . . .  	L NEAR	04E7	CODE
$MDO219  . . . . . . . . . . . .  	L NEAR	050E	CODE
$MDO259  . . . . . . . . . . . .  	L NEAR	05FF	CODE
$MDO280  . . . . . . . . . . . .  	L NEAR	0670	CODE
$MDO291  . . . . . . . . . . . .  	L NEAR	069C	CODE
$MDO301  . . . . . . . . . . . .  	L NEAR	06CB	CODE
$MDO310  . . . . . . . . . . . .  	L NEAR	06F2	CODE
$MDO321  . . . . . . . . . . . .  	L NEAR	0735	CODE
$MEN104  . . . . . . . . . . . .  	L NEAR	02A3	CODE
$MEN107  . . . . . . . . . . . .  	L NEAR	02B9	CODE
$MEN110  . . . . . . . . . . . .  	L NEAR	02DA	CODE
$MEN119  . . . . . . . . . . . .  	L NEAR	0312	CODE
$MEN123  . . . . . . . . . . . .  	L NEAR	0312	CODE
$MEN128  . . . . . . . . . . . .  	L NEAR	0341	CODE
$MEN139  . . . . . . . . . . . .  	L NEAR	0385	CODE
$MEN145  . . . . . . . . . . . .  	L NEAR	03EF	CODE
$MEN146  . . . . . . . . . . . .  	L NEAR	03A9	CODE
$MEN150  . . . . . . . . . . . .  	L NEAR	03EA	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-11


$MEN154  . . . . . . . . . . . .  	L NEAR	03EA	CODE
$MEN165  . . . . . . . . . . . .  	L NEAR	04CF	CODE
$MEN167  . . . . . . . . . . . .  	L NEAR	0420	CODE
$MEN175  . . . . . . . . . . . .  	L NEAR	0449	CODE
$MEN180  . . . . . . . . . . . .  	L NEAR	045C	CODE
$MEN187  . . . . . . . . . . . .  	L NEAR	048F	CODE
$MEN188  . . . . . . . . . . . .  	L NEAR	047D	CODE
$MEN192  . . . . . . . . . . . .  	L NEAR	048F	CODE
$MEN199  . . . . . . . . . . . .  	L NEAR	04B5	CODE
$MEN20 . . . . . . . . . . . . .  	L NEAR	01A4	CODE
$MEN200  . . . . . . . . . . . .  	L NEAR	04AD	CODE
$MEN211  . . . . . . . . . . . .  	L NEAR	04C2	CODE
$MEN219  . . . . . . . . . . . .  	L NEAR	0574	CODE
$MEN220  . . . . . . . . . . . .  	L NEAR	0544	CODE
$MEN222  . . . . . . . . . . . .  	L NEAR	0544	CODE
$MEN224  . . . . . . . . . . . .  	L NEAR	0544	CODE
$MEN229  . . . . . . . . . . . .  	L NEAR	056C	CODE
$MEN230  . . . . . . . . . . . .  	L NEAR	055E	CODE
$MEN240  . . . . . . . . . . . .  	L NEAR	0594	CODE
$MEN243  . . . . . . . . . . . .  	L NEAR	05A1	CODE
$MEN247  . . . . . . . . . . . .  	L NEAR	05FC	CODE
$MEN248  . . . . . . . . . . . .  	L NEAR	05E0	CODE
$MEN25 . . . . . . . . . . . . .  	L NEAR	025C	CODE
$MEN252  . . . . . . . . . . . .  	L NEAR	05F8	CODE
$MEN259  . . . . . . . . . . . .  	L NEAR	061C	CODE
$MEN261  . . . . . . . . . . . .  	L NEAR	0610	CODE
$MEN27 . . . . . . . . . . . . .  	L NEAR	0251	CODE
$MEN292  . . . . . . . . . . . .  	L NEAR	06AF	CODE
$MEN307  . . . . . . . . . . . .  	L NEAR	06FB	CODE
$MEN314  . . . . . . . . . . . .  	L NEAR	071B	CODE
$MEN317  . . . . . . . . . . . .  	L NEAR	0742	CODE
$MEN321  . . . . . . . . . . . .  	L NEAR	0740	CODE
$MEN93 . . . . . . . . . . . . .  	L NEAR	0297	CODE
$MEN94 . . . . . . . . . . . . .  	L NEAR	0283	CODE
$MEN97 . . . . . . . . . . . . .  	L NEAR	0291	CODE
$MIF104  . . . . . . . . . . . .  	L NEAR	029F	CODE
$MIF107  . . . . . . . . . . . .  	L NEAR	02B6	CODE
$MIF110  . . . . . . . . . . . .  	L NEAR	02CA	CODE
$MIF112  . . . . . . . . . . . .  	L NEAR	02DA	CODE
$MIF113  . . . . . . . . . . . .  	L NEAR	02DA	CODE
$MIF117  . . . . . . . . . . . .  	L NEAR	02DF	CODE
$MIF119  . . . . . . . . . . . .  	L NEAR	0303	CODE
$MIF120  . . . . . . . . . . . .  	L NEAR	0301	CODE
$MIF127  . . . . . . . . . . . .  	L NEAR	0342	CODE
$MIF128  . . . . . . . . . . . .  	L NEAR	033F	CODE
$MIF129  . . . . . . . . . . . .  	L NEAR	033D	CODE
$MIF134  . . . . . . . . . . . .  	L NEAR	0362	CODE
$MIF135  . . . . . . . . . . . .  	L NEAR	0362	CODE
$MIF138  . . . . . . . . . . . .  	L NEAR	0385	CODE
$MIF141  . . . . . . . . . . . .  	L NEAR	0381	CODE
$MIF146  . . . . . . . . . . . .  	L NEAR	03A6	CODE
$MIF150  . . . . . . . . . . . .  	L NEAR	03C6	CODE
$MIF151  . . . . . . . . . . . .  	L NEAR	03C4	CODE
$MIF154  . . . . . . . . . . . .  	L NEAR	03D9	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-12


$MIF155  . . . . . . . . . . . .  	L NEAR	03D7	CODE
$MIF158  . . . . . . . . . . . .  	L NEAR	03EA	CODE
$MIF159  . . . . . . . . . . . .  	L NEAR	03EA	CODE
$MIF166  . . . . . . . . . . . .  	L NEAR	0420	CODE
$MIF169  . . . . . . . . . . . .  	L NEAR	041B	CODE
$MIF173  . . . . . . . . . . . .  	L NEAR	045C	CODE
$MIF174  . . . . . . . . . . . .  	L NEAR	045C	CODE
$MIF175  . . . . . . . . . . . .  	L NEAR	043D	CODE
$MIF180  . . . . . . . . . . . .  	L NEAR	0459	CODE
$MIF187  . . . . . . . . . . . .  	L NEAR	047F	CODE
$MIF188  . . . . . . . . . . . .  	L NEAR	047C	CODE
$MIF192  . . . . . . . . . . . .  	L NEAR	0486	CODE
$MIF194  . . . . . . . . . . . .  	L NEAR	048D	CODE
$MIF199  . . . . . . . . . . . .  	L NEAR	04B2	CODE
$MIF20 . . . . . . . . . . . . .  	L NEAR	01A0	CODE
$MIF200  . . . . . . . . . . . .  	L NEAR	04AD	CODE
$MIF211  . . . . . . . . . . . .  	L NEAR	04BE	CODE
$MIF216  . . . . . . . . . . . .  	L NEAR	04F6	CODE
$MIF220  . . . . . . . . . . . .  	L NEAR	051C	CODE
$MIF222  . . . . . . . . . . . .  	L NEAR	052A	CODE
$MIF224  . . . . . . . . . . . .  	L NEAR	053D	CODE
$MIF229  . . . . . . . . . . . .  	L NEAR	0560	CODE
$MIF23 . . . . . . . . . . . . .  	L NEAR	01BC	CODE
$MIF230  . . . . . . . . . . . .  	L NEAR	0551	CODE
$MIF234  . . . . . . . . . . . .  	L NEAR	0568	CODE
$MIF239  . . . . . . . . . . . .  	L NEAR	05A3	CODE
$MIF240  . . . . . . . . . . . .  	L NEAR	0593	CODE
$MIF243  . . . . . . . . . . . .  	L NEAR	059B	CODE
$MIF247  . . . . . . . . . . . .  	L NEAR	05E2	CODE
$MIF248  . . . . . . . . . . . .  	L NEAR	05DB	CODE
$MIF25 . . . . . . . . . . . . .  	L NEAR	0244	CODE
$MIF252  . . . . . . . . . . . .  	L NEAR	05EF	CODE
$MIF254  . . . . . . . . . . . .  	L NEAR	05F8	CODE
$MIF258  . . . . . . . . . . . .  	L NEAR	062B	CODE
$MIF259  . . . . . . . . . . . .  	L NEAR	0614	CODE
$MIF261  . . . . . . . . . . . .  	L NEAR	060D	CODE
$MIF269  . . . . . . . . . . . .  	L NEAR	062B	CODE
$MIF27 . . . . . . . . . . . . .  	L NEAR	024E	CODE
$MIF270  . . . . . . . . . . . .  	L NEAR	0627	CODE
$MIF274  . . . . . . . . . . . .  	L NEAR	0633	CODE
$MIF276  . . . . . . . . . . . .  	L NEAR	0655	CODE
$MIF278  . . . . . . . . . . . .  	L NEAR	0685	CODE
$MIF279  . . . . . . . . . . . .  	L NEAR	0685	CODE
$MIF281  . . . . . . . . . . . .  	L NEAR	0681	CODE
$MIF286  . . . . . . . . . . . .  	L NEAR	0698	CODE
$MIF287  . . . . . . . . . . . .  	L NEAR	0698	CODE
$MIF290  . . . . . . . . . . . .  	L NEAR	06C1	CODE
$MIF292  . . . . . . . . . . . .  	L NEAR	06AE	CODE
$MIF295  . . . . . . . . . . . .  	L NEAR	06BD	CODE
$MIF299  . . . . . . . . . . . .  	L NEAR	06E0	CODE
$MIF300  . . . . . . . . . . . .  	L NEAR	06E0	CODE
$MIF302  . . . . . . . . . . . .  	L NEAR	06DC	CODE
$MIF307  . . . . . . . . . . . .  	L NEAR	06EE	CODE
$MIF309  . . . . . . . . . . . .  	L NEAR	06FB	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-13


$MIF314  . . . . . . . . . . . .  	L NEAR	0717	CODE
$MIF317  . . . . . . . . . . . .  	L NEAR	0735	CODE
$MIF318  . . . . . . . . . . . .  	L NEAR	0733	CODE
$MIF93 . . . . . . . . . . . . .  	L NEAR	0293	CODE
$MIF94 . . . . . . . . . . . . .  	L NEAR	0280	CODE
$MIF97 . . . . . . . . . . . . .  	L NEAR	028D	CODE
$MLL149  . . . . . . . . . . . .  	L NEAR	03B3	CODE
$MLL168  . . . . . . . . . . . .  	L NEAR	0412	CODE
$MLL178  . . . . . . . . . . . .  	L NEAR	0445	CODE
$MLL214  . . . . . . . . . . . .  	L NEAR	04CF	CODE
$MSR175  . . . . . . . . . . . .  	L NEAR	045C	CODE
$MSR259  . . . . . . . . . . . .  	L NEAR	061D	CODE
$MXL3  . . . . . . . . . . . . .  	L NEAR	0469	CODE
$MXL4  . . . . . . . . . . . . .  	L NEAR	04CF	CODE
$MXL5  . . . . . . . . . . . . .  	L NEAR	0574	CODE
$M_1_FF_END  . . . . . . . . . .  	L BYTE	075E	CODE
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	074C	CODE
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	0748	CODE
$M_2_FF_END  . . . . . . . . . .  	L BYTE	077F	CODE
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	0770	CODE
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	076C	CODE
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
$M_ADD_CRLF  . . . . . . . . . .  	N PROC	034C	CODE	Length = 0017
$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	07AD	CODE
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	0795	CODE
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	078D	CODE
$M_A_0000AH_END  . . . . . . . .  	L BYTE	07C6	CODE
$M_A_0000AH_MSG  . . . . . . . .  	L BYTE	07AD	CODE
$M_A_0000AH_STRUC  . . . . . . .  	L BYTE	0791	CODE
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	FFFF	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	071C	CODE	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	01BF	CODE	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	01D2	CODE	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	0744	CODE
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	0768	CODE
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	0789	CODE
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
$M_CLS_1 . . . . . . . . . . . .  	N PROC	07C6	CODE	Global	Length = 000A
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	0388	CODE	Length = 0071
$M_CON_INP . . . . . . . . . . .  	NUMBER	-0001	
$M_COUNT . . . . . . . . . . . .  	NUMBER	0001	
$M_CRIT_ERR_MASK . . . . . . . .  	NUMBER	0001	
$M_CRIT_HI . . . . . . . . . . .  	NUMBER	0027	
$M_CRIT_LO . . . . . . . . . . .  	NUMBER	0013	
$M_CRLF_SIZE . . . . . . . . . .  	NUMBER	0002	
$M_CR_LF . . . . . . . . . . . .  	NUMBER	0A0D	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-14


$M_DATE_MASK . . . . . . . . . .  	NUMBER	0010	
$M_DBCS_TERM . . . . . . . . . .  	NUMBER	0000	
$M_DCOUNT  . . . . . . . . . . .  	NUMBER	0001	
$M_DEF_DATE_FORM . . . . . . . .  	NUMBER	0000	
$M_DEF_DATE_SEP  . . . . . . . .  	NUMBER	002D	
$M_DEF_DECI_SEP  . . . . . . . .  	NUMBER	002E	
$M_DEF_TIME_FORM . . . . . . . .  	NUMBER	0001	
$M_DEF_TIME_SEP  . . . . . . . .  	NUMBER	003A	
$M_DISPLAY_$_STRING  . . . . . .  	N PROC	02E0	CODE	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	0315	CODE	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	03F9	CODE	Length = 00DE
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	063A	CODE	Length = 00C6
$M_DISPLAY_STRING  . . . . . . .  	N PROC	02A4	CODE	Length = 003C
$M_DWORD . . . . . . . . . . . .  	NUMBER	0030	
$M_END . . . . . . . . . . . . .  	NUMBER	0000	
$M_EXTPAR_TYPE . . . . . . . . .  	NUMBER	0008	
$M_EXT_CLS . . . . . . . . . . .  	NUMBER	FFFF	
$M_EXT_ERR_FLAG  . . . . . . . .  	NUMBER	FFFF	
$M_EXT_PAR_REPLACE . . . . . . .  	N PROC	04D7	CODE	Length = 0031
$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	05BC	CODE	Length = 007E
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	0700	CODE	Length = 001C
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	01A5	CODE	Length = 001A
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	0343	CODE	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	N PROC	0508	CODE	Global	Length = 00A5
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	FFFF	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0004	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	0363	CODE	Length = 0025
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	N PROC	075E	CODE	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	N PROC	077F	CODE	Global	Length = 000A
$M_NEG_SIGN  . . . . . . . . . .  	NUMBER	002D	
$M_NEXT_DBCS_VECTOR  . . . . . .  	NUMBER	0002	
$M_NO_CRLF_MASK  . . . . . . . .  	NUMBER	0080	
$M_NO_HANDLE . . . . . . . . . .  	NUMBER	-0001	
$M_NULL  . . . . . . . . . . . .  	NUMBER	0000	
$M_NUM_CLS . . . . . . . . . . .  	NUMBER	0001	
$M_ONE_REPLACE . . . . . . . . .  	NUMBER	0001	
$M_PARSE_FLAG  . . . . . . . . .  	NUMBER	FFFF	
$M_PAR_CLS . . . . . . . . . . .  	NUMBER	FFFF	
$M_PM  . . . . . . . . . . . . .  	NUMBER	0070	
$M_REPLACE . . . . . . . . . . .  	NUMBER	FFFF	
$M_REPL_DONE . . . . . . . . . .  	NUMBER	0000	
$M_RES_ADDRS_SZ  . . . . . . . .  	NUMBER	0085	
$M_RT  . . . . . . . . . . . . .  	L BYTE	0000	CODE	Global
$M_SECOND_THOU . . . . . . . . .  	NUMBER	0006	
$M_SERVICE . . . . . . . . . . .  	NUMBER	0000	
$M_SET_LEN_IN_CX . . . . . . . .  	N PROC	05AD	CODE	Length = 000F
$M_SINGLE_CHAR . . . . . . . . .  	NUMBER	0001	
$M_SIZE_MASK . . . . . . . . . .  	NUMBER	0030	
$M_SL  . . . . . . . . . . . . .  	TEXT  DS:[SI]		
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-15


$M_SPACE . . . . . . . . . . . .  	NUMBER	0020	
$M_SPACE_HYP . . . . . . . . . .  	NUMBER	2D20	
$M_SPECIAL_CASE  . . . . . . . .  	NUMBER	0030	
$M_SPECIAL_MSG_NUM . . . . . . .  	NUMBER	FFFF	
$M_STRUC . . . . . . . . . . . .  	NUMBER	0000	
$M_SUBS  . . . . . . . . . . . .  	NUMBER	0000	
$M_TEMP_BUF_SZ . . . . . . . . .  	NUMBER	0040	
$M_TERMINATING_FLAG  . . . . . .  	NUMBER	-0001	
$M_THIRD_THOU  . . . . . . . . .  	NUMBER	0009	
$M_TIMEDATE_PAD  . . . . . . . .  	NUMBER	0030	
$M_TIME_MASK . . . . . . . . . .  	NUMBER	0001	
$M_TYPE_MASK . . . . . . . . . .  	NUMBER	000F	
$M_UNLIM_W . . . . . . . . . . .  	NUMBER	0000	
$M_VERSION_CHECK . . . . . . . .  	N PROC	022E	CODE	Length = 002F
$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
$NOPS  . . . . . . . . . . . . .  	NUMBER	0003	
$P_0099  . . . . . . . . . . . .  	N PROC	0C1E	CODE	Length = 000E
$P_0099ERR . . . . . . . . . . .  	L NEAR	0C2A	CODE
$P_ASCII80 . . . . . . . . . . .  	NUMBER	0080	
$P_BRIDGE  . . . . . . . . . . .  	L NEAR	0B49	CODE
$P_CAPS_RET  . . . . . . . . . .  	L NEAR	0C1D	CODE
$P_CAP_CHAR  . . . . . . . . . .  	NUMBER	0002	
$P_CAP_FILE  . . . . . . . . . .  	NUMBER	0001	
$P_CHAR_CAP_PTR  . . . . . . . .  	L BYTE	0867	CODE
$P_CHECK_MATCH_FLAGS . . . . . .  	N PROC	0B21	CODE	Length = 006A
$P_CHKDFIN . . . . . . . . . . .  	L NEAR	0E1F	CODE
$P_CHK_DBCS  . . . . . . . . . .  	N PROC	0E56	CODE	Length = 0056
$P_CHK_DELIM . . . . . . . . . .  	N PROC	0DD7	CODE	Length = 0061
$P_CHK_DELIM00 . . . . . . . . .  	L NEAR	0DF1	CODE
$P_CHK_DELIM01 . . . . . . . . .  	L NEAR	0E01	CODE
$P_CHK_DELIM_EXIT  . . . . . . .  	L NEAR	0E1F	CODE
$P_CHK_DELIM_EXIT0 . . . . . . .  	L NEAR	0E22	CODE
$P_CHK_DELIM_LOOP  . . . . . . .  	L NEAR	0E15	CODE
$P_CHK_DELIM_NZ  . . . . . . . .  	L NEAR	0E1D	CODE
$P_CHK_EOL . . . . . . . . . . .  	N PROC	0DA1	CODE	Length = 0036
$P_CHK_EOL_EXIT  . . . . . . . .  	L NEAR	0DD4	CODE
$P_CHK_EOL_LOOP  . . . . . . . .  	L NEAR	0DCA	CODE
$P_CHK_EOL_NZ  . . . . . . . . .  	L NEAR	0DD2	CODE
$P_CHK_IF_DATA_REQUIRED  . . . .  	L NEAR	0A72	CODE
$P_CHK_KEY_CONTROL . . . . . . .  	N PROC	0A06	CODE	Length = 0002
$P_CHK_POS_CONTROL . . . . . . .  	N PROC	09D4	CODE	Length = 0032
$P_CHK_SWITCH  . . . . . . . . .  	N PROC	0E38	CODE	Length = 001E
$P_CHK_SW_CONTROL  . . . . . . .  	N PROC	0A39	CODE	Length = 0063
$P_CHK_SW_ERR0 . . . . . . . . .  	L NEAR	0A8E	CODE
$P_CHK_SW_EXIT . . . . . . . . .  	L NEAR	0A91	CODE
$P_CHK_SW_SINGLE_EXIT  . . . . .  	L NEAR	0A9B	CODE
$P_CMPX_S  . . . . . . . . . . .  	NUMBER	0400	
$P_COLON . . . . . . . . . . . .  	NUMBER	003A	
$P_COLON_IS_NOT_NECESSARY  . . .  	NUMBER	0020	
$P_COLON_PERIOD  . . . . . . . .  	NUMBER	0001	
$P_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$P_COMPLEX . . . . . . . . . . .  	NUMBER	0004	
$P_CPC00 . . . . . . . . . . . .  	L NEAR	09E2	CODE
$P_CPC01 . . . . . . . . . . . .  	L NEAR	0A01	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-16


$P_CPC02 . . . . . . . . . . . .  	L NEAR	09F6	CODE
$P_CPC_EXIT  . . . . . . . . . .  	L NEAR	0A04	CODE
$P_CR  . . . . . . . . . . . . .  	NUMBER	000D	
$P_CSW00 . . . . . . . . . . . .  	L NEAR	0A88	CODE
$P_DATE_DMY  . . . . . . . . . .  	NUMBER	0001	
$P_DATE_F  . . . . . . . . . . .  	NUMBER	0007	
$P_DATE_MDY  . . . . . . . . . .  	NUMBER	0000	
$P_DATE_S  . . . . . . . . . . .  	NUMBER	1000	
$P_DATE_YMD  . . . . . . . . . .  	NUMBER	0002	
$P_DBCS00  . . . . . . . . . . .  	L NEAR	0E88	CODE
$P_DBCS01  . . . . . . . . . . .  	L NEAR	0EA3	CODE
$P_DBCS02  . . . . . . . . . . .  	L NEAR	0E7E	CODE
$P_DBCSEV_OFF  . . . . . . . . .  	L WORD	07D9	CODE
$P_DBCSEV_SEG  . . . . . . . . .  	L WORD	07DB	CODE
$P_DBCS_EXIT . . . . . . . . . .  	L NEAR	0EA8	CODE
$P_DBCS_LOOP . . . . . . . . . .  	L NEAR	0E92	CODE
$P_DBSP1 . . . . . . . . . . . .  	NUMBER	0081	
$P_DBSP2 . . . . . . . . . . . .  	NUMBER	0040	
$P_DCC00 . . . . . . . . . . . .  	L NEAR	0BF0	CODE
$P_DCC01 . . . . . . . . . . . .  	L NEAR	0C0C	CODE
$P_DCC_GO  . . . . . . . . . . .  	L NEAR	0BE0	CODE
$P_DCS00 . . . . . . . . . . . .  	L NEAR	0BC9	CODE
$P_DCS01 . . . . . . . . . . . .  	L NEAR	0BCA	CODE
$P_DCS_EXIT  . . . . . . . . . .  	L NEAR	0BCD	CODE
$P_DCS_LOOP  . . . . . . . . . .  	L NEAR	0BB5	CODE
$P_DOSTBL_BL . . . . . . . . . .  	NUMBER	0005	
$P_DOSTBL_CHAR . . . . . . . . .  	NUMBER	0002	
$P_DOSTBL_DEF  . . . . . . . . .  	NUMBER	-0001	
$P_DOSTBL_FILE . . . . . . . . .  	NUMBER	0004	
$P_DOS_GETEV . . . . . . . . . .  	NUMBER	6300	
$P_DOS_GET_CDI . . . . . . . . .  	NUMBER	3800	
$P_DOS_GET_TBL . . . . . . . . .  	NUMBER	0065	
$P_DO_CAPS_CHAR  . . . . . . . .  	N PROC	0BD0	CODE	Length = 004E
$P_DO_CAPS_STRING  . . . . . . .  	N PROC	0BB1	CODE	Length = 001F
$P_DQUOTE  . . . . . . . . . . .  	NUMBER	0022	
$P_DRIVE . . . . . . . . . . . .  	NUMBER	0006	
$P_DRV_ONLY  . . . . . . . . . .  	NUMBER	0100	
$P_DRV_ONLY_EXIT . . . . . . . .  	L NEAR	0D65	CODE
$P_DX  . . . . . . . . . . . . .  	L WORD	07D6	CODE
$P_EOL . . . . . . . . . . . . .  	NUMBER	0000	
$P_EQU . . . . . . . . . . . . .  	NUMBER	0001	
$P_ERROR_FILESPEC  . . . . . . .  	NUMBER	0001	
$P_ERR_FLAG  . . . . . . . . . .  	L BYTE	087A	CODE
$P_EXIT_AT_EXTRA . . . . . . . .  	L NEAR	0D9F	CODE
$P_EXTRA . . . . . . . . . . . .  	NUMBER	0020	
$P_FILEF00 . . . . . . . . . . .  	L NEAR	0D46	CODE
$P_FILEF01 . . . . . . . . . . .  	L NEAR	0D42	CODE
$P_FILEF02 . . . . . . . . . . .  	L NEAR	0D56	CODE
$P_FILEF03 . . . . . . . . . . .  	L NEAR	0D2D	CODE
$P_FILEF_ERR . . . . . . . . . .  	L NEAR	0D17	CODE
$P_FILEF_LOOP0 . . . . . . . . .  	L NEAR	0CFD	CODE
$P_FILEF_LOOP1 . . . . . . . . .  	L NEAR	0D2F	CODE
$P_FILEF_RLT . . . . . . . . . .  	L NEAR	0D54	CODE
$P_FILESP_CHAR . . . . . . . . .  	L BYTE	0871	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-17


$P_FILESP_CHK  . . . . . . . . .  	N PROC	0D66	CODE	Length = 0015
$P_FILESP_EXIT . . . . . . . . .  	L NEAR	0D78	CODE
$P_FILESP_LEN  . . . . . . . . .  	NUMBER	0009	
$P_FILESP_LOOP . . . . . . . . .  	L NEAR	0D6F	CODE
$P_FILE_CAP_PTR  . . . . . . . .  	L BYTE	086C	CODE
$P_FILE_FORMAT . . . . . . . . .  	N PROC	0CF5	CODE	Length = 0071
$P_FILE_SPC  . . . . . . . . . .  	NUMBER	0200	
$P_FILE_SPEC . . . . . . . . . .  	NUMBER	0005	
$P_FILL_RESULT . . . . . . . . .  	N PROC	0A9C	CODE	Length = 0085
$P_FIN . . . . . . . . . . . . .  	L NEAR	08B1	CODE
$P_FLAGS . . . . . . . . . . . .  	L WORD	07DD	CODE
$P_FLAGS1  . . . . . . . . . . .  	BYTE	07DD	CODE
$P_FLAGS2  . . . . . . . . . . .  	BYTE	07DE	CODE
$P_FOUND_SYNONYM . . . . . . . .  	L WORD	07E5	CODE
$P_IG_COLON  . . . . . . . . . .  	NUMBER	0010	
$P_I_HAVE_DELIM  . . . . . . . .  	NUMBER	0001	
$P_I_HAVE_EOL  . . . . . . . . .  	NUMBER	0002	
$P_I_USE_DEFAULT . . . . . . . .  	NUMBER	0000	
$P_KEYORSW_EXIT  . . . . . . . .  	L NEAR	0A2A	CODE
$P_KEYORSW_FOUND . . . . . . . .  	L NEAR	0A24	CODE
$P_KEYORSW_LOOP  . . . . . . . .  	L NEAR	0A17	CODE
$P_KEYORSW_NOT_FOUND . . . . . .  	L NEAR	0A21	CODE
$P_KEYORSW_PTR . . . . . . . . .  	L WORD	07E1	CODE
$P_KEYWORD . . . . . . . . . . .  	NUMBER	003D	
$P_KEY_CMP . . . . . . . . . . .  	NUMBER	0008	
$P_KEY_MANAGER . . . . . . . . .  	L NEAR	0983	CODE
$P_KEY_MGR_LOOP  . . . . . . . .  	L NEAR	09A2	CODE
$P_KEY_NOT_FOUND . . . . . . . .  	L NEAR	09B0	CODE
$P_LEN_PARMS . . . . . . . . . .  	NUMBER	0004	
$P_LEN_RANGE . . . . . . . . . .  	NUMBER	0009	
$P_LEN_STRING  . . . . . . . . .  	NUMBER	0003	
$P_LEN_VALUE . . . . . . . . . .  	NUMBER	0005	
$P_LF  . . . . . . . . . . . . .  	NUMBER	000A	
$P_LIST_IDX  . . . . . . . . . .  	NUMBER	0002	
$P_LPAREN  . . . . . . . . . . .  	NUMBER	0028	
$P_MAKE_LOWER  . . . . . . . . .  	NUMBER	0020	
$P_MAKE_UPPER  . . . . . . . . .  	NUMBER	00DF	
$P_MAT . . . . . . . . . . . . .  	L NEAR	0B47	CODE
$P_MATCH03 . . . . . . . . . . .  	L NEAR	0B4C	CODE
$P_MATCH07 . . . . . . . . . . .  	L NEAR	0B63	CODE
$P_MATCH09 . . . . . . . . . . .  	L NEAR	0B72	CODE
$P_MATCH2_EXIT . . . . . . . . .  	L NEAR	0B89	CODE
$P_MATCH_EXIT  . . . . . . . . .  	L NEAR	0B72	CODE
$P_MBP_EXIT  . . . . . . . . . .  	L NEAR	0A37	CODE
$P_MBP_LOOP  . . . . . . . . . .  	L NEAR	0A2D	CODE
$P_MINUS . . . . . . . . . . . .  	NUMBER	002D	
$P_MOVEBP_NUL  . . . . . . . . .  	N PROC	0A2D	CODE	Length = 000C
$P_NEG . . . . . . . . . . . . .  	NUMBER	0002	
$P_NON_DBCS  . . . . . . . . . .  	L NEAR	0EA7	CODE
$P_NOT_APPLICABLE  . . . . . . .  	L NEAR	0CC8	CODE
$P_NOT_IN_KEY  . . . . . . . . .  	NUMBER	0004	
$P_NOT_IN_STR  . . . . . . . . .  	NUMBER	0008	
$P_NOT_IN_SW . . . . . . . . . .  	NUMBER	0003	
$P_NOT_IN_VAL  . . . . . . . . .  	NUMBER	0007	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-18


$P_NO_ERROR  . . . . . . . . . .  	NUMBER	0000	
$P_NO_NRNG . . . . . . . . . . .  	NUMBER	0000	
$P_NO_SET_EXTRA  . . . . . . . .  	L NEAR	0E34	CODE
$P_NO_TAG  . . . . . . . . . . .  	NUMBER	00FF	
$P_NULL  . . . . . . . . . . . .  	NUMBER	0000	
$P_NUMBER  . . . . . . . . . . .  	NUMBER	0001	
$P_NUM_VAL . . . . . . . . . . .  	NUMBER	8000	
$P_NVAL_NONE . . . . . . . . . .  	NUMBER	0000	
$P_NVAL_RANGE  . . . . . . . . .  	NUMBER	0001	
$P_NVAL_STRING . . . . . . . . .  	NUMBER	0003	
$P_NVAL_VALUE  . . . . . . . . .  	NUMBER	0002	
$P_OPTIONAL  . . . . . . . . . .  	NUMBER	0001	
$P_OP_MISSING  . . . . . . . . .  	NUMBER	0002	
$P_ORDINAL . . . . . . . . . . .  	L WORD	07D0	CODE
$P_OUT_OF_RANGE  . . . . . . . .  	NUMBER	0006	
$P_PACK_END  . . . . . . . . . .  	L NEAR	090C	CODE
$P_PACK_END_BACKUP_SI  . . . . .  	L NEAR	08E6	CODE
$P_PACK_END_BY_EOL . . . . . . .  	L NEAR	090B	CODE
$P_PACK_LOOP . . . . . . . . . .  	L NEAR	08C9	CODE
$P_PERIOD  . . . . . . . . . . .  	NUMBER	002E	
$P_PERIOD_ONLY . . . . . . . . .  	NUMBER	0002	
$P_PL00  . . . . . . . . . . . .  	L NEAR	08FE	CODE
$P_PL01  . . . . . . . . . . . .  	L NEAR	08F1	CODE
$P_PLUS  . . . . . . . . . . . .  	NUMBER	002B	
$P_POSITIONAL_MANAGER  . . . . .  	L NEAR	092F	CODE
$P_QUOTED_STRING . . . . . . . .  	NUMBER	0009	
$P_QU_STRING . . . . . . . . . .  	NUMBER	0080	
$P_RC  . . . . . . . . . . . . .  	L WORD	07D2	CODE
$P_RCOL00  . . . . . . . . . . .  	L NEAR	0BA5	CODE
$P_RCOL01  . . . . . . . . . . .  	L NEAR	0BAB	CODE
$P_RCOL_EXIT . . . . . . . . . .  	L NEAR	0BAE	CODE
$P_RCOL_LOOP . . . . . . . . . .  	L NEAR	0B8D	CODE
$P_RC_EOL  . . . . . . . . . . .  	NUMBER	-0001	
$P_REMOVE_COLON  . . . . . . . .  	N PROC	0B8B	CODE	Length = 0026
$P_REPEAT  . . . . . . . . . . .  	NUMBER	0002	
$P_RETURN_TO_CALLER  . . . . . .  	L NEAR	09B7	CODE
$P_RETURN_TO_CALLER0 . . . . . .  	L NEAR	09B7	CODE
$P_RLT00 . . . . . . . . . . . .  	L NEAR	0AC5	CODE
$P_RLT01 . . . . . . . . . . . .  	L NEAR	0ACF	CODE
$P_RLT02 . . . . . . . . . . . .  	L NEAR	0ABB	CODE
$P_RLT03 . . . . . . . . . . . .  	L NEAR	0AE1	CODE
$P_RLT04 . . . . . . . . . . . .  	L NEAR	0AB7	CODE
$P_RLT05 . . . . . . . . . . . .  	L NEAR	0AF4	CODE
$P_RLT_CAP00 . . . . . . . . . .  	L NEAR	0B08	CODE
$P_RLT_CAP01 . . . . . . . . . .  	L NEAR	0B14	CODE
$P_RLT_CAP02 . . . . . . . . . .  	L NEAR	0B11	CODE
$P_RLT_EXIT  . . . . . . . . . .  	L NEAR	0B1F	CODE
$P_RM_COLON  . . . . . . . . . .  	NUMBER	0010	
$P_RPAREN  . . . . . . . . . . .  	NUMBER	0029	
$P_SAVESI_CMPX . . . . . . . . .  	L WORD	07DF	CODE
$P_SAVE_EOB  . . . . . . . . . .  	L WORD	07E3	CODE
$P_SCOM00  . . . . . . . . . . .  	L NEAR	0C9C	CODE
$P_SCOM01  . . . . . . . . . . .  	L NEAR	0CAF	CODE
$P_SCOM02  . . . . . . . . . . .  	L NEAR	0CDC	CODE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-19


$P_SCOM03  . . . . . . . . . . .  	L NEAR	0C8E	CODE
$P_SCOM04  . . . . . . . . . . .  	L NEAR	0C78	CODE
$P_SCOM05  . . . . . . . . . . .  	L NEAR	0C8B	CODE
$P_SCOM_DIFFER . . . . . . . . .  	L NEAR	0CE7	CODE
$P_SCOM_DIFFER0  . . . . . . . .  	L NEAR	0CB1	CODE
$P_SCOM_EXIT . . . . . . . . . .  	L NEAR	0CF0	CODE
$P_SCOM_LOOP . . . . . . . . . .  	L NEAR	0C58	CODE
$P_SCOM_SAME . . . . . . . . . .  	L NEAR	0CEA	CODE
$P_SEARCH_KEYORSW  . . . . . . .  	N PROC	0A08	CODE	Length = 0025
$P_SIGNED  . . . . . . . . . . .  	NUMBER	0080	
$P_SIM00 . . . . . . . . . . . .  	L NEAR	0C3F	CODE
$P_SIM01 . . . . . . . . . . . .  	L NEAR	0C3F	CODE
$P_SIMPLE_S  . . . . . . . . . .  	NUMBER	2000	
$P_SIMPLE_STRING . . . . . . . .  	N PROC	0C2C	CODE	Length = 0026
$P_SIM_EXIT  . . . . . . . . . .  	L NEAR	0C48	CODE
$P_SIM_EXIT0 . . . . . . . . . .  	L NEAR	0C4A	CODE
$P_SINGLE_EXIT . . . . . . . . .  	L NEAR	09D2	CODE
$P_SI_SAVE . . . . . . . . . . .  	L WORD	07D4	CODE
$P_SKIP_DELIM  . . . . . . . . .  	N PROC	0D7B	CODE	Length = 0026
$P_SKIP_DELIM_CY . . . . . . . .  	L NEAR	0D99	CODE
$P_SKIP_DELIM_EXIT . . . . . . .  	L NEAR	0D9D	CODE
$P_SKIP_DELIM_LOOP . . . . . . .  	L NEAR	0D7B	CODE
$P_SKIP_DELIM_NCY  . . . . . . .  	L NEAR	0D9C	CODE
$P_SLASH . . . . . . . . . . . .  	NUMBER	002F	
$P_SNUM_VAL  . . . . . . . . . .  	NUMBER	4000	
$P_SPACE . . . . . . . . . . . .  	NUMBER	0020	
$P_START . . . . . . . . . . . .  	L NEAR	08B5	CODE
$P_STRING  . . . . . . . . . . .  	NUMBER	0003	
$P_STRING_BUF  . . . . . . . . .  	L BYTE	07E7	CODE	Length = 0080
$P_STRING_BUF_END  . . . . . . .  	NEAR	0867	CODE
$P_STRING_COMP . . . . . . . . .  	N PROC	0C52	CODE	Length = 00A3
$P_STRUC_L1  . . . . . . . . . .  	L NEAR	0E55	CODE
$P_STRUC_L12 . . . . . . . . . .  	L NEAR	0E54	CODE
$P_STRUC_L2  . . . . . . . . . .  	L NEAR	0E4A	CODE
$P_STRUC_L5  . . . . . . . . . .  	L NEAR	0E47	CODE
$P_SW  . . . . . . . . . . . . .  	NUMBER	0040	
$P_SWITCH  . . . . . . . . . . .  	NUMBER	002F	
$P_SW_CMP  . . . . . . . . . . .  	NUMBER	0010	
$P_SW_MANAGER  . . . . . . . . .  	L NEAR	0957	CODE
$P_SW_MGR_LOOP . . . . . . . . .  	L NEAR	096C	CODE
$P_SW_NOT_FOUND  . . . . . . . .  	L NEAR	097A	CODE
$P_SYNTAX  . . . . . . . . . . .  	NUMBER	0009	
$P_TAB . . . . . . . . . . . . .  	NUMBER	0009	
$P_TERMINATOR  . . . . . . . . .  	L BYTE	07D8	CODE
$P_TIME12  . . . . . . . . . . .  	NUMBER	0004	
$P_TIME12AM  . . . . . . . . . .  	NUMBER	0001	
$P_TIME_AGAIN  . . . . . . . . .  	NUMBER	0002	
$P_TIME_F  . . . . . . . . . . .  	NUMBER	0008	
$P_TIME_S  . . . . . . . . . . .  	NUMBER	0800	
$P_TOO_MANY  . . . . . . . . . .  	NUMBER	0001	
$P_TOO_MANY_ERROR  . . . . . . .  	L NEAR	094E	CODE
??0000 . . . . . . . . . . . . .  	L NEAR	05A5	CODE
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  parser		
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:28
PARSE CODE AND CONTROL BLOCKS FOR ANSI.SYS                  Symbols-20


@VERSION . . . . . . . . . . . .  	TEXT  510		


  15176 Source  Lines
  21014 Total   Lines
   1118 Symbols

  44466 + 102959 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
