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

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

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

 = 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
 = 003A                      C	$M_DEF_TIME_SEP 	EQU	":"    ;; Default Time separator - ":"
 = 002D                      C	$M_DEF_DATE_SEP 	EQU	"-"    ;; Default Time separator - "-"
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Page     1-5
DOS - Message Retriever - SYSTEM CONTROL file               

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

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

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

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

			     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	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
					MSG_UTILNAME <JOIN>		;IDENTIFY THE COMPONENT 		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
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:06
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									;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;
				
				
					public	_sysloadmsg							;AN000;
					public	_sysgetmsg							;AN000;
					public	_sysdispmsg							;AN000;
				
				;-------------------------------------------------------------------
				;-------------------------------------------------------------------
				
 0000				_DATA	segment 								;AN000;
				.LIST										;AN000;
				.CREF										;AN000;
 00E4				_DATA	ends									;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Page     1-12
DOS - Message Retriever - MSGRES.TAB Module                 

				
				
 0000				_TEXT	segment 								;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,TIMEmsg,DATEmsg,INPUTmsg,FARmsg>;AN00
				0;
				;	MSG_SERVICES <JOIN.CLA,JOIN.CL1,JOIN.CL2> ;MSG TEXT			;AN000;
				.LIST										;AN000;
				.CREF										;AN000;
				;-------------------------------------------------------------------
				
 09DE				_sysloadmsg proc near								;AN000;
				
 09DE  55				push	bp			; save user's base pointer              ;AN000;
 09DF  8B EC				mov	bp,sp			; set bp to current sp			;AN000;
 09E1  57				push	di			; save some registers			;AN000;
 09E2  56				push	si								;AN000;
				
				;	copy C inregs into proper registers
				
 09E3  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)			;AN000;
				
				;-------------------------------------------------------------------
				
 09E6  8B 45 0A				mov	ax,[di+0ah]		; load di				;AN000;
 09E9  50				push	ax			; the di value from inregs is now on stack;AN000;
				
 09EA  8B 05				mov	ax,[di+00]		; get inregs.x.ax			;AN000;
 09EC  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx			;AN000;
 09EF  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx			;AN000;
 09F2  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx			;AN000;
 09F5  8B 75 08				mov	si,[di+08]		; get inregs.x.si			;AN000;
 09F8  5F				pop	di			; get inregs.x.di from stack		;AN000;
				
 09F9  55				push	bp			; save base pointer			;AN000;
				
				;-------------------------------------------------------------------
 09FA  9A 0019 ---- R			call	sysloadmsg		; call the message retriever		;AN000;
				;-------------------------------------------------------------------
				
 09FF  5D				pop	bp			; restore base pointer			;AN000;
 0A00  57				push	di			; the di value from call is now on stack;AN000;
 0A01  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)			;AN000;
				
 0A04  89 05				mov	[di+00],ax		; load outregs.x.ax			;AN000;
 0A06  89 5D 02				mov	[di+02],bx		; load outregs.x.bx			;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Page     1-13
DOS - Message Retriever - DISPMSG.ASM Module                

 0A09  89 4D 04				mov	[di+04],cx		; load outregs.x.cx			;AN000;
 0A0C  89 55 06				mov	[di+06],dx		; load outregs.x.dx			;AN000;
 0A0F  89 75 08				mov	[di+08],si		; load outregs.x.si			;AN000;
				
 0A12  9F				lahf				; get flags into ax			;AN000;
 0A13  8A C4				mov	al,ah			; move into low byte			;AN000;
 0A15  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag			;AN000;
				
 0A18  58				pop	ax			; get di from stack			;AN000;
 0A19  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di			;AN000;
				
				;-------------------------------------------------------------------
				
 0A1C  5E				pop	si			; restore registers			;AN000;
 0A1D  5F				pop	di								;AN000;
 0A1E  8B E5				mov	sp,bp			; restore sp				;AN000;
 0A20  5D				pop	bp			; restore user's bp                     ;AN000;
 0A21  C3				ret									;AN000;
				
 0A22				_sysloadmsg endp								;AN000;
				
				
 0A22				_sysgetmsg proc near								;AN000;
				
 0A22  55				push	bp			; save user's base pointer              ;AN000;
 0A23  8B EC				mov	bp,sp			; set bp to current sp			;AN000;
 0A25  57				push	di			; save some registers			;AN000;
 0A26  56				push	si								;AN000;
				
				;	copy C inregs into proper registers
				
 0A27  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)			;AN000;
				
				;-------------------------------------------------------------------
				
 0A2A  8B 45 0A				mov	ax,[di+0ah]		; load di				;AN000;
 0A2D  50				push	ax			; the di value from inregs is now on stack;AN000;
				
 0A2E  8B 05				mov	ax,[di+00]		; get inregs.x.ax			;AN000;
 0A30  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx			;AN000;
 0A33  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx			;AN000;
 0A36  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx			;AN000;
 0A39  8B 75 08				mov	si,[di+08]		; get inregs.x.si			;AN000;
 0A3C  5F				pop	di			; get inregs.x.di from stack		;AN000;
				
 0A3D  55				push	bp			; save base pointer			;AN000;
				
				;-------------------------------------------------------------------
 0A3E  9A 0184 ---- R			call	sysgetmsg		; call the message retriever		;AN000;
				;-------------------------------------------------------------------
				
 0A43  5D				pop	bp			; restore base pointer			;AN000;
 0A44  57				push	di			; the di value from call is now on stack;AN000;
 0A45  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)			;AN000;
				
 0A48  89 05				mov	[di+00],ax		; load outregs.x.ax			;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Page     1-14
DOS - Message Retriever - DISPMSG.ASM Module                

 0A4A  89 5D 02				mov	[di+02],bx		; load outregs.x.bx			;AN000;
 0A4D  89 4D 04				mov	[di+04],cx		; load outregs.x.cx			;AN000;
 0A50  89 55 06				mov	[di+06],dx		; load outregs.x.dx			;AN000;
 0A53  89 75 08				mov	[di+08],si		; load outregs.x.si			;AN000;
				
 0A56  9F				lahf				; get flags into ax			;AN000;
 0A57  8A C4				mov	al,ah			; move into low byte			;AN000;
 0A59  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag			;AN000;
				
 0A5C  58				pop	ax			; get di from stack			;AN000;
 0A5D  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di			;AN000;
				
				;-------------------------------------------------------------------
				
 0A60  5E				pop	si			; restore registers			;AN000;
 0A61  5F				pop	di								;AN000;
 0A62  8B E5				mov	sp,bp			; restore sp				;AN000;
 0A64  5D				pop	bp			; restore user's bp                     ;AN000;
 0A65  C3				ret									;AN000;
				
 0A66				_sysgetmsg endp 								;AN000;
				
 0A66				_sysdispmsg proc near								;AN000;
				
 0A66  55				push	bp			; save user's base pointer              ;AN000;
 0A67  8B EC				mov	bp,sp			; set bp to current sp			;AN000;
 0A69  57				push	di			; save some registers			;AN000;
 0A6A  56				push	si								;AN000;
				
				;	copy C inregs into proper registers
				
 0A6B  8B 7E 04				mov	di,[bp+4]		; fix di (arg 0)			;AN000;
				
				;-------------------------------------------------------------------
				
 0A6E  8B 45 0A				mov	ax,[di+0ah]		; load di				;AN000;
 0A71  50				push	ax			; the di value from inregs is now on stack;AN000;
				
 0A72  8B 05				mov	ax,[di+00]		; get inregs.x.ax			;AN000;
 0A74  8B 5D 02				mov	bx,[di+02]		; get inregs.x.bx			;AN000;
 0A77  8B 4D 04				mov	cx,[di+04]		; get inregs.x.cx			;AN000;
 0A7A  8B 55 06				mov	dx,[di+06]		; get inregs.x.dx			;AN000;
 0A7D  8B 75 08				mov	si,[di+08]		; get inregs.x.si			;AN000;
 0A80  5F				pop	di			; get inregs.x.di from stack		;AN000;
				
 0A81  55				push	bp			; save base pointer			;AN000;
				
				;-------------------------------------------------------------------
 0A82  9A 02D2 ---- R			call	sysdispmsg		; call the message retriever		;AN000;
				;-------------------------------------------------------------------
				
 0A87  5D				pop	bp			; restore base pointer			;AN000;
 0A88  57				push	di			; the di value from call is now on stack;AN000;
 0A89  8B 7E 06				mov	di,[bp+6]		; fix di (arg 1)			;AN000;
				
 0A8C  89 05				mov	[di+00],ax		; load outregs.x.ax			;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Page     1-15
DOS - Message Retriever - DISPMSG.ASM Module                

 0A8E  89 5D 02				mov	[di+02],bx		; load outregs.x.bx			;AN000;
 0A91  89 4D 04				mov	[di+04],cx		; load outregs.x.cx			;AN000;
 0A94  89 55 06				mov	[di+06],dx		; load outregs.x.dx			;AN000;
 0A97  89 75 08				mov	[di+08],si		; load outregs.x.si			;AN000;
				
 0A9A  9F				lahf				; get flags into ax			;AN000;
 0A9B  8A C4				mov	al,ah			; move into low byte			;AN000;
 0A9D  89 45 0C				mov	[di+0ch],ax		; load outregs.x.cflag			;AN000;
				
 0AA0  58				pop	ax			; get di from stack			;AN000;
 0AA1  89 45 0A				mov	[di+0ah],ax		; load outregs.x.di			;AN000;
				
				;-------------------------------------------------------------------
				
 0AA4  5E				pop	si			; restore registers			;AN000;
 0AA5  5F				pop	di								;AN000;
 0AA6  8B E5				mov	sp,bp			; restore sp				;AN000;
 0AA8  5D				pop	bp			; restore user's bp                     ;AN000;
 0AA9  C3				ret									;AN000;
				
 0AAA				_sysdispmsg endp								;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,
			     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,
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Page     1-16
DOS - Message Retriever - DISPMSG.ASM Module                

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

			     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	
				
 0AAA				_TEXT	ends				; end code segment			;AN000;
					end									;AN000;

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
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:06
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  . . . . . . . . . . . . .  	0AAA	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	0168	_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	0019	_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	010C	_TEXT
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	0143	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Symbols-3


CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	0115	_TEXT
CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	013E	_TEXT
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	0142	_TEXT
CLASS_1_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_2_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_A_MESSAGECOUNT . . . . . .  	NUMBER	0003	
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:06
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	02D2	_TEXT	Length = 0052
SYSGETMSG  . . . . . . . . . . .  	F PROC	0184	_TEXT	Length = 001E
SYSLOADMSG . . . . . . . . . . .  	F PROC	0019	_TEXT	Length = 00B3

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


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	0385	_TEXT
$MDO139  . . . . . . . . . . . .  	L NEAR	03EE	_TEXT
$MDO145  . . . . . . . . . . . .  	L NEAR	0411	_TEXT
$MDO165  . . . . . . . . . . . .  	L NEAR	0479	_TEXT
$MDO167  . . . . . . . . . . . .  	L NEAR	0483	_TEXT
$MDO175  . . . . . . . . . . . .  	L NEAR	04B0	_TEXT
$MDO215  . . . . . . . . . . . .  	L NEAR	058F	_TEXT
$MDO280  . . . . . . . . . . . .  	L NEAR	05E6	_TEXT
$MDO291  . . . . . . . . . . . .  	L NEAR	0612	_TEXT
$MDO301  . . . . . . . . . . . .  	L NEAR	0641	_TEXT
$MDO310  . . . . . . . . . . . .  	L NEAR	0668	_TEXT
$MDO321  . . . . . . . . . . . .  	L NEAR	06AB	_TEXT
$MDO36 . . . . . . . . . . . . .  	L NEAR	01A8	_TEXT
$MDO76 . . . . . . . . . . . . .  	L NEAR	0299	_TEXT
$MEN104  . . . . . . . . . . . .  	L NEAR	0323	_TEXT
$MEN107  . . . . . . . . . . . .  	L NEAR	0339	_TEXT
$MEN110  . . . . . . . . . . . .  	L NEAR	035A	_TEXT
$MEN119  . . . . . . . . . . . .  	L NEAR	0392	_TEXT
$MEN123  . . . . . . . . . . . .  	L NEAR	0392	_TEXT
$MEN128  . . . . . . . . . . . .  	L NEAR	03C1	_TEXT
$MEN139  . . . . . . . . . . . .  	L NEAR	0405	_TEXT
$MEN145  . . . . . . . . . . . .  	L NEAR	046F	_TEXT
$MEN146  . . . . . . . . . . . .  	L NEAR	0429	_TEXT
$MEN150  . . . . . . . . . . . .  	L NEAR	046A	_TEXT
$MEN154  . . . . . . . . . . . .  	L NEAR	046A	_TEXT
$MEN165  . . . . . . . . . . . .  	L NEAR	0577	_TEXT
$MEN167  . . . . . . . . . . . .  	L NEAR	04A0	_TEXT
$MEN175  . . . . . . . . . . . .  	L NEAR	04C9	_TEXT
$MEN180  . . . . . . . . . . . .  	L NEAR	04DC	_TEXT
$MEN187  . . . . . . . . . . . .  	L NEAR	050F	_TEXT
$MEN188  . . . . . . . . . . . .  	L NEAR	04FD	_TEXT
$MEN192  . . . . . . . . . . . .  	L NEAR	050F	_TEXT
$MEN199  . . . . . . . . . . . .  	L NEAR	055D	_TEXT
$MEN20 . . . . . . . . . . . . .  	L NEAR	00CB	_TEXT
$MEN200  . . . . . . . . . . . .  	L NEAR	0555	_TEXT
$MEN202  . . . . . . . . . . . .  	L NEAR	0555	_TEXT
$MEN204  . . . . . . . . . . . .  	L NEAR	0555	_TEXT
$MEN211  . . . . . . . . . . . .  	L NEAR	056A	_TEXT
$MEN25 . . . . . . . . . . . . .  	L NEAR	0183	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Symbols-6


$MEN27 . . . . . . . . . . . . .  	L NEAR	0178	_TEXT
$MEN292  . . . . . . . . . . . .  	L NEAR	0625	_TEXT
$MEN307  . . . . . . . . . . . .  	L NEAR	0671	_TEXT
$MEN314  . . . . . . . . . . . .  	L NEAR	0691	_TEXT
$MEN317  . . . . . . . . . . . .  	L NEAR	06B8	_TEXT
$MEN32 . . . . . . . . . . . . .  	L NEAR	019B	_TEXT
$MEN321  . . . . . . . . . . . .  	L NEAR	06B6	_TEXT
$MEN325  . . . . . . . . . . . .  	L NEAR	074C	_TEXT
$MEN333  . . . . . . . . . . . .  	L NEAR	074C	_TEXT
$MEN36 . . . . . . . . . . . . .  	L NEAR	020E	_TEXT
$MEN367  . . . . . . . . . . . .  	L NEAR	085C	_TEXT
$MEN37 . . . . . . . . . . . . .  	L NEAR	01DE	_TEXT
$MEN388  . . . . . . . . . . . .  	L NEAR	090B	_TEXT
$MEN39 . . . . . . . . . . . . .  	L NEAR	01DE	_TEXT
$MEN392  . . . . . . . . . . . .  	L NEAR	092A	_TEXT
$MEN396  . . . . . . . . . . . .  	L NEAR	0934	_TEXT
$MEN41 . . . . . . . . . . . . .  	L NEAR	01DE	_TEXT
$MEN46 . . . . . . . . . . . . .  	L NEAR	0206	_TEXT
$MEN47 . . . . . . . . . . . . .  	L NEAR	01F8	_TEXT
$MEN57 . . . . . . . . . . . . .  	L NEAR	022E	_TEXT
$MEN60 . . . . . . . . . . . . .  	L NEAR	023B	_TEXT
$MEN64 . . . . . . . . . . . . .  	L NEAR	0296	_TEXT
$MEN65 . . . . . . . . . . . . .  	L NEAR	027A	_TEXT
$MEN69 . . . . . . . . . . . . .  	L NEAR	0292	_TEXT
$MEN76 . . . . . . . . . . . . .  	L NEAR	02B6	_TEXT
$MEN78 . . . . . . . . . . . . .  	L NEAR	02AA	_TEXT
$MEN93 . . . . . . . . . . . . .  	L NEAR	0315	_TEXT
$MEN94 . . . . . . . . . . . . .  	L NEAR	02FA	_TEXT
$MEN97 . . . . . . . . . . . . .  	L NEAR	030F	_TEXT
$MIF104  . . . . . . . . . . . .  	L NEAR	031F	_TEXT
$MIF107  . . . . . . . . . . . .  	L NEAR	0336	_TEXT
$MIF110  . . . . . . . . . . . .  	L NEAR	034A	_TEXT
$MIF112  . . . . . . . . . . . .  	L NEAR	035A	_TEXT
$MIF113  . . . . . . . . . . . .  	L NEAR	035A	_TEXT
$MIF117  . . . . . . . . . . . .  	L NEAR	035F	_TEXT
$MIF119  . . . . . . . . . . . .  	L NEAR	0383	_TEXT
$MIF120  . . . . . . . . . . . .  	L NEAR	0381	_TEXT
$MIF127  . . . . . . . . . . . .  	L NEAR	03C2	_TEXT
$MIF128  . . . . . . . . . . . .  	L NEAR	03BF	_TEXT
$MIF129  . . . . . . . . . . . .  	L NEAR	03BD	_TEXT
$MIF134  . . . . . . . . . . . .  	L NEAR	03E2	_TEXT
$MIF135  . . . . . . . . . . . .  	L NEAR	03E2	_TEXT
$MIF138  . . . . . . . . . . . .  	L NEAR	0405	_TEXT
$MIF141  . . . . . . . . . . . .  	L NEAR	0401	_TEXT
$MIF146  . . . . . . . . . . . .  	L NEAR	0426	_TEXT
$MIF150  . . . . . . . . . . . .  	L NEAR	0446	_TEXT
$MIF151  . . . . . . . . . . . .  	L NEAR	0444	_TEXT
$MIF154  . . . . . . . . . . . .  	L NEAR	0459	_TEXT
$MIF155  . . . . . . . . . . . .  	L NEAR	0457	_TEXT
$MIF158  . . . . . . . . . . . .  	L NEAR	046A	_TEXT
$MIF159  . . . . . . . . . . . .  	L NEAR	046A	_TEXT
$MIF166  . . . . . . . . . . . .  	L NEAR	04A0	_TEXT
$MIF169  . . . . . . . . . . . .  	L NEAR	049B	_TEXT
$MIF173  . . . . . . . . . . . .  	L NEAR	04DC	_TEXT
$MIF174  . . . . . . . . . . . .  	L NEAR	04DC	_TEXT
$MIF175  . . . . . . . . . . . .  	L NEAR	04BD	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Symbols-7


$MIF180  . . . . . . . . . . . .  	L NEAR	04D9	_TEXT
$MIF187  . . . . . . . . . . . .  	L NEAR	04FF	_TEXT
$MIF188  . . . . . . . . . . . .  	L NEAR	04FC	_TEXT
$MIF192  . . . . . . . . . . . .  	L NEAR	0506	_TEXT
$MIF194  . . . . . . . . . . . .  	L NEAR	050D	_TEXT
$MIF199  . . . . . . . . . . . .  	L NEAR	055A	_TEXT
$MIF20 . . . . . . . . . . . . .  	L NEAR	00C7	_TEXT
$MIF200  . . . . . . . . . . . .  	L NEAR	052D	_TEXT
$MIF202  . . . . . . . . . . . .  	L NEAR	0547	_TEXT
$MIF204  . . . . . . . . . . . .  	L NEAR	0552	_TEXT
$MIF211  . . . . . . . . . . . .  	L NEAR	0566	_TEXT
$MIF216  . . . . . . . . . . . .  	L NEAR	059E	_TEXT
$MIF23 . . . . . . . . . . . . .  	L NEAR	00E3	_TEXT
$MIF25 . . . . . . . . . . . . .  	L NEAR	016B	_TEXT
$MIF27 . . . . . . . . . . . . .  	L NEAR	0175	_TEXT
$MIF276  . . . . . . . . . . . .  	L NEAR	05CB	_TEXT
$MIF278  . . . . . . . . . . . .  	L NEAR	05FB	_TEXT
$MIF279  . . . . . . . . . . . .  	L NEAR	05FB	_TEXT
$MIF281  . . . . . . . . . . . .  	L NEAR	05F7	_TEXT
$MIF286  . . . . . . . . . . . .  	L NEAR	060E	_TEXT
$MIF287  . . . . . . . . . . . .  	L NEAR	060E	_TEXT
$MIF290  . . . . . . . . . . . .  	L NEAR	0637	_TEXT
$MIF292  . . . . . . . . . . . .  	L NEAR	0624	_TEXT
$MIF295  . . . . . . . . . . . .  	L NEAR	0633	_TEXT
$MIF299  . . . . . . . . . . . .  	L NEAR	0656	_TEXT
$MIF300  . . . . . . . . . . . .  	L NEAR	0656	_TEXT
$MIF302  . . . . . . . . . . . .  	L NEAR	0652	_TEXT
$MIF307  . . . . . . . . . . . .  	L NEAR	0664	_TEXT
$MIF309  . . . . . . . . . . . .  	L NEAR	0671	_TEXT
$MIF31 . . . . . . . . . . . . .  	L NEAR	019D	_TEXT
$MIF314  . . . . . . . . . . . .  	L NEAR	068D	_TEXT
$MIF317  . . . . . . . . . . . .  	L NEAR	06AB	_TEXT
$MIF318  . . . . . . . . . . . .  	L NEAR	06A9	_TEXT
$MIF32 . . . . . . . . . . . . .  	L NEAR	0199	_TEXT
$MIF325  . . . . . . . . . . . .  	L NEAR	06F4	_TEXT
$MIF326  . . . . . . . . . . . .  	L NEAR	06E5	_TEXT
$MIF327  . . . . . . . . . . . .  	L NEAR	06DE	_TEXT
$MIF330  . . . . . . . . . . . .  	L NEAR	06F2	_TEXT
$MIF333  . . . . . . . . . . . .  	L NEAR	0722	_TEXT
$MIF334  . . . . . . . . . . . .  	L NEAR	0713	_TEXT
$MIF335  . . . . . . . . . . . .  	L NEAR	070C	_TEXT
$MIF338  . . . . . . . . . . . .  	L NEAR	0720	_TEXT
$MIF341  . . . . . . . . . . . .  	L NEAR	073F	_TEXT
$MIF342  . . . . . . . . . . . .  	L NEAR	0738	_TEXT
$MIF345  . . . . . . . . . . . .  	L NEAR	074C	_TEXT
$MIF349  . . . . . . . . . . . .  	L NEAR	0758	_TEXT
$MIF351  . . . . . . . . . . . .  	L NEAR	0791	_TEXT
$MIF353  . . . . . . . . . . . .  	L NEAR	07B9	_TEXT
$MIF355  . . . . . . . . . . . .  	L NEAR	07DF	_TEXT
$MIF357  . . . . . . . . . . . .  	L NEAR	07FA	_TEXT
$MIF359  . . . . . . . . . . . .  	L NEAR	080C	_TEXT
$MIF360  . . . . . . . . . . . .  	L NEAR	080C	_TEXT
$MIF363  . . . . . . . . . . . .  	L NEAR	0827	_TEXT
$MIF365  . . . . . . . . . . . .  	L NEAR	085C	_TEXT
$MIF366  . . . . . . . . . . . .  	L NEAR	085C	_TEXT
$MIF367  . . . . . . . . . . . .  	L NEAR	0858	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Symbols-8


$MIF37 . . . . . . . . . . . . .  	L NEAR	01B6	_TEXT
$MIF372  . . . . . . . . . . . .  	L NEAR	0872	_TEXT
$MIF374  . . . . . . . . . . . .  	L NEAR	088A	_TEXT
$MIF376  . . . . . . . . . . . .  	L NEAR	08B3	_TEXT
$MIF377  . . . . . . . . . . . .  	L NEAR	08B3	_TEXT
$MIF378  . . . . . . . . . . . .  	L NEAR	08AD	_TEXT
$MIF380  . . . . . . . . . . . .  	L NEAR	08B3	_TEXT
$MIF384  . . . . . . . . . . . .  	L NEAR	08D7	_TEXT
$MIF386  . . . . . . . . . . . .  	L NEAR	08F2	_TEXT
$MIF388  . . . . . . . . . . . .  	L NEAR	0909	_TEXT
$MIF39 . . . . . . . . . . . . .  	L NEAR	01C4	_TEXT
$MIF391  . . . . . . . . . . . .  	L NEAR	092A	_TEXT
$MIF392  . . . . . . . . . . . .  	L NEAR	0928	_TEXT
$MIF396  . . . . . . . . . . . .  	L NEAR	0930	_TEXT
$MIF41 . . . . . . . . . . . . .  	L NEAR	01D7	_TEXT
$MIF46 . . . . . . . . . . . . .  	L NEAR	01FA	_TEXT
$MIF47 . . . . . . . . . . . . .  	L NEAR	01EB	_TEXT
$MIF51 . . . . . . . . . . . . .  	L NEAR	0202	_TEXT
$MIF56 . . . . . . . . . . . . .  	L NEAR	023D	_TEXT
$MIF57 . . . . . . . . . . . . .  	L NEAR	022D	_TEXT
$MIF60 . . . . . . . . . . . . .  	L NEAR	0235	_TEXT
$MIF64 . . . . . . . . . . . . .  	L NEAR	027C	_TEXT
$MIF65 . . . . . . . . . . . . .  	L NEAR	0275	_TEXT
$MIF69 . . . . . . . . . . . . .  	L NEAR	0289	_TEXT
$MIF71 . . . . . . . . . . . . .  	L NEAR	0292	_TEXT
$MIF75 . . . . . . . . . . . . .  	L NEAR	02C3	_TEXT
$MIF76 . . . . . . . . . . . . .  	L NEAR	02AE	_TEXT
$MIF78 . . . . . . . . . . . . .  	L NEAR	02A7	_TEXT
$MIF86 . . . . . . . . . . . . .  	L NEAR	02C3	_TEXT
$MIF87 . . . . . . . . . . . . .  	L NEAR	02BF	_TEXT
$MIF91 . . . . . . . . . . . . .  	L NEAR	02CB	_TEXT
$MIF93 . . . . . . . . . . . . .  	L NEAR	0311	_TEXT
$MIF94 . . . . . . . . . . . . .  	L NEAR	02F7	_TEXT
$MIF97 . . . . . . . . . . . . .  	L NEAR	030B	_TEXT
$MIF98 . . . . . . . . . . . . .  	L NEAR	0309	_TEXT
$MLL149  . . . . . . . . . . . .  	L NEAR	0433	_TEXT
$MLL168  . . . . . . . . . . . .  	L NEAR	0492	_TEXT
$MLL178  . . . . . . . . . . . .  	L NEAR	04C5	_TEXT
$MLL202  . . . . . . . . . . . .  	L NEAR	053F	_TEXT
$MLL214  . . . . . . . . . . . .  	L NEAR	0577	_TEXT
$MLL367  . . . . . . . . . . . .  	L NEAR	0852	_TEXT
$MLL374  . . . . . . . . . . . .  	L NEAR	087E	_TEXT
$MSR175  . . . . . . . . . . . .  	L NEAR	04DC	_TEXT
$MSR76 . . . . . . . . . . . . .  	L NEAR	02B7	_TEXT
$MXL2  . . . . . . . . . . . . .  	L NEAR	020E	_TEXT
$MXL3  . . . . . . . . . . . . .  	L NEAR	04E9	_TEXT
$MXL4  . . . . . . . . . . . . .  	L NEAR	0577	_TEXT
$M_1_FF_END  . . . . . . . . . .  	L BYTE	09B3	_TEXT
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	09A1	_TEXT
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	099D	_TEXT
$M_2_FF_END  . . . . . . . . . .  	L BYTE	09D4	_TEXT
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	09C5	_TEXT
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	09C1	_TEXT
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
$M_ADD_CRLF  . . . . . . . . . .  	N PROC	03CC	_TEXT	Length = 0017
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Symbols-9


$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	095D	_TEXT
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	0945	_TEXT
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	0939	_TEXT
$M_A_00002H_END  . . . . . . . .  	L BYTE	0973	_TEXT
$M_A_00002H_MSG  . . . . . . . .  	L BYTE	095D	_TEXT
$M_A_00002H_STRUC  . . . . . . .  	L BYTE	093D	_TEXT
$M_A_0000CH_END  . . . . . . . .  	L BYTE	098F	_TEXT
$M_A_0000CH_MSG  . . . . . . . .  	L BYTE	0973	_TEXT
$M_A_0000CH_STRUC  . . . . . . .  	L BYTE	0941	_TEXT
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BIN2ASC_REPLACE . . . . . . .  	N PROC	06BA	_TEXT	Length = 00A0
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	0000	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	0692	_TEXT	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	00E6	_TEXT	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	00F9	_TEXT	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	0999	_TEXT
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	09BD	_TEXT
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	0935	_TEXT
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
$M_CLS_1 . . . . . . . . . . . .  	F PROC	098F	_TEXT	Global	Length = 000A
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	0408	_TEXT	Length = 0071
$M_CONVERTDATE . . . . . . . . .  	N PROC	080D	_TEXT	Length = 0021
$M_CONVERTTIME . . . . . . . . .  	N PROC	08D8	_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	075A	_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	0360	_TEXT	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	0395	_TEXT	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	0479	_TEXT	Length = 0106
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	05B0	_TEXT	Length = 00C6
$M_DISPLAY_STRING  . . . . . . .  	N PROC	0324	_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	057F	_TEXT	Length = 0031
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Symbols-10


$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	0256	_TEXT	Length = 007C
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	0676	_TEXT	Length = 001C
$M_GET_DATE  . . . . . . . . . .  	N PROC	07E1	_TEXT	Length = 001A
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	00CC	_TEXT	Length = 001A
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	03C3	_TEXT	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	F PROC	01A2	_TEXT	Global	Length = 00A5
$M_GET_TIME  . . . . . . . . . .  	N PROC	08B8	_TEXT	Length = 0020
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	FFFF	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0004	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	03E3	_TEXT	Length = 0025
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	F PROC	09B3	_TEXT	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	F PROC	09D4	_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	0247	_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_TIME_REPLACE  . . . . . . . .  	N PROC	082E	_TEXT	Length = 008A
$M_TYPE_MASK . . . . . . . . . .  	NUMBER	000F	
$M_UNLIM_W . . . . . . . . . . .  	NUMBER	0000	
$M_VERSION_CHECK . . . . . . . .  	N PROC	0155	_TEXT	Length = 002F
$M_WAIT_FOR_INPUT  . . . . . . .  	N PROC	08F9	_TEXT	Length = 003C
$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
$M_YEAR  . . . . . . . . . . . .  	N PROC	07FB	_TEXT	Length = 0012
??0000 . . . . . . . . . . . . .  	L NEAR	023F	_TEXT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:06
C	to Message Retriever                                      Symbols-11


@CPU . . . . . . . . . . . . . .  	TEXT  257		
@FILENAME  . . . . . . . . . . .  	TEXT  _msgret		
@VERSION . . . . . . . . . . . .  	TEXT  510		
_sysdispmsg  . . . . . . . . . .  	N PROC	0A66	_TEXT	Global	Length = 0044
_sysgetmsg . . . . . . . . . . .  	N PROC	0A22	_TEXT	Global	Length = 0044
_sysloadmsg  . . . . . . . . . .  	N PROC	09DE	_TEXT	Global	Length = 0044


  10615 Source  Lines
  17412 Total   Lines
    533 Symbols

  44426 + 211547 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
