Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-1


					PAGE	90,132			;AN000;A2
					TITLE	DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES
				;****************** START OF SPECIFICATIONS *****************************
				; MODULE NAME: DCOMPSM.SAL
				
				; DESCRIPTIVE NAME: Include the DOS system MESSAGE HANDLER in the SEGMENT
				;		    configuration expected by the modules of DISKCOMP.
				
				;FUNCTION: The common code of the DOS SYSTEM MESSAGE HANDLER is made a
				;	   part of the DISKCOMP 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
				;	       SYSGETMSG:near
				;	       SYSLOADMSG:near
				
				; INPUT:
				;    AX = MESSAGE NUMBER
				;    BX = HANDLE TO DISPLAY TO (-1 means use DOS functions 1-12)
				;    SI = OFFSET IN ES: OF SUBLIST, OR 0 IF NONE
				;    CX = NUMBER OF %PARMS, 0 IF NONE
				;    DX = CLASS IN HIGH BYTE, INPUT FUNCTION IN LOW
				;   CALL SYSDISPMSG		;DISPLAY THE MESSAGE
				
				;    If carry set, extended error already called:
				;    AX = EXTENDED MESSAGE NUMBER
				;    BH = ERROR CLASS
				;    BL = SUGGESTED ACTION
				;    CH = LOCUS
				; _ _ _ _ _ _ _ _ _ _ _ _
				
				;    AX = MESSAGE NUMBER
				;    DH = MESSAGE CLASS (1=DOS EXTENDED ERROR, 2=PARSE ERROR, -1=UTILITY MSG)
				;   CALL SYSGETMSG		 ;FIND WHERE A MSG IS
				
				;    If carry set, error
				;     CX = 0, MESSAGE NOT FOUND
				;    If carry  NOT set ok, and resulting regs are:
				;     CX = MESSAGE SIZE
				;     DS:SI = MESSAGE TEXT
				; _ _ _ _ _ _ _ _ _ _ _ _
				
				;   CALL SYSLOADMSG		 ;SET ADDRESSABILITY TO MSGS, CHECK DOS VERSION
				;    If carry not set:
				;    CX = SIZE OF MSGS LOADED
				
				;    If carry is set, regs preset up for SYSDISPMSG, as:
				;    AX = ERROR CODE IF CARRY SET
				;	  AX = 1, INCORRECT DOS VERSION
				;	  DH =-1, (Utility msg)
				;	OR,
				;	  AX = 1, Error loading messages
				;	  DH = 0, (Message manager error)
				;    BX = STDERR
				;    CX = NO_REPLACE
				;    DL = NO_INPUT
				
				; EXIT-NORMAL: CARRY is not set
				
				; EXIT-ERROR:  CARRY is set
				;	       Call Get Extended Error for reason code, for SYSDISPMSG and
				;	       SYSGETMSG.
				
				; INTERNAL REFERENCES:
				;    ROUTINES: (Generated by the MSG_SERVICES macro)
				;	SYSLOADMSG
				;	SYSDISPMSG
				;	SYSGETMSG
				
				;    DATA AREAS:
				;	INCLUDED "DCOMPMS.INC" - message defining control blocks
				;	INCLUDE SYSMSG.INC   ;Permit System Message handler definition
				
				; EXTERNAL REFERENCES:
				;    ROUTINES: none
				
				;    DATA AREAS: control blocks pointed to by input registers.
				
				; NOTES:
				;	 This module should be processed with the SALUT preprocessor
				;	 with the re-alignment not requested, as:
				
				;		SALUT DCOMPSM,NUL
				
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-2


				;	 To assemble these modules, the alphabetical or sequential
				;	 ordering of segments may be used.
				
				;	 For LINK instructions, refer to the PROLOG of the main module,
				;	 DISKCOMP.SAL.
				
				; COPYRIGHT: "Version 4.00 (C)Copyright 1988 Microsoft"
				;	     "Licensed Material - Property of Microsoft  "
				;
				;****************** END OF SPECIFICATIONS *****************************
				; =  =	=  =  =  =  =  =  =  =	=  =
					HEADER	<LOCAL MACRO DEFINITIONS> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-3
LOCAL MACRO DEFINITIONS			;AN000;                           

					INCLUDE PATHMAC.INC		;AN013;
			     C	;;***********************************************************************
			     C	;; NAME: pathlabl
			     C	;; DESC: creates a public label at the spot it is placed, using the name
			     C	;;       given.
			     C	;; INPUT: either module name or procedure name
			     C	;; OUTPUT: public label
			     C	;; LOGIC: LBL-parameter-name will have four values -
			     C	;;            - one for each pass (2)
			     C	;;            - one for start and one for stop
			     C	;;        if LBL is not defined, it is first pass, at beginning label
			     C	;;              - set it to 1 and create the start label
			     C	;;        if LBL = 1, it is first pass, at end label
			     C	;;              - set it to 2 and create stop label
			     C	;;        if LBL = 2, it is second pass, at beginning label
			     C	;;              - set it to 3 and create the start label
			     C	;;        if LBL = 3, it is second pass, at end label
			     C	;;              - set it to 4 and create stop label
			     C	;;        if LBL = 4, it is second pass,
			     C	;;              - this macro has been invoked more than twice with same parm
			     C	;;              - issue error message
			     C	;;***********************************************************************
			     C	
			     C	pathlabl MACRO pnam
			     C	IFNDEF LBL_&pnam                        ;;IF THIS IS THE FIRST TIME,
			     C	    LBL_&pnam = 0                       ;;DEFINE IT, INITIALLY ZERO
			     C	ELSE                                    ;;SINCE IT IS DEFINED
			     C	    IF (LBL_&pnam GT 3)                 ;;IF USED TOO MANY TIMES,
			     C	        .ERR NON-UNIQUE OPERAND ON PATHLABL
			     C	        EXITM                           ;;ABORT THIS GENERATION
			     C	    ENDIF
			     C	ENDIF
			     C	
			     C	IF (LBL_&pnam EQ 0) OR (LBL_&pnam EQ 2) ;;ready for START?
			     C	    $$A_START_&pnam:                    ;;create START label
			     C	    PUBLIC $$A_START_&pnam              ;;make it public
			     C	ELSE                                    ;;SINCE SWITCH MAY BE 1 OR 3,
			     C	    $$A_STOP_&pnam:                     ;;create STOP label
			     C	    PUBLIC $$A_STOP_&pnam               ;;make it public
			     C	ENDIF
			     C	LBL_&pnam = LBL_&pnam + 1               ;;INCREMENT SWITCH
			     C	ENDM
				; =  =	=  =  =  =  =  =  =  =	=  =
				HEADER	MACRO	TEXT			;;AN000;
				.XLIST					;;AN000;
					SUBTTL	TEXT			;AN000;
				.LIST					;;AN000;
					PAGE				;;AN000;
					ENDM				;;AN000;
				; =  =	=  =  =  =  =  =  =  =	=  =
					INCLUDE SYSMSG.INC		;AN000;PERMIT SYSTEM MESSAGE HANDLER DEFINITION
			     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	;;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-4
DOS - Message Retriever - SYSTEM CONTROL file               

			     C	;; Linkage Instructions:
			     C	;; --------------------
			     C	;;		None
			     C	;;
			     C	;; Change History:
			     C	;; ---------------
			     C	;;		CREATED 	March, 1987	RPS
			     C	;;
			     C	;; Psuedocode:
			     C	;; -----------
			     C	;;		None
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;;
			     C	INCLUDE        VERSIONA.INC	       ;;AN003;;
			     C	
 = 0004                      C	major_version	    equ     4	    ;Major DOS version
 = 0000                      C	minor_version	    equ     00	    ;Minor DOS Version
			     C	
 = 0004                      C	expected_version    equ     (MINOR_VERSION SHL 8)+MAJOR_VERSION
			     C	
 = 0005                      C	alt_major_version    equ     5	    ;Major DOS version
 = 001A                      C	alt_minor_version    equ     26	    ;Minor DOS Version
			     C	
 = 1A05                      C	alt_expected_version    equ     (alt_minor_version SHL 8) + alt_major_version
			     C	
 = 0005                      C	new_major_version    equ     5	    ;Major DOS version
 = 0026                      C	new_minor_version    equ     38	    ;Minor DOS Version
 = 2605                      C	new_expected_version    equ     (new_minor_version SHL 8) + new_major_version
			     C	
			     C	
			     C	       ;******************************
			     C	       ;Each assembler program should:
			     C	       ;  mov ah,030h			;DOS Get Version function
			     C	       ;  int 021h			;Version ret. in AX,minor version first
			     C	       ;  cmp ax,expected_version	;ALL utilities should check for an
			     C	       ;  jne error_handler		; EXACT version match.
			     C	       ;******************************
			     C	
			     C	
 = 0000                      C	FALSE	       = 0		       ;;
 = FFFF                      C	TRUE	       = NOT FALSE	       ;;    List message services and flags
			     C					       ;;
			     C	
			     C	; Control Characters For Message Skeleton file
			     C	
 = 0000                      C	NULL			EQU	00H    ;; Null
 = 0007                      C	BELL			EQU	07H    ;; Bell
 = 0009                      C	TAB			EQU	09H    ;; Tab
 = 000A                      C	LF			EQU	0AH    ;; Line Feed
 = 000B                      C	HOME			EQU	0BH    ;; Home
 = 000C                      C	FORMFD			EQU	0CH    ;; Form Feed
 = 000D                      C	CR			EQU	0DH    ;; Carriage Return
 = 003A                      C	COLON			EQU	3AH    ;; Colon
			     C	
			     C	; SYSDISPMSG and SYSGETMSG Equates
			     C	
 = 0000                      C	MSG_SER_CLASS		EQU	00H    ;; Message Service Class (reserved)
 = 0001                      C	EXT_ERR_CLASS		EQU	01H    ;; DOS Extended error class
 = 0002                      C	PARSE_ERR_CLASS 	EQU	02H    ;; Parse error class
 = 00FF                      C	UTILITY_MSG_CLASS	EQU	0FFH   ;; Utility message class
			     C	
 = FFFF                      C	NO_HANDLE		EQU	0FFFFH ;; No handle specified (Use DOS functions 01H-09H only)
			     C	
 = 0000                      C	NO_REPLACE		EQU	0000H  ;; No replacable parameters
			     C	
			     C	; SUBLIST Equates
			     C	
 = 000B                      C	  Sublist_Length	EQU	11     ;; Length of sublist structure
 = 0000                      C	  Reserved		EQU	0      ;; Reserved byte field
			     C	
 = 0000                      C	  Left_Align		EQU	0      ;;00xxxxxx
 = 0080                      C	  Right_Align		EQU	80h    ;;10xxxxxx
			     C	
 = 0000                      C	  Char_type		EQU	0      ;;axxx0000 - Character type
 = 0000                      C	  Char_Field_Char	EQU	0      ;;a0000000
 = 0010                      C	  Char_Field_ASCIIZ	EQU	10h    ;;a0010000
			     C	
 = 0001                      C	  Unsgn_Bin_Type	EQU	01h    ;;axxx0001 - Unsigned Binary to Decimal character
 = 0011                      C	  Unsgn_Bin_Byte	EQU	11h    ;;a0010001
 = 0021                      C	  Unsgn_Bin_Word	EQU	21h    ;;a0100001
 = 0031                      C	  Unsgn_Bin_DWord	EQU	31h    ;;a0110001
			     C	
 = 0002                      C	  Sgn_Bin_Type		EQU	02h    ;;axxx0010 - Signed Binary to Decimal character
 = 0012                      C	  Sgn_Bin_Byte		EQU	12h    ;;a0010010
 = 0022                      C	  Sgn_Bin_Word		EQU	22h    ;;a0100010
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-5
DOS - Message Retriever - SYSTEM CONTROL file               

 = 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
 = 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 - "."
 = 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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-6
DOS - Message Retriever - SYSTEM CONTROL file               

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

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

			     C	ENDM					  ;
			     C						  ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_INC		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_INC	Macro	ext				 ;
			     C							 ;
			     C	INCLUDE &ext					 ;
			     C							 ;
			     C	ENDM						 ;
			     C							 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_BUILD_PTRS	Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_BUILD_PTRS Macro nummsg			 ;
			     C							 ;
			     C	    $M_INDEX =	    0				 ;
			     C	IF COMR 				     ; IF this is resident COMMAND.COM
			     C	    $M_MAKE_COMR			     ;
			     C	ELSE						 ; ELSE
			     C	  IF COMT				     ;	 IF this is transient COMMAND.COM
			     C	    $M_MAKE_COMT			     ;
			     C	  ELSE						 ;   ELSE
			     C							 ;
			     C	    $M_INDEX =	    0				 ;
			     C	    $M_COUNT =	    0				 ;     Build normal utilities
			     C							 ;
			     C	    REPT    nummsg				 ;
			     C	    $M_COUNT =	    $M_COUNT + 1		 ;
			     C	    $M_MAKE %$M_COUNT				 ;
			     C	    ENDM					 ;
			     C	  ENDIF 					 ;
			     C	ENDIF						 ;
			     C	ENDM						 ;
			     C							 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_MAKE		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_MAKE Macro $m_append 			 ;
			     C	IF  FARmsg					 ;
			     C	    CALL    FAR PTR $M_CLS_&$m_append		 ;  Get addressibilty to class &$M_APPEND (ES:DI)
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX+2,ES ;  Move into first avaliable table location
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	ELSE						 ;
			     C	    CALL    $M_CLS_&$m_append			 ;  Get addressibilty to class &$M_APPEND (ES:DI)
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	ENDIF						 ;
			     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							 ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-9
DOS - Message Retriever - SYSTEM CONTROL file               

			     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 <DISKCOMP> 	;AN000;IDENTIFY THE COMPONENT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-10
DOS - Message Retriever - MSGSTR.INC Module                 

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

 0056                        C1	$M_COUNTRY_INFO ENDS					     ;;AN000;;
				; =  =	=  =  =  =  =  =  =  =	=  =
					HEADER	<DEFINITION OF MESSAGES> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-12
DEFINITION OF MESSAGES			;AN000;                            

				;	   $SALUT (4,12,18,36)	   ;AN000;
 0000				CSEG	   SEGMENT PARA PUBLIC 'CODE' ;AN000;
					   ASSUME CS:CSEG	   ;AN000;ESTABLISHED BY CALLER
					   ASSUME SS:CSEG	   ;AN000;ESTABLISHED BY CALLER
					   ASSUME DS:CSEG	   ;AN000;ESTABLISHED BY CALLER
					   ASSUME ES:CSEG	   ;AN000;ESTABLISHED BY CALLER
				
				;(deleted ;AN010;) PUBLIC COPYRIGHT ;
				;(deleted ;AN010;) COPYRIGHT DB "MS DOS DISKCOMP Utility                   "
				;(deleted ;AN010;) INCLUDE COPYRIGH.INC ;(moved to MSG_SERVICES)
					   HEADER <MESSAGE HANDLER CONTROL BLOCKS> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-13
MESSAGE HANDLER CONTROL BLOCKS			;AN000;                    

					   INCLUDE MSGHAN.INC	   ;AN000;DEFINE THE MESSAGE HANDLER CONTROL BLOCKS
			     C	;THIS IS A COMMONLY INCLUDED FILE, USED BY (AT LEAST) THE FOLLOWING COMPONENTS:
			     C	;TREE, GRAFTABL, DISKCOMP, DISKCOPY, COMP - WRITTEN OR Revised BY E.K.
			     C	
			     C	;		VALUES FOR THE MSG_DESC CONTROL BLOCK
 = 0001                      C	ONE_SUBS       EQU   1		   ;AN000;ONE VARIABLE FIELD IN MESSAGE
 = 0002                      C	TWO_SUBS       EQU   2		   ;AN000;TWO VARIABLE FIELDS IN MESSAGE
 = 0003                      C	THREE_SUBS     EQU   3		   ;AN000;THREE VARIABLE FIELDS IN MESSAGE
 =                           C	CLASS_1        EQU   EXT_ERR_CLASS ;AN000;CLASS 1 (DOS EXTENDED ERRORS)
 =                           C	CLASS_2        EQU   PARSE_ERR_CLASS ;AN000;CLASS 2 (PARSE ERRORS)
 =                           C	CLASS_A        EQU   UTILITY_MSG_CLASS ;AN000;CLASS A TYPE MESSAGE
			     C	
			     C	;THIS MESSAGE DESCRIPTOR CONTROL BLOCK IS GENERATED, ONE PER MESSAGE,
			     C	;TO DEFINE THE SEVERAL PARAMETERS THAT ARE EXPECTED TO BE PASSED IN
			     C	;CERTAIN REGISTERS WHEN THE SYSDISPMSG FUNCTION IS TO BE INVOKED.
			     C	
			     C	MSG_DESC	  STRUC 	   ;AN000;
 0000  0000                  C	MSG_NUM 	  DW	0	   ;AN000;MESSAGE NUMBER (TO AX)
 0002  0001                  C	MSG_HANDLE	  DW	STDOUT	   ;AN000;HANDLE OF OUTPUT DEVICE (TO BX)
 0004  0000                  C	MSG_SUBLIST	  DW	0	   ;AN000;POINTER TO SUBLIST (TO SI)
 0006  0000                  C	MSG_COUNT	  DW	0	   ;AN000;SUBSTITUTION COUNT (TO CX)
 0008  FF00                  C	MSG_CLASS	  DW	CLASS_A SHL 8 ;AN000;MESSAGE CLASS (IN HIGH BYTE, TO DH)
			     C					   ; LOW BYTE HAS 0 (FUNCTION "NO INPUT", TO DL)
 000A                        C	MSG_DESC	  ENDS		   ;AN000;
			     C	
			     C	;		VALUES FOR THE SUBLIST CONTROL BLOCK
 = 0000                      C	PC_ID_0        EQU   0		   ;AN000;ID OF " - " TRAILER TO MESSAGE
 = 0001                      C	PC_ID_1        EQU   1		   ;AN000;ID OF PERCENT VARIABLE FIELD
 = 0002                      C	PC_ID_2        EQU   2		   ;AN000;ID OF PERCENT VARIABLE FIELD
 = 0003                      C	PC_ID_3        EQU   3		   ;AN000;ID OF PERCENT VARIABLE FIELD
 = 0000                      C	MAX_0	       EQU   0		   ;AN000;MAXIMUM WIDTH OF STRING FIELD (0=NO LIMIT)
 = 0001                      C	MIN_1	       EQU   1		   ;AN000;MINIMUM WIDTH OF STRING FIELD
 = 0020                      C	PAD_BLK        EQU   " "           ;AN000;CHAR FOR PAD FIELD
 = 0000                      C	FILL_OFF       EQU   0		   ;AN000;TO BE REPLACED WITH ACTUAL OFFSET
 = 0000                      C	FILL_SEG       EQU   0		   ;AN000;TO BE REPLACED WITH ACTUAL SEG ID
			     C	
			     C	;THIS SUBLIST CONTROL BLOCK, POINTED TO BY SI WHEN SYSDISPMSG IS CALLED
			     C	;FURTHER DESCRIBES THE MESSAGE AND THE VARIABLE FIELDS THE MSG MAY CONTAIN.
			     C	;THERE IS ONE OF THESE CONTROL BLOCKS PER VARIABLE FIELD.  ADDITIONAL
			     C	;VARIABLE FIELDS ARE DEFINED IN ADDITIONAL "SUBLIST" CONTROL BLOCKS,
			     C	;CONSECUTIVE AND CONTIGUOUS WITH THIS ONE.  THE NUMBER OF THESE CONTROL
			     C	;BLOCKS IS THE SUBSTITUTION COUNT, PASSED IN CS TO SYSDISPMSG, AS DEFINED
			     C	;IN THE ABOVE "MSC_DESC" CONTROL BLOCK.
			     C	
			     C	SUBLIST 	  STRUC 	;AN000;
 0000  0B                    C	SUB_SIZE	  DB	11	;AN000;SUBLIST SIZE (POINTER TO NEXT SUBLIST)
 0001  00                    C	SUB_RES 	  DB	0	;AN000;RESERVED
			     C					;NEXT FIELD IS TO BE USED AS A DOUBLE WORD
 0002  0000                  C	SUB_VALUE	  DW	0	;AN000;TIME, DATE, OR PTR TO DATA ITEM
 0004  0000                  C	SUB_VALUE_SEG	  DW	0	;AN000;SEG ID OF PTR
			     C					;(ABOVE FIELD MUST BE FILLED AT EXECUTION TIME
			     C					; IF THIS IS A .COM FILE)
 0006  00                    C	SUB_ID		  DB	0	;AN000;N OF %N
 0007  00                    C	SUB_FLAGS	  DB	0	;AN000;DATA TYPE FLAGS
 0008  00                    C	SUB_MAX_WIDTH	  DB	MAX_0	;AN000;MAXIMUM FIELD WIDTH (0=UNLIMITED)
 0009  00                    C	SUB_MIN_WIDTH	  DB	0	;AN000;MINIMUM FIELD WIDTH
 000A  20                    C	SUB_PAD_CHAR	  DB	PAD_BLK ;AN000;CHARACTER FOR PAD FIELD
			     C					; CAN BE " ", "0" OR ",".
			     C					; "," CAUSES INSERTION OF THE ACTIVE
			     C					; THOUSANDS SEPARATOR BETWEEN EVERY 3 DIGITS.
 000B                        C	SUBLIST 	  ENDS		;AN000;
			     C	
			     C	;		  BITS DEFINED FOR SUB_FLAGS ABOVE
			     C	;			FORMAT = A0SSTTTT
			     C	;				 ³³ ³ ÀÄÄÄ FIELD TYPE
			     C	;				 ³³ ÀÄÄÄ DATA VARIABLE SIZE
			     C	;				 ³ÀÄÄÄ RESERVED, MUST BE ZERO
			     C	;				 ÀÄÄÄ ALIGNMENT INDICATOR
			     C	SF_BITS     RECORD F_ALIGN:1,F_RES:1=0,F_SIZE:2,F_TYPE:4;AN000;
			     C	
			     C	;		F_ALIGN FIELD, ALIGNMENT INDICATOR
 = 0000                      C	SF_LEFT 	  EQU	0	   ;AN000;LEFT ALIGN
 = 0001                      C	SF_RIGHT	  EQU	1	   ;AN000;RIGHT ALIGN
			     C	
			     C	;		F_RES FIELD, RESERVED, SHOULD BE ZERO
			     C	
			     C	;		F_TYPE FIELD, FIELD TYPE
 = 0000                      C	SF_CHAR 	  EQU	0000B	   ;AN000;TYPE IS CHARACTER
			     C	;		F_SIZE FIELD,
 = 0000                      C	SF_CH		  EQU	00B	   ;AN000;SINGLE CHARACTER
 = 0001                      C	SF_ASCIIZ	  EQU	01B	   ;AN000;ASCIIZ STRING
			     C	
			     C	;		F_TYPE FIELD, FIELD TYPE
 = 0001                      C	SF_UN_BD	  EQU	0001B	   ;AN000;UNSIGNED BINARY TO DECIMAL CHARACTER
			     C	;		F_SIZE FIELD,
 = 0001                      C	SF_BYTE 	  EQU	01B	   ;AN000;DATA IS BYTE SIZED
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-14
MESSAGE HANDLER CONTROL BLOCKS			;AN000;                    

 = 0002                      C	SF_WORD 	  EQU	10B	   ;AN000;DATA IS WORD SIZED
 = 0003                      C	SF_DWORD	  EQU	11B	   ;AN000;DATA IS DOUBLE WORD SIZED
			     C	
			     C	;		F_TYPE FIELD, FIELD TYPE
 = 0002                      C	SF_SIN_BD	  EQU	0010B	   ;AN000;SIGNED BINARY TO DECIMAL CHARACTER
			     C	;		F_SIZE FIELD,
			     C	;SF_BYTE	  EQU	01B	   ;DATA IS BYTE SIZED
			     C	;SF_WORD	  EQU	10B	   ;DATA IS WORD SIZED
			     C	;SF_DWORD	  EQU	11B	   ;DATA IS DOUBLE WORD SIZED
			     C	
			     C	;		F_TYPE FIELD, FIELD TYPE
 = 0003                      C	SF_UN_BH	  EQU	0011B	   ;AN000;UNSIGNED BINARY TO HEXADECIMAL CHARACTER
			     C	;		F_SIZE FIELD,
			     C	;SF_BYTE	  EQU	01B	   ;DATA IS BYTE SIZED
			     C	;SF_WORD	  EQU	10B	   ;DATA IS WORD SIZED
			     C	;SF_DWORD	  EQU	11B	   ;DATA IS DOUBLE WORD SIZED
			     C	
			     C	;		F_TYPE FIELD, FIELD TYPE
 = 0004                      C	SF_DATE 	  EQU	0100B	   ;AN000;DATE TO CHARACTER,
			     C					   ; USING CURRENT COUNTRY FORMAT
			     C					   ;SUB_VALUE HIGH=YEAR
			     C					   ;SUB_VALUE LOW=MMDD
			     C	;		F_SIZE FIELD,
 = 0001                      C	SF_MD		  EQU	01B	   ;AN000;MONTH AND DAY ONLY
 = 0002                      C	SF_MDY2 	  EQU	10B	   ;AN000;MONTH,DAY AND YEAR (2 DIGITS)
 = 0003                      C	SF_MDY4 	  EQU	11B	   ;AN000;MONTH,DAY AND YEAR (4 DIGITS)
			     C	
			     C	;		F_TYPE FIELD, FIELD TYPE
 = 0005                      C	SF_TIME_12	  EQU	0101B	   ;AN000;TIME TO CHARACTER, 12 HOUR FORMAT
			     C					   ; USING CURRENT COUNTRY FORMAT
			     C					   ;SUB_VALUE HIGH=HHMM
			     C					   ;SUB_VALUE LOW=SSHH
			     C	;		F_SIZE FIELD,
 = 0000                      C	SF_HHMM 	  EQU	00B	   ;AN000;HH:MM (ACTIVE TIME FORMAT)
 = 0001                      C	SF_HHMMSS	  EQU	01B	   ;AN000;HH:MM:SS (ACTIVE TIME FORMAT)
 = 0002                      C	SF_HHMMSSHH	  EQU	10B	   ;AN000;HH:MM:SS:HH
			     C	
			     C	;		F_TYPE FIELD, FIELD TYPE
 = 0006                      C	SF_TIME_24	  EQU	0110B	   ;AN000;TIME TO CHARACTER, 24 HOUR FORMAT
			     C					   ; USING CURRENT COUNTRY FORMAT
			     C					   ;SUB_VALUE HIGH=HHMM
			     C					   ;SUB_VALUE LOW=SSHH
			     C	;		F_SIZE FIELD,
			     C	;SF_HHMM	  EQU	00B	   ;HH:MM (ACTIVE TIME FORMAT)
			     C	;SF_HHMMSS	  EQU	01B	   ;HH:MM:SS (ACTIVE TIME FORMAT)
			     C	;SF_HHMMSSHH	  EQU	10B	   ;HH:MM:SS:HH
			     C	
			     C	;		THE NEXT GROUP ARE ALL CLASS "1" MESSAGES
			     C	
			     C		       PUBLIC MSGNUM_EXTERR;AN000;
 0000  0000                  C	MSGNUM_EXTERR  MSG_DESC <,STDERR,,,CLASS_1 SHL 8> ;AN000;ALL EXTENDED DOS ERRORS
 0002  0200                  C	
 0004  0000                  C	
 0006  0000                  C	
 0008  0001                  C	
			     C	
			     C					   ;ERROR NUMBER WILL NEED TO BE FILLED IN
			     C	
			     C	;		THE NEXT GROUP ARE ALL CLASS "2" MESSAGES
			     C	
			     C		       PUBLIC MSGNUM_PARSE ;AN000;SO PARSE DRIVER CAN FIND IT
 000A  0000                  C	MSGNUM_PARSE   MSG_DESC <,STDERR,,,CLASS_2 SHL 8> ;AN000;ALL PARSING ERRORS
 000C  0200                  C	
 000E  0000                  C	
 0010  0000                  C	
 0012  0002                  C	
			     C	
			     C					   ;ERROR NUMBER WILL NEED TO BE FILLED IN
			     C	
			     C	;		THE NEXT GROUP ARE ALL CLASS "A" MESSAGES
			     C	;		THESE ARE THE "CANNED" MESSAGES ALWAYS PRESENT
			     C	
			     C		       PUBLIC MSGNUM_VER   ;AN000;
 0014  0100                  C	MSGNUM_VER     MSG_DESC <1,STDERR> ;AN000;"Incorrect DOS Version"
 0016  0200                  C	
 0018  0000                  C	
 001A  0000                  C	
 001C  00FF                  C	
			     C	
			     C	;end of MSGHAN.INC
					   INCLUDE DCOMPMS.INC	   ;AN000;DEFINE THE MESSAGES, AND CONTROL BLOCKS
			     C	;:util DISKCOMP 	    ;utility name
			     C	;:class 1		    ;DOS extended errors:
			     C	;:class 2		    ;parse errors:
			     C	;1  Too many parameters
			     C	;2  Required parameter missing
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-15
MESSAGE HANDLER CONTROL BLOCKS			;AN000;                    

			     C	;3  Invalid switch
			     C	;4  Invalid keyword
			     C	;5  Parameter value not in allowed range
			     C	;6  Parameter value not allowed    [parse ret codes 6 and 7]
			     C	;7   (undefined)
			     C	;8  Parameter format not correct
			     C	;9   (undefined)
			     C	;10 Invalid parameter		   [no corresponding parse ret code]
			     C	;11 Invalid parameter combination  [no corresponding parse ret code]
			     C	;;
			     C	;:class A		    ;system messages
			     C	;
			     C	;:use 1 COMMON1 	    ;"Incorrect DOS version"
			     C	;
			     C	;:use 2 EXTEND8 	    ;"Insufficient memory"
			     C	;
			     C	;:use 3 PARSE10 	    ;"Invalid parameter"
			     C	;;
			     C	;:def 4 "Do not specify filename(s)",CR,LF
			     C	;"Command format: DISKCOMP d: d: [/1][/8]",LF,CR
			     C	;
			     C	;:def 5 CR,LF,"Invalid drive specification",CR,LF
			     C	;"Specified drive does not exist",CR,LF
			     C	;"or is non-removable",CR,LF
			     C	;
			     C	;:def 6 CR,LF,"Cannot DISKCOMP to or from",CR,LF
			     C	;"a network drive",CR,LF
			     C	;
			     C	;:def 7 CR,LF,"Insert FIRST diskette in drive %1:",CR,LF
			     C	;
			     C	;:def 8 CR,LF,"Insert SECOND diskette in drive %1:",CR,LF
			     C	;
			     C	;:def 9 CR,LF,"FIRST diskette bad or incompatible",CR,LF
			     C	;
			     C	;:def 10 CR,LF,"SECOND diskette bad or incompatible",CR,LF
			     C	;
			     C	;:use 11 EXTEND21	      ;"Drive not ready"            NOTE CHANGE %1 TO %0
			     C	;
			     C	;:use 12 COMMON28	      ;"Press any key to continue . . ."
			     C	;
			     C	;:use 13 EXTEND19  ;CR,LF,"Attempt to write to write-protected diskette",CR,LF
			     C	;
			     C	;:def 14 CR,LF,"Compare another diskette (Y/N) ?"
			     C	;
			     C	;:def 15 CR,LF,"Comparing %1 tracks",CR,LF
			     C	;"%2 sectors per track, %3 side(s)",CR,LF
			     C	;
			     C	;:def 16 CR,LF,"Drive types or diskette types",CR,LF
			     C	;"not compatible",CR,LF
			     C	;
			     C	;:def 17 CR,LF,"Unrecoverable read error on drive %2",CR,LF
			     C	;"side %3, track %4",CR,LF
			     C	;
			     C	;:def 18 CR,LF,"Compare error on",CR,LF,"side %3, track %4",CR,LF
			     C	;
			     C	;:def 19 "Make sure a diskette is inserted into",CR,LF
			     C	;"the drive and the door is closed",CR,LF
			     C	;
			     C	;:def 20 CR,LF,"Compare process ended",CR,LF
			     C	;
			     C	;:def 21 CR,LF,"Compare OK",CR,LF
			     C	;
			     C	;:def 22 CR,LF
			     C	;:end
			     C	; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
			     C	;	    $SALUT (0,13,18,22) ;						;AN000;
			     C	;THIS MODULE IS INCLUDED IN DCOMPSM.SAL.
			     C	; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
			     C	
 = 0004                      C	FOUR_SUBS   EQU  4   ;AN000;FOUR VARIABLES IN ONE MSG
 = 0004                      C	PC_ID_4     EQU  4   ;AN000;IDENTIFIES FOURTH REPLACEMENT PARM
 = 0005                      C	PC_ID_5     EQU  5   ;AN000;IDENTIFIES FIFTH REPLACEMENT PARM
 = 0041                      C	LETTER_A    EQU  "A" ;AN000;DEFAULT DRIVE ID
 = 00C0                      C	CLEAR_BUF   EQU  0C0H ;AN006;CLEAR KEYBOARD BUFFER BEFORE INPUT
 = 0001                      C	KEY_IN_ECHO EQU  1   ;AN000;REQUEST KEYBOARD INPUT TO AL, ECHO RESPONSE
 = 0008                      C	KEY_IN	    EQU  8   ;AN000;REQUEST KEYBOARD INPUT TO AL, NO ECHO
 = 0000                      C	FILL_OFF    EQU  0   ;AN000;TO BE FILLED IN WITH OFFSET TO DATA
 = 0000                      C	FILL_SEG    EQU  0   ;AN000;TO BE FILLED IN WITH THE COMMON SEG ID
			     C			     ; SINCE A .COM FILE CANNOT HAVE
			     C			     ; SEGMENT FIXUP RECORDS
			     C	
 001E  0B                    C	SUBLIST_PARSE  SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_0,SF_BITS <SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1
				,PAD_BLK> ;AN003;
 001F  00                    C	
 0020  0000                  C	
 0022  0000                  C	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-16
MESSAGE HANDLER CONTROL BLOCKS			;AN000;                    

 0024  00                    C	
 0025  10                    C	
 0026  00                    C	
 0027  01                    C	
 0028  20                    C	
			     C	
			     C		PUBLIC SUBLIST_PARSE	   ;AN003;
			     C	
			     C	;		THE NEXT GROUP ARE ADDITIONAL CLASS "A" MESSAGES
			     C	;		SPECIFICALLY DEFINED FOR THE DISKCOMP UTILITY
			     C	
			     C			     ;"Insufficient memory"
 0029  0200                  C	MSGNUM_UNSUF_MEMORY MSG_DESC <2> ;AN000;
 002B  0100                  C	
 002D  0000                  C	
 002F  0000                  C	
 0031  00FF                  C	
			     C	
			     C		PUBLIC MSGNUM_UNSUF_MEMORY ;AN000;
			     C	
			     C			     ;CR,LF,"Invalid parameter",CR,LF
 0033  0300                  C	MSGNUM_INVALID_PARM MSG_DESC <3> ;AN000;
 0035  0100                  C	
 0037  0000                  C	
 0039  0000                  C	
 003B  00FF                  C	
			     C	
			     C		PUBLIC MSGNUM_INVALID_PARM ;AN000;
			     C	
			     C			     ;"Do not specify filename(s)",CR,LF
			     C			     ;"Command format: DISKCOMP d: d: [/1][/8]",CR,LF
 003D  0400                  C	MSGNUM_INVALID_PARM2 MSG_DESC <4> ;AN000;
 003F  0100                  C	
 0041  0000                  C	
 0043  0000                  C	
 0045  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_INVALID_PARM2 ;AN000;
			     C	
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Invalid drive specification",CR,LF
			     C			     ;"Specified drive does not exist",CR,LF
			     C			     ;"or is non-removable",CR,LF
 0047  0500                  C	MSGNUM_INVALID_DRV MSG_DESC <5> ;AN000;
 0049  0100                  C	
 004B  0000                  C	
 004D  0000                  C	
 004F  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_INVALID_DRV ;AN000;
			     C	
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Cannot DISKCOMP to or from",CR,LF
			     C			     ;"a network drive",CR,LF
 0051  0600                  C	MSGNUM_DRV_REDIRECTED MSG_DESC <6> ;AN000;
 0053  0100                  C	
 0055  0000                  C	
 0057  0000                  C	
 0059  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_DRV_REDIRECTED ;AN000;
			     C	
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Insert FIRST diskette in drive %1:",CR,LF
 005B  0700                  C	MSGNUM_LOAD_FIRST MSG_DESC <7,,SUBLIST_78,ONE_SUBS> ;AN000;
 005D  0100                  C	
 005F  0065 R                C	
 0061  0100                  C	
 0063  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_LOAD_FIRST,SUBLIST_78 ;AN000;
			     C	
 0065  0B                    C	SUBLIST_78  SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_CH,SF_CHAR>,MAX_0,MIN_1>;AN000;
 0066  00                    C	
 0067  0000                  C	
 0069  0000                  C	
 006B  01                    C	
 006C  00                    C	
 006D  00                    C	
 006E  01                    C	
 006F  20                    C	
			     C	
			     C	;THE "FILL" FIELDS NEED TO BE SET TO POINT TO
			     C	;"ASCII_DRV1_ID" OR "ASCII_DRV2_ID"(BELOW).
			     C	
			     C			     ;CR,LF,"Insert SECOND diskette in drive %1:",CR,LF
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-17
MESSAGE HANDLER CONTROL BLOCKS			;AN000;                    

 0070  0800                  C	MSGNUM_LOAD_SECOND MSG_DESC <8,,SUBLIST_78,ONE_SUBS> ;AN000;
 0072  0100                  C	
 0074  0065 R                C	
 0076  0100                  C	
 0078  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_LOAD_SECOND ;AN000;
			     C	
			     C			     ;IF "FIRST" SPECIFIED
 007A  40                    C	ASCII_DRV1_ID DB LETTER_A-BYTE ;AN000;
			     C	
			     C			     ;IF "SECOND" SPECIFIED
 007B  40                    C	ASCII_DRV2_ID DB LETTER_A-BYTE ;AN000;
			     C		    PUBLIC ASCII_DRV1_ID,ASCII_DRV2_ID ;AN000;
			     C	
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"FIRST diskette bad or incompatible",CR,LF
 007C  0900                  C	MSGNUM_BAD_FIRST  MSG_DESC <9> ;AN000;
 007E  0100                  C	
 0080  0000                  C	
 0082  0000                  C	
 0084  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_BAD_FIRST ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"SECOND diskette bad or incompatible",CR,LF
 0086  0A00                  C	MSGNUM_BAD_SECOND  MSG_DESC <10> ;AN000;
 0088  0100                  C	
 008A  0000                  C	
 008C  0000                  C	
 008E  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_BAD_SECOND ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,Drive not ready",CR,LF
 0090  0B00                  C	MSGNUM_GET_READY MSG_DESC <11,,SUBLIST_11,ONE_SUBS> ;AN000;
 0092  0100                  C	
 0094  009A R                C	
 0096  0100                  C	
 0098  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_GET_READY ;AN000;
			     C	
 009A  0B                    C	SUBLIST_11  SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_0,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1
				>;AN000;
 009B  00                    C	
 009C  00A5 R                C	
 009E  0000                  C	
 00A0  00                    C	
 00A1  10                    C	
 00A2  00                    C	
 00A3  01                    C	
 00A4  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_11 ;AN000;
			     C	
 00A5  41 3A 00              C	DRIVE_LETTER DB  LETTER_A,":",NULL ;AN000;
			     C		    PUBLIC DRIVE_LETTER ;AN000;
			     C	
 00A8  00                    C	SKIP_MSG     DB  NULL ;AN000;
			     C		    PUBLIC SKIP_MSG ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Press any key to continue . . .",CR,LF
 00A9  0C00                  C	MSGNUM_STRIKE MSG_DESC <12,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN)> ;AN006;
 00AB  0100                  C	
 00AD  0000                  C	
 00AF  0000                  C	
 00B1  C8FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_STRIKE ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C	;		     ;CR,LF,"Attempt to write to write-protected diskette",CR,LF
 00B3  0D00                  C	MSGNUM_WRITE_PROTECT MSG_DESC <13> ;AN000;
 00B5  0100                  C	
 00B7  0000                  C	
 00B9  0000                  C	
 00BB  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_WRITE_PROTECT ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Compare another diskette (Y/N) ?"
 00BD  0E00                  C	MSGNUM_COMP_ANOTHER MSG_DESC <14,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN_ECHO)> ;AN006;
 00BF  0100                  C	
 00C1  0000                  C	
 00C3  0000                  C	
 00C5  C1FF                  C	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-18
MESSAGE HANDLER CONTROL BLOCKS			;AN000;                    

			     C	
			     C		    PUBLIC MSGNUM_COMP_ANOTHER ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Comparing %1 tracks",CR,LF
			     C			     ;"%2 Sectors/Track, %3 Side(s)",CR,LF
 00C7  0F00                  C	MSGNUM_COMPARING MSG_DESC <15,,SUBLIST_15A,THREE_SUBS> ;AN000;
 00C9  0100                  C	
 00CB  00D1 R                C	
 00CD  0300                  C	
 00CF  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_COMPARING ;AN000;
			     C	
 00D1  0B                    C	SUBLIST_15A SUBLIST <,,MSG_TRACKS,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;A
				N000;
 00D2  00                    C	
 00D3  00F2 R                C	
 00D5  0000                  C	
 00D7  01                    C	
 00D8  21                    C	
 00D9  00                    C	
 00DA  01                    C	
 00DB  20                    C	
			     C	
 00DC  0B                    C	SUBLIST_15B SUBLIST <,,MSG_SECTRK,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;A
				N000;
 00DD  00                    C	
 00DE  00F4 R                C	
 00E0  0000                  C	
 00E2  02                    C	
 00E3  21                    C	
 00E4  00                    C	
 00E5  01                    C	
 00E6  20                    C	
			     C	
 00E7  0B                    C	SUBLIST_15C SUBLIST <,,MSG_SIDES,FILL_SEG,PC_ID_3,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;AN
				000;
 00E8  00                    C	
 00E9  00F6 R                C	
 00EB  0000                  C	
 00ED  03                    C	
 00EE  21                    C	
 00EF  00                    C	
 00F0  01                    C	
 00F1  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_15A,SUBLIST_15B,SUBLIST_15C ;AN000;
			     C	
 00F2  0000                  C	MSG_TRACKS  DW	 0   ;AN000;NUMBER OF TRACKS
 00F4  0000                  C	MSG_SECTRK  DW	 0   ;AN000;NUMBER OF SECTORS PER TRACK
 00F6  0000                  C	MSG_SIDES   DW	 0   ;AN000;NUMBER OF SIDES
			     C		    PUBLIC MSG_TRACKS,MSG_SECTRK,MSG_SIDES ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Drive types or diskette types",CR,LF
			     C			     ;"not compatible",CR,LF
 00F8  1000                  C	MSGNUM_NOT_COMPATIBLE MSG_DESC <16> ;AN000;
 00FA  0100                  C	
 00FC  0000                  C	
 00FE  0000                  C	
 0100  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_NOT_COMPATIBLE ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Unrecoverable read error on drive %2",CR,LF
			     C			     ;"side %3, track %4",CR,LF
			     C			     ;%2 IS "DRIVE_LETTER", AND
			     C			     ;"MSG_SIDES" AND "MSG_TRACKS" ARE %3 AND %4.
 0102  1100                  C	MSGNUM_HARD_ERROR_READ MSG_DESC <17,,SUBLIST_17B,THREE_SUBS> ;AN000;
 0104  0100                  C	
 0106  010C R                C	
 0108  0300                  C	
 010A  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_HARD_ERROR_READ ;AN000;
			     C	
 010C  0B                    C	SUBLIST_17B SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1
				>;AN000;
 010D  00                    C	
 010E  00A5 R                C	
 0110  0000                  C	
 0112  02                    C	
 0113  10                    C	
 0114  00                    C	
 0115  01                    C	
 0116  20                    C	
			     C	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-19
MESSAGE HANDLER CONTROL BLOCKS			;AN000;                    

 0117  0B                    C	SUBLIST_17C SUBLIST <,,MSG_SIDES,FILL_SEG,PC_ID_3,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;A
				N000;
 0118  00                    C	
 0119  00F6 R                C	
 011B  0000                  C	
 011D  03                    C	
 011E  21                    C	
 011F  00                    C	
 0120  01                    C	
 0121  20                    C	
			     C	
 0122  0B                    C	SUBLIST_17D SUBLIST <,,MSG_TRACKS,FILL_SEG,PC_ID_4,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1>;A
				N000;
 0123  00                    C	
 0124  00F2 R                C	
 0126  0000                  C	
 0128  04                    C	
 0129  21                    C	
 012A  00                    C	
 012B  01                    C	
 012C  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_17B,SUBLIST_17C,SUBLIST_17D ;AN000;
			     C	
			     C			     ;CR,LF,"Compare error on",CR,LF
			     C			     ;"side %3, track %4",CR,LF
			     C			     ;"MSG_SIDES" AND "MSG_TRACKS" ARE %3 AND %4.
 012D  1200                  C	MSGNUM_HARD_ERROR_COMP MSG_DESC <18,,SUBLIST_17C,TWO_SUBS> ;AN000;
 012F  0100                  C	
 0131  0117 R                C	
 0133  0200                  C	
 0135  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_HARD_ERROR_COMP ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;:def 19 "Make sure a diskette is inserted into",CR,LF
			     C			     ;"the drive and the door is closed",CR,LF
 0137  1300                  C	MSGNUM_CLOSE_DOOR MSG_DESC <19> ;AN004;
 0139  0100                  C	
 013B  0000                  C	
 013D  0000                  C	
 013F  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_CLOSE_DOOR ;AN004;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Compare process ended",CR,LF
 0141  1400                  C	MSGNUM_FATAL_ERROR MSG_DESC <20> ;AN000;
 0143  0100                  C	
 0145  0000                  C	
 0147  0000                  C	
 0149  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_FATAL_ERROR ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Compare OK",CR,LF
 014B  1500                  C	MSGNUM_COMP_OK MSG_DESC <21> ;AN000;
 014D  0100                  C	
 014F  0000                  C	
 0151  0000                  C	
 0153  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_COMP_OK ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF
 0155  1600                  C	MSGNUM_NEWLINE MSG_DESC <22> ;AC007;
 0157  0100                  C	
 0159  0000                  C	
 015B  0000                  C	
 015D  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_NEWLINE ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C	;end of DCOMPMS.INC
			     C	
					   HEADER <MESSAGE DATA AREAS> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-20
MESSAGE DATA AREAS			;AN000;                                

					   MSG_SERVICES <MSGDATA>  ;AN000;DATA AREA FOR THE MESSAGE HANDLER
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-21
DOS - Message Retriever - MSGRES.TAB Module                 

 015F                        C1	      $M_RT   LABEL   BYTE				     ;;AN000;;
 015F  00000000              C1	      $M_RES_ADDRS <>					     ;;AN000;; Resident addresses
 0163  00000000              C1	
 0167  00000000              C1	
 016B  FFFFFFFF              C1	
 016F  00000000              C1	
 0173  00000000              C1	
 0177  FFFFFFFF              C1	
 017B  00000000              C1	
 017F  00000000              C1	
 0183  FFFFFFFF              C1	
 0187  FFFFFFFF              C1	
 018B  00000000              C1	
 018F  FFFFFFFF              C1	
 0193  00000000              C1	
 0197  0000                  C1	
 0199  00                    C1	
 019A  0001[                 C1	
 019C  00                    C1	
 019D  0000                  C1	
 019F  0000                  C1	
 01A1  0A00                  C1	
 01A3  0040[                 C1	
 01E3  24                    C1	
 01E4  4D 53 20 44 4F 53     C1		DB	"MS DOS Version 4.00 (C)Copyright 1988 Microsoft Corp"
 0218  4C 69 63 65 6E 73     C1		DB	"Licensed Material - Property of Microsoft  "
				; =  =	=  =  =  =  =  =  =  =	=  =
					   HEADER <SYSTEM MESSAGE HANDLER> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-22
SYSTEM MESSAGE HANDLER			;AN000;                            

					   PUBLIC SYSLOADMSG	   ;AN000;
					   PUBLIC SYSDISPMSG	   ;AN000;
				
				 public amis_sign
 0243  90				even
 0244				amis_sign:
 0244  65 63 6D				db "ecm"
 0247  0005[				db 5 dup (' ')
	   20			
			 ]	
				
 024C  6C 44 4F 53			db "lDOS"
 0250  0004[				db 4 dup (' ')
	   20			
			 ]	
				
 0254				amis_id:			; must be directly after amis_sign
 0254  0000				dw 0
 0256  0000				dw 0			; sequential number
 0258  08				db amis_id_msg_end - amis_id_msg
 0259				amis_id_msg:
 0259  64 69 73 6B 63 6F		db "diskcomp"		; our id name
       6D 70			
 0261				amis_id_msg_end:
				
 =				AMIS_SIGN_SEGMENT equ CSEG
				
					   MSG_SERVICES <DISKCOMP.CLA,DISKCOMP.CL1,DISKCOMP.CL2> ;AN000;MSG TEXT
 0261                        C3	$M_CLASS_A_STRUC LABEL BYTE
 0261  FF                    C3	        $M_CLASS_ID <0FFH,EXPECTED_VERSION,Class_A_MessageCount>
 0262  0400                  C3	
 0264  16                    C3	
 0265                        C3	$M_A_00001H_STRUC LABEL BYTE
 0265  0100                  C3	        $M_ID   <00001H,$M_A_00001H_MSG-$M_A_00001H_STRUC>
 0267  5800                  C3	
 0269                        C3	$M_A_00002H_STRUC LABEL BYTE
 0269  0200                  C3	        $M_ID   <00002H,$M_A_00002H_MSG-$M_A_00002H_STRUC>
 026B  6C00                  C3	
 026D                        C3	$M_A_00003H_STRUC LABEL BYTE
 026D  0300                  C3	        $M_ID   <00003H,$M_A_00003H_MSG-$M_A_00003H_STRUC>
 026F  7E00                  C3	
 0271                        C3	$M_A_00004H_STRUC LABEL BYTE
 0271  0400                  C3	        $M_ID   <00004H,$M_A_00004H_MSG-$M_A_00004H_STRUC>
 0273  8E00                  C3	
 0275                        C3	$M_A_00005H_STRUC LABEL BYTE
 0275  0500                  C3	        $M_ID   <00005H,$M_A_00005H_MSG-$M_A_00005H_STRUC>
 0277  D000                  C3	
 0279                        C3	$M_A_00006H_STRUC LABEL BYTE
 0279  0600                  C3	        $M_ID   <00006H,$M_A_00006H_MSG-$M_A_00006H_STRUC>
 027B  2101                  C3	
 027D                        C3	$M_A_00007H_STRUC LABEL BYTE
 027D  0700                  C3	        $M_ID   <00007H,$M_A_00007H_MSG-$M_A_00007H_STRUC>
 027F  4D01                  C3	
 0281                        C3	$M_A_00008H_STRUC LABEL BYTE
 0281  0800                  C3	        $M_ID   <00008H,$M_A_00008H_MSG-$M_A_00008H_STRUC>
 0283  7001                  C3	
 0285                        C3	$M_A_00009H_STRUC LABEL BYTE
 0285  0900                  C3	        $M_ID   <00009H,$M_A_00009H_MSG-$M_A_00009H_STRUC>
 0287  9401                  C3	
 0289                        C3	$M_A_0000AH_STRUC LABEL BYTE
 0289  0A00                  C3	        $M_ID   <0000AH,$M_A_0000AH_MSG-$M_A_0000AH_STRUC>
 028B  B701                  C3	
 028D                        C3	$M_A_0000BH_STRUC LABEL BYTE
 028D  0B00                  C3	        $M_ID   <0000BH,$M_A_0000BH_MSG-$M_A_0000BH_STRUC>
 028F  DB01                  C3	
 0291                        C3	$M_A_0000CH_STRUC LABEL BYTE
 0291  0C00                  C3	        $M_ID   <0000CH,$M_A_0000CH_MSG-$M_A_0000CH_STRUC>
 0293  E301                  C3	
 0295                        C3	$M_A_0000DH_STRUC LABEL BYTE
 0295  0D00                  C3	        $M_ID   <0000DH,$M_A_0000DH_MSG-$M_A_0000DH_STRUC>
 0297  0102                  C3	
 0299                        C3	$M_A_0000EH_STRUC LABEL BYTE
 0299  0E00                  C3	        $M_ID   <0000EH,$M_A_0000EH_MSG-$M_A_0000EH_STRUC>
 029B  1302                  C3	
 029D                        C3	$M_A_0000FH_STRUC LABEL BYTE
 029D  0F00                  C3	        $M_ID   <0000FH,$M_A_0000FH_MSG-$M_A_0000FH_STRUC>
 029F  3202                  C3	
 02A1                        C3	$M_A_00010H_STRUC LABEL BYTE
 02A1  1000                  C3	        $M_ID   <00010H,$M_A_00010H_MSG-$M_A_00010H_STRUC>
 02A3  6802                  C3	
 02A5                        C3	$M_A_00011H_STRUC LABEL BYTE
 02A5  1100                  C3	        $M_ID   <00011H,$M_A_00011H_MSG-$M_A_00011H_STRUC>
 02A7  9602                  C3	
 02A9                        C3	$M_A_00012H_STRUC LABEL BYTE
 02A9  1200                  C3	        $M_ID   <00012H,$M_A_00012H_MSG-$M_A_00012H_STRUC>
 02AB  CE02                  C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-23
SYSTEM MESSAGE HANDLER			;AN000;                            

 02AD                        C3	$M_A_00013H_STRUC LABEL BYTE
 02AD  1300                  C3	        $M_ID   <00013H,$M_A_00013H_MSG-$M_A_00013H_STRUC>
 02AF  F202                  C3	
 02B1                        C3	$M_A_00014H_STRUC LABEL BYTE
 02B1  1400                  C3	        $M_ID   <00014H,$M_A_00014H_MSG-$M_A_00014H_STRUC>
 02B3  3803                  C3	
 02B5                        C3	$M_A_00015H_STRUC LABEL BYTE
 02B5  1500                  C3	        $M_ID   <00015H,$M_A_00015H_MSG-$M_A_00015H_STRUC>
 02B7  4E03                  C3	
 02B9                        C3	$M_A_00016H_STRUC LABEL BYTE
 02B9  1600                  C3	        $M_ID   <00016H,$M_A_00016H_MSG-$M_A_00016H_STRUC>
 02BB  5903                  C3	
 02BD                        C3	$M_A_00001H_MSG LABEL BYTE
 02BD  17                    C3	        DB      $M_A_00001H_END-$M_A_00001H_MSG-1
 02BE  49 6E 63 6F 72 72     C3	        DB      "Incorrect DOS version",CR,LF
 02D5                        C3	$M_A_00001H_END LABEL BYTE
 02D5                        C3	$M_A_00002H_MSG LABEL BYTE
 02D5  15                    C3	        DB      $M_A_00002H_END-$M_A_00002H_MSG-1
 02D6  49 6E 73 75 66 66     C3	        DB      "Insufficient memory",CR,LF
 02EB                        C3	$M_A_00002H_END LABEL BYTE
 02EB                        C3	$M_A_00003H_MSG LABEL BYTE
 02EB  13                    C3	        DB      $M_A_00003H_END-$M_A_00003H_MSG-1
 02EC  49 6E 76 61 6C 69     C3	        DB      "Invalid parameter",CR,LF
 02FF                        C3	$M_A_00003H_END LABEL BYTE
 02FF                        C3	$M_A_00004H_MSG LABEL BYTE
 02FF  45                    C3	        DB      $M_A_00004H_END-$M_A_00004H_MSG-1
 0300  44 6F 20 6E 6F 74     C3	        DB      "Do not specify filename(s)",CR,LF
 031C  43 6F 6D 6D 61 6E     C3	        DB      	"Command format: DISKCOMP d: d: [/1][/8]",LF,CR
 0345                        C3	$M_A_00004H_END LABEL BYTE
 0345                        C3	$M_A_00005H_MSG LABEL BYTE
 0345  54                    C3	        DB      $M_A_00005H_END-$M_A_00005H_MSG-1
 0346  0D 0A 49 6E 76 61     C3	        DB      CR,LF,"Invalid drive specification",CR,LF
 0365  53 70 65 63 69 66     C3	        DB      	"Specified drive does not exist",CR,LF
 0385  6F 72 20 69 73 20     C3	        DB      	"or is non-removable",CR,LF
 039A                        C3	$M_A_00005H_END LABEL BYTE
 039A                        C3	$M_A_00006H_MSG LABEL BYTE
 039A  2F                    C3	        DB      $M_A_00006H_END-$M_A_00006H_MSG-1
 039B  0D 0A 43 61 6E 6E     C3	        DB      CR,LF,"Cannot DISKCOMP to or from",CR,LF
 03B9  61 20 6E 65 74 77     C3	        DB      	"a network drive",CR,LF
 03CA                        C3	$M_A_00006H_END LABEL BYTE
 03CA                        C3	$M_A_00007H_MSG LABEL BYTE
 03CA  26                    C3	        DB      $M_A_00007H_END-$M_A_00007H_MSG-1
 03CB  0D 0A 49 6E 73 65     C3	        DB      CR,LF,"Insert FIRST diskette in drive %1:",CR,LF
 03F1                        C3	$M_A_00007H_END LABEL BYTE
 03F1                        C3	$M_A_00008H_MSG LABEL BYTE
 03F1  27                    C3	        DB      $M_A_00008H_END-$M_A_00008H_MSG-1
 03F2  0D 0A 49 6E 73 65     C3	        DB      CR,LF,"Insert SECOND diskette in drive %1:",CR,LF
 0419                        C3	$M_A_00008H_END LABEL BYTE
 0419                        C3	$M_A_00009H_MSG LABEL BYTE
 0419  26                    C3	        DB      $M_A_00009H_END-$M_A_00009H_MSG-1
 041A  0D 0A 46 49 52 53     C3	        DB      CR,LF,"FIRST diskette bad or incompatible",CR,LF
 0440                        C3	$M_A_00009H_END LABEL BYTE
 0440                        C3	$M_A_0000AH_MSG LABEL BYTE
 0440  27                    C3	        DB      $M_A_0000AH_END-$M_A_0000AH_MSG-1
 0441  0D 0A 53 45 43 4F     C3	        DB      CR,LF,"SECOND diskette bad or incompatible",CR,LF
 0468                        C3	$M_A_0000AH_END LABEL BYTE
 0468                        C3	$M_A_0000BH_MSG LABEL BYTE
 0468  0B                    C3	        DB      $M_A_0000BH_END-$M_A_0000BH_MSG-1
 0469  4E 6F 74 20 72 65     C3	        DB      "Not ready",CR,LF
 0474                        C3	$M_A_0000BH_END LABEL BYTE
 0474                        C3	$M_A_0000CH_MSG LABEL BYTE
 0474  21                    C3	        DB      $M_A_0000CH_END-$M_A_0000CH_MSG-1
 0475  50 72 65 73 73 20     C3	        DB      "Press any key to continue . . .",CR,LF
 0496                        C3	$M_A_0000CH_END LABEL BYTE
 0496                        C3	$M_A_0000DH_MSG LABEL BYTE
 0496  15                    C3	        DB      $M_A_0000DH_END-$M_A_0000DH_MSG-1
 0497  57 72 69 74 65 20     C3	        DB      "Write protect error",CR,LF
 04AC                        C3	$M_A_0000DH_END LABEL BYTE
 04AC                        C3	$M_A_0000EH_MSG LABEL BYTE
 04AC  22                    C3	        DB      $M_A_0000EH_END-$M_A_0000EH_MSG-1
 04AD  0D 0A 43 6F 6D 70     C3	        DB      CR,LF,"Compare another diskette (Y/N) ?"
 04CF                        C3	$M_A_0000EH_END LABEL BYTE
 04CF                        C3	$M_A_0000FH_MSG LABEL BYTE
 04CF  39                    C3	        DB      $M_A_0000FH_END-$M_A_0000FH_MSG-1
 04D0  0D 0A 43 6F 6D 70     C3	        DB      CR,LF,"Comparing %1 tracks",CR,LF
 04E7  25 32 20 73 65 63     C3	        DB      	"%2 sectors per track, %3 side(s)",CR,LF
 0509                        C3	$M_A_0000FH_END LABEL BYTE
 0509                        C3	$M_A_00010H_MSG LABEL BYTE
 0509  31                    C3	        DB      $M_A_00010H_END-$M_A_00010H_MSG-1
 050A  0D 0A 44 72 69 76     C3	        DB      CR,LF,"Drive types or diskette types",CR,LF
 052B  6E 6F 74 20 63 6F     C3	        DB      	"not compatible",CR,LF
 053B                        C3	$M_A_00010H_END LABEL BYTE
 053B                        C3	$M_A_00011H_MSG LABEL BYTE
 053B  3B                    C3	        DB      $M_A_00011H_END-$M_A_00011H_MSG-1
 053C  0D 0A 55 6E 72 65     C3	        DB      CR,LF,"Unrecoverable read error on drive %2",CR,LF
 0564  73 69 64 65 20 25     C3	        DB      	"side %3, track %4",CR,LF
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-24
SYSTEM MESSAGE HANDLER			;AN000;                            

 0577                        C3	$M_A_00011H_END LABEL BYTE
 0577                        C3	$M_A_00012H_MSG LABEL BYTE
 0577  27                    C3	        DB      $M_A_00012H_END-$M_A_00012H_MSG-1
 0578  0D 0A 43 6F 6D 70     C3	        DB      CR,LF,"Compare error on",CR,LF,"side %3, track %4",CR,LF
 059F                        C3	$M_A_00012H_END LABEL BYTE
 059F                        C3	$M_A_00013H_MSG LABEL BYTE
 059F  49                    C3	        DB      $M_A_00013H_END-$M_A_00013H_MSG-1
 05A0  4D 61 6B 65 20 73     C3	        DB      "Make sure a diskette is inserted into",CR,LF
 05C7  74 68 65 20 64 72     C3	        DB      	"the drive and the door is closed",CR,LF
 05E9                        C3	$M_A_00013H_END LABEL BYTE
 05E9                        C3	$M_A_00014H_MSG LABEL BYTE
 05E9  19                    C3	        DB      $M_A_00014H_END-$M_A_00014H_MSG-1
 05EA  0D 0A 43 6F 6D 70     C3	        DB      CR,LF,"Compare process ended",CR,LF
 0603                        C3	$M_A_00014H_END LABEL BYTE
 0603                        C3	$M_A_00015H_MSG LABEL BYTE
 0603  0E                    C3	        DB      $M_A_00015H_END-$M_A_00015H_MSG-1
 0604  0D 0A 43 6F 6D 70     C3	        DB      CR,LF,"Compare OK",CR,LF
 0612                        C3	$M_A_00015H_END LABEL BYTE
 0612                        C3	$M_A_00016H_MSG LABEL BYTE
 0612  02                    C3	        DB      $M_A_00016H_END-$M_A_00016H_MSG-1
 0613  0D 0A                 C3	        DB      CR,LF
 0615                        C3	$M_A_00016H_END LABEL BYTE
 0615                        C3	$M_CLS_1 PROC NEAR
 0615  0E                    C3	        PUSH    CS
 0616  07                    C3	        POP     ES
 0617  8D 3E 0261 R          C3	        LEA     DI,$M_CLASS_A_STRUC
 061B  81 C1 03BA            C3	        ADD     CX,$-$M_CLASS_A_STRUC
 061F  C3                    C3	        RET
 0620                        C3	$M_CLS_1 ENDP
 0620                        C3	$M_CLASS_1_STRUC LABEL BYTE
 0620  01                    C3	        $M_CLASS_ID <001H,EXPECTED_VERSION,Class_1_MessageCount>
 0621  0400                  C3	
 0623  01                    C3	
 0624                        C3	$M_1_FF_STRUC LABEL BYTE
 0624  FFFF                  C3	        $M_ID <0FFFFH,$M_1_FF_MSG-$M_1_FF_STRUC>
 0626  0400                  C3	
 0628                        C3	$M_1_FF_MSG LABEL BYTE
 0628  11                    C3	        DB      $M_1_FF_END-$M_1_FF_MSG-1
 0629  45 78 74 65 6E 64     C3	        DB      "Extended Error %1"
 063A                        C3	$M_1_FF_END LABEL BYTE
 063A                        C3	$M_MSGSERV_1 PROC NEAR
 063A  0E                    C3	        PUSH    CS
 063B  07                    C3	        POP     ES
 063C  8D 3E 0620 R          C3	        LEA     DI,$M_CLASS_1_STRUC
 0640  83 C1 20              C3	        ADD     CX,$-$M_CLASS_1_STRUC
 0643  C3                    C3	        RET
 0644                        C3	$M_MSGSERV_1 Endp
 0644                        C3	$M_CLASS_2_STRUC LABEL BYTE
 0644  02                    C3	        $M_CLASS_ID <002H,EXPECTED_VERSION,Class_2_MessageCount>
 0645  0400                  C3	
 0647  01                    C3	
 0648                        C3	$M_2_FF_STRUC LABEL BYTE
 0648  FFFF                  C3	        $M_ID <0FFFFH,$M_2_FF_MSG-$M_2_FF_STRUC>
 064A  0400                  C3	
 064C                        C3	$M_2_FF_MSG LABEL BYTE
 064C  0E                    C3	        DB      $M_2_FF_END-$M_2_FF_MSG-1
 064D  50 61 72 73 65 20     C3	        DB      "Parse Error %1"
 065B                        C3	$M_2_FF_END LABEL BYTE
 065B                        C3	$M_MSGSERV_2 PROC NEAR
 065B  0E                    C3	        PUSH    CS
 065C  07                    C3	        POP     ES
 065D  8D 3E 0644 R          C3	        LEA     DI,$M_CLASS_2_STRUC
 0661  83 C1 1D              C3	        ADD     CX,$-$M_CLASS_2_STRUC
 0664  C3                    C3	        RET
 0665                        C3	$M_MSGSERV_2 Endp
					   PATHLABL DCOMPSM	   ;AN013;
 0665                        1	    $$A_START_DCOMPSM:                    ; 
								   ;DEFAULT=CHECK DOS VERSION
								   ;DEFAULT=NEARmsg
								   ;DEFAULT=INPUTmsg
								   ;DEFAULT=NUMmsg
								   ;DEFAULT=NO TIMEmsg
								   ;DEFAULT=NO DATEmsg
								   ;DEFAULT=NO GETmsg
				;	   MSG_SERVICES <LOADmsg,DISPLAYmsg,CHARmsg,NUMmsg,INPUTmsg>
				.LIST				   ;AN000;
				.CREF				   ;AN000;
				; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
					   PATHLABL DCOMPSM	   ;AN013;
 0D6C                        1	    $$A_STOP_DCOMPSM:                     ; 
				
				
 0D6C				CSEG	   ENDS 		   ;AN000;
				
				include msgdcl.inc
			     C	; This Macro was removed from sysmsg.inc. We had to remove this
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Page     1-25
DOS - Message Retriever - DISPMSG.ASM Module                

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

			     C	      EXTRN   parm:NEAR 	       ;    Must be external
			     C	    ENDIF			       ;
			     C	  ELSE
			     C	    IF COMR
			     C	    ELSE
			     C	      PUBLIC parm
			     C	    ENDIF
			     C	  ENDIF 			       ;
			     C	ENDM				       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	
			     C	
				
					   END			   ;AN000;

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      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
HEADER . . . . . . . . . . . . .  	   4
MSG_SERVICES . . . . . . . . . .  	  34
MSG_SERVICES2  . . . . . . . . .  	  14
MSG_UTILNAME . . . . . . . . . .  	   5
PATHLABL . . . . . . . . . . . .  	  16

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

$M_CLASS_ID  . . . . . . . . . .  	0004	0003
  $M_CLS_ID  . . . . . . . . . .  	0000
  $M_COMMAND_VER . . . . . . . .  	0001
  $M_NUM_CLS_MSG . . . . . . . .  	0003
$M_COUNTRY_INFO  . . . . . . . .  	0056	000A
  $M_HEADER  . . . . . . . . . .  	0000
  $M_DATE_FORMAT . . . . . . . .  	0044
  $M_CURR_SEPARA . . . . . . . .  	0046
  $M_THOU_SEPARA . . . . . . . .  	004B
  $M_DECI_SEPARA . . . . . . . .  	004D
  $M_DATE_SEPARA . . . . . . . .  	004F
  $M_TIME_SEPARA . . . . . . . .  	0051
  $M_CURR_FORMAT . . . . . . . .  	0053
  $M_SIG_DIGS_CU . . . . . . . .  	0054
  $M_TIME_FORMAT . . . . . . . .  	0055
$M_ID  . . . . . . . . . . . . .  	0004	0002
  $M_NUM . . . . . . . . . . . .  	0000
  $M_TXT_PTR . . . . . . . . . .  	0002
$M_RES_ADDRS . . . . . . . . . .  	0085	0017
  $M_EXT_ERR_ADDRS . . . . . . .  	0000
  $M_EXT_FILE  . . . . . . . . .  	0004
  $M_EXT_COMMAND . . . . . . . .  	0008
  $M_EXT_TERM  . . . . . . . . .  	000C
  $M_PARSE_COMMAND . . . . . . .  	0010
  $M_PARSE_ADDRS . . . . . . . .  	0014
  $M_PARSE_TERM  . . . . . . . .  	0018
  $M_CRIT_ADDRS  . . . . . . . .  	001C
  $M_CRIT_COMMAND  . . . . . . .  	0020
  $M_CRIT_TERM . . . . . . . . .  	0024
  $M_DISK_PROC_ADDR  . . . . . .  	0028
  $M_CLASS_ADDRS . . . . . . . .  	002C
  $M_CLS_TERM  . . . . . . . . .  	0030
  $M_DBCS_VEC  . . . . . . . . .  	0034
  $M_HANDLE  . . . . . . . . . .  	0038
  $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
MSG_DESC . . . . . . . . . . . .  	000A	0005
  MSG_NUM  . . . . . . . . . . .  	0000
  MSG_HANDLE . . . . . . . . . .  	0002
  MSG_SUBLIST  . . . . . . . . .  	0004
  MSG_COUNT  . . . . . . . . . .  	0006
  MSG_CLASS  . . . . . . . . . .  	0008
SF_BITS  . . . . . . . . . . . .  	0008	0004
  F_ALIGN  . . . . . . . . . . .  	0007	0001	0080	0000
  F_RES  . . . . . . . . . . . .  	0006	0001	0040	0000
  F_SIZE . . . . . . . . . . . .  	0004	0002	0030	0000
  F_TYPE . . . . . . . . . . . .  	0000	0004	000F	0000
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-2


SUBLIST  . . . . . . . . . . . .  	000B	0009
  SUB_SIZE . . . . . . . . . . .  	0000
  SUB_RES  . . . . . . . . . . .  	0001
  SUB_VALUE  . . . . . . . . . .  	0002
  SUB_VALUE_SEG  . . . . . . . .  	0004
  SUB_ID . . . . . . . . . . . .  	0006
  SUB_FLAGS  . . . . . . . . . .  	0007
  SUB_MAX_WIDTH  . . . . . . . .  	0008
  SUB_MIN_WIDTH  . . . . . . . .  	0009
  SUB_PAD_CHAR . . . . . . . . .  	000A

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

CSEG . . . . . . . . . . . . . .  	0D6C	PARA	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

ACTION_39  . . . . . . . . . . .  	NUMBER	0004	
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_GOOD_DOS . . . . . . . . . .  	L NEAR	0796	CSEG
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
AMIS_ID  . . . . . . . . . . . .  	L NEAR	0254	CSEG
AMIS_ID_MSG  . . . . . . . . . .  	L NEAR	0259	CSEG
AMIS_ID_MSG_END  . . . . . . . .  	L NEAR	0261	CSEG
amis_sign  . . . . . . . . . . .  	L NEAR	0244	CSEG	Global
AMIS_SIGN_SEGMENT  . . . . . . .  	ALIAS	 CSEG		
ASCII_DRV1_ID  . . . . . . . . .  	L BYTE	007A	CSEG	Global
ASCII_DRV2_ID  . . . . . . . . .  	L BYTE	007B	CSEG	Global

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	073A	CSEG
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	0771	CSEG
CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	0743	CSEG
CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	076C	CSEG
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	0770	CSEG
CLASS_1  . . . . . . . . . . . .  	ALIAS	 EXT_ERR_CLASS		
CLASS_1_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_2  . . . . . . . . . . . .  	ALIAS	 PARSE_ERR_CLASS		
CLASS_2_MESSAGECOUNT . . . . . .  	NUMBER	0001	
CLASS_A  . . . . . . . . . . . .  	ALIAS	 UTILITY_MSG_CLASS		
CLASS_A_MESSAGECOUNT . . . . . .  	NUMBER	0016	
CLEAR_BUF  . . . . . . . . . . .  	NUMBER	00C0	
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	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-3


DOS_GET_PARSE  . . . . . . . . .  	NUMBER	0002	
DOS_GET_VERSION  . . . . . . . .  	NUMBER	0030	
DOS_IOCTL_GET_INFO . . . . . . .  	NUMBER	4400	
DOS_IOCTL_SET_INFO . . . . . . .  	NUMBER	4401	
DOS_KEYB_INP . . . . . . . . . .  	NUMBER	0001	
DOS_LSEEK_FILE . . . . . . . . .  	NUMBER	4200	
DOS_READ_BYTE  . . . . . . . . .  	NUMBER	003F	
DOS_SET_ADDR . . . . . . . . . .  	NUMBER	0009	
DOS_WRITE_HANDLE . . . . . . . .  	NUMBER	0040	
DRIVE_LETTER . . . . . . . . . .  	L BYTE	00A5	CSEG	Global

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	
FILL_OFF . . . . . . . . . . . .  	NUMBER	0000	
FILL_SEG . . . . . . . . . . . .  	NUMBER	0000	
FORMFD . . . . . . . . . . . . .  	NUMBER	000C	
FOUR_SUBS  . . . . . . . . . . .  	NUMBER	0004	
F_ALIGN  . . . . . . . . . . . .  		0007	
F_RES  . . . . . . . . . . . . .  		0006	
F_SIZE . . . . . . . . . . . . .  		0004	
F_TYPE . . . . . . . . . . . . .  		0000	

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

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

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

KEY_IN . . . . . . . . . . . . .  	NUMBER	0008	
KEY_IN_ECHO  . . . . . . . . . .  	NUMBER	0001	

LBL_DCOMPSM  . . . . . . . . . .  	NUMBER	0004	
LEFT_ALIGN . . . . . . . . . . .  	NUMBER	0000	
LETTER_A . . . . . . . . . . . .  	NUMBER	0041	
LF . . . . . . . . . . . . . . .  	NUMBER	000A	
LOADMSG  . . . . . . . . . . . .  	NUMBER	0000	
LOCUS_39 . . . . . . . . . . . .  	NUMBER	0001	
LOWEST_4CH_VERSION . . . . . . .  	NUMBER	0002	
LOW_NIB_MASK . . . . . . . . . .  	NUMBER	000F	

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MAX_0  . . . . . . . . . . . . .  	NUMBER	0000	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MIN_1  . . . . . . . . . . . . .  	NUMBER	0001	
MSGDATA  . . . . . . . . . . . .  	NUMBER	0000	
MSGNUM_BAD_FIRST . . . . . . . .  	L TBYTE	007C	CSEG	Global
MSGNUM_BAD_SECOND  . . . . . . .  	L TBYTE	0086	CSEG	Global
MSGNUM_CLOSE_DOOR  . . . . . . .  	L TBYTE	0137	CSEG	Global
MSGNUM_COMPARING . . . . . . . .  	L TBYTE	00C7	CSEG	Global
MSGNUM_COMP_ANOTHER  . . . . . .  	L TBYTE	00BD	CSEG	Global
MSGNUM_COMP_OK . . . . . . . . .  	L TBYTE	014B	CSEG	Global
MSGNUM_DRV_REDIRECTED  . . . . .  	L TBYTE	0051	CSEG	Global
MSGNUM_EXTERR  . . . . . . . . .  	L TBYTE	0000	CSEG	Global
MSGNUM_FATAL_ERROR . . . . . . .  	L TBYTE	0141	CSEG	Global
MSGNUM_GET_READY . . . . . . . .  	L TBYTE	0090	CSEG	Global
MSGNUM_HARD_ERROR_COMP . . . . .  	L TBYTE	012D	CSEG	Global
MSGNUM_HARD_ERROR_READ . . . . .  	L TBYTE	0102	CSEG	Global
MSGNUM_INVALID_DRV . . . . . . .  	L TBYTE	0047	CSEG	Global
MSGNUM_INVALID_PARM  . . . . . .  	L TBYTE	0033	CSEG	Global
MSGNUM_INVALID_PARM2 . . . . . .  	L TBYTE	003D	CSEG	Global
MSGNUM_LOAD_FIRST  . . . . . . .  	L TBYTE	005B	CSEG	Global
MSGNUM_LOAD_SECOND . . . . . . .  	L TBYTE	0070	CSEG	Global
MSGNUM_NEWLINE . . . . . . . . .  	L TBYTE	0155	CSEG	Global
MSGNUM_NOT_COMPATIBLE  . . . . .  	L TBYTE	00F8	CSEG	Global
MSGNUM_PARSE . . . . . . . . . .  	L TBYTE	000A	CSEG	Global
MSGNUM_STRIKE  . . . . . . . . .  	L TBYTE	00A9	CSEG	Global
MSGNUM_UNSUF_MEMORY  . . . . . .  	L TBYTE	0029	CSEG	Global
MSGNUM_VER . . . . . . . . . . .  	L TBYTE	0014	CSEG	Global
MSGNUM_WRITE_PROTECT . . . . . .  	L TBYTE	00B3	CSEG	Global
MSG_SECTRK . . . . . . . . . . .  	L WORD	00F4	CSEG	Global
MSG_SER_CLASS  . . . . . . . . .  	NUMBER	0000	
MSG_SIDES  . . . . . . . . . . .  	L WORD	00F6	CSEG	Global
MSG_TRACKS . . . . . . . . . . .  	L WORD	00F2	CSEG	Global

NEARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
NEW_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
NEW_MINOR_VERSION  . . . . . . .  	NUMBER	0026	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-4


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	

ONE_SUBS . . . . . . . . . . . .  	NUMBER	0001	

PAD_BLK  . . . . . . . . . . . .  	NUMBER	0020	
PARSE_ERR_CLASS  . . . . . . . .  	NUMBER	0002	
PC_ID_0  . . . . . . . . . . . .  	NUMBER	0000	
PC_ID_1  . . . . . . . . . . . .  	NUMBER	0001	
PC_ID_2  . . . . . . . . . . . .  	NUMBER	0002	
PC_ID_3  . . . . . . . . . . . .  	NUMBER	0003	
PC_ID_4  . . . . . . . . . . . .  	NUMBER	0004	
PC_ID_5  . . . . . . . . . . . .  	NUMBER	0005	

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

SETSTDIO . . . . . . . . . . . .  	NUMBER	0000	
SF_ASCIIZ  . . . . . . . . . . .  	NUMBER	0001	
SF_BYTE  . . . . . . . . . . . .  	NUMBER	0001	
SF_CH  . . . . . . . . . . . . .  	NUMBER	0000	
SF_CHAR  . . . . . . . . . . . .  	NUMBER	0000	
SF_DATE  . . . . . . . . . . . .  	NUMBER	0004	
SF_DWORD . . . . . . . . . . . .  	NUMBER	0003	
SF_HHMM  . . . . . . . . . . . .  	NUMBER	0000	
SF_HHMMSS  . . . . . . . . . . .  	NUMBER	0001	
SF_HHMMSSHH  . . . . . . . . . .  	NUMBER	0002	
SF_LEFT  . . . . . . . . . . . .  	NUMBER	0000	
SF_MD  . . . . . . . . . . . . .  	NUMBER	0001	
SF_MDY2  . . . . . . . . . . . .  	NUMBER	0002	
SF_MDY4  . . . . . . . . . . . .  	NUMBER	0003	
SF_RIGHT . . . . . . . . . . . .  	NUMBER	0001	
SF_SIN_BD  . . . . . . . . . . .  	NUMBER	0002	
SF_TIME_12 . . . . . . . . . . .  	NUMBER	0005	
SF_TIME_24 . . . . . . . . . . .  	NUMBER	0006	
SF_UN_BD . . . . . . . . . . . .  	NUMBER	0001	
SF_UN_BH . . . . . . . . . . . .  	NUMBER	0003	
SF_WORD  . . . . . . . . . . . .  	NUMBER	0002	
SGN_BIN_BYTE . . . . . . . . . .  	NUMBER	0012	
SGN_BIN_DWORD  . . . . . . . . .  	NUMBER	0032	
SGN_BIN_TYPE . . . . . . . . . .  	NUMBER	0002	
SGN_BIN_WORD . . . . . . . . . .  	NUMBER	0022	
SKIP_MSG . . . . . . . . . . . .  	L BYTE	00A8	CSEG	Global
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
SUBLIST_11 . . . . . . . . . . .  	L 	009A	CSEG	Global
SUBLIST_15A  . . . . . . . . . .  	L 	00D1	CSEG	Global
SUBLIST_15B  . . . . . . . . . .  	L 	00DC	CSEG	Global
SUBLIST_15C  . . . . . . . . . .  	L 	00E7	CSEG	Global
SUBLIST_17B  . . . . . . . . . .  	L 	010C	CSEG	Global
SUBLIST_17C  . . . . . . . . . .  	L 	0117	CSEG	Global
SUBLIST_17D  . . . . . . . . . .  	L 	0122	CSEG	Global
SUBLIST_78 . . . . . . . . . . .  	L 	0065	CSEG	Global
SUBLIST_LENGTH . . . . . . . . .  	NUMBER	000B	
SUBLIST_PARSE  . . . . . . . . .  	L 	001E	CSEG	Global
SYSDISPMSG . . . . . . . . . . .  	N PROC	07B2	CSEG	Global	Length = 004E
SYSLOADMSG . . . . . . . . . . .  	N PROC	0665	CSEG	Global	Length = 0097

TAB  . . . . . . . . . . . . . .  	NUMBER	0009	
THREE_SUBS . . . . . . . . . . .  	NUMBER	0003	
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	
TWO_SUBS . . . . . . . . . . . .  	NUMBER	0002	

UNSGN_BIN_BYTE . . . . . . . . .  	NUMBER	0011	
UNSGN_BIN_DWORD  . . . . . . . .  	NUMBER	0031	
UNSGN_BIN_TYPE . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-5


UNSGN_BIN_WORD . . . . . . . . .  	NUMBER	0021	
UTILITY_MSG_CLASS  . . . . . . .  	NUMBER	00FF	

$$A_START_DCOMPSM  . . . . . . .  	L NEAR	0665	CSEG	Global
$$A_STOP_DCOMPSM . . . . . . . .  	L NEAR	0D6C	CSEG	Global
$MDO123  . . . . . . . . . . . .  	L NEAR	0860	CSEG
$MDO139  . . . . . . . . . . . .  	L NEAR	08C8	CSEG
$MDO145  . . . . . . . . . . . .  	L NEAR	08EA	CSEG
$MDO165  . . . . . . . . . . . .  	L NEAR	094C	CSEG
$MDO167  . . . . . . . . . . . .  	L NEAR	0956	CSEG
$MDO175  . . . . . . . . . . . .  	L NEAR	0982	CSEG
$MDO215  . . . . . . . . . . . .  	L NEAR	0A4D	CSEG
$MDO219  . . . . . . . . . . . .  	L NEAR	0A72	CSEG
$MDO259  . . . . . . . . . . . .  	L NEAR	0B5A	CSEG
$MDO280  . . . . . . . . . . . .  	L NEAR	0BC7	CSEG
$MDO291  . . . . . . . . . . . .  	L NEAR	0BF2	CSEG
$MDO301  . . . . . . . . . . . .  	L NEAR	0C20	CSEG
$MDO310  . . . . . . . . . . . .  	L NEAR	0C46	CSEG
$MDO321  . . . . . . . . . . . .  	L NEAR	0C88	CSEG
$MEN104  . . . . . . . . . . . .  	L NEAR	07FF	CSEG
$MEN107  . . . . . . . . . . . .  	L NEAR	0814	CSEG
$MEN110  . . . . . . . . . . . .  	L NEAR	0835	CSEG
$MEN119  . . . . . . . . . . . .  	L NEAR	086D	CSEG
$MEN123  . . . . . . . . . . . .  	L NEAR	086D	CSEG
$MEN128  . . . . . . . . . . . .  	L NEAR	089C	CSEG
$MEN139  . . . . . . . . . . . .  	L NEAR	08DF	CSEG
$MEN145  . . . . . . . . . . . .  	L NEAR	0943	CSEG
$MEN146  . . . . . . . . . . . .  	L NEAR	0900	CSEG
$MEN150  . . . . . . . . . . . .  	L NEAR	093E	CSEG
$MEN154  . . . . . . . . . . . .  	L NEAR	093E	CSEG
$MEN165  . . . . . . . . . . . .  	L NEAR	0A38	CSEG
$MEN167  . . . . . . . . . . . .  	L NEAR	0973	CSEG
$MEN175  . . . . . . . . . . . .  	L NEAR	099B	CSEG
$MEN180  . . . . . . . . . . . .  	L NEAR	09AD	CSEG
$MEN187  . . . . . . . . . . . .  	L NEAR	09E0	CSEG
$MEN188  . . . . . . . . . . . .  	L NEAR	09CE	CSEG
$MEN192  . . . . . . . . . . . .  	L NEAR	09E0	CSEG
$MEN199  . . . . . . . . . . . .  	L NEAR	0A1F	CSEG
$MEN20 . . . . . . . . . . . . .  	L NEAR	06FB	CSEG
$MEN200  . . . . . . . . . . . .  	L NEAR	0A17	CSEG
$MEN202  . . . . . . . . . . . .  	L NEAR	0A17	CSEG
$MEN211  . . . . . . . . . . . .  	L NEAR	0A2C	CSEG
$MEN219  . . . . . . . . . . . .  	L NEAR	0AD3	CSEG
$MEN220  . . . . . . . . . . . .  	L NEAR	0AA4	CSEG
$MEN222  . . . . . . . . . . . .  	L NEAR	0AA4	CSEG
$MEN224  . . . . . . . . . . . .  	L NEAR	0AA4	CSEG
$MEN229  . . . . . . . . . . . .  	L NEAR	0ACB	CSEG
$MEN230  . . . . . . . . . . . .  	L NEAR	0ABD	CSEG
$MEN240  . . . . . . . . . . . .  	L NEAR	0AF3	CSEG
$MEN243  . . . . . . . . . . . .  	L NEAR	0B00	CSEG
$MEN247  . . . . . . . . . . . .  	L NEAR	0B57	CSEG
$MEN248  . . . . . . . . . . . .  	L NEAR	0B3B	CSEG
$MEN25 . . . . . . . . . . . . .  	L NEAR	07B1	CSEG
$MEN252  . . . . . . . . . . . .  	L NEAR	0B53	CSEG
$MEN259  . . . . . . . . . . . .  	L NEAR	0B77	CSEG
$MEN261  . . . . . . . . . . . .  	L NEAR	0B6B	CSEG
$MEN27 . . . . . . . . . . . . .  	L NEAR	07A6	CSEG
$MEN292  . . . . . . . . . . . .  	L NEAR	0C05	CSEG
$MEN307  . . . . . . . . . . . .  	L NEAR	0C4E	CSEG
$MEN314  . . . . . . . . . . . .  	L NEAR	0C6E	CSEG
$MEN317  . . . . . . . . . . . .  	L NEAR	0C95	CSEG
$MEN321  . . . . . . . . . . . .  	L NEAR	0C93	CSEG
$MEN325  . . . . . . . . . . . .  	L NEAR	0D22	CSEG
$MEN333  . . . . . . . . . . . .  	L NEAR	0D22	CSEG
$MEN388  . . . . . . . . . . . .  	L NEAR	0D42	CSEG
$MEN392  . . . . . . . . . . . .  	L NEAR	0D61	CSEG
$MEN396  . . . . . . . . . . . .  	L NEAR	0D6B	CSEG
$MEN93 . . . . . . . . . . . . .  	L NEAR	07F1	CSEG
$MEN94 . . . . . . . . . . . . .  	L NEAR	07D6	CSEG
$MEN97 . . . . . . . . . . . . .  	L NEAR	07EB	CSEG
$MIF104  . . . . . . . . . . . .  	L NEAR	07FB	CSEG
$MIF107  . . . . . . . . . . . .  	L NEAR	0811	CSEG
$MIF110  . . . . . . . . . . . .  	L NEAR	0825	CSEG
$MIF112  . . . . . . . . . . . .  	L NEAR	0835	CSEG
$MIF113  . . . . . . . . . . . .  	L NEAR	0835	CSEG
$MIF117  . . . . . . . . . . . .  	L NEAR	083A	CSEG
$MIF119  . . . . . . . . . . . .  	L NEAR	085E	CSEG
$MIF120  . . . . . . . . . . . .  	L NEAR	085C	CSEG
$MIF127  . . . . . . . . . . . .  	L NEAR	089D	CSEG
$MIF128  . . . . . . . . . . . .  	L NEAR	089A	CSEG
$MIF129  . . . . . . . . . . . .  	L NEAR	0898	CSEG
$MIF134  . . . . . . . . . . . .  	L NEAR	08BD	CSEG
$MIF135  . . . . . . . . . . . .  	L NEAR	08BD	CSEG
$MIF138  . . . . . . . . . . . .  	L NEAR	08DF	CSEG
$MIF141  . . . . . . . . . . . .  	L NEAR	08DB	CSEG
$MIF146  . . . . . . . . . . . .  	L NEAR	08FD	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-6


$MIF150  . . . . . . . . . . . .  	L NEAR	091C	CSEG
$MIF151  . . . . . . . . . . . .  	L NEAR	091A	CSEG
$MIF154  . . . . . . . . . . . .  	L NEAR	092E	CSEG
$MIF155  . . . . . . . . . . . .  	L NEAR	092C	CSEG
$MIF158  . . . . . . . . . . . .  	L NEAR	093E	CSEG
$MIF159  . . . . . . . . . . . .  	L NEAR	093E	CSEG
$MIF166  . . . . . . . . . . . .  	L NEAR	0973	CSEG
$MIF169  . . . . . . . . . . . .  	L NEAR	096E	CSEG
$MIF173  . . . . . . . . . . . .  	L NEAR	09AD	CSEG
$MIF174  . . . . . . . . . . . .  	L NEAR	09AD	CSEG
$MIF175  . . . . . . . . . . . .  	L NEAR	098F	CSEG
$MIF180  . . . . . . . . . . . .  	L NEAR	09AA	CSEG
$MIF187  . . . . . . . . . . . .  	L NEAR	09D0	CSEG
$MIF188  . . . . . . . . . . . .  	L NEAR	09CD	CSEG
$MIF192  . . . . . . . . . . . .  	L NEAR	09D7	CSEG
$MIF194  . . . . . . . . . . . .  	L NEAR	09DE	CSEG
$MIF199  . . . . . . . . . . . .  	L NEAR	0A1C	CSEG
$MIF20 . . . . . . . . . . . . .  	L NEAR	06F7	CSEG
$MIF200  . . . . . . . . . . . .  	L NEAR	09FD	CSEG
$MIF202  . . . . . . . . . . . .  	L NEAR	0A17	CSEG
$MIF211  . . . . . . . . . . . .  	L NEAR	0A28	CSEG
$MIF216  . . . . . . . . . . . .  	L NEAR	0A5B	CSEG
$MIF220  . . . . . . . . . . . .  	L NEAR	0A7F	CSEG
$MIF222  . . . . . . . . . . . .  	L NEAR	0A8C	CSEG
$MIF224  . . . . . . . . . . . .  	L NEAR	0A9E	CSEG
$MIF229  . . . . . . . . . . . .  	L NEAR	0ABF	CSEG
$MIF23 . . . . . . . . . . . . .  	L NEAR	0711	CSEG
$MIF230  . . . . . . . . . . . .  	L NEAR	0AB1	CSEG
$MIF234  . . . . . . . . . . . .  	L NEAR	0AC7	CSEG
$MIF239  . . . . . . . . . . . .  	L NEAR	0B02	CSEG
$MIF240  . . . . . . . . . . . .  	L NEAR	0AF2	CSEG
$MIF243  . . . . . . . . . . . .  	L NEAR	0AFA	CSEG
$MIF247  . . . . . . . . . . . .  	L NEAR	0B3D	CSEG
$MIF248  . . . . . . . . . . . .  	L NEAR	0B37	CSEG
$MIF25 . . . . . . . . . . . . .  	L NEAR	0799	CSEG
$MIF252  . . . . . . . . . . . .  	L NEAR	0B4A	CSEG
$MIF254  . . . . . . . . . . . .  	L NEAR	0B53	CSEG
$MIF258  . . . . . . . . . . . .  	L NEAR	0B86	CSEG
$MIF259  . . . . . . . . . . . .  	L NEAR	0B6F	CSEG
$MIF261  . . . . . . . . . . . .  	L NEAR	0B68	CSEG
$MIF269  . . . . . . . . . . . .  	L NEAR	0B86	CSEG
$MIF27 . . . . . . . . . . . . .  	L NEAR	07A3	CSEG
$MIF270  . . . . . . . . . . . .  	L NEAR	0B82	CSEG
$MIF274  . . . . . . . . . . . .  	L NEAR	0B8E	CSEG
$MIF276  . . . . . . . . . . . .  	L NEAR	0BAD	CSEG
$MIF278  . . . . . . . . . . . .  	L NEAR	0BDB	CSEG
$MIF279  . . . . . . . . . . . .  	L NEAR	0BDB	CSEG
$MIF281  . . . . . . . . . . . .  	L NEAR	0BD7	CSEG
$MIF286  . . . . . . . . . . . .  	L NEAR	0BEE	CSEG
$MIF287  . . . . . . . . . . . .  	L NEAR	0BEE	CSEG
$MIF290  . . . . . . . . . . . .  	L NEAR	0C16	CSEG
$MIF292  . . . . . . . . . . . .  	L NEAR	0C04	CSEG
$MIF295  . . . . . . . . . . . .  	L NEAR	0C12	CSEG
$MIF299  . . . . . . . . . . . .  	L NEAR	0C34	CSEG
$MIF300  . . . . . . . . . . . .  	L NEAR	0C34	CSEG
$MIF302  . . . . . . . . . . . .  	L NEAR	0C30	CSEG
$MIF307  . . . . . . . . . . . .  	L NEAR	0C42	CSEG
$MIF309  . . . . . . . . . . . .  	L NEAR	0C4E	CSEG
$MIF314  . . . . . . . . . . . .  	L NEAR	0C6A	CSEG
$MIF317  . . . . . . . . . . . .  	L NEAR	0C88	CSEG
$MIF318  . . . . . . . . . . . .  	L NEAR	0C86	CSEG
$MIF325  . . . . . . . . . . . .  	L NEAR	0CCE	CSEG
$MIF326  . . . . . . . . . . . .  	L NEAR	0CC0	CSEG
$MIF327  . . . . . . . . . . . .  	L NEAR	0CBA	CSEG
$MIF330  . . . . . . . . . . . .  	L NEAR	0CCC	CSEG
$MIF333  . . . . . . . . . . . .  	L NEAR	0CFA	CSEG
$MIF334  . . . . . . . . . . . .  	L NEAR	0CEC	CSEG
$MIF335  . . . . . . . . . . . .  	L NEAR	0CE6	CSEG
$MIF338  . . . . . . . . . . . .  	L NEAR	0CF8	CSEG
$MIF341  . . . . . . . . . . . .  	L NEAR	0D16	CSEG
$MIF342  . . . . . . . . . . . .  	L NEAR	0D10	CSEG
$MIF345  . . . . . . . . . . . .  	L NEAR	0D22	CSEG
$MIF349  . . . . . . . . . . . .  	L NEAR	0D2E	CSEG
$MIF388  . . . . . . . . . . . .  	L NEAR	0D40	CSEG
$MIF391  . . . . . . . . . . . .  	L NEAR	0D61	CSEG
$MIF392  . . . . . . . . . . . .  	L NEAR	0D5F	CSEG
$MIF396  . . . . . . . . . . . .  	L NEAR	0D67	CSEG
$MIF93 . . . . . . . . . . . . .  	L NEAR	07ED	CSEG
$MIF94 . . . . . . . . . . . . .  	L NEAR	07D3	CSEG
$MIF97 . . . . . . . . . . . . .  	L NEAR	07E7	CSEG
$MIF98 . . . . . . . . . . . . .  	L NEAR	07E5	CSEG
$MLL149  . . . . . . . . . . . .  	L NEAR	090A	CSEG
$MLL168  . . . . . . . . . . . .  	L NEAR	0965	CSEG
$MLL178  . . . . . . . . . . . .  	L NEAR	0997	CSEG
$MLL202  . . . . . . . . . . . .  	L NEAR	0A0F	CSEG
$MLL214  . . . . . . . . . . . .  	L NEAR	0A38	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-7


$MSR175  . . . . . . . . . . . .  	L NEAR	09AD	CSEG
$MSR259  . . . . . . . . . . . .  	L NEAR	0B78	CSEG
$MXL3  . . . . . . . . . . . . .  	L NEAR	09BA	CSEG
$MXL4  . . . . . . . . . . . . .  	L NEAR	0A38	CSEG
$MXL5  . . . . . . . . . . . . .  	L NEAR	0AD3	CSEG
$M_1_FF_END  . . . . . . . . . .  	L BYTE	063A	CSEG
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	0628	CSEG
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	0624	CSEG
$M_2_FF_END  . . . . . . . . . .  	L BYTE	065B	CSEG
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	064C	CSEG
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	0648	CSEG
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
$M_ADD_CRLF  . . . . . . . . . .  	N PROC	08A7	CSEG	Length = 0017
$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	02D5	CSEG
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	02BD	CSEG
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	0265	CSEG
$M_A_00002H_END  . . . . . . . .  	L BYTE	02EB	CSEG
$M_A_00002H_MSG  . . . . . . . .  	L BYTE	02D5	CSEG
$M_A_00002H_STRUC  . . . . . . .  	L BYTE	0269	CSEG
$M_A_00003H_END  . . . . . . . .  	L BYTE	02FF	CSEG
$M_A_00003H_MSG  . . . . . . . .  	L BYTE	02EB	CSEG
$M_A_00003H_STRUC  . . . . . . .  	L BYTE	026D	CSEG
$M_A_00004H_END  . . . . . . . .  	L BYTE	0345	CSEG
$M_A_00004H_MSG  . . . . . . . .  	L BYTE	02FF	CSEG
$M_A_00004H_STRUC  . . . . . . .  	L BYTE	0271	CSEG
$M_A_00005H_END  . . . . . . . .  	L BYTE	039A	CSEG
$M_A_00005H_MSG  . . . . . . . .  	L BYTE	0345	CSEG
$M_A_00005H_STRUC  . . . . . . .  	L BYTE	0275	CSEG
$M_A_00006H_END  . . . . . . . .  	L BYTE	03CA	CSEG
$M_A_00006H_MSG  . . . . . . . .  	L BYTE	039A	CSEG
$M_A_00006H_STRUC  . . . . . . .  	L BYTE	0279	CSEG
$M_A_00007H_END  . . . . . . . .  	L BYTE	03F1	CSEG
$M_A_00007H_MSG  . . . . . . . .  	L BYTE	03CA	CSEG
$M_A_00007H_STRUC  . . . . . . .  	L BYTE	027D	CSEG
$M_A_00008H_END  . . . . . . . .  	L BYTE	0419	CSEG
$M_A_00008H_MSG  . . . . . . . .  	L BYTE	03F1	CSEG
$M_A_00008H_STRUC  . . . . . . .  	L BYTE	0281	CSEG
$M_A_00009H_END  . . . . . . . .  	L BYTE	0440	CSEG
$M_A_00009H_MSG  . . . . . . . .  	L BYTE	0419	CSEG
$M_A_00009H_STRUC  . . . . . . .  	L BYTE	0285	CSEG
$M_A_0000AH_END  . . . . . . . .  	L BYTE	0468	CSEG
$M_A_0000AH_MSG  . . . . . . . .  	L BYTE	0440	CSEG
$M_A_0000AH_STRUC  . . . . . . .  	L BYTE	0289	CSEG
$M_A_0000BH_END  . . . . . . . .  	L BYTE	0474	CSEG
$M_A_0000BH_MSG  . . . . . . . .  	L BYTE	0468	CSEG
$M_A_0000BH_STRUC  . . . . . . .  	L BYTE	028D	CSEG
$M_A_0000CH_END  . . . . . . . .  	L BYTE	0496	CSEG
$M_A_0000CH_MSG  . . . . . . . .  	L BYTE	0474	CSEG
$M_A_0000CH_STRUC  . . . . . . .  	L BYTE	0291	CSEG
$M_A_0000DH_END  . . . . . . . .  	L BYTE	04AC	CSEG
$M_A_0000DH_MSG  . . . . . . . .  	L BYTE	0496	CSEG
$M_A_0000DH_STRUC  . . . . . . .  	L BYTE	0295	CSEG
$M_A_0000EH_END  . . . . . . . .  	L BYTE	04CF	CSEG
$M_A_0000EH_MSG  . . . . . . . .  	L BYTE	04AC	CSEG
$M_A_0000EH_STRUC  . . . . . . .  	L BYTE	0299	CSEG
$M_A_0000FH_END  . . . . . . . .  	L BYTE	0509	CSEG
$M_A_0000FH_MSG  . . . . . . . .  	L BYTE	04CF	CSEG
$M_A_0000FH_STRUC  . . . . . . .  	L BYTE	029D	CSEG
$M_A_00010H_END  . . . . . . . .  	L BYTE	053B	CSEG
$M_A_00010H_MSG  . . . . . . . .  	L BYTE	0509	CSEG
$M_A_00010H_STRUC  . . . . . . .  	L BYTE	02A1	CSEG
$M_A_00011H_END  . . . . . . . .  	L BYTE	0577	CSEG
$M_A_00011H_MSG  . . . . . . . .  	L BYTE	053B	CSEG
$M_A_00011H_STRUC  . . . . . . .  	L BYTE	02A5	CSEG
$M_A_00012H_END  . . . . . . . .  	L BYTE	059F	CSEG
$M_A_00012H_MSG  . . . . . . . .  	L BYTE	0577	CSEG
$M_A_00012H_STRUC  . . . . . . .  	L BYTE	02A9	CSEG
$M_A_00013H_END  . . . . . . . .  	L BYTE	05E9	CSEG
$M_A_00013H_MSG  . . . . . . . .  	L BYTE	059F	CSEG
$M_A_00013H_STRUC  . . . . . . .  	L BYTE	02AD	CSEG
$M_A_00014H_END  . . . . . . . .  	L BYTE	0603	CSEG
$M_A_00014H_MSG  . . . . . . . .  	L BYTE	05E9	CSEG
$M_A_00014H_STRUC  . . . . . . .  	L BYTE	02B1	CSEG
$M_A_00015H_END  . . . . . . . .  	L BYTE	0612	CSEG
$M_A_00015H_MSG  . . . . . . . .  	L BYTE	0603	CSEG
$M_A_00015H_STRUC  . . . . . . .  	L BYTE	02B5	CSEG
$M_A_00016H_END  . . . . . . . .  	L BYTE	0615	CSEG
$M_A_00016H_MSG  . . . . . . . .  	L BYTE	0612	CSEG
$M_A_00016H_STRUC  . . . . . . .  	L BYTE	02B9	CSEG
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BIN2ASC_REPLACE . . . . . . .  	N PROC	0C97	CSEG	Length = 0099
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-8


$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	0000	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	0C6F	CSEG	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	0714	CSEG	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	0727	CSEG	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	0620	CSEG
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	0644	CSEG
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	0261	CSEG
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
$M_CLS_1 . . . . . . . . . . . .  	N PROC	0615	CSEG	Global	Length = 000B
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	08E2	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	083B	CSEG	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	0870	CSEG	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	094C	CSEG	Length = 00F3
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	0B94	CSEG	Length = 00BF
$M_DISPLAY_STRING  . . . . . . .  	N PROC	0800	CSEG	Length = 003B
$M_DWORD . . . . . . . . . . . .  	NUMBER	0030	
$M_END . . . . . . . . . . . . .  	NUMBER	0000	
$M_EXTPAR_TYPE . . . . . . . . .  	NUMBER	0008	
$M_EXT_CLS . . . . . . . . . . .  	NUMBER	FFFF	
$M_EXT_ERR_FLAG  . . . . . . . .  	NUMBER	FFFF	
$M_EXT_PAR_REPLACE . . . . . . .  	N PROC	0A3F	CSEG	Length = 002D
$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	0B1B	CSEG	Length = 0079
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	0C53	CSEG	Length = 001C
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	06FC	CSEG	Length = 0018
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	089E	CSEG	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	N PROC	0A6C	CSEG	Global	Length = 00A0
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	0000	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0004	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	08BE	CSEG	Length = 0024
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	N PROC	063A	CSEG	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	N PROC	065B	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	015F	CSEG	Global
$M_SECOND_THOU . . . . . . . . .  	NUMBER	0006	
$M_SERVICE . . . . . . . . . . .  	NUMBER	FFFF	
$M_SET_LEN_IN_CX . . . . . . . .  	N PROC	0B0C	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	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOMPSM.SAL - DISKCOMP SYSTEM MESSAGES                      Symbols-9


$M_VERSION_CHECK . . . . . . . .  	N PROC	0783	CSEG	Length = 002F
$M_WAIT_FOR_INPUT  . . . . . . .  	N PROC	0D30	CSEG	Length = 003C
$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
??0000 . . . . . . . . . . . . .  	L NEAR	0B04	CSEG
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  dcompsm		
@VERSION . . . . . . . . . . . .  	TEXT  510		


  11113 Source  Lines
  14842 Total   Lines
    655 Symbols

  43552 + 185792 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
