Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-1


				page	60,132								 ;AN000;
				name	_msgret 							 ;AN000;
				title	C	to Message Retriever					 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
				;									 ;AN000;
				;	MODULE: 	_msgret 					 ;AN000;
				;									 ;AN000;
				;	PURPOSE:	Supplies an interface between C programs and	 ;AN000;
				;			the DOS message retriever			 ;AN000;
				;									 ;AN000;
				;	CALLING FORMAT: 						 ;AN000;
				;			sysloadmsg(&inregs,&outregs);			 ;AN000;
				;			sysgetmsg(&inregs,&outregs);			 ;AN000;
				;			sysdispmsg(&inregs,&outregs);			 ;AN000;
				;									 ;AN000;
				;									 ;AN000;
				;	DATE:		5-21-87 					 ;AN000;
				;	Modified:	6/18/87 					 ;AN000;
				;									 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
				;									 ;AN000;
					INCLUDE SYSMSG.INC		;PERMIT SYSTEM MESSAGE HANDLER DEFINITION ;AN000;
			     C		PAGE	,132
			     C		SUBTTL	DOS - Message Retriever - SYSTEM CONTROL file
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; DOS -- Message Retriever
			     C	;; (c) Copyright 1988 Microsoft
			     C	;;
			     C	;; File Name:	SYSMSG.INC
			     C	;; ----------
			     C	;;
			     C	;; Description: Message retriever functions are included into source code
			     C	;; ------------ by referencing a MSG_SERVICES macro. That macro is defined
			     C	;;		here as well as the logic to include necessary .ASM and .INC
			     C	;;		files.
			     C	;;
			     C	;;
			     C	;; Documentation Reference:
			     C	;; ------------------------
			     C	;;		DOS -Message Retriever I0 Document - Feb. ?? 1987
			     C	;;		DOS -Message Retriever I1 Document - Mar. ?? 1987
			     C	;;		DOS -Message Retriever I2 Document - Mar. ?? 1987
			     C	;;		DOS -Final Functional Specification Document - Mar ?? 1987
			     C	;;
			     C	;; Procedures Contained in This File:
			     C	;; ---------------------------------
			     C	;;		None
			     C	;;
			     C	;; Include Files Required:
			     C	;; -----------------------
			     C	;;		MSGSERV.INC	   := All message services
			     C	;;		????		   := ????
			     C	;;
			     C	;; External Procedure References:
			     C	;; ------------------------------
			     C	;;		None
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-2
DOS - Message Retriever - SYSTEM CONTROL file               

			     C	;;
			     C	;; Linkage Instructions:
			     C	;; --------------------
			     C	;;		None
			     C	;;
			     C	;; Change History:
			     C	;; ---------------
			     C	;;		CREATED 	March, 1987	RPS
			     C	;;
			     C	;; Psuedocode:
			     C	;; -----------
			     C	;;		None
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;;
			     C	INCLUDE        VERSIONA.INC	       ;;AN003;;
			     C	
 = 0004                      C	major_version	    equ     4	    ;Major DOS version
 = 0000                      C	minor_version	    equ     00	    ;Minor DOS Version
			     C	
 = 0004                      C	expected_version    equ     (MINOR_VERSION SHL 8)+MAJOR_VERSION
			     C	
 = 0005                      C	alt_major_version    equ     5	    ;Major DOS version
 = 001A                      C	alt_minor_version    equ     26	    ;Minor DOS Version
			     C	
 = 1A05                      C	alt_expected_version    equ     (alt_minor_version SHL 8) + alt_major_version
			     C	
 = 0005                      C	new_major_version    equ     5	    ;Major DOS version
 = 0026                      C	new_minor_version    equ     38	    ;Minor DOS Version
 = 2605                      C	new_expected_version    equ     (new_minor_version SHL 8) + new_major_version
			     C	
			     C	
			     C	       ;******************************
			     C	       ;Each assembler program should:
			     C	       ;  mov ah,030h			;DOS Get Version function
			     C	       ;  int 021h			;Version ret. in AX,minor version first
			     C	       ;  cmp ax,expected_version	;ALL utilities should check for an
			     C	       ;  jne error_handler		; EXACT version match.
			     C	       ;******************************
			     C	
			     C	
 = 0000                      C	FALSE	       = 0		       ;;
 = FFFF                      C	TRUE	       = NOT FALSE	       ;;    List message services and flags
			     C					       ;;
			     C	
			     C	; Control Characters For Message Skeleton file
			     C	
 = 0000                      C	NULL			EQU	00H    ;; Null
 = 0007                      C	BELL			EQU	07H    ;; Bell
 = 0009                      C	TAB			EQU	09H    ;; Tab
 = 000A                      C	LF			EQU	0AH    ;; Line Feed
 = 000B                      C	HOME			EQU	0BH    ;; Home
 = 000C                      C	FORMFD			EQU	0CH    ;; Form Feed
 = 000D                      C	CR			EQU	0DH    ;; Carriage Return
 = 003A                      C	COLON			EQU	3AH    ;; Colon
			     C	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-3
DOS - Message Retriever - SYSTEM CONTROL file               

			     C	; SYSDISPMSG and SYSGETMSG Equates
			     C	
 = 0000                      C	MSG_SER_CLASS		EQU	00H    ;; Message Service Class (reserved)
 = 0001                      C	EXT_ERR_CLASS		EQU	01H    ;; DOS Extended error class
 = 0002                      C	PARSE_ERR_CLASS 	EQU	02H    ;; Parse error class
 = 00FF                      C	UTILITY_MSG_CLASS	EQU	0FFH   ;; Utility message class
			     C	
 = FFFF                      C	NO_HANDLE		EQU	0FFFFH ;; No handle specified (Use DOS functions 01H-09H only)
			     C	
 = 0000                      C	NO_REPLACE		EQU	0000H  ;; No replacable parameters
			     C	
			     C	; SUBLIST Equates
			     C	
 = 000B                      C	  Sublist_Length	EQU	11     ;; Length of sublist structure
 = 0000                      C	  Reserved		EQU	0      ;; Reserved byte field
			     C	
 = 0000                      C	  Left_Align		EQU	0      ;;00xxxxxx
 = 0080                      C	  Right_Align		EQU	80h    ;;10xxxxxx
			     C	
 = 0000                      C	  Char_type		EQU	0      ;;axxx0000 - Character type
 = 0000                      C	  Char_Field_Char	EQU	0      ;;a0000000
 = 0010                      C	  Char_Field_ASCIIZ	EQU	10h    ;;a0010000
			     C	
 = 0001                      C	  Unsgn_Bin_Type	EQU	01h    ;;axxx0001 - Unsigned Binary to Decimal character
 = 0011                      C	  Unsgn_Bin_Byte	EQU	11h    ;;a0010001
 = 0021                      C	  Unsgn_Bin_Word	EQU	21h    ;;a0100001
 = 0031                      C	  Unsgn_Bin_DWord	EQU	31h    ;;a0110001
			     C	
 = 0002                      C	  Sgn_Bin_Type		EQU	02h    ;;axxx0010 - Signed Binary to Decimal character
 = 0012                      C	  Sgn_Bin_Byte		EQU	12h    ;;a0010010
 = 0022                      C	  Sgn_Bin_Word		EQU	22h    ;;a0100010
 = 0032                      C	  Sgn_Bin_DWord 	EQU	32h    ;;a0110010
			     C	
 = 0003                      C	  Bin_Hex_Type		EQU	03h    ;;axxx0011 - Unsigned Binary to Hexidecimal character
 = 0013                      C	  Bin_Hex_Byte		EQU	13h    ;;a0010011
 = 0023                      C	  Bin_Hex_Word		EQU	23h    ;;a0100011
 = 0033                      C	  Bin_Hex_DWord 	EQU	33h    ;;a0110011
			     C	
 = 0004                      C	  Date_Type		EQU	04h    ;;axxx0100 - Date to character using current country format
 = 0014                      C	  Date_MD		EQU	14h    ;;a0010100
 = 0024                      C	  Date_MDY_2		EQU	24h    ;;a0100100
 = 0034                      C	  Date_MDY_4		EQU	34h    ;;a0110100
			     C	
 = 0005                      C	  Time_Cty_Type 	EQU	05h    ;;axxx0101 - Time to character using current country format
 = 0005                      C	  Time_HHMM_Cty 	EQU	05h    ;;a0000101
 = 0015                      C	  Time_HHMMSS_Cty	EQU	15h    ;;a0010101
 = 0025                      C	  Time_HHMMSSHH_Cty	EQU	25h    ;;a0100101
			     C	
 = 0006                      C	  Time_24_Type		EQU	06h    ;;axxx0110 - Time to character using 24 hour format
 = 0006                      C	  Time_HHMM_24		EQU	06h    ;;a0000110
 = 0016                      C	  Time_HHMMSS_24	EQU	16h    ;;a0010110
 = 0026                      C	  Time_HHMMSSHH_24	EQU	26h    ;;a0100110
			     C	
 = 0008                      C	  $M_EXTPAR_Type	EQU	08h    ;;axxx1000 - Special case for extended parse replace format
			     C	
 = 0000                      C	NO_INPUT		EQU	00H    ;; No input characters
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-4
DOS - Message Retriever - SYSTEM CONTROL file               

 = 0001                      C	DOS_KEYB_INP		EQU	01H    ;; DOS INT 21H - AH=01H := Keyboard Input
 = 0007                      C	DOS_DIR_CON_INP 	EQU	07H    ;; DOS INT 21H - AH=07H := Direct Console Input Without Echo
 = 0008                      C	DOS_CON_INP		EQU	08H    ;; DOS INT 21H - AH=08H := Console Input Without Echo (Check 
				CTL-BK)
 = 000A                      C	DOS_BUF_KEYB_INP	EQU	0AH    ;; DOS INT 21H - AH=0AH := Buffered Keyboard Input
 = 000C                      C	DOS_CLR_KEYB_BUF	EQU	0CH    ;; DOS INT 21H - AH=0CH := Clear keyboard buffer
 = 0040                      C	DOS_WRITE_HANDLE	EQU	40H    ;; DOS INT 21H - AH=40H := Write to a DOS handle
 = 0009                      C	DOS_DISP_STRING 	EQU	09H    ;; DOS INT 21H - AH=09H := Display $ terminated string
 = 0002                      C	DOS_DISP_CHAR		EQU	02H    ;; DOS INT 21H - AH=02H := Display Character
 = 0002                      C	LOWEST_4CH_VERSION	EQU	0002H  ;; First DOS version to allow AH = 4CH Exit (VERSION 2.00)
			     C	
 = 6300                      C	DOS_GET_DBCS_INFO	EQU   6300H    ;; DOS INT 21H - AX=6507H := Get DBCS Vector Table
 = 0059                      C	DOS_GET_EXT_ERROR	EQU	59H    ;; DOS INT 21H - AH=59H := Get Extended Error
 = 0000                      C	DOS_GET_EXT_ERROR_BX	EQU	00H    ;; DOS INT 21H - BX=0000H := Version 0
			     C	
 = 6C00                      C	DOS_EXTENDED_OPEN	EQU   6C00H    ;AN003; DOS INT 21H - AX=6C00H := Extended Open
 = 2000                      C	NO_CRIT_OPEN		EQU   2000H    ;AN003; Extended Open Mode bit
 = 0101                      C	NOT_EX_FAIL_EX_OPEN	EQU   0101H    ;AN003; Extended Open Flag
 = 4200                      C	DOS_LSEEK_FILE		EQU   4200H    ;AN003; DOS INT 21H - AX=4200H := LSEEK file
 = 003F                      C	DOS_READ_BYTE		EQU	3FH    ;AN003; DOS INT 21H - AH=3FH   := Read byte block
 = 003E                      C	DOS_CLOSE_FILE		EQU	3EH    ;AN003; DOS INT 21H - AH=3EH   := Close file handle
			     C	
 = 0500                      C	IFSFUNC_INSTALL_CHECK	EQU   0500H    ;AN006; IFSFUNC Installation Check
 = 0502                      C	IFS_GET_ERR_TEXT	EQU   0502H    ;AN006; IFSFUNC Get Extended Error Text
 = 00FF                      C	IFSFUNC_INSTALLED	EQU    0FFH    ;AN006; Return code if IFSFUNC is installed
			     C	
 = 0027                      C	EXT_ERR_39		EQU	39     ;; Insufficent Disk Space EXTENDED ERROR (changed from hex to
				 decimal - eg d201)
 = 0001                      C	ERROR_CLASS_39		EQU	01H    ;;   Error Class = 1
 = 0004                      C	ACTION_39		EQU	04H    ;;   Suggested Action = 4
 = 0001                      C	LOCUS_39		EQU	01H    ;;   Locus = 1
			     C	
 = 0038                      C	DOS_GET_COUNTRY 	EQU	38H    ;; DOS INT 21H - AH=38H := Get Country Dependant Information
 = 0030                      C	DOS_GET_VERSION 	EQU	30H    ;; DOS INT 21H - AH=30H := Get DOS Version number
 = 4400                      C	DOS_IOCTL_GET_INFO	EQU	4400H  ;; DOS INT 21H - AH=4400H := I/O control for devices
 = 4401                      C	DOS_IOCTL_SET_INFO	EQU	4401H  ;; DOS INT 21H - AH=4401H := I/O control for devices
 = 122E                      C	DOS_GET_EXT_PARSE_ADD	EQU	122EH  ;; DOS INT 2FH - AX=122EH := Get Extended/Parse error address
 = 0000                      C	DOS_GET_EXTENDED	EQU	00     ;; DOS INT 2FH - AX=122EH - DL=00 := Get Extended address
 = 0002                      C	DOS_GET_PARSE		EQU	02     ;; DOS INT 2FH - AX=122EH - DL=02 := Get Parse address
 = 0004                      C	DOS_GET_CRITICAL	EQU	04     ;; DOS INT 2FH - AX=122EH - DL=04 := Get Critical address
 = 0006                      C	DOS_GET_FILE		EQU	06     ;; DOS INT 2FH - AX=122EH - DL=06 := Get File system dependan
				t
 = 0008                      C	DOS_GET_ADDR		EQU	08     ;; DOS INT 2FH - AX=122EH - DL=08 := Get Address of READ_DISK
				_PROC
 = 0009                      C	DOS_SET_ADDR		EQU	09     ;; DOS INT 2FH - AX=122EH - DL=09 := Set Address of READ_DISK
				_PROC
 = 000F                      C	LOW_NIB_MASK		EQU	0FH    ;; Mask out the high byte
 = 00C0                      C	DOS_CLR_KEYB_BUF_MASK	EQU	0C0H   ;; Check if high nibble is C Hex
 =-0001                      C	$M_CON_INP		EQU	-1     ;; If DOS INT 21H Function 06H - DL := 0FFH for input
 = 0013                      C	$M_CRIT_LO		EQU	19     ;; First Extended Error considered CRITICAL
 = 0027                      C	$M_CRIT_HI		EQU	39     ;; Last Extended Error considered CRITICAL (EG - D191)
 = 0061                      C	$M_AM			EQU	"a"    ;; Time format AM indicator
 = 0070                      C	$M_PM			EQU	"p"    ;; Time format PM indicator
 = 002D                      C	$M_NEG_SIGN		EQU	"-"    ;; Signed decimal number format negative indicator
 = 0001                      C	$M_DEF_TIME_FORM	EQU	 1     ;; Default Time format - 24 hour
 = 0000                      C	$M_DEF_DATE_FORM	EQU	 0     ;; Default Time format - 0 := USA format
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-5
DOS - Message Retriever - SYSTEM CONTROL file               

 = 003A                      C	$M_DEF_TIME_SEP 	EQU	":"    ;; Default Time separator - ":"
 = 002D                      C	$M_DEF_DATE_SEP 	EQU	"-"    ;; Default Time separator - "-"
 = 002E                      C	$M_DEF_DECI_SEP 	EQU	"."    ;; Default Time hundreds separator - "."
 = 0030                      C	$M_TIMEDATE_PAD 	EQU	"0"    ;; Time/Date PAD character - "0" (ie 12:03p)
 = 0063                      C	$M_MAX_2_YEAR		EQU	99     ;; Maximum 2 digit year
 = 0001                      C	$M_SINGLE_CHAR		EQU	1      ;; A single character is this long      ^
 = 0030                      C	$M_SPECIAL_CASE 	EQU	30H    ;; Special case for replacable parameters %0
 = 0000                      C	$M_UNLIM_W		EQU	0      ;; Unlimited width character
 = 002C                      C	$M_COMMA		EQU	","    ;; Default Thousand separate
 = 0A0D                      C	$M_CR_LF		EQU	0A0DH  ;; Default CR/LF
 = 2D20                      C	$M_SPACE_HYP		EQU	"- "   ;; Default Space/Hyphan
 = 0020                      C	$M_SPACE		EQU	" "    ;; Default Space
 = 0000                      C	$M_NULL 		EQU	0      ;; Null
 = 0003                      C	$M_FIRST_THOU		EQU	3      ;; Location of first thousand separator
 = 0006                      C	$M_SECOND_THOU		EQU	6      ;; Location of second thousand separator
 = 0009                      C	$M_THIRD_THOU		EQU	9      ;; Location of third thousand separator
 = 000A                      C	$M_BASE10		EQU	10     ;; Base 10 for arthmetic
 = 0010                      C	$M_BASE16		EQU	16     ;; Base 16 for arthmetic
 = 0000                      C	$M_CLASS_NOT_EXIST	EQU	 0     ;; Does class exist?
 =-0001                      C	$M_TERMINATING_FLAG	EQU	-1     ;; Is there any more classes?
 = 0002                      C	$M_ADDR_SZ_NEAR 	EQU	2      ;; Size to increment if NEAR
 = 0004                      C	$M_ADDR_SZ_FAR		EQU	4      ;; Size to increment if FAR
 = DS:[SI]                   C	$M_SL			EQU   DS:[SI]  ;; Refer to SUBLIST as $M_SL
 =-0001                      C	$M_NO_HANDLE		EQU	-1     ;; No handle flag
 = 0040                      C	$M_TEMP_BUF_SZ		EQU	64     ;; Size of temporary buffer	 ;AN003;
 = 0002                      C	$M_NEXT_DBCS_VECTOR	EQU	2      ;; Amount to increment to get next vector
 = 0000                      C	$M_DBCS_TERM		EQU    0000    ;; DBCS vector table terminating flag
 = FFFF                      C	$M_SPECIAL_MSG_NUM	EQU    0FFFFH  ;; Special generic message number
 = 0002                      C	$M_CRLF_SIZE		EQU    2       ;; Size of the CR LF message
 = 0080                      C	$M_NO_CRLF_MASK 	EQU  10000000B ;; Mask to supress CR LF
 = 0001                      C	$M_ONE_REPLACE		EQU    1       ;; Indicate one replacement
 = 0001                      C	$M_CRIT_ERR_MASK	EQU  00000001B ;; Mask to allow EOF/EOI Crit error
			     C					       ;;
 = 0080                      C	$M_ALIGN_MASK		EQU  10000000b ;; Mask for align
 = 000F                      C	$M_TYPE_MASK		EQU  00001111b ;; Mask for types
 = 0030                      C	$M_SIZE_MASK		EQU  00110000b ;; Mask for types
 = 0001                      C	$M_TIME_MASK		EQU  00000001b ;; Mask for TIME
 = 0010                      C	$M_DATE_MASK		EQU  00010000b ;; Mask for TIME
 = 0010                      C	$M_BYTE 		EQU  00010000b ;; BYTE indicator
 = 0020                      C	$M_WORD 		EQU  00100000b ;; WORD indicator
 = 0030                      C	$M_DWORD		EQU  00110000b ;; DWORD indicator
			     C	
			     C	; Standard reserved DOS handles
			     C	
 = 0000                      C	STDIN			EQU	0000H  ;; Standard Input device handle
 = 0001                      C	STDOUT			EQU	0001H  ;; Standard Output device handle
 = 0002                      C	STDERR			EQU	0002H  ;; Standard Error Output device handle
 = 0003                      C	STDAUX			EQU	0003H  ;; Standard Auxiliary device handle
 = 0004                      C	STDPRN			EQU	0004H  ;; Standard Printer device handle
			     C	
			     C	; Reserved Message Service equates
			     C	
 = FFFF                      C	NEARmsg 		 =	TRUE   ;; \
 = 0000                      C	NOVERCHECKmsg		 =	FALSE  ;;  |
 = 0000                      C	MSGDATA 		 =	FALSE  ;;  |
 = 0000                      C	FARmsg			 =	FALSE  ;;  |
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-6
DOS - Message Retriever - SYSTEM CONTROL file               

 = 0000                      C	GETmsg			 =	FALSE  ;;  |
 = 0000                      C	LOADmsg 		 =	FALSE  ;;  |
 = 0000                      C	DISPLAYmsg		 =	FALSE  ;;   } Set default cases
 = 0000                      C	SETSTDIO		 =	FALSE  ;;  |
 = 0000                      C	NOCHECKSTDIN		 =	FALSE  ;;  |
 = 0000                      C	NOCHECKSTDOUT		 =	FALSE  ;;  |
 = 0000                      C	DISK_PROC		 =	FALSE  ;;  |			       ;AN003;
 = 0000                      C	INPUTmsg		 =	FALSE  ;;  |
 = 0000                      C	CHARmsg 		 =	FALSE  ;;  |
 = 0000                      C	NUMmsg			 =	FALSE  ;;  |
 = 0000                      C	TIMEmsg 		 =	FALSE  ;;  |
 = 0000                      C	DATEmsg 		 =	FALSE  ;; /
			     C	
			     C	
 = FFFF                      C	$M_STRUC		 =	TRUE   ;; Internal message service defaults
 = FFFF                      C	$M_LOAD 		 =	TRUE   ;;
 = FFFF                      C	$M_SUBS 		 =	TRUE   ;;
 = FFFF                      C	$M_REPLACE		 =	TRUE   ;;
 = 0000                      C	$M_REPL_DONE		 =	FALSE  ;;
 = FFFF                      C	$M_CHAR_ONLY		 =	TRUE   ;;
 = FFFF                      C	$M_PARSE_FLAG		 =	TRUE   ;;
 = FFFF                      C	$M_EXT_ERR_FLAG 	 =	TRUE   ;;
 = FFFF                      C	$M_MSGDATA_ONLY 	 =	TRUE   ;;
 = 0000                      C	$M_END			 =	FALSE  ;;
 = FFFF                      C	$M_EXT_CLS		 =	TRUE   ;;
 = FFFF                      C	$M_PAR_CLS		 =	TRUE   ;;
			     C					       ;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;	$M_POPF 	     Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	
			     C	$M_POPF    MACRO
			     C		   LOCAL   $M_MYRET
			     C		   JMP	   $+3
			     C	$M_MYRET   LABEL   NEAR
			     C		   IRET
			     C		   PUSH    CS
			     C		   CALL    $M_MYRET
			     C	ENDM
			     C	
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;
			     C	;;  Message Retreiver requests
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C	MSG_UTILNAME  Macro   utilname	       ;
			     C					       ;
			     C	   INCLUDE &utilname.CTL	       ;  Include the control file for the utility
			     C	   $M_STRUC = TRUE		       ;
			     C	   INCLUDE MSGSERV.ASM		       ;  Get structure definitions
			     C					       ;
			     C	ENDM				       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;	MSG_SERVICES		Macro
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-7
DOS - Message Retriever - SYSTEM CONTROL file               

			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C						  ;
			     C	MSG_SERVICES Macro   varlist		  ;  MACRO used in source routine
			     C						  ;
			     C	   $M_SERVICE = FALSE			  ;  Reset service flag
			     C	   IRP	   var,<varlist>		  ;  FOR each variable in the list
			     C	     $M_INCLUDE = TRUE			  ;  Reset include flag
			     C						  ;	For each service predefined
			     C	
			     C	IRP  serv,<MSGDATA,LOADmsg,NOVERCHECKmsg,DISPLAYmsg,GETmsg,INPUTmsg,CHARmsg,NUMmsg,TIMEmsg,DATEmsg,N
				EARmsg,FARmsg,COMR,COMT>
			     C	
			     C		 IFDIF <var>,<serv>		  ;	  IF it IS a service (defined above)
			     C		 ELSE				  ;
			     C		   IFDIF <var>,<MSGDATA>	  ;	    IF it is NOT the message data space request
			     C		     $M_MSGDATA_ONLY = FALSE	  ;	       Instruct the assembler to include all service
				s
			     C		   ENDIF			  ;	    ENDIF
			     C		   IRP	repl,<CHARmsg,NUMmsg,TIMEmsg,DATEmsg>  ; IF it is a replace service
			     C		     IFIDN  <var>,<repl>	  ;
			     C		       $M_REPLACE = TRUE	  ;	       Set replace flag
			     C		     ENDIF			  ;
			     C		   ENDM 			  ;
			     C		   serv = TRUE			  ;	    Let the assembler know about the service
			     C		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service
			     C		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class
			     C		 ENDIF				  ;	  ENDIF
			     C	      ENDM				  ;	NEXT service
			     C	
			     C	MSG_SERVICES2  <varlist>
			     C						  ; Continue further checks (If we add any more predefined
			     C						  ;  function to the above IRP command, it generates a
			     C						  ;  syntax error. We must continue the processing in anothe
				r
			     C						  ;  MACRO called MSG_SERVICES2)
			     C	
			     C	      IF $M_INCLUDE			  ;	IF message class was requested
			     C		 $M_INC var			  ;	   Include it as a message class
			     C	      ENDIF				  ;	ENDIF
			     C	   ENDM 				  ;  NEXT variable
			     C						  ;
			     C	   IF $M_SERVICE			  ;	IF it any services were requested THEN
			     C	     INCLUDE MSGSERV.ASM		  ;	   THEN include module to get service
			     C	   ENDIF				  ;	ENDIF
			     C	
			     C	ENDM
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;	MSG_SERVICES2		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C						  ;
			     C	MSG_SERVICES2 Macro   varlist2		  ;  MACRO used in source routine
			     C						  ;
			     C						    ;  FOR each variable in the list
			     C	   IRP	   var2,<varlist2>
			     C							       ; For each service predefined
			     C	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC>
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-8
DOS - Message Retriever - SYSTEM CONTROL file               

			     C						    ;AN003; IF it IS a service (defined above)
			     C		 IFDIF <var2>,<serv2>
			     C		 ELSE				  ;
			     C		   serv2 = TRUE 		   ;	     Let the assembler know about the service
			     C		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service
			     C		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class
			     C		 ENDIF				  ;	  ENDIF
			     C	      ENDM				  ;	NEXT service
			     C	   ENDM 				  ;  NEXT variable
			     C	ENDM					  ;
			     C						  ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_INC		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_INC	Macro	ext				 ;
			     C							 ;
			     C	INCLUDE &ext					 ;
			     C							 ;
			     C	ENDM						 ;
			     C							 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_BUILD_PTRS	Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_BUILD_PTRS Macro nummsg			 ;
			     C							 ;
			     C	    $M_INDEX =	    0				 ;
			     C	IF COMR 				     ; IF this is resident COMMAND.COM
			     C	    $M_MAKE_COMR			     ;
			     C	ELSE						 ; ELSE
			     C	  IF COMT				     ;	 IF this is transient COMMAND.COM
			     C	    $M_MAKE_COMT			     ;
			     C	  ELSE						 ;   ELSE
			     C							 ;
			     C	    $M_INDEX =	    0				 ;
			     C	    $M_COUNT =	    0				 ;     Build normal utilities
			     C							 ;
			     C	    REPT    nummsg				 ;
			     C	    $M_COUNT =	    $M_COUNT + 1		 ;
			     C	    $M_MAKE %$M_COUNT				 ;
			     C	    ENDM					 ;
			     C	  ENDIF 					 ;
			     C	ENDIF						 ;
			     C	ENDM						 ;
			     C							 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_MAKE		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_MAKE Macro $m_append 			 ;
			     C	IF  FARmsg					 ;
			     C	    CALL    FAR PTR $M_CLS_&$m_append		 ;  Get addressibilty to class &$M_APPEND (ES:DI)
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX+2,ES ;  Move into first avaliable table location
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	ELSE						 ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-9
DOS - Message Retriever - SYSTEM CONTROL file               

			     C	    CALL    $M_CLS_&$m_append			 ;  Get addressibilty to class &$M_APPEND (ES:DI)
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	ENDIF						 ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	ENDM						 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_MAKE_COMR     Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_MAKE_COMR   macro			     ;
			     C							 ;
			     C	    CALL    $M_CLS_3				 ;  Get addressibilty to class A
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	    CALL    $M_CLS_4				 ;  Get addressibilty to class B
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	    CALL    $M_CLS_5				 ;  Get addressibilty to class C
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	    CALL    $M_CLS_6				 ;  Get addressibilty to class D
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	    CALL    $M_CLS_7				 ;  Get addressibilty to class E
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	ENDM						 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_MAKE_COMT     Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_MAKE_COMT  macro			     ;
			     C							 ;
			     C	    CALL    $M_CLS_8				 ;  Get addressibilty to class A
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	ENDM						 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				;									 ;AN000;
					MSG_UTILNAME <ATTRIB>		;IDENTIFY THE COMPONENT 	 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-10
DOS - Message Retriever - MSGSTR.INC Module                 

			     C1	$M_SUBLIST_STRUC STRUC					     ;;AN000;;
			     C1								     ;;
 0000  0B                    C1	    $M_S_SIZE	     DB        11			     ;;AN000;; SUBLIST size  (PTR to next SU
				BLIST)
 0001  00                    C1	    $M_S_RESV	     DB        0			     ;;AN000;; RESERVED
 0002  00000000              C1	    $M_S_VALUE	     DD        ?			     ;;AN000;; Time, Date or PTR to data ite
				m
 0006  00                    C1	    $M_S_ID	     DB        ?			     ;;AN000;; n of %n
 0007  00                    C1	    $M_S_FLAG	     DB        ?			     ;;AN000;; Data-type flags
 0008  00                    C1	    $M_S_MAXW	     DB        ?			     ;;AN000;; Maximum field width
 0009  00                    C1	    $M_S_MINW	     DB        ?			     ;;AN000;; Minimum field width
 000A  00                    C1	    $M_S_PAD	     DB        ?			     ;;AN000;; Character for Pad field
			     C1								     ;;
 000B                        C1	$M_SUBLIST_STRUC ENDS					     ;;AN000;;
			     C1	$M_CLASS_ID STRUC					     ;;AN000;;
			     C1								     ;;
 0000  FF                    C1	    $M_CLS_ID	     DB        -1			     ;;AN000;; Class identifer
 0001  0004                  C1	    $M_COMMAND_VER   DW        EXPECTED_VERSION 	     ;;AN003;; COMMAND.COM version check
 0003  00                    C1	    $M_NUM_CLS_MSG   DB        0			     ;;AN000;; Total number of message in cl
				ass
			     C1								     ;;
 0004                        C1	$M_CLASS_ID ENDS					     ;;
			     C1	$M_ID STRUC						     ;;AN000;;
			     C1								     ;;
 0000  FFFF                  C1	    $M_NUM	     DW        -1			     ;;AN000;; Message Number
 0002  0000                  C1	    $M_TXT_PTR	     DW        ?			     ;;AN000;; Pointer to message text
			     C1								     ;;
 0004                        C1	$M_ID ENDS						     ;;AN000;;
			     C1	$M_RES_ADDRS STRUC					     ;;AN000;;
			     C1								     ;;
 0000  00000000              C1	    $M_EXT_ERR_ADDRS DD        0			     ;;AN000;; Allow pointers to THREE Exten
				ded error locations
 0004  00000000              C1	    $M_EXT_FILE      DD        0			     ;;AN001;;
 0008  00000000              C1	    $M_EXT_COMMAND   DD        0			     ;;AN000;;
 000C  FFFFFFFF              C1	    $M_EXT_TERM      DD        -1			     ;;AN000;;
 0010  00000000              C1	    $M_PARSE_COMMAND DD        0			     ;;AN000;;
 0014  00000000              C1	    $M_PARSE_ADDRS   DD        0			     ;;AN000;; Allow pointers to TWO Parse e
				rror locations
 0018  FFFFFFFF              C1	    $M_PARSE_TERM    DD        -1			     ;;AN000;;
 001C  00000000              C1	    $M_CRIT_ADDRS    DD        0			     ;;AN000;; Allow pointers to TWO Critica
				l error locations
 0020  00000000              C1	    $M_CRIT_COMMAND  DD        0			     ;;AN000;;
 0024  FFFFFFFF              C1	    $M_CRIT_TERM     DD        -1			     ;;AN000;;
 0028  FFFFFFFF              C1	    $M_DISK_PROC_ADDR DD       -1			     ;;AN004;; Address of READ_DISK_PROC
 002C  0002[                 C1	    $M_CLASS_ADDRS   DD        $M_NUM_CLS DUP(0)	     ;;AN000;; Allow pointers to specified c
				lasses
	   00000000          C1	
			 ]   C1	
			     C1	
 0034  FFFFFFFF              C1	    $M_CLS_TERM      DD        -1			     ;;AN000;;
 0038  00000000              C1	    $M_DBCS_VEC      DD        0			     ;;AN000;; Save DBCS vector
 003C  0000                  C1	    $M_HANDLE	     DW        ?			     ;;AN000;;
 003E  00                    C1	    $M_SIZE	     DB        0			     ;;AN000;;
 003F  0D 0A                 C1	    $M_CRLF	     DB        0DH,0AH			     ;;AN004;; CR LF message
 0041  00                    C1	    $M_CLASS	     DB        ?			     ;;AN004;; Saved class
 0042  0000                  C1	    $M_RETURN_ADDR   DW        ?			     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-11
DOS - Message Retriever - MSGSTR.INC Module                 

 0044  0000                  C1	    $M_MSG_NUM	     DW        $M_NULL			     ;;AN000;;
 0046  000A                  C1	    $M_DIVISOR	     DW        10			     ;;AN000;; Default = 10 (must be a WORD 
				for division)
 0048  0040[                 C1	    $M_TEMP_BUF      DB        $M_TEMP_BUF_SZ DUP("$")	     ;;AN000;; Temporary buffer
	   24                C1	
			 ]   C1	
			     C1	
 0088  24                    C1	    $M_BUF_TERM      DB        "$"			     ;;AN000;;
			     C1	
 0089                        C1	$M_RES_ADDRS ENDS					     ;;AN000;;
			     C1	$M_COUNTRY_INFO STRUC					     ;;AN000;; Expected Country infomation
			     C1								     ;;
 0000  0048[                 C1	    $M_HEADER	     DB       $M_RES_ADDRS_SZ-$M_TEMP_BUF_SZ-1 DUP(?) ;;AN000;; Go past first part o
				f struc
	   ??                C1	
			 ]   C1	
			     C1	
 0048  0000                  C1	    $M_DATE_FORMAT   DW       ? 			     ;;AN000;; <------- Date Format
 004A  0005[                 C1	    $M_CURR_SEPARA   DB       5 DUP(?)			     ;;AN000;;
	   ??                C1	
			 ]   C1	
			     C1	
 004F  00 00                 C1	    $M_THOU_SEPARA   DB       ?,0			     ;;AN000;; <------- Thou Separator
 0051  00 00                 C1	    $M_DECI_SEPARA   DB       ?,0			     ;;AN000;; <------- Decimal Separator
 0053  00 00                 C1	    $M_DATE_SEPARA   DB       ?,0			     ;;AN000;; <------- Date Separator
 0055  00 00                 C1	    $M_TIME_SEPARA   DB       ?,0			     ;;AN000;; <------- Time Separator
 0057  00                    C1	    $M_CURR_FORMAT   DB       ? 			     ;;AN000;;
 0058  00                    C1	    $M_SIG_DIGS_CU   DB       ? 			     ;;AN000;;
 0059  00                    C1	    $M_TIME_FORMAT   DB       ? 			     ;;AN000;; <------- Time Format
			     C1								     ;;
 005A                        C1	$M_COUNTRY_INFO ENDS					     ;;AN000;;
				;									 ;AN000;
					.8087								 ;AN000;
 0000				_TEXT	SEGMENT WORD PUBLIC 'CODE'					 ;AN000;
 0000				_TEXT	ENDS								 ;AN000;
 0000				_DATA	SEGMENT WORD PUBLIC 'DATA'					 ;AN000;
 0000				_DATA	ENDS								 ;AN000;
 0000				CONST	SEGMENT WORD PUBLIC 'CONST'					 ;AN000;
 0000				CONST	ENDS								 ;AN000;
 0000				_BSS	SEGMENT WORD PUBLIC 'BSS'					 ;AN000;
 0000				_BSS	ENDS								 ;AN000;
				DGROUP	GROUP	CONST, _BSS, _DATA					 ;AN000;
					ASSUME	CS: _TEXT, DS: _TEXT, SS: DGROUP, ES: DGROUP		 ;AN000;
				;									 ;AN000;
					public	_sysloadmsg						 ;AN000;
					public	_sysgetmsg						 ;AN000;
					public	_sysdispmsg						 ;AN000;
				;									 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
				;									 ;AN000;
 0000				_DATA	segment 							 ;AN000;
				.LIST									 ;AN000;
				.CREF									 ;AN000;
 00E8				_DATA	ends								 ;AN000;
				;									 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-12
DOS - Message Retriever - MSGRES.TAB Module                 

				;									 ;AN000;
 0000				_TEXT	segment 							 ;AN000;
				;									 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
				
				 public amis_sign
					even
 0000				amis_sign:
 0000  65 63 6D				db "ecm"
 0003  0005[				db 5 dup (' ')
	   20			
			 ]	
				
 0008  6C 44 4F 53			db "lDOS"
 000C  0004[				db 4 dup (' ')
	   20			
			 ]	
				
 0010				amis_id:			; must be directly after amis_sign
 0010  0000				dw 0
 0012  0000				dw 0			; sequential number
 0014  06				db amis_id_msg_end - amis_id_msg
 0015				amis_id_msg:
 0015  61 74 74 72 69 62		db "attrib"		; our id name
 001B				amis_id_msg_end:
				
 =				AMIS_SIGN_SEGMENT equ _TEXT
				
				;									 ;AN000;
									;DEFAULT=CHECK DOS VERSION	 ;AN000;
									;DEFAULT=NEARmsg		 ;AN000;
									;DEFAULT=INPUTmsg		 ;AN000;
									;DEFAULT=NUMmsg 		 ;AN000;
									;DEFAULT=NO TIMEmsg		 ;AN000;
									;DEFAULT=NO DATEmsg		 ;AN000;
				;	MSG_SERVICES <LOADmsg,GETmsg,DISPLAYmsg,CHARmsg,NUMmsg,INPUTmsg,FARmsg,TIMEmsg,DATEmsg> ;AN0
				00;
				;	MSG_SERVICES <ATTRIB.CLA,ATTRIB.CLB,ATTRIB.CL1,ATTRIB.CL2> ;MSG TEXT  ;AN000;
				.LIST									 ;AN000;
				.CREF									 ;AN000;
				;									 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
 0A61				_sysloadmsg proc near							 ;AN000;
 0A61  55				push	bp			; save user's base pointer       ;AN000;
 0A62  8B EC				mov	bp,sp			; set bp to current sp		 ;AN000;
 0A64  57				push	di			; save some registers		 ;AN000;
 0A65  56				push	si							 ;AN000;
				;									 ;AN000;
				;	copy C inregs into proper registers				 ;AN000;
				;									 ;AN000;
 0A66  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)		 ;AN000;
				;									 ;AN000;
 0A69  8B 45 0A				mov	ax,[di+0ah]		; load di			 ;AN000;
 0A6C  50				push	ax			; the di value from inregs is now on stack ;AN000;
				;									 ;AN000;
 0A6D  8B 05				mov	ax,[di+00]		; get inregs.x.ax		 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-13
DOS - Message Retriever - DISPMSG.ASM Module                

 0A6F  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx		 ;AN000;
 0A72  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx		 ;AN000;
 0A75  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx		 ;AN000;
 0A78  8B 75 08				mov	si,[di+08]		; get inregs.x.si		 ;AN000;
 0A7B  5F				pop	di			; get inregs.x.di from stack	 ;AN000;
				;									 ;AN000;
 0A7C  55				push	bp			; save base pointer		 ;AN000;
				;									 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
 0A7D  9A 001B ---- R			call	sysloadmsg		; call the message retriever	 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
				;									 ;AN000;
 0A82  5D				pop	bp			; restore base pointer		 ;AN000;
 0A83  57				push	di			; the di value from call is now on stack ;AN000;
 0A84  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)		 ;AN000;
				;									 ;AN000;
 0A87  89 05				mov	[di+00],ax		; load outregs.x.ax		 ;AN000;
 0A89  89 5D 02				mov	[di+02],bx		; load outregs.x.bx		 ;AN000;
 0A8C  89 4D 04				mov	[di+04],cx		; load outregs.x.cx		 ;AN000;
 0A8F  89 55 06				mov	[di+06],dx		; load outregs.x.dx		 ;AN000;
 0A92  89 75 08				mov	[di+08],si		; load outregs.x.si		 ;AN000;
				;									 ;AN000;
 0A95  9F				lahf				; get flags into ax		 ;AN000;
 0A96  8A C4				mov	al,ah			; move into low byte		 ;AN000;
 0A98  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag		 ;AN000;
				;									 ;AN000;
 0A9B  58				pop	ax			; get di from stack		 ;AN000;
 0A9C  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di		 ;AN000;
				;									 ;AN000;
 0A9F  5E				pop	si			; restore registers		 ;AN000;
 0AA0  5F				pop	di							 ;AN000;
 0AA1  8B E5				mov	sp,bp			; restore sp			 ;AN000;
 0AA3  5D				pop	bp			; restore user's bp              ;AN000;
 0AA4  C3				ret								 ;AN000;
 0AA5				_sysloadmsg endp							 ;AN000;
				;									 ;AN000;
				;									 ;AN000;
 0AA5				_sysgetmsg proc near							 ;AN000;
 0AA5  55				push	bp			; save user's base pointer       ;AN000;
 0AA6  8B EC				mov	bp,sp			; set bp to current sp		 ;AN000;
 0AA8  57				push	di			; save some registers		 ;AN000;
 0AA9  56				push	si							 ;AN000;
				;									 ;AN000;
				;	copy C inregs into proper registers				 ;AN000;
				;									 ;AN000;
 0AAA  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)		 ;AN000;
				;									 ;AN000;
 0AAD  8B 45 0A				mov	ax,[di+0ah]		; load di			 ;AN000;
 0AB0  50				push	ax			; the di value from inregs is now on stack ;AN000;
				;									 ;AN000;
 0AB1  8B 05				mov	ax,[di+00]		; get inregs.x.ax		 ;AN000;
 0AB3  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx		 ;AN000;
 0AB6  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx		 ;AN000;
 0AB9  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx		 ;AN000;
 0ABC  8B 75 08				mov	si,[di+08]		; get inregs.x.si		 ;AN000;
 0ABF  5F				pop	di			; get inregs.x.di from stack	 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-14
DOS - Message Retriever - DISPMSG.ASM Module                

				;									 ;AN000;
 0AC0  55				push	bp			; save base pointer		 ;AN000;
				;									 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
 0AC1  9A 0195 ---- R			call	sysgetmsg		; call the message retriever	 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
				;									 ;AN000;
 0AC6  5D				pop	bp			; restore base pointer		 ;AN000;
 0AC7  57				push	di			; the di value from call is now on stack ;AN000;
 0AC8  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)		 ;AN000;
				;									 ;AN000;
 0ACB  89 05				mov	[di+00],ax		; load outregs.x.ax		 ;AN000;
 0ACD  89 5D 02				mov	[di+02],bx		; load outregs.x.bx		 ;AN000;
 0AD0  89 4D 04				mov	[di+04],cx		; load outregs.x.cx		 ;AN000;
 0AD3  89 55 06				mov	[di+06],dx		; load outregs.x.dx		 ;AN000;
 0AD6  89 75 08				mov	[di+08],si		; load outregs.x.si		 ;AN000;
				;									 ;AN000;
 0AD9  9F				lahf				; get flags into ax		 ;AN000;
 0ADA  8A C4				mov	al,ah			; move into low byte		 ;AN000;
 0ADC  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag		 ;AN000;
				;									 ;AN000;
 0ADF  58				pop	ax			; get di from stack		 ;AN000;
 0AE0  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di		 ;AN000;
				;									 ;AN000;
 0AE3  5E				pop	si			; restore registers		 ;AN000;
 0AE4  5F				pop	di							 ;AN000;
 0AE5  8B E5				mov	sp,bp			; restore sp			 ;AN000;
 0AE7  5D				pop	bp			; restore user's bp              ;AN000;
 0AE8  C3				ret								 ;AN000;
 0AE9				_sysgetmsg endp 							 ;AN000;
				;									 ;AN000;
				;									 ;AN000;
 0AE9				_sysdispmsg proc near							 ;AN000;
 0AE9  55				push	bp			; save user's base pointer       ;AN000;
 0AEA  8B EC				mov	bp,sp			; set bp to current sp		 ;AN000;
 0AEC  57				push	di			; save some registers		 ;AN000;
 0AED  56				push	si							 ;AN000;
				;									 ;AN000;
				;	copy C inregs into proper registers				 ;AN000;
				;									 ;AN000;
 0AEE  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)		 ;AN000;
				;									 ;AN000;
 0AF1  8B 45 0A				mov	ax,[di+0ah]		; load di			 ;AN000;
 0AF4  50				push	ax			; the di value from inregs is now on stack ;AN000;
				;									 ;AN000;
 0AF5  8B 05				mov	ax,[di+00]		; get inregs.x.ax		 ;AN000;
 0AF7  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx		 ;AN000;
 0AFA  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx		 ;AN000;
 0AFD  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx		 ;AN000;
 0B00  8B 75 08				mov	si,[di+08]		; get inregs.x.si		 ;AN000;
 0B03  5F				pop	di			; get inregs.x.di from stack	 ;AN000;
				;									 ;AN000;
 0B04  55				push	bp			; save base pointer		 ;AN000;
				;									 ;AN000;
				;-------------------------------------------------------------------	 ;AN000;
 0B05  9A 02E3 ---- R			call	sysdispmsg		; call the message retriever	 ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-15
DOS - Message Retriever - DISPMSG.ASM Module                

				;-------------------------------------------------------------------	 ;AN000;
				;									 ;AN000;
 0B0A  5D				pop	bp			; restore base pointer		 ;AN000;
 0B0B  57				push	di			; the di value from call is now on stack ;AN000;
 0B0C  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)		 ;AN000;
				;									 ;AN000;
 0B0F  89 05				mov	[di+00],ax		; load outregs.x.ax		 ;AN000;
 0B11  89 5D 02				mov	[di+02],bx		; load outregs.x.bx		 ;AN000;
 0B14  89 4D 04				mov	[di+04],cx		; load outregs.x.cx		 ;AN000;
 0B17  89 55 06				mov	[di+06],dx		; load outregs.x.dx		 ;AN000;
 0B1A  89 75 08				mov	[di+08],si		; load outregs.x.si		 ;AN000;
				;									 ;AN000;
 0B1D  9F				lahf				; get flags into ax		 ;AN000;
 0B1E  8A C4				mov	al,ah			; move into low byte		 ;AN000;
 0B20  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag		 ;AN000;
				;									 ;AN000;
 0B23  58				pop	ax			; get di from stack		 ;AN000;
 0B24  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di		 ;AN000;
				;									 ;AN000;
 0B27  5E				pop	si			; restore registers		 ;AN000;
 0B28  5F				pop	di							 ;AN000;
 0B29  8B E5				mov	sp,bp			; restore sp			 ;AN000;
 0B2B  5D				pop	bp			; restore user's bp              ;AN000;
 0B2C  C3				ret								 ;AN000;
 0B2D				_sysdispmsg endp							 ;AN000;
				;									 ;AN000;
				;									 ;AN000;
 0B2D				_TEXT	ends				; end code segment		 ;AN000;
				
					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
			     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,
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-16
DOS - Message Retriever - DISPMSG.ASM Module                

			     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
			     C		  ENDIF 			 ;
			     C		ELSE				 ;     ELSE
			     C		  PUBLIC  $M_CLS_&innum 	 ;	 Label PUBLIC
			     C		ENDIF				 ;
			     C	      ENDIF				 ;
			     C	    ENDIF				 ;
			     C	  ENDIF 			       ;
			     C	ENDM				       ;
			     C					       ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Page     1-17
DOS - Message Retriever - DISPMSG.ASM Module                

			     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	
				
					end								 ;AN000;

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         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
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  . . . . . . . .  	005A	000A
  $M_HEADER  . . . . . . . . . .  	0000
  $M_DATE_FORMAT . . . . . . . .  	0048
  $M_CURR_SEPARA . . . . . . . .  	004A
  $M_THOU_SEPARA . . . . . . . .  	004F
  $M_DECI_SEPARA . . . . . . . .  	0051
  $M_DATE_SEPARA . . . . . . . .  	0053
  $M_TIME_SEPARA . . . . . . . .  	0055
  $M_CURR_FORMAT . . . . . . . .  	0057
  $M_SIG_DIGS_CU . . . . . . . .  	0058
  $M_TIME_FORMAT . . . . . . . .  	0059
$M_ID  . . . . . . . . . . . . .  	0004	0002
  $M_NUM . . . . . . . . . . . .  	0000
  $M_TXT_PTR . . . . . . . . . .  	0002
$M_RES_ADDRS . . . . . . . . . .  	0089	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  . . . . . . . . .  	0034
  $M_DBCS_VEC  . . . . . . . . .  	0038
  $M_HANDLE  . . . . . . . . . .  	003C
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-2


  $M_SIZE  . . . . . . . . . . .  	003E
  $M_CRLF  . . . . . . . . . . .  	003F
  $M_CLASS . . . . . . . . . . .  	0041
  $M_RETURN_ADDR . . . . . . . .  	0042
  $M_MSG_NUM . . . . . . . . . .  	0044
  $M_DIVISOR . . . . . . . . . .  	0046
  $M_TEMP_BUF  . . . . . . . . .  	0048
  $M_BUF_TERM  . . . . . . . . .  	0088
$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

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

DGROUP . . . . . . . . . . . . .  	GROUP
  CONST  . . . . . . . . . . . .  	0000	WORD	PUBLIC	'CONST'
  _BSS . . . . . . . . . . . . .  	0000	WORD	PUBLIC	'BSS'
  _DATA  . . . . . . . . . . . .  	00E8	WORD	PUBLIC	'DATA'
_TEXT  . . . . . . . . . . . . .  	0B2D	WORD	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

ACTION_39  . . . . . . . . . . .  	NUMBER	0004	
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_GOOD_DOS . . . . . . . . . .  	L NEAR	0179	_TEXT
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
AMIS_ID  . . . . . . . . . . . .  	L NEAR	0010	_TEXT
AMIS_ID_MSG  . . . . . . . . . .  	L NEAR	0015	_TEXT
AMIS_ID_MSG_END  . . . . . . . .  	L NEAR	001B	_TEXT
amis_sign  . . . . . . . . . . .  	L NEAR	0000	_TEXT	Global
AMIS_SIGN_SEGMENT  . . . . . . .  	ALIAS	 _TEXT		

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

CHARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
CHAR_FIELD_ASCIIZ  . . . . . . .  	NUMBER	0010	
CHAR_FIELD_CHAR  . . . . . . . .  	NUMBER	0000	
CHAR_TYPE  . . . . . . . . . . .  	NUMBER	0000	
CHECK_AMIS . . . . . . . . . . .  	L NEAR	011D	_TEXT
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	0154	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-3


CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	0126	_TEXT
CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	014F	_TEXT
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	0153	_TEXT
CLASS_1_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_2_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_A_MESSAGECOUNT . . . . . .  	NUMBER	0002	
CLASS_B_MESSAGECOUNT . . . . . .  	NUMBER	0007	
COLON  . . . . . . . . . . . . .  	NUMBER	003A	
COMR . . . . . . . . . . . . . .  	NUMBER	0000	
COMT . . . . . . . . . . . . . .  	NUMBER	0000	
CR . . . . . . . . . . . . . . .  	NUMBER	000D	

DATEMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
DATE_MD  . . . . . . . . . . . .  	NUMBER	0014	
DATE_MDY_2 . . . . . . . . . . .  	NUMBER	0024	
DATE_MDY_4 . . . . . . . . . . .  	NUMBER	0034	
DATE_TYPE  . . . . . . . . . . .  	NUMBER	0004	
DISK_PROC  . . . . . . . . . . .  	NUMBER	0000	
DISPLAYMSG . . . . . . . . . . .  	NUMBER	0000	
DOS_BUF_KEYB_INP . . . . . . . .  	NUMBER	000A	
DOS_CLOSE_FILE . . . . . . . . .  	NUMBER	003E	
DOS_CLR_KEYB_BUF . . . . . . . .  	NUMBER	000C	
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	

ERROR_CLASS_39 . . . . . . . . .  	NUMBER	0001	
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
EXT_ERR_39 . . . . . . . . . . .  	NUMBER	0027	
EXT_ERR_CLASS  . . . . . . . . .  	NUMBER	0001	

FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
FARMSG . . . . . . . . . . . . .  	NUMBER	FFFF	
FORMFD . . . . . . . . . . . . .  	NUMBER	000C	

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-4


GETMSG . . . . . . . . . . . . .  	NUMBER	0000	

HOME . . . . . . . . . . . . . .  	NUMBER	000B	

IFSFUNC_INSTALLED  . . . . . . .  	NUMBER	00FF	
IFSFUNC_INSTALL_CHECK  . . . . .  	NUMBER	0500	
IFS_GET_ERR_TEXT . . . . . . . .  	NUMBER	0502	
INPUTMSG . . . . . . . . . . . .  	NUMBER	0000	

LEFT_ALIGN . . . . . . . . . . .  	NUMBER	0000	
LF . . . . . . . . . . . . . . .  	NUMBER	000A	
LOADMSG  . . . . . . . . . . . .  	NUMBER	0000	
LOCUS_39 . . . . . . . . . . . .  	NUMBER	0001	
LOWEST_4CH_VERSION . . . . . . .  	NUMBER	0002	
LOW_NIB_MASK . . . . . . . . . .  	NUMBER	000F	

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MSGDATA  . . . . . . . . . . . .  	NUMBER	0000	
MSG_SER_CLASS  . . . . . . . . .  	NUMBER	0000	

NEARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
NEW_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
NEW_MINOR_VERSION  . . . . . . .  	NUMBER	0026	
NOCHECKSTDIN . . . . . . . . . .  	NUMBER	0000	
NOCHECKSTDOUT  . . . . . . . . .  	NUMBER	0000	
NOT_EX_FAIL_EX_OPEN  . . . . . .  	NUMBER	0101	
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	FFFF	

PARSE_ERR_CLASS  . . . . . . . .  	NUMBER	0002	

RESERVED . . . . . . . . . . . .  	NUMBER	0000	
RIGHT_ALIGN  . . . . . . . . . .  	NUMBER	0080	

SETSTDIO . . . . . . . . . . . .  	NUMBER	0000	
SGN_BIN_BYTE . . . . . . . . . .  	NUMBER	0012	
SGN_BIN_DWORD  . . . . . . . . .  	NUMBER	0032	
SGN_BIN_TYPE . . . . . . . . . .  	NUMBER	0002	
SGN_BIN_WORD . . . . . . . . . .  	NUMBER	0022	
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
SUBLIST_LENGTH . . . . . . . . .  	NUMBER	000B	
SYSDISPMSG . . . . . . . . . . .  	F PROC	02E3	_TEXT	Length = 0052
SYSGETMSG  . . . . . . . . . . .  	F PROC	0195	_TEXT	Length = 001E
SYSLOADMSG . . . . . . . . . . .  	F PROC	001B	_TEXT	Length = 00C2

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-5


TAB  . . . . . . . . . . . . . .  	NUMBER	0009	
TIMEMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
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	

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	

$MDO123  . . . . . . . . . . . .  	L NEAR	0396	_TEXT
$MDO139  . . . . . . . . . . . .  	L NEAR	03FF	_TEXT
$MDO145  . . . . . . . . . . . .  	L NEAR	0422	_TEXT
$MDO165  . . . . . . . . . . . .  	L NEAR	048A	_TEXT
$MDO167  . . . . . . . . . . . .  	L NEAR	0494	_TEXT
$MDO175  . . . . . . . . . . . .  	L NEAR	04C1	_TEXT
$MDO215  . . . . . . . . . . . .  	L NEAR	05A0	_TEXT
$MDO280  . . . . . . . . . . . .  	L NEAR	05F7	_TEXT
$MDO291  . . . . . . . . . . . .  	L NEAR	0623	_TEXT
$MDO301  . . . . . . . . . . . .  	L NEAR	0652	_TEXT
$MDO310  . . . . . . . . . . . .  	L NEAR	0679	_TEXT
$MDO321  . . . . . . . . . . . .  	L NEAR	06BC	_TEXT
$MDO36 . . . . . . . . . . . . .  	L NEAR	01B9	_TEXT
$MDO76 . . . . . . . . . . . . .  	L NEAR	02AA	_TEXT
$MEN104  . . . . . . . . . . . .  	L NEAR	0334	_TEXT
$MEN107  . . . . . . . . . . . .  	L NEAR	034A	_TEXT
$MEN110  . . . . . . . . . . . .  	L NEAR	036B	_TEXT
$MEN119  . . . . . . . . . . . .  	L NEAR	03A3	_TEXT
$MEN123  . . . . . . . . . . . .  	L NEAR	03A3	_TEXT
$MEN128  . . . . . . . . . . . .  	L NEAR	03D2	_TEXT
$MEN139  . . . . . . . . . . . .  	L NEAR	0416	_TEXT
$MEN145  . . . . . . . . . . . .  	L NEAR	0480	_TEXT
$MEN146  . . . . . . . . . . . .  	L NEAR	043A	_TEXT
$MEN150  . . . . . . . . . . . .  	L NEAR	047B	_TEXT
$MEN154  . . . . . . . . . . . .  	L NEAR	047B	_TEXT
$MEN165  . . . . . . . . . . . .  	L NEAR	0588	_TEXT
$MEN167  . . . . . . . . . . . .  	L NEAR	04B1	_TEXT
$MEN175  . . . . . . . . . . . .  	L NEAR	04DA	_TEXT
$MEN180  . . . . . . . . . . . .  	L NEAR	04ED	_TEXT
$MEN187  . . . . . . . . . . . .  	L NEAR	0520	_TEXT
$MEN188  . . . . . . . . . . . .  	L NEAR	050E	_TEXT
$MEN192  . . . . . . . . . . . .  	L NEAR	0520	_TEXT
$MEN199  . . . . . . . . . . . .  	L NEAR	056E	_TEXT
$MEN20 . . . . . . . . . . . . .  	L NEAR	00DC	_TEXT
$MEN200  . . . . . . . . . . . .  	L NEAR	0566	_TEXT
$MEN202  . . . . . . . . . . . .  	L NEAR	0566	_TEXT
$MEN204  . . . . . . . . . . . .  	L NEAR	0566	_TEXT
$MEN211  . . . . . . . . . . . .  	L NEAR	057B	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-6


$MEN25 . . . . . . . . . . . . .  	L NEAR	0194	_TEXT
$MEN27 . . . . . . . . . . . . .  	L NEAR	0189	_TEXT
$MEN292  . . . . . . . . . . . .  	L NEAR	0636	_TEXT
$MEN307  . . . . . . . . . . . .  	L NEAR	0682	_TEXT
$MEN314  . . . . . . . . . . . .  	L NEAR	06A2	_TEXT
$MEN317  . . . . . . . . . . . .  	L NEAR	06C9	_TEXT
$MEN32 . . . . . . . . . . . . .  	L NEAR	01AC	_TEXT
$MEN321  . . . . . . . . . . . .  	L NEAR	06C7	_TEXT
$MEN325  . . . . . . . . . . . .  	L NEAR	075D	_TEXT
$MEN333  . . . . . . . . . . . .  	L NEAR	075D	_TEXT
$MEN36 . . . . . . . . . . . . .  	L NEAR	021F	_TEXT
$MEN367  . . . . . . . . . . . .  	L NEAR	086D	_TEXT
$MEN37 . . . . . . . . . . . . .  	L NEAR	01EF	_TEXT
$MEN388  . . . . . . . . . . . .  	L NEAR	091C	_TEXT
$MEN39 . . . . . . . . . . . . .  	L NEAR	01EF	_TEXT
$MEN392  . . . . . . . . . . . .  	L NEAR	093B	_TEXT
$MEN396  . . . . . . . . . . . .  	L NEAR	0945	_TEXT
$MEN41 . . . . . . . . . . . . .  	L NEAR	01EF	_TEXT
$MEN46 . . . . . . . . . . . . .  	L NEAR	0217	_TEXT
$MEN47 . . . . . . . . . . . . .  	L NEAR	0209	_TEXT
$MEN57 . . . . . . . . . . . . .  	L NEAR	023F	_TEXT
$MEN60 . . . . . . . . . . . . .  	L NEAR	024C	_TEXT
$MEN64 . . . . . . . . . . . . .  	L NEAR	02A7	_TEXT
$MEN65 . . . . . . . . . . . . .  	L NEAR	028B	_TEXT
$MEN69 . . . . . . . . . . . . .  	L NEAR	02A3	_TEXT
$MEN76 . . . . . . . . . . . . .  	L NEAR	02C7	_TEXT
$MEN78 . . . . . . . . . . . . .  	L NEAR	02BB	_TEXT
$MEN93 . . . . . . . . . . . . .  	L NEAR	0326	_TEXT
$MEN94 . . . . . . . . . . . . .  	L NEAR	030B	_TEXT
$MEN97 . . . . . . . . . . . . .  	L NEAR	0320	_TEXT
$MIF104  . . . . . . . . . . . .  	L NEAR	0330	_TEXT
$MIF107  . . . . . . . . . . . .  	L NEAR	0347	_TEXT
$MIF110  . . . . . . . . . . . .  	L NEAR	035B	_TEXT
$MIF112  . . . . . . . . . . . .  	L NEAR	036B	_TEXT
$MIF113  . . . . . . . . . . . .  	L NEAR	036B	_TEXT
$MIF117  . . . . . . . . . . . .  	L NEAR	0370	_TEXT
$MIF119  . . . . . . . . . . . .  	L NEAR	0394	_TEXT
$MIF120  . . . . . . . . . . . .  	L NEAR	0392	_TEXT
$MIF127  . . . . . . . . . . . .  	L NEAR	03D3	_TEXT
$MIF128  . . . . . . . . . . . .  	L NEAR	03D0	_TEXT
$MIF129  . . . . . . . . . . . .  	L NEAR	03CE	_TEXT
$MIF134  . . . . . . . . . . . .  	L NEAR	03F3	_TEXT
$MIF135  . . . . . . . . . . . .  	L NEAR	03F3	_TEXT
$MIF138  . . . . . . . . . . . .  	L NEAR	0416	_TEXT
$MIF141  . . . . . . . . . . . .  	L NEAR	0412	_TEXT
$MIF146  . . . . . . . . . . . .  	L NEAR	0437	_TEXT
$MIF150  . . . . . . . . . . . .  	L NEAR	0457	_TEXT
$MIF151  . . . . . . . . . . . .  	L NEAR	0455	_TEXT
$MIF154  . . . . . . . . . . . .  	L NEAR	046A	_TEXT
$MIF155  . . . . . . . . . . . .  	L NEAR	0468	_TEXT
$MIF158  . . . . . . . . . . . .  	L NEAR	047B	_TEXT
$MIF159  . . . . . . . . . . . .  	L NEAR	047B	_TEXT
$MIF166  . . . . . . . . . . . .  	L NEAR	04B1	_TEXT
$MIF169  . . . . . . . . . . . .  	L NEAR	04AC	_TEXT
$MIF173  . . . . . . . . . . . .  	L NEAR	04ED	_TEXT
$MIF174  . . . . . . . . . . . .  	L NEAR	04ED	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-7


$MIF175  . . . . . . . . . . . .  	L NEAR	04CE	_TEXT
$MIF180  . . . . . . . . . . . .  	L NEAR	04EA	_TEXT
$MIF187  . . . . . . . . . . . .  	L NEAR	0510	_TEXT
$MIF188  . . . . . . . . . . . .  	L NEAR	050D	_TEXT
$MIF192  . . . . . . . . . . . .  	L NEAR	0517	_TEXT
$MIF194  . . . . . . . . . . . .  	L NEAR	051E	_TEXT
$MIF199  . . . . . . . . . . . .  	L NEAR	056B	_TEXT
$MIF20 . . . . . . . . . . . . .  	L NEAR	00D8	_TEXT
$MIF200  . . . . . . . . . . . .  	L NEAR	053E	_TEXT
$MIF202  . . . . . . . . . . . .  	L NEAR	0558	_TEXT
$MIF204  . . . . . . . . . . . .  	L NEAR	0563	_TEXT
$MIF211  . . . . . . . . . . . .  	L NEAR	0577	_TEXT
$MIF216  . . . . . . . . . . . .  	L NEAR	05AF	_TEXT
$MIF23 . . . . . . . . . . . . .  	L NEAR	00F4	_TEXT
$MIF25 . . . . . . . . . . . . .  	L NEAR	017C	_TEXT
$MIF27 . . . . . . . . . . . . .  	L NEAR	0186	_TEXT
$MIF276  . . . . . . . . . . . .  	L NEAR	05DC	_TEXT
$MIF278  . . . . . . . . . . . .  	L NEAR	060C	_TEXT
$MIF279  . . . . . . . . . . . .  	L NEAR	060C	_TEXT
$MIF281  . . . . . . . . . . . .  	L NEAR	0608	_TEXT
$MIF286  . . . . . . . . . . . .  	L NEAR	061F	_TEXT
$MIF287  . . . . . . . . . . . .  	L NEAR	061F	_TEXT
$MIF290  . . . . . . . . . . . .  	L NEAR	0648	_TEXT
$MIF292  . . . . . . . . . . . .  	L NEAR	0635	_TEXT
$MIF295  . . . . . . . . . . . .  	L NEAR	0644	_TEXT
$MIF299  . . . . . . . . . . . .  	L NEAR	0667	_TEXT
$MIF300  . . . . . . . . . . . .  	L NEAR	0667	_TEXT
$MIF302  . . . . . . . . . . . .  	L NEAR	0663	_TEXT
$MIF307  . . . . . . . . . . . .  	L NEAR	0675	_TEXT
$MIF309  . . . . . . . . . . . .  	L NEAR	0682	_TEXT
$MIF31 . . . . . . . . . . . . .  	L NEAR	01AE	_TEXT
$MIF314  . . . . . . . . . . . .  	L NEAR	069E	_TEXT
$MIF317  . . . . . . . . . . . .  	L NEAR	06BC	_TEXT
$MIF318  . . . . . . . . . . . .  	L NEAR	06BA	_TEXT
$MIF32 . . . . . . . . . . . . .  	L NEAR	01AA	_TEXT
$MIF325  . . . . . . . . . . . .  	L NEAR	0705	_TEXT
$MIF326  . . . . . . . . . . . .  	L NEAR	06F6	_TEXT
$MIF327  . . . . . . . . . . . .  	L NEAR	06EF	_TEXT
$MIF330  . . . . . . . . . . . .  	L NEAR	0703	_TEXT
$MIF333  . . . . . . . . . . . .  	L NEAR	0733	_TEXT
$MIF334  . . . . . . . . . . . .  	L NEAR	0724	_TEXT
$MIF335  . . . . . . . . . . . .  	L NEAR	071D	_TEXT
$MIF338  . . . . . . . . . . . .  	L NEAR	0731	_TEXT
$MIF341  . . . . . . . . . . . .  	L NEAR	0750	_TEXT
$MIF342  . . . . . . . . . . . .  	L NEAR	0749	_TEXT
$MIF345  . . . . . . . . . . . .  	L NEAR	075D	_TEXT
$MIF349  . . . . . . . . . . . .  	L NEAR	0769	_TEXT
$MIF351  . . . . . . . . . . . .  	L NEAR	07A2	_TEXT
$MIF353  . . . . . . . . . . . .  	L NEAR	07CA	_TEXT
$MIF355  . . . . . . . . . . . .  	L NEAR	07F0	_TEXT
$MIF357  . . . . . . . . . . . .  	L NEAR	080B	_TEXT
$MIF359  . . . . . . . . . . . .  	L NEAR	081D	_TEXT
$MIF360  . . . . . . . . . . . .  	L NEAR	081D	_TEXT
$MIF363  . . . . . . . . . . . .  	L NEAR	0838	_TEXT
$MIF365  . . . . . . . . . . . .  	L NEAR	086D	_TEXT
$MIF366  . . . . . . . . . . . .  	L NEAR	086D	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-8


$MIF367  . . . . . . . . . . . .  	L NEAR	0869	_TEXT
$MIF37 . . . . . . . . . . . . .  	L NEAR	01C7	_TEXT
$MIF372  . . . . . . . . . . . .  	L NEAR	0883	_TEXT
$MIF374  . . . . . . . . . . . .  	L NEAR	089B	_TEXT
$MIF376  . . . . . . . . . . . .  	L NEAR	08C4	_TEXT
$MIF377  . . . . . . . . . . . .  	L NEAR	08C4	_TEXT
$MIF378  . . . . . . . . . . . .  	L NEAR	08BE	_TEXT
$MIF380  . . . . . . . . . . . .  	L NEAR	08C4	_TEXT
$MIF384  . . . . . . . . . . . .  	L NEAR	08E8	_TEXT
$MIF386  . . . . . . . . . . . .  	L NEAR	0903	_TEXT
$MIF388  . . . . . . . . . . . .  	L NEAR	091A	_TEXT
$MIF39 . . . . . . . . . . . . .  	L NEAR	01D5	_TEXT
$MIF391  . . . . . . . . . . . .  	L NEAR	093B	_TEXT
$MIF392  . . . . . . . . . . . .  	L NEAR	0939	_TEXT
$MIF396  . . . . . . . . . . . .  	L NEAR	0941	_TEXT
$MIF41 . . . . . . . . . . . . .  	L NEAR	01E8	_TEXT
$MIF46 . . . . . . . . . . . . .  	L NEAR	020B	_TEXT
$MIF47 . . . . . . . . . . . . .  	L NEAR	01FC	_TEXT
$MIF51 . . . . . . . . . . . . .  	L NEAR	0213	_TEXT
$MIF56 . . . . . . . . . . . . .  	L NEAR	024E	_TEXT
$MIF57 . . . . . . . . . . . . .  	L NEAR	023E	_TEXT
$MIF60 . . . . . . . . . . . . .  	L NEAR	0246	_TEXT
$MIF64 . . . . . . . . . . . . .  	L NEAR	028D	_TEXT
$MIF65 . . . . . . . . . . . . .  	L NEAR	0286	_TEXT
$MIF69 . . . . . . . . . . . . .  	L NEAR	029A	_TEXT
$MIF71 . . . . . . . . . . . . .  	L NEAR	02A3	_TEXT
$MIF75 . . . . . . . . . . . . .  	L NEAR	02D4	_TEXT
$MIF76 . . . . . . . . . . . . .  	L NEAR	02BF	_TEXT
$MIF78 . . . . . . . . . . . . .  	L NEAR	02B8	_TEXT
$MIF86 . . . . . . . . . . . . .  	L NEAR	02D4	_TEXT
$MIF87 . . . . . . . . . . . . .  	L NEAR	02D0	_TEXT
$MIF91 . . . . . . . . . . . . .  	L NEAR	02DC	_TEXT
$MIF93 . . . . . . . . . . . . .  	L NEAR	0322	_TEXT
$MIF94 . . . . . . . . . . . . .  	L NEAR	0308	_TEXT
$MIF97 . . . . . . . . . . . . .  	L NEAR	031C	_TEXT
$MIF98 . . . . . . . . . . . . .  	L NEAR	031A	_TEXT
$MLL149  . . . . . . . . . . . .  	L NEAR	0444	_TEXT
$MLL168  . . . . . . . . . . . .  	L NEAR	04A3	_TEXT
$MLL178  . . . . . . . . . . . .  	L NEAR	04D6	_TEXT
$MLL202  . . . . . . . . . . . .  	L NEAR	0550	_TEXT
$MLL214  . . . . . . . . . . . .  	L NEAR	0588	_TEXT
$MLL367  . . . . . . . . . . . .  	L NEAR	0863	_TEXT
$MLL374  . . . . . . . . . . . .  	L NEAR	088F	_TEXT
$MSR175  . . . . . . . . . . . .  	L NEAR	04ED	_TEXT
$MSR76 . . . . . . . . . . . . .  	L NEAR	02C8	_TEXT
$MXL2  . . . . . . . . . . . . .  	L NEAR	021F	_TEXT
$MXL3  . . . . . . . . . . . . .  	L NEAR	04FA	_TEXT
$MXL4  . . . . . . . . . . . . .  	L NEAR	0588	_TEXT
$M_1_FF_END  . . . . . . . . . .  	L BYTE	0A36	_TEXT
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	0A24	_TEXT
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	0A20	_TEXT
$M_2_FF_END  . . . . . . . . . .  	L BYTE	0A57	_TEXT
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	0A48	_TEXT
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	0A44	_TEXT
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-9


$M_ADD_CRLF  . . . . . . . . . .  	N PROC	03DD	_TEXT	Length = 0017
$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	096A	_TEXT
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	0952	_TEXT
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	094A	_TEXT
$M_A_00002H_END  . . . . . . . .  	L BYTE	0980	_TEXT
$M_A_00002H_MSG  . . . . . . . .  	L BYTE	096A	_TEXT
$M_A_00002H_STRUC  . . . . . . .  	L BYTE	094E	_TEXT
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BIN2ASC_REPLACE . . . . . . .  	N PROC	06CB	_TEXT	Length = 00A0
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
$M_B_00008H_END  . . . . . . . .  	L BYTE	09AF	_TEXT
$M_B_00008H_MSG  . . . . . . . .  	L BYTE	09AA	_TEXT
$M_B_00008H_STRUC  . . . . . . .  	L BYTE	098E	_TEXT
$M_B_00009H_END  . . . . . . . .  	L BYTE	09BA	_TEXT
$M_B_00009H_MSG  . . . . . . . .  	L BYTE	09AF	_TEXT
$M_B_00009H_STRUC  . . . . . . .  	L BYTE	0992	_TEXT
$M_B_0000AH_END  . . . . . . . .  	L BYTE	09C3	_TEXT
$M_B_0000AH_MSG  . . . . . . . .  	L BYTE	09BA	_TEXT
$M_B_0000AH_STRUC  . . . . . . .  	L BYTE	0996	_TEXT
$M_B_0000BH_END  . . . . . . . .  	L BYTE	09EF	_TEXT
$M_B_0000BH_MSG  . . . . . . . .  	L BYTE	09C3	_TEXT
$M_B_0000BH_STRUC  . . . . . . .  	L BYTE	099A	_TEXT
$M_B_0000CH_END  . . . . . . . .  	L BYTE	09F4	_TEXT
$M_B_0000CH_MSG  . . . . . . . .  	L BYTE	09EF	_TEXT
$M_B_0000CH_STRUC  . . . . . . .  	L BYTE	099E	_TEXT
$M_B_0000EH_END  . . . . . . . .  	L BYTE	09F7	_TEXT
$M_B_0000EH_MSG  . . . . . . . .  	L BYTE	09F4	_TEXT
$M_B_0000EH_STRUC  . . . . . . .  	L BYTE	09A2	_TEXT
$M_B_0000FH_END  . . . . . . . .  	L BYTE	0A11	_TEXT
$M_B_0000FH_MSG  . . . . . . . .  	L BYTE	09F7	_TEXT
$M_B_0000FH_STRUC  . . . . . . .  	L BYTE	09A6	_TEXT
$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	0000	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	06A3	_TEXT	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	00F7	_TEXT	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	010A	_TEXT	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	0A1C	_TEXT
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	0A40	_TEXT
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	0946	_TEXT
$M_CLASS_B_STRUC . . . . . . . .  	L BYTE	098A	_TEXT
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
$M_CLS_1 . . . . . . . . . . . .  	F PROC	0980	_TEXT	Global	Length = 000A
$M_CLS_2 . . . . . . . . . . . .  	F PROC	0A11	_TEXT	Global	Length = 000B
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	0419	_TEXT	Length = 0071
$M_CONVERTDATE . . . . . . . . .  	N PROC	081E	_TEXT	Length = 0021
$M_CONVERTTIME . . . . . . . . .  	N PROC	08E9	_TEXT	Length = 0021
$M_CON_INP . . . . . . . . . . .  	NUMBER	-0001	
$M_COUNT . . . . . . . . . . . .  	NUMBER	0002	
$M_CRIT_ERR_MASK . . . . . . . .  	NUMBER	0001	
$M_CRIT_HI . . . . . . . . . . .  	NUMBER	0027	
$M_CRIT_LO . . . . . . . . . . .  	NUMBER	0013	
$M_CRLF_SIZE . . . . . . . . . .  	NUMBER	0002	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-10


$M_CR_LF . . . . . . . . . . . .  	NUMBER	0A0D	
$M_DATE_MASK . . . . . . . . . .  	NUMBER	0010	
$M_DATE_REPLACE  . . . . . . . .  	N PROC	076B	_TEXT	Length = 0087
$M_DBCS_TERM . . . . . . . . . .  	NUMBER	0000	
$M_DCOUNT  . . . . . . . . . . .  	NUMBER	0002	
$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	0371	_TEXT	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	03A6	_TEXT	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	048A	_TEXT	Length = 0106
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	05C1	_TEXT	Length = 00C6
$M_DISPLAY_STRING  . . . . . . .  	N PROC	0335	_TEXT	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	0590	_TEXT	Length = 0031
$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	0267	_TEXT	Length = 007C
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	0687	_TEXT	Length = 001C
$M_GET_DATE  . . . . . . . . . .  	N PROC	07F2	_TEXT	Length = 001A
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	00DD	_TEXT	Length = 001A
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	03D4	_TEXT	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	F PROC	01B3	_TEXT	Global	Length = 00A5
$M_GET_TIME  . . . . . . . . . .  	N PROC	08C9	_TEXT	Length = 0020
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	FFFF	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0008	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	03F4	_TEXT	Length = 0025
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	F PROC	0A36	_TEXT	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	F PROC	0A57	_TEXT	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	0002	
$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	0089	
$M_RT  . . . . . . . . . . . . .  	L BYTE	0000	_DATA	Global
$M_SECOND_THOU . . . . . . . . .  	NUMBER	0006	
$M_SERVICE . . . . . . . . . . .  	NUMBER	0000	
$M_SET_LEN_IN_CX . . . . . . . .  	N PROC	0258	_TEXT	Length = 000F
$M_SINGLE_CHAR . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:15:59
C	to Message Retriever					 ;AN000;                         Symbols-11


$M_SIZE_MASK . . . . . . . . . .  	NUMBER	0030	
$M_SL  . . . . . . . . . . . . .  	TEXT  DS:[SI]		
$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_TIME_REPLACE  . . . . . . . .  	N PROC	083F	_TEXT	Length = 008A
$M_TYPE_MASK . . . . . . . . . .  	NUMBER	000F	
$M_UNLIM_W . . . . . . . . . . .  	NUMBER	0000	
$M_VERSION_CHECK . . . . . . . .  	N PROC	0166	_TEXT	Length = 002F
$M_WAIT_FOR_INPUT  . . . . . . .  	N PROC	090A	_TEXT	Length = 003C
$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
$M_YEAR  . . . . . . . . . . . .  	N PROC	080C	_TEXT	Length = 0012
??0000 . . . . . . . . . . . . .  	L NEAR	0250	_TEXT
@CPU . . . . . . . . . . . . . .  	TEXT  257		
@FILENAME  . . . . . . . . . . .  	TEXT  _msgret		
@VERSION . . . . . . . . . . . .  	TEXT  510		
_sysdispmsg  . . . . . . . . . .  	N PROC	0AE9	_TEXT	Global	Length = 0044
_sysgetmsg . . . . . . . . . . .  	N PROC	0AA5	_TEXT	Global	Length = 0044
_sysloadmsg  . . . . . . . . . .  	N PROC	0A61	_TEXT	Global	Length = 0044


  10688 Source  Lines
  18002 Total   Lines
    554 Symbols

  44354 + 207527 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
