Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-1


				page	60,132
				name	_msgret
				title	C	to Message Retriever
				;-------------------------------------------------------------------
				;
				;	MODULE: 	_msgret
				;
				;	PURPOSE:	Supplies an interface between C programs and
				;			the DOS 3.3 message retriever
				;
				;	CALLING FORMAT:
				;			sysloadmsg(&inregs,&outregs);
				;			sysdispmsg(&inregs,&outregs);
				;
				;	DATE:		5-21-87
				;
				;-------------------------------------------------------------------
				
					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
			     C	;;
			     C	;; Linkage Instructions:
			     C	;; --------------------
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-2
DOS - Message Retriever - SYSTEM CONTROL file               

			     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	
			     C	; SYSDISPMSG and SYSGETMSG Equates
			     C	
 = 0000                      C	MSG_SER_CLASS		EQU	00H    ;; Message Service Class (reserved)
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-3
DOS - Message Retriever - SYSTEM CONTROL file               

 = 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
 = 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 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-4
DOS - Message Retriever - SYSTEM CONTROL file               

				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
 = 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 - "."
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-5
DOS - Message Retriever - SYSTEM CONTROL file               

 = 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  ;;  |
 = 0000                      C	GETmsg			 =	FALSE  ;;  |
 = 0000                      C	LOADmsg 		 =	FALSE  ;;  |
 = 0000                      C	DISPLAYmsg		 =	FALSE  ;;   } Set default cases
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-6
DOS - Message Retriever - SYSTEM CONTROL file               

 = 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
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C						  ;
			     C	MSG_SERVICES Macro   varlist		  ;  MACRO used in source routine
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-7
DOS - Message Retriever - SYSTEM CONTROL file               

			     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>
			     C						    ;AN003; IF it IS a service (defined above)
			     C		 IFDIF <var2>,<serv2>
			     C		 ELSE				  ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-8
DOS - Message Retriever - SYSTEM CONTROL file               

			     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						 ;
			     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						 ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-9
DOS - Message Retriever - SYSTEM CONTROL file               

			     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	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
					MSG_UTILNAME <RESTORE>		;IDENTIFY THE COMPONENT 		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      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  0001[                 C1	    $M_CLASS_ADDRS   DD        $M_NUM_CLS DUP(0)	     ;;AN000;; Allow pointers to specified c
				lasses
	   00000000          C1	
			 ]   C1	
			     C1	
 0030  FFFFFFFF              C1	    $M_CLS_TERM      DD        -1			     ;;AN000;;
 0034  00000000              C1	    $M_DBCS_VEC      DD        0			     ;;AN000;; Save DBCS vector
 0038  0000                  C1	    $M_HANDLE	     DW        ?			     ;;AN000;;
 003A  00                    C1	    $M_SIZE	     DB        0			     ;;AN000;;
 003B  0D 0A                 C1	    $M_CRLF	     DB        0DH,0AH			     ;;AN004;; CR LF message
 003D  00                    C1	    $M_CLASS	     DB        ?			     ;;AN004;; Saved class
 003E  0000                  C1	    $M_RETURN_ADDR   DW        ?			     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-11
DOS - Message Retriever - MSGSTR.INC Module                 

 0040  0000                  C1	    $M_MSG_NUM	     DW        $M_NULL			     ;;AN000;;
 0042  000A                  C1	    $M_DIVISOR	     DW        10			     ;;AN000;; Default = 10 (must be a WORD 
				for division)
 0044  0040[                 C1	    $M_TEMP_BUF      DB        $M_TEMP_BUF_SZ DUP("$")	     ;;AN000;; Temporary buffer
	   24                C1	
			 ]   C1	
			     C1	
 0084  24                    C1	    $M_BUF_TERM      DB        "$"			     ;;AN000;;
			     C1	
 0085                        C1	$M_RES_ADDRS ENDS					     ;;AN000;;
			     C1	$M_COUNTRY_INFO STRUC					     ;;AN000;; Expected Country infomation
			     C1								     ;;
 0000  0044[                 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	
 0044  0000                  C1	    $M_DATE_FORMAT   DW       ? 			     ;;AN000;; <------- Date Format
 0046  0005[                 C1	    $M_CURR_SEPARA   DB       5 DUP(?)			     ;;AN000;;
	   ??                C1	
			 ]   C1	
			     C1	
 004B  00 00                 C1	    $M_THOU_SEPARA   DB       ?,0			     ;;AN000;; <------- Thou Separator
 004D  00 00                 C1	    $M_DECI_SEPARA   DB       ?,0			     ;;AN000;; <------- Decimal Separator
 004F  00 00                 C1	    $M_DATE_SEPARA   DB       ?,0			     ;;AN000;; <------- Date Separator
 0051  00 00                 C1	    $M_TIME_SEPARA   DB       ?,0			     ;;AN000;; <------- Time Separator
 0053  00                    C1	    $M_CURR_FORMAT   DB       ? 			     ;;AN000;;
 0054  00                    C1	    $M_SIG_DIGS_CU   DB       ? 			     ;;AN000;;
 0055  00                    C1	    $M_TIME_FORMAT   DB       ? 			     ;;AN000;; <------- Time Format
			     C1								     ;;
 0056                        C1	$M_COUNTRY_INFO ENDS					     ;;AN000;;
				
					.8087
 0000				_TEXT	SEGMENT WORD PUBLIC 'CODE'
 0000				_TEXT	ENDS
 0000				_DATA	SEGMENT WORD PUBLIC 'DATA'
 0000				_DATA	ENDS
 0000				CONST	SEGMENT WORD PUBLIC 'CONST'
 0000				CONST	ENDS
 0000				_BSS	SEGMENT WORD PUBLIC 'BSS'
 0000				_BSS	ENDS
				DGROUP	GROUP	CONST, _BSS, _DATA
					ASSUME	CS: _TEXT, DS: _TEXT, SS: DGROUP, ES: DGROUP
				
				
					public	_sysloadmsg
					public	_sysdispmsg
				
				;-------------------------------------------------------------------
				;-------------------------------------------------------------------
				
 0000				_DATA	segment
				.LIST
				.CREF
 00E4				_DATA	ends
				
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-12
DOS - Message Retriever - MSGRES.TAB Module                 

				
 0000				_TEXT	segment
				
				;-------------------------------------------------------------------
									;DEFAULT=CHECK DOS VERSION
									;DEFAULT=NEARmsg
									;DEFAULT=INPUTmsg
									;DEFAULT=NUMmsg
									;DEFAULT=NO TIMEmsg
									;DEFAULT=NO DATEmsg
				.LIST
				.CREF
				;-------------------------------------------------------------------
				
 0CB2				_sysloadmsg proc near
				
 0CB2  55				push	bp			; save user's base pointer
 0CB3  8B EC				mov	bp,sp			; set bp to current sp
 0CB5  57				push	di			; save some registers
 0CB6  56				push	si
				
				;	copy C inregs into proper registers
				
 0CB7  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)
				
				;-------------------------------------------------------------------
				
 0CBA  8B 45 0A				mov	ax,[di+0ah]		; load di
 0CBD  50				push	ax			; the di value from inregs is now on stack
				
 0CBE  8B 05				mov	ax,[di+00]		; get inregs.x.ax
 0CC0  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx
 0CC3  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx
 0CC6  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx
 0CC9  8B 75 08				mov	si,[di+08]		; get inregs.x.si
 0CCC  5F				pop	di			; get inregs.x.di from stack
				
 0CCD  55				push	bp			; save base pointer
				
				;-------------------------------------------------------------------
 0CCE  9A 001C ---- R			call	sysloadmsg		; call the message retriever
				;-------------------------------------------------------------------
				
 0CD3  5D				pop	bp			; restore base pointer
 0CD4  57				push	di			; the di value from call is now on stack
 0CD5  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)
				
 0CD8  89 05				mov	[di+00],ax		; load outregs.x.ax
 0CDA  89 5D 02				mov	[di+02],bx		; load outregs.x.bx
 0CDD  89 4D 04				mov	[di+04],cx		; load outregs.x.cx
 0CE0  89 55 06				mov	[di+06],dx		; load outregs.x.dx
 0CE3  89 75 08				mov	[di+08],si		; load outregs.x.si
				
 0CE6  9F				lahf				; get flags into ax
 0CE7  8A C4				mov	al,ah			; move into low byte
 0CE9  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-13
DOS - Message Retriever - DISPMSG.ASM Module                

				
 0CEC  58				pop	ax			; get di from stack
 0CED  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di
				
				;-------------------------------------------------------------------
				
 0CF0  5E				pop	si			; restore registers
 0CF1  5F				pop	di
 0CF2  8B E5				mov	sp,bp			; restore sp
 0CF4  5D				pop	bp			; restore user's bp
 0CF5  C3				ret
				
 0CF6				_sysloadmsg endp
				
				
				;_sysgetmsg proc near
				;
				;	 push	 bp			 ; save user's base pointer
				;	 mov	 bp,sp			 ; set bp to current sp
				;	 push	 di			 ; save some registers
				;	 push	 si
				;
				;;	 copy C inregs into proper registers
				;
				;	 mov	 di,[bp+4]		 ; fix di (arg 0)
				;
				;;-------------------------------------------------------------------
				;
				;	 mov	 ax,[di+0ah]		 ; load di
				;	 push	 ax			 ; the di value from inregs is now on stack
				;
				;	 mov	 ax,[di+00]		 ; get inregs.x.ax
				;	 mov	 bx,[di+02]		 ; get inregs.x.bx
				;	 mov	 cx,[di+04]		 ; get inregs.x.cx
				;	 mov	 dx,[di+06]		 ; get inregs.x.dx
				;	 mov	 si,[di+08]		 ; get inregs.x.si
				;	 pop	 di			 ; get inregs.x.di from stack
				;
				;	 push	 bp			 ; save base pointer
				;
				;;-------------------------------------------------------------------
				;	 call	 sysgetmsg		 ; call the message retriever
				;;-------------------------------------------------------------------
				;
				;	 pop	 bp			 ; restore base pointer
				;	 push	 di			 ; the di value from call is now on stack
				;	 mov	 di,[bp+6]		 ; fix di (arg 1)
				;
				;	 mov	 [di+00],ax		 ; load outregs.x.ax
				;	 mov	 [di+02],bx		 ; load outregs.x.bx
				;	 mov	 [di+04],cx		 ; load outregs.x.cx
				;	 mov	 [di+06],dx		 ; load outregs.x.dx
				;	 mov	 [di+08],si		 ; load outregs.x.si
				;
				;	 lahf				 ; get flags into ax
				;	 mov	 al,ah			 ; move into low byte
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-14
DOS - Message Retriever - DISPMSG.ASM Module                

				;	 mov	 [di+0ch],ax		 ; load outregs.x.cflag
				;
				;	 pop	 ax			 ; get di from stack
				;	 mov	 [di+0ah],ax		 ; load outregs.x.di
				;
				;;-------------------------------------------------------------------
				;
				;	 pop	 si			 ; restore registers
				;	 pop	 di
				;	 mov	 sp,bp			 ; restore sp
				;	 pop	 bp			 ; restore user's bp
				;	 ret
				;
				;_sysgetmsg endp
				
 0CF6				_sysdispmsg proc near
				
 0CF6  55				push	bp			; save user's base pointer
 0CF7  8B EC				mov	bp,sp			; set bp to current sp
 0CF9  57				push	di			; save some registers
 0CFA  56				push	si
				
				;	copy C inregs into proper registers
				
 0CFB  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)
				
				;-------------------------------------------------------------------
				
 0CFE  8B 45 0A				mov	ax,[di+0ah]		; load di
 0D01  50				push	ax			; the di value from inregs is now on stack
				
 0D02  8B 05				mov	ax,[di+00]		; get inregs.x.ax
 0D04  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx
 0D07  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx
 0D0A  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx
 0D0D  8B 75 08				mov	si,[di+08]		; get inregs.x.si
 0D10  5F				pop	di			; get inregs.x.di from stack
				
 0D11  55				push	bp			; save base pointer
				
				;-------------------------------------------------------------------
 0D12  9A 0187 ---- R			call	sysdispmsg		; call the message retriever
				;-------------------------------------------------------------------
				
 0D17  5D				pop	bp			; restore base pointer
 0D18  57				push	di			; the di value from call is now on stack
 0D19  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)
				
 0D1C  89 05				mov	[di+00],ax		; load outregs.x.ax
 0D1E  89 5D 02				mov	[di+02],bx		; load outregs.x.bx
 0D21  89 4D 04				mov	[di+04],cx		; load outregs.x.cx
 0D24  89 55 06				mov	[di+06],dx		; load outregs.x.dx
 0D27  89 75 08				mov	[di+08],si		; load outregs.x.si
				
 0D2A  9F				lahf				; get flags into ax
 0D2B  8A C4				mov	al,ah			; move into low byte
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-15
DOS - Message Retriever - DISPMSG.ASM Module                

 0D2D  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag
				
 0D30  58				pop	ax			; get di from stack
 0D31  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di
				
				;-------------------------------------------------------------------
				
 0D34  5E				pop	si			; restore registers
 0D35  5F				pop	di
 0D36  8B E5				mov	sp,bp			; restore sp
 0D38  5D				pop	bp			; restore user's bp
 0D39  C3				ret
				
 0D3A				_sysdispmsg 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
			     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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-16
DOS - Message Retriever - DISPMSG.ASM Module                

			     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					       ;
			     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				       ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Page     1-17
DOS - Message Retriever - DISPMSG.ASM Module                

			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	
			     C	
				
 0D3A				_TEXT	ends				; end code segment
					end

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      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  . . . . . . . .  	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
$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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-2


  $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

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

DGROUP . . . . . . . . . . . . .  	GROUP
  CONST  . . . . . . . . . . . .  	0000	WORD	PUBLIC	'CONST'
  _BSS . . . . . . . . . . . . .  	0000	WORD	PUBLIC	'BSS'
  _DATA  . . . . . . . . . . . .  	00E4	WORD	PUBLIC	'DATA'
_TEXT  . . . . . . . . . . . . .  	0D3A	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	016B	_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	001C	_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	010F	_TEXT
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	0146	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-3


CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	0118	_TEXT
CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	0141	_TEXT
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	0145	_TEXT
CLASS_1_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_2_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_A_MESSAGECOUNT . . . . . .  	NUMBER	001B	
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	

GETMSG . . . . . . . . . . . . .  	NUMBER	0000	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-4



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	0187	_TEXT	Length = 0052
SYSLOADMSG . . . . . . . . . . .  	F PROC	001C	_TEXT	Length = 00B3

TAB  . . . . . . . . . . . . . .  	NUMBER	0009	
TIMEMSG  . . . . . . . . . . . .  	NUMBER	0000	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-5


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	023A	_TEXT
$MDO139  . . . . . . . . . . . .  	L NEAR	02A3	_TEXT
$MDO145  . . . . . . . . . . . .  	L NEAR	02C6	_TEXT
$MDO165  . . . . . . . . . . . .  	L NEAR	032E	_TEXT
$MDO167  . . . . . . . . . . . .  	L NEAR	0338	_TEXT
$MDO175  . . . . . . . . . . . .  	L NEAR	0365	_TEXT
$MDO215  . . . . . . . . . . . .  	L NEAR	0441	_TEXT
$MDO219  . . . . . . . . . . . .  	L NEAR	0468	_TEXT
$MDO259  . . . . . . . . . . . .  	L NEAR	0559	_TEXT
$MDO280  . . . . . . . . . . . .  	L NEAR	05C8	_TEXT
$MDO291  . . . . . . . . . . . .  	L NEAR	05F4	_TEXT
$MDO301  . . . . . . . . . . . .  	L NEAR	0623	_TEXT
$MDO310  . . . . . . . . . . . .  	L NEAR	064A	_TEXT
$MDO321  . . . . . . . . . . . .  	L NEAR	068D	_TEXT
$MEN104  . . . . . . . . . . . .  	L NEAR	01D8	_TEXT
$MEN107  . . . . . . . . . . . .  	L NEAR	01EE	_TEXT
$MEN110  . . . . . . . . . . . .  	L NEAR	020F	_TEXT
$MEN119  . . . . . . . . . . . .  	L NEAR	0247	_TEXT
$MEN123  . . . . . . . . . . . .  	L NEAR	0247	_TEXT
$MEN128  . . . . . . . . . . . .  	L NEAR	0276	_TEXT
$MEN139  . . . . . . . . . . . .  	L NEAR	02BA	_TEXT
$MEN145  . . . . . . . . . . . .  	L NEAR	0324	_TEXT
$MEN146  . . . . . . . . . . . .  	L NEAR	02DE	_TEXT
$MEN150  . . . . . . . . . . . .  	L NEAR	031F	_TEXT
$MEN154  . . . . . . . . . . . .  	L NEAR	031F	_TEXT
$MEN165  . . . . . . . . . . . .  	L NEAR	0429	_TEXT
$MEN167  . . . . . . . . . . . .  	L NEAR	0355	_TEXT
$MEN175  . . . . . . . . . . . .  	L NEAR	037E	_TEXT
$MEN180  . . . . . . . . . . . .  	L NEAR	0391	_TEXT
$MEN187  . . . . . . . . . . . .  	L NEAR	03C4	_TEXT
$MEN188  . . . . . . . . . . . .  	L NEAR	03B2	_TEXT
$MEN192  . . . . . . . . . . . .  	L NEAR	03C4	_TEXT
$MEN199  . . . . . . . . . . . .  	L NEAR	040F	_TEXT
$MEN20 . . . . . . . . . . . . .  	L NEAR	00CE	_TEXT
$MEN200  . . . . . . . . . . . .  	L NEAR	0407	_TEXT
$MEN202  . . . . . . . . . . . .  	L NEAR	0407	_TEXT
$MEN204  . . . . . . . . . . . .  	L NEAR	0407	_TEXT
$MEN211  . . . . . . . . . . . .  	L NEAR	041C	_TEXT
$MEN219  . . . . . . . . . . . .  	L NEAR	04CE	_TEXT
$MEN220  . . . . . . . . . . . .  	L NEAR	049E	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-6


$MEN222  . . . . . . . . . . . .  	L NEAR	049E	_TEXT
$MEN224  . . . . . . . . . . . .  	L NEAR	049E	_TEXT
$MEN229  . . . . . . . . . . . .  	L NEAR	04C6	_TEXT
$MEN230  . . . . . . . . . . . .  	L NEAR	04B8	_TEXT
$MEN240  . . . . . . . . . . . .  	L NEAR	04EE	_TEXT
$MEN243  . . . . . . . . . . . .  	L NEAR	04FB	_TEXT
$MEN247  . . . . . . . . . . . .  	L NEAR	0556	_TEXT
$MEN248  . . . . . . . . . . . .  	L NEAR	053A	_TEXT
$MEN25 . . . . . . . . . . . . .  	L NEAR	0186	_TEXT
$MEN252  . . . . . . . . . . . .  	L NEAR	0552	_TEXT
$MEN259  . . . . . . . . . . . .  	L NEAR	0576	_TEXT
$MEN261  . . . . . . . . . . . .  	L NEAR	056A	_TEXT
$MEN27 . . . . . . . . . . . . .  	L NEAR	017B	_TEXT
$MEN292  . . . . . . . . . . . .  	L NEAR	0607	_TEXT
$MEN307  . . . . . . . . . . . .  	L NEAR	0653	_TEXT
$MEN314  . . . . . . . . . . . .  	L NEAR	0673	_TEXT
$MEN317  . . . . . . . . . . . .  	L NEAR	069A	_TEXT
$MEN321  . . . . . . . . . . . .  	L NEAR	0698	_TEXT
$MEN325  . . . . . . . . . . . .  	L NEAR	072E	_TEXT
$MEN333  . . . . . . . . . . . .  	L NEAR	072E	_TEXT
$MEN388  . . . . . . . . . . . .  	L NEAR	0822	_TEXT
$MEN392  . . . . . . . . . . . .  	L NEAR	0841	_TEXT
$MEN396  . . . . . . . . . . . .  	L NEAR	084B	_TEXT
$MEN93 . . . . . . . . . . . . .  	L NEAR	01CA	_TEXT
$MEN94 . . . . . . . . . . . . .  	L NEAR	01AF	_TEXT
$MEN97 . . . . . . . . . . . . .  	L NEAR	01C4	_TEXT
$MIF104  . . . . . . . . . . . .  	L NEAR	01D4	_TEXT
$MIF107  . . . . . . . . . . . .  	L NEAR	01EB	_TEXT
$MIF110  . . . . . . . . . . . .  	L NEAR	01FF	_TEXT
$MIF112  . . . . . . . . . . . .  	L NEAR	020F	_TEXT
$MIF113  . . . . . . . . . . . .  	L NEAR	020F	_TEXT
$MIF117  . . . . . . . . . . . .  	L NEAR	0214	_TEXT
$MIF119  . . . . . . . . . . . .  	L NEAR	0238	_TEXT
$MIF120  . . . . . . . . . . . .  	L NEAR	0236	_TEXT
$MIF127  . . . . . . . . . . . .  	L NEAR	0277	_TEXT
$MIF128  . . . . . . . . . . . .  	L NEAR	0274	_TEXT
$MIF129  . . . . . . . . . . . .  	L NEAR	0272	_TEXT
$MIF134  . . . . . . . . . . . .  	L NEAR	0297	_TEXT
$MIF135  . . . . . . . . . . . .  	L NEAR	0297	_TEXT
$MIF138  . . . . . . . . . . . .  	L NEAR	02BA	_TEXT
$MIF141  . . . . . . . . . . . .  	L NEAR	02B6	_TEXT
$MIF146  . . . . . . . . . . . .  	L NEAR	02DB	_TEXT
$MIF150  . . . . . . . . . . . .  	L NEAR	02FB	_TEXT
$MIF151  . . . . . . . . . . . .  	L NEAR	02F9	_TEXT
$MIF154  . . . . . . . . . . . .  	L NEAR	030E	_TEXT
$MIF155  . . . . . . . . . . . .  	L NEAR	030C	_TEXT
$MIF158  . . . . . . . . . . . .  	L NEAR	031F	_TEXT
$MIF159  . . . . . . . . . . . .  	L NEAR	031F	_TEXT
$MIF166  . . . . . . . . . . . .  	L NEAR	0355	_TEXT
$MIF169  . . . . . . . . . . . .  	L NEAR	0350	_TEXT
$MIF173  . . . . . . . . . . . .  	L NEAR	0391	_TEXT
$MIF174  . . . . . . . . . . . .  	L NEAR	0391	_TEXT
$MIF175  . . . . . . . . . . . .  	L NEAR	0372	_TEXT
$MIF180  . . . . . . . . . . . .  	L NEAR	038E	_TEXT
$MIF187  . . . . . . . . . . . .  	L NEAR	03B4	_TEXT
$MIF188  . . . . . . . . . . . .  	L NEAR	03B1	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-7


$MIF192  . . . . . . . . . . . .  	L NEAR	03BB	_TEXT
$MIF194  . . . . . . . . . . . .  	L NEAR	03C2	_TEXT
$MIF199  . . . . . . . . . . . .  	L NEAR	040C	_TEXT
$MIF20 . . . . . . . . . . . . .  	L NEAR	00CA	_TEXT
$MIF200  . . . . . . . . . . . .  	L NEAR	03E2	_TEXT
$MIF202  . . . . . . . . . . . .  	L NEAR	03FC	_TEXT
$MIF204  . . . . . . . . . . . .  	L NEAR	0407	_TEXT
$MIF211  . . . . . . . . . . . .  	L NEAR	0418	_TEXT
$MIF216  . . . . . . . . . . . .  	L NEAR	0450	_TEXT
$MIF220  . . . . . . . . . . . .  	L NEAR	0476	_TEXT
$MIF222  . . . . . . . . . . . .  	L NEAR	0484	_TEXT
$MIF224  . . . . . . . . . . . .  	L NEAR	0497	_TEXT
$MIF229  . . . . . . . . . . . .  	L NEAR	04BA	_TEXT
$MIF23 . . . . . . . . . . . . .  	L NEAR	00E6	_TEXT
$MIF230  . . . . . . . . . . . .  	L NEAR	04AB	_TEXT
$MIF234  . . . . . . . . . . . .  	L NEAR	04C2	_TEXT
$MIF239  . . . . . . . . . . . .  	L NEAR	04FD	_TEXT
$MIF240  . . . . . . . . . . . .  	L NEAR	04ED	_TEXT
$MIF243  . . . . . . . . . . . .  	L NEAR	04F5	_TEXT
$MIF247  . . . . . . . . . . . .  	L NEAR	053C	_TEXT
$MIF248  . . . . . . . . . . . .  	L NEAR	0535	_TEXT
$MIF25 . . . . . . . . . . . . .  	L NEAR	016E	_TEXT
$MIF252  . . . . . . . . . . . .  	L NEAR	0549	_TEXT
$MIF254  . . . . . . . . . . . .  	L NEAR	0552	_TEXT
$MIF258  . . . . . . . . . . . .  	L NEAR	0583	_TEXT
$MIF259  . . . . . . . . . . . .  	L NEAR	056E	_TEXT
$MIF261  . . . . . . . . . . . .  	L NEAR	0567	_TEXT
$MIF269  . . . . . . . . . . . .  	L NEAR	0583	_TEXT
$MIF27 . . . . . . . . . . . . .  	L NEAR	0178	_TEXT
$MIF270  . . . . . . . . . . . .  	L NEAR	057F	_TEXT
$MIF274  . . . . . . . . . . . .  	L NEAR	058B	_TEXT
$MIF276  . . . . . . . . . . . .  	L NEAR	05AD	_TEXT
$MIF278  . . . . . . . . . . . .  	L NEAR	05DD	_TEXT
$MIF279  . . . . . . . . . . . .  	L NEAR	05DD	_TEXT
$MIF281  . . . . . . . . . . . .  	L NEAR	05D9	_TEXT
$MIF286  . . . . . . . . . . . .  	L NEAR	05F0	_TEXT
$MIF287  . . . . . . . . . . . .  	L NEAR	05F0	_TEXT
$MIF290  . . . . . . . . . . . .  	L NEAR	0619	_TEXT
$MIF292  . . . . . . . . . . . .  	L NEAR	0606	_TEXT
$MIF295  . . . . . . . . . . . .  	L NEAR	0615	_TEXT
$MIF299  . . . . . . . . . . . .  	L NEAR	0638	_TEXT
$MIF300  . . . . . . . . . . . .  	L NEAR	0638	_TEXT
$MIF302  . . . . . . . . . . . .  	L NEAR	0634	_TEXT
$MIF307  . . . . . . . . . . . .  	L NEAR	0646	_TEXT
$MIF309  . . . . . . . . . . . .  	L NEAR	0653	_TEXT
$MIF314  . . . . . . . . . . . .  	L NEAR	066F	_TEXT
$MIF317  . . . . . . . . . . . .  	L NEAR	068D	_TEXT
$MIF318  . . . . . . . . . . . .  	L NEAR	068B	_TEXT
$MIF325  . . . . . . . . . . . .  	L NEAR	06D6	_TEXT
$MIF326  . . . . . . . . . . . .  	L NEAR	06C7	_TEXT
$MIF327  . . . . . . . . . . . .  	L NEAR	06C0	_TEXT
$MIF330  . . . . . . . . . . . .  	L NEAR	06D4	_TEXT
$MIF333  . . . . . . . . . . . .  	L NEAR	0704	_TEXT
$MIF334  . . . . . . . . . . . .  	L NEAR	06F5	_TEXT
$MIF335  . . . . . . . . . . . .  	L NEAR	06EE	_TEXT
$MIF338  . . . . . . . . . . . .  	L NEAR	0702	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-8


$MIF341  . . . . . . . . . . . .  	L NEAR	0721	_TEXT
$MIF342  . . . . . . . . . . . .  	L NEAR	071A	_TEXT
$MIF345  . . . . . . . . . . . .  	L NEAR	072E	_TEXT
$MIF349  . . . . . . . . . . . .  	L NEAR	073A	_TEXT
$MIF351  . . . . . . . . . . . .  	L NEAR	0773	_TEXT
$MIF353  . . . . . . . . . . . .  	L NEAR	079B	_TEXT
$MIF355  . . . . . . . . . . . .  	L NEAR	07C1	_TEXT
$MIF357  . . . . . . . . . . . .  	L NEAR	07DC	_TEXT
$MIF359  . . . . . . . . . . . .  	L NEAR	07EE	_TEXT
$MIF360  . . . . . . . . . . . .  	L NEAR	07EE	_TEXT
$MIF363  . . . . . . . . . . . .  	L NEAR	0809	_TEXT
$MIF388  . . . . . . . . . . . .  	L NEAR	0820	_TEXT
$MIF391  . . . . . . . . . . . .  	L NEAR	0841	_TEXT
$MIF392  . . . . . . . . . . . .  	L NEAR	083F	_TEXT
$MIF396  . . . . . . . . . . . .  	L NEAR	0847	_TEXT
$MIF93 . . . . . . . . . . . . .  	L NEAR	01C6	_TEXT
$MIF94 . . . . . . . . . . . . .  	L NEAR	01AC	_TEXT
$MIF97 . . . . . . . . . . . . .  	L NEAR	01C0	_TEXT
$MIF98 . . . . . . . . . . . . .  	L NEAR	01BE	_TEXT
$MLL149  . . . . . . . . . . . .  	L NEAR	02E8	_TEXT
$MLL168  . . . . . . . . . . . .  	L NEAR	0347	_TEXT
$MLL178  . . . . . . . . . . . .  	L NEAR	037A	_TEXT
$MLL202  . . . . . . . . . . . .  	L NEAR	03F4	_TEXT
$MLL214  . . . . . . . . . . . .  	L NEAR	0429	_TEXT
$MSR175  . . . . . . . . . . . .  	L NEAR	0391	_TEXT
$MSR259  . . . . . . . . . . . .  	L NEAR	0577	_TEXT
$MXL3  . . . . . . . . . . . . .  	L NEAR	039E	_TEXT
$MXL4  . . . . . . . . . . . . .  	L NEAR	0429	_TEXT
$MXL5  . . . . . . . . . . . . .  	L NEAR	04CE	_TEXT
$M_1_FF_END  . . . . . . . . . .  	L BYTE	0C87	_TEXT
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	0C75	_TEXT
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	0C71	_TEXT
$M_2_FF_END  . . . . . . . . . .  	L BYTE	0CA8	_TEXT
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	0C99	_TEXT
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	0C95	_TEXT
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
$M_ADD_CRLF  . . . . . . . . . .  	N PROC	0281	_TEXT	Length = 0017
$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	08D4	_TEXT
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	08BC	_TEXT
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	0850	_TEXT
$M_A_00002H_END  . . . . . . . .  	L BYTE	08FE	_TEXT
$M_A_00002H_MSG  . . . . . . . .  	L BYTE	08D4	_TEXT
$M_A_00002H_STRUC  . . . . . . .  	L BYTE	0854	_TEXT
$M_A_00003H_END  . . . . . . . .  	L BYTE	091F	_TEXT
$M_A_00003H_MSG  . . . . . . . .  	L BYTE	08FE	_TEXT
$M_A_00003H_STRUC  . . . . . . .  	L BYTE	0858	_TEXT
$M_A_00005H_END  . . . . . . . .  	L BYTE	092E	_TEXT
$M_A_00005H_MSG  . . . . . . . .  	L BYTE	091F	_TEXT
$M_A_00005H_STRUC  . . . . . . .  	L BYTE	085C	_TEXT
$M_A_00006H_END  . . . . . . . .  	L BYTE	094E	_TEXT
$M_A_00006H_MSG  . . . . . . . .  	L BYTE	092E	_TEXT
$M_A_00006H_STRUC  . . . . . . .  	L BYTE	0860	_TEXT
$M_A_00007H_END  . . . . . . . .  	L BYTE	097A	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-9


$M_A_00007H_MSG  . . . . . . . .  	L BYTE	094E	_TEXT
$M_A_00007H_STRUC  . . . . . . .  	L BYTE	0864	_TEXT
$M_A_00008H_END  . . . . . . . .  	L BYTE	09A5	_TEXT
$M_A_00008H_MSG  . . . . . . . .  	L BYTE	097A	_TEXT
$M_A_00008H_STRUC  . . . . . . .  	L BYTE	0868	_TEXT
$M_A_00009H_END  . . . . . . . .  	L BYTE	09CC	_TEXT
$M_A_00009H_MSG  . . . . . . . .  	L BYTE	09A5	_TEXT
$M_A_00009H_STRUC  . . . . . . .  	L BYTE	086C	_TEXT
$M_A_0000AH_END  . . . . . . . .  	L BYTE	09EE	_TEXT
$M_A_0000AH_MSG  . . . . . . . .  	L BYTE	09CC	_TEXT
$M_A_0000AH_STRUC  . . . . . . .  	L BYTE	0870	_TEXT
$M_A_0000BH_END  . . . . . . . .  	L BYTE	0A3B	_TEXT
$M_A_0000BH_MSG  . . . . . . . .  	L BYTE	09EE	_TEXT
$M_A_0000BH_STRUC  . . . . . . .  	L BYTE	0874	_TEXT
$M_A_0000CH_END  . . . . . . . .  	L BYTE	0A5E	_TEXT
$M_A_0000CH_MSG  . . . . . . . .  	L BYTE	0A3B	_TEXT
$M_A_0000CH_STRUC  . . . . . . .  	L BYTE	0878	_TEXT
$M_A_0000DH_END  . . . . . . . .  	L BYTE	0A82	_TEXT
$M_A_0000DH_MSG  . . . . . . . .  	L BYTE	0A5E	_TEXT
$M_A_0000DH_STRUC  . . . . . . .  	L BYTE	087C	_TEXT
$M_A_0000EH_END  . . . . . . . .  	L BYTE	0AAB	_TEXT
$M_A_0000EH_MSG  . . . . . . . .  	L BYTE	0A82	_TEXT
$M_A_0000EH_STRUC  . . . . . . .  	L BYTE	0880	_TEXT
$M_A_0000FH_END  . . . . . . . .  	L BYTE	0AC3	_TEXT
$M_A_0000FH_MSG  . . . . . . . .  	L BYTE	0AAB	_TEXT
$M_A_0000FH_STRUC  . . . . . . .  	L BYTE	0884	_TEXT
$M_A_00010H_END  . . . . . . . .  	L BYTE	0B06	_TEXT
$M_A_00010H_MSG  . . . . . . . .  	L BYTE	0AC3	_TEXT
$M_A_00010H_STRUC  . . . . . . .  	L BYTE	0888	_TEXT
$M_A_00011H_END  . . . . . . . .  	L BYTE	0B26	_TEXT
$M_A_00011H_MSG  . . . . . . . .  	L BYTE	0B06	_TEXT
$M_A_00011H_STRUC  . . . . . . .  	L BYTE	088C	_TEXT
$M_A_00012H_END  . . . . . . . .  	L BYTE	0B3E	_TEXT
$M_A_00012H_MSG  . . . . . . . .  	L BYTE	0B26	_TEXT
$M_A_00012H_STRUC  . . . . . . .  	L BYTE	0890	_TEXT
$M_A_00013H_END  . . . . . . . .  	L BYTE	0B5A	_TEXT
$M_A_00013H_MSG  . . . . . . . .  	L BYTE	0B3E	_TEXT
$M_A_00013H_STRUC  . . . . . . .  	L BYTE	0894	_TEXT
$M_A_00014H_END  . . . . . . . .  	L BYTE	0B7F	_TEXT
$M_A_00014H_MSG  . . . . . . . .  	L BYTE	0B5A	_TEXT
$M_A_00014H_STRUC  . . . . . . .  	L BYTE	0898	_TEXT
$M_A_00015H_END  . . . . . . . .  	L BYTE	0BAA	_TEXT
$M_A_00015H_MSG  . . . . . . . .  	L BYTE	0B7F	_TEXT
$M_A_00015H_STRUC  . . . . . . .  	L BYTE	089C	_TEXT
$M_A_00016H_END  . . . . . . . .  	L BYTE	0BFC	_TEXT
$M_A_00016H_MSG  . . . . . . . .  	L BYTE	0BAA	_TEXT
$M_A_00016H_STRUC  . . . . . . .  	L BYTE	08A0	_TEXT
$M_A_00017H_END  . . . . . . . .  	L BYTE	0C0B	_TEXT
$M_A_00017H_MSG  . . . . . . . .  	L BYTE	0BFC	_TEXT
$M_A_00017H_STRUC  . . . . . . .  	L BYTE	08A4	_TEXT
$M_A_0001BH_END  . . . . . . . .  	L BYTE	0C1A	_TEXT
$M_A_0001BH_MSG  . . . . . . . .  	L BYTE	0C0B	_TEXT
$M_A_0001BH_STRUC  . . . . . . .  	L BYTE	08A8	_TEXT
$M_A_0001CH_END  . . . . . . . .  	L BYTE	0C29	_TEXT
$M_A_0001CH_MSG  . . . . . . . .  	L BYTE	0C1A	_TEXT
$M_A_0001CH_STRUC  . . . . . . .  	L BYTE	08AC	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-10


$M_A_0001DH_END  . . . . . . . .  	L BYTE	0C45	_TEXT
$M_A_0001DH_MSG  . . . . . . . .  	L BYTE	0C29	_TEXT
$M_A_0001DH_STRUC  . . . . . . .  	L BYTE	08B0	_TEXT
$M_A_0001EH_END  . . . . . . . .  	L BYTE	0C61	_TEXT
$M_A_0001EH_MSG  . . . . . . . .  	L BYTE	0C45	_TEXT
$M_A_0001EH_STRUC  . . . . . . .  	L BYTE	08B4	_TEXT
$M_A_0001FH_END  . . . . . . . .  	L BYTE	0C62	_TEXT
$M_A_0001FH_MSG  . . . . . . . .  	L BYTE	0C61	_TEXT
$M_A_0001FH_STRUC  . . . . . . .  	L BYTE	08B8	_TEXT
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BIN2ASC_REPLACE . . . . . . .  	N PROC	069C	_TEXT	Length = 00A0
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	0000	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	0674	_TEXT	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	00E9	_TEXT	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	00FC	_TEXT	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	0C6D	_TEXT
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	0C91	_TEXT
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	084C	_TEXT
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
$M_CLS_1 . . . . . . . . . . . .  	F PROC	0C62	_TEXT	Global	Length = 000B
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	02BD	_TEXT	Length = 0071
$M_CONVERTDATE . . . . . . . . .  	N PROC	07EF	_TEXT	Length = 0021
$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	
$M_DATE_MASK . . . . . . . . . .  	NUMBER	0010	
$M_DATE_REPLACE  . . . . . . . .  	N PROC	073C	_TEXT	Length = 0087
$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	0215	_TEXT	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	024A	_TEXT	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	032E	_TEXT	Length = 0103
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	0592	_TEXT	Length = 00C6
$M_DISPLAY_STRING  . . . . . . .  	N PROC	01D9	_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	0431	_TEXT	Length = 0031
$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	0516	_TEXT	Length = 007C
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	0658	_TEXT	Length = 001C
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-11


$M_GET_DATE  . . . . . . . . . .  	N PROC	07C3	_TEXT	Length = 001A
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	00CF	_TEXT	Length = 001A
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	0278	_TEXT	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	F PROC	0462	_TEXT	Global	Length = 00A5
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	FFFF	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0004	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	0298	_TEXT	Length = 0025
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	F PROC	0C87	_TEXT	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	F PROC	0CA8	_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	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	_DATA	Global
$M_SECOND_THOU . . . . . . . . .  	NUMBER	0006	
$M_SERVICE . . . . . . . . . . .  	NUMBER	0000	
$M_SET_LEN_IN_CX . . . . . . . .  	N PROC	0507	_TEXT	Length = 000F
$M_SINGLE_CHAR . . . . . . . . .  	NUMBER	0001	
$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_TYPE_MASK . . . . . . . . . .  	NUMBER	000F	
$M_UNLIM_W . . . . . . . . . . .  	NUMBER	0000	
$M_VERSION_CHECK . . . . . . . .  	N PROC	0158	_TEXT	Length = 002F
$M_WAIT_FOR_INPUT  . . . . . . .  	N PROC	0810	_TEXT	Length = 003C
$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
$M_YEAR  . . . . . . . . . . . .  	N PROC	07DD	_TEXT	Length = 0012
??0000 . . . . . . . . . . . . .  	L NEAR	04FF	_TEXT
@CPU . . . . . . . . . . . . . .  	TEXT  257		
@FILENAME  . . . . . . . . . . .  	TEXT  _msgret		
@VERSION . . . . . . . . . . . .  	TEXT  510		
_sysdispmsg  . . . . . . . . . .  	N PROC	0CF6	_TEXT	Global	Length = 0044
_sysloadmsg  . . . . . . . . . .  	N PROC	0CB2	_TEXT	Global	Length = 0044
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:20
C	to Message Retriever                                      Symbols-12




  10804 Source  Lines
  16394 Total   Lines
    583 Symbols

  44688 + 169193 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
