Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-1


					PAGE	,132			;
					TITLE	LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY
				;*****************************************************************************
				;*									     *
				;*  MODULE NAME:       LABELM.SAL					     *
				;*									     *
				;*  DESCRIPTIVE NAME:  Include the DOS system MESSAGE HANDLER in the SEGMENT *
				;*		       configuration expected by the modules of LABEL.	     *
				;*									     *
				;*  FUNCTION:	       The common code of the DOS SYSTEM MESSAGE HANDLER is  *
				;*		       made a part of the LABEL module by using INCLUDE to   *
				;*		       bring in the common portion, in SYSMSG.INC.  This     *
				;*		       included code contains the routines to initialize for *
				;*		       message services, to find where a particular message  *
				;*		       is, and to display a message.			     *
				;*									     *
				;*  ENTRY POINT:       SYSDISPMSG:near					     *
				;*		       SYSLOADMSG:near					     *
				;*									     *
				;*  INPUT:	       ax = message number				     *
				;*		       bx = handle to display to			     *
				;*		       cx = number of %parms, 0 if none 		     *
				;*		       dx = class in high byte, input function in low	     *
				;*		       si = offset in es: of sublist, or 0 if none	     *
				;*									     *
				;*  EXIT-NORMAL:       CARRY is not set 				     *
				;*									     *
				;*  EXIT-ERROR:        CARRY is set					     *
				;*		       Call SYSDISPMSG					     *
				;*									     *
				;*  INTERNAL REFERENCES:						     *
				;*    Routines:    SYSDISPMSG (generated by MSG_SERVICES macro) 	     *
				;*		   SYSLOADMSG	   "      "	  "        "		     *
				;*    Data Areas:  INCLUDE SYSMSG.INC (permit Sys Msg handler definition)    *
				;*									     *
				;*  EXTERNAL REFERENCES:						     *
				;*    Routines:    None 						     *
				;*    Data Areas:  Control blocks pointed to by input registers 	     *
				;*									     *
				;*  NOTES:  This module should be processed with the SALUT pre-processor     *
				;*	    with the re-alignment not requested, as:			     *
				;*									     *
				;*		 SALUT LABELM,NUL					     *
				;*									     *
				;*	    To assemble these modules, the sequential or alphabetical	     *
				;*	    ordering of segments may be used.				     *
				;*									     *
				;*	    Sample LINK command:					     *
				;*									     *
				;*		 LINK @LABEL.ARF					     *
				;*									     *
				;*	    Where the LABEL.ARF is defined as:				     *
				;*									     *
				;*		 LABEL+ 						     *
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-2


				;*		 LABELM 						     *
				;*									     *
				;*	    These modules should be linked in this order. The load module is *
				;*	    a COM file.  It should be converted via EXE2BIN to a .COM file.  *
				;*									     *
				;*  REVISION HISTORY:							     *
				;*									     *
				;*    Prolog edited					  04/88  S. Maes     *
				;*									     *
				;*****************************************************************************
					INCLUDE sysmsg.inc
			     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	;; --------------------
			     C	;;		None
			     C	;;
			     C	;; Change History:
			     C	;; ---------------
			     C	;;		CREATED 	March, 1987	RPS
			     C	;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-3
DOS - Message Retriever - SYSTEM CONTROL file               

			     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)
 = 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	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-4
DOS - Message Retriever - SYSTEM CONTROL file               

 = 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 
				CTL-BK)
 = 000A                      C	DOS_BUF_KEYB_INP	EQU	0AH    ;; DOS INT 21H - AH=0AH := Buffered Keyboard Input
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-5
DOS - Message Retriever - SYSTEM CONTROL file               

 = 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:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-6
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  ;;  |
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-7
DOS - Message Retriever - SYSTEM CONTROL file               

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

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

			     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				  ;
			     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 			 ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-10
DOS - Message Retriever - SYSTEM CONTROL file               

			     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						 ;
			     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 <LABL>
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-11
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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-12
DOS - Message Retriever - MSGSTR.INC Module                 

 003D  00                    C1	    $M_CLASS	     DB        ?			     ;;AN004;; Saved class
 003E  0000                  C1	    $M_RETURN_ADDR   DW        ?			     ;;AN000;;
 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;;
				
 0000				CSEG	segment public
					assume	cs:CSEG,ds:CSEG
					assume	es:CSEG,ss:CSEG
				
					PUBLIC	SYSDISPMSG,SYSLOADMSG
				
					MSG_SERVICES <MSGDATA>
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-13
DOS - Message Retriever - MSGRES.TAB Module                 

 0000                        C1	      $M_RT   LABEL   BYTE				     ;;AN000;;
 0000  00000000              C1	      $M_RES_ADDRS <>					     ;;AN000;; Resident addresses
 0004  00000000              C1	
 0008  00000000              C1	
 000C  FFFFFFFF              C1	
 0010  00000000              C1	
 0014  00000000              C1	
 0018  FFFFFFFF              C1	
 001C  00000000              C1	
 0020  00000000              C1	
 0024  FFFFFFFF              C1	
 0028  FFFFFFFF              C1	
 002C  00000000              C1	
 0030  FFFFFFFF              C1	
 0034  00000000              C1	
 0038  0000                  C1	
 003A  00                    C1	
 003B  0001[                 C1	
 003D  00                    C1	
 003E  0000                  C1	
 0040  0000                  C1	
 0042  0A00                  C1	
 0044  0040[                 C1	
 0084  24                    C1	
 0085  4D 53 20 44 4F 53     C1		DB	"MS DOS Version 4.00 (C)Copyright 1988 Microsoft Corp"
 00B9  4C 69 63 65 6E 73     C1		DB	"Licensed Material - Property of Microsoft  "
					MSG_SERVICES <LABL.CLA,LABL.CL1,LABL.CL2> ;AN000;M Support Utility msgs
 00E4                        C3	$M_CLASS_A_STRUC LABEL BYTE
 00E4  FF                    C3	        $M_CLASS_ID <0FFH,EXPECTED_VERSION,Class_A_MessageCount>
 00E5  0400                  C3	
 00E7  0A                    C3	
 00E8                        C3	$M_A_00001H_STRUC LABEL BYTE
 00E8  0100                  C3	        $M_ID   <00001H,$M_A_00001H_MSG-$M_A_00001H_STRUC>
 00EA  2800                  C3	
 00EC                        C3	$M_A_00002H_STRUC LABEL BYTE
 00EC  0200                  C3	        $M_ID   <00002H,$M_A_00002H_MSG-$M_A_00002H_STRUC>
 00EE  3C00                  C3	
 00F0                        C3	$M_A_00003H_STRUC LABEL BYTE
 00F0  0300                  C3	        $M_ID   <00003H,$M_A_00003H_MSG-$M_A_00003H_STRUC>
 00F2  6000                  C3	
 00F4                        C3	$M_A_00004H_STRUC LABEL BYTE
 00F4  0400                  C3	        $M_ID   <00004H,$M_A_00004H_MSG-$M_A_00004H_STRUC>
 00F6  8100                  C3	
 00F8                        C3	$M_A_00005H_STRUC LABEL BYTE
 00F8  0500                  C3	        $M_ID   <00005H,$M_A_00005H_MSG-$M_A_00005H_STRUC>
 00FA  9F00                  C3	
 00FC                        C3	$M_A_00006H_STRUC LABEL BYTE
 00FC  0600                  C3	        $M_ID   <00006H,$M_A_00006H_MSG-$M_A_00006H_STRUC>
 00FE  B600                  C3	
 0100                        C3	$M_A_00007H_STRUC LABEL BYTE
 0100  0700                  C3	        $M_ID   <00007H,$M_A_00007H_MSG-$M_A_00007H_STRUC>
 0102  E100                  C3	
 0104                        C3	$M_A_00008H_STRUC LABEL BYTE
 0104  0800                  C3	        $M_ID   <00008H,$M_A_00008H_MSG-$M_A_00008H_STRUC>
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-14
DOS - Message Retriever - MSGRES.TAB Module                 

 0106  FD00                  C3	
 0108                        C3	$M_A_00009H_STRUC LABEL BYTE
 0108  0900                  C3	        $M_ID   <00009H,$M_A_00009H_MSG-$M_A_00009H_STRUC>
 010A  1501                  C3	
 010C                        C3	$M_A_0000AH_STRUC LABEL BYTE
 010C  0A00                  C3	        $M_ID   <0000AH,$M_A_0000AH_MSG-$M_A_0000AH_STRUC>
 010E  3701                  C3	
 0110                        C3	$M_A_00001H_MSG LABEL BYTE
 0110  17                    C3	        DB      $M_A_00001H_END-$M_A_00001H_MSG-1
 0111  49 6E 63 6F 72 72     C3	        DB      "Incorrect DOS version",CR,LF
 0128                        C3	$M_A_00001H_END LABEL BYTE
 0128                        C3	$M_A_00002H_MSG LABEL BYTE
 0128  27                    C3	        DB      $M_A_00002H_END-$M_A_00002H_MSG-1
 0129  43 61 6E 6E 6F 74     C3	        DB      "Cannot %1 a SUBSTed or ASSIGNed drive",CR,LF
 0150                        C3	$M_A_00002H_END LABEL BYTE
 0150                        C3	$M_A_00003H_MSG LABEL BYTE
 0150  24                    C3	        DB      $M_A_00003H_END-$M_A_00003H_MSG-1
 0151  49 6E 76 61 6C 69     C3	        DB      "Invalid characters in volume label",CR,LF
 0175                        C3	$M_A_00003H_END LABEL BYTE
 0175                        C3	$M_A_00004H_MSG LABEL BYTE
 0175  21                    C3	        DB      $M_A_00004H_END-$M_A_00004H_MSG-1
 0176  56 6F 6C 75 6D 65     C3	        DB      "Volume in drive %1 has no label",CR,LF
 0197                        C3	$M_A_00004H_END LABEL BYTE
 0197                        C3	$M_A_00005H_MSG LABEL BYTE
 0197  1A                    C3	        DB      $M_A_00005H_END-$M_A_00005H_MSG-1
 0198  56 6F 6C 75 6D 65     C3	        DB      "Volume in drive %1 is %2",CR,LF
 01B2                        C3	$M_A_00005H_END LABEL BYTE
 01B2                        C3	$M_A_00006H_MSG LABEL BYTE
 01B2  2E                    C3	        DB      $M_A_00006H_END-$M_A_00006H_MSG-1
 01B3  56 6F 6C 75 6D 65     C3	        DB      "Volume label (11 characters, ENTER for none)? "
 01E1                        C3	$M_A_00006H_END LABEL BYTE
 01E1                        C3	$M_A_00007H_MSG LABEL BYTE
 01E1  1F                    C3	        DB      $M_A_00007H_END-$M_A_00007H_MSG-1
 01E2  56 6F 6C 75 6D 65     C3	        DB      "Volume Serial Number is %1-%2",CR,LF
 0201                        C3	$M_A_00007H_END LABEL BYTE
 0201                        C3	$M_A_00008H_MSG LABEL BYTE
 0201  1B                    C3	        DB      $M_A_00008H_END-$M_A_00008H_MSG-1
 0202  43 61 6E 6E 6F 74     C3	        DB      "Cannot %1 a network drive",CR,LF
 021D                        C3	$M_A_00008H_END LABEL BYTE
 021D                        C3	$M_A_00009H_MSG LABEL BYTE
 021D  25                    C3	        DB      $M_A_00009H_END-$M_A_00009H_MSG-1
 021E  0D 0A 44 65 6C 65     C3	        DB      CR,LF,"Delete current volume label (Y/N)? "
 0243                        C3	$M_A_00009H_END LABEL BYTE
 0243                        C3	$M_A_0000AH_MSG LABEL BYTE
 0243  02                    C3	        DB      $M_A_0000AH_END-$M_A_0000AH_MSG-1
 0244  0D 0A                 C3	        DB      CR,LF
 0246                        C3	$M_A_0000AH_END LABEL BYTE
 0246                        C3	$M_CLS_1 PROC NEAR
 0246  0E                    C3	        PUSH    CS
 0247  07                    C3	        POP     ES
 0248  8D 3E 00E4 R          C3	        LEA     DI,$M_CLASS_A_STRUC
 024C  81 C1 0168            C3	        ADD     CX,$-$M_CLASS_A_STRUC
 0250  C3                    C3	        RET
 0251                        C3	$M_CLS_1 ENDP
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-15
DOS - Message Retriever - MSGRES.TAB Module                 

 0251                        C3	$M_CLASS_1_STRUC LABEL BYTE
 0251  01                    C3	        $M_CLASS_ID <001H,EXPECTED_VERSION,Class_1_MessageCount>
 0252  0400                  C3	
 0254  01                    C3	
 0255                        C3	$M_1_FF_STRUC LABEL BYTE
 0255  FFFF                  C3	        $M_ID <0FFFFH,$M_1_FF_MSG-$M_1_FF_STRUC>
 0257  0400                  C3	
 0259                        C3	$M_1_FF_MSG LABEL BYTE
 0259  11                    C3	        DB      $M_1_FF_END-$M_1_FF_MSG-1
 025A  45 78 74 65 6E 64     C3	        DB      "Extended Error %1"
 026B                        C3	$M_1_FF_END LABEL BYTE
 026B                        C3	$M_MSGSERV_1 PROC NEAR
 026B  0E                    C3	        PUSH    CS
 026C  07                    C3	        POP     ES
 026D  8D 3E 0251 R          C3	        LEA     DI,$M_CLASS_1_STRUC
 0271  83 C1 20              C3	        ADD     CX,$-$M_CLASS_1_STRUC
 0274  C3                    C3	        RET
 0275                        C3	$M_MSGSERV_1 Endp
 0275                        C3	$M_CLASS_2_STRUC LABEL BYTE
 0275  02                    C3	        $M_CLASS_ID <002H,EXPECTED_VERSION,Class_2_MessageCount>
 0276  0400                  C3	
 0278  01                    C3	
 0279                        C3	$M_2_FF_STRUC LABEL BYTE
 0279  FFFF                  C3	        $M_ID <0FFFFH,$M_2_FF_MSG-$M_2_FF_STRUC>
 027B  0400                  C3	
 027D                        C3	$M_2_FF_MSG LABEL BYTE
 027D  0E                    C3	        DB      $M_2_FF_END-$M_2_FF_MSG-1
 027E  50 61 72 73 65 20     C3	        DB      "Parse Error %1"
 028C                        C3	$M_2_FF_END LABEL BYTE
 028C                        C3	$M_MSGSERV_2 PROC NEAR
 028C  0E                    C3	        PUSH    CS
 028D  07                    C3	        POP     ES
 028E  8D 3E 0275 R          C3	        LEA     DI,$M_CLASS_2_STRUC
 0292  83 C1 1D              C3	        ADD     CX,$-$M_CLASS_2_STRUC
 0295  C3                    C3	        RET
 0296                        C3	$M_MSGSERV_2 Endp
										  ;DEFAULT=CHECK DOS VERSION
										  ;DEFAULT=NEARmsg
										  ;DEFAULT=INPUTmsg
										  ;DEFAULT=NO TIMEmsg
										  ;DEFAULT=NO DATEmsg
										  ;DEFAULT=NO GETmsg
				
				 public amis_sign
					even
 0296				amis_sign:
 0296  65 63 6D				db "ecm"
 0299  0005[				db 5 dup (' ')
	   20			
			 ]	
				
 029E  6C 44 4F 53			db "lDOS"
 02A2  0004[				db 4 dup (' ')
	   20			
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-16
DOS - Message Retriever - MSGRES.TAB Module                 

			 ]	
				
 02A6				amis_id:			; must be directly after amis_sign
 02A6  0000				dw 0
 02A8  0000				dw 0			; sequential number
 02AA  05				db amis_id_msg_end - amis_id_msg
 02AB				amis_id_msg:
 02AB  6C 61 62 65 6C			db "label"		; our id name
 02B0				amis_id_msg_end:
				
 =				AMIS_SIGN_SEGMENT equ CSEG
				
					MSG_SERVICES <NEARmsg,DISPLAYmsg,CHARmsg,NUMmsg,INPUTmsg,LOADmsg>
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-17
DOS - Message Retriever - LOADMSG.ASM Module                

 02B0                        C1		SYSLOADMSG PROC NEAR				     ;;AN000;;
 02B0  50                    C1		PUSH	AX					     ;;AN000;
 02B1  53                    C1		PUSH	BX					     ;;AN000;
 02B2  52                    C1		PUSH	DX					     ;;AN000;
 02B3  06                    C1		PUSH	ES					     ;;AN000;
 02B4  57                    C1		PUSH	DI					     ;;AN000;
 02B5  33 C9                 C1		XOR	CX,CX					     ;;AN000;  Reset to zero
 02B7  8E C1                 C1		MOV	ES,CX					     ;;AN000;
 02B9  33 FF                 C1		XOR	DI,DI					     ;;AN000;
 02BB  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN000;; 2FH Interface
 02BE  B2 00                 C1		MOV	DL,DOS_GET_EXTENDED			     ;;AN000;; Where are the Extended errors
				 in COMMAND.COM
 02C0  CD 2F                 C1		INT	2FH					     ;;AN000;; Private interface
 02C2  8C 06 000A R          C1		MOV	WORD PTR $M_RT.$M_EXT_COMMAND+2,ES	     ;;AN000;;	Move into first avaliable ta
				ble location
 02C6  89 3E 0008 R          C1		MOV	WORD PTR $M_RT.$M_EXT_COMMAND,DI	     ;;AN000;;
 02CA  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN000;; 2FH Interface
 02CD  B2 02                 C1		MOV	DL,DOS_GET_PARSE			     ;;AN000;; Where are the Parse errors in
				 COMMAND.COM
 02CF  CD 2F                 C1		INT	2FH					     ;;AN000;; Private interface
 02D1  8C 06 0012 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_COMMAND+2,ES	     ;;AN000;;	Move into first avaliable ta
				ble location
 02D5  89 3E 0010 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_COMMAND,DI	     ;;AN000;;
 02D9  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN000;; 2FH Interface
 02DC  B2 04                 C1		MOV	DL,DOS_GET_CRITICAL			     ;;AN000;; Where are the Critical errors
				 in COMMAND.COM
 02DE  CD 2F                 C1		INT	2FH					     ;;AN000;; Private interface
 02E0  8C 06 0022 R          C1		MOV	WORD PTR $M_RT.$M_CRIT_COMMAND+2,ES	     ;;AN000;;	Move into first avaliable ta
				ble location
 02E4  89 3E 0020 R          C1		MOV	WORD PTR $M_RT.$M_CRIT_COMMAND,DI	     ;;AN000;;
 02E8  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN001;; 2FH Interface
 02EB  B2 06                 C1		MOV	DL,DOS_GET_FILE 			     ;;AN001;; Where are the FILE dependant 
				in IFSFUNC.EXE
 02ED  CD 2F                 C1		INT	2FH					     ;;AN001;; Private interface
 02EF  8C 06 0006 R          C1		MOV	WORD PTR $M_RT.$M_EXT_FILE+2,ES 	     ;;AN001;;	Move into first avaliable ta
				ble location
 02F3  89 3E 0004 R          C1		MOV	WORD PTR $M_RT.$M_EXT_FILE,DI		     ;;AN001;;
 02F7  E8 026B R             C1		  CALL	  $M_MSGSERV_1				     ;;AN000;; Get addressibilty to MSGSERV 
				CLASS 1 (EXTENDED Errors)
 02FA  8C 06 0002 R          C1		MOV	WORD PTR $M_RT.$M_EXT_ERR_ADDRS+2,ES	     ;;AN000;; Move into first avaliable tab
				le location
 02FE  89 3E 0000 R          C1		MOV	WORD PTR $M_RT.$M_EXT_ERR_ADDRS,DI	     ;;AN000;;
 0302  8C 06 001E R          C1		MOV	WORD PTR $M_RT.$M_CRIT_ADDRS+2,ES	     ;;AN000;; Move into first avaliable tab
				le location
 0306  89 3E 001C R          C1		MOV	WORD PTR $M_RT.$M_CRIT_ADDRS,DI 	     ;;AN000;;
 030A  E8 028C R             C1		  CALL	  $M_MSGSERV_2				     ;;AN000;; Get addressibilty to MSGSERV 
				CLASS 2 (PARSE Errors)
 030D  8C 06 0016 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_ADDRS+2,ES	     ;;AN000;; Move into first avaliable tab
				le location
 0311  89 3E 0014 R          C1		MOV	WORD PTR $M_RT.$M_PARSE_ADDRS,DI	     ;;AN000;;
 0315  B8 122E               C1		MOV	AX,DOS_GET_EXT_PARSE_ADD		     ;;AN001;; 2FH Interface
 0318  B2 08                 C1		MOV	DL,DOS_GET_ADDR 			     ;;AN001;; Where is the READ_DISK_PROC i
				n COMMAND.COM
 031A  CD 2F                 C1		INT	2FH					     ;;AN001;; Private interface
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-18
DOS - Message Retriever - LOADMSG.ASM Module                

 031C  8C 06 002A R          C1		MOV	WORD PTR $M_RT.$M_DISK_PROC_ADDR+2,ES	     ;;AN001;;	Move into first avaliable ta
				ble location
 0320  89 3E 0028 R          C1		MOV	WORD PTR $M_RT.$M_DISK_PROC_ADDR,DI	     ;;AN001;;
 0324  E8 0246 R             C4	    CALL    $M_CLS_1			 ;  Get addressibilty to class &$M_APPEND (ES:DI) 
 0327  89 3E 002C R          C4	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ; 
 032B  E8 0347 R             C1		CALL	$M_GET_DBCS_VEC 			     ;;AN000;; Save the DBCS vector
 032E  E8 035F R             C1		CALL	$M_CHECKSTDIN				     ;;AN000;;	 Set EOF CHECK
 0331  E8 0372 R             C1		CALL	$M_CHECKSTDOUT				     ;;AN000;;	 Set Disk Full CHECK
 0334  51                    C1		PUSH	CX					     ;;AN000;;
 0335  E8 03CE R             C1		CALL	$M_VERSION_CHECK			     ;;AN000;;	 Check Version
 0338  72 08                 C1		JC $MIF20
 033A  59                    C1		  POP	  CX					     ;;AN000;;	Reset stack
 033B  5F                    C1		  POP	  DI					     ;;AN000;;	Restore REGS
 033C  07                    C1		  POP	  ES					     ;;AN000;;
 033D  5A                    C1		  POP	  DX					     ;;AN000;;
 033E  5B                    C1		  POP	  BX					     ;;AN000;;
 033F  58                    C1		  POP	  AX					     ;;AN000;;
 0340  EB 04                 C1		JMP SHORT $MEN20
 0342                        C1	$MIF20:
 0342  83 C4 0C              C1		  ADD	  SP,12 				     ;;AN000;;
 0345  F9                    C1		  STC						     ;;AN000;;	Reset carry flag
 0346                        C1	$MEN20:
 0346  C3                    C1		RET						     ;;AN000;;
 0347                        C1		SYSLOADMSG ENDP 				     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-19
DOS - Message Retriever - $M_VERSION_CHECK Proc             

 0347                        C1	$M_GET_DBCS_VEC PROC NEAR				     ;;AN000;;
 0347  50                    C1		PUSH	AX					     ;;AN000;; Save character to check
 0348  56                    C1		PUSH	SI					     ;;AN000;;
 0349  1E                    C1		PUSH	DS					     ;;AN000;;
 034A  B8 6300               C1		MOV	AX,DOS_GET_DBCS_INFO			     ;;AN000;; DOS function to get DBSC envi
				ronment
 034D  CD 21                 C1		INT	21H					     ;;AN000;; Get environment pointer
 034F  1E                    C1		PUSH	DS					     ;;AN000;; Get environment pointer
 0350  07                    C1		POP	ES					     ;;AN000;; Get environment pointer
 0351  1F                    C1		POP	DS					     ;;AN000;; Get environment pointer
 0352  72 08                 C1		JC $MIF23
 0354  89 36 0034 R          C1		  MOV	  WORD PTR $M_RT.$M_DBCS_VEC,SI 	     ;;AN000;; Save DBCS Vector
 0358  8C 06 0036 R          C1		  MOV	  WORD PTR $M_RT.$M_DBCS_VEC+2,ES	     ;;AN000;;
 035C                        C1	$MIF23:
 035C  5E                    C1		POP	SI					     ;;AN000;;
 035D  58                    C1		POP	AX					     ;;AN000;; Retrieve character to check
 035E  C3                    C1		RET						     ;;AN000;; Return
 035F                        C1	$M_GET_DBCS_VEC ENDP					     ;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-20
DOS - Message Retriever - $M_CHECKSTDIN Proc                

 035F                        C1	$M_CHECKSTDIN PROC NEAR 				     ;AN001;
 035F  B8 4400               C1		  MOV	  AX,DOS_IOCTL_GET_INFO 		     ;AN001; Get info using IOCTL
 0362  BB 0000               C1		  MOV	  BX,STDIN				     ;AN001;
 0365  33 D2                 C1		  XOR	  DX,DX 				     ;AN001;
 0367  CD 21                 C1		  INT	  21H					     ;AN001;
 0369  80 CE 01              C1		  OR	  DH,$M_CRIT_ERR_MASK			     ;AN001; Turn on bit
 036C  B8 4401               C1		  MOV	  AX,DOS_IOCTL_SET_INFO 		     ;AN001; Set info using IOCTL
 036F  CD 21                 C1		  INT	  21H					     ;AN001;
 0371  C3                    C1		  RET						     ;AN001;
 0372                        C1	$M_CHECKSTDIN ENDP					     ;AN001;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-21
DOS - Message Retriever - $M_CHECKSTDOUT Proc               

 0372                        C1	$M_CHECKSTDOUT PROC NEAR				     ;AN001;
 0372  B8 4400               C1		  MOV	  AX,DOS_IOCTL_GET_INFO 		     ;AN001; Get info using IOCTL
 0375  BB 0001               C1		  MOV	  BX,STDOUT				     ;AN001;
 0378  33 D2                 C1		  XOR	  DX,DX 				     ;AN001;
 037A  CD 21                 C1		  INT	  21H					     ;AN001;
 037C  80 CE 01              C1		  OR	  DH,$M_CRIT_ERR_MASK			     ;AN001; Turn on bit
 037F  B8 4401               C1		  MOV	  AX,DOS_IOCTL_SET_INFO 		     ;AN001; Set info using IOCTL
 0382  CD 21                 C1		  INT	  21H					     ;AN001;
 0384  C3                    C1		  RET						     ;AN001;
 0385                        C1	$M_CHECKSTDOUT ENDP					     ;AN001;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-22
DOS - Message Retriever - $M_VERSION_CHECK Proc             

 0385                        C1	check_amis:
 0385  50                    C1		push ax
 0386  1E                    C1		push ds
 0387  56                    C1		push si
 0388  06                    C1		push es
 0389  57                    C1		push di
 038A  52                    C1		push dx
 038B  50                    C1		push ax				; version number, last on stack
 038C  B4 00                 C1		mov ah, 0			; multiplex number = 0
 038E                        C1	check_amis_loop:
 038E  B0 00                 C1		mov al, 0
 0390  CD 2D                 C1		int 2Dh				; installation check
 0392  3C FF                 C1		cmp al, -1			; multiplexer installed ?
 0394  75 21                 C1		jne check_amis_next		; no -->
 0396  0E                    C1		 push cs
 0397  1F                    C1		 pop ds
 0398  BE 0296 R             C1		mov si, offset AMIS_SIGN_SEGMENT:amis_sign
 039B  8E C2                 C1		mov es, dx			; es:di -> multiplexer's sign
 039D  B9 0008               C1		mov cx, 8			; 16 bytes
 03A0  F3/ A7                C1		repe cmpsw			; compare
 03A2  75 13                 C1		jne check_amis_next		; not us -->
 03A4  8C CA                 C1		mov dx, cs			; dx:si -> amis_id
 03A6  B0 11                 C1		mov al, 11h
 03A8  CD 2D                 C1		int 2Dh				; CHG: al, bx, cx, dx, si, di
 03AA  3C 00                 C1		cmp al, 0			; id call supported ?
 03AC  74 0D                 C1		je check_amis_unsup		; no, allow if alt version -->
 03AE  5A                    C1		pop dx
 03AF  33 D2                 C1		xor dx, dx			; 2D.MM11 supported, mark that we need it
 03B1  52                    C1		push dx
 03B2  3C F0                 C1		cmp al, 0F0h			; CY if below 0F0h
 03B4  EB 06 90              C1		jmp check_amis_done
 03B7                        C1	check_amis_next:
 03B7  FE C4                 C1		inc ah				; next multiplex number
 03B9  75 D3                 C1		jnz check_amis_loop		; ZR if done, NZ if more to check -->
 03BB                        C1	check_amis_unsup:
 03BB  F9                    C1		stc				; multiplexer not found
 03BC                        C1	check_amis_done:
 03BC  5B                    C1		pop bx
 03BD  5A                    C1		pop dx
 03BE  5F                    C1		pop di
 03BF  07                    C1		pop es
 03C0  5E                    C1		pop si
 03C1  1F                    C1		pop ds
 03C2  58                    C1		pop ax
 03C3  73 1C                 C1		jnc alt_good_DOS		; id is supported -->
 03C5  81 FB 1A05            C1		cmp bx, alt_expected_version	; is it fine ?
 03C9  74 16                 C1		je alt_good_DOS			; yes --> (NC)
 03CB  EB 17 90              C1		jmp $MIF25			; no, cancel program -->
 03CE                        C1	$M_VERSION_CHECK PROC NEAR				     ;;AN000;;
 03CE  B4 30                 C1		  MOV	  AH,DOS_GET_VERSION			     ;;AN000;; Check that version matches VE
				RSIONA.INC
 03D0  CD 21                 C1		  INT	  21H					     ;;AN000;;
 03D2  3D 2605               C1		cmp	ax,new_expected_version	; compare with DOS version
 03D5  74 AE                 C1		je check_amis
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-23
DOS - Message Retriever - $M_VERSION_CHECK Proc             

 03D7  3D 1A05               C1		cmp	ax,alt_expected_version	; compare with DOS version
 03DA  74 A9                 C1		je check_amis
 03DC  3D 0004               C1		  CMP	  AX,EXPECTED_VERSION			     ;;AN000;; IF DOS_MAJOR is correct
 03DF  75 03                 C1		  JNE $MIF25
 03E1                        C1	alt_good_DOS:
 03E1  F8                    C1		    CLC 					     ;;AN000;;	 Clear the carry flag
 03E2  EB 18                 C1		  JMP SHORT $MEN25
 03E4                        C1	$MIF25:
 03E4  3D 0002               C1		    CMP     AX,LOWEST_4CH_VERSION		     ;;AN000;; Does this version support AH 
				= 4CH
 03E7  73 05                 C1		    JNB $MIF27
 03E9  BB FFFF               C1		      MOV     BX,NO_HANDLE			     ;;AN000;;	 No handle (version doesn't 
				support)
 03EC  EB 03                 C1		    JMP SHORT $MEN27
 03EE                        C1	$MIF27:
 03EE  BB 0002               C1		      MOV     BX,STDERR 			     ;;AN000;;	 Standard Error
 03F1                        C1	$MEN27:
 03F1  B8 0001               C1		    MOV     AX,1				     ;;AN000;; Set message # 1
 03F4  B9 0000               C1		    MOV     CX,NO_REPLACE			     ;;AN000;; No replacable parms
 03F7  B2 00                 C1		    MOV     DL,NO_INPUT 			     ;;AN000;; No input
 03F9  B6 FF                 C1		    MOV     DH,UTILITY_MSG_CLASS		     ;;AN000;; Utility class message
 03FB  F9                    C1		    STC 					     ;;AN000;; Set Carry Flag
 03FC                        C1	$MEN25:
 03FC  C3                    C1		  RET						     ;;AN000;; Return
 03FD                        C1	$M_VERSION_CHECK ENDP					     ;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-24
DOS - Message Retriever - DISPMSG.ASM Module                

 03FD                        C1		SYSDISPMSG PROC NEAR				     ;;AN000;;
 03FD  50                    C1		PUSH	AX					     ;;AN000;; Save changed REGs
 03FE  53                    C1		PUSH	BX					     ;;AN000;;
 03FF  51                    C1		PUSH	CX					     ;;AN000;;
 0400  55                    C1		PUSH	BP					     ;;AN000;;
 0401  57                    C1		PUSH	DI					     ;;AN000;; Save pointer to input buffer 
				(offset)
 0402  06                    C1		PUSH	ES					     ;;AN000;; Save pointer to input buffer 
				(segment)
 0403  52                    C1		PUSH	DX					     ;;AN000;; Save Input/Class request
 0404  8B E9                 C1		MOV	BP,CX					     ;;AN000;; Use BP to hold replace count
 0406  89 1E 0038 R          C1		MOV	WORD PTR $M_RT.$M_HANDLE,BX		     ;;AN000;; Save handle
 040A  88 36 003D R          C1		MOV	BYTE PTR $M_RT.$M_CLASS,DH		     ;;AN004;; Save class
 040E  E8 06B7 R             C1		CALL	$M_GET_MSG_ADDRESS			     ;;AN000;; Scan thru classes to find mes
				sage
 0411  0B C9                 C1		OR	CX,CX					     ;;AN000;; Was message found?
 0413  74 23                 C1		JZ $MIF93
 0415  0B ED                 C1		  OR	  BP,BP 				     ;;AN000;;	 Were replacable parameters 
				requested
 0417  75 05                 C1		  JNZ $MIF94
 0419  E8 044B R             C1		    CALL    $M_DISPLAY_STRING			     ;;AN000;; No, great . . . Display messa
				ge
 041C  EB 03                 C1		  JMP SHORT $MEN94
 041E                        C1	$MIF94:
 041E  E8 0597 R             C1		    CALL    $M_DISPLAY_MESSAGE			     ;;AN000;;	 Display the message with su
				bstitutions
 0421                        C1	$MEN94:
 0421  72 0F                 C1		  JC $MIF97
 0423  5A                    C1		    POP     DX					     ;;AN000;; Get Input/Class request
 0424  E8 04F2 R             C1		    CALL    $M_ADD_CRLF 			     ;;AN004;; Check if we need to add the C
				R LF chars.
 0427  07                    C1		    POP     ES					     ;;AN000;; Get location of input buffer 
				(if specified)
 0428  5F                    C1		    POP     DI					     ;;AN000;;
 0429  0A D2                 C1		    OR	    DL,DL				     ;;AN000;; Was Wait-For-Input requested?
 042B  74 03                 C1		    JZ $MIF98
 042D  E8 097B R             C1		      CALL    $M_WAIT_FOR_INPUT 		     ;;AN000;;
 0430                        C1	$MIF98:
 0430  EB 04                 C1		  JMP SHORT $MEN97
 0432                        C1	$MIF97:
 0432  83 C4 06              C1		    ADD     SP,6				     ;;AN000;;
 0435  F9                    C1		    STC 					     ;;AN000;; Reset carry flag
 0436                        C1	$MEN97:
 0436  EB 04                 C1		JMP SHORT $MEN93
 0438                        C1	$MIF93:
 0438  07                    C1		  POP	  ES					     ;;AN000;;	 Get pointer to input buffer
				 (segment)
 0439  5F                    C1		  POP	  DI					     ;;AN000;;	 Get base pointer to first s
				ublist (offset)
 043A  5A                    C1		  POP	  DX					     ;;AN000;;	 Get base pointer to first s
				ublist (segment)
 043B  F9                    C1		  STC						     ;;AN000;;	 Set carry flag
 043C                        C1	$MEN93:
 043C  72 08                 C1		JC $MIF104
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-25
DOS - Message Retriever - DISPMSG.ASM Module                

 043E  5D                    C1		  POP	  BP					     ;;AN000;; No,
 043F  59                    C1		  POP	  CX					     ;;AN000;;
 0440  5B                    C1		  POP	  BX					     ;;AN000;;
 0441  83 C4 02              C1		  ADD	  SP,2					     ;;AN000;;
 0444  EB 04                 C1		JMP SHORT $MEN104
 0446                        C1	$MIF104:
 0446  83 C4 08              C1		  ADD	  SP,8					     ;;AN000;;	   Eliminate from stack
 0449  F9                    C1		  STC						     ;;AN000;;
 044A                        C1	$MEN104:
 044A  C3                    C1		RET						     ;;AN000;; Return
 044B                        C1		SYSDISPMSG ENDP 				     ;;AN000;;
 044B                        C1	$M_DISPLAY_STRING PROC NEAR				     ;;AN000;;
 044B  50                    C1		PUSH	AX					     ;;AN000;;
 044C  53                    C1		PUSH	BX					     ;;AN000;;
 044D  52                    C1		PUSH	DX					     ;;AN000;;
 044E  8B 1E 0038 R          C1		MOV	BX,$M_RT.$M_HANDLE			     ;;AN000;; Retrieve handle
 0452  83 FB FF              C1		CMP	BX,$M_NO_HANDLE 			     ;;AN000;; Was there a handle specified?
 0455  75 05                 C1		JNE $MIF107
 0457  E8 0486 R             C1		  CALL	  $M_DISPLAY_$_STRING			     ;;AN000;; No, display $ terminated stri
				ng
 045A  EB 03                 C1		JMP SHORT $MEN107
 045C                        C1	$MIF107:
 045C  E8 04BB R             C1		  CALL	  $M_DISPLAY_H_STRING			     ;;AN000;; Yes, display string to handle
 045F                        C1	$MEN107:
 045F  73 0F                 C1		JNC $MIF110
 0461  B4 59                 C1		  MOV	  AH,DOS_GET_EXT_ERROR			     ;;AN000;;	Yes,
 0463  BB 0000               C1		  MOV	  BX,DOS_GET_EXT_ERROR_BX		     ;;AN000;;	  Get extended error
 0466  CD 21                 C1		  INT	  21H					     ;;AN000;;
 0468  32 E4                 C1		  XOR	  AH,AH 				     ;;AN000;;	  Clear AH
 046A  83 C4 06              C1		  ADD	  SP,6					     ;;AN000;;	  Clean up stack
 046D  F9                    C1		  STC						     ;;AN000;;	  Flag that there was an err
				or
 046E  EB 10                 C1		JMP SHORT $MEN110
 0470                        C1	$MIF110:
 0470  83 FB FF              C1		  CMP	  BX,$M_NO_HANDLE			     ;;AN000;; Was there a handle specified?
 0473  74 0B                 C1		  JE $MIF112
 0475  3B C1                 C1		    CMP     AX,CX				     ;AN001;	 Was it ALL written?
 0477  74 07                 C1		    JE $MIF113
 0479  E8 04E9 R             C1		      CALL    $M_GET_EXT_ERR_39 		     ;AN001;	   Set Extended error
 047C  83 C4 06              C1		      ADD     SP,6				     ;AN001;	   Clean up stack
 047F  F9                    C1		      STC					     ;AN001;	   Flag that there was an er
				ror
 0480                        C1	$MIF113:
 0480                        C1	$MIF112:
 0480                        C1	$MEN110:
 0480  72 03                 C1		JC $MIF117
 0482  5A                    C1		  POP	  DX					     ;;AN000;;	Restore regs
 0483  5B                    C1		  POP	  BX					     ;;AN000;;
 0484  58                    C1		  POP	  AX					     ;;AN000;;
 0485                        C1	$MIF117:
 0485  C3                    C1		RET						     ;;AN000;; Return
 0486                        C1	$M_DISPLAY_STRING ENDP					     ;;AN000;;
 0486                        C1	$M_DISPLAY_$_STRING PROC NEAR				     ;;AN000;;
 0486  1E                    C1		PUSH	DS					     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-26
DOS - Message Retriever - DISPMSG.ASM Module                

 0487  06                    C1		PUSH	ES					     ;;AN000;;
 0488  1F                    C1		POP	DS					     ;;AN000;; Set DS to segment of message 
				text
 0489  83 F9 01              C1		CMP	CX,$M_SINGLE_CHAR			     ;;AN000;; Is this a single character?
 048C  75 1B                 C1		JNE $MIF119
 048E  B4 02                 C1		  MOV	  AH,DOS_DISP_CHAR			     ;;AN000;;	 DOS Function to display CHA
				RACTER
 0490  26: 8A 15             C1		  MOV	  DL,BYTE PTR ES:[DI]			     ;;AN000;;	 Get the character
 0493  CD 21                 C1		  INT	  21H					     ;;AN000;;	 Write character
 0495  1F                    C1		  POP	  DS					     ;;AN000;; Set DS to segment of message 
				text
 0496  8A C2                 C1		  MOV	  AL,DL 				     ;;AN000;;	 Get the character in AL
 0498  E8 0509 R             C1		  CALL	  $M_IS_IT_DBCS 			     ;;AN000;;	 Is this the first byte of a
				 DB character
 049B  1E                    C1		  PUSH	  DS					     ;;AN000;;
 049C  06                    C1		  PUSH	  ES					     ;;AN000;;
 049D  1F                    C1		  POP	  DS					     ;;AN000;; Set DS to segment of message 
				text
 049E  73 07                 C1		  JNC $MIF120
 04A0  26: 8A 55 01          C1		    MOV     DL,BYTE PTR ES:[DI]+1		     ;;AN000;; Get the next character
 04A4  CD 21                 C1		    INT     21H 				     ;;AN000;;	 Write character
 04A6  F8                    C1		    CLC 					     ;;AN000;;	 Clear the DBCS indicator
 04A7                        C1	$MIF120:
 04A7  EB 0F                 C1		JMP SHORT $MEN119
 04A9                        C1	$MIF119:
 04A9  B4 02                 C1		  MOV	  AH,DOS_DISP_CHAR			     ;;AN000;;	 DOS Function to display CHA
				RACTER
 04AB                        C1	$MDO123:
 04AB  0B C9                 C1		    OR	    CX,CX				     ;;AN002;;	 Are there any left to displ
				ay?
 04AD  74 09                 C1		  JZ $MEN123
 04AF  26: 8A 15             C1		    MOV     DL,BYTE PTR ES:[DI] 		     ;;AN002;;	   Get the character
 04B2  CD 21                 C1		    INT     21H 				     ;;AN002;;	   Display the character
 04B4  47                    C1		    INC     DI					     ;;AN002;;	   Set pointer to next chara
				cter
 04B5  49                    C1		    DEC     CX					     ;;AN002;;	   Count this character
 04B6  75 F3                 C1		  JNZ $MDO123
 04B8                        C1	$MEN123:
 04B8                        C1	$MEN119:
 04B8  F8                    C1		CLC						     ;;AN000;;	 Char functions used don't r
				eturn carry as error
 04B9  1F                    C1		POP	DS					     ;;AN000;;
 04BA  C3                    C1		RET						     ;;AN000;;
 04BB                        C1	$M_DISPLAY_$_STRING ENDP				     ;;AN000;;
 04BB                        C1	$M_DISPLAY_H_STRING PROC NEAR				     ;;AN000;;
 04BB  33 C0                 C1		XOR	AX,AX					     ;;AN002;; Set number of bytes written t
				o 0
 04BD  0B C9                 C1		OR	CX,CX					     ;;AN002;; For performance, don't write 
				if not necessary
 04BF  74 27                 C1		JZ $MIF127
 04C1  1E                    C1		  PUSH	  DS					     ;;AN000;; Yes,
 04C2  06                    C1		  PUSH	  ES					     ;;AN000;;
 04C3  1F                    C1		  POP	  DS					     ;;AN000;;	 Set DS to segment of messag
				e text
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-27
DOS - Message Retriever - DISPMSG.ASM Module                

 04C4  B4 40                 C1		  MOV	  AH,DOS_WRITE_HANDLE			     ;;AN000;;	 DOS function to write to a 
				handle
 04C6  8B D7                 C1		  MOV	  DX,DI 				     ;;AN000;;	 Pointer to data to write
 04C8  83 F9 01              C1		  CMP	  CX,$M_SINGLE_CHAR			     ;;AN000;;	 Is this a single character?
 04CB  75 18                 C1		  JNE $MIF128
 04CD  CD 21                 C1		    INT     21H 				     ;;AN000;;	   Write character
 04CF  1F                    C1		    POP     DS					     ;;AN000;;	     Set DS to segment of me
				ssage text
 04D0  50                    C1		    PUSH    AX					     ;;AN000;;
 04D1  26: 8A 05             C1		    MOV     AL,BYTE PTR ES:[DI] 		     ;;AN000;;	     Get the character
 04D4  E8 0509 R             C1		    CALL    $M_IS_IT_DBCS			     ;;AN000;;	     Is this the first byte 
				of a DB character
 04D7  58                    C1		    POP     AX					     ;;AN000;;	     Set DS to segment of me
				ssage text
 04D8  1E                    C1		    PUSH    DS					     ;;AN000;;
 04D9  06                    C1		    PUSH    ES					     ;;AN000;;
 04DA  1F                    C1		    POP     DS					     ;;AN000;;	     Set DS to segment of me
				ssage text
 04DB  73 06                 C1		    JNC $MIF129
 04DD  F8                    C1		      CLC					     ;;AN000;;	      Clear the DBCS indicat
				or
 04DE  B4 40                 C1		      MOV     AH,DOS_WRITE_HANDLE		     ;;AN000;;	      DOS function to write 
				to a handle
 04E0  42                    C1		      INC     DX				     ;;AN000;;	      Point to next characte
				r
 04E1  CD 21                 C1		      INT     21H				     ;;AN000;;	      Write character
 04E3                        C1	$MIF129:
 04E3  EB 02                 C1		  JMP SHORT $MEN128
 04E5                        C1	$MIF128:
 04E5  CD 21                 C1		    INT     21H 				     ;;AN000;;	   Write String at DS:SI to 
				handle
 04E7                        C1	$MEN128:
 04E7  1F                    C1		  POP	  DS					     ;;AN000;;
 04E8                        C1	$MIF127:
 04E8  C3                    C1		RET						     ;;AN000;;
 04E9                        C1	$M_DISPLAY_H_STRING ENDP				     ;;AN000;;
 04E9                        C1	$M_GET_EXT_ERR_39 PROC NEAR				     ;AN001;
 04E9  B8 0027               C1		MOV	AX,EXT_ERR_39				     ;AN001; Set AX=39
 04EC  BB 0004               C1		MOV	BX,(ERROR_CLASS_39 SHR 8) + ACTION_39	     ;AN001; Set BH=1 BL=4
 04EF  B5 01                 C1		MOV	CH,LOCUS_39				     ;AN001; Set CH=1
 04F1  C3                    C1		RET						     ;AN001;
 04F2                        C1	$M_GET_EXT_ERR_39 ENDP					     ;AN001;
 04F2                        C1	$M_ADD_CRLF PROC NEAR					     ;;AN004;;
 04F2  80 FE FF              C1		CMP	DH,UTILITY_MSG_CLASS			     ;;AN004;; Is it a utility message?
 04F5  74 11                 C1		JE $MIF134
 04F7  F6 C6 80              C1		  TEST	  DH,$M_NO_CRLF_MASK			     ;;AN004;;	 Are we to supress the CR LF
				?
 04FA  75 0C                 C1		  JNZ $MIF135
 04FC  1E                    C1		    PUSH    DS					     ;;AN004;;
 04FD  07                    C1		    POP     ES					     ;;AN004;;	  Set ES to data segment
 04FE  8D 3E 003B R          C1		    LEA     DI,$M_RT.$M_CRLF			     ;;AN004;;	  Point at CRLF message
 0502  B9 0002               C1		    MOV     CX,$M_CRLF_SIZE			     ;;AN004;;	  Set the message size
 0505  E8 044B R             C1		    CALL    $M_DISPLAY_STRING			     ;;AN004;;	  Display the CRLF
 0508                        C1	$MIF135:
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-28
DOS - Message Retriever - DISPMSG.ASM Module                

 0508                        C1	$MIF134:
 0508  C3                    C1		RET						     ;;AN004;; Return
 0509                        C1	$M_ADD_CRLF ENDP					     ;;AN004;;
 0509                        C1	$M_IS_IT_DBCS PROC NEAR 				     ;;AN000;;
 0509  06                    C1		PUSH	ES					     ;;AN000;; Save Extra segment register
 050A  57                    C1		PUSH	DI					     ;;AN000;; Save SI register
 050B  C4 3E 0034 R          C1		LES	DI,$M_RT.$M_DBCS_VEC			     ;;AN000;;
 050F  0B FF                 C1		OR	DI,DI					     ;;AN000;; Was the DBCS vector set?
 0511  74 17                 C1		JZ $MIF138
 0513                        C1	$MDO139:
 0513  26: 83 3D 00          C1		    CMP     WORD PTR ES:[DI],$M_DBCS_TERM	     ;;AN000;; Is this the terminating flag?
 0517  F8                    C1		    CLC 					     ;;AN000;;
 0518  74 10                 C1		  JE $MEN139
 051A  26: 3A 05             C1		    CMP     AL,BYTE PTR ES:[DI] 		     ;;AN000;;	  Does the character fall in
				 the DBCS range?
 051D  72 07                 C1		    JNAE $MIF141
 051F  26: 3A 45 01          C1		    CMP     AL,BYTE PTR ES:[DI]+1		     ;;AN000;;	  Does the character fall in
				 the DBCS range?
 0523  77 01                 C1		    JNBE $MIF141
 0525  F9                    C1		      STC					     ;;AN000;;	  Yes,
 0526                        C1	$MIF141:
 0526  47                    C1		    INC     DI					     ;;AN000;;	  No,
 0527  47                    C1		    INC     DI					     ;;AN000;;	     Go to next vector
 0528  EB E9                 C1		  JMP SHORT $MDO139
 052A                        C1	$MEN139:
 052A                        C1	$MIF138:
 052A  5F                    C1		POP	DI					     ;;AN000;;
 052B  07                    C1		POP	ES					     ;;AN000;; Restore SI register
 052C  C3                    C1		RET						     ;;AN000;; Return
 052D                        C1	$M_IS_IT_DBCS ENDP					     ;;AN000;;
 052D                        C1	$M_CONVERT2ASC PROC NEAR				     ;;AN000;;
 052D  8F 06 003E R          C1		POP	[$M_RT.$M_RETURN_ADDR]			     ;;AN000;; Save Return Address
 0531  33 DB                 C1		XOR	BX,BX					     ;;AN000;; Use BP as a swapping register
 0533  93                    C1		XCHG	BX,AX					     ;;AN000;; Initialize - Low Word in BP
 0534  92                    C1		XCHG	AX,DX					     ;;AN000;;		  - High Word in AX
 0535                        C1	$MDO145:
 0535  F7 36 0042 R          C1		  DIV	  $M_RT.$M_DIVISOR			     ;;AN000;; Divide High Word by divisor
 0539  93                    C1		  XCHG	  BX,AX 				     ;;AN000;; Setup to divide Low Word usin
				g remainder
 053A  F7 36 0042 R          C1		  DIV	  $M_RT.$M_DIVISOR			     ;;AN000;; Divide Low Word by divisor
 053E  83 FA 09              C1		  CMP	  DX,9					     ;;AN000;;	Make a digit of the remainde
				r
 0541  76 05                 C1		  JNA $MIF146
 0543  80 C2 37              C1		    ADD     DL,55				     ;;AN000;;	   Make A to F ASCII
 0546  EB 03                 C1		  JMP SHORT $MEN146
 0548                        C1	$MIF146:
 0548  80 C2 30              C1		    ADD     DL,'0'				     ;;AN000;;	   Make 0 to 9 ASCII
 054B                        C1	$MEN146:
 054B  52                    C1		  PUSH	  DX					     ;;AN000;; Save the digit on the stack
 054C  41                    C1		  INC	  CX					     ;;AN000;; Count that digit
 054D  0B C0                 C1		  OR	  AX,AX 				     ;;AN000;; Are we done?
 054F  75 04                 C1		JNZ $MLL149
 0551  0B DB                 C1		  OR	  BX,BX 				     ;;AN000;; AX and BX must be ZERO!!
 0553  74 39                 C1		JZ $MEN145
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-29
DOS - Message Retriever - DISPMSG.ASM Module                

 0555                        C1	$MLL149:
 0555  83 F9 03              C1		  CMP	  CX,$M_FIRST_THOU			     ;;AN000;; Are we at the first thousands
				 mark
 0558  75 0D                 C1		  JNE $MIF150
 055A  80 7C 0A 2C           C1		    CMP     $M_SL.$M_S_PAD,$M_COMMA		     ;;AN000;; Is the pad character a comma?
 055E  75 05                 C1		    JNE $MIF151
 0560  FF 36 004B R          C1		      PUSH    WORD PTR $M_RT.$M_THOU_SEPARA	     ;;AN000;; Insert a thousand separator
 0564  41                    C1		      INC     CX				     ;;AN000;;
 0565                        C1	$MIF151:
 0565  EB 22                 C1		  JMP SHORT $MEN150
 0567                        C1	$MIF150:
 0567  83 F9 06              C1		    CMP     CX,$M_SECOND_THOU			     ;;AN000;;	 Are we at the first thousan
				ds mark
 056A  75 0D                 C1		    JNE $MIF154
 056C  80 7C 0A 2C           C1		      CMP     $M_SL.$M_S_PAD,$M_COMMA		     ;;AN000;; Is the pad character a comma?
 0570  75 05                 C1		      JNE $MIF155
 0572  FF 36 004B R          C1			PUSH	WORD PTR $M_RT.$M_THOU_SEPARA	     ;;AN000;; Insert a thousand separator
 0576  41                    C1			INC	CX				     ;;AN000;;
 0577                        C1	$MIF155:
 0577  EB 10                 C1		    JMP SHORT $MEN154
 0579                        C1	$MIF154:
 0579  83 F9 09              C1		      CMP     CX,$M_THIRD_THOU			     ;;AN000;;	 Are we at the first thousan
				ds mark
 057C  75 0B                 C1		      JNE $MIF158
 057E  80 7C 0A 2C           C1			CMP	$M_SL.$M_S_PAD,$M_COMMA 	     ;;AN000;; Is the pad character a comma?
 0582  75 05                 C1			JNE $MIF159
 0584  FF 36 004B R          C1			  PUSH	  WORD PTR $M_RT.$M_THOU_SEPARA      ;;AN000;; Insert a thousand separator
 0588  41                    C1			  INC	  CX				     ;;AN000;;
 0589                        C1	$MIF159:
 0589                        C1	$MIF158:
 0589                        C1	$MEN154:
 0589                        C1	$MEN150:
 0589  93                    C1		  XCHG	  AX,BX 				     ;;AN000;;	 Setup to divide the reduced
				 High Word
 058A  33 D2                 C1		  XOR	  DX,DX 				     ;;AN000;;	 Reset remainder
 058C  EB A7                 C1		JMP SHORT $MDO145
 058E                        C1	$MEN145:
 058E  33 D2                 C1		XOR	DX,DX					     ;;AN000;;	 Reset remainder
 0590  33 C0                 C1		XOR	AX,AX					     ;;AN000;;	 Reset remainder
 0592  FF 36 003E R          C1		PUSH	[$M_RT.$M_RETURN_ADDR]			     ;;AN000;;	 Restore Return Address
 0596  C3                    C1		RET						     ;;AN000;;	 Return
 0597                        C1	$M_CONVERT2ASC ENDP					     ;;AN000;;
 0597                        C1	$M_DISPLAY_MESSAGE PROC NEAR				     ;;AN000;;
 0597                        C1	$MDO165:
 0597  33 D2                 C1		  XOR	  DX,DX 				     ;;AN000;; Set size = 0
 0599  0B C9                 C1		  OR	  CX,CX 				     ;;AN000;; Are we finished the message y
				et?
 059B  74 21                 C1		  JZ $MIF166
 059D  B4 25                 C1		    MOV     AH,"%"				     ;;AN000;;	 Prepare to scan for %
 059F  B0 00                 C1		    MOV     AL,0				     ;;AN004;;
 05A1                        C1	$MDO167:
 05A1  26: 38 25             C1		      CMP     BYTE PTR ES:[DI],AH		     ;;AN000;;	 Is this character NOT a %
 05A4  75 0A                 C1		    JNE $MLL168
 05A6  26: 38 65 01          C1		      CMP     BYTE PTR ES:[DI+1],AH		     ;;AN000;;	   Is the next character als
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-30
DOS - Message Retriever - DISPMSG.ASM Module                

				o a %
 05AA  74 04                 C1		    JE $MLL168
 05AC  3A C4                 C1		      CMP     AL,AH				     ;;AN000;;	     Was the character befor
				e a %
 05AE  75 0E                 C1		    JNE $MEN167
 05B0                        C1	$MLL168:
 05B0  26: 8A 05             C1		      MOV     AL,BYTE PTR ES:[DI]		     ;;AN004;;	 Yes, (to any of the above)
 05B3  E8 0509 R             C1		      CALL    $M_IS_IT_DBCS			     ;;AN004;;	   Is this character the fir
				st part of a DBCS?
 05B6  73 01                 C1		      JNC $MIF169
 05B8  47                    C1			INC	DI				     ;;AN004;;	     Increment past second p
				art
 05B9                        C1	$MIF169:
 05B9  47                    C1		      INC     DI				     ;;AN000;;	     Next character in strin
				g
 05BA  42                    C1		      INC     DX				     ;;AN000;;	     Size = Size + 1
 05BB  49                    C1		      DEC     CX				     ;;AN000;;	     Decrement total size
 05BC  75 E3                 C1		    JNZ $MDO167
 05BE                        C1	$MEN167:
 05BE                        C1	$MIF166:
 05BE  56                    C1		  PUSH	  SI					     ;;AN000;; Save beginning of sublists
 05BF  87 CA                 C1		  XCHG	  CX,DX 				     ;;AN000;; Get size of message to displa
				y (tot sz in DX)
 05C1  0B ED                 C1		  OR	  BP,BP 				     ;;AN000;; Do we have any replacables to
				 do?
 05C3  74 33                 C1		  JZ $MIF173
 05C5  4D                    C1		    DEC     BP					     ;;AN000;;	 Decrement number of replaca
				bles
 05C6  83 3E 0040 R 00       C1		    CMP     $M_RT.$M_MSG_NUM,$M_NULL		     ;;AN000;; Is this an Extended/Parse cas
				e
 05CB  75 2B                 C1		    JNE $MIF174
 05CD                        C1	$MDO175:
 05CD  8A 44 06              C1			MOV	AL,$M_SL.$M_S_ID		     ;;AN000;;	 Get ID byte
 05D0  04 30                 C1			ADD	AL,30H				     ;;AN000;;	 Convert to ASCII
 05D2  26: 3A 45 01          C1			CMP	AL,BYTE PTR ES:[DI]+1		     ;;AN000;;	 Is this the right sublist?
 05D6  75 02                 C1		      JNE $MIF175
 05D8  EB 1E                 C1		      JMP SHORT $MSR175
 05DA                        C1	$MIF175:
 05DA  3C 30                 C1			CMP	AL,$M_SPECIAL_CASE		     ;;AN000;;	   Does this sublist have ID
				 = 0
 05DC  75 04                 C1		      JNE $MLL178
 05DE  0B D2                 C1			OR	DX,DX				     ;;AN000;;	   Are we at the end of the 
				message?
 05E0  74 04                 C1		      JZ $MEN175
 05E2                        C1	$MLL178:
 05E2  03 34                 C1			ADD	SI,WORD PTR $M_SL.$M_S_SIZE	     ;;AN000;;	     Next SUBLIST
 05E4  EB E7                 C1		      JMP SHORT $MDO175
 05E6                        C1	$MEN175:
 05E6  80 3E 003D R FF       C1			CMP	$M_RT.$M_CLASS,UTILITY_MSG_CLASS     ;;AN004;;	     Is it a utility message
				?
 05EB  75 08                 C1			JNE $MIF180
 05ED  42                    C1			  INC	  DX				     ;;AN000;;	       Remember to display C
				R,LF
 05EE  42                    C1			  INC	  DX				     ;;AN000;;		 at the end of the m
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-31
DOS - Message Retriever - DISPMSG.ASM Module                

				essage
 05EF  49                    C1			  DEC	  CX				     ;;AN000;;	       Adjust message length
 05F0  49                    C1			  DEC	  CX				     ;;AN000;;
 05F1  4F                    C1			  DEC	  DI				     ;;AN000;;	       Adjust ending address
				 of message
 05F2  4F                    C1			  DEC	  DI				     ;;AN000;;
 05F3  EB 03                 C1			JMP SHORT $MEN180
 05F5                        C1	$MIF180:
 05F5  BA FFFF               C1			  MOV	  DX,-1 			     ;;AN004;;	       Set special case
 05F8                        C1	$MEN180:
 05F8                        C1	$MSR175:
 05F8                        C1	$MIF174:
 05F8                        C1	$MIF173:
 05F8  57                    C1		  PUSH	  DI					     ;;AN000;; Save pointer to replace numbe
				r
 05F9  2B F9                 C1		  SUB	  DI,CX 				     ;;AN000;; Determine beginning of string
 05FB  E8 044B R             C1		  CALL	  $M_DISPLAY_STRING			     ;;AN000;; Display string until % (or en
				d)
 05FE  5F                    C1		  POP	  DI					     ;;AN000;; Get back pointer to replace n
				umber
 05FF  59                    C1		  POP	  CX					     ;;AN000;; Clean up stack in case error
 0600  73 03                 C1		JNC $MXL3
 0602  EB 7F 90              C1		JMP $MEN165
 0605                        C1	$MXL3:
 0605  51                    C1		  PUSH	  CX					     ;;AN000;;
 0606  8B CA                 C1		  MOV	  CX,DX 				     ;;AN000;; Get the size of the rest of t
				he message
 0608  80 7C 06 00           C1		  CMP	  $M_SL.$M_S_ID,$M_SPECIAL_CASE-30H	     ;;AN000;; Is this the %0 case?
 060C  74 0D                 C1		  JE $MIF187
 060E  0B C9                 C1		    OR	    CX,CX				     ;;AN000;;	Are we finished the whole me
				ssage?
 0610  74 06                 C1		    JZ $MIF188
 0612  49                    C1		      DEC     CX				     ;;AN000;;	  Decrement total size (%)
 0613  49                    C1		      DEC     CX				     ;;AN000;;	  Decrement total size (#)
 0614  47                    C1		      INC     DI				     ;;AN000;;	  Go past %
 0615  47                    C1		      INC     DI				     ;;AN000;;	  Go past replace number
 0616  EB 01                 C1		    JMP SHORT $MEN188
 0618                        C1	$MIF188:
 0618  5E                    C1		      POP     SI				     ;;AN000;;	  Get back pointer to beginn
				ing of SUBLISTs
 0619                        C1	$MEN188:
 0619  EB 10                 C1		  JMP SHORT $MEN187
 061B                        C1	$MIF187:
 061B  0B C9                 C1		    OR	    CX,CX				     ;;AN000;;	Are we finished the whole me
				ssage?
 061D  75 03                 C1		    JNZ $MIF192
 061F  5E                    C1		      POP     SI				     ;;AN000;;	 Get back pointer to beginni
				ng of SUBLISTs
 0620  EB 09                 C1		    JMP SHORT $MEN192
 0622                        C1	$MIF192:
 0622  83 F9 FF              C1		      CMP     CX,-1				     ;;AN004;;	 Are we at the end of the me
				ssage?
 0625  75 02                 C1		      JNZ $MIF194
 0627  33 C9                 C1			XOR	CX,CX				     ;;AN004;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-32
DOS - Message Retriever - DISPMSG.ASM Module                

 0629                        C1	$MIF194:
 0629  0B FF                 C1		      OR      DI,DI				     ;;AN004;;	Turn ZF off
 062B                        C1	$MEN192:
 062B                        C1	$MEN187:
 062B  74 56                 C1		JZ $MEN165
 062D  55                    C1		  PUSH	  BP					     ;;AN000;;	 Save the replace count
 062E  57                    C1		  PUSH	  DI					     ;;AN000;;	 Save location to complete m
				essage
 062F  06                    C1		  PUSH	  ES					     ;;AN000;;
 0630  51                    C1		  PUSH	  CX					     ;;AN000;;	 Save size of the rest of th
				e message
 0631  33 C9                 C1		  XOR	  CX,CX 				     ;;AN000;;	 Reset CX used for character
				 count
 0633  83 3E 0040 R 00       C1		  CMP	  $M_RT.$M_MSG_NUM,$M_NULL		     ;;AN000;; Is this an Extended/Parse cas
				e
 0638  75 2D                 C1		  JNE $MIF199
 063A  F6 44 07 0F           C1		    TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Char_Type AND $M_TYPE_MASK ;;AN000;;
 063E  75 08                 C1		    JNZ $MIF200
 0640  C4 7C 02              C1		      LES     DI,DWORD PTR $M_SL.$M_S_VALUE	     ;;AN000;; Load pointer to replacing par
				ameter
 0643  E8 08BA R             C1		      CALL    $M_CHAR_REPLACE			     ;;AN000;;
 0646  EB 1A                 C1		    JMP SHORT $MEN200
 0648                        C1	$MIF200:
 0648  F6 44 07 0D           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;;AN000;;
 064C  74 0C                 C1		      JZ $MLL202
 064E  F6 44 07 0E           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;;
 0652  74 06                 C1		      JZ $MLL202
 0654  F6 44 07 0C           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Bin_Hex_Type AND $M_TYPE_MASK ;;AN000;;
 0658  75 08                 C1		      JNZ $MIF202
 065A                        C1	$MLL202:
 065A  C4 7C 02              C1			LES	DI,DWORD PTR $M_SL.$M_S_VALUE	     ;;AN000;; Load pointer to replacing par
				ameter
 065D  E8 08E2 R             C1			CALL	$M_BIN2ASC_REPLACE		     ;;AN000;;
 0660  EB 00                 C1		      JMP SHORT $MEN202
 0662                        C1	$MIF202:
 0662                        C1	$MEN202:
 0662                        C1	$MEN200:
 0662  E8 07DF R             C1		    CALL    $M_DISPLAY_REPLACE			     ;;AN000;; Display the replace
 0665  EB 03                 C1		  JMP SHORT $MEN199
 0667                        C1	$MIF199:
 0667  E8 068A R             C1		    CALL    $M_EXT_PAR_REPLACE			     ;;AN000;;
 066A                        C1	$MEN199:
 066A  72 07                 C1		  JC $MIF211
 066C  59                    C1		    POP     CX					     ;;AN000;; Get size of the rest of the m
				essage
 066D  07                    C1		    POP     ES					     ;;AN000;; Get address of the rest of th
				e message
 066E  5F                    C1		    POP     DI					     ;;AN000;;
 066F  5D                    C1		    POP     BP					     ;;AN000;; Get replacment count
 0670  5E                    C1		    POP     SI					     ;;AN000;; ELSE get address of first sub
				list structure
 0671  EB 04                 C1		  JMP SHORT $MEN211
 0673                        C1	$MIF211:
 0673  83 C4 0A              C1		    ADD     SP,10				     ;;AN000;; Clean up stack if error
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-33
DOS - Message Retriever - DISPMSG.ASM Module                

 0676  F9                    C1		    STC 					     ;;AN000;;
 0677                        C1	$MEN211:
 0677  83 3E 0040 R 00       C1		  CMP	  $M_RT.$M_MSG_NUM,$M_NULL		     ;;AN000;; Is this an Extended/Parse cas
				e
 067C  75 05                 C1		JNE $MLL214
 067E  72 03                 C1		JC $MXL4
 0680  E9 0597 R             C1		JMP $MDO165
 0683                        C1	$MXL4:
 0683                        C1	$MLL214:
 0683                        C1	$MEN165:
 0683  C7 06 0040 R 0000     C1		MOV	$M_RT.$M_MSG_NUM,0			     ;;AN000;; Reset message number to null
 0689  C3                    C1		RET						     ;;AN000;; Return
 068A                        C1	$M_DISPLAY_MESSAGE ENDP 				     ;;AN000;;
 068A                        C1	$M_EXT_PAR_REPLACE PROC NEAR				     ;;AN000;;
 068A  33 D2                 C1		XOR	DX,DX					     ;;AN000;; Prepare for get binary value 
				(HIGH)
 068C  A1 0040 R             C1		MOV	AX,$M_RT.$M_MSG_NUM			     ;;AN000;; Prepare for get binary value 
				(LOW)
 068F  C7 06 0042 R 000A     C1		MOV	$M_RT.$M_DIVISOR,$M_BASE10		     ;;AN000;; Set default divisor
 0695  E8 052D R             C1		CALL	$M_CONVERT2ASC				     ;;AN000;;
 0698                        C1	$MDO215:
 0698  58                    C1		  POP	  AX					     ;;AN000;;	 Get character in register
 0699  88 87 0044 R          C1		  MOV	  BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL	     ;;AN000;;	Move char into the buffer
 069D  43                    C1		  INC	  BX					     ;;AN000;;	 Increase buffer count
 069E  83 FB 40              C1		  CMP	  BX,$M_TEMP_BUF_SZ			     ;;AN000;;	 Is buffer full?
 06A1  75 03                 C1		  JNE $MIF216
 06A3  E8 089E R             C1		    CALL    $M_FLUSH_BUF			     ;;AN000;;	   Flush the buffer
 06A6                        C1	$MIF216:
 06A6  FE C9                 C1		  DEC	  CL					     ;;AN000;;	 Have we completed replace?
 06A8  75 EE                 C1		JNZ $MDO215
 06AA  B8 0A0D               C1		MOV	AX,$M_CR_LF				     ;;AN000;;	Move char into the buffer
 06AD  89 87 0044 R          C1		MOV	WORD PTR $M_RT.$M_TEMP_BUF[BX],AX	     ;;AN000;;	Move char into the buffer
 06B1  43                    C1		INC	BX					     ;;AN000;;	 Increase buffer count
 06B2  43                    C1		INC	BX					     ;;AN000;;	 Increase buffer count
 06B3  E8 089E R             C1		CALL	$M_FLUSH_BUF				     ;;AN000;;	   Flush the buffer
 06B6  C3                    C1		RET						     ;;AN000::
 06B7                        C1	$M_EXT_PAR_REPLACE ENDP 				     ;;AN000;;
 06B7                        C1		  $M_GET_MSG_ADDRESS PROC NEAR			     ;;AN000;;
 06B7  56                    C1		  PUSH	  SI					     ;;AN000;;
 06B8  53                    C1		  PUSH	  BX					     ;;AN000;;
 06B9  33 F6                 C1		  XOR	  SI,SI 				     ;;AN000;; Use SI as an index
 06BB  33 C9                 C1		  XOR	  CX,CX 				     ;;AN000;; Use CX as an size
 06BD                        C1	$MDO219:
 06BD  80 FE FF              C1		    CMP     DH,UTILITY_MSG_CLASS		     ;;AN000;; Were utility messages request
				ed?
 06C0  75 08                 C1		    JNE $MIF220
 06C2  8B BC 002C R          C1			MOV	DI,WORD PTR $M_RT.$M_CLASS_ADDRS[SI] ;;AN000;;	 Get address of class
 06C6  8B DF                 C1			MOV	BX,DI				     ;;AN000;
 06C8  EB 25                 C1		    JMP SHORT $MEN220
 06CA                        C1	$MIF220:
 06CA  F6 C6 02              C1		      TEST    DH,PARSE_ERR_CLASS		     ;;AN000;;	 Were parse errors requested
				?
 06CD  74 08                 C1		      JE $MIF222
 06CF  C4 BC 0010 R          C1			LES	DI,DWORD PTR $M_RT.$M_PARSE_COMMAND[SI] ;;AN000;;   Get address of class
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-34
DOS - Message Retriever - DISPMSG.ASM Module                

 06D3  8C C3                 C1			MOV	BX,ES				     ;;AN000;
 06D5  EB 18                 C1		      JMP SHORT $MEN222
 06D7                        C1	$MIF222:
 06D7  3D 0013               C1			CMP	AX,$M_CRIT_LO			     ;;AN000;;	   Is this a critical error?
 06DA  72 0D                 C1			JNAE $MIF224
 06DC  3D 0027               C1			CMP	AX,$M_CRIT_HI			     ;;AN000;;
 06DF  77 08                 C1			JNBE $MIF224
 06E1  C4 BC 001C R          C1			  LES	  DI,DWORD PTR $M_RT.$M_CRIT_ADDRS[SI] ;;AN000;; Get address of class
 06E5  8C C3                 C1			  MOV	  BX,ES 			     ;;AN000;
 06E7  EB 06                 C1			JMP SHORT $MEN224
 06E9                        C1	$MIF224:
 06E9  C4 BC 0000 R          C1			  LES	  DI,DWORD PTR $M_RT.$M_EXT_ERR_ADDRS[SI] ;;AN000;; Get address of class
 06ED  8C C3                 C1			  MOV	  BX,ES 			     ;;AN000;
 06EF                        C1	$MEN224:
 06EF                        C1	$MEN222:
 06EF                        C1	$MEN220:
 06EF  83 FB FF              C1		    CMP     BX,$M_TERMINATING_FLAG		     ;;AN000;; Are we finished all classes?
 06F2  75 16                 C1		    JNE $MIF229
 06F4  80 FE FF              C1		      CMP     DH,UTILITY_MSG_CLASS		     ;;AN000;;	  Was it a UTILITY class?
 06F7  75 03                 C1		      JNE $MIF230
 06F9  F9                    C1			STC					     ;;AN000;;	    Set the carry flag
 06FA  EB 0C                 C1		      JMP SHORT $MEN230
 06FC                        C1	$MIF230:
 06FC  A3 0040 R             C1			MOV	$M_RT.$M_MSG_NUM,AX		     ;;AN000;;	    Save message number
 06FF  B8 FFFF               C1			MOV	AX,$M_SPECIAL_MSG_NUM		     ;;AN000;;	    Set special message numb
				er
 0702  BD 0001               C1			MOV	BP,$M_ONE_REPLACE		     ;;AN000;;	    Set one replace in messa
				ge
 0705  33 F6                 C1			XOR	SI,SI				     ;;AN000;;	    Reset the SI index to st
				art again
 0707  F8                    C1			CLC					     ;;AN000;;
 0708                        C1	$MEN230:
 0708  EB 0C                 C1		    JMP SHORT $MEN229
 070A                        C1	$MIF229:
 070A  83 FB 00              C1		      CMP     BX,$M_CLASS_NOT_EXIST		     ;;AN000;;	 Does this class exist?
 070D  74 03                 C1		      JE $MIF234
 070F  E8 0766 R             C1			CALL	$M_FIND_SPECIFIED_MSG		     ;;AN000;;	   Try to find the message
 0712                        C1	$MIF234:
 0712  83 C6 04              C1		      ADD     SI,$M_ADDR_SZ_FAR 		     ;;AN000;;	     Get next class
 0715  F8                    C1		      CLC					     ;;AN000;;
 0716                        C1	$MEN229:
 0716  72 06                 C1		  JC $MEN219
 0718  0B C9                 C1		    OR	    CX,CX				     ;;AN000;;	   Was the message found?
 071A  75 02                 C1		  JNZ $MXL5
 071C  EB 9F                 C1		  JMP $MDO219
 071E                        C1	$MXL5:
 071E                        C1	$MEN219:
 071E  9C                    C1		  PUSHF 					     ;;AN006;; Save the flag state
 071F  80 FE 01              C1		  CMP	  DH,EXT_ERR_CLASS			     ;;AN006;; Was an extended error request
				ed?
 0722  75 29                 C1		  JNE $MIF239
 0724  52                    C1		    PUSH    DX					     ;;AN006;;	Save all needed registers
 0725  55                    C1		    PUSH    BP					     ;;AN006;;
 0726  51                    C1		    PUSH    CX					     ;;AN006;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-35
DOS - Message Retriever - DISPMSG.ASM Module                

 0727  06                    C1		    PUSH    ES					     ;;AN006;;
 0728  57                    C1		    PUSH    DI					     ;;AN006;;
 0729  50                    C1		    PUSH    AX					     ;;AN006;;
 072A  B8 0500               C1		    MOV     AX,IFSFUNC_INSTALL_CHECK		     ;;AN006;;	Check if IFSFUNC is installe
				d
 072D  CD 2F                 C1		    INT     2FH 				     ;;AN006;;
 072F  3C FF                 C1		    CMP     AL,IFSFUNC_INSTALLED		     ;;AN006;;	Is it installed?
 0731  58                    C1		    POP     AX					     ;;AN006;;	Restore msg number
 0732  75 09                 C1		    JNE $MIF240
 0734  8B D8                 C1		      MOV     BX,AX				     ;;AN006;;	  BX is the extended error n
				umber
 0736  B8 0502               C1		      MOV     AX,IFS_GET_ERR_TEXT		     ;;AN006;;	  AX is the muliplex number
 0739  CD 2F                 C1		      INT     2FH				     ;;AN006;;	  Call IFSFUNC
 073B  EB 01                 C1		    JMP SHORT $MEN240
 073D                        C1	$MIF240:
 073D  F9                    C1		      STC					     ;;AN006;;	  Carry conditon
 073E                        C1	$MEN240:
 073E  73 05                 C1		    JNC $MIF243
 0740  5F                    C1		      POP     DI				     ;;AN006;;	No,
 0741  07                    C1		      POP     ES				     ;;AN006;;	 Restore old pointer
 0742  59                    C1		      POP     CX				     ;;AN006;;
 0743  EB 06                 C1		    JMP SHORT $MEN243
 0745                        C1	$MIF243:
 0745  83 C4 06              C1		      ADD     SP,6				     ;;AN006;;	 Throw away old pointer
 0748  E8 0757 R             C1		      CALL    $M_SET_LEN_IN_CX			     ;;AN006;;	 Get the length of the ASCII
				Z string
 074B                        C1	$MEN243:
 074B  5D                    C1		    POP     BP					     ;;AN006;;	Restore other Regs
 074C  5A                    C1		    POP     DX					     ;;AN006;;
 074D                        C1	$MIF239:
 074D  EB 01                 C2		   JMP	   $+3 
 074F                        C2	??0000   LABEL   NEAR 
 074F  CF                    C2		   IRET 
 0750  0E                    C2		   PUSH    CS 
 0751  E8 074F R             C2		   CALL    ??0000 
 0754  5B                    C1		  POP	  BX					     ;;AN000;;
 0755  5E                    C1		  POP	  SI					     ;;AN000;;
 0756  C3                    C1		  RET						     ;;AN000;; Return ES:DI pointing to the 
				message
 0757                        C1	$M_GET_MSG_ADDRESS ENDP 				     ;;
 0757                        C1	$M_SET_LEN_IN_CX PROC NEAR				     ;;
 0757  57                    C1		  PUSH	  DI					     ;;AN006;; Save position
 0758  50                    C1		  PUSH	  AX					     ;;AN006;;
 0759  B9 FFFF               C1		  MOV	  CX,-1 				     ;;AN006;; Set CX for decrements
 075C  32 C0                 C1		  XOR	  AL,AL 				     ;;AN006;; Prepare compare register
 075E  F2/ AE                C1		  REPNE   SCASB 				     ;;AN006;; Scan for zero
 0760  F7 D1                 C1		  NOT	  CX					     ;;AN006;; Change decrement into number
 0762  49                    C1		  DEC	  CX					     ;;AN006;; Don't include the zero
 0763  58                    C1		  POP	  AX					     ;;AN006;;
 0764  5F                    C1		  POP	  DI					     ;;AN006;; Restore position
 0765  C3                    C1		  RET						     ;;AN006;;
 0766                        C1	$M_SET_LEN_IN_CX ENDP					     ;;
 0766                        C1	$M_FIND_SPECIFIED_MSG PROC NEAR 			     ;;AN000;;
 0766  83 FB 01              C1		  CMP	  BX,1					     ;;AN004;;	Do we have an address to CAL
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-36
DOS - Message Retriever - DISPMSG.ASM Module                

				L?
 0769  75 1D                 C1		  JNE $MIF247
 076B  83 3E 0028 R FF       C1		  CMP	  WORD PTR $M_RT.$M_DISK_PROC_ADDR,-1	     ;;AN004;;	Do we have an address to CAL
				L?
 0770  74 16                 C1		  JE $MIF247
 0772  3D FFFF               C1		    CMP     AX,$M_SPECIAL_MSG_NUM		     ;;AN004;; Are we displaying a default E
				xt Err?
 0775  75 0B                 C1		    JNE $MIF248
 0777  50                    C1		      PUSH    AX				     ;;AN004;;	 Reset the special message n
				umber
 0778  A1 0040 R             C1		      MOV     AX,$M_RT.$M_MSG_NUM		     ;;AN004;;	 Get the old message number
 077B  FF 1E 0028 R          C1		      CALL    DWORD PTR $M_RT.$M_DISK_PROC_ADDR      ;;AN004;;	 Call the READ_DISK_PROC to 
				get error text
 077F  58                    C1		      POP     AX				     ;;AN004;;	 Reset the special message n
				umber
 0780  EB 04                 C1		    JMP SHORT $MEN248
 0782                        C1	$MIF248:
 0782  FF 1E 0028 R          C1		      CALL    DWORD PTR $M_RT.$M_DISK_PROC_ADDR      ;;AN004;;	 Call the READ_DISK_PROC to 
				get error text
 0786                        C1	$MEN248:
 0786  EB 1A                 C1		  JMP SHORT $MEN247
 0788                        C1	$MIF247:
 0788  33 C9                 C1		    XOR     CX,CX				     ;;AN002;;	 CX = 0 will allow us to
 078A  80 FE FF              C1		    CMP     DH,UTILITY_MSG_CLASS		     ;;AN001;;
 078D  74 06                 C1		    JE $MIF252
 078F  26: 8A 4D 03          C1		      MOV     CL,BYTE PTR ES:[DI].$M_NUM_CLS_MSG     ;;AN001;;	 Get number of messages in c
				lass
 0793  EB 09                 C1		    JMP SHORT $MEN252
 0795                        C1	$MIF252:
 0795  2E: 38 35             C1		      CMP     BYTE PTR CS:[DI].$M_CLASS_ID,DH	     ;;AN002;; Check if class still exists a
				t
 0798  75 04                 C1		      JNE $MIF254
 079A  2E: 8A 4D 03          C1			MOV	CL,BYTE PTR CS:[DI].$M_NUM_CLS_MSG   ;;AN000;;	   Get number of messages in
				 class
 079E                        C1	$MIF254:
 079E                        C1	$MEN252:
 079E  83 C7 04              C1		    ADD     DI,$M_CLASS_ID_SZ			     ;;AN000;;	   Point past the class head
				er
 07A1  F9                    C1		    STC 					     ;;AN004;;	 Flag that we haven't found 
				anything yet
 07A2                        C1	$MEN247:
 07A2  73 2D                 C1		  JNC $MIF258
 07A4  F8                    C1		    CLC 					     ;;AN004;; No, reset carry
 07A5                        C1	$MDO259:
 07A5  0B C9                 C1		      OR      CX,CX				     ;;AN000;;	  Do we have any to check?
 07A7  74 19                 C1		    JZ $MEN259
 07A9  80 FE FF              C1		      CMP     DH,UTILITY_MSG_CLASS		     ;;AN001;;
 07AC  74 05                 C1		      JE $MIF261
 07AE  26: 3B 05             C1			CMP	AX,WORD PTR ES:[DI].$M_NUM	     ;;AN001;; Is this the message requested
				?
 07B1  EB 03                 C1		      JMP SHORT $MEN261
 07B3                        C1	$MIF261:
 07B3  2E: 3B 05             C1			CMP	AX,WORD PTR CS:[DI].$M_NUM	     ;;AN000;; Is this the message requested
				?
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-37
DOS - Message Retriever - DISPMSG.ASM Module                

 07B6                        C1	$MEN261:
 07B6  75 02                 C1		    JNE $MIF259
 07B8  EB 09                 C1		    JMP SHORT $MSR259
 07BA                        C1	$MIF259:
 07BA  49                    C1		      DEC     CX				     ;;AN000;;	  No, well do we have more t
				o check?
 07BB  74 05                 C1		    JZ $MEN259
 07BD  83 C7 04              C1		      ADD     DI,$M_ID_SZ			     ;;AN000;;	     Yes, skip past msg head
				er
 07C0  EB E3                 C1		    JMP SHORT $MDO259
 07C2                        C1	$MEN259:
 07C2  F9                    C1		      STC					     ;;AN000;;
 07C3                        C1	$MSR259:
 07C3  72 0C                 C1		    JC $MIF269
 07C5  80 FE FF              C1		      CMP     DH,UTILITY_MSG_CLASS		     ;;AN001;;	 Yes, is it a utility messag
				e?
 07C8  F8                    C1		      CLC					     ;;AN001;;
 07C9  75 02                 C1		      JNE $MIF270
 07CB  0E                    C1			PUSH	CS				     ;;AN000;;
 07CC  07                    C1			POP	ES				     ;;AN000;;	 Return ES:DI pointing to th
				e message
 07CD                        C1	$MIF270:
 07CD  26: 03 7D 02          C1		      ADD     DI,WORD PTR ES:[DI].$M_TXT_PTR	     ;;AN000;; Prepare ES:DI pointing to the
				 message
 07D1                        C1	$MIF269:
 07D1                        C1	$MIF258:
 07D1  72 06                 C1		  JC $MIF274
 07D3  32 ED                 C1		    XOR     CH,CH				     ;;AN000;;
 07D5  26: 8A 0D             C1		    MOV     CL,BYTE PTR ES:[DI] 		     ;;AN000;;	 Move size into CX
 07D8  47                    C1		    INC     DI					     ;;AN000;;	 Increment past length
 07D9                        C1	$MIF274:
 07D9  C6 06 003A R 00       C1		  MOV	  $M_RT.$M_SIZE,$M_NULL 		     ;;AN004;; Reset variable
 07DE  C3                    C1		  RET						     ;;AN000;; Return
 07DF                        C1	$M_FIND_SPECIFIED_MSG ENDP				     ;;AN000;;
 07DF                        C1	$M_DISPLAY_REPLACE PROC NEAR				     ;;AN000;;
 07DF  33 DB                 C1		  XOR	  BX,BX 				     ;;AN000;; Use BX for buffer count
 07E1  80 7C 06 00           C1		  CMP	  $M_SL.$M_S_ID,$M_SPECIAL_CASE-30H	     ;;AN000;; Is this the special case (con
				vert to ASCII)
 07E5  75 11                 C1		  JNE $MIF276
 07E7  C7 87 0044 R 2D20     C1		    MOV     WORD PTR $M_RT.$M_TEMP_BUF[BX],$M_SPACE_HYP ;;AN000;; Move in a " -"
 07ED  43                    C1		    INC     BX					     ;;AN000;;	   Increment count
 07EE  43                    C1		    INC     BX					     ;;AN000;;	   Increment count
 07EF  C6 87 0044 R 20       C1		    MOV     BYTE PTR $M_RT.$M_TEMP_BUF[BX],$M_SPACE  ;;AN000;;	   Move in a " "
 07F4  43                    C1		    INC     BX					     ;;AN000;;	   Increment count
 07F5  E8 089E R             C1		    CALL    $M_FLUSH_BUF			     ;;AN000;;	   Write out " - " to prepar
				e for special case
 07F8                        C1	$MIF276:
 07F8  5D                    C1		  POP	  BP					     ;;AN000;; Remember the return address
 07F9  33 DB                 C1		  XOR	  BX,BX 				     ;;AN000;; Use BX for buffer count
 07FB  33 D2                 C1		  XOR	  DX,DX 				     ;;AN000;; Use DX for count of parms tak
				en off the stack
 07FD  88 0E 003A R          C1		  MOV	  $M_RT.$M_SIZE,CL			     ;;AN000;; Save size to later clear stac
				k
 0801  8A 44 09              C1		  MOV	  AL,BYTE PTR $M_SL.$M_S_MINW		     ;;AN000;; Get the minimum width
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-38
DOS - Message Retriever - DISPMSG.ASM Module                

 0804  3A C1                 C1		  CMP	  AL,CL 				     ;;AN000;; Do we need pad chars added?
 0806  76 1E                 C1		  JNA $MIF278
 0808  2A C1                 C1		    SUB     AL,CL				     ;;AN000;;	 Calculate how many pad char
				s are needed.
 080A  8A F0                 C1		    MOV     DH,AL				     ;;AN000;;	 Save the number of pad char
				acters
 080C  F6 44 07 80           C1		    TEST    BYTE PTR $M_SL.$M_S_FLAG,Right_Align     ;;AN000;;	 Was replaceable parm to be 
				right aligned?
 0810  74 14                 C1		    JZ $MIF279
 0812                        C1	$MDO280:
 0812  8A 44 0A              C1			MOV	AL,BYTE PTR $M_SL.$M_S_PAD	     ;;AN000;;
 0815  88 87 0044 R          C1			MOV	BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL    ;;AN000;;	   Move in a pad char
 0819  43                    C1			INC	BX				     ;;AN000;;
 081A  83 FB 40              C1			CMP	BX,$M_TEMP_BUF_SZ		     ;;AN000;;	   Is buffer full?
 081D  75 03                 C1			JNE $MIF281
 081F  E8 089E R             C1			  CALL	  $M_FLUSH_BUF			     ;;AN000;;	     Flush the buffer
 0822                        C1	$MIF281:
 0822  FE CE                 C1			DEC	DH				     ;;AN000;;	   Have we filled with enoug
				h pad chars?
 0824  75 EC                 C1		      JNZ $MDO280
 0826                        C1	$MIF279:
 0826                        C1	$MIF278:
 0826  80 7C 08 00           C1		  CMP	  BYTE PTR $M_SL.$M_S_MAXW,$M_UNLIM_W	     ;;AN000;; Is maximum width unlimited?
 082A  74 0D                 C1		  JE $MIF286
 082C  38 4C 08              C1		    CMP     BYTE PTR $M_SL.$M_S_MAXW,CL 	     ;;AN000;; Will we exceed maximum width?
 082F  73 08                 C1		    JNB $MIF287
 0831  2A 4C 08              C1		      SUB     CL,BYTE PTR $M_SL.$M_S_MAXW	     ;;AN000;;	 Calculate how many extra ch
				ars
 0834  8A D1                 C1		      MOV     DL,CL				     ;;AN000;;	 Remember how many chars to 
				pop off
 0836  8A 4C 08              C1		      MOV     CL,BYTE PTR $M_SL.$M_S_MAXW	     ;;AN000;;	 Set new string length
 0839                        C1	$MIF287:
 0839                        C1	$MIF286:
 0839  0B C9                 C1		  OR	  CX,CX 				     ;;AN000;;
 083B  74 24                 C1		  JZ $MIF290
 083D                        C1	$MDO291:
 083D  F6 44 07 0F           C1		      TEST    BYTE PTR $M_SL.$M_S_FLAG,NOT Char_Type AND $M_TYPE_MASK ;;AN000;;
 0841  75 0C                 C1		      JNZ $MIF292
 0843  F6 44 07 10           C1		      TEST    $M_SL.$M_S_FLAG,Char_field_ASCIIZ AND $M_SIZE_MASK ;  Is this replace a ASCIIZ
				 string?
 0847  74 06                 C1		      JZ $MIF292
 0849  26: 8A 05             C1			MOV	AL,BYTE PTR ES:[DI]		     ;;AN000;;	 Get first character from st
				ring
 084C  47                    C1			INC	DI				     ;;AN000;;	 Next character in string
 084D  EB 01                 C1		      JMP SHORT $MEN292
 084F                        C1	$MIF292:
 084F  58                    C1			POP	AX				     ;;AN000;;	 Get character in register
 0850                        C1	$MEN292:
 0850  88 87 0044 R          C1		      MOV     BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL      ;;AN000;;	Move char into the buffer
 0854  43                    C1		      INC     BX				     ;;AN000;;	 Increase buffer count
 0855  83 FB 40              C1		      CMP     BX,$M_TEMP_BUF_SZ 		     ;;AN000;;	 Is buffer full?
 0858  75 03                 C1		      JNE $MIF295
 085A  E8 089E R             C1			CALL	$M_FLUSH_BUF			     ;;AN000;;	   Flush the buffer
 085D                        C1	$MIF295:
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-39
DOS - Message Retriever - DISPMSG.ASM Module                

 085D  FE C9                 C1		      DEC     CL				     ;;AN000;;	 Have we completed replace?
 085F  75 DC                 C1		    JNZ $MDO291
 0861                        C1	$MIF290:
 0861  F6 44 07 80           C1		  TEST	  BYTE PTR $M_SL.$M_S_FLAG,Right_Align	     ;;AN000;;	 Was replaceable parm to be 
				left aligned?
 0865  75 18                 C1		  JNZ $MIF299
 0867  0A F6                 C1		    OR	    DH,DH				     ;;AN000;;	 Do we need pad chars added?
 0869  74 14                 C1		    JZ $MIF300
 086B                        C1	$MDO301:
 086B  8A 44 0A              C1			MOV	AL,BYTE PTR $M_SL.$M_S_PAD	     ;;AN000;;
 086E  88 87 0044 R          C1			MOV	BYTE PTR $M_RT.$M_TEMP_BUF[BX],AL    ;;AN000;;	   Move in a pad char
 0872  43                    C1			INC	BX				     ;;AN000;;
 0873  83 FB 40              C1			CMP	BX,$M_TEMP_BUF_SZ		     ;;AN000;;	   Is buffer full?
 0876  75 03                 C1			JNE $MIF302
 0878  E8 089E R             C1			  CALL	  $M_FLUSH_BUF			     ;;AN000;;	     Flush the buffer
 087B                        C1	$MIF302:
 087B  FE CE                 C1			DEC	DH				     ;;AN000;;	   Have we filled with enoug
				h pad chars?
 087D  75 EC                 C1		      JNZ $MDO301
 087F                        C1	$MIF300:
 087F                        C1	$MIF299:
 087F  F6 44 07 0F           C1		  TEST	  BYTE PTR $M_SL.$M_S_FLAG,NOT Char_Type AND $M_TYPE_MASK ;;AN000;;
 0883  75 08                 C1		  JNZ $MIF307
 0885  F6 44 07 10           C1		  TEST	  $M_SL.$M_S_FLAG,Char_field_ASCIIZ AND $M_SIZE_MASK ;;AN000;;	Is this replace a AS
				CIIZ string?
 0889  74 02                 C1		  JZ $MIF307
 088B  EB 0C                 C1		  JMP SHORT $MEN307
 088D                        C1	$MIF307:
 088D  0A D2                 C1		    OR	    DL,DL				     ;;AN000;;
 088F  74 08                 C1		    JE $MIF309
 0891                        C1	$MDO310:
 0891  8F 06 003E R          C1			POP	[$M_RT.$M_RETURN_ADDR]		     ;;AN000;;	 Clean Up stack using spare 
				variable
 0895  FE CA                 C1			DEC	DL				     ;;AN000;;	 Are we done?
 0897  75 F8                 C1		      JNZ $MDO310
 0899                        C1	$MIF309:
 0899                        C1	$MEN307:
 0899  E8 089E R             C1		  CALL	  $M_FLUSH_BUF				     ;;AN000;;	     Flush the buffer for th
				e final time
 089C  55                    C1		  PUSH	  BP					     ;;AN000;; Restore the return address
 089D  C3                    C1		  RET						     ;;AN000;;
 089E                        C1	$M_DISPLAY_REPLACE ENDP 				     ;;AN000;;
 089E                        C1	$M_FLUSH_BUF PROC NEAR					     ;;AN000;;
 089E  51                    C1		  PUSH	  CX					     ;;AN000;; Save changed regs
 089F  06                    C1		  PUSH	  ES					     ;;AN000;;
 08A0  57                    C1		  PUSH	  DI					     ;;AN000;;
 08A1  1E                    C1		  PUSH	  DS					     ;;AN000;; Set ES pointing to buffer
 08A2  07                    C1		  POP	  ES					     ;;AN000;;
 08A3  8B CB                 C1		  MOV	  CX,BX 				     ;;AN000;; Set number of bytes to displa
				y
 08A5  33 DB                 C1		  XOR	  BX,BX 				     ;;AN000;; Reset buffer counter
 08A7  8D 3E 0044 R          C1		  LEA	  DI,$M_RT.$M_TEMP_BUF			     ;;AN000;; Reset buffer location pointer
 08AB  E8 044B R             C1		  CALL	  $M_DISPLAY_STRING			     ;;AN000;; Display the buffer
 08AE  72 05                 C1		  JC $MIF314
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-40
DOS - Message Retriever - DISPMSG.ASM Module                

 08B0  5F                    C1		    POP     DI					     ;;AN000;; No, Restore changed regs
 08B1  07                    C1		    POP     ES					     ;;AN000;;
 08B2  59                    C1		    POP     CX					     ;;AN000;;
 08B3  EB 04                 C1		  JMP SHORT $MEN314
 08B5                        C1	$MIF314:
 08B5  83 C4 06              C1		    ADD     SP,6				     ;;AN000;;	Fix stack
 08B8  F9                    C1		    STC 					     ;;AN000;;
 08B9                        C1	$MEN314:
 08B9  C3                    C1		  RET						     ;;AN000;; Return
 08BA                        C1	$M_FLUSH_BUF ENDP					     ;;AN000;;
 08BA                        C1	$M_CHAR_REPLACE PROC NEAR				     ;;AN000;;
 08BA  5D                    C1		    POP     BP					     ;;AN000;; Save return address
 08BB  F6 44 07 30           C1		    TEST    $M_SL.$M_S_FLAG,NOT Char_Field_Char AND $M_SIZE_MASK ;;AN000;; Was Character spe
				cified?
 08BF  75 12                 C1		    JNZ $MIF317
 08C1  26: 8A 05             C1		      MOV     AL,BYTE PTR ES:[DI]		     ;;AN000;;	 Get the character
 08C4  50                    C1		      PUSH    AX				     ;;AN000;;	 Put it on the stack
 08C5  41                    C1		      INC     CX				     ;;AN000;;	 Increase the count
 08C6  E8 0509 R             C1		      CALL    $M_IS_IT_DBCS			     ;;AN000;;	 Is this the first byte of a
				 DB character
 08C9  73 06                 C1		      JNC $MIF318
 08CB  26: 8A 45 01          C1			MOV	AL,BYTE PTR ES:[DI]+1		     ;;AN000;;	   Get the next character
 08CF  50                    C1			PUSH	AX				     ;;AN000;;	   Put it on the stack
 08D0  F8                    C1			CLC					     ;;AN000;;	   Clear the carry
 08D1                        C1	$MIF318:
 08D1  EB 0D                 C1		    JMP SHORT $MEN317
 08D3                        C1	$MIF317:
 08D3                        C1	$MDO321:
 08D3  26: 8A 05             C1			MOV	AL,BYTE PTR ES:[DI]		     ;;AN000;;	 Get the character
 08D6  0A C0                 C1			OR	AL,AL				     ;;AN000;;	 Is it the NULL?
 08D8  74 04                 C1		      JZ $MEN321
 08DA  47                    C1			INC	DI				     ;;AN000;;	   Next character
 08DB  41                    C1			INC	CX				     ;;AN000;;	   Increment the count
 08DC  EB F5                 C1		      JMP SHORT $MDO321
 08DE                        C1	$MEN321:
 08DE  2B F9                 C1		      SUB     DI,CX				     ;;AN000;;	 Set SI at the beginning of 
				the string
 08E0                        C1	$MEN317:
 08E0  55                    C1		    PUSH    BP					     ;;AN000;; Restore return address
 08E1  C3                    C1		    RET 					     ;;AN000;; Return
 08E2                        C1	$M_CHAR_REPLACE ENDP					     ;;AN000;;
 08E2                        C1	$M_BIN2ASC_REPLACE PROC NEAR				     ;;AN000;;
 08E2  5D                    C1		    POP     BP					     ;;AN000;; Save return address
 08E3  33 D2                 C1		    XOR     DX,DX				     ;;AN000;; Prepare for get binary value 
				(HIGH)
 08E5  33 C0                 C1		    XOR     AX,AX				     ;;AN000;; Prepare for get binary value 
				(LOW)
 08E7  C7 06 0042 R 0010     C1		    MOV     $M_RT.$M_DIVISOR,$M_BASE16		     ;;AN000;; Set default divisor
 08ED  33 DB                 C1		    XOR     BX,BX				     ;;AN000;; Use BP as the NEG flag (if ap
				plicable)
 08EF  F6 44 07 20           C1		    TEST    $M_SL.$M_S_FLAG,NOT $M_BYTE AND $M_SIZE_MASK ;;AN000;; Was BYTE specified?
 08F3  75 24                 C1		    JNZ $MIF325
 08F5  26: 8A 05             C1		      MOV     AL, BYTE PTR ES:[DI]		     ;;AN000;; Setup byte in AL
 08F8  F6 44 07 0D           C1		      TEST    $M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed binary 
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-41
DOS - Message Retriever - DISPMSG.ASM Module                

				specified?
 08FC  75 0D                 C1		      JNZ $MIF326
 08FE  A8 80                 C1			TEST	AL,10000000b			     ;;AN000;; Is this number negative?
 0900  74 03                 C1			JZ $MIF327
 0902  43                    C1			  INC	  BX				     ;;AN000;;	   Remember that it was nega
				tive
 0903  24 7F                 C1			  AND	  AL,01111111b			     ;;AN000;;	   Make it positive
 0905                        C1	$MIF327:
 0905  C7 06 0042 R 000A     C1			MOV	$M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
 090B                        C1	$MIF326:
 090B  F6 44 07 0E           C1		      TEST    $M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed binar
				y specified?
 090F  75 06                 C1		      JNZ $MIF330
 0911  C7 06 0042 R 000A     C1			MOV	$M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
 0917                        C1	$MIF330:
 0917  EB 54                 C1		    JMP SHORT $MEN325
 0919                        C1	$MIF325:
 0919  F6 44 07 10           C1		      TEST    $M_SL.$M_S_FLAG,NOT $M_WORD AND $M_SIZE_MASK ;;AN000;; Was WORD specified?
 091D  75 26                 C1		      JNZ $MIF333
 091F  26: 8B 05             C1			MOV	AX, WORD PTR ES:[DI]		     ;;AN000;; Setup byte in AL
 0922  F6 44 07 0D           C1			TEST	$M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;; AN000;; Was Signed bina
				ry specified?
 0926  75 0F                 C1			JNZ $MIF334
 0928  F6 C4 80              C1			  TEST	  AH,10000000b			     ;;AN000;; Is this number negative?
 092B  74 04                 C1			  JZ $MIF335
 092D  43                    C1			    INC     BX				     ;;AN000;;	   Remember that it was nega
				tive
 092E  80 E4 7F              C1			    AND     AH,01111111b		     ;;AN000;;	   Make it positive
 0931                        C1	$MIF335:
 0931  C7 06 0042 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
 0937                        C1	$MIF334:
 0937  F6 44 07 0E           C1			TEST	$M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed bin
				ary specified?
 093B  75 06                 C1			JNZ $MIF338
 093D  C7 06 0042 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
 0943                        C1	$MIF338:
 0943  EB 28                 C1		      JMP SHORT $MEN333
 0945                        C1	$MIF333:
 0945  26: 8B 05             C1			MOV	AX, WORD PTR ES:[DI]		     ;;AN000;; Setup Double word in DX:AX
 0948  26: 8B 55 02          C1			MOV	DX, WORD PTR ES:[DI]+2		     ;;AN000;;
 094C  F6 44 07 0D           C1			TEST	$M_SL.$M_S_FLAG,NOT Sgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed binar
				y specified?
 0950  75 0F                 C1			JNZ $MIF341
 0952  F6 C6 80              C1			  TEST	  DH,10000000b			     ;;AN000;; Is this number negative?
 0955  74 04                 C1			  JZ $MIF342
 0957  43                    C1			    INC     BX				     ;;AN000;;	   Remember that it was nega
				tive
 0958  80 E6 7F              C1			    AND     DH,01111111b		     ;;AN000;;	   Make it positive
 095B                        C1	$MIF342:
 095B  C7 06 0042 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
 0961                        C1	$MIF341:
 0961  F6 44 07 0E           C1			TEST	$M_SL.$M_S_FLAG,NOT Unsgn_Bin_Type AND $M_TYPE_MASK ;;AN000;; Was Signed bin
				ary specified?
 0965  75 06                 C1			JNZ $MIF345
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-42
DOS - Message Retriever - DISPMSG.ASM Module                

 0967  C7 06 0042 R 000A     C1			  MOV	  $M_RT.$M_DIVISOR,$M_BASE10	     ;;AN000;;
 096D                        C1	$MIF345:
 096D                        C1	$MEN333:
 096D                        C1	$MEN325:
 096D  E8 052D R             C1		    CALL    $M_CONVERT2ASC			     ;;AN000;; Convert to ASCII string
 0970  0B DB                 C1		    OR	    BX,BX				     ;;AN000;;
 0972  74 05                 C1		    JZ $MIF349
 0974  33 D2                 C1		      XOR     DX,DX				     ;;AN000;; Yes,
 0976  B2 2D                 C1		      MOV     DL,$M_NEG_SIGN			     ;;AN000;;	 Put "-" on the stack with t
				he number
 0978  52                    C1		      PUSH    DX				     ;;AN000;;
 0979                        C1	$MIF349:
 0979  55                    C1		    PUSH    BP					     ;;AN000;; Restore return address
 097A  C3                    C1		    RET 					     ;;AN000;; Return
 097B                        C1	$M_BIN2ASC_REPLACE ENDP 				     ;;AN000;;
 097B                        C1	$M_WAIT_FOR_INPUT PROC NEAR				     ;;AN000;;
 097B  51                    C1		  PUSH	  CX					     ;;AN000;; Save CX
 097C  52                    C1		  PUSH	  DX					     ;;AN000;; Save DX
 097D  1E                    C1		  PUSH	  DS					     ;;AN000;; Save Data segment
 097E  80 FA C0              C1		  CMP	  DL,DOS_CLR_KEYB_BUF_MASK		     ;;AN001;; Are we to clear the keyboard 
				buffer?
 0981  76 08                 C1		  JNA $MIF388
 0983  8A C2                 C1		    MOV     AL,DL				     ;;AN001;;	 Mov function into AL
 0985  24 0F                 C1		    AND     AL,LOW_NIB_MASK			     ;;AN001;;	 Mask out the C in high nibb
				le
 0987  B4 0C                 C1		    MOV     AH,DOS_CLR_KEYB_BUF 		     ;;AN001;;	 Set input function
 0989  EB 02                 C1		  JMP SHORT $MEN388
 098B                        C1	$MIF388:
 098B  8A E2                 C1		    MOV     AH,DL				     ;;AN000;;	 Put DOS function in AH
 098D                        C1	$MEN388:
 098D  06                    C1		  PUSH	  ES					     ;;AN000;; Get output buffer segment
 098E  1F                    C1		  POP	  DS					     ;;AN000;;
 098F  8B D7                 C1		  MOV	  DX,DI 				     ;;AN000;;	 Get output buffer offset in
				 case needed
 0991  CD 21                 C1		  INT	  21H					     ;;AN000;; Get keyboard input
 0993  1F                    C1		  POP	  DS					     ;;AN000;;
 0994  80 FA 0A              C1		  CMP	  DL,DOS_BUF_KEYB_INP			     ;;AN000;;
 0997  F8                    C1		  CLC						     ;;AN000;;
 0998  74 12                 C1		  JE $MIF391
 099A  E8 0509 R             C1		    CALL    $M_IS_IT_DBCS			     ;;AN000;;	Is this character DBCS?
 099D  73 0B                 C1		    JNC $MIF392
 099F  8A C8                 C1		      MOV     CL,AL				     ;;AN000;; Save first character
 09A1  8A E2                 C1		      MOV     AH,DL				     ;;AN001;; Get back function
 09A3  CD 21                 C1		      INT     21H				     ;;AN000;; Get keyboard input
 09A5  8A E1                 C1		      MOV     AH,CL				     ;;AN000;; Retreive first character  AX 
				= xxxx
 09A7  F8                    C1		      CLC					     ;;AN000;; Clear carry condition
 09A8  EB 02                 C1		    JMP SHORT $MEN392
 09AA                        C1	$MIF392:
 09AA  B4 00                 C1		      MOV     AH,0				     ;;AN000;; AX = 00xx where xx is SBCS
 09AC                        C1	$MEN392:
 09AC                        C1	$MIF391:
 09AC  72 04                 C1		  JC $MIF396
 09AE  5A                    C1		    POP     DX					     ;;AN000;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-43
DOS - Message Retriever - DISPMSG.ASM Module                

 09AF  59                    C1		    POP     CX					     ;;AN000;;
 09B0  EB 04                 C1		  JMP SHORT $MEN396
 09B2                        C1	$MIF396:
 09B2  83 C4 04              C1		    ADD     SP,4				     ;;AN000;;
 09B5  F9                    C1		    STC 					     ;;AN000;; Reset carry flag
 09B6                        C1	$MEN396:
 09B6  C3                    C1		  RET						     ;;AN000;; Return
 09B7                        C1	$M_WAIT_FOR_INPUT ENDP					     ;;AN000;;
 09B7				CSEG	ENDS					  ;AN000;M Access to svcs macro
				
					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
			     C	    IF NOT COMT 			 ; IF Not transient COMMAND.COM
			     C	      IFNDEF  $M_CLS_&innum		 ; IF class is not in this assembly,
			     C		IF	FARmsg			 ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-44
DOS - Message Retriever - DISPMSG.ASM Module                

			     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				       ;
			     C					       ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Page     1-45
DOS - Message Retriever - DISPMSG.ASM Module                

			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	
			     C	
				
					END

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-2


  $M_DBCS_VEC  . . . . . . . . .  	0034
  $M_HANDLE  . . . . . . . . . .  	0038
  $M_SIZE  . . . . . . . . . . .  	003A
  $M_CRLF  . . . . . . . . . . .  	003B
  $M_CLASS . . . . . . . . . . .  	003D
  $M_RETURN_ADDR . . . . . . . .  	003E
  $M_MSG_NUM . . . . . . . . . .  	0040
  $M_DIVISOR . . . . . . . . . .  	0042
  $M_TEMP_BUF  . . . . . . . . .  	0044
  $M_BUF_TERM  . . . . . . . . .  	0084
$M_SUBLIST_STRUC . . . . . . . .  	000B	0008
  $M_S_SIZE  . . . . . . . . . .  	0000
  $M_S_RESV  . . . . . . . . . .  	0001
  $M_S_VALUE . . . . . . . . . .  	0002
  $M_S_ID  . . . . . . . . . . .  	0006
  $M_S_FLAG  . . . . . . . . . .  	0007
  $M_S_MAXW  . . . . . . . . . .  	0008
  $M_S_MINW  . . . . . . . . . .  	0009
  $M_S_PAD . . . . . . . . . . .  	000A

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

CSEG . . . . . . . . . . . . . .  	09B7	PARA	PUBLIC	

Symbols:            

                N a m e         	Type	 Value	 Attr

ACTION_39  . . . . . . . . . . .  	NUMBER	0004	
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_GOOD_DOS . . . . . . . . . .  	L NEAR	03E1	CSEG
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
AMIS_ID  . . . . . . . . . . . .  	L NEAR	02A6	CSEG
AMIS_ID_MSG  . . . . . . . . . .  	L NEAR	02AB	CSEG
AMIS_ID_MSG_END  . . . . . . . .  	L NEAR	02B0	CSEG
amis_sign  . . . . . . . . . . .  	L NEAR	0296	CSEG	Global
AMIS_SIGN_SEGMENT  . . . . . . .  	ALIAS	 CSEG		

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	0385	CSEG
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	03BC	CSEG
CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	038E	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-3


CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	03B7	CSEG
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	03BB	CSEG
CLASS_1_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_2_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_A_MESSAGECOUNT . . . . . .  	NUMBER	000A	
COLON  . . . . . . . . . . . . .  	NUMBER	003A	
COMR . . . . . . . . . . . . . .  	NUMBER	0000	
COMT . . . . . . . . . . . . . .  	NUMBER	0000	
CR . . . . . . . . . . . . . . .  	NUMBER	000D	

DATEMSG  . . . . . . . . . . . .  	NUMBER	0000	
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	0000	
FORMFD . . . . . . . . . . . . .  	NUMBER	000C	

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-4


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

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

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

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

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

NEARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
NEW_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
NEW_MINOR_VERSION  . . . . . . .  	NUMBER	0026	
NOCHECKSTDIN . . . . . . . . . .  	NUMBER	0000	
NOCHECKSTDOUT  . . . . . . . . .  	NUMBER	0000	
NOT_EX_FAIL_EX_OPEN  . . . . . .  	NUMBER	0101	
NOVERCHECKMSG  . . . . . . . . .  	NUMBER	0000	
NO_CRIT_OPEN . . . . . . . . . .  	NUMBER	2000	
NO_HANDLE  . . . . . . . . . . .  	NUMBER	FFFF	
NO_INPUT . . . . . . . . . . . .  	NUMBER	0000	
NO_REPLACE . . . . . . . . . . .  	NUMBER	0000	
NULL . . . . . . . . . . . . . .  	NUMBER	0000	
NUMMSG . . . . . . . . . . . . .  	NUMBER	FFFF	

PARSE_ERR_CLASS  . . . . . . . .  	NUMBER	0002	

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

SETSTDIO . . . . . . . . . . . .  	NUMBER	0000	
SGN_BIN_BYTE . . . . . . . . . .  	NUMBER	0012	
SGN_BIN_DWORD  . . . . . . . . .  	NUMBER	0032	
SGN_BIN_TYPE . . . . . . . . . .  	NUMBER	0002	
SGN_BIN_WORD . . . . . . . . . .  	NUMBER	0022	
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
SUBLIST_LENGTH . . . . . . . . .  	NUMBER	000B	
SYSDISPMSG . . . . . . . . . . .  	N PROC	03FD	CSEG	Global	Length = 004E
SYSLOADMSG . . . . . . . . . . .  	N PROC	02B0	CSEG	Global	Length = 0097
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-5



TAB  . . . . . . . . . . . . . .  	NUMBER	0009	
TIMEMSG  . . . . . . . . . . . .  	NUMBER	0000	
TIME_24_TYPE . . . . . . . . . .  	NUMBER	0006	
TIME_CTY_TYPE  . . . . . . . . .  	NUMBER	0005	
TIME_HHMMSSHH_24 . . . . . . . .  	NUMBER	0026	
TIME_HHMMSSHH_CTY  . . . . . . .  	NUMBER	0025	
TIME_HHMMSS_24 . . . . . . . . .  	NUMBER	0016	
TIME_HHMMSS_CTY  . . . . . . . .  	NUMBER	0015	
TIME_HHMM_24 . . . . . . . . . .  	NUMBER	0006	
TIME_HHMM_CTY  . . . . . . . . .  	NUMBER	0005	
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	

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	04AB	CSEG
$MDO139  . . . . . . . . . . . .  	L NEAR	0513	CSEG
$MDO145  . . . . . . . . . . . .  	L NEAR	0535	CSEG
$MDO165  . . . . . . . . . . . .  	L NEAR	0597	CSEG
$MDO167  . . . . . . . . . . . .  	L NEAR	05A1	CSEG
$MDO175  . . . . . . . . . . . .  	L NEAR	05CD	CSEG
$MDO215  . . . . . . . . . . . .  	L NEAR	0698	CSEG
$MDO219  . . . . . . . . . . . .  	L NEAR	06BD	CSEG
$MDO259  . . . . . . . . . . . .  	L NEAR	07A5	CSEG
$MDO280  . . . . . . . . . . . .  	L NEAR	0812	CSEG
$MDO291  . . . . . . . . . . . .  	L NEAR	083D	CSEG
$MDO301  . . . . . . . . . . . .  	L NEAR	086B	CSEG
$MDO310  . . . . . . . . . . . .  	L NEAR	0891	CSEG
$MDO321  . . . . . . . . . . . .  	L NEAR	08D3	CSEG
$MEN104  . . . . . . . . . . . .  	L NEAR	044A	CSEG
$MEN107  . . . . . . . . . . . .  	L NEAR	045F	CSEG
$MEN110  . . . . . . . . . . . .  	L NEAR	0480	CSEG
$MEN119  . . . . . . . . . . . .  	L NEAR	04B8	CSEG
$MEN123  . . . . . . . . . . . .  	L NEAR	04B8	CSEG
$MEN128  . . . . . . . . . . . .  	L NEAR	04E7	CSEG
$MEN139  . . . . . . . . . . . .  	L NEAR	052A	CSEG
$MEN145  . . . . . . . . . . . .  	L NEAR	058E	CSEG
$MEN146  . . . . . . . . . . . .  	L NEAR	054B	CSEG
$MEN150  . . . . . . . . . . . .  	L NEAR	0589	CSEG
$MEN154  . . . . . . . . . . . .  	L NEAR	0589	CSEG
$MEN165  . . . . . . . . . . . .  	L NEAR	0683	CSEG
$MEN167  . . . . . . . . . . . .  	L NEAR	05BE	CSEG
$MEN175  . . . . . . . . . . . .  	L NEAR	05E6	CSEG
$MEN180  . . . . . . . . . . . .  	L NEAR	05F8	CSEG
$MEN187  . . . . . . . . . . . .  	L NEAR	062B	CSEG
$MEN188  . . . . . . . . . . . .  	L NEAR	0619	CSEG
$MEN192  . . . . . . . . . . . .  	L NEAR	062B	CSEG
$MEN199  . . . . . . . . . . . .  	L NEAR	066A	CSEG
$MEN20 . . . . . . . . . . . . .  	L NEAR	0346	CSEG
$MEN200  . . . . . . . . . . . .  	L NEAR	0662	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-6


$MEN202  . . . . . . . . . . . .  	L NEAR	0662	CSEG
$MEN211  . . . . . . . . . . . .  	L NEAR	0677	CSEG
$MEN219  . . . . . . . . . . . .  	L NEAR	071E	CSEG
$MEN220  . . . . . . . . . . . .  	L NEAR	06EF	CSEG
$MEN222  . . . . . . . . . . . .  	L NEAR	06EF	CSEG
$MEN224  . . . . . . . . . . . .  	L NEAR	06EF	CSEG
$MEN229  . . . . . . . . . . . .  	L NEAR	0716	CSEG
$MEN230  . . . . . . . . . . . .  	L NEAR	0708	CSEG
$MEN240  . . . . . . . . . . . .  	L NEAR	073E	CSEG
$MEN243  . . . . . . . . . . . .  	L NEAR	074B	CSEG
$MEN247  . . . . . . . . . . . .  	L NEAR	07A2	CSEG
$MEN248  . . . . . . . . . . . .  	L NEAR	0786	CSEG
$MEN25 . . . . . . . . . . . . .  	L NEAR	03FC	CSEG
$MEN252  . . . . . . . . . . . .  	L NEAR	079E	CSEG
$MEN259  . . . . . . . . . . . .  	L NEAR	07C2	CSEG
$MEN261  . . . . . . . . . . . .  	L NEAR	07B6	CSEG
$MEN27 . . . . . . . . . . . . .  	L NEAR	03F1	CSEG
$MEN292  . . . . . . . . . . . .  	L NEAR	0850	CSEG
$MEN307  . . . . . . . . . . . .  	L NEAR	0899	CSEG
$MEN314  . . . . . . . . . . . .  	L NEAR	08B9	CSEG
$MEN317  . . . . . . . . . . . .  	L NEAR	08E0	CSEG
$MEN321  . . . . . . . . . . . .  	L NEAR	08DE	CSEG
$MEN325  . . . . . . . . . . . .  	L NEAR	096D	CSEG
$MEN333  . . . . . . . . . . . .  	L NEAR	096D	CSEG
$MEN388  . . . . . . . . . . . .  	L NEAR	098D	CSEG
$MEN392  . . . . . . . . . . . .  	L NEAR	09AC	CSEG
$MEN396  . . . . . . . . . . . .  	L NEAR	09B6	CSEG
$MEN93 . . . . . . . . . . . . .  	L NEAR	043C	CSEG
$MEN94 . . . . . . . . . . . . .  	L NEAR	0421	CSEG
$MEN97 . . . . . . . . . . . . .  	L NEAR	0436	CSEG
$MIF104  . . . . . . . . . . . .  	L NEAR	0446	CSEG
$MIF107  . . . . . . . . . . . .  	L NEAR	045C	CSEG
$MIF110  . . . . . . . . . . . .  	L NEAR	0470	CSEG
$MIF112  . . . . . . . . . . . .  	L NEAR	0480	CSEG
$MIF113  . . . . . . . . . . . .  	L NEAR	0480	CSEG
$MIF117  . . . . . . . . . . . .  	L NEAR	0485	CSEG
$MIF119  . . . . . . . . . . . .  	L NEAR	04A9	CSEG
$MIF120  . . . . . . . . . . . .  	L NEAR	04A7	CSEG
$MIF127  . . . . . . . . . . . .  	L NEAR	04E8	CSEG
$MIF128  . . . . . . . . . . . .  	L NEAR	04E5	CSEG
$MIF129  . . . . . . . . . . . .  	L NEAR	04E3	CSEG
$MIF134  . . . . . . . . . . . .  	L NEAR	0508	CSEG
$MIF135  . . . . . . . . . . . .  	L NEAR	0508	CSEG
$MIF138  . . . . . . . . . . . .  	L NEAR	052A	CSEG
$MIF141  . . . . . . . . . . . .  	L NEAR	0526	CSEG
$MIF146  . . . . . . . . . . . .  	L NEAR	0548	CSEG
$MIF150  . . . . . . . . . . . .  	L NEAR	0567	CSEG
$MIF151  . . . . . . . . . . . .  	L NEAR	0565	CSEG
$MIF154  . . . . . . . . . . . .  	L NEAR	0579	CSEG
$MIF155  . . . . . . . . . . . .  	L NEAR	0577	CSEG
$MIF158  . . . . . . . . . . . .  	L NEAR	0589	CSEG
$MIF159  . . . . . . . . . . . .  	L NEAR	0589	CSEG
$MIF166  . . . . . . . . . . . .  	L NEAR	05BE	CSEG
$MIF169  . . . . . . . . . . . .  	L NEAR	05B9	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-7


$MIF173  . . . . . . . . . . . .  	L NEAR	05F8	CSEG
$MIF174  . . . . . . . . . . . .  	L NEAR	05F8	CSEG
$MIF175  . . . . . . . . . . . .  	L NEAR	05DA	CSEG
$MIF180  . . . . . . . . . . . .  	L NEAR	05F5	CSEG
$MIF187  . . . . . . . . . . . .  	L NEAR	061B	CSEG
$MIF188  . . . . . . . . . . . .  	L NEAR	0618	CSEG
$MIF192  . . . . . . . . . . . .  	L NEAR	0622	CSEG
$MIF194  . . . . . . . . . . . .  	L NEAR	0629	CSEG
$MIF199  . . . . . . . . . . . .  	L NEAR	0667	CSEG
$MIF20 . . . . . . . . . . . . .  	L NEAR	0342	CSEG
$MIF200  . . . . . . . . . . . .  	L NEAR	0648	CSEG
$MIF202  . . . . . . . . . . . .  	L NEAR	0662	CSEG
$MIF211  . . . . . . . . . . . .  	L NEAR	0673	CSEG
$MIF216  . . . . . . . . . . . .  	L NEAR	06A6	CSEG
$MIF220  . . . . . . . . . . . .  	L NEAR	06CA	CSEG
$MIF222  . . . . . . . . . . . .  	L NEAR	06D7	CSEG
$MIF224  . . . . . . . . . . . .  	L NEAR	06E9	CSEG
$MIF229  . . . . . . . . . . . .  	L NEAR	070A	CSEG
$MIF23 . . . . . . . . . . . . .  	L NEAR	035C	CSEG
$MIF230  . . . . . . . . . . . .  	L NEAR	06FC	CSEG
$MIF234  . . . . . . . . . . . .  	L NEAR	0712	CSEG
$MIF239  . . . . . . . . . . . .  	L NEAR	074D	CSEG
$MIF240  . . . . . . . . . . . .  	L NEAR	073D	CSEG
$MIF243  . . . . . . . . . . . .  	L NEAR	0745	CSEG
$MIF247  . . . . . . . . . . . .  	L NEAR	0788	CSEG
$MIF248  . . . . . . . . . . . .  	L NEAR	0782	CSEG
$MIF25 . . . . . . . . . . . . .  	L NEAR	03E4	CSEG
$MIF252  . . . . . . . . . . . .  	L NEAR	0795	CSEG
$MIF254  . . . . . . . . . . . .  	L NEAR	079E	CSEG
$MIF258  . . . . . . . . . . . .  	L NEAR	07D1	CSEG
$MIF259  . . . . . . . . . . . .  	L NEAR	07BA	CSEG
$MIF261  . . . . . . . . . . . .  	L NEAR	07B3	CSEG
$MIF269  . . . . . . . . . . . .  	L NEAR	07D1	CSEG
$MIF27 . . . . . . . . . . . . .  	L NEAR	03EE	CSEG
$MIF270  . . . . . . . . . . . .  	L NEAR	07CD	CSEG
$MIF274  . . . . . . . . . . . .  	L NEAR	07D9	CSEG
$MIF276  . . . . . . . . . . . .  	L NEAR	07F8	CSEG
$MIF278  . . . . . . . . . . . .  	L NEAR	0826	CSEG
$MIF279  . . . . . . . . . . . .  	L NEAR	0826	CSEG
$MIF281  . . . . . . . . . . . .  	L NEAR	0822	CSEG
$MIF286  . . . . . . . . . . . .  	L NEAR	0839	CSEG
$MIF287  . . . . . . . . . . . .  	L NEAR	0839	CSEG
$MIF290  . . . . . . . . . . . .  	L NEAR	0861	CSEG
$MIF292  . . . . . . . . . . . .  	L NEAR	084F	CSEG
$MIF295  . . . . . . . . . . . .  	L NEAR	085D	CSEG
$MIF299  . . . . . . . . . . . .  	L NEAR	087F	CSEG
$MIF300  . . . . . . . . . . . .  	L NEAR	087F	CSEG
$MIF302  . . . . . . . . . . . .  	L NEAR	087B	CSEG
$MIF307  . . . . . . . . . . . .  	L NEAR	088D	CSEG
$MIF309  . . . . . . . . . . . .  	L NEAR	0899	CSEG
$MIF314  . . . . . . . . . . . .  	L NEAR	08B5	CSEG
$MIF317  . . . . . . . . . . . .  	L NEAR	08D3	CSEG
$MIF318  . . . . . . . . . . . .  	L NEAR	08D1	CSEG
$MIF325  . . . . . . . . . . . .  	L NEAR	0919	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-8


$MIF326  . . . . . . . . . . . .  	L NEAR	090B	CSEG
$MIF327  . . . . . . . . . . . .  	L NEAR	0905	CSEG
$MIF330  . . . . . . . . . . . .  	L NEAR	0917	CSEG
$MIF333  . . . . . . . . . . . .  	L NEAR	0945	CSEG
$MIF334  . . . . . . . . . . . .  	L NEAR	0937	CSEG
$MIF335  . . . . . . . . . . . .  	L NEAR	0931	CSEG
$MIF338  . . . . . . . . . . . .  	L NEAR	0943	CSEG
$MIF341  . . . . . . . . . . . .  	L NEAR	0961	CSEG
$MIF342  . . . . . . . . . . . .  	L NEAR	095B	CSEG
$MIF345  . . . . . . . . . . . .  	L NEAR	096D	CSEG
$MIF349  . . . . . . . . . . . .  	L NEAR	0979	CSEG
$MIF388  . . . . . . . . . . . .  	L NEAR	098B	CSEG
$MIF391  . . . . . . . . . . . .  	L NEAR	09AC	CSEG
$MIF392  . . . . . . . . . . . .  	L NEAR	09AA	CSEG
$MIF396  . . . . . . . . . . . .  	L NEAR	09B2	CSEG
$MIF93 . . . . . . . . . . . . .  	L NEAR	0438	CSEG
$MIF94 . . . . . . . . . . . . .  	L NEAR	041E	CSEG
$MIF97 . . . . . . . . . . . . .  	L NEAR	0432	CSEG
$MIF98 . . . . . . . . . . . . .  	L NEAR	0430	CSEG
$MLL149  . . . . . . . . . . . .  	L NEAR	0555	CSEG
$MLL168  . . . . . . . . . . . .  	L NEAR	05B0	CSEG
$MLL178  . . . . . . . . . . . .  	L NEAR	05E2	CSEG
$MLL202  . . . . . . . . . . . .  	L NEAR	065A	CSEG
$MLL214  . . . . . . . . . . . .  	L NEAR	0683	CSEG
$MSR175  . . . . . . . . . . . .  	L NEAR	05F8	CSEG
$MSR259  . . . . . . . . . . . .  	L NEAR	07C3	CSEG
$MXL3  . . . . . . . . . . . . .  	L NEAR	0605	CSEG
$MXL4  . . . . . . . . . . . . .  	L NEAR	0683	CSEG
$MXL5  . . . . . . . . . . . . .  	L NEAR	071E	CSEG
$M_1_FF_END  . . . . . . . . . .  	L BYTE	026B	CSEG
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	0259	CSEG
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	0255	CSEG
$M_2_FF_END  . . . . . . . . . .  	L BYTE	028C	CSEG
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	027D	CSEG
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	0279	CSEG
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
$M_ADD_CRLF  . . . . . . . . . .  	N PROC	04F2	CSEG	Length = 0017
$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	0128	CSEG
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	0110	CSEG
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	00E8	CSEG
$M_A_00002H_END  . . . . . . . .  	L BYTE	0150	CSEG
$M_A_00002H_MSG  . . . . . . . .  	L BYTE	0128	CSEG
$M_A_00002H_STRUC  . . . . . . .  	L BYTE	00EC	CSEG
$M_A_00003H_END  . . . . . . . .  	L BYTE	0175	CSEG
$M_A_00003H_MSG  . . . . . . . .  	L BYTE	0150	CSEG
$M_A_00003H_STRUC  . . . . . . .  	L BYTE	00F0	CSEG
$M_A_00004H_END  . . . . . . . .  	L BYTE	0197	CSEG
$M_A_00004H_MSG  . . . . . . . .  	L BYTE	0175	CSEG
$M_A_00004H_STRUC  . . . . . . .  	L BYTE	00F4	CSEG
$M_A_00005H_END  . . . . . . . .  	L BYTE	01B2	CSEG
$M_A_00005H_MSG  . . . . . . . .  	L BYTE	0197	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-9


$M_A_00005H_STRUC  . . . . . . .  	L BYTE	00F8	CSEG
$M_A_00006H_END  . . . . . . . .  	L BYTE	01E1	CSEG
$M_A_00006H_MSG  . . . . . . . .  	L BYTE	01B2	CSEG
$M_A_00006H_STRUC  . . . . . . .  	L BYTE	00FC	CSEG
$M_A_00007H_END  . . . . . . . .  	L BYTE	0201	CSEG
$M_A_00007H_MSG  . . . . . . . .  	L BYTE	01E1	CSEG
$M_A_00007H_STRUC  . . . . . . .  	L BYTE	0100	CSEG
$M_A_00008H_END  . . . . . . . .  	L BYTE	021D	CSEG
$M_A_00008H_MSG  . . . . . . . .  	L BYTE	0201	CSEG
$M_A_00008H_STRUC  . . . . . . .  	L BYTE	0104	CSEG
$M_A_00009H_END  . . . . . . . .  	L BYTE	0243	CSEG
$M_A_00009H_MSG  . . . . . . . .  	L BYTE	021D	CSEG
$M_A_00009H_STRUC  . . . . . . .  	L BYTE	0108	CSEG
$M_A_0000AH_END  . . . . . . . .  	L BYTE	0246	CSEG
$M_A_0000AH_MSG  . . . . . . . .  	L BYTE	0243	CSEG
$M_A_0000AH_STRUC  . . . . . . .  	L BYTE	010C	CSEG
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BIN2ASC_REPLACE . . . . . . .  	N PROC	08E2	CSEG	Length = 0099
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	0000	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	08BA	CSEG	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	035F	CSEG	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	0372	CSEG	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	0251	CSEG
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	0275	CSEG
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	00E4	CSEG
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
$M_CLS_1 . . . . . . . . . . . .  	N PROC	0246	CSEG	Global	Length = 000B
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	052D	CSEG	Length = 006A
$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_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	0486	CSEG	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	04BB	CSEG	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	0597	CSEG	Length = 00F3
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	07DF	CSEG	Length = 00BF
$M_DISPLAY_STRING  . . . . . . .  	N PROC	044B	CSEG	Length = 003B
$M_DWORD . . . . . . . . . . . .  	NUMBER	0030	
$M_END . . . . . . . . . . . . .  	NUMBER	0000	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-10


$M_EXTPAR_TYPE . . . . . . . . .  	NUMBER	0008	
$M_EXT_CLS . . . . . . . . . . .  	NUMBER	FFFF	
$M_EXT_ERR_FLAG  . . . . . . . .  	NUMBER	FFFF	
$M_EXT_PAR_REPLACE . . . . . . .  	N PROC	068A	CSEG	Length = 002D
$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	0766	CSEG	Length = 0079
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	089E	CSEG	Length = 001C
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	0347	CSEG	Length = 0018
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	04E9	CSEG	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	N PROC	06B7	CSEG	Global	Length = 00A0
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	0000	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0004	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	0509	CSEG	Length = 0024
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	N PROC	026B	CSEG	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	N PROC	028C	CSEG	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	CSEG	Global
$M_SECOND_THOU . . . . . . . . .  	NUMBER	0006	
$M_SERVICE . . . . . . . . . . .  	NUMBER	FFFF	
$M_SET_LEN_IN_CX . . . . . . . .  	N PROC	0757	CSEG	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	03CE	CSEG	Length = 002F
$M_WAIT_FOR_INPUT  . . . . . . .  	N PROC	097B	CSEG	Length = 003C
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:19
LABELM.SAL - MESSAGE HANDLER FOR LABEL UTILITY              Symbols-11


$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
??0000 . . . . . . . . . . . . .  	L NEAR	074F	CSEG
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  labelm		
@VERSION . . . . . . . . . . . .  	TEXT  510		


  10514 Source  Lines
  14857 Total   Lines
    510 Symbols

  44696 + 178516 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
