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


					PAGE	90,132			;AN000;A2
					TITLE	DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES
				;****************** START OF SPECIFICATIONS *****************************
				; MODULE NAME: DCOPYSM.SAL
				
				; DESCRIPTIVE NAME: Include the DOS system MESSAGE HANDLER in the SEGMENT
				;		    configuration expected by the modules of DISKCOPY.
				
				;FUNCTION: The common code of the DOS SYSTEM MESSAGE HANDLER is made a
				;	   part of the DISKCOPY 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 "DCOPYMS.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 DCOPYSM,NUL
				
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY 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,
				;	 DISKCOPY.SAL.
				
				; COPYRIGHT: "Version 4.00 (C)Copyright 1988 Microsoft"
				;	     "Licensed Material - Property of Microsoft  "
				;
				;****************** END OF SPECIFICATIONS *****************************
				; =  =	=  =  =  =  =  =  =  =	=  =
					INCLUDE PATHMAC.INC		;AN015;PATHGEN MACRO
			     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	;; ---------------------------------
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-3
DOS - Message Retriever - SYSTEM CONTROL file               

			     C	;;		None
			     C	;;
			     C	;; Include Files Required:
			     C	;; -----------------------
			     C	;;		MSGSERV.INC	   := All message services
			     C	;;		????		   := ????
			     C	;;
			     C	;; External Procedure References:
			     C	;; ------------------------------
			     C	;;		None
			     C	;;
			     C	;; Linkage Instructions:
			     C	;; --------------------
			     C	;;		None
			     C	;;
			     C	;; Change History:
			     C	;; ---------------
			     C	;;		CREATED 	March, 1987	RPS
			     C	;;
			     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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-4
DOS - Message Retriever - SYSTEM CONTROL file               

 = 0000                      C	  Char_Field_Char	EQU	0      ;;a0000000
 = 0010                      C	  Char_Field_ASCIIZ	EQU	10h    ;;a0010000
			     C	
 = 0001                      C	  Unsgn_Bin_Type	EQU	01h    ;;axxx0001 - Unsigned Binary to Decimal character
 = 0011                      C	  Unsgn_Bin_Byte	EQU	11h    ;;a0010001
 = 0021                      C	  Unsgn_Bin_Word	EQU	21h    ;;a0100001
 = 0031                      C	  Unsgn_Bin_DWord	EQU	31h    ;;a0110001
			     C	
 = 0002                      C	  Sgn_Bin_Type		EQU	02h    ;;axxx0010 - Signed Binary to Decimal character
 = 0012                      C	  Sgn_Bin_Byte		EQU	12h    ;;a0010010
 = 0022                      C	  Sgn_Bin_Word		EQU	22h    ;;a0100010
 = 0032                      C	  Sgn_Bin_DWord 	EQU	32h    ;;a0110010
			     C	
 = 0003                      C	  Bin_Hex_Type		EQU	03h    ;;axxx0011 - Unsigned Binary to Hexidecimal character
 = 0013                      C	  Bin_Hex_Byte		EQU	13h    ;;a0010011
 = 0023                      C	  Bin_Hex_Word		EQU	23h    ;;a0100011
 = 0033                      C	  Bin_Hex_DWord 	EQU	33h    ;;a0110011
			     C	
 = 0004                      C	  Date_Type		EQU	04h    ;;axxx0100 - Date to character using current country format
 = 0014                      C	  Date_MD		EQU	14h    ;;a0010100
 = 0024                      C	  Date_MDY_2		EQU	24h    ;;a0100100
 = 0034                      C	  Date_MDY_4		EQU	34h    ;;a0110100
			     C	
 = 0005                      C	  Time_Cty_Type 	EQU	05h    ;;axxx0101 - Time to character using current country format
 = 0005                      C	  Time_HHMM_Cty 	EQU	05h    ;;a0000101
 = 0015                      C	  Time_HHMMSS_Cty	EQU	15h    ;;a0010101
 = 0025                      C	  Time_HHMMSSHH_Cty	EQU	25h    ;;a0100101
			     C	
 = 0006                      C	  Time_24_Type		EQU	06h    ;;axxx0110 - Time to character using 24 hour format
 = 0006                      C	  Time_HHMM_24		EQU	06h    ;;a0000110
 = 0016                      C	  Time_HHMMSS_24	EQU	16h    ;;a0010110
 = 0026                      C	  Time_HHMMSSHH_24	EQU	26h    ;;a0100110
			     C	
 = 0008                      C	  $M_EXTPAR_Type	EQU	08h    ;;axxx1000 - Special case for extended parse replace format
			     C	
 = 0000                      C	NO_INPUT		EQU	00H    ;; No input characters
 = 0001                      C	DOS_KEYB_INP		EQU	01H    ;; DOS INT 21H - AH=01H := Keyboard Input
 = 0007                      C	DOS_DIR_CON_INP 	EQU	07H    ;; DOS INT 21H - AH=07H := Direct Console Input Without Echo
 = 0008                      C	DOS_CON_INP		EQU	08H    ;; DOS INT 21H - AH=08H := Console Input Without Echo (Check 
				CTL-BK)
 = 000A                      C	DOS_BUF_KEYB_INP	EQU	0AH    ;; DOS INT 21H - AH=0AH := Buffered Keyboard Input
 = 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
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-5
DOS - Message Retriever - SYSTEM CONTROL file               

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

 = FFFF                      C	$M_EXT_CLS		 =	TRUE   ;;
 = FFFF                      C	$M_PAR_CLS		 =	TRUE   ;;
			     C					       ;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;	$M_POPF 	     Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	
			     C	$M_POPF    MACRO
			     C		   LOCAL   $M_MYRET
			     C		   JMP	   $+3
			     C	$M_MYRET   LABEL   NEAR
			     C		   IRET
			     C		   PUSH    CS
			     C		   CALL    $M_MYRET
			     C	ENDM
			     C	
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;
			     C	;;  Message Retreiver requests
			     C	;;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C					       ;
			     C	MSG_UTILNAME  Macro   utilname	       ;
			     C					       ;
			     C	   INCLUDE &utilname.CTL	       ;  Include the control file for the utility
			     C	   $M_STRUC = TRUE		       ;
			     C	   INCLUDE MSGSERV.ASM		       ;  Get structure definitions
			     C					       ;
			     C	ENDM				       ;
			     C					       ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;;	MSG_SERVICES		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C						  ;
			     C	MSG_SERVICES Macro   varlist		  ;  MACRO used in source routine
			     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>
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-7
DOS - Message Retriever - SYSTEM CONTROL file               

			     C							       ; For each service predefined
			     C	      IRP  serv2,<SETSTDIO,NOCHECKSTDIN,NOCHECKSTDOUT,DISK_PROC>
			     C						    ;AN003; IF it IS a service (defined above)
			     C		 IFDIF <var2>,<serv2>
			     C		 ELSE				  ;
			     C		   serv2 = TRUE 		   ;	     Let the assembler know about the service
			     C		   $M_SERVICE = TRUE		  ;	    Let the macro know it was a service
			     C		   $M_INCLUDE = FALSE		  ;	    Let the macro know it wasn't a class
			     C		 ENDIF				  ;	  ENDIF
			     C	      ENDM				  ;	NEXT service
			     C	   ENDM 				  ;  NEXT variable
			     C	ENDM					  ;
			     C						  ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_INC		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_INC	Macro	ext				 ;
			     C							 ;
			     C	INCLUDE &ext					 ;
			     C							 ;
			     C	ENDM						 ;
			     C							 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_BUILD_PTRS	Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_BUILD_PTRS Macro nummsg			 ;
			     C							 ;
			     C	    $M_INDEX =	    0				 ;
			     C	IF COMR 				     ; IF this is resident COMMAND.COM
			     C	    $M_MAKE_COMR			     ;
			     C	ELSE						 ; ELSE
			     C	  IF COMT				     ;	 IF this is transient COMMAND.COM
			     C	    $M_MAKE_COMT			     ;
			     C	  ELSE						 ;   ELSE
			     C							 ;
			     C	    $M_INDEX =	    0				 ;
			     C	    $M_COUNT =	    0				 ;     Build normal utilities
			     C							 ;
			     C	    REPT    nummsg				 ;
			     C	    $M_COUNT =	    $M_COUNT + 1		 ;
			     C	    $M_MAKE %$M_COUNT				 ;
			     C	    ENDM					 ;
			     C	  ENDIF 					 ;
			     C	ENDIF						 ;
			     C	ENDM						 ;
			     C							 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_MAKE		Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_MAKE Macro $m_append 			 ;
			     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							 ;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-8
DOS - Message Retriever - SYSTEM CONTROL file               

			     C	    CALL    $M_CLS_7				 ;  Get addressibilty to class E
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	ENDM						 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C	;; $M_MAKE_COMT     Macro
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
			     C							 ;
			     C	$M_MAKE_COMT  macro			     ;
			     C							 ;
			     C	    CALL    $M_CLS_8				 ;  Get addressibilty to class A
			     C	    MOV     WORD PTR $M_RT.$M_CLASS_ADDRS+$M_INDEX,DI ;
			     C	$M_INDEX =  $M_INDEX + 4			 ;  Set next available table location
			     C							 ;
			     C	ENDM						 ;
			     C	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
					MSG_UTILNAME <DISKCOPY> 	;AN000;IDENTIFY THE COMPONENT
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-9
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
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-10
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
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-11
DEFINITION OF MESSAGES			;                                  

				;	   $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 DISKCOPY Utility                   "
				;(deleted ;AN010;) INCLUDE COPYRIGH.INC ;(this is now being done my MSG_SERVICES)
					   HEADER <MESSAGE HANDLER CONTROL BLOCKS> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-12
MESSAGE HANDLER CONTROL BLOCKS			;                          

					   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
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-13
MESSAGE HANDLER CONTROL BLOCKS			;                          

 = 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 DCOPYMS.INC	   ;AN000;DEFINE THE MESSAGES, AND CONTROL BLOCKS
			     C	;:util DISKCOPY 	    ;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
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-14
MESSAGE HANDLER CONTROL BLOCKS			;                          

			     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	;:use 1 COMMON1 	    ;MSG 1 is always "Incorrect DOS version"
			     C	;;
			     C	;:def 2 CR,LF
			     C	;
			     C	;:use 3 PARSE10 	    ;CR,LF,"Invalid parameter",CR,LF
			     C	;
			     C	;:def 4 "Do not specify filename(s)",CR,LF
			     C	;"Command Format: DISKCOPY d: d: [/1]",CR,LF
			     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 DISKCOPY to or from",CR,LF
			     C	;"a network drive",CR,LF
			     C	;
			     C	;:def 7 CR,LF,"Formatting while copying",CR,LF
			     C	;
			     C	;:def 8 CR,LF,"Insert SOURCE diskette in drive %1:",CR,LF
			     C	;
			     C	;:def 9 CR,LF,"Insert TARGET diskette in drive %1:",CR,LF
			     C	;
			     C	;:def 10 "Make sure a diskette is inserted into",CR,LF
			     C	;"the drive and the door is closed",CR,LF
			     C	;
			     C	;:def 11 CR,LF,"Target diskette may be unusable",CR,LF
			     C	;
			     C	;:def 12 CR,LF,"Target diskette unusable",CR,LF
			     C	;
			     C	;:use 13 EXTEND21	    ;CR,LF,Drive not ready",CR,LF
			     C	;
			     C	;:use 14 EXTEND19  ;CR,LF,"Attempt to write to write-protected diskette",CR,LF
			     C	;
			     C	;:use 15 COMMON28	    ;CR,LF,"Press any key to continue . . .",CR,LF
			     C	;
			     C	;:def 16 CR,LF,"Copy another diskette (Y/N)? "
			     C	;
			     C	;:def 17 CR,LF,"Copying %1 tracks",CR,LF
			     C	;"%2 Sectors/Track, %3 Side(s)",CR,LF
			     C	;
			     C	;:def 18 CR,LF,"Drive types or diskette types",CR,LF
			     C	;"not compatible",CR,LF
			     C	;
			     C	;:def 19 CR,LF,"Unrecoverable read error on drive %1",CR,LF
			     C	;"Side %2, track %3",CR,LF
			     C	;
			     C	;:def 20 CR,LF,"Unrecoverable write error on drive %1",CR,LF
			     C	;"Side %2, track %3",CR,LF
			     C	;
			     C	;:def 21 CR,LF,"Copy process ended",CR,LF
			     C	;
			     C	;:def 22 CR,LF,"SOURCE diskette bad or incompatible"
			     C	;
			     C	;:def 23 CR,LF,"TARGET diskette bad or incompatible"
			     C	;
			     C	;:use 25 EXTEND8	    ;CR,LF,"Insufficient memory",CR,LF
			     C	;
			     C	;:use 26 COMMON36	    ;"Volume Serial Number is %1-%2",CR,LF
			     C	;
			     C	;:end
			     C	; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
			     C	;	    $SALUT (0,13,18,22) ;				  ;AN000;
			     C	;THIS MODULE IS INCLUDED IN DCOPYSM.SAL.
			     C	; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
			     C		    HEADER <MESSAGE DESCRIPTORS FOR SPECIFIC MESSAGES> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-15
MESSAGE DESCRIPTORS FOR SPECIFIC MESSAGES			;               

			     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
 = 0041                      C	LETTER_A    EQU  "A" ;AN000;DEFAULT DRIVE ID
 = 0030                      C	PAD_0	    EQU  "0" ;AN001;PAD CHAR FOR NUMERIC FIXED LEN FIELD
 = 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	
			     C	;		DOS FUNCTIONS REFERENCED:
 = 00C0                      C	CLEAR_BUF   EQU  0C0H ;AN007;CLEAR KEYBOARD BUFFER BEFORE INPUT
 = 0008                      C	KEY_IN	    EQU  08H ;AN000;WAIT FOR STD INPUT, NO ECHO
			     C			     ;OUTPUT: AL = CHAR FROM KEYBOARD
			     C			     ;CTL-BREAK IS CHECKED FOR
			     C	
 = 0001                      C	KEY_IN_ECHO EQU  01H ;AN000;WAIT FOR STD INPUT, ECHO RESPONSE
			     C			     ;OUTPUT: AL = CHAR FROM KEYBOARD
			     C			     ;CTL-BREAK IS CHECKED FOR
			     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	
 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 DISKCOPY UTILITY
			     C	
			     C			     ;CR,LF
 0029  0200                  C	MSGNUM_CR_LF  MSG_DESC <2> ;AN000;
 002B  0100                  C	
 002D  0000                  C	
 002F  0000                  C	
 0031  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_CR_LF ;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: DISKCOPY d: d: [/1]",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			     ;:def 5 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			     ;CR,LF,"Cannot DISKCOPY 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			     ;CR,LF,"Formatting while copying",CR,LF
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-16
MESSAGE DESCRIPTORS FOR SPECIFIC MESSAGES			;               

 005B  0700                  C	MSGNUM_FORMATTING MSG_DESC <7> ;AN000;
 005D  0100                  C	
 005F  0000                  C	
 0061  0000                  C	
 0063  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_FORMATTING ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Insert SOURCE diskette in drive %1:",CR,LF
 0065  0800                  C	MSGNUM_LOAD_SOURCE MSG_DESC <8,,SUBLIST_8,ONE_SUBS> ;AN000;
 0067  0100                  C	
 0069  006F R                C	
 006B  0100                  C	
 006D  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_LOAD_SOURCE ;AN000;
			     C	
 006F  0B                    C	SUBLIST_8  SUBLIST <,,ASCII_DRV1_ID,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_CH,SF_CHAR>,MAX_0,MIN_1> ;A
				N000;
 0070  00                    C	
 0071  007A R                C	
 0073  0000                  C	
 0075  01                    C	
 0076  00                    C	
 0077  00                    C	
 0078  01                    C	
 0079  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_8 ;AN000;
			     C	
 007A  40                    C	ASCII_DRV1_ID DB LETTER_A - BYTE;AN000;
			     C		    PUBLIC ASCII_DRV1_ID ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Insert TARGET diskette in drive %1:",CR,LF
 007B  0900                  C	MSGNUM_LOAD_TARGET MSG_DESC <9,,SUBLIST_9,ONE_SUBS> ;AN000;
 007D  0100                  C	
 007F  0085 R                C	
 0081  0100                  C	
 0083  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_LOAD_TARGET ;AN000;
			     C	
 0085  0B                    C	SUBLIST_9  SUBLIST <,,ASCII_DRV2_ID,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_CH,SF_CHAR>,MAX_0,MIN_1> ;A
				N000;
 0086  00                    C	
 0087  0090 R                C	
 0089  0000                  C	
 008B  01                    C	
 008C  00                    C	
 008D  00                    C	
 008E  01                    C	
 008F  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_9 ;AN000;
			     C	
 0090  40                    C	ASCII_DRV2_ID DB LETTER_A - BYTE ;AN000;A:=1, B:=1, ETC
			     C		    PUBLIC ASCII_DRV2_ID ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;:def 10 "Make sure a diskette is inserted into",CR,LF
			     C			     ;"the drive and the door is closed",CR,LF
 0091  0A00                  C	MSGNUM_CLOSE_DOOR MSG_DESC <10> ;AN004;
 0093  0100                  C	
 0095  0000                  C	
 0097  0000                  C	
 0099  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_CLOSE_DOOR ;AN004;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Target diskette may be unusable",CR,LF
 009B  0B00                  C	MSGNUM_TARGET_MB_UNUSABLE MSG_DESC <11> ;AN000;
 009D  0100                  C	
 009F  0000                  C	
 00A1  0000                  C	
 00A3  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_TARGET_MB_UNUSABLE ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Target diskette unusable",CR,LF
 00A5  0C00                  C	MSGNUM_TARGET_UNUSABLE MSG_DESC <12> ;AN000;
 00A7  0100                  C	
 00A9  0000                  C	
 00AB  0000                  C	
 00AD  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_TARGET_UNUSABLE ;AN000;
			     C	; = = = = = = = = = = = = = = = =
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-17
MESSAGE DESCRIPTORS FOR SPECIFIC MESSAGES			;               

			     C			     ;CR,LF,"Drive not ready - %0",CR,LF
 00AF  0D00                  C	MSGNUM_GET_READY MSG_DESC <13,,SUBLIST_13,ONE_SUBS> ;AN000;
 00B1  0100                  C	
 00B3  00B9 R                C	
 00B5  0100                  C	
 00B7  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_GET_READY ;AN000;
			     C	
 00B9  0B                    C	SUBLIST_13  SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_0,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1
				> ;AN000;
 00BA  00                    C	
 00BB  0152 R                C	
 00BD  0000                  C	
 00BF  00                    C	
 00C0  10                    C	
 00C1  00                    C	
 00C2  01                    C	
 00C3  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_13 ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Attempt to write to write-protected diskette",CR,LF
 00C4  0E00                  C	MSGNUM_WRITE_PROTECT MSG_DESC <14> ;AN000;
 00C6  0100                  C	
 00C8  0000                  C	
 00CA  0000                  C	
 00CC  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_WRITE_PROTECT ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;"Press any key to continue . . .",CR,LF
 00CE  0F00                  C	MSGNUM_STRIKE MSG_DESC <15,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN)> ;AN007;
 00D0  0100                  C	
 00D2  0000                  C	
 00D4  0000                  C	
 00D6  C8FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_STRIKE ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Copy another diskette (Y/N)? "
			     C			     ; AND READ RESPONSE TO AL
			     C			     ; (EVENTUALLY EXPECTED IN "USER_INPUT")
 00D8  1000                  C	MSGNUM_COPY_ANOTHER MSG_DESC <16,,,,(CLASS_A SHL 8) OR (CLEAR_BUF + KEY_IN_ECHO)> ;AN007;
 00DA  0100                  C	
 00DC  0000                  C	
 00DE  0000                  C	
 00E0  C1FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_COPY_ANOTHER ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Copying %1 tracks",CR,LF
			     C			     ;"%2 Sectors/Track, %3 Side(s)",CR,LF
 00E2  1100                  C	MSGNUM_COPYING MSG_DESC <17,,SUBLIST_17A,THREE_SUBS> ;AN000;
 00E4  0100                  C	
 00E6  00EC R                C	
 00E8  0300                  C	
 00EA  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_COPYING ;AN000;
			     C	
 00EC  0B                    C	SUBLIST_17A SUBLIST <,,MSG_TRACKS,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;
				AN000;
 00ED  00                    C	
 00EE  010D R                C	
 00F0  0000                  C	
 00F2  01                    C	
 00F3  21                    C	
 00F4  00                    C	
 00F5  01                    C	
 00F6  20                    C	
			     C	
 00F7  0B                    C	SUBLIST_17B SUBLIST <,,MSG_SECTRK,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,MIN_1> ;
				AN000;
 00F8  00                    C	
 00F9  010F R                C	
 00FB  0000                  C	
 00FD  02                    C	
 00FE  21                    C	
 00FF  00                    C	
 0100  01                    C	
 0101  20                    C	
			     C	
 0102  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;
 0103  00                    C	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-18
MESSAGE DESCRIPTORS FOR SPECIFIC MESSAGES			;               

 0104  0111 R                C	
 0106  0000                  C	
 0108  03                    C	
 0109  21                    C	
 010A  00                    C	
 010B  01                    C	
 010C  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_17A ;AN000;
			     C		    PUBLIC SUBLIST_17B ;AN000;
			     C		    PUBLIC SUBLIST_17C ;AN000;
			     C	
 010D  0000                  C	MSG_TRACKS  DW	 0   ;AN000;NUMBER OF TRACKS
 010F  0000                  C	MSG_SECTRK  DW	 0   ;AN000;NUMBER OF SECTORS PER TRACK
 0111  0000                  C	MSG_SIDES   DW	 0   ;AN000;NUMBER OF SIDES
			     C		    PUBLIC MSG_TRACKS ;AN000;
			     C		    PUBLIC MSG_SECTRK ;AN000;
			     C		    PUBLIC MSG_SIDES ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Drive types or diskette types",CR,LF
			     C			     ;"not compatible",CR,LF
 0113  1200                  C	MSGNUM_NOT_COMPATIBLE MSG_DESC <18> ;AN000;
 0115  0100                  C	
 0117  0000                  C	
 0119  0000                  C	
 011B  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_NOT_COMPATIBLE ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Unrecoverable read error on drive %1",CR,LF
			     C			     ;"Side %2, track %3",CR,LF
 011D  1300                  C	MSGNUM_HARD_ERROR_READ MSG_DESC <19,,SUBLIST_19C,THREE_SUBS> ;AN000;
 011F  0100                  C	
 0121  0131 R                C	
 0123  0300                  C	
 0125  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_HARD_ERROR_READ ;AN000;
			     C	
			     C			     ;CR,LF,"Unrecoverable write error on drive %1",CR,LF
			     C			     ;"Side %2, track %3",CR,LF
 0127  1400                  C	MSGNUM_HARD_ERROR_WRITE MSG_DESC <20,,SUBLIST_19C,THREE_SUBS> ;AN000;
 0129  0100                  C	
 012B  0131 R                C	
 012D  0300                  C	
 012F  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_HARD_ERROR_WRITE ;AN000;
			     C	
 0131  0B                    C	SUBLIST_19C SUBLIST <,,DRIVE_LETTER,FILL_SEG,PC_ID_1,SF_BITS<SF_LEFT,,SF_ASCIIZ,SF_CHAR>,MAX_0,MIN_1
				> ;AN000;
 0132  00                    C	
 0133  0152 R                C	
 0135  0000                  C	
 0137  01                    C	
 0138  10                    C	
 0139  00                    C	
 013A  01                    C	
 013B  20                    C	
			     C	
 013C  0B                    C	SUBLIST_19D SUBLIST <,,ERROR_SIDE_NUMBER,FILL_SEG,PC_ID_2,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,M
				IN_1> ;AN000;
 013D  00                    C	
 013E  0155 R                C	
 0140  0000                  C	
 0142  02                    C	
 0143  21                    C	
 0144  00                    C	
 0145  01                    C	
 0146  20                    C	
			     C	
 0147  0B                    C	SUBLIST_19E SUBLIST <,,ERROR_TRACK_NUMBER,FILL_SEG,PC_ID_3,SF_BITS<SF_LEFT,,SF_WORD,SF_UN_BD>,MAX_0,
				MIN_1> ;AN000;
 0148  00                    C	
 0149  0157 R                C	
 014B  0000                  C	
 014D  03                    C	
 014E  21                    C	
 014F  00                    C	
 0150  01                    C	
 0151  20                    C	
			     C	
			     C		    PUBLIC SUBLIST_19C ;AN000;
			     C		    PUBLIC SUBLIST_19D ;AN000;
			     C		    PUBLIC SUBLIST_19E ;AN000;
			     C	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-19
MESSAGE DESCRIPTORS FOR SPECIFIC MESSAGES			;               

 0152  41 3A 00              C	DRIVE_LETTER DB  LETTER_A,":",NULL ;AN000;
			     C		    PUBLIC DRIVE_LETTER ;AN000;
			     C	
 0155  0000                  C	ERROR_SIDE_NUMBER DW ? ;AN000;
			     C		    PUBLIC ERROR_SIDE_NUMBER ;AN000;
			     C	
 0157  0000                  C	ERROR_TRACK_NUMBER DW ? ;AN000;
			     C		    PUBLIC ERROR_TRACK_NUMBER ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Copy process ended",CR,LF
 0159  1500                  C	MSGNUM_FATAL_ERROR MSG_DESC <21> ;AN000;
 015B  0100                  C	
 015D  0000                  C	
 015F  0000                  C	
 0161  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_FATAL_ERROR ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"SOURCE diskette bad or incompatible"
 0163  1600                  C	MSGNUM_BAD_SOURCE  MSG_DESC <22> ;AN000;
 0165  0100                  C	
 0167  0000                  C	
 0169  0000                  C	
 016B  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_BAD_SOURCE ;AN000;
			     C	
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"TARGET diskette bad or incompatible"
 016D  1700                  C	MSGNUM_BAD_TARGET MSG_DESC <23> ;AN000;
 016F  0100                  C	
 0171  0000                  C	
 0173  0000                  C	
 0175  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_BAD_TARGET ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;CR,LF,"Insufficient memory",CR,LF
 0177  1900                  C	MSGNUM_UNSUF_MEMORY MSG_DESC <25> ;AN000;
 0179  0100                  C	
 017B  0000                  C	
 017D  0000                  C	
 017F  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_UNSUF_MEMORY ;AN000;
			     C	; = = = = = = = = = = = = = = = =
			     C			     ;"Volume Serial Number is %1-%2"
 0181  1A00                  C	MSGNUM_SERNO MSG_DESC <26,,SUBLIST_26A,TWO_SUBS> ;AN001;
 0183  0100                  C	
 0185  018B R                C	
 0187  0200                  C	
 0189  00FF                  C	
			     C	
			     C		    PUBLIC MSGNUM_SERNO ;AN001;
			     C	
 018B  0B                    C	SUBLIST_26A  SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_1,SF_BITS<SF_RIGHT,,SF_WORD,SF_UN_BH>,DWORD,DWORD,PA
				D_0> ;AN001;
 018C  00                    C	
 018D  0000                  C	
 018F  0000                  C	
 0191  01                    C	
 0192  A3                    C	
 0193  04                    C	
 0194  04                    C	
 0195  30                    C	
			     C	
 0196  0B                    C	SUBLIST_26B  SUBLIST <,,FILL_OFF,FILL_SEG,PC_ID_2,SF_BITS<SF_RIGHT,,SF_WORD,SF_UN_BH>,DWORD,DWORD,PA
				D_0> ;AN001;
 0197  00                    C	
 0198  0000                  C	
 019A  0000                  C	
 019C  02                    C	
 019D  A3                    C	
 019E  04                    C	
 019F  04                    C	
 01A0  30                    C	
			     C	
			     C		    PUBLIC SUBLIST_26A,SUBLIST_26B ;AN001;
			     C	; = = = = = = = = = = = = = = = =
			     C	;end of DCOPYMS.INC
			     C	
					   HEADER <MESSAGE DATA AREAS> ;AN000;
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-20
MESSAGE DATA AREAS			;                                      

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

 01A1                        C1	      $M_RT   LABEL   BYTE				     ;;AN000;;
 01A1  00000000              C1	      $M_RES_ADDRS <>					     ;;AN000;; Resident addresses
 01A5  00000000              C1	
 01A9  00000000              C1	
 01AD  FFFFFFFF              C1	
 01B1  00000000              C1	
 01B5  00000000              C1	
 01B9  FFFFFFFF              C1	
 01BD  00000000              C1	
 01C1  00000000              C1	
 01C5  FFFFFFFF              C1	
 01C9  FFFFFFFF              C1	
 01CD  00000000              C1	
 01D1  FFFFFFFF              C1	
 01D5  00000000              C1	
 01D9  0000                  C1	
 01DB  00                    C1	
 01DC  0001[                 C1	
 01DE  00                    C1	
 01DF  0000                  C1	
 01E1  0000                  C1	
 01E3  0A00                  C1	
 01E5  0040[                 C1	
 0225  24                    C1	
 0226  4D 53 20 44 4F 53     C1		DB	"MS DOS Version 4.00 (C)Copyright 1988 Microsoft Corp"
 025A  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
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-22
SYSTEM MESSAGE HANDLER			;                                  

					   PUBLIC SYSLOADMSG	   ;AN000;
					   PUBLIC SYSDISPMSG	   ;AN000;
				
					   MSG_SERVICES <DISKCOPY.CL1,DISKCOPY.CL2,DISKCOPY.CLA> ;AN000;MSG TEXT
 0285                        C3	$M_CLASS_1_STRUC LABEL BYTE
 0285  01                    C3	        $M_CLASS_ID <001H,EXPECTED_VERSION,Class_1_MessageCount>
 0286  0400                  C3	
 0288  01                    C3	
 0289                        C3	$M_1_FF_STRUC LABEL BYTE
 0289  FFFF                  C3	        $M_ID <0FFFFH,$M_1_FF_MSG-$M_1_FF_STRUC>
 028B  0400                  C3	
 028D                        C3	$M_1_FF_MSG LABEL BYTE
 028D  11                    C3	        DB      $M_1_FF_END-$M_1_FF_MSG-1
 028E  45 78 74 65 6E 64     C3	        DB      "Extended Error %1"
 029F                        C3	$M_1_FF_END LABEL BYTE
 029F                        C3	$M_MSGSERV_1 PROC NEAR
 029F  0E                    C3	        PUSH    CS
 02A0  07                    C3	        POP     ES
 02A1  8D 3E 0285 R          C3	        LEA     DI,$M_CLASS_1_STRUC
 02A5  83 C1 20              C3	        ADD     CX,$-$M_CLASS_1_STRUC
 02A8  C3                    C3	        RET
 02A9                        C3	$M_MSGSERV_1 Endp
 02A9                        C3	$M_CLASS_2_STRUC LABEL BYTE
 02A9  02                    C3	        $M_CLASS_ID <002H,EXPECTED_VERSION,Class_2_MessageCount>
 02AA  0400                  C3	
 02AC  01                    C3	
 02AD                        C3	$M_2_FF_STRUC LABEL BYTE
 02AD  FFFF                  C3	        $M_ID <0FFFFH,$M_2_FF_MSG-$M_2_FF_STRUC>
 02AF  0400                  C3	
 02B1                        C3	$M_2_FF_MSG LABEL BYTE
 02B1  0E                    C3	        DB      $M_2_FF_END-$M_2_FF_MSG-1
 02B2  50 61 72 73 65 20     C3	        DB      "Parse Error %1"
 02C0                        C3	$M_2_FF_END LABEL BYTE
 02C0                        C3	$M_MSGSERV_2 PROC NEAR
 02C0  0E                    C3	        PUSH    CS
 02C1  07                    C3	        POP     ES
 02C2  8D 3E 02A9 R          C3	        LEA     DI,$M_CLASS_2_STRUC
 02C6  83 C1 1D              C3	        ADD     CX,$-$M_CLASS_2_STRUC
 02C9  C3                    C3	        RET
 02CA                        C3	$M_MSGSERV_2 Endp
 02CA                        C3	$M_CLASS_A_STRUC LABEL BYTE
 02CA  FF                    C3	        $M_CLASS_ID <0FFH,EXPECTED_VERSION,Class_A_MessageCount>
 02CB  0400                  C3	
 02CD  19                    C3	
 02CE                        C3	$M_A_00001H_STRUC LABEL BYTE
 02CE  0100                  C3	        $M_ID   <00001H,$M_A_00001H_MSG-$M_A_00001H_STRUC>
 02D0  6400                  C3	
 02D2                        C3	$M_A_00002H_STRUC LABEL BYTE
 02D2  0200                  C3	        $M_ID   <00002H,$M_A_00002H_MSG-$M_A_00002H_STRUC>
 02D4  7800                  C3	
 02D6                        C3	$M_A_00003H_STRUC LABEL BYTE
 02D6  0300                  C3	        $M_ID   <00003H,$M_A_00003H_MSG-$M_A_00003H_STRUC>
 02D8  7700                  C3	
 02DA                        C3	$M_A_00004H_STRUC LABEL BYTE
 02DA  0400                  C3	        $M_ID   <00004H,$M_A_00004H_MSG-$M_A_00004H_STRUC>
 02DC  8700                  C3	
 02DE                        C3	$M_A_00005H_STRUC LABEL BYTE
 02DE  0500                  C3	        $M_ID   <00005H,$M_A_00005H_MSG-$M_A_00005H_STRUC>
 02E0  C500                  C3	
 02E2                        C3	$M_A_00006H_STRUC LABEL BYTE
 02E2  0600                  C3	        $M_ID   <00006H,$M_A_00006H_MSG-$M_A_00006H_STRUC>
 02E4  1601                  C3	
 02E6                        C3	$M_A_00007H_STRUC LABEL BYTE
 02E6  0700                  C3	        $M_ID   <00007H,$M_A_00007H_MSG-$M_A_00007H_STRUC>
 02E8  4201                  C3	
 02EA                        C3	$M_A_00008H_STRUC LABEL BYTE
 02EA  0800                  C3	        $M_ID   <00008H,$M_A_00008H_MSG-$M_A_00008H_STRUC>
 02EC  5B01                  C3	
 02EE                        C3	$M_A_00009H_STRUC LABEL BYTE
 02EE  0900                  C3	        $M_ID   <00009H,$M_A_00009H_MSG-$M_A_00009H_STRUC>
 02F0  7F01                  C3	
 02F2                        C3	$M_A_0000AH_STRUC LABEL BYTE
 02F2  0A00                  C3	        $M_ID   <0000AH,$M_A_0000AH_MSG-$M_A_0000AH_STRUC>
 02F4  A301                  C3	
 02F6                        C3	$M_A_0000BH_STRUC LABEL BYTE
 02F6  0B00                  C3	        $M_ID   <0000BH,$M_A_0000BH_MSG-$M_A_0000BH_STRUC>
 02F8  E901                  C3	
 02FA                        C3	$M_A_0000CH_STRUC LABEL BYTE
 02FA  0C00                  C3	        $M_ID   <0000CH,$M_A_0000CH_MSG-$M_A_0000CH_STRUC>
 02FC  0902                  C3	
 02FE                        C3	$M_A_0000DH_STRUC LABEL BYTE
 02FE  0D00                  C3	        $M_ID   <0000DH,$M_A_0000DH_MSG-$M_A_0000DH_STRUC>
 0300  2202                  C3	
 0302                        C3	$M_A_0000EH_STRUC LABEL BYTE
 0302  0E00                  C3	        $M_ID   <0000EH,$M_A_0000EH_MSG-$M_A_0000EH_STRUC>
 0304  2A02                  C3	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-23
SYSTEM MESSAGE HANDLER			;                                  

 0306                        C3	$M_A_0000FH_STRUC LABEL BYTE
 0306  0F00                  C3	        $M_ID   <0000FH,$M_A_0000FH_MSG-$M_A_0000FH_STRUC>
 0308  3C02                  C3	
 030A                        C3	$M_A_00010H_STRUC LABEL BYTE
 030A  1000                  C3	        $M_ID   <00010H,$M_A_00010H_MSG-$M_A_00010H_STRUC>
 030C  5A02                  C3	
 030E                        C3	$M_A_00011H_STRUC LABEL BYTE
 030E  1100                  C3	        $M_ID   <00011H,$M_A_00011H_MSG-$M_A_00011H_STRUC>
 0310  7602                  C3	
 0312                        C3	$M_A_00012H_STRUC LABEL BYTE
 0312  1200                  C3	        $M_ID   <00012H,$M_A_00012H_MSG-$M_A_00012H_STRUC>
 0314  A602                  C3	
 0316                        C3	$M_A_00013H_STRUC LABEL BYTE
 0316  1300                  C3	        $M_ID   <00013H,$M_A_00013H_MSG-$M_A_00013H_STRUC>
 0318  D402                  C3	
 031A                        C3	$M_A_00014H_STRUC LABEL BYTE
 031A  1400                  C3	        $M_ID   <00014H,$M_A_00014H_MSG-$M_A_00014H_STRUC>
 031C  0C03                  C3	
 031E                        C3	$M_A_00015H_STRUC LABEL BYTE
 031E  1500                  C3	        $M_ID   <00015H,$M_A_00015H_MSG-$M_A_00015H_STRUC>
 0320  4503                  C3	
 0322                        C3	$M_A_00016H_STRUC LABEL BYTE
 0322  1600                  C3	        $M_ID   <00016H,$M_A_00016H_MSG-$M_A_00016H_STRUC>
 0324  5803                  C3	
 0326                        C3	$M_A_00017H_STRUC LABEL BYTE
 0326  1700                  C3	        $M_ID   <00017H,$M_A_00017H_MSG-$M_A_00017H_STRUC>
 0328  7A03                  C3	
 032A                        C3	$M_A_00019H_STRUC LABEL BYTE
 032A  1900                  C3	        $M_ID   <00019H,$M_A_00019H_MSG-$M_A_00019H_STRUC>
 032C  9C03                  C3	
 032E                        C3	$M_A_0001AH_STRUC LABEL BYTE
 032E  1A00                  C3	        $M_ID   <0001AH,$M_A_0001AH_MSG-$M_A_0001AH_STRUC>
 0330  AE03                  C3	
 0332                        C3	$M_A_00001H_MSG LABEL BYTE
 0332  17                    C3	        DB      $M_A_00001H_END-$M_A_00001H_MSG-1
 0333  49 6E 63 6F 72 72     C3	        DB      "Incorrect DOS version",CR,LF
 034A                        C3	$M_A_00001H_END LABEL BYTE
 034A                        C3	$M_A_00002H_MSG LABEL BYTE
 034A  02                    C3	        DB      $M_A_00002H_END-$M_A_00002H_MSG-1
 034B  0D 0A                 C3	        DB      CR,LF
 034D                        C3	$M_A_00002H_END LABEL BYTE
 034D                        C3	$M_A_00003H_MSG LABEL BYTE
 034D  13                    C3	        DB      $M_A_00003H_END-$M_A_00003H_MSG-1
 034E  49 6E 76 61 6C 69     C3	        DB      "Invalid parameter",CR,LF
 0361                        C3	$M_A_00003H_END LABEL BYTE
 0361                        C3	$M_A_00004H_MSG LABEL BYTE
 0361  41                    C3	        DB      $M_A_00004H_END-$M_A_00004H_MSG-1
 0362  44 6F 20 6E 6F 74     C3	        DB      "Do not specify filename(s)",CR,LF
 037E  43 6F 6D 6D 61 6E     C3	        DB      	"Command Format: DISKCOPY d: d: [/1]",CR,LF
 03A3                        C3	$M_A_00004H_END LABEL BYTE
 03A3                        C3	$M_A_00005H_MSG LABEL BYTE
 03A3  54                    C3	        DB      $M_A_00005H_END-$M_A_00005H_MSG-1
 03A4  0D 0A 49 6E 76 61     C3	        DB      CR,LF,"Invalid drive specification",CR,LF
 03C3  53 70 65 63 69 66     C3	        DB      	"Specified drive does not exist",CR,LF
 03E3  6F 72 20 69 73 20     C3	        DB      	"or is non-removable",CR,LF
 03F8                        C3	$M_A_00005H_END LABEL BYTE
 03F8                        C3	$M_A_00006H_MSG LABEL BYTE
 03F8  2F                    C3	        DB      $M_A_00006H_END-$M_A_00006H_MSG-1
 03F9  0D 0A 43 61 6E 6E     C3	        DB      CR,LF,"Cannot DISKCOPY to or from",CR,LF
 0417  61 20 6E 65 74 77     C3	        DB      	"a network drive",CR,LF
 0428                        C3	$M_A_00006H_END LABEL BYTE
 0428                        C3	$M_A_00007H_MSG LABEL BYTE
 0428  1C                    C3	        DB      $M_A_00007H_END-$M_A_00007H_MSG-1
 0429  0D 0A 46 6F 72 6D     C3	        DB      CR,LF,"Formatting while copying",CR,LF
 0445                        C3	$M_A_00007H_END LABEL BYTE
 0445                        C3	$M_A_00008H_MSG LABEL BYTE
 0445  27                    C3	        DB      $M_A_00008H_END-$M_A_00008H_MSG-1
 0446  0D 0A 49 6E 73 65     C3	        DB      CR,LF,"Insert SOURCE diskette in drive %1:",CR,LF
 046D                        C3	$M_A_00008H_END LABEL BYTE
 046D                        C3	$M_A_00009H_MSG LABEL BYTE
 046D  27                    C3	        DB      $M_A_00009H_END-$M_A_00009H_MSG-1
 046E  0D 0A 49 6E 73 65     C3	        DB      CR,LF,"Insert TARGET diskette in drive %1:",CR,LF
 0495                        C3	$M_A_00009H_END LABEL BYTE
 0495                        C3	$M_A_0000AH_MSG LABEL BYTE
 0495  49                    C3	        DB      $M_A_0000AH_END-$M_A_0000AH_MSG-1
 0496  4D 61 6B 65 20 73     C3	        DB      "Make sure a diskette is inserted into",CR,LF
 04BD  74 68 65 20 64 72     C3	        DB      	"the drive and the door is closed",CR,LF
 04DF                        C3	$M_A_0000AH_END LABEL BYTE
 04DF                        C3	$M_A_0000BH_MSG LABEL BYTE
 04DF  23                    C3	        DB      $M_A_0000BH_END-$M_A_0000BH_MSG-1
 04E0  0D 0A 54 61 72 67     C3	        DB      CR,LF,"Target diskette may be unusable",CR,LF
 0503                        C3	$M_A_0000BH_END LABEL BYTE
 0503                        C3	$M_A_0000CH_MSG LABEL BYTE
 0503  1C                    C3	        DB      $M_A_0000CH_END-$M_A_0000CH_MSG-1
 0504  0D 0A 54 61 72 67     C3	        DB      CR,LF,"Target diskette unusable",CR,LF
 0520                        C3	$M_A_0000CH_END LABEL BYTE
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Page     1-24
SYSTEM MESSAGE HANDLER			;                                  

 0520                        C3	$M_A_0000DH_MSG LABEL BYTE
 0520  0B                    C3	        DB      $M_A_0000DH_END-$M_A_0000DH_MSG-1
 0521  4E 6F 74 20 72 65     C3	        DB      "Not ready",CR,LF
 052C                        C3	$M_A_0000DH_END LABEL BYTE
 052C                        C3	$M_A_0000EH_MSG LABEL BYTE
 052C  15                    C3	        DB      $M_A_0000EH_END-$M_A_0000EH_MSG-1
 052D  57 72 69 74 65 20     C3	        DB      "Write protect error",CR,LF
 0542                        C3	$M_A_0000EH_END LABEL BYTE
 0542                        C3	$M_A_0000FH_MSG LABEL BYTE
 0542  21                    C3	        DB      $M_A_0000FH_END-$M_A_0000FH_MSG-1
 0543  50 72 65 73 73 20     C3	        DB      "Press any key to continue . . .",CR,LF
 0564                        C3	$M_A_0000FH_END LABEL BYTE
 0564                        C3	$M_A_00010H_MSG LABEL BYTE
 0564  1F                    C3	        DB      $M_A_00010H_END-$M_A_00010H_MSG-1
 0565  0D 0A 43 6F 70 79     C3	        DB      CR,LF,"Copy another diskette (Y/N)? "
 0584                        C3	$M_A_00010H_END LABEL BYTE
 0584                        C3	$M_A_00011H_MSG LABEL BYTE
 0584  33                    C3	        DB      $M_A_00011H_END-$M_A_00011H_MSG-1
 0585  0D 0A 43 6F 70 79     C3	        DB      CR,LF,"Copying %1 tracks",CR,LF
 059A  25 32 20 53 65 63     C3	        DB      	"%2 Sectors/Track, %3 Side(s)",CR,LF
 05B8                        C3	$M_A_00011H_END LABEL BYTE
 05B8                        C3	$M_A_00012H_MSG LABEL BYTE
 05B8  31                    C3	        DB      $M_A_00012H_END-$M_A_00012H_MSG-1
 05B9  0D 0A 44 72 69 76     C3	        DB      CR,LF,"Drive types or diskette types",CR,LF
 05DA  6E 6F 74 20 63 6F     C3	        DB      	"not compatible",CR,LF
 05EA                        C3	$M_A_00012H_END LABEL BYTE
 05EA                        C3	$M_A_00013H_MSG LABEL BYTE
 05EA  3B                    C3	        DB      $M_A_00013H_END-$M_A_00013H_MSG-1
 05EB  0D 0A 55 6E 72 65     C3	        DB      CR,LF,"Unrecoverable read error on drive %1",CR,LF
 0613  53 69 64 65 20 25     C3	        DB      	"Side %2, track %3",CR,LF
 0626                        C3	$M_A_00013H_END LABEL BYTE
 0626                        C3	$M_A_00014H_MSG LABEL BYTE
 0626  3C                    C3	        DB      $M_A_00014H_END-$M_A_00014H_MSG-1
 0627  0D 0A 55 6E 72 65     C3	        DB      CR,LF,"Unrecoverable write error on drive %1",CR,LF
 0650  53 69 64 65 20 25     C3	        DB      	"Side %2, track %3",CR,LF
 0663                        C3	$M_A_00014H_END LABEL BYTE
 0663                        C3	$M_A_00015H_MSG LABEL BYTE
 0663  16                    C3	        DB      $M_A_00015H_END-$M_A_00015H_MSG-1
 0664  0D 0A 43 6F 70 79     C3	        DB      CR,LF,"Copy process ended",CR,LF
 067A                        C3	$M_A_00015H_END LABEL BYTE
 067A                        C3	$M_A_00016H_MSG LABEL BYTE
 067A  25                    C3	        DB      $M_A_00016H_END-$M_A_00016H_MSG-1
 067B  0D 0A 53 4F 55 52     C3	        DB      CR,LF,"SOURCE diskette bad or incompatible"
 06A0                        C3	$M_A_00016H_END LABEL BYTE
 06A0                        C3	$M_A_00017H_MSG LABEL BYTE
 06A0  25                    C3	        DB      $M_A_00017H_END-$M_A_00017H_MSG-1
 06A1  0D 0A 54 41 52 47     C3	        DB      CR,LF,"TARGET diskette bad or incompatible"
 06C6                        C3	$M_A_00017H_END LABEL BYTE
 06C6                        C3	$M_A_00019H_MSG LABEL BYTE
 06C6  15                    C3	        DB      $M_A_00019H_END-$M_A_00019H_MSG-1
 06C7  49 6E 73 75 66 66     C3	        DB      "Insufficient memory",CR,LF
 06DC                        C3	$M_A_00019H_END LABEL BYTE
 06DC                        C3	$M_A_0001AH_MSG LABEL BYTE
 06DC  1F                    C3	        DB      $M_A_0001AH_END-$M_A_0001AH_MSG-1
 06DD  56 6F 6C 75 6D 65     C3	        DB      "Volume Serial Number is %1-%2",CR,LF
 06FC                        C3	$M_A_0001AH_END LABEL BYTE
 06FC                        C3	$M_CLS_1 PROC NEAR
 06FC  0E                    C3	        PUSH    CS
 06FD  07                    C3	        POP     ES
 06FE  8D 3E 02CA R          C3	        LEA     DI,$M_CLASS_A_STRUC
 0702  81 C1 0438            C3	        ADD     CX,$-$M_CLASS_A_STRUC
 0706  C3                    C3	        RET
 0707                        C3	$M_CLS_1 ENDP
				
					   PATHLABL DCOPYSM	   ;AN015;
 0707                        1	    $$A_START_DCOPYSM:                    ; 
								   ;DEFAULT=CHECK DOS VERSION
								   ;DEFAULT=NEARmsg
								   ;DEFAULT=INPUTmsg
								   ;DEFAULT=NUMmsg
								   ;DEFAULT=NO TIMEmsg
								   ;DEFAULT=NO DATEmsg
				;	   MSG_SERVICES <LOADmsg,DISPLAYmsg,CHARmsg,NUMmsg,INPUTmsg>
				.list				   ;AN000;
				; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
					   PATHLABL DCOPYSM	   ;AN015;
 0E2C                        1	    $$A_STOP_DCOPYSM:                     ; 
 0E2C				CSEG	   ENDS 		   ;AN000;
					   END			   ;AN000;

Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-1


Macros:

		N a m e			Lines

$M_BUILD_PTRS  . . . . . . . . .  	  18
$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
SUBLIST  . . . . . . . . . . . .  	000B	0009
  SUB_SIZE . . . . . . . . . . .  	0000
  SUB_RES  . . . . . . . . . . .  	0001
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-2


  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 . . . . . . . . . . . . . .  	0E2C	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	0856	CSEG
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
AMIS_ID  . . . . . . . . . . . .  	L NEAR	0718	CSEG
AMIS_ID_MSG  . . . . . . . . . .  	L NEAR	071D	CSEG
AMIS_ID_MSG_END  . . . . . . . .  	L NEAR	0725	CSEG
amis_sign  . . . . . . . . . . .  	L NEAR	0708	CSEG	Global
AMIS_SIGN_SEGMENT  . . . . . . .  	ALIAS	 CSEG		
ASCII_DRV1_ID  . . . . . . . . .  	L BYTE	007A	CSEG	Global
ASCII_DRV2_ID  . . . . . . . . .  	L BYTE	0090	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	07FA	CSEG
CHECK_AMIS_DONE  . . . . . . . .  	L NEAR	0831	CSEG
CHECK_AMIS_LOOP  . . . . . . . .  	L NEAR	0803	CSEG
CHECK_AMIS_NEXT  . . . . . . . .  	L NEAR	082C	CSEG
CHECK_AMIS_UNSUP . . . . . . . .  	L NEAR	0830	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	0019	
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	
DOS_GET_PARSE  . . . . . . . . .  	NUMBER	0002	
DOS_GET_VERSION  . . . . . . . .  	NUMBER	0030	
DOS_IOCTL_GET_INFO . . . . . . .  	NUMBER	4400	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-3


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	0152	CSEG	Global

ERROR_CLASS_39 . . . . . . . . .  	NUMBER	0001	
ERROR_SIDE_NUMBER  . . . . . . .  	L WORD	0155	CSEG	Global
ERROR_TRACK_NUMBER . . . . . . .  	L WORD	0157	CSEG	Global
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_DCOPYSM  . . . . . . . . . .  	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_SOURCE  . . . . . . .  	L TBYTE	0163	CSEG	Global
MSGNUM_BAD_TARGET  . . . . . . .  	L TBYTE	016D	CSEG	Global
MSGNUM_CLOSE_DOOR  . . . . . . .  	L TBYTE	0091	CSEG	Global
MSGNUM_COPYING . . . . . . . . .  	L TBYTE	00E2	CSEG	Global
MSGNUM_COPY_ANOTHER  . . . . . .  	L TBYTE	00D8	CSEG	Global
MSGNUM_CR_LF . . . . . . . . . .  	L TBYTE	0029	CSEG	Global
MSGNUM_DRV_REDIRECTED  . . . . .  	L TBYTE	0051	CSEG	Global
MSGNUM_EXTERR  . . . . . . . . .  	L TBYTE	0000	CSEG	Global
MSGNUM_FATAL_ERROR . . . . . . .  	L TBYTE	0159	CSEG	Global
MSGNUM_FORMATTING  . . . . . . .  	L TBYTE	005B	CSEG	Global
MSGNUM_GET_READY . . . . . . . .  	L TBYTE	00AF	CSEG	Global
MSGNUM_HARD_ERROR_READ . . . . .  	L TBYTE	011D	CSEG	Global
MSGNUM_HARD_ERROR_WRITE  . . . .  	L TBYTE	0127	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_SOURCE . . . . . . .  	L TBYTE	0065	CSEG	Global
MSGNUM_LOAD_TARGET . . . . . . .  	L TBYTE	007B	CSEG	Global
MSGNUM_NOT_COMPATIBLE  . . . . .  	L TBYTE	0113	CSEG	Global
MSGNUM_PARSE . . . . . . . . . .  	L TBYTE	000A	CSEG	Global
MSGNUM_SERNO . . . . . . . . . .  	L TBYTE	0181	CSEG	Global
MSGNUM_STRIKE  . . . . . . . . .  	L TBYTE	00CE	CSEG	Global
MSGNUM_TARGET_MB_UNUSABLE  . . .  	L TBYTE	009B	CSEG	Global
MSGNUM_TARGET_UNUSABLE . . . . .  	L TBYTE	00A5	CSEG	Global
MSGNUM_UNSUF_MEMORY  . . . . . .  	L TBYTE	0177	CSEG	Global
MSGNUM_VER . . . . . . . . . . .  	L TBYTE	0014	CSEG	Global
MSGNUM_WRITE_PROTECT . . . . . .  	L TBYTE	00C4	CSEG	Global
MSG_SECTRK . . . . . . . . . . .  	L WORD	010F	CSEG	Global
MSG_SER_CLASS  . . . . . . . . .  	NUMBER	0000	
MSG_SIDES  . . . . . . . . . . .  	L WORD	0111	CSEG	Global
MSG_TRACKS . . . . . . . . . . .  	L WORD	010D	CSEG	Global

NEARMSG  . . . . . . . . . . . .  	NUMBER	FFFF	
NEW_EXPECTED_VERSION . . . . . .  	NUMBER	2605	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-4


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

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

PAD_0  . . . . . . . . . . . . .  	NUMBER	0030	
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	

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	
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
SUBLIST_13 . . . . . . . . . . .  	L 	00B9	CSEG	Global
SUBLIST_17A  . . . . . . . . . .  	L 	00EC	CSEG	Global
SUBLIST_17B  . . . . . . . . . .  	L 	00F7	CSEG	Global
SUBLIST_17C  . . . . . . . . . .  	L 	0102	CSEG	Global
SUBLIST_19C  . . . . . . . . . .  	L 	0131	CSEG	Global
SUBLIST_19D  . . . . . . . . . .  	L 	013C	CSEG	Global
SUBLIST_19E  . . . . . . . . . .  	L 	0147	CSEG	Global
SUBLIST_26A  . . . . . . . . . .  	L 	018B	CSEG	Global
SUBLIST_26B  . . . . . . . . . .  	L 	0196	CSEG	Global
SUBLIST_8  . . . . . . . . . . .  	L 	006F	CSEG	Global
SUBLIST_9  . . . . . . . . . . .  	L 	0085	CSEG	Global
SUBLIST_LENGTH . . . . . . . . .  	NUMBER	000B	
SUBLIST_PARSE  . . . . . . . . .  	L 	001E	CSEG	Global
SYSDISPMSG . . . . . . . . . . .  	N PROC	0872	CSEG	Global	Length = 004E
SYSLOADMSG . . . . . . . . . . .  	N PROC	0725	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	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-5



UNSGN_BIN_BYTE . . . . . . . . .  	NUMBER	0011	
UNSGN_BIN_DWORD  . . . . . . . .  	NUMBER	0031	
UNSGN_BIN_TYPE . . . . . . . . .  	NUMBER	0001	
UNSGN_BIN_WORD . . . . . . . . .  	NUMBER	0021	
UTILITY_MSG_CLASS  . . . . . . .  	NUMBER	00FF	

$$A_START_DCOPYSM  . . . . . . .  	L NEAR	0707	CSEG	Global
$$A_STOP_DCOPYSM . . . . . . . .  	L NEAR	0E2C	CSEG	Global
$MDO123  . . . . . . . . . . . .  	L NEAR	0920	CSEG
$MDO139  . . . . . . . . . . . .  	L NEAR	0988	CSEG
$MDO145  . . . . . . . . . . . .  	L NEAR	09AA	CSEG
$MDO165  . . . . . . . . . . . .  	L NEAR	0A0C	CSEG
$MDO167  . . . . . . . . . . . .  	L NEAR	0A16	CSEG
$MDO175  . . . . . . . . . . . .  	L NEAR	0A42	CSEG
$MDO215  . . . . . . . . . . . .  	L NEAR	0B0D	CSEG
$MDO219  . . . . . . . . . . . .  	L NEAR	0B32	CSEG
$MDO259  . . . . . . . . . . . .  	L NEAR	0C1A	CSEG
$MDO280  . . . . . . . . . . . .  	L NEAR	0C87	CSEG
$MDO291  . . . . . . . . . . . .  	L NEAR	0CB2	CSEG
$MDO301  . . . . . . . . . . . .  	L NEAR	0CE0	CSEG
$MDO310  . . . . . . . . . . . .  	L NEAR	0D06	CSEG
$MDO321  . . . . . . . . . . . .  	L NEAR	0D48	CSEG
$MEN104  . . . . . . . . . . . .  	L NEAR	08BF	CSEG
$MEN107  . . . . . . . . . . . .  	L NEAR	08D4	CSEG
$MEN110  . . . . . . . . . . . .  	L NEAR	08F5	CSEG
$MEN119  . . . . . . . . . . . .  	L NEAR	092D	CSEG
$MEN123  . . . . . . . . . . . .  	L NEAR	092D	CSEG
$MEN128  . . . . . . . . . . . .  	L NEAR	095C	CSEG
$MEN139  . . . . . . . . . . . .  	L NEAR	099F	CSEG
$MEN145  . . . . . . . . . . . .  	L NEAR	0A03	CSEG
$MEN146  . . . . . . . . . . . .  	L NEAR	09C0	CSEG
$MEN150  . . . . . . . . . . . .  	L NEAR	09FE	CSEG
$MEN154  . . . . . . . . . . . .  	L NEAR	09FE	CSEG
$MEN165  . . . . . . . . . . . .  	L NEAR	0AF8	CSEG
$MEN167  . . . . . . . . . . . .  	L NEAR	0A33	CSEG
$MEN175  . . . . . . . . . . . .  	L NEAR	0A5B	CSEG
$MEN180  . . . . . . . . . . . .  	L NEAR	0A6D	CSEG
$MEN187  . . . . . . . . . . . .  	L NEAR	0AA0	CSEG
$MEN188  . . . . . . . . . . . .  	L NEAR	0A8E	CSEG
$MEN192  . . . . . . . . . . . .  	L NEAR	0AA0	CSEG
$MEN199  . . . . . . . . . . . .  	L NEAR	0ADF	CSEG
$MEN20 . . . . . . . . . . . . .  	L NEAR	07BB	CSEG
$MEN200  . . . . . . . . . . . .  	L NEAR	0AD7	CSEG
$MEN202  . . . . . . . . . . . .  	L NEAR	0AD7	CSEG
$MEN211  . . . . . . . . . . . .  	L NEAR	0AEC	CSEG
$MEN219  . . . . . . . . . . . .  	L NEAR	0B93	CSEG
$MEN220  . . . . . . . . . . . .  	L NEAR	0B64	CSEG
$MEN222  . . . . . . . . . . . .  	L NEAR	0B64	CSEG
$MEN224  . . . . . . . . . . . .  	L NEAR	0B64	CSEG
$MEN229  . . . . . . . . . . . .  	L NEAR	0B8B	CSEG
$MEN230  . . . . . . . . . . . .  	L NEAR	0B7D	CSEG
$MEN240  . . . . . . . . . . . .  	L NEAR	0BB3	CSEG
$MEN243  . . . . . . . . . . . .  	L NEAR	0BC0	CSEG
$MEN247  . . . . . . . . . . . .  	L NEAR	0C17	CSEG
$MEN248  . . . . . . . . . . . .  	L NEAR	0BFB	CSEG
$MEN25 . . . . . . . . . . . . .  	L NEAR	0871	CSEG
$MEN252  . . . . . . . . . . . .  	L NEAR	0C13	CSEG
$MEN259  . . . . . . . . . . . .  	L NEAR	0C37	CSEG
$MEN261  . . . . . . . . . . . .  	L NEAR	0C2B	CSEG
$MEN27 . . . . . . . . . . . . .  	L NEAR	0866	CSEG
$MEN292  . . . . . . . . . . . .  	L NEAR	0CC5	CSEG
$MEN307  . . . . . . . . . . . .  	L NEAR	0D0E	CSEG
$MEN314  . . . . . . . . . . . .  	L NEAR	0D2E	CSEG
$MEN317  . . . . . . . . . . . .  	L NEAR	0D55	CSEG
$MEN321  . . . . . . . . . . . .  	L NEAR	0D53	CSEG
$MEN325  . . . . . . . . . . . .  	L NEAR	0DE2	CSEG
$MEN333  . . . . . . . . . . . .  	L NEAR	0DE2	CSEG
$MEN388  . . . . . . . . . . . .  	L NEAR	0E02	CSEG
$MEN392  . . . . . . . . . . . .  	L NEAR	0E21	CSEG
$MEN396  . . . . . . . . . . . .  	L NEAR	0E2B	CSEG
$MEN93 . . . . . . . . . . . . .  	L NEAR	08B1	CSEG
$MEN94 . . . . . . . . . . . . .  	L NEAR	0896	CSEG
$MEN97 . . . . . . . . . . . . .  	L NEAR	08AB	CSEG
$MIF104  . . . . . . . . . . . .  	L NEAR	08BB	CSEG
$MIF107  . . . . . . . . . . . .  	L NEAR	08D1	CSEG
$MIF110  . . . . . . . . . . . .  	L NEAR	08E5	CSEG
$MIF112  . . . . . . . . . . . .  	L NEAR	08F5	CSEG
$MIF113  . . . . . . . . . . . .  	L NEAR	08F5	CSEG
$MIF117  . . . . . . . . . . . .  	L NEAR	08FA	CSEG
$MIF119  . . . . . . . . . . . .  	L NEAR	091E	CSEG
$MIF120  . . . . . . . . . . . .  	L NEAR	091C	CSEG
$MIF127  . . . . . . . . . . . .  	L NEAR	095D	CSEG
$MIF128  . . . . . . . . . . . .  	L NEAR	095A	CSEG
$MIF129  . . . . . . . . . . . .  	L NEAR	0958	CSEG
$MIF134  . . . . . . . . . . . .  	L NEAR	097D	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-6


$MIF135  . . . . . . . . . . . .  	L NEAR	097D	CSEG
$MIF138  . . . . . . . . . . . .  	L NEAR	099F	CSEG
$MIF141  . . . . . . . . . . . .  	L NEAR	099B	CSEG
$MIF146  . . . . . . . . . . . .  	L NEAR	09BD	CSEG
$MIF150  . . . . . . . . . . . .  	L NEAR	09DC	CSEG
$MIF151  . . . . . . . . . . . .  	L NEAR	09DA	CSEG
$MIF154  . . . . . . . . . . . .  	L NEAR	09EE	CSEG
$MIF155  . . . . . . . . . . . .  	L NEAR	09EC	CSEG
$MIF158  . . . . . . . . . . . .  	L NEAR	09FE	CSEG
$MIF159  . . . . . . . . . . . .  	L NEAR	09FE	CSEG
$MIF166  . . . . . . . . . . . .  	L NEAR	0A33	CSEG
$MIF169  . . . . . . . . . . . .  	L NEAR	0A2E	CSEG
$MIF173  . . . . . . . . . . . .  	L NEAR	0A6D	CSEG
$MIF174  . . . . . . . . . . . .  	L NEAR	0A6D	CSEG
$MIF175  . . . . . . . . . . . .  	L NEAR	0A4F	CSEG
$MIF180  . . . . . . . . . . . .  	L NEAR	0A6A	CSEG
$MIF187  . . . . . . . . . . . .  	L NEAR	0A90	CSEG
$MIF188  . . . . . . . . . . . .  	L NEAR	0A8D	CSEG
$MIF192  . . . . . . . . . . . .  	L NEAR	0A97	CSEG
$MIF194  . . . . . . . . . . . .  	L NEAR	0A9E	CSEG
$MIF199  . . . . . . . . . . . .  	L NEAR	0ADC	CSEG
$MIF20 . . . . . . . . . . . . .  	L NEAR	07B7	CSEG
$MIF200  . . . . . . . . . . . .  	L NEAR	0ABD	CSEG
$MIF202  . . . . . . . . . . . .  	L NEAR	0AD7	CSEG
$MIF211  . . . . . . . . . . . .  	L NEAR	0AE8	CSEG
$MIF216  . . . . . . . . . . . .  	L NEAR	0B1B	CSEG
$MIF220  . . . . . . . . . . . .  	L NEAR	0B3F	CSEG
$MIF222  . . . . . . . . . . . .  	L NEAR	0B4C	CSEG
$MIF224  . . . . . . . . . . . .  	L NEAR	0B5E	CSEG
$MIF229  . . . . . . . . . . . .  	L NEAR	0B7F	CSEG
$MIF23 . . . . . . . . . . . . .  	L NEAR	07D1	CSEG
$MIF230  . . . . . . . . . . . .  	L NEAR	0B71	CSEG
$MIF234  . . . . . . . . . . . .  	L NEAR	0B87	CSEG
$MIF239  . . . . . . . . . . . .  	L NEAR	0BC2	CSEG
$MIF240  . . . . . . . . . . . .  	L NEAR	0BB2	CSEG
$MIF243  . . . . . . . . . . . .  	L NEAR	0BBA	CSEG
$MIF247  . . . . . . . . . . . .  	L NEAR	0BFD	CSEG
$MIF248  . . . . . . . . . . . .  	L NEAR	0BF7	CSEG
$MIF25 . . . . . . . . . . . . .  	L NEAR	0859	CSEG
$MIF252  . . . . . . . . . . . .  	L NEAR	0C0A	CSEG
$MIF254  . . . . . . . . . . . .  	L NEAR	0C13	CSEG
$MIF258  . . . . . . . . . . . .  	L NEAR	0C46	CSEG
$MIF259  . . . . . . . . . . . .  	L NEAR	0C2F	CSEG
$MIF261  . . . . . . . . . . . .  	L NEAR	0C28	CSEG
$MIF269  . . . . . . . . . . . .  	L NEAR	0C46	CSEG
$MIF27 . . . . . . . . . . . . .  	L NEAR	0863	CSEG
$MIF270  . . . . . . . . . . . .  	L NEAR	0C42	CSEG
$MIF274  . . . . . . . . . . . .  	L NEAR	0C4E	CSEG
$MIF276  . . . . . . . . . . . .  	L NEAR	0C6D	CSEG
$MIF278  . . . . . . . . . . . .  	L NEAR	0C9B	CSEG
$MIF279  . . . . . . . . . . . .  	L NEAR	0C9B	CSEG
$MIF281  . . . . . . . . . . . .  	L NEAR	0C97	CSEG
$MIF286  . . . . . . . . . . . .  	L NEAR	0CAE	CSEG
$MIF287  . . . . . . . . . . . .  	L NEAR	0CAE	CSEG
$MIF290  . . . . . . . . . . . .  	L NEAR	0CD6	CSEG
$MIF292  . . . . . . . . . . . .  	L NEAR	0CC4	CSEG
$MIF295  . . . . . . . . . . . .  	L NEAR	0CD2	CSEG
$MIF299  . . . . . . . . . . . .  	L NEAR	0CF4	CSEG
$MIF300  . . . . . . . . . . . .  	L NEAR	0CF4	CSEG
$MIF302  . . . . . . . . . . . .  	L NEAR	0CF0	CSEG
$MIF307  . . . . . . . . . . . .  	L NEAR	0D02	CSEG
$MIF309  . . . . . . . . . . . .  	L NEAR	0D0E	CSEG
$MIF314  . . . . . . . . . . . .  	L NEAR	0D2A	CSEG
$MIF317  . . . . . . . . . . . .  	L NEAR	0D48	CSEG
$MIF318  . . . . . . . . . . . .  	L NEAR	0D46	CSEG
$MIF325  . . . . . . . . . . . .  	L NEAR	0D8E	CSEG
$MIF326  . . . . . . . . . . . .  	L NEAR	0D80	CSEG
$MIF327  . . . . . . . . . . . .  	L NEAR	0D7A	CSEG
$MIF330  . . . . . . . . . . . .  	L NEAR	0D8C	CSEG
$MIF333  . . . . . . . . . . . .  	L NEAR	0DBA	CSEG
$MIF334  . . . . . . . . . . . .  	L NEAR	0DAC	CSEG
$MIF335  . . . . . . . . . . . .  	L NEAR	0DA6	CSEG
$MIF338  . . . . . . . . . . . .  	L NEAR	0DB8	CSEG
$MIF341  . . . . . . . . . . . .  	L NEAR	0DD6	CSEG
$MIF342  . . . . . . . . . . . .  	L NEAR	0DD0	CSEG
$MIF345  . . . . . . . . . . . .  	L NEAR	0DE2	CSEG
$MIF349  . . . . . . . . . . . .  	L NEAR	0DEE	CSEG
$MIF388  . . . . . . . . . . . .  	L NEAR	0E00	CSEG
$MIF391  . . . . . . . . . . . .  	L NEAR	0E21	CSEG
$MIF392  . . . . . . . . . . . .  	L NEAR	0E1F	CSEG
$MIF396  . . . . . . . . . . . .  	L NEAR	0E27	CSEG
$MIF93 . . . . . . . . . . . . .  	L NEAR	08AD	CSEG
$MIF94 . . . . . . . . . . . . .  	L NEAR	0893	CSEG
$MIF97 . . . . . . . . . . . . .  	L NEAR	08A7	CSEG
$MIF98 . . . . . . . . . . . . .  	L NEAR	08A5	CSEG
$MLL149  . . . . . . . . . . . .  	L NEAR	09CA	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-7


$MLL168  . . . . . . . . . . . .  	L NEAR	0A25	CSEG
$MLL178  . . . . . . . . . . . .  	L NEAR	0A57	CSEG
$MLL202  . . . . . . . . . . . .  	L NEAR	0ACF	CSEG
$MLL214  . . . . . . . . . . . .  	L NEAR	0AF8	CSEG
$MSR175  . . . . . . . . . . . .  	L NEAR	0A6D	CSEG
$MSR259  . . . . . . . . . . . .  	L NEAR	0C38	CSEG
$MXL3  . . . . . . . . . . . . .  	L NEAR	0A7A	CSEG
$MXL4  . . . . . . . . . . . . .  	L NEAR	0AF8	CSEG
$MXL5  . . . . . . . . . . . . .  	L NEAR	0B93	CSEG
$M_1_FF_END  . . . . . . . . . .  	L BYTE	029F	CSEG
$M_1_FF_MSG  . . . . . . . . . .  	L BYTE	028D	CSEG
$M_1_FF_STRUC  . . . . . . . . .  	L BYTE	0289	CSEG
$M_2_FF_END  . . . . . . . . . .  	L BYTE	02C0	CSEG
$M_2_FF_MSG  . . . . . . . . . .  	L BYTE	02B1	CSEG
$M_2_FF_STRUC  . . . . . . . . .  	L BYTE	02AD	CSEG
$M_ADDR_SZ_FAR . . . . . . . . .  	NUMBER	0004	
$M_ADDR_SZ_NEAR  . . . . . . . .  	NUMBER	0002	
$M_ADD_CRLF  . . . . . . . . . .  	N PROC	0967	CSEG	Length = 0017
$M_ALIGN_MASK  . . . . . . . . .  	NUMBER	0080	
$M_AM  . . . . . . . . . . . . .  	NUMBER	0061	
$M_A_00001H_END  . . . . . . . .  	L BYTE	034A	CSEG
$M_A_00001H_MSG  . . . . . . . .  	L BYTE	0332	CSEG
$M_A_00001H_STRUC  . . . . . . .  	L BYTE	02CE	CSEG
$M_A_00002H_END  . . . . . . . .  	L BYTE	034D	CSEG
$M_A_00002H_MSG  . . . . . . . .  	L BYTE	034A	CSEG
$M_A_00002H_STRUC  . . . . . . .  	L BYTE	02D2	CSEG
$M_A_00003H_END  . . . . . . . .  	L BYTE	0361	CSEG
$M_A_00003H_MSG  . . . . . . . .  	L BYTE	034D	CSEG
$M_A_00003H_STRUC  . . . . . . .  	L BYTE	02D6	CSEG
$M_A_00004H_END  . . . . . . . .  	L BYTE	03A3	CSEG
$M_A_00004H_MSG  . . . . . . . .  	L BYTE	0361	CSEG
$M_A_00004H_STRUC  . . . . . . .  	L BYTE	02DA	CSEG
$M_A_00005H_END  . . . . . . . .  	L BYTE	03F8	CSEG
$M_A_00005H_MSG  . . . . . . . .  	L BYTE	03A3	CSEG
$M_A_00005H_STRUC  . . . . . . .  	L BYTE	02DE	CSEG
$M_A_00006H_END  . . . . . . . .  	L BYTE	0428	CSEG
$M_A_00006H_MSG  . . . . . . . .  	L BYTE	03F8	CSEG
$M_A_00006H_STRUC  . . . . . . .  	L BYTE	02E2	CSEG
$M_A_00007H_END  . . . . . . . .  	L BYTE	0445	CSEG
$M_A_00007H_MSG  . . . . . . . .  	L BYTE	0428	CSEG
$M_A_00007H_STRUC  . . . . . . .  	L BYTE	02E6	CSEG
$M_A_00008H_END  . . . . . . . .  	L BYTE	046D	CSEG
$M_A_00008H_MSG  . . . . . . . .  	L BYTE	0445	CSEG
$M_A_00008H_STRUC  . . . . . . .  	L BYTE	02EA	CSEG
$M_A_00009H_END  . . . . . . . .  	L BYTE	0495	CSEG
$M_A_00009H_MSG  . . . . . . . .  	L BYTE	046D	CSEG
$M_A_00009H_STRUC  . . . . . . .  	L BYTE	02EE	CSEG
$M_A_0000AH_END  . . . . . . . .  	L BYTE	04DF	CSEG
$M_A_0000AH_MSG  . . . . . . . .  	L BYTE	0495	CSEG
$M_A_0000AH_STRUC  . . . . . . .  	L BYTE	02F2	CSEG
$M_A_0000BH_END  . . . . . . . .  	L BYTE	0503	CSEG
$M_A_0000BH_MSG  . . . . . . . .  	L BYTE	04DF	CSEG
$M_A_0000BH_STRUC  . . . . . . .  	L BYTE	02F6	CSEG
$M_A_0000CH_END  . . . . . . . .  	L BYTE	0520	CSEG
$M_A_0000CH_MSG  . . . . . . . .  	L BYTE	0503	CSEG
$M_A_0000CH_STRUC  . . . . . . .  	L BYTE	02FA	CSEG
$M_A_0000DH_END  . . . . . . . .  	L BYTE	052C	CSEG
$M_A_0000DH_MSG  . . . . . . . .  	L BYTE	0520	CSEG
$M_A_0000DH_STRUC  . . . . . . .  	L BYTE	02FE	CSEG
$M_A_0000EH_END  . . . . . . . .  	L BYTE	0542	CSEG
$M_A_0000EH_MSG  . . . . . . . .  	L BYTE	052C	CSEG
$M_A_0000EH_STRUC  . . . . . . .  	L BYTE	0302	CSEG
$M_A_0000FH_END  . . . . . . . .  	L BYTE	0564	CSEG
$M_A_0000FH_MSG  . . . . . . . .  	L BYTE	0542	CSEG
$M_A_0000FH_STRUC  . . . . . . .  	L BYTE	0306	CSEG
$M_A_00010H_END  . . . . . . . .  	L BYTE	0584	CSEG
$M_A_00010H_MSG  . . . . . . . .  	L BYTE	0564	CSEG
$M_A_00010H_STRUC  . . . . . . .  	L BYTE	030A	CSEG
$M_A_00011H_END  . . . . . . . .  	L BYTE	05B8	CSEG
$M_A_00011H_MSG  . . . . . . . .  	L BYTE	0584	CSEG
$M_A_00011H_STRUC  . . . . . . .  	L BYTE	030E	CSEG
$M_A_00012H_END  . . . . . . . .  	L BYTE	05EA	CSEG
$M_A_00012H_MSG  . . . . . . . .  	L BYTE	05B8	CSEG
$M_A_00012H_STRUC  . . . . . . .  	L BYTE	0312	CSEG
$M_A_00013H_END  . . . . . . . .  	L BYTE	0626	CSEG
$M_A_00013H_MSG  . . . . . . . .  	L BYTE	05EA	CSEG
$M_A_00013H_STRUC  . . . . . . .  	L BYTE	0316	CSEG
$M_A_00014H_END  . . . . . . . .  	L BYTE	0663	CSEG
$M_A_00014H_MSG  . . . . . . . .  	L BYTE	0626	CSEG
$M_A_00014H_STRUC  . . . . . . .  	L BYTE	031A	CSEG
$M_A_00015H_END  . . . . . . . .  	L BYTE	067A	CSEG
$M_A_00015H_MSG  . . . . . . . .  	L BYTE	0663	CSEG
$M_A_00015H_STRUC  . . . . . . .  	L BYTE	031E	CSEG
$M_A_00016H_END  . . . . . . . .  	L BYTE	06A0	CSEG
$M_A_00016H_MSG  . . . . . . . .  	L BYTE	067A	CSEG
$M_A_00016H_STRUC  . . . . . . .  	L BYTE	0322	CSEG
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-8


$M_A_00017H_END  . . . . . . . .  	L BYTE	06C6	CSEG
$M_A_00017H_MSG  . . . . . . . .  	L BYTE	06A0	CSEG
$M_A_00017H_STRUC  . . . . . . .  	L BYTE	0326	CSEG
$M_A_00019H_END  . . . . . . . .  	L BYTE	06DC	CSEG
$M_A_00019H_MSG  . . . . . . . .  	L BYTE	06C6	CSEG
$M_A_00019H_STRUC  . . . . . . .  	L BYTE	032A	CSEG
$M_A_0001AH_END  . . . . . . . .  	L BYTE	06FC	CSEG
$M_A_0001AH_MSG  . . . . . . . .  	L BYTE	06DC	CSEG
$M_A_0001AH_STRUC  . . . . . . .  	L BYTE	032E	CSEG
$M_BASE10  . . . . . . . . . . .  	NUMBER	000A	
$M_BASE16  . . . . . . . . . . .  	NUMBER	0010	
$M_BIN2ASC_REPLACE . . . . . . .  	N PROC	0D57	CSEG	Length = 0099
$M_BYTE  . . . . . . . . . . . .  	NUMBER	0010	
$M_CHAR_ONLY . . . . . . . . . .  	NUMBER	0000	
$M_CHAR_REPLACE  . . . . . . . .  	N PROC	0D2F	CSEG	Length = 0028
$M_CHECKSTDIN  . . . . . . . . .  	N PROC	07D4	CSEG	Length = 0013
$M_CHECKSTDOUT . . . . . . . . .  	N PROC	07E7	CSEG	Length = 0013
$M_CLASS_1_STRUC . . . . . . . .  	L BYTE	0285	CSEG
$M_CLASS_2_STRUC . . . . . . . .  	L BYTE	02A9	CSEG
$M_CLASS_A_STRUC . . . . . . . .  	L BYTE	02CA	CSEG
$M_CLASS_ID_SZ . . . . . . . . .  	NUMBER	0004	
$M_CLASS_NOT_EXIST . . . . . . .  	NUMBER	0000	
$M_CLS_1 . . . . . . . . . . . .  	N PROC	06FC	CSEG	Global	Length = 000B
$M_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$M_CONVERT2ASC . . . . . . . . .  	N PROC	09A2	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_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	08FB	CSEG	Length = 0035
$M_DISPLAY_H_STRING  . . . . . .  	N PROC	0930	CSEG	Length = 002E
$M_DISPLAY_MESSAGE . . . . . . .  	N PROC	0A0C	CSEG	Length = 00F3
$M_DISPLAY_REPLACE . . . . . . .  	N PROC	0C54	CSEG	Length = 00BF
$M_DISPLAY_STRING  . . . . . . .  	N PROC	08C0	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	0AFF	CSEG	Length = 002D
$M_FIND_SPECIFIED_MSG  . . . . .  	N PROC	0BDB	CSEG	Length = 0079
$M_FIRST_THOU  . . . . . . . . .  	NUMBER	0003	
$M_FLUSH_BUF . . . . . . . . . .  	N PROC	0D13	CSEG	Length = 001C
$M_GET_DBCS_VEC  . . . . . . . .  	N PROC	07BC	CSEG	Length = 0018
$M_GET_EXT_ERR_39  . . . . . . .  	N PROC	095E	CSEG	Length = 0009
$M_GET_MSG_ADDRESS . . . . . . .  	N PROC	0B2C	CSEG	Length = 00A0
$M_ID_SZ . . . . . . . . . . . .  	NUMBER	0004	
$M_INCLUDE . . . . . . . . . . .  	NUMBER	0000	
$M_INDEX . . . . . . . . . . . .  	NUMBER	0004	
$M_IS_IT_DBCS  . . . . . . . . .  	N PROC	097E	CSEG	Length = 0024
$M_LOAD  . . . . . . . . . . . .  	NUMBER	FFFF	
$M_MAX_2_YEAR  . . . . . . . . .  	NUMBER	0063	
$M_MSGDATA_ONLY  . . . . . . . .  	NUMBER	0000	
$M_MSGSERV_1 . . . . . . . . . .  	N PROC	029F	CSEG	Global	Length = 000A
$M_MSGSERV_2 . . . . . . . . . .  	N PROC	02C0	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	01A1	CSEG
$M_SECOND_THOU . . . . . . . . .  	NUMBER	0006	
$M_SERVICE . . . . . . . . . . .  	NUMBER	FFFF	
$M_SET_LEN_IN_CX . . . . . . . .  	N PROC	0BCC	CSEG	Length = 000F
$M_SINGLE_CHAR . . . . . . . . .  	NUMBER	0001	
$M_SIZE_MASK . . . . . . . . . .  	NUMBER	0030	
$M_SL  . . . . . . . . . . . . .  	TEXT  DS:[SI]		
$M_SPACE . . . . . . . . . . . .  	NUMBER	0020	
Microsoft (R) Macro Assembler Version 5.10                  8/26/25 23:16:17
DCOPYSM.SAL - DISKCOPY SYSTEM MESSAGES                      Symbols-9


$M_SPACE_HYP . . . . . . . . . .  	NUMBER	2D20	
$M_SPECIAL_CASE  . . . . . . . .  	NUMBER	0030	
$M_SPECIAL_MSG_NUM . . . . . . .  	NUMBER	FFFF	
$M_STRUC . . . . . . . . . . . .  	NUMBER	0000	
$M_SUBS  . . . . . . . . . . . .  	NUMBER	0000	
$M_TEMP_BUF_SZ . . . . . . . . .  	NUMBER	0040	
$M_TERMINATING_FLAG  . . . . . .  	NUMBER	-0001	
$M_THIRD_THOU  . . . . . . . . .  	NUMBER	0009	
$M_TIMEDATE_PAD  . . . . . . . .  	NUMBER	0030	
$M_TIME_MASK . . . . . . . . . .  	NUMBER	0001	
$M_TYPE_MASK . . . . . . . . . .  	NUMBER	000F	
$M_UNLIM_W . . . . . . . . . . .  	NUMBER	0000	
$M_VERSION_CHECK . . . . . . . .  	N PROC	0843	CSEG	Length = 002F
$M_WAIT_FOR_INPUT  . . . . . . .  	N PROC	0DF0	CSEG	Length = 003C
$M_WORD  . . . . . . . . . . . .  	NUMBER	0020	
??0000 . . . . . . . . . . . . .  	L NEAR	0BC4	CSEG
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  dcopysm		
@VERSION . . . . . . . . . . . .  	TEXT  510		


  11062 Source  Lines
  14791 Total   Lines
    667 Symbols

  43474 + 185873 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
