Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-1


				 page 80,132
				;	SCCSID = @(#)copy.asm	1.1 85/05/14
				;	SCCSID = @(#)copy.asm	1.1 85/05/14
				TITLE	COMMAND COPY routines.
				
				; MODIFICATION HISTORY
				;
				;   11/01/83 EE  Added a few lines at the end of SCANSRC2 to get multiple
				;		 file concatenations (eg copy a.*+b.*+c.*) to work properly.
				;   11/02/83 EE  Commented out the code in CPARSE which added drive designators
				;		 to tokens which begin with path characters so that PARSELINE
				;		 will work correctly.
				;   11/04/83 EE  Commented out the code in CPARSE that considered paren's to be
				;		 individual tokens.  That distinction is no longer needed for
				;		 FOR loop processing.
				;   11/17/83 EE  CPARSE upper case conversion is now flag dependent.  Flag is
				;		 1 when Cparse is called from COPY.
				;   11/17/83 EE  Took out the comment chars around code described in 11/04/83
				;		 mod.  It now is conditional on flag like previous mod.
				;   11/21/83 NP  Added printf
				;   12/09/83 EE  CPARSE changed to use CPYFLAG to determine when a colon should
				;		 be added to a token.
				;   05/30/84 MZ  Initialize all copy variables.  Fix confusion with destclosed
				;		 NOTE: DestHand is the destination handle.  There are two
				;		 special values:  -1 meaning destination was never opened and
				;		 0 which means that the destination has been openned and
				;		 closed.
				;   06/01/84 MZ  Above reasoning totally specious.  Returned things to normal
				;   06/06/86 EG  Change to fix problem of source switches /a and /b getting
				;		 lost on large and multiple file (wildcard) copies.
				;   06/09/86 EG  Change to use xnametrans call to verify that source and
				;		 destination are not equal.
				
				
				.list
				.cref
				
				
 0000				DATARES 	SEGMENT PUBLIC BYTE	;AC000;
					EXTRN	VERVAL:WORD
					EXTRN	RSRC_XA_SEG:WORD	;AN030;
 0000				DATARES ENDS
				
 0000				TRANDATA	SEGMENT PUBLIC BYTE	;AC000;
					EXTRN	BADCD_ptr:word
					EXTRN	COPIED_ptr:word
					EXTRN	Extend_buf_ptr:word	;AN000;
					EXTRN	Extend_buf_sub:byte	;AN000;
					EXTRN	file_name_ptr:word
					EXTRN	INBDEV_ptr:word 	;AC000;
					EXTRN	msg_disp_class:byte	;AN000;
					EXTRN	overwr_ptr:word
 0000				TRANDATA	ENDS
				
 0000				TRANSPACE	SEGMENT PUBLIC BYTE	;AC000;
					EXTRN	ALLSWITCH:WORD
					EXTRN	ARGC:BYTE
					EXTRN	ASCII:BYTE
					EXTRN	BINARY:BYTE
					EXTRN	BYTCNT:WORD
					EXTRN	CFLAG:BYTE
					EXTRN	comma:byte
					EXTRN	CONCAT:BYTE
					EXTRN	concat_xa:byte		;AN000;
					EXTRN	copy_num:word		;AC000;
					EXTRN	CPDATE:WORD
					EXTRN	CPTIME:WORD
					EXTRN	cpyflag:byte		;AC000;
					EXTRN	CURDRV:BYTE
					EXTRN	DESTBUF:BYTE
					EXTRN	DestClosed:BYTE
					EXTRN	DESTFCB:BYTE
					EXTRN	DESTFCB2:BYTE
					EXTRN	DESTHAND:WORD
					EXTRN	DESTINFO:BYTE
					EXTRN	DESTISDIR:BYTE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-2
Trap:  Get the attention of MSDOS                           

					EXTRN	DESTSIZ:BYTE
					EXTRN	DESTSWITCH:WORD
					EXTRN	DESTTAIL:WORD
					EXTRN	DESTVARS:BYTE
					EXTRN	DIRBUF:BYTE
					EXTRN	expand_star:byte
					EXTRN	FILECNT:WORD
					EXTRN	FIRSTDEST:BYTE
					EXTRN	FRSTSRCH:BYTE
					EXTRN	INEXACT:BYTE
					EXTRN	MELCOPY:BYTE
					EXTRN	MELSTART:WORD
					EXTRN	msg_flag:byte		;AN022;
					EXTRN	NOWRITE:BYTE
					EXTRN	NXTADD:WORD
					EXTRN	objcnt:byte
					EXTRN	one_char_val:byte	;AN000;
					EXTRN	parse_last:word 	;AN018;
					EXTRN	PLUS:BYTE
					EXTRN	plus_comma:byte
					EXTRN	RDEOF:BYTE
					EXTRN	RESSEG:WORD
					EXTRN	SCANBUF:BYTE
					EXTRN	SDIRBUF:BYTE
					EXTRN	src_xa_size:word	;AN000;
					EXTRN	src_xa_seg:word 	;AN000;
					EXTRN	SRCBUF:BYTE
					EXTRN	SRCHAND:WORD
					EXTRN	SRCINFO:BYTE
					EXTRN	SRCISDEV:BYTE
					EXTRN	SRCPT:WORD
					EXTRN	SRCSIZ:BYTE
					EXTRN	SRCTAIL:WORD
					EXTRN	SRCVARS:BYTE
					EXTRN	srcxname:byte
					EXTRN	STARTEL:WORD
					EXTRN	string_ptr_2:word
					EXTRN	TERMREAD:BYTE
					EXTRN	TPA:WORD
					EXTRN	USERDIR1:BYTE
					EXTRN	WRITTEN:WORD
					EXTRN	xa_cp_out:byte		;AN030;
					EXTRN	xa_list_attr:word	;AC030;
 0000				TRANSPACE	ENDS
				
				
				; ******************************************
				; COPY CODE
				;
				
 0000				TRANCODE	SEGMENT PUBLIC BYTE
				
					EXTRN	CERROR:NEAR
					EXTRN	COPERR:NEAR
					EXTRN	TCOMMAND:NEAR
				
					PUBLIC	COPY
				
				ASSUME	CS:TRANGROUP,DS:TRANGROUP,ES:TRANGROUP,SS:NOTHING
					break	Copy
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-3
Copy                                                        

				assume	ds:trangroup,es:trangroup
				
 0000				COPY:
				; First order of buisness is to find out about the destination
				;
				; initialize all internal variables
				;
 0000  33 C0				xor	ax,ax
 0002  A3 0000 E			mov	copy_num,ax
 0005  A3 0000 E			mov	SrcPt,AX
 0008  A3 0000 E			mov	SrcTail,AX
 000B  A2 0000 E			mov	CFlag,AL
 000E  A3 0000 E			mov	NxtAdd,AX
 0011  A3 0000 E			mov	DestSwitch,AX
 0014  A3 0000 E			mov	StartEl,AX
 0017  A3 0000 E			mov	DestTail,AX
 001A  A2 0000 E			mov	DestClosed,AL
 001D  A2 0000 E			mov	DestSiz,AL
 0020  A2 0000 E			mov	SrcSiz,AL
 0023  A2 0000 E			mov	DestInfo,AL
 0026  A2 0000 E			mov	SrcInfo,AL
 0029  A2 0000 E			mov	InExact,AL
 002C  A2 0000 E			mov	DestVars,AL
 002F  A2 0000 E			mov	SrcVars,AL
 0032  A2 0000 E			mov	UserDir1,AL
 0035  A2 0000 E			mov	NoWrite,AL
 0038  A2 0000 E			mov	RdEOF,AL
 003B  A3 0000 E			mov	SrcHand,AX
 003E  A3 0000 E			mov	CpDate,AX
 0041  A3 0000 E			mov	CpTime,AX
 0044  A3 0000 E			mov	xa_list_attr,ax 		;AN030; initialize code page to none
 0047  A2 0000 E			mov	SrcIsDev,AL
 004A  A2 0000 E			mov	TermRead,AL
 004D  A2 0000 E			mov	comma,al			;g
 0050  A2 0000 E			mov	plus_comma,al			;g
 0053  A2 0000 E			mov	msg_flag,al			;AN022;
 0056  A3 0000 E			mov	[ALLSWITCH],AX			; no switches
 0059  A2 0000 E			mov	[ARGC],al			; no arguments
 005C  A2 0000 E			mov	[PLUS],al			; no concatenation
 005F  A2 0000 E			mov	[BINARY],al			; Binary not specifically specified
 0062  A2 0000 E			mov	[ASCII],al			; ASCII not specifically specified
 0065  A3 0000 E			mov	[FILECNT],ax			; No files yet
 0068  A3 0000 E			mov	[WRITTEN],ax			; Nothing written yet
 006B  A2 0000 E			mov	[CONCAT],al			; No concatenation
 006E  A2 0000 E			mov	[MELCOPY],al			; Not a Mel Hallerman copy
 0071  A2 0000 E			mov	[concat_xa],al			;AN000; initialize flag for concatenation XA
 0074  A3 0000 E			mov	MelStart,ax			; Not a Mel Hallerman copy
 0077  A3 0000 E			mov	word ptr [SCANBUF],ax		; Init buffer
 007A  A3 0000 E			mov	word ptr [DESTBUF],ax		; Init buffer
 007D  A3 0000 E			mov	word ptr [SRCBUF],ax		; Init buffer
 0080  A3 0000 E			mov	word ptr [SDIRBUF],ax		; Init buffer
 0083  A3 0000 E			mov	word ptr [DIRBUF],ax		; Init buffer
 0086  A3 0000 E			mov	word ptr [DESTFCB],ax		; Init buffer
 0089  A2 0000 E			mov	objcnt,al			; Init command line object count
 008C  48				dec	ax
 008D  A3 0000 E			mov	DestHand,AX			; destination has never been opened
 0090  A2 0000 E			mov	[FRSTSRCH],al			; First search call
 0093  A2 0000 E			mov	[FIRSTDEST],al			; First time
 0096  A2 0000 E			mov	[DESTISDIR],al			; Don't know about dest
 0099  A3 0000 E			mov	src_xa_seg,ax			;AN000; initialize attribute segment to -1
 009C  BE 0081				mov	si,81H
 009F  B3 2B				mov	bl,plus_chr			; include '+' as a delimiter
 00A1  FE 06 0000 E			inc	byte ptr [expand_star]		; want to include * expansion in cparse
 00A5  C6 06 0000 E 01			mov	cpyflag,1			; Turn "CPARSE called from COPY flag" on
				
 00AA				DESTSCAN:
 00AA  33 ED				xor	bp,bp				; no switches
 00AC  BF 0000 E			mov	di,offset trangroup:SCANBUF
 00AF  89 36 0000 E			mov	parse_last,si			;AN018; save start of parsed string
					invoke	CPARSE
 00B3  E8 0000 E             1		CALL    CPARSE 
 00B6  9C				PUSHF					; save flags
 00B7  FE 06 0000 E			inc	objcnt
 00BB  F6 C7 80				test	bh,80H				; A '+' argument?
 00BE  74 05				jz	NOPLUS				; no
 00C0  C6 06 0000 E 01			mov	[PLUS],1			; yes
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-4
Copy                                                        

 00C5				NOPLUS:
 00C5  F6 C7 01				test	bh,1				; Switch?
 00C8  74 2F				jz	TESTP2				; no
				
 00CA  F7 C5 0010			test	bp,SwitchV			;AN038; Verify requested?
 00CE  74 0C				jz	not_slashv			;AN038; No - set the switch
 00D0  F7 06 0000 E 0010		test	[allswitch],SwitchV		;AN038; Verify already entered?
 00D6  74 04				jz	not_slashv			;AN038; No - set the switch
				;AD018; or	[allswitch],FBadSwitch		;AN038; Set up bad switch
 00D8  81 CD 4000			or	BP,FBadSwitch			;AN018; Set up bad switch
				
 00DC				not_slashv:					;AN038;
 00DC  09 2E 0000 E			or	[DESTSWITCH],BP 		; Yes, assume destination
 00E0  09 2E 0000 E			or	[ALLSWITCH],BP			; keep tabs on all switches
				
 00E4  F7 C5 7FE3			test	BP,NOT SwitchCopy		;AN018; Bad switch?
 00E8  74 0A				jz	NOT_BAD_SWITCH			;AN018; Switches are okay
 00EA  9D				popf					;AN018; fix up stack
 00EB  B8 0003				mov	ax,BadSwt_ptr			;AN018; get "Invalid switch" message number
					invoke	Setup_parse_error_msg		;AN018; setup to print the message
 00EE  E8 0000 E             1		CALL    Setup_parse_error_msg 
 00F1  E9 0000 E			jmp	CERROR				;AC018; exit
				
 00F4				NOT_BAD_SWITCH: 				;AN018; switch okay
 00F4  9D				POPF					; get flags back
 00F5  72 33				jc	CHECKDONE			; Hit CR?
 00F7  EB B1				jmp short DESTSCAN
				
 00F9				TESTP2:
 00F9  9D				POPF					; get flags back
 00FA  72 2E				jc	CHECKDONE			; Hit CR?
 00FC  F6 C7 80				test	bh,80H				; Plus?
 00FF  75 04				jnz	GOTPLUS 			; Yes, not a separate arg
 0101  FE 06 0000 E			inc	[ARGC]				; found a real arg
 0105				GOTPLUS:
 0105  56				push	SI
 0106  A1 0000 E			mov	ax,[STARTEL]
 0109  BE 0000 E			mov	SI,offset trangroup:SCANBUF	; Adjust to copy
 010C  2B C6				sub	ax,SI
 010E  BF 0000 E			mov	DI,offset trangroup:DESTBUF
 0111  03 C7				add	ax,DI
 0113  A3 0000 E			mov	[DESTTAIL],AX
 0116  88 0E 0000 E			mov	[DESTSIZ],cl			; Save its size
 011A  41				inc	cx				; Include the nul
 011B  F3/ A4				rep	movsb				; Save potential destination
 011D  88 3E 0000 E			mov	[DESTINFO],bh			; Save info about it
 0121  C7 06 0000 E 0000		mov	[DESTSWITCH],0			; reset switches
 0127  5E				pop	SI
 0128  EB 80				jmp	DESTSCAN			;AC018; keep going
				
 012A				CHECKDONE:
 012A  80 3E 0000 E 01			cmp	plus,1				; If a statement like "copy file+" is
 012F  75 14				jnz	cdcont				;  entered, complain about it.
 0131  80 3E 0000 E 01			cmp	argc,1
 0136  75 0D				jnz	cdcont
 0138  80 3E 0000 E 02			cmp	objcnt,2
 013D  75 06				jnz	cdcont
 013F  BA 0000 E			mov	dx,offset trangroup:overwr_ptr
 0142  E9 0000 E			jmp	coperr
 0145				cdcont:
 0145  A0 0000 E			mov	al,[PLUS]
 0148  A2 0000 E			mov	[CONCAT],al			; PLUS -> Concatination
 014B  D0 E0				shl	al,1
 014D  D0 E0				shl	al,1
 014F  A2 0000 E			mov	[INEXACT],al			; CONCAT -> inexact copy
 0152  A0 0000 E			mov	al,[ARGC]
 0155  0A C0				or	al,al				; Good number of args?
 0157  75 0B				jnz	TRY_TOO_MANY			;AC000; there are args, see if too many
 0159  BA 0000 E			MOV	DX,OFFSET TranGroup:Extend_Buf_ptr  ;AC000; get extended message pointer
 015C  C7 06 0000 E 0002		mov	Extend_Buf_ptr,LessArgs_ptr	;AN000; get "Required parameters missing" message nu
				mber
 0162  EB 0D				jmp	short cerror_parsej		;AN000; exit
				
 0164				TRY_TOO_MANY:
 0164  3C 02				cmp	al,2
 0166  76 11				jbe	ACOUNTOK
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-5
Copy                                                        

 0168  BA 0000 E			MOV	DX,OFFSET TranGroup:Extend_Buf_ptr  ;AC000; get extended message pointer
 016B  C7 06 0000 E 0001		mov	Extend_Buf_ptr,MoreArgs_ptr	;AN000; get "Too many parameters" message number
				
 0171				CERROR_PARSEJ:
 0171  C6 06 0000 E 02			mov	msg_disp_class,parse_msg_class	;AN000; set up parse error msg class
 0176				CERROR4J:
 0176  E9 0000 E			jmp	CERROR				; no, too many
				
 0179				ACOUNTOK:
 0179  BD 0000 E			mov	bp,offset trangroup:DESTVARS
 017C  3C 01				cmp	al,1
 017E  75 20				jnz	GOT2ARGS
 0180  A0 0000 E			mov	al,[CURDRV]			; Dest is default drive:*.*
 0183  04 41				add	al,capital_A
 0185  B4 3A				mov	ah,':'
 0187  C6 46 01 02			mov	[bp.SIZ],2
 018B  BF 0000 E			mov	di,offset trangroup:DESTBUF
 018E  AB				stosw
 018F  C7 06 0000 E 0000		mov	[DESTSWITCH],0			; no switches on dest
 0195  C6 46 04 02			mov	[bp.INFO],2			; Flag dest is ambig
 0199  C6 46 00 00			mov	[bp.ISDIR],0			; Know destination specs file
					invoke	SETSTARS
 019D  E8 0000 E             1		CALL    SETSTARS 
 01A0				GOT2ARGS:
 01A0  80 7E 01 02			cmp	[bp.SIZ],2
 01A4  75 16				jnz	NOTSHORTDEST
 01A6  B0 3A				mov	al,':'
 01A8  38 06 0001 E			cmp	[DESTBUF+1],al
 01AC  75 0E				jnz	NOTSHORTDEST			; Two char file name
 01AE  80 4E 04 02			or	[bp.INFO],2			; Know dest is d:
 01B2  BF 0002 E			mov	di,offset trangroup:DESTBUF + 2
 01B5  C6 46 00 00			mov	[bp.ISDIR],0			; Know destination specs file
					invoke	SETSTARS
 01B9  E8 0000 E             1		CALL    SETSTARS 
 01BC				NOTSHORTDEST:
 01BC  8B 7E 02				mov	di,[bp.TTAIL]
 01BF  80 3D 00				cmp	byte ptr [DI],0
 01C2  75 0B				jnz	CHKSWTCHES
 01C4  C6 46 00 02			mov	[bp.ISDIR],2			; Know destination is d:/
 01C8  80 4E 04 06			or	[bp.INFO],6
					invoke	SETSTARS
 01CC  E8 0000 E             1		CALL    SETSTARS 
 01CF				CHKSWTCHES:
				;AD018; mov	ax,[ALLSWITCH]
				;AD018; test	ax,NOT SwitchCopy
				;AD018; jz	NOT_BAD_SWITCH			;AN000; Switches are okay
				;AD018; MOV	DX,OFFSET TranGroup:Extend_Buf_ptr  ;AC000; get extended message pointer
				;AD018; mov	Extend_Buf_ptr,BadSwt_ptr	;AN000; get "Invalid switch" message number
				;AD018; jmp	short CERROR_PARSEJ		;AC000; Switch specified which is not known
				
				; Now know most of the information needed about the destination
				
				;AD018; NOT_BAD_SWITCH:
				if not ibmcopyright
 01CF  A1 0000 E			mov	ax, [allswitch]			; Which switches were requested?  Hmmm?
				endif
 01D2  A9 0010				TEST	AX,SwitchV			; Verify requested?
 01D5  74 14				JZ	NOVERIF 			; No
 01D7  B4 54				MOV	AH,GET_VERIFY_ON_WRITE
 01D9  CD 21				INT	int_command			; Get current setting
 01DB  1E				PUSH	DS
 01DC  8E 1E 0000 E			MOV	DS,[RESSEG]
				ASSUME	DS:RESGROUP
 01E0  32 E4				XOR	AH,AH
 01E2  A3 0000 E			MOV	[VERVAL],AX			; Save current setting
 01E5  1F				POP	DS
				ASSUME	DS:TRANGROUP
 01E6  B8 2E01				MOV	AX,(SET_VERIFY_ON_WRITE SHL 8) OR 1 ; Set verify
 01E9  CD 21				INT	int_command
 01EB				NOVERIF:
 01EB  33 ED				xor	bp,bp				; no switches
 01ED  BE 0081				mov	si,81H
 01F0  B3 2B				mov	bl,plus_chr			; include '+' as a delimiter
 01F2				SCANFSRC:
 01F2  BF 0000 E			mov	di,offset trangroup:SCANBUF
					invoke	CPARSE				; Parse first source name
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-6
Copy                                                        

 01F5  E8 0000 E             1		CALL    CPARSE 
 01F8  F6 C7 01				test	bh,1				; Switch?
 01FB  75 F5				jnz	SCANFSRC			; Yes, try again
 01FD  09 2E 0000 E			or	[DESTSWITCH],bp 		; Include copy wide switches on dest
 0201  F7 C5 0008			test	bp,SwitchB
 0205  75 11				jnz	NOSETCASC			; Binary explicit
 0207  80 3E 0000 E 00			cmp	[CONCAT],0
 020C  74 0A				JZ	NOSETCASC			; Not Concat
 020E  C6 06 0000 E 04			mov	[ASCII],SwitchA 		; Concat -> ASCII copy if no B switch
 0213  C6 06 0000 E FF			mov	[concat_xa],do_xa		;AN000; set up to do XA only on first file
 0218				NOSETCASC:
 0218  E8 06AD R			call	source_set
 021B  E8 026B R			call	FRSTSRC
 021E  E9 02C1 R			jmp	FIRSTENT
				
				PUBLIC	EndCopy
 0221				ENDCOPY:
 0221  E8 05A8 R			CALL	CLOSEDEST
 0224				ENDCOPY2:
 0224  E8 06EF R			call	deallocate_src_xa		;AN030; deallocate xa segment
					invoke	free_tpa			;AN000; Make sure work area
 0227  E8 0000 E             1		CALL    free_tpa 
					invoke	alloc_tpa			;AN000;   is reset properly
 022A  E8 0000 E             1		CALL    alloc_tpa 
 022D  BA 0000 E			MOV	DX,OFFSET TRANGROUP:COPIED_ptr
 0230  8B 36 0000 E			MOV	SI,[FILECNT]
 0234  89 36 0000 E			mov	copy_num,si
					invoke	std_printf
 0238  E8 0000 E             1		CALL    std_printf 
 023B  E9 0000 E			JMP	TCOMMAND			; Stack could be messed up
				
 023E				SRCNONEXIST:
 023E  80 3E 0000 E 00			cmp	[CONCAT],0
 0243  75 43				jnz	NEXTSRC 			; If in concat mode, ignore error
 0245  C6 06 0000 E 01			mov	msg_disp_class,ext_msg_class	     ;AN000; set up extended error msg class
 024A  BA 0000 E			mov	dx,offset TranGroup:Extend_Buf_ptr   ;AC000; get extended message pointer
 024D  C7 06 0000 E 0002		mov	Extend_Buf_ptr,error_file_not_found  ;AN000; get message number in control block
 0253  C7 06 0000 E 0000 E		mov	string_ptr_2,offset trangroup:srcbuf ;AC046; get address of failed string
 0259  C6 06 0000 E 01			mov	Extend_buf_sub,one_subst	     ;AC046; put number of subst in control block
 025E  E9 0000 E			jmp	COPERR
				
 0261				SOURCEPROC:
 0261  E8 06AD R			call	source_set
 0264  80 3E 0000 E 00			cmp	[CONCAT],0
 0269  75 0B				jnz	LEAVECFLAG			; Leave CFLAG if concatination
 026B				FRSTSRC:
 026B  33 C0				xor	ax,ax
 026D  A2 0000 E			mov	[CFLAG],al			; Flag destination not created
 0270  A3 0000 E			mov	[NXTADD],ax			; Zero out buffer
 0273  A2 0000 E			mov	DestClosed,AL
 0276				LEAVECFLAG:
 0276  89 36 0000 E			mov	[SRCPT],SI			; remember where we are
 027A  BF 0000 E			mov	di,offset trangroup:USERDIR1
 027D  BD 0000 E			mov	bp,offset trangroup:SRCVARS
					invoke	BUILDPATH			; Figure out everything about the source
 0280  E8 0000 E             1		CALL    BUILDPATH 
 0283  8B 36 0000 E			mov	si,[SRCTAIL]			; Create the search FCB
					return
 0287                        1	??0000: 
 0287  C3                    1		RET 
				
 0288				NEXTSRC:
 0288  80 3E 0000 E 00			cmp	[PLUS],0
 028D  75 02				jnz	MORECP
 028F				ENDCOPYJ2:
 028F  EB 90				jmp	ENDCOPY 			; Done
 0291				MORECP:
 0291  33 ED				xor	bp,bp				; no switches
 0293  8B 36 0000 E			mov	si,[SRCPT]
 0297  B3 2B				mov	bl,plus_chr			; include '+' as a delimiter
 0299				SCANSRC:
 0299  BF 0000 E			mov	di,offset trangroup:SCANBUF
					invoke	CPARSE				; Parse first source name
 029C  E8 0000 E             1		CALL    CPARSE 
 029F  72 EE				JC	EndCopyJ2			; if error, then end (trailing + case)
 02A1  F6 C7 80				test	bh,80H
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-7
Copy                                                        

 02A4  74 E9				jz	ENDCOPYJ2			; If no '+' we're done
 02A6  F6 C7 01				test	bh,1				; Switch?
 02A9  75 EE				jnz	SCANSRC 			; Yes, try again
 02AB  E8 0261 R			call	SOURCEPROC
 02AE  80 3E 0000 E 01			cmp	comma,1 			;g  was +,, found last time?
 02B3  75 07				jnz	nostamp 			;g  no - try for a file
 02B5  C6 06 0000 E 01			mov	plus_comma,1			;g  yes - set flag
 02BA  EB 82				jmp	srcnonexist			;g  we know we won't find it
 02BC				nostamp:					;g
 02BC  C6 06 0000 E 00			mov	plus_comma,0			;g  reset +,, flag
 02C1				FIRSTENT:
 02C1  BF 005C				mov	di,FCB
 02C4  B8 2900				mov	ax,PARSE_FILE_DESCRIPTOR SHL 8
 02C7  CD 21				INT	int_command
 02C9  80 3C 00				CMP	BYTE PTR [SI],0 		; parse everything?
 02CC  75 16				JNZ	SrchDone			; no, error, simulate no more search
 02CE  A1 0000 E			mov	ax,word ptr [SRCBUF]		; Get drive
 02D1  80 FC 3A				cmp	ah,':'
 02D4  74 02				jz	DRVSPEC1
 02D6  B0 40				mov	al,'@'
 02D8				DRVSPEC1:
 02D8  0C 20				or	al,20h
 02DA  2C 60				sub	al,60h
 02DC  A2 005C				mov	ds:[FCB],al
 02DF  B4 11				mov	ah,DIR_SEARCH_FIRST
 02E1  E8 03E2 R			call	SEARCH
 02E4				SrchDone:
 02E4  9C				pushf					; Save result of search
					invoke	RESTUDIR1			; Restore users dir
 02E5  E8 0000 E             1		CALL    RESTUDIR1 
 02E8  9D				popf
 02E9  74 03				jz	NEXTAMBIG0
 02EB  E9 023E R			jmp	SRCNONEXIST			; Failed
 02EE				NEXTAMBIG0:
 02EE  32 C0				xor	al,al
 02F0  86 06 0000 E			xchg	al,[FRSTSRCH]
 02F4  0A C0				or	al,al
 02F6  74 0B				jz	NEXTAMBIG
 02F8				SETNMEL:
 02F8  B9 000C				mov	cx,12
 02FB  BF 0000 E			mov	di,OFFSET TRANGROUP:SDIRBUF
 02FE  BE 0000 E			mov	si,OFFSET TRANGROUP:DIRBUF
 0301  F3/ A4				rep	movsb				; Save very first source name
 0303				NEXTAMBIG:
 0303  32 C0				xor	al,al
 0305  A2 0000 E			mov	[NOWRITE],al			; Turn off NOWRITE
 0308  8B 3E 0000 E			mov	di,[SRCTAIL]
 030C  BE 0001 E			mov	si,offset trangroup:DIRBUF + 1
					invoke	FCB_TO_ASCZ			; SRCBUF has complete name
 030F  E8 0000 E             1		CALL    FCB_TO_ASCZ 
 0312				MELDO:
 0312  80 3E 0000 E 00			cmp	[CONCAT],0
 0317  75 07				jnz	SHOWCPNAM			; Show name if concat
 0319  F6 06 0000 E 02			test	[SRCINFO],2			; Show name if multi
 031E  74 09				jz	DOREAD
 0320				SHOWCPNAM:
 0320  BA 0000 E			mov	dx,offset trangroup:file_name_ptr
					invoke	std_printf
 0323  E8 0000 E             1		CALL    std_printf 
					invoke	CRLF2
 0326  E8 0000 E             1		CALL    CRLF2 
 0329				DOREAD:
 0329  E8 03F3 R			call	DOCOPY
 032C  80 3E 0000 E 00			cmp	[CONCAT],0
 0331  75 0A				jnz	NODCLOSE			; If concat, do not close
 0333  E8 05A8 R			call	CLOSEDEST			; else close current destination
 0336  72 05				jc	NODCLOSE			; Concat flag got set, close didn't really happen
 0338  C6 06 0000 E 00			mov	[CFLAG],0			; Flag destination not created
 033D				NODCLOSE:
 033D  80 3E 0000 E 00			cmp	[CONCAT],0			; Check CONCAT again
 0342  74 0C				jz	NOFLUSH
					invoke	FLSHFIL 			; Flush output between source files on
 0344  E8 0000 E             1		CALL    FLSHFIL 
										; CONCAT so LOSTERR stuff works
										; correctly
 0347  F6 06 0000 E FF			TEST	[MELCOPY],0FFH
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-8
Copy                                                        

 034C  74 02				jz	NOFLUSH
 034E  EB 0C				jmp	SHORT DOMELCOPY
				
 0350				NOFLUSH:
 0350  E8 03D6 R			call	SEARCHNEXT			; Try next match
 0353  75 5D				jnz	NEXTSRCJ			; Finished with this source spec
 0355  C6 06 0000 E 00			mov	[DESTCLOSED],0			; Not created or concat ->...
 035A  EB A7				jmp	NEXTAMBIG			; Do next ambig
				
 035C				DOMELCOPY:
 035C  80 3E 0000 E FF			cmp	[MELCOPY],0FFH
 0361  74 0D				jz	CONTMEL
 0363  8B 36 0000 E			mov	SI,[SRCPT]
 0367  89 36 0000 E			mov	[MELSTART],si
 036B  C6 06 0000 E FF			mov	[MELCOPY],0FFH
 0370				CONTMEL:
 0370  33 ED				xor	BP,BP
 0372  8B 36 0000 E			mov	si,[SRCPT]
 0376  B3 2B				mov	bl,plus_chr
 0378				SCANSRC2:
 0378  BF 0000 E			mov	di,OFFSET TRANGROUP:SCANBUF
					invoke	CPARSE
 037B  E8 0000 E             1		CALL    CPARSE 
 037E  F6 C7 80				test	bh,80H
 0381  74 32				jz	NEXTMEL 			; Go back to start
 0383  F6 C7 01				test	bh,1				; Switch ?
 0386  75 F0				jnz	SCANSRC2			; Yes
 0388  E8 0261 R			call	SOURCEPROC
					invoke	RESTUDIR1
 038B  E8 0000 E             1		CALL    RESTUDIR1 
 038E  BF 0000 E			mov	di,OFFSET TRANGROUP:DESTFCB2
 0391  B8 2900				mov	ax,PARSE_FILE_DESCRIPTOR SHL 8
 0394  CD 21				INT	int_command
 0396  BB 0001 E			mov	bx,OFFSET TRANGROUP:SDIRBUF + 1
 0399  BE 0001 E			mov	si,OFFSET TRANGROUP:DESTFCB2 + 1
 039C  8B 3E 0000 E			mov	di,[SRCTAIL]
					invoke	BUILDNAME
 03A0  E8 0000 E             1		CALL    BUILDNAME 
 03A3  80 3E 0000 E 00			cmp	[CONCAT],0			; Are we concatenating?
 03A8  74 05				jz	meldoj				; No, continue.
				;
				; Yes, turn off nowrite because this part of the code is only reached after
				; the first file has been dealt with.
				;
 03AA  C6 06 0000 E 00			mov	[NOWRITE],0
 03AF				meldoj:
 03AF  E9 0312 R			jmp	MELDO
				
 03B2				NEXTSRCJ:
 03B2  E9 0288 R			jmp   NEXTSRC
				
 03B5				NEXTMEL:
 03B5  E8 05A8 R			call	CLOSEDEST
 03B8  33 C0				xor	ax,ax
 03BA  A2 0000 E			mov	[CFLAG],al
 03BD  A3 0000 E			mov	[NXTADD],ax
 03C0  A2 0000 E			mov	[DESTCLOSED],al
 03C3  8B 36 0000 E			mov	si,[MELSTART]
 03C7  89 36 0000 E			mov	[SRCPT],si
 03CB  E8 03D6 R			call	SEARCHNEXT
 03CE  74 03				jz	SETNMELJ
 03D0  E9 0224 R			jmp	ENDCOPY2
 03D3				SETNMELJ:
 03D3  E9 02F8 R			jmp	SETNMEL
				
 03D6				SEARCHNEXT:
 03D6  B4 12				MOV	AH,DIR_SEARCH_NEXT
 03D8  F6 06 0000 E 02			TEST	[SRCINFO],2
 03DD  75 03				JNZ	SEARCH				; Do search-next if ambig
 03DF  0A E4				OR	AH,AH				; Reset zero flag
					return
 03E1                        1	??0001: 
 03E1  C3                    1		RET 
 03E2				SEARCH:
 03E2  50				PUSH	AX
 03E3  B4 1A				MOV	AH,SET_DMA
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-9
Copy                                                        

 03E5  BA 0000 E			MOV	DX,OFFSET TRANGROUP:DIRBUF
 03E8  CD 21				INT	int_command			; Put result of search in DIRBUF
 03EA  58				POP	AX				; Restore search first/next command
 03EB  BA 005C				MOV	DX,FCB
 03EE  CD 21				INT	int_command			; Do the search
 03F0  0A C0				OR	AL,AL
					return
 03F2                        1	??0002: 
 03F2  C3                    1		RET 
				
 03F3				DOCOPY:
 03F3  BE 0000 E			mov	si,offset trangroup:SRCBUF	;g do name translate of source
 03F6  BF 0000 E			mov	di,offset trangroup:SRCXNAME	;g save for name comparison
 03F9  B4 60				mov	ah,xnametrans			;g
 03FB  CD 21				int	int_command			;g
				
 03FD  C6 06 0000 E 00			mov	[RDEOF],0			; No EOF yet
				
 0402  B8 6C00				MOV	AX,EXTOPEN SHL 8		;AC000; open the file
 0405  BB 0000				mov	bx,read_open_mode		;AN000; get open mode for COPY
 0408  33 C9				xor	cx,cx				;AN000; no special files
 040A  BA 0101				mov	dx,read_open_flag		;AN000; set up open flags
 040D  BF FFFF				mov	di,-1				;AN030; no parameter list
 0410  CD 21				INT	int_command
				
 0412  73 03				jnc	OpenOK
				;
				; Bogosity:  IBM wants us to issue Access denied in this case.	THey asked
				; for it...
				;
 0414  E9 04D9 R			jmp	error_on_source 		;AC022; clean up and exit
				
 0417				OpenOK:
 0417  8B D8				mov	bx,ax				; Save handle
 0419  89 1E 0000 E			mov	[SRCHAND],bx			; Save handle
 041D  B8 5700				mov	ax,(FILE_TIMES SHL 8)
 0420  CD 21				INT	int_command
 0422  72 36				jc	src_cp_error			;AN022; If error, exit
 0424  89 16 0000 E			mov	[CPDATE],dx			; Save DATE
 0428  89 0E 0000 E			mov	[CPTIME],cx			; Save TIME
				
 042C  8B 0E 0000 E			mov	cx,xa_list_attr 		;AN000; get old code page in cx
 0430  51				push	cx				;AN000; save old attribute
 0431  C7 06 0000 E 0000		mov	xa_list_attr,0			;AN000; initialize code page
				
 0437  B8 5702				mov	ax,(file_times SHL 8)+get_XA	;AC030; get extended attribute size
 043A  BE FFFF				mov	si,-1				;AN030; no querylist
 043D  33 C9				xor	cx,cx				;AN030; indicate we want size
 043F  CD 21				int	int_command			;AC000;
 0441  73 07				jnc @F
 0443  3D 0001				cmp ax, 1
 0446  75 12				jne src_cp_error			;AN022; If error, exit
 0448  33 C9				xor cx, cx
 044A				@@:
 044A  89 0E 0000 E			mov	src_xa_size,cx			;AN000; save size
 044E  85 C9				test cx, cx				;AN000; are there any?
 0450  59				pop	cx				;AN000; get old attribute
 0451  74 0A				jz	no_cp_get			;AN030; no - don't get attributes
				
 0453  51				push	cx				;AN030; save old code page
					invoke	get_file_code_page_tag		;AN000; get file's code page
 0454  E8 0000 E             1		CALL    get_file_code_page_tag 
 0457  59				pop	cx				;AN030	retrieve old code page
 0458  73 03				jnc	no_cp_get			;AN000; no error - continue
 045A				src_cp_error:					;AN022;
 045A  EB 7D 90				jmp	error_on_source 		;AC022; and exit
				
 045D				no_cp_get:
 045D  80 3E 0000 E 00			cmp	[concat],0			;AN000; are we doing concatenation
 0462  74 16				jz	get_src_xa			;AN000; no get source extended attrib
 0464  80 3E 0000 E FF			cmp	[concat_xa],do_xa		;AN000; is this the first file?
 0469  74 0F				jz	get_src_xa			;AN000; yes - get extended attributes
 046B  3B 0E 0000 E			cmp	cx,xa_list_attr 		;AN000; no - see if code pages match
 046F  74 06				jz	no_copy_xa_jmp			;AN000; code pages match - continue
 0471  C7 06 0000 E 0000		mov	xa_list_attr,inv_cp_tag 	;AN000; set invalid code page tag
 0477				no_copy_xa_jmp: 				;AC022;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-10
Copy                                                        

 0477  E9 0501 R			jmp	no_copy_xa			;AN000; don't get extended attributes
				
 047A				get_src_xa:
 047A  E8 06EF R			call	deallocate_src_xa		;AN030; deallocate any existing XA segment
 047D  83 3E 0000 E 00			cmp	src_xa_size,0			;AN000; are there any extended attributes?
 0482  74 F3				jz	no_copy_xa_jmp			;AC022; nothing there - don't allocate memory
 0484  53				push	bx				;AN000; save handle
					invoke	free_tpa			;AN000; need to make free memory, first
 0485  E8 0000 E             1		CALL    free_tpa 
 0488  8B 1E 0000 E			mov	bx,src_xa_size			;AN000; get bytes (size of XA) into bx
 048C  B1 04				mov	cl,4				;AN000; divide bytes by 16 to convert
 048E  D3 EB				shr	bx,cl				;AN000;    to paragraphs
 0490  43				inc	bx				;AN000; round up
 0491  B8 4800				mov	ax,(alloc SHL 8)		;AN000; allocate memory for XA
 0494  CD 21				int	int_command			;AN000;
 0496  9C				pushf					;AN000; save flags
 0497  A3 0000 E			mov	[src_xa_seg], AX		;AN000; save new segment
 049A  1E				push	ds				;AN030; get resident segment
 049B  8E 1E 0000 E			mov	ds,[resseg]			;AN030;   and save copy of xa
					assume	ds:resgroup			;AN030;   segment in resident
 049F  A3 0000 E			mov	[rsrc_xa_seg],ax		;AN030;   in case user breaks
 04A2  1F				pop	ds				;AN030;   out or has critical
					assume	ds:trangroup			;AN030;   error
					invoke	alloc_tpa			;AN000; reallocate the work area
 04A3  E8 0000 E             1		CALL    alloc_tpa 
 04A6  9D				popf					;AN000; restore flags
 04A7  5B				pop	bx				;AN000; restore handle
 04A8  73 14				jnc	Alloc_for_xa_okay		;AN000; no carry - everything okay
 04AA  E8 059F R			call	closesrc			;AN000; close the source file
 04AD  C6 06 0000 E 01			mov	msg_disp_class,ext_msg_class	       ;AN000; set up extended error msg class
 04B2  BA 0000 E			mov	dx,offset TranGroup:Extend_Buf_ptr     ;AC000; get extended message pointer
 04B5  C7 06 0000 E 0008		mov	Extend_Buf_ptr,error_not_enough_memory ;AN000; get message number in control block
 04BB  E9 0000 E			jmp	cerror				;AN000; exit
				
 04BE				Alloc_for_xa_okay:
				
 04BE  B8 5702				mov	ax,(file_times SHL 8)+get_XA	;AN000; get extended attributes
 04C1  06				push	es				;AN000; save es
 04C2  8E 06 0000 E			mov	es,[src_xa_seg] 		;AN000; get segment for XA list
 04C6  33 FF				xor	di,di				;AN000; offset of return list
 04C8  BE FFFF				mov	si,-1				;AN030; get all attributes
 04CB  8B 0E 0000 E			mov	cx,[src_xa_size]		;AN000; get size of list
 04CF  CD 21				int	int_command			;AN000; get all the attributes
 04D1  07				pop	es				;AN000; restore es
 04D2  73 2D				jnc	no_copy_xa			;AC022; no error - continue
 04D4  3D 0001				cmp ax, 1
 04D7  74 28				je no_copy_xa
				
 04D9				error_on_source:				;AN022; we have a BAD error
					invoke	set_ext_error_msg		;AN022; set up the error message
 04D9  E8 0000 E             1		CALL    set_ext_error_msg 
 04DC  C7 06 0000 E 0000 E		mov	string_ptr_2,offset trangroup:srcbuf ;AN022; get address of failed string
 04E2  C6 06 0000 E 01			mov	Extend_buf_sub,one_subst	;AN022; put number of subst in control block
					invoke	std_Eprintf			;AN022; print it
 04E7  E8 0000 E             1		CALL    std_Eprintf 
 04EA  83 3E 0000 E 00			cmp	[srchand],0			;AN022; did we open the file?
 04EF  74 03				jz	no_close_src			;AN022; no - don't close
 04F1  E8 059F R			call	closesrc			;AN022; clean up
 04F4				no_close_src:					;AN022;
 04F4  80 3E 0000 E 00			cmp	[cflag],0			;AN022; was destination created?
 04F9  74 03				jz	endcopyj3			;AN022; no - just cleanup and exit
 04FB  E9 0221 R			jmp	endcopy 			;AN022; clean up concatenation and exit
 04FE				endcopyj3:					;AN022;
 04FE  E9 0224 R			jmp	endcopy2			;AN022;
 0501				no_copy_xa:
 0501  8B 1E 0000 E			mov	bx,[srchand]			;AN022; get handle back
 0505  B8 4400				mov	ax,(IOCTL SHL 8)
 0508  CD 21				INT	int_command			; Get device stuff
 050A  80 E2 80				and	dl,devid_ISDEV
 050D  88 16 0000 E			mov	[SRCISDEV],dl			; Set source info
 0511  74 0D				jz	COPYLP				; Source not a device
 0513  80 3E 0000 E 00			cmp	[BINARY],0
 0518  74 06				jz	COPYLP				; ASCII device OK
 051A  BA 0000 E			mov	dx,offset trangroup:INBDEV_ptr	; Cannot do binary input
 051D  E9 0000 E			jmp	COPERR
				
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-11
Copy                                                        

 0520				COPYLP:
 0520  8B 1E 0000 E			mov	bx,[SRCHAND]
 0524  8B 0E 0000 E			mov	cx,[BYTCNT]
 0528  8B 16 0000 E			mov	dx,[NXTADD]
 052C  2B CA				sub	cx,dx				; Compute available space
 052E  75 0E				jnz	GOTROOM
					invoke	FLSHFIL
 0530  E8 0000 E             1		CALL    FLSHFIL 
 0533  80 3E 0000 E 00			CMP	[TERMREAD],0
 0538  75 65				JNZ	CLOSESRC			; Give up
 053A  8B 0E 0000 E			mov	cx,[BYTCNT]
 053E				GOTROOM:
 053E  1E				push	ds
 053F  8E 1E 0000 E			mov	ds,[TPA]
				ASSUME	DS:NOTHING
 0543  B4 3F				mov	ah,READ
 0545  CD 21				INT	int_command
 0547  1F				pop	ds
				ASSUME	DS:TRANGROUP
 0548  72 8F				jc	error_on_source 		;AC022; Give up if error
 054A  8B C8				mov	cx,ax				; Get count
 054C  E3 51				jcxz	CLOSESRC			; No more to read
 054E  80 3E 0000 E 00			cmp	[SRCISDEV],0
 0553  75 07				jnz	NOTESTA 			; Is a device, ASCII mode
 0555  80 3E 0000 E 00			cmp	[ASCII],0
 055A  74 1B				jz	BINREAD
 055C				NOTESTA:
 055C  8B D1				MOV	DX,CX
 055E  8B 3E 0000 E			MOV	DI,[NXTADD]
 0562  B0 1A				MOV	AL,1AH
 0564  06				PUSH	ES
 0565  8E 06 0000 E			MOV	ES,[TPA]
 0569  F2/ AE				REPNE	SCASB				; Scan for EOF
 056B  07				POP	ES
 056C  75 05				JNZ	USEALL
 056E  FE 06 0000 E			INC	[RDEOF]
 0572  41				INC	CX
 0573				USEALL:
 0573  2B D1				SUB	DX,CX
 0575  8B CA				MOV	CX,DX
 0577				BINREAD:
 0577  03 0E 0000 E			ADD	CX,[NXTADD]
 057B  89 0E 0000 E			MOV	[NXTADD],CX
 057F  3B 0E 0000 E			CMP	CX,[BYTCNT]			; Is buffer full?
 0583  72 0C				JB	TESTDEV 			; If not, we may have found EOF
					invoke	FLSHFIL
 0585  E8 0000 E             1		CALL    FLSHFIL 
 0588  80 3E 0000 E 00			CMP	[TERMREAD],0
 058D  75 10				JNZ	CLOSESRC			; Give up
 058F  EB 8F				JMP	SHORT COPYLP
				
 0591				TESTDEV:
 0591  80 3E 0000 E 00			cmp	[SRCISDEV],0
 0596  74 07				JZ	CLOSESRC			; If file then EOF
 0598  80 3E 0000 E 00			CMP	[RDEOF],0
 059D  74 81				JZ	COPYLP				; On device, go till ^Z
 059F				CLOSESRC:
 059F  8B 1E 0000 E			mov	bx,[SRCHAND]
 05A3  B4 3E				mov	ah,CLOSE
 05A5  CD 21				INT	int_command
					return
 05A7                        1	??0003: 
 05A7  C3                    1		RET 
				
				;
				; We are called to close the destination.  We need to note whether or not
				; there is any internal data left to be flushed out.
				;
 05A8				CLOSEDEST:
 05A8  80 3E 0000 E 00			cmp	[DESTCLOSED],0
					retnz					; Don't double close
 05AD  75 F8                 2		    ??0004:  jnz    ret_l           ; 
 05AF  A0 0000 E			MOV	AL,BYTE PTR [DESTSWITCH]
					invoke	SETASC				; Check for B or A switch on destination
 05B2  E8 0000 E             1		CALL    SETASC 
 05B5  74 34				JZ	BINCLOS
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-12
Copy                                                        

 05B7  8B 1E 0000 E			MOV	BX,[NXTADD]
 05BB  3B 1E 0000 E			CMP	BX,[BYTCNT]			; Is memory full?
 05BF  75 09				JNZ	PUTZ
					invoke	TRYFLUSH			; Make room for one lousy byte
 05C1  E8 0000 E             1		CALL    TRYFLUSH 
 05C4  74 02				jz	NOCONC
 05C6				CONCHNG:					; Concat flag changed on us
 05C6  F9				stc
					return
 05C7                        1	??0005: 
 05C7  C3                    1		RET 
 05C8				NOCONC:
 05C8  33 DB				XOR	BX,BX
 05CA				PUTZ:
 05CA  1E				PUSH	DS
 05CB  8E 1E 0000 E			MOV	DS,[TPA]
 05CF  C7 07 001A			MOV	WORD PTR [BX],1AH		; Add End-of-file mark (Ctrl-Z)
 05D3  1F				POP	DS
 05D4  FF 06 0000 E			INC	[NXTADD]
 05D8  C6 06 0000 E 00			MOV	[NOWRITE],0			; Make sure our ^Z gets written
 05DD  A1 0000 E			MOV	AX,[WRITTEN]
 05E0  03 06 0000 E			ADD	AX,[NXTADD]
 05E4  72 05				JC	BINCLOS 			; > 1
 05E6  3D 0001				CMP	AX,1
 05E9  74 0A				JZ	FORGETITJ			; WRITTEN = 0 NXTADD = 1 (the ^Z)
 05EB				BINCLOS:
					invoke	TRYFLUSH
 05EB  E8 0000 E             1		CALL    TRYFLUSH 
 05EE  75 D6				jnz	CONCHNG
 05F0  83 3E 0000 E 00			cmp	[WRITTEN],0
 05F5				ForgetItJ:
 05F5  75 03				jnz	no_forget			;AC000; Wrote something
 05F7  E9 0693 R			jmp	FORGETIT			;AC000; Never wrote nothing
 05FA				no_forget:
 05FA  8B 1E 0000 E			MOV	BX,[DESTHAND]
 05FE  8B 0E 0000 E			MOV	CX,[CPTIME]
 0602  8B 16 0000 E			MOV	DX,[CPDATE]
 0606  80 3E 0000 E 00			CMP	[INEXACT],0			; Copy not exact?
 060B  74 31				JZ	DODCLOSE			; If no, copy date & time
 060D  B4 2C				MOV	AH,GET_TIME
 060F  CD 21				INT	int_command
 0611  D0 E1				SHL	CL,1
 0613  D0 E1				SHL	CL,1				; Left justify min in CL
 0615  D1 E1				SHL	CX,1
 0617  D1 E1				SHL	CX,1
 0619  D1 E1				SHL	CX,1				; hours to high 5 bits, min to 5-10
 061B  D0 EE				SHR	DH,1				; Divide seconds by 2 (now 5 bits)
 061D  0A CE				OR	CL,DH				; And stick into low 5 bits of CX
 061F  51				PUSH	CX				; Save packed time
 0620  B4 2A				MOV	AH,GET_DATE
 0622  CD 21				INT	int_command
 0624  81 E9 07BC			SUB	CX,1980
 0628  86 E9				XCHG	CH,CL
 062A  D1 E1				SHL	CX,1				; Year to high 7 bits
 062C  D0 E6				SHL	DH,1				; Month to high 3 bits
 062E  D0 E6				SHL	DH,1
 0630  D0 E6				SHL	DH,1
 0632  D0 E6				SHL	DH,1
 0634  D0 E6				SHL	DH,1				; Most sig bit of month in carry
 0636  80 D5 00				ADC	CH,0				; Put that bit next to year
 0639  0A D6				OR	DL,DH				; Or low three of month into day
 063B  8A F5				MOV	DH,CH				; Get year and high bit of month
 063D  59				POP	CX				; Get time back
 063E				DODCLOSE:
 063E  83 FB 00				CMP	BX,0
 0641  7E 46				JLE	CloseDone
 0643  B8 5701				MOV	AX,(FILE_TIMES SHL 8) OR 1
 0646  CD 21				INT	int_command			; Set date and time
 0648  72 29				jc	xa_cleanup_err			;AN022; handle error
				
 064A  B8 5704				mov	ax,(file_times SHL 8)+set_XA	;AN000; set code page
 064D  BF 0000 E			mov	di,offset trangroup:xa_cp_out	;AC030; offset of attr list
 0650  CD 21				int	int_command			;AN000;
 0652  73 05				jnc no_xa_cleanup_err
 0654  3D 0001				cmp ax, 1
 0657  75 1A				jne xa_cleanup_err			;AN030; exit if error
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-13
Copy                                                        

				
				;
				; See if the destination has *anything* in it.	If not, just close and delete
				; it.
				;
 0659				no_xa_cleanup_err:
 0659  B8 4202				mov	ax,(lseek shl 8) + 2		; seek to EOF
 065C  33 D2				xor	dx,dx
 065E  8B CA				mov	cx,dx
 0660  CD 21				int	21h
				;
				; DX:AX is file size
				;
 0662  0B D0				or	dx,ax
 0664  9C				pushf
 0665  B8 4400				mov	ax,(IOCTL SHL 8) + 0		; get the destination attributes
 0668  CD 21				int	21h
 066A  52				push	dx				; save them away
 066B  B4 3E				MOV	AH,CLOSE
 066D  CD 21				INT	int_command
 066F  5A				pop	dx
 0670  73 09				jnc	close_cont			;AN022; handle error on close
 0672  9D				popf					;AN022; get the flags back
 0673				xa_cleanup_err: 				;AN022;
 0673  E8 06D6 R			call	cleanuperr			;AN022; attempt to delete the target
 0676  E8 06A5 R			call	DestDelete			;AN022; attempt to delete the target
 0679  EB 12				jmp	short fileclosed		;AN022; close the file
 067B				close_cont:					;AN022; no error - continue
 067B  9D				popf
 067C  75 0B				jnz	CloseDone
 067E  F7 C2 0080			test	dx,80h				; is the destination a device?
 0682  75 05				jnz	CloseDone			; yes, copy succeeded
 0684  E8 06A5 R			call	DestDelete
 0687  EB 04				jmp	short FileClosed
 0689				CloseDone:
 0689  FF 06 0000 E			INC	[FILECNT]
 068D				FileClosed:
 068D  FE 06 0000 E			INC	[DESTCLOSED]
 0691				RET50:
 0691  F8				CLC
					return
 0692                        1	??0006: 
 0692  C3                    1		RET 
				
				
 0693				FORGETIT:
 0693  8B 1E 0000 E			MOV	BX,[DESTHAND]
 0697  E8 063E R			CALL	DODCLOSE			; Close the dest
 069A  E8 06A5 R			call	DestDelete
 069D  C7 06 0000 E 0000		MOV	[FILECNT],0			; No files transferred
 06A3  EB EC				JMP	RET50
				
 06A5				DestDelete:
 06A5  BA 0000 E			MOV	DX,OFFSET TRANGROUP:DESTBUF
 06A8  B4 41				MOV	AH,UNLINK
 06AA  CD 21				INT	int_command			; And delete it
					return
 06AC                        1	??0007: 
 06AC  C3                    1		RET 
				
 06AD				source_set	proc near
				
 06AD  56				push	SI
 06AE  A1 0000 E			mov	ax,[STARTEL]
 06B1  BE 0000 E			mov	SI,offset trangroup:SCANBUF	; Adjust to copy
 06B4  2B C6				sub	ax,SI
 06B6  BF 0000 E			mov	DI,offset trangroup:SRCBUF
 06B9  03 C7				add	ax,DI
 06BB  A3 0000 E			mov	[SRCTAIL],AX
 06BE  88 0E 0000 E			mov	[SRCSIZ],cl			; Save its size
 06C2  41				inc	cx				; Include the nul
 06C3  F3/ A4				rep	movsb				; Save this source
 06C5  88 3E 0000 E			mov	[SRCINFO],bh			; Save info about it
 06C9  5E				pop	SI
 06CA  8B C5				mov	ax,bp				; Switches so far
					invoke	SETASC				; Set A,B switches accordingly
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-14
Copy                                                        

 06CC  E8 0000 E             1		CALL    SETASC 
					invoke	SWITCH				; Get any more switches on this arg
 06CF  E8 0000 E             1		CALL    SWITCH 
					invoke	SETASC				; Set
 06D2  E8 0000 E             1		CALL    SETASC 
					return
 06D5                        1	??0008: 
 06D5  C3                    1		RET 
				
 06D6				source_set	endp
				
				
				;****************************************************************
				;*
				;* ROUTINE:	Cleanuperr
				;*
				;* FUNCTION:	Issues extended error message for destination
				;*		if not alreay issued
				;*
				;* INPUT:	return from INT 21
				;*
				;* OUTPUT:	none
				;*
				;****************************************************************
				
 06D6				cleanuperr	proc	near			;AN022;
				
 06D6  80 3E 0000 E 00			cmp	msg_flag,0			;AN022; have we already issued a message?
 06DB  75 11				jnz	cleanuperr_cont 		;AN022; yes - don't issue duplicate error
					invoke	set_ext_error_msg		;AN022; set up error message
 06DD  E8 0000 E             1		CALL    set_ext_error_msg 
 06E0  C7 06 0000 E 0000 E		mov	string_ptr_2,offset trangroup:destbuf ;AN022; get address of failed string
 06E6  C6 06 0000 E 01			mov	Extend_buf_sub,one_subst	;AN022; put number of subst in control block
					invoke	std_eprintf			;AN022; issue the error message
 06EB  E8 0000 E             1		CALL    std_eprintf 
 06EE				cleanuperr_cont:				;AN022;
				
 06EE  C3				ret					;AN022; return to caller
 06EF				cleanuperr	endp				;AN022;
				
				;****************************************************************
				;*
				;* ROUTINE:	Deallocate_Src_XA
				;*
				;* FUNCTION:	Deallocates source extended attribute segment
				;*		and resets both resident and transient variables.
				;*
				;*
				;* INPUT:	none
				;*
				;* OUTPUT:	none
				;*
				;****************************************************************
				
 06EF				Deallocate_Src_XA  proc    near 		;AN030;
				
 06EF  83 3E 0000 E FF			cmp	[src_xa_seg],no_xa_seg		;AN030; has any XA segment been allocated
 06F4  74 1D				jz	no_src_xa			;AN030; no - continue
 06F6  06				push	es				;AN030;
 06F7  8E 06 0000 E			mov	es,src_xa_seg			;AN030; yes - free it
 06FB  B8 4900				mov	ax,(Dealloc SHL 8)		;AN030; Deallocate memory call
 06FE  CD 21				int	int_command			;AN030;
 0700  07				pop	es				;AN030;
 0701  C7 06 0000 E FFFF		mov	[src_xa_seg],no_xa_seg		;AN030; reset to no segment
 0707  1E				push	ds				;AN030; reinitialize resident
 0708  8E 1E 0000 E			mov	ds,[resseg]			;AN030;   copy of xa segment
					assume	ds:resgroup			;AN030;
 070C  C7 06 0000 E FFFF		mov	[rsrc_xa_seg],no_xa_seg 	;AN030; reset to no segment
 0712  1F				pop	ds				;AN030;
					assume	ds:trangroup			;AN030;
 0713				no_src_xa:					;AN030;
				
 0713  C3				ret					;AN030; return to caller
 0714				Deallocate_Src_XA  endp 			;AN030;
				
				
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Page     1-15
Copy                                                        

 0714				TRANCODE	ENDS
					END

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-1


Macros:

		N a m e			Lines

ARGVAR . . . . . . . . . . . . .  	  23
ASMVAR . . . . . . . . . . . . .  	   3
ASMVARS  . . . . . . . . . . . .  	   3
ASSERT . . . . . . . . . . . . .  	   0
CALLINSTALL  . . . . . . . . . .  	  12
DOSASSUME  . . . . . . . . . . .  	   3
ENTER  . . . . . . . . . . . . .  	   3
ENTERCRIT  . . . . . . . . . . .  	   1
ERRNZ  . . . . . . . . . . . . .  	   4
FMT  . . . . . . . . . . . . . .  	   0
LEAVE  . . . . . . . . . . . . .  	   2
LEAVECRIT  . . . . . . . . . . .  	   1
LOCALVAR . . . . . . . . . . . .  	  23
TRAP . . . . . . . . . . . . . .  	   6

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

ARENA  . . . . . . . . . . . . .  	0010	0005
  ARENA_SIGNATURE  . . . . . . .  	0000
  ARENA_OWNER  . . . . . . . . .  	0001
  ARENA_SIZE . . . . . . . . . .  	0003
  ARENA_RESERVED . . . . . . . .  	0005
  ARENA_NAME . . . . . . . . . .  	0008
ARGV_ELE . . . . . . . . . . . .  	000B	0006
  ARGPOINTER . . . . . . . . . .  	0000
  ARGFLAGS . . . . . . . . . . .  	0002
  ARGSTARTEL . . . . . . . . . .  	0003
  ARGLEN . . . . . . . . . . . .  	0005
  ARGSW_WORD . . . . . . . . . .  	0007
  ARG_OCOMPTR  . . . . . . . . .  	0009
ARG_UNIT . . . . . . . . . . . .  	0544	0005
  ARGV . . . . . . . . . . . . .  	0000
  ARGVCNT  . . . . . . . . . . .  	02C0
  ARGSWINFO  . . . . . . . . . .  	02C2
  ARGBUF . . . . . . . . . . . .  	02C4
  ARGFORCOMBUF . . . . . . . . .  	04C4
A_BPB  . . . . . . . . . . . . .  	001F	000F
  BPB_BYTESPERSECTOR . . . . . .  	0000
  BPB_SECTORSPERCLUSTER  . . . .  	0002
  BPB_RESERVEDSECTORS  . . . . .  	0003
  BPB_NUMBEROFFATS . . . . . . .  	0005
  BPB_ROOTENTRIES  . . . . . . .  	0006
  BPB_TOTALSECTORS . . . . . . .  	0008
  BPB_MEDIADESCRIPTOR  . . . . .  	000A
  BPB_SECTORSPERFAT  . . . . . .  	000B
  BPB_SECTORSPERTRACK  . . . . .  	000D
  BPB_HEADS  . . . . . . . . . .  	000F
  BPB_HIDDENSECTORS  . . . . . .  	0011
  BPB_BIGTOTALSECTORS  . . . . .  	0015
BATCHSEGMENT . . . . . . . . . .  	0020	0008
  BATTYPE  . . . . . . . . . . .  	0000
  BATECHOFLAG  . . . . . . . . .  	0001
  BATLAST  . . . . . . . . . . .  	0002
  BATFORPTR  . . . . . . . . . .  	0004
  BATFORFLAG . . . . . . . . . .  	0006
  BATSEEK  . . . . . . . . . . .  	0007
  BATPARM  . . . . . . . . . . .  	000B
  BATFILE  . . . . . . . . . . .  	001F
BPBLOCK  . . . . . . . . . . . .  	000D	0008
  BPSECSZ  . . . . . . . . . . .  	0000
  BPCLUS . . . . . . . . . . . .  	0002
  BPRES  . . . . . . . . . . . .  	0003
  BPFTCNT  . . . . . . . . . . .  	0005
  BPDRCNT  . . . . . . . . . . .  	0006
  BPSCCNT  . . . . . . . . . . .  	0008
  BPMEDIA  . . . . . . . . . . .  	000A
  BPFTSEC  . . . . . . . . . . .  	000B
BUFFER_HASH_ENTRY  . . . . . . .  	0008	0004
  EMS_PAGE_NUM . . . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-2


  BUFFER_BUCKET  . . . . . . . .  	0002
  DIRTY_COUNT  . . . . . . . . .  	0006
  BUFFER_RESERVED  . . . . . . .  	0007
BUFFINFO . . . . . . . . . . . .  	0023	000F
  HASH_PTR . . . . . . . . . . .  	0000
  HASH_COUNT . . . . . . . . . .  	0004
  CACHE_PTR  . . . . . . . . . .  	0006
  CACHE_COUNT  . . . . . . . . .  	000A
  EMS_SAFE_FLAG  . . . . . . . .  	000C
  EMS_LAST_PAGE  . . . . . . . .  	000D
  EMS_FIRST_PAGE . . . . . . . .  	0011
  EMS_NPA640 . . . . . . . . . .  	0015
  EMS_MODE . . . . . . . . . . .  	0017
  EMS_HANDLE . . . . . . . . . .  	0018
  EMS_PAGEFRAME_NUMBER . . . . .  	001A
  EMS_SEG_CNT  . . . . . . . . .  	001C
  EMS_PAGE_FRAME . . . . . . . .  	001E
  EMS_RESERVED . . . . . . . . .  	0020
  EMS_MAP_BUFF . . . . . . . . .  	0022
CURDIR_LIST  . . . . . . . . . .  	0058	000A
  CURDIR_TEXT  . . . . . . . . .  	0000
  CURDIR_FLAGS . . . . . . . . .  	0043
  CURDIR_DEVPTR  . . . . . . . .  	0045
  CURDIR_ID  . . . . . . . . . .  	0049
  CURDIR_USER_WORD . . . . . . .  	004D
  CURDIR_END . . . . . . . . . .  	004F
  CURDIR_TYPE  . . . . . . . . .  	0051
  CURDIR_IFS_HDR . . . . . . . .  	0052
  CURDIR_FSDA  . . . . . . . . .  	0056
DIR_ENTRY  . . . . . . . . . . .  	0020	000B
  DIR_NAME . . . . . . . . . . .  	0000
  DIR_ATTR . . . . . . . . . . .  	000B
  DIR_CODEPG . . . . . . . . . .  	000C
  DIR_EXTCLUSTER . . . . . . . .  	000E
  DIR_ATTR2  . . . . . . . . . .  	0010
  DIR_PAD  . . . . . . . . . . .  	0011
  DIR_TIME . . . . . . . . . . .  	0016
  DIR_DATE . . . . . . . . . . .  	0018
  DIR_FIRST  . . . . . . . . . .  	001A
  DIR_SIZE_L . . . . . . . . . .  	001C
  DIR_SIZE_H . . . . . . . . . .  	001E
DPB  . . . . . . . . . . . . . .  	0021	0012
  DPB_DRIVE  . . . . . . . . . .  	0000
  DPB_UNIT . . . . . . . . . . .  	0001
  DPB_SECTOR_SIZE  . . . . . . .  	0002
  DPB_CLUSTER_MASK . . . . . . .  	0004
  DPB_CLUSTER_SHIFT  . . . . . .  	0005
  DPB_FIRST_FAT  . . . . . . . .  	0006
  DPB_FAT_COUNT  . . . . . . . .  	0008
  DPB_ROOT_ENTRIES . . . . . . .  	0009
  DPB_FIRST_SECTOR . . . . . . .  	000B
  DPB_MAX_CLUSTER  . . . . . . .  	000D
  DPB_FAT_SIZE . . . . . . . . .  	000F
  DPB_DIR_SECTOR . . . . . . . .  	0011
  DPB_DRIVER_ADDR  . . . . . . .  	0013
  DPB_MEDIA  . . . . . . . . . .  	0017
  DPB_FIRST_ACCESS . . . . . . .  	0018
  DPB_NEXT_DPB . . . . . . . . .  	0019
  DPB_NEXT_FREE  . . . . . . . .  	001D
  DPB_FREE_CNT . . . . . . . . .  	001F
EXEC0  . . . . . . . . . . . . .  	000E	0004
  EXEC0_ENVIRON  . . . . . . . .  	0000
  EXEC0_COM_LINE . . . . . . . .  	0002
  EXEC0_5C_FCB . . . . . . . . .  	0006
  EXEC0_6C_FCB . . . . . . . . .  	000A
EXEC1  . . . . . . . . . . . . .  	0016	0008
  EXEC1_ENVIRON  . . . . . . . .  	0000
  EXEC1_COM_LINE . . . . . . . .  	0002
  EXEC1_5C_FCB . . . . . . . . .  	0006
  EXEC1_6C_FCB . . . . . . . . .  	000A
  EXEC1_SP . . . . . . . . . . .  	000E
  EXEC1_SS . . . . . . . . . . .  	0010
  EXEC1_IP . . . . . . . . . . .  	0012
  EXEC1_CS . . . . . . . . . . .  	0014
EXEC3  . . . . . . . . . . . . .  	0004	0002
  EXEC3_LOAD_ADDR  . . . . . . .  	0000
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-3


  EXEC3_RELOC_FAC  . . . . . . .  	0002
EXE_FILE . . . . . . . . . . . .  	0020	000F
  EXE_SIGNATURE  . . . . . . . .  	0000
  EXE_LEN_MOD_512  . . . . . . .  	0002
  EXE_PAGES  . . . . . . . . . .  	0004
  EXE_RLE_COUNT  . . . . . . . .  	0006
  EXE_PAR_DIR  . . . . . . . . .  	0008
  EXE_MIN_BSS  . . . . . . . . .  	000A
  EXE_MAX_BSS  . . . . . . . . .  	000C
  EXE_SS . . . . . . . . . . . .  	000E
  EXE_SP . . . . . . . . . . . .  	0010
  EXE_CHKSUM . . . . . . . . . .  	0012
  EXE_IP . . . . . . . . . . . .  	0014
  EXE_CS . . . . . . . . . . . .  	0016
  EXE_RLE_TABLE  . . . . . . . .  	0018
  EXE_IOV  . . . . . . . . . . .  	001A
  EXE_SYM_TAB  . . . . . . . . .  	001C
EXT_OPEN_PARM  . . . . . . . . .  	0006	0002
  EXT_SET_LIST . . . . . . . . .  	0000
  EXT_NUM_OF_PARM  . . . . . . .  	0004
FIND_BUF . . . . . . . . . . . .  	002B	000C
  FIND_BUF_DRIVE . . . . . . . .  	0000
  FIND_BUF_NAME  . . . . . . . .  	0001
  FIND_BUF_SATTR . . . . . . . .  	000C
  FIND_BUF_LASTENT . . . . . . .  	000D
  FIND_BUF_DIRSTART  . . . . . .  	000F
  FIND_BUF_NETID . . . . . . . .  	0011
  FIND_BUF_ATTR  . . . . . . . .  	0015
  FIND_BUF_TIME  . . . . . . . .  	0016
  FIND_BUF_DATE  . . . . . . . .  	0018
  FIND_BUF_SIZE_L  . . . . . . .  	001A
  FIND_BUF_SIZE_H  . . . . . . .  	001C
  FIND_BUF_PNAME . . . . . . . .  	001E
INTERNAT_BLOCK . . . . . . . . .  	0018	0015
  DATE_TIM_FORMAT  . . . . . . .  	0000
  CURRENCY_SYM . . . . . . . . .  	0002
  THOUS_SEP  . . . . . . . . . .  	0007
  DECIMAL_SEP  . . . . . . . . .  	0009
  DATE_SEP . . . . . . . . . . .  	000B
  TIME_SEP . . . . . . . . . . .  	000D
  BIT_FIELD  . . . . . . . . . .  	000F
  CURRENCY_CENTS . . . . . . . .  	0010
  TIME_24  . . . . . . . . . . .  	0011
  MAP_CALL . . . . . . . . . . .  	0012
  DATA_SEP . . . . . . . . . . .  	0016
PARSEFLAGS . . . . . . . . . . .  	0008	0005
  SPECIAL_DELIM  . . . . . . . .  	0007	0001	0080	0000
  UNUSED . . . . . . . . . . . .  	0003	0004	0078	0000
  PATH_SEP . . . . . . . . . . .  	0002	0001	0004	0000
  WILDCARD . . . . . . . . . . .  	0001	0001	0002	0000
  SW_FLAG  . . . . . . . . . . .  	0000	0001	0001	0000
PROCESS_DATA_BLOCK . . . . . . .  	005C	0011
  PDB_EXIT_CALL  . . . . . . . .  	0000
  PDB_BLOCK_LEN  . . . . . . . .  	0002
  PDB_CPM_CALL . . . . . . . . .  	0005
  PDB_EXIT . . . . . . . . . . .  	000A
  PDB_CTRL_C . . . . . . . . . .  	000E
  PDB_FATAL_ABORT  . . . . . . .  	0012
  PDB_PARENT_PID . . . . . . . .  	0016
  PDB_JFN_TABLE  . . . . . . . .  	0018
  PDB_ENVIRON  . . . . . . . . .  	002C
  PDB_USER_STACK . . . . . . . .  	002E
  PDB_JFN_LENGTH . . . . . . . .  	0032
  PDB_JFN_POINTER  . . . . . . .  	0034
  PDB_NEXT_PDB . . . . . . . . .  	0038
  PDB_PAD1 . . . . . . . . . . .  	003C
  PDB_CALL_SYSTEM  . . . . . . .  	0050
  PDB_PAD2 . . . . . . . . . . .  	0055
SF . . . . . . . . . . . . . . .  	0008	0003
  SFLINK . . . . . . . . . . . .  	0000
  SFCOUNT  . . . . . . . . . . .  	0004
  SFTABLE  . . . . . . . . . . .  	0006
SF_ENTRY . . . . . . . . . . . .  	003B	0014
  SF_REF_COUNT . . . . . . . . .  	0000
  SF_MODE  . . . . . . . . . . .  	0002
  SF_ATTR  . . . . . . . . . . .  	0004
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-4


  SF_FLAGS . . . . . . . . . . .  	0005
  SF_DEVPTR  . . . . . . . . . .  	0007
  SF_FIRCLUS . . . . . . . . . .  	000B
  SF_TIME  . . . . . . . . . . .  	000D
  SF_DATE  . . . . . . . . . . .  	000F
  SF_SIZE  . . . . . . . . . . .  	0011
  SF_POSITION  . . . . . . . . .  	0015
  SF_CLUSPOS . . . . . . . . . .  	0019
  SF_DIRSEC  . . . . . . . . . .  	001B
  SF_DIRPOS  . . . . . . . . . .  	001F
  SF_NAME  . . . . . . . . . . .  	0020
  SF_CHAIN . . . . . . . . . . .  	002B
  SF_UID . . . . . . . . . . . .  	002F
  SF_PID . . . . . . . . . . . .  	0031
  SF_MFT . . . . . . . . . . . .  	0033
  SF_LSTCLUS . . . . . . . . . .  	0035
  SF_IFS_HDR . . . . . . . . . .  	0037
SYMBOL_ENTRY . . . . . . . . . .  	0106	0004
  SYM_VALUE  . . . . . . . . . .  	0000
  SYM_TYPE . . . . . . . . . . .  	0004
  SYM_LEN  . . . . . . . . . . .  	0006
  SYM_NAME . . . . . . . . . . .  	0007
SYSINITVARS  . . . . . . . . . .  	0047	0018
  SYSI_DPB . . . . . . . . . . .  	0000
  SYSI_SFT . . . . . . . . . . .  	0004
  SYSI_CLOCK . . . . . . . . . .  	0008
  SYSI_CON . . . . . . . . . . .  	000C
  SYSI_MAXSEC  . . . . . . . . .  	0010
  SYSI_BUF . . . . . . . . . . .  	0012
  SYSI_CDS . . . . . . . . . . .  	0016
  SYSI_FCB . . . . . . . . . . .  	001A
  SYSI_KEEP  . . . . . . . . . .  	001E
  SYSI_NUMIO . . . . . . . . . .  	0020
  SYSI_NCDS  . . . . . . . . . .  	0021
  SYSI_DEV . . . . . . . . . . .  	0022
  SYSI_ATTR  . . . . . . . . . .  	0026
  SYSI_STRAT . . . . . . . . . .  	0028
  SYSI_INTER . . . . . . . . . .  	002A
  SYSI_NAME  . . . . . . . . . .  	002C
  SYSI_SPLICE  . . . . . . . . .  	0034
  SYSI_IBMDOS_SIZE . . . . . . .  	0035
  SYSI_IFS_DOSCALL@  . . . . . .  	0037
  SYSI_IFS . . . . . . . . . . .  	003B
  SYSI_BUFFERS . . . . . . . . .  	003F
  SYSI_BOOT_DRIVE  . . . . . . .  	0043
  SYSI_DWMOVE  . . . . . . . . .  	0044
  SYSI_EXT_MEM . . . . . . . . .  	0045
SYSINITVARS_EXT  . . . . . . . .  	0008	0002
  SYSI_INITVARS  . . . . . . . .  	0000
  SYSI_COUNTRY_TAB . . . . . . .  	0004
SYS_FCB  . . . . . . . . . . . .  	0025	000C
  FCB_DRIVE  . . . . . . . . . .  	0000
  FCB_NAME . . . . . . . . . . .  	0001
  FCB_EXT  . . . . . . . . . . .  	0009
  FCB_EXTENT . . . . . . . . . .  	000C
  FCB_RECSIZ . . . . . . . . . .  	000E
  FCB_FILSIZ . . . . . . . . . .  	0010
  FCB_DRVBP  . . . . . . . . . .  	0012
  FCB_FDATE  . . . . . . . . . .  	0014
  FCB_FTIME  . . . . . . . . . .  	0016
  FCB_RESERVED . . . . . . . . .  	0018
  FCB_NR . . . . . . . . . . . .  	0020
  FCB_RR . . . . . . . . . . . .  	0021
USER_ENVIRON . . . . . . . . . .  	0018	000C
  USER_AX  . . . . . . . . . . .  	0000
  USER_BX  . . . . . . . . . . .  	0002
  USER_CX  . . . . . . . . . . .  	0004
  USER_DX  . . . . . . . . . . .  	0006
  USER_SI  . . . . . . . . . . .  	0008
  USER_DI  . . . . . . . . . . .  	000A
  USER_BP  . . . . . . . . . . .  	000C
  USER_DS  . . . . . . . . . . .  	000E
  USER_ES  . . . . . . . . . . .  	0010
  USER_IP  . . . . . . . . . . .  	0012
  USER_CS  . . . . . . . . . . .  	0014
  USER_F . . . . . . . . . . . .  	0016
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-5


VARSTRUC . . . . . . . . . . . .  	005C	0005
  ISDIR  . . . . . . . . . . . .  	0000
  SIZ  . . . . . . . . . . . . .  	0001
  TTAIL  . . . . . . . . . . . .  	0002
  INFO . . . . . . . . . . . . .  	0004
  BUF  . . . . . . . . . . . . .  	0005

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

RESGROUP . . . . . . . . . . . .  	GROUP
  CODERES  . . . . . . . . . . .  	0000	BYTE	PUBLIC	
  DATARES  . . . . . . . . . . .  	0000	BYTE	PUBLIC	
  BATARENA . . . . . . . . . . .  	0000	PARA	PUBLIC	
  BATSEG . . . . . . . . . . . .  	0000	PARA	PUBLIC	
  ENVARENA . . . . . . . . . . .  	0000	PARA	PUBLIC	
  ENVIRONMENT  . . . . . . . . .  	0000	PARA	PUBLIC	
  INIT . . . . . . . . . . . . .  	0000	PARA	PUBLIC	
  TAIL . . . . . . . . . . . . .  	0000	PARA	PUBLIC	
TRANGROUP  . . . . . . . . . . .  	GROUP
  TRANCODE . . . . . . . . . . .  	0714	BYTE	PUBLIC	
  TRANDATA . . . . . . . . . . .  	0000	BYTE	PUBLIC	
  TRANSPACE  . . . . . . . . . .  	0000	BYTE	PUBLIC	
  TRANTAIL . . . . . . . . . . .  	0000	PARA	PUBLIC	

Symbols:            

                N a m e         	Type	 Value	 Attr

ABORT  . . . . . . . . . . . . .  	NUMBER	0000	
ACCESS_MASK  . . . . . . . . . .  	NUMBER	000F	
ACOUNTOK . . . . . . . . . . . .  	L NEAR	0179	TRANCODE
ACTION_CREATED_OPENED  . . . . .  	NUMBER	0002	
ACTION_OPENED  . . . . . . . . .  	NUMBER	0001	
ACTION_REPLACED_OPENED . . . . .  	NUMBER	0003	
ADDR_INT_ABORT . . . . . . . . .  	NUMBER	0080	
ADDR_INT_COMMAND . . . . . . . .  	NUMBER	0084	
ADDR_INT_CTRL_C  . . . . . . . .  	NUMBER	008C	
ADDR_INT_DISK_READ . . . . . . .  	NUMBER	0094	
ADDR_INT_DISK_WRITE  . . . . . .  	NUMBER	0098	
ADDR_INT_FASTCON . . . . . . . .  	NUMBER	00A4	
ADDR_INT_FATAL_ABORT . . . . . .  	NUMBER	0090	
ADDR_INT_IBM . . . . . . . . . .  	NUMBER	00A8	
ADDR_INT_KEEP_PROCESS  . . . . .  	NUMBER	009C	
ADDR_INT_SPOOLER . . . . . . . .  	NUMBER	00A0	
ADDR_INT_TERMINATE . . . . . . .  	NUMBER	0088	
ALLOC  . . . . . . . . . . . . .  	NUMBER	0048	
ALLOCOPER  . . . . . . . . . . .  	NUMBER	0058	
ALLOC_FOR_XA_OKAY  . . . . . . .  	L NEAR	04BE	TRANCODE
alloc_tpa  . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
ALLOWED_FAIL . . . . . . . . . .  	NUMBER	0008	
ALLOWED_IGNORE . . . . . . . . .  	NUMBER	0020	
ALLOWED_RETRY  . . . . . . . . .  	NUMBER	0010	
ALLSWITCH  . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
ALTPIPECHR . . . . . . . . . . .  	NUMBER	007C	
ALTVECT  . . . . . . . . . . . .  	ALIAS	 FALSE		
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
ANULL  . . . . . . . . . . . . .  	NUMBER	0000	
APPENDDOS  . . . . . . . . . . .  	NUMBER	B702	
APPENDGETSTATE . . . . . . . . .  	NUMBER	B706	
APPENDINSTALL  . . . . . . . . .  	NUMBER	B700	
APPENDSETSTATE . . . . . . . . .  	NUMBER	B707	
APPENDTRUENAME . . . . . . . . .  	NUMBER	B711	
ARENA_OWNER_SYSTEM . . . . . . .  	NUMBER	0000	
ARENA_SIGNATURE_END  . . . . . .  	NUMBER	005A	
ARENA_SIGNATURE_NORMAL . . . . .  	NUMBER	004D	
ARGBLEN  . . . . . . . . . . . .  	NUMBER	0100	
ARGC . . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
ARGMAX . . . . . . . . . . . . .  	NUMBER	0040	
ARG_BUF_OVFLOW . . . . . . . . .  	NUMBER	0002	
ARG_CNT_ERROR  . . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-6


ASCII  . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
ASSIGNOPER . . . . . . . . . . .  	NUMBER	005F	
ATTR_ALL . . . . . . . . . . . .  	NUMBER	0016	
ATTR_ARCHIVE . . . . . . . . . .  	NUMBER	0020	
ATTR_CHANGEABLE  . . . . . . . .  	NUMBER	0027	
ATTR_DEVICE  . . . . . . . . . .  	NUMBER	0040	
ATTR_DIRECTORY . . . . . . . . .  	NUMBER	0010	
ATTR_HIDDEN  . . . . . . . . . .  	NUMBER	0002	
ATTR_IGNORE  . . . . . . . . . .  	NUMBER	0061	
ATTR_READ_ONLY . . . . . . . . .  	NUMBER	0001	
ATTR_SYSTEM  . . . . . . . . . .  	NUMBER	0004	
ATTR_VOLUME_ID . . . . . . . . .  	NUMBER	0008	
AUTO_COMMIT_WRITE  . . . . . . .  	NUMBER	4000	

BADCD_ptr  . . . . . . . . . . .  	V WORD	0000	TRANDATA	External
BADPARM_PTR  . . . . . . . . . .  	NUMBER	000A	
BADSWT_PTR . . . . . . . . . . .  	NUMBER	0003	
BATCHTYPE  . . . . . . . . . . .  	NUMBER	0000	
BATLEN . . . . . . . . . . . . .  	NUMBER	0020	
BAT_NOT_OPEN . . . . . . . . . .  	NUMBER	-0001	
BAT_OPEN_HANDLE  . . . . . . . .  	NUMBER	0013	
BINARY . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
BINCLOS  . . . . . . . . . . . .  	L NEAR	05EB	TRANCODE
BINREAD  . . . . . . . . . . . .  	L NEAR	0577	TRANCODE
BLANK  . . . . . . . . . . . . .  	NUMBER	0020	
BUFFERFLAG . . . . . . . . . . .  	NUMBER	FFFF	
BUFINSIZ . . . . . . . . . . . .  	NUMBER	0014	
BUF_DIRTY  . . . . . . . . . . .  	NUMBER	0040	
BUF_DPB  . . . . . . . . . . . .  		000D	
BUF_FILL . . . . . . . . . . . .  		0011	
BUF_FLAGS  . . . . . . . . . . .  		0005	
BUF_FREE . . . . . . . . . . . .  	NUMBER	00FF	
BUF_ID . . . . . . . . . . . . .  		0004	
BUF_ISDATA . . . . . . . . . . .  	NUMBER	0008	
BUF_ISDIR  . . . . . . . . . . .  	NUMBER	0004	
BUF_ISFAT  . . . . . . . . . . .  	NUMBER	0002	
BUF_ISNET  . . . . . . . . . . .  	NUMBER	0080	
BUF_NETID  . . . . . . . . . . .  	ALIAS	 BUFINSIZ		
BUF_NEXT . . . . . . . . . . . .  		0000	
BUF_OFFSET . . . . . . . . . . .  	DWORD	0006	
BUF_PREV . . . . . . . . . . . .  		0002	
BUF_RESERVED . . . . . . . . . .  		0013	
BUF_SECTOR . . . . . . . . . . .  		0006	
BUF_SNBUF  . . . . . . . . . . .  	NUMBER	0010	
BUF_TYPE_0 . . . . . . . . . . .  	NUMBER	00F1	
BUF_VISIT  . . . . . . . . . . .  	NUMBER	0020	
BUF_WRTCNT . . . . . . . . . . .  		000A	
BUF_WRTCNTINC  . . . . . . . . .  		000B	
BUILDNAME  . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
BUILDPATH  . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
BYTCNT . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External

CALL_IN_PROGRESS . . . . . . . .  	NUMBER	0001	
CAPITAL_A  . . . . . . . . . . .  	NUMBER	0041	
CAPITAL_N  . . . . . . . . . . .  	NUMBER	0000	
CAPITAL_Y  . . . . . . . . . . .  	NUMBER	0001	
CARGS  . . . . . . . . . . . . .  	NUMBER	0000	
CDCONT . . . . . . . . . . . . .  	L NEAR	0145	TRANCODE
CERROR . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
CERROR4J . . . . . . . . . . . .  	L NEAR	0176	TRANCODE
CERROR_PARSEJ  . . . . . . . . .  	L NEAR	0171	TRANCODE
CFLAG  . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
CHAR_OPER  . . . . . . . . . . .  	NUMBER	0037	
CHDIR  . . . . . . . . . . . . .  	NUMBER	003B	
CHECKDONE  . . . . . . . . . . .  	L NEAR	012A	TRANCODE
CHKSWTCHES . . . . . . . . . . .  	L NEAR	01CF	TRANCODE
CHMOD  . . . . . . . . . . . . .  	NUMBER	0043	
CLEANUPERR . . . . . . . . . . .  	N PROC	06D6	TRANCODE	Length = 0019
CLEANUPERR_CONT  . . . . . . . .  	L NEAR	06EE	TRANCODE
CLOSE  . . . . . . . . . . . . .  	NUMBER	003E	
CLOSEDEST  . . . . . . . . . . .  	L NEAR	05A8	TRANCODE
CLOSEDONE  . . . . . . . . . . .  	L NEAR	0689	TRANCODE
CLOSESRC . . . . . . . . . . . .  	L NEAR	059F	TRANCODE
CLOSE_CONT . . . . . . . . . . .  	L NEAR	067B	TRANCODE
COLON_CHAR . . . . . . . . . . .  	NUMBER	003A	
COMBUFLEN  . . . . . . . . . . .  	NUMBER	0080	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-7


comma  . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
COMMIT . . . . . . . . . . . . .  	NUMBER	0068	
CONCAT . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
concat_xa  . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
CONCHNG  . . . . . . . . . . . .  	L NEAR	05C6	TRANCODE
CONTMEL  . . . . . . . . . . . .  	L NEAR	0370	TRANCODE
COPERR . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
COPIED_ptr . . . . . . . . . . .  	V WORD	0000	TRANDATA	External
COPY . . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	Global
COPYLP . . . . . . . . . . . . .  	L NEAR	0520	TRANCODE
copy_num . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
CPARSE . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
CPDATE . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
CPSW_OFF . . . . . . . . . . . .  	NUMBER	0000	
CPTIME . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
cpyflag  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
CREAT  . . . . . . . . . . . . .  	NUMBER	003C	
CREATENEWFILE  . . . . . . . . .  	NUMBER	005B	
CREATETEMPFILE . . . . . . . . .  	NUMBER	005A	
CREATE_PROCESS_DATA_BLOCK  . . .  	NUMBER	0026	
CREAT_OPEN_FLAG  . . . . . . . .  	NUMBER	0112	
CRITASSIGN . . . . . . . . . . .  	NUMBER	0008	
CRITDEVICE . . . . . . . . . . .  	NUMBER	0002	
CRITDISK . . . . . . . . . . . .  	NUMBER	0001	
CRITIFS  . . . . . . . . . . . .  	NUMBER	0006	
CRITMEM  . . . . . . . . . . . .  	NUMBER	0001	
CRITNET  . . . . . . . . . . . .  	NUMBER	0005	
CRITSFT  . . . . . . . . . . . .  	NUMBER	0001	
CRITSHARE  . . . . . . . . . . .  	NUMBER	0001	
CRIT_MSG_CLASS . . . . . . . . .  	NUMBER	0003	
CRLF2  . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
CRT_IOCTL_LN . . . . . . . . . .  	NUMBER	000E	
CURDIRLEN  . . . . . . . . . . .  	NUMBER	0058	
CURDIR_INUSE . . . . . . . . . .  	NUMBER	4000	
CURDIR_ISIFS . . . . . . . . . .  	NUMBER	8000	
CURDIR_ISNET . . . . . . . . . .  	NUMBER	8000	
CURDIR_LOCAL . . . . . . . . . .  	NUMBER	1000	
CURDIR_NETID . . . . . . . . . .  	DWORD	0049	
CURDIR_SPLICE  . . . . . . . . .  	NUMBER	2000	
CURDRV . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
CURRENT_DIR  . . . . . . . . . .  	NUMBER	0047	
C_BS . . . . . . . . . . . . . .  	NUMBER	0008	
C_CR . . . . . . . . . . . . . .  	NUMBER	000D	
C_DEL  . . . . . . . . . . . . .  	NUMBER	007F	
C_ETB  . . . . . . . . . . . . .  	NUMBER	0017	
C_ETX  . . . . . . . . . . . . .  	NUMBER	0003	
C_HT . . . . . . . . . . . . . .  	NUMBER	0009	
C_LF . . . . . . . . . . . . . .  	NUMBER	000A	
C_NAK  . . . . . . . . . . . . .  	NUMBER	0015	

DBCS . . . . . . . . . . . . . .  	NUMBER	0000	
DEALLOC  . . . . . . . . . . . .  	NUMBER	0049	
DEALLOCATE_SRC_XA  . . . . . . .  	N PROC	06EF	TRANCODE	Length = 0025
DEBUG  . . . . . . . . . . . . .  	NUMBER	0000	
DESTBUF  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DestClosed . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DESTDELETE . . . . . . . . . . .  	L NEAR	06A5	TRANCODE
DESTFCB  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DESTFCB2 . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DESTHAND . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
DESTINFO . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DESTISDIR  . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DESTSCAN . . . . . . . . . . . .  	L NEAR	00AA	TRANCODE
DESTSIZ  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DESTSWITCH . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
DESTTAIL . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
DESTVARS . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DEVID_BLOCK_DEV  . . . . . . . .  	NUMBER	001F	
DEVID_DEVICE . . . . . . . . . .  	NUMBER	0080	
DEVID_DEVICE_CLOCK . . . . . . .  	NUMBER	0008	
DEVID_DEVICE_CON_IN  . . . . . .  	NUMBER	0001	
DEVID_DEVICE_CON_OUT . . . . . .  	NUMBER	0002	
DEVID_DEVICE_EOF . . . . . . . .  	NUMBER	0040	
DEVID_DEVICE_NULL  . . . . . . .  	NUMBER	0004	
DEVID_DEVICE_RAW . . . . . . . .  	NUMBER	0020	
DEVID_DEVICE_SPECIAL . . . . . .  	NUMBER	0010	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-8


DEVID_EOF  . . . . . . . . . . .  	NUMBER	0040	
DEVID_FILE_CLEAN . . . . . . . .  	NUMBER	0040	
DEVID_FILE_MASK_DRIVE  . . . . .  	NUMBER	003F	
DEVID_ISCIN  . . . . . . . . . .  	NUMBER	0001	
DEVID_ISCLK  . . . . . . . . . .  	NUMBER	0008	
DEVID_ISCOT  . . . . . . . . . .  	NUMBER	0002	
DEVID_ISDEV  . . . . . . . . . .  	NUMBER	0080	
DEVID_ISNUL  . . . . . . . . . .  	NUMBER	0004	
DEVID_RAW  . . . . . . . . . . .  	NUMBER	0020	
DEVID_SPECIAL  . . . . . . . . .  	NUMBER	0010	
DIRBUF . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
DIRSTRLEN  . . . . . . . . . . .  	NUMBER	0043	
DIR_SEARCH_FIRST . . . . . . . .  	NUMBER	0011	
DIR_SEARCH_NEXT  . . . . . . . .  	NUMBER	0012	
DISK_RESET . . . . . . . . . . .  	NUMBER	000D	
DOCOPY . . . . . . . . . . . . .  	L NEAR	03F3	TRANCODE
DODCLOSE . . . . . . . . . . . .  	L NEAR	063E	TRANCODE
DOLLAR . . . . . . . . . . . . .  	NUMBER	0024	
DOMELCOPY  . . . . . . . . . . .  	L NEAR	035C	TRANCODE
DOREAD . . . . . . . . . . . . .  	L NEAR	0329	TRANCODE
DOT_CHR  . . . . . . . . . . . .  	NUMBER	002E	
DOT_COLON  . . . . . . . . . . .  	NUMBER	2E3A	
DOT_QMARK  . . . . . . . . . . .  	NUMBER	2E3F	
DO_WORD  . . . . . . . . . . . .  	NUMBER	4F44	
DO_XA  . . . . . . . . . . . . .  	NUMBER	-0001	
DPBSIZ . . . . . . . . . . . . .  	NUMBER	0021	
DRVSPEC1 . . . . . . . . . . . .  	L NEAR	02D8	TRANCODE
DSKSIZ . . . . . . . . . . . . .  	NUMBER	000D	
DUP_PDB  . . . . . . . . . . . .  	NUMBER	0055	

ECS_CALL . . . . . . . . . . . .  	NUMBER	0063	
EMGDEBUG . . . . . . . . . . . .  	NUMBER	0000	
EMS_MAP_BUFF_SIZE  . . . . . . .  	NUMBER	000C	
EndCopy  . . . . . . . . . . . .  	L NEAR	0221	TRANCODE	Global
ENDCOPY2 . . . . . . . . . . . .  	L NEAR	0224	TRANCODE
ENDCOPYJ2  . . . . . . . . . . .  	L NEAR	028F	TRANCODE
ENDCOPYJ3  . . . . . . . . . . .  	L NEAR	04FE	TRANCODE
END_OF_LINE  . . . . . . . . . .  	NUMBER	-0001	
END_OF_LINE_IN . . . . . . . . .  	NUMBER	000D	
END_OF_LINE_OUT  . . . . . . . .  	NUMBER	0000	
ENTRYPOINT . . . . . . . . . . .  	NUMBER	00C0	
EQUAL_CHR  . . . . . . . . . . .  	NUMBER	003D	
ERRACT_ABORT . . . . . . . . . .  	NUMBER	0004	
ERRACT_DLYRET  . . . . . . . . .  	NUMBER	0002	
ERRACT_IGNORE  . . . . . . . . .  	NUMBER	0006	
ERRACT_INTRET  . . . . . . . . .  	NUMBER	0007	
ERRACT_PANIC . . . . . . . . . .  	NUMBER	0005	
ERRACT_RETRY . . . . . . . . . .  	NUMBER	0001	
ERRACT_USER  . . . . . . . . . .  	NUMBER	0003	
ERRCLASS_ALREADY . . . . . . . .  	NUMBER	000C	
ERRCLASS_APPERR  . . . . . . . .  	NUMBER	0007	
ERRCLASS_AUTH  . . . . . . . . .  	NUMBER	0003	
ERRCLASS_BADFMT  . . . . . . . .  	NUMBER	0009	
ERRCLASS_HRDFAIL . . . . . . . .  	NUMBER	0005	
ERRCLASS_INTRN . . . . . . . . .  	NUMBER	0004	
ERRCLASS_LOCKED  . . . . . . . .  	NUMBER	000A	
ERRCLASS_MEDIA . . . . . . . . .  	NUMBER	000B	
ERRCLASS_NOTFND  . . . . . . . .  	NUMBER	0008	
ERRCLASS_OUTRES  . . . . . . . .  	NUMBER	0001	
ERRCLASS_SYSFAIL . . . . . . . .  	NUMBER	0006	
ERRCLASS_TEMPSIT . . . . . . . .  	NUMBER	0002	
ERRCLASS_UNK . . . . . . . . . .  	NUMBER	000D	
ERRLOC_DISK  . . . . . . . . . .  	NUMBER	0002	
ERRLOC_MEM . . . . . . . . . . .  	NUMBER	0005	
ERRLOC_NET . . . . . . . . . . .  	NUMBER	0003	
ERRLOC_SERDEV  . . . . . . . . .  	NUMBER	0004	
ERRLOC_UNK . . . . . . . . . . .  	NUMBER	0001	
ERROR_ACCESS_DENIED  . . . . . .  	NUMBER	0005	
ERROR_ALREADY_ASSIGNED . . . . .  	NUMBER	0055	
ERROR_ARENA_TRASHED  . . . . . .  	NUMBER	0007	
ERROR_BAD_COMMAND  . . . . . . .  	NUMBER	0016	
ERROR_BAD_ENVIRONMENT  . . . . .  	NUMBER	000A	
ERROR_BAD_FORMAT . . . . . . . .  	NUMBER	000B	
ERROR_BAD_LENGTH . . . . . . . .  	NUMBER	0018	
ERROR_BAD_UNIT . . . . . . . . .  	NUMBER	0014	
ERROR_CANNOT_MAKE  . . . . . . .  	NUMBER	0052	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-9


ERROR_CODE_PAGE_MISMATCHED . . .  	NUMBER	0025	
ERROR_CRC  . . . . . . . . . . .  	NUMBER	0017	
ERROR_CURRENT_DIRECTORY  . . . .  	NUMBER	0010	
ERROR_DUP_FCB  . . . . . . . . .  	NUMBER	0051	
ERROR_FAIL_I24 . . . . . . . . .  	NUMBER	0053	
ERROR_FCB_UNAVAILABLE  . . . . .  	NUMBER	0023	
ERROR_FILE_EXISTS  . . . . . . .  	NUMBER	0050	
ERROR_FILE_NOT_FOUND . . . . . .  	NUMBER	0002	
ERROR_GEN_FAILURE  . . . . . . .  	NUMBER	001F	
ERROR_HANDLE_DISK_FULL . . . . .  	NUMBER	0027	
ERROR_HANDLE_EOF . . . . . . . .  	NUMBER	0026	
ERROR_I24_BAD_COMMAND  . . . . .  	NUMBER	0003	
ERROR_I24_BAD_LENGTH . . . . . .  	NUMBER	0005	
ERROR_I24_BAD_UNIT . . . . . . .  	NUMBER	0001	
ERROR_I24_CRC  . . . . . . . . .  	NUMBER	0004	
ERROR_I24_GEN_FAILURE  . . . . .  	NUMBER	000C	
ERROR_I24_NOT_DOS_DISK . . . . .  	NUMBER	0007	
ERROR_I24_NOT_READY  . . . . . .  	NUMBER	0002	
ERROR_I24_OUT_OF_PAPER . . . . .  	NUMBER	0009	
ERROR_I24_READ_FAULT . . . . . .  	NUMBER	000B	
ERROR_I24_SECTOR_NOT_FOUND . . .  	NUMBER	0008	
ERROR_I24_SEEK . . . . . . . . .  	NUMBER	0006	
ERROR_I24_WRITE_FAULT  . . . . .  	NUMBER	000A	
ERROR_I24_WRITE_PROTECT  . . . .  	NUMBER	0000	
ERROR_I24_WRONG_DISK . . . . . .  	NUMBER	000F	
ERROR_INVALID_ACCESS . . . . . .  	NUMBER	000C	
ERROR_INVALID_BLOCK  . . . . . .  	NUMBER	0009	
ERROR_INVALID_DATA . . . . . . .  	NUMBER	000D	
ERROR_INVALID_DRIVE  . . . . . .  	NUMBER	000F	
ERROR_INVALID_FUNCTION . . . . .  	NUMBER	0001	
ERROR_INVALID_HANDLE . . . . . .  	NUMBER	0006	
ERROR_INVALID_PARAMETER  . . . .  	NUMBER	0057	
ERROR_INVALID_PASSWORD . . . . .  	NUMBER	0056	
ERROR_LOCK_VIOLATION . . . . . .  	NUMBER	0021	
ERROR_NET_WRITE_FAULT  . . . . .  	NUMBER	0058	
ERROR_NOT_DOS_DISK . . . . . . .  	NUMBER	001A	
ERROR_NOT_ENOUGH_MEMORY  . . . .  	NUMBER	0008	
ERROR_NOT_READY  . . . . . . . .  	NUMBER	0015	
ERROR_NOT_SAME_DEVICE  . . . . .  	NUMBER	0011	
ERROR_NOT_SUPPORTED  . . . . . .  	NUMBER	0032	
ERROR_NO_MORE_FILES  . . . . . .  	NUMBER	0012	
ERROR_ON_SOURCE  . . . . . . . .  	L NEAR	04D9	TRANCODE
ERROR_OUT_OF_PAPER . . . . . . .  	NUMBER	001C	
ERROR_OUT_OF_STRUCTURES  . . . .  	NUMBER	0054	
ERROR_PATH_NOT_FOUND . . . . . .  	NUMBER	0003	
ERROR_READ_FAULT . . . . . . . .  	NUMBER	001E	
ERROR_SECTOR_NOT_FOUND . . . . .  	NUMBER	001B	
ERROR_SEEK . . . . . . . . . . .  	NUMBER	0019	
ERROR_SHARING_BUFFER_EXCEEDED  .  	NUMBER	0024	
ERROR_SHARING_VIOLATION  . . . .  	NUMBER	0020	
ERROR_SYS_COMP_NOT_LOADED  . . .  	NUMBER	005A	
ERROR_TOO_MANY_OPEN_FILES  . . .  	NUMBER	0004	
ERROR_WRITE_FAULT  . . . . . . .  	NUMBER	001D	
ERROR_WRITE_PROTECT  . . . . . .  	NUMBER	0013	
ERROR_WRONG_DISK . . . . . . . .  	NUMBER	0022	
EXEC . . . . . . . . . . . . . .  	NUMBER	004B	
EXEC_FUNC_NO_EXECUTE . . . . . .  	NUMBER	0001	
EXEC_FUNC_OVERLAY  . . . . . . .  	NUMBER	0002	
EXE_VALID_OLD_SIGNATURE  . . . .  	NUMBER	4D5A	
EXE_VALID_SIGNATURE  . . . . . .  	NUMBER	5A4D	
EXISTS_MASK  . . . . . . . . . .  	NUMBER	000F	
EXIT . . . . . . . . . . . . . .  	NUMBER	004C	
EXIT_ABORT . . . . . . . . . . .  	NUMBER	0000	
EXIT_CTRL_C  . . . . . . . . . .  	NUMBER	0001	
EXIT_HARD_ERROR  . . . . . . . .  	NUMBER	0002	
EXIT_KEEP_PROCESS  . . . . . . .  	NUMBER	0003	
EXIT_TERMINATE . . . . . . . . .  	NUMBER	0000	
expand_star  . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
Extend_buf_ptr . . . . . . . . .  	V WORD	0000	TRANDATA	External
Extend_buf_sub . . . . . . . . .  	V BYTE	0000	TRANDATA	External
EXTHANDLE  . . . . . . . . . . .  	NUMBER	0067	
EXTOPEN  . . . . . . . . . . . .  	NUMBER	006C	
EXT_CRLF_CLASS . . . . . . . . .  	NUMBER	0081	
EXT_EXISTS_FAIL  . . . . . . . .  	NUMBER	0000	
EXT_EXISTS_OPEN  . . . . . . . .  	NUMBER	0001	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-10


EXT_FILE_NOT_EXISTS  . . . . . .  	NUMBER	0004	
EXT_MSG_CLASS  . . . . . . . . .  	NUMBER	0001	
EXT_NEXISTS_CREATE . . . . . . .  	NUMBER	0010	
EXT_OPEN_I24_OFF . . . . . . . .  	NUMBER	0002	
EXT_OPEN_ON  . . . . . . . . . .  	NUMBER	0001	

FAIL_ALLOWED . . . . . . . . . .  	NUMBER	0008	
FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
FBADSWITCH . . . . . . . . . . .  	NUMBER	4000	
FCB  . . . . . . . . . . . . . .  	NUMBER	005C	
FCBDEVICE  . . . . . . . . . . .  	NUMBER	0040	
FCBMASK  . . . . . . . . . . . .  	NUMBER	00C0	
FCBNETWORK . . . . . . . . . . .  	NUMBER	0080	
FCBSHARE . . . . . . . . . . . .  	NUMBER	00C0	
FCBSPECIAL . . . . . . . . . . .  	NUMBER	0080	
FCB_CLOSE  . . . . . . . . . . .  	NUMBER	0010	
FCB_CREATE . . . . . . . . . . .  	NUMBER	0016	
FCB_DELETE . . . . . . . . . . .  	NUMBER	0013	
FCB_L_ATTR . . . . . . . . . . .  	BYTE	001E	
FCB_L_DRIVE  . . . . . . . . . .  	BYTE	0019	
FCB_L_FIRCLUS  . . . . . . . . .  	WORD	001A	
FCB_L_MFS  . . . . . . . . . . .  	WORD	001C	
FCB_NETID  . . . . . . . . . . .  	DWORD	001C	
FCB_NET_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NET_HANDLE . . . . . . . . .  	WORD	001A	
FCB_NSLD_DRIVE . . . . . . . . .  	BYTE	0019	
FCB_NSLD_DRVPTR  . . . . . . . .  	DWORD	001A	
FCB_NSL_BITS . . . . . . . . . .  	BYTE	001A	
FCB_NSL_DIRPOS . . . . . . . . .  	BYTE	001F	
FCB_NSL_DIRSEC . . . . . . . . .  	WORD	001D	
FCB_NSL_DRIVE  . . . . . . . . .  	BYTE	0019	
FCB_NSL_FIRCLUS  . . . . . . . .  	WORD	001B	
FCB_OPEN . . . . . . . . . . . .  	NUMBER	000F	
FCB_RANDOM_READ  . . . . . . . .  	NUMBER	0021	
FCB_RANDOM_READ_BLOCK  . . . . .  	NUMBER	0027	
FCB_RANDOM_WRITE . . . . . . . .  	NUMBER	0022	
FCB_RANDOM_WRITE_BLOCK . . . . .  	NUMBER	0028	
FCB_RENAME . . . . . . . . . . .  	NUMBER	0017	
FCB_SEQ_READ . . . . . . . . . .  	NUMBER	0014	
FCB_SEQ_WRITE  . . . . . . . . .  	NUMBER	0015	
FCB_SFN  . . . . . . . . . . . .  	BYTE	0018	
FCB_TO_ASCZ  . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
FCHECKDRIVE  . . . . . . . . . .  	NUMBER	0001	
FCHK . . . . . . . . . . . . . .  	NUMBER	0001	
FDELIM . . . . . . . . . . . . .  	NUMBER	0002	
FFCB . . . . . . . . . . . . . .  	NUMBER	0008	
FILDIRENT  . . . . . . . . . . .  	NUMBER	0010	
FILECLOSED . . . . . . . . . . .  	L NEAR	068D	TRANCODE
FILECNT  . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
FILE_INV_CPAGE . . . . . . . . .  	NUMBER	-0001	
file_name_ptr  . . . . . . . . .  	V WORD	0000	TRANDATA	External
FILE_NO_CPAGE  . . . . . . . . .  	NUMBER	0000	
FILE_TIMES . . . . . . . . . . .  	NUMBER	0057	
FILPERPROC . . . . . . . . . . .  	NUMBER	0014	
FIND_FIRST . . . . . . . . . . .  	NUMBER	004E	
FIND_NEXT  . . . . . . . . . . .  	NUMBER	004F	
FIRSTDEST  . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
FIRSTENT . . . . . . . . . . . .  	L NEAR	02C1	TRANCODE
FLSHFIL  . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
FORGETIT . . . . . . . . . . . .  	L NEAR	0693	TRANCODE
FORGETITJ  . . . . . . . . . . .  	L NEAR	05F5	TRANCODE
FPARSE . . . . . . . . . . . . .  	NUMBER	0001	
free_tpa . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
FRSTSRC  . . . . . . . . . . . .  	L NEAR	026B	TRANCODE
FRSTSRCH . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
FSPCHK . . . . . . . . . . . . .  	NUMBER	0004	
FSWITCH  . . . . . . . . . . . .  	NUMBER	8000	
FSWITCHALLOWED . . . . . . . . .  	NUMBER	0002	
F_AUX  . . . . . . . . . . . . .  	NUMBER	0010	
F_CARRY  . . . . . . . . . . . .  	NUMBER	0001	
F_DIRECTION  . . . . . . . . . .  	NUMBER	0400	
F_INTERRUPT  . . . . . . . . . .  	NUMBER	0200	
F_OVERFLOW . . . . . . . . . . .  	NUMBER	0800	
F_PARITY . . . . . . . . . . . .  	NUMBER	0004	
F_SIGN . . . . . . . . . . . . .  	NUMBER	0080	
F_TRACE  . . . . . . . . . . . .  	NUMBER	0100	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-11


F_ZERO . . . . . . . . . . . . .  	NUMBER	0040	

GETCURRENTPSP  . . . . . . . . .  	NUMBER	0062	
GETEXTCNTRY  . . . . . . . . . .  	NUMBER	0065	
GETEXTENDEDERROR . . . . . . . .  	NUMBER	0059	
GETSETCDPG . . . . . . . . . . .  	NUMBER	0066	
GETSETMEDIAID  . . . . . . . . .  	NUMBER	0069	
GET_CPSW . . . . . . . . . . . .  	NUMBER	0003	
GET_CRITICAL_MSG . . . . . . . .  	NUMBER	0004	
GET_CURRENT_PDB  . . . . . . . .  	NUMBER	0051	
GET_DATE . . . . . . . . . . . .  	NUMBER	002A	
GET_DEFAULT_DPB  . . . . . . . .  	NUMBER	001F	
GET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	0019	
GET_DMA  . . . . . . . . . . . .  	NUMBER	002F	
GET_DPB  . . . . . . . . . . . .  	NUMBER	0032	
GET_DRIVE_FREESPACE  . . . . . .  	NUMBER	0036	
GET_EXTENDED_MSG . . . . . . . .  	NUMBER	0000	
GET_FCB_FILE_LENGTH  . . . . . .  	NUMBER	0023	
GET_FCB_POSITION . . . . . . . .  	NUMBER	0024	
get_file_code_page_tag . . . . .  	L NEAR	0000	TRANCODE	External
GET_GENERIC  . . . . . . . . . .  	NUMBER	007F	
GET_INDOS_FLAG . . . . . . . . .  	NUMBER	0034	
GET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0035	
GET_IN_VARS  . . . . . . . . . .  	NUMBER	0052	
GET_PARSE_MSG  . . . . . . . . .  	NUMBER	0002	
GET_SRC_XA . . . . . . . . . . .  	L NEAR	047A	TRANCODE
GET_TIME . . . . . . . . . . . .  	NUMBER	002C	
GET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	0054	
GET_VERSION  . . . . . . . . . .  	NUMBER	0030	
GET_VIDEO_STATE  . . . . . . . .  	NUMBER	000F	
GET_XA . . . . . . . . . . . . .  	NUMBER	0002	
GOT2ARGS . . . . . . . . . . . .  	L NEAR	01A0	TRANCODE
GOTPLUS  . . . . . . . . . . . .  	L NEAR	0105	TRANCODE
GOTROOM  . . . . . . . . . . . .  	L NEAR	053E	TRANCODE

HANDLE_FAIL_I24  . . . . . . . .  	NUMBER	0100	
HONGEUL  . . . . . . . . . . . .  	NUMBER	0063	

I24_AREA . . . . . . . . . . . .  	NUMBER	0006	
I24_CLASS  . . . . . . . . . . .  	NUMBER	0080	
I24_OPERATION  . . . . . . . . .  	NUMBER	0001	
IBM  . . . . . . . . . . . . . .  	ALIAS	 IBMVER		
IBMCOPYRIGHT . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPAN . . . . . . . . . . . .  	ALIAS	 FALSE		
IBMJAPVER  . . . . . . . . . . .  	ALIAS	 FALSE		
IBMVER . . . . . . . . . . . . .  	ALIAS	 TRUE		
IFS_IOCTL  . . . . . . . . . . .  	NUMBER	006B	
IGNORE_ALLOWED . . . . . . . . .  	NUMBER	0020	
INBDEV_ptr . . . . . . . . . . .  	V WORD	0000	TRANDATA	External
INEXACT  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
INITCTRLC  . . . . . . . . . . .  	NUMBER	0004	
INITINIT . . . . . . . . . . . .  	NUMBER	0001	
INITSPECIAL  . . . . . . . . . .  	NUMBER	0002	
INSTALLED  . . . . . . . . . . .  	NUMBER	FFFF	
INSTALLEDDATA  . . . . . . . . .  	NUMBER	0000	
INTBASE  . . . . . . . . . . . .  	NUMBER	0080	
INTERNAT . . . . . . . . . . . .  	ALIAS	 FALSE		
INTERNATIONAL  . . . . . . . . .  	NUMBER	0038	
INTERNAT_BLOCK_MAX . . . . . . .  	NUMBER	0020	
INTTAB . . . . . . . . . . . . .  	NUMBER	0020	
INT_24_ERROR . . . . . . . . . .  	NUMBER	2000	
INT_ABORT  . . . . . . . . . . .  	ALIAS	 INTTAB		
INT_COMMAND  . . . . . . . . . .  	NUMBER	0021	
INT_CTRL_C . . . . . . . . . . .  	NUMBER	0023	
INT_DISK_READ  . . . . . . . . .  	NUMBER	0025	
INT_DISK_WRITE . . . . . . . . .  	NUMBER	0026	
INT_FASTCON  . . . . . . . . . .  	NUMBER	0029	
INT_FATAL_ABORT  . . . . . . . .  	NUMBER	0024	
INT_IBM  . . . . . . . . . . . .  	NUMBER	002A	
INT_KEEP_PROCESS . . . . . . . .  	NUMBER	0027	
INT_SPOOLER  . . . . . . . . . .  	NUMBER	0028	
INT_TERMINATE  . . . . . . . . .  	NUMBER	0022	
INV_CP_TAG . . . . . . . . . . .  	NUMBER	0000	
IN_WORD  . . . . . . . . . . . .  	NUMBER	4E49	
IOCTL  . . . . . . . . . . . . .  	NUMBER	0044	
IO_MODE_ID . . . . . . . . . . .  	NUMBER	0002	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-12



JAPAN  . . . . . . . . . . . . .  	ALIAS	 FALSE		

KANJI  . . . . . . . . . . . . .  	ALIAS	 FALSE		
KEEP_PROCESS . . . . . . . . . .  	NUMBER	0031	
KOREA  . . . . . . . . . . . . .  	ALIAS	 FALSE		

LABRACKET  . . . . . . . . . . .  	NUMBER	003C	
LEAVECFLAG . . . . . . . . . . .  	L NEAR	0276	TRANCODE
LENGTH_CALL  . . . . . . . . . .  	NUMBER	0004	
LESSARGS_PTR . . . . . . . . . .  	NUMBER	0002	
LINESPERPAGE . . . . . . . . . .  	NUMBER	0019	
LOCKOPER . . . . . . . . . . . .  	NUMBER	005C	
LPAREN . . . . . . . . . . . . .  	NUMBER	0028	
LSEEK  . . . . . . . . . . . . .  	NUMBER	0042	

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MAXBUCKETINPAGE  . . . . . . . .  	NUMBER	0002	
MAXBUFFINBUCKET  . . . . . . . .  	NUMBER	000F	
MAX_NEST . . . . . . . . . . . .  	NUMBER	000A	
MELCOPY  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
MELDO  . . . . . . . . . . . . .  	L NEAR	0312	TRANCODE
MELDOJ . . . . . . . . . . . . .  	L NEAR	03AF	TRANCODE
MELSTART . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
MEMS . . . . . . . . . . . . . .  	NUMBER	0001	
MESSAGE_2F . . . . . . . . . . .  	NUMBER	002E	
MINOR_VERSION  . . . . . . . . .  	NUMBER	0000	
MI_INT . . . . . . . . . . . . .  	NUMBER	00CD	
MI_LONG_CALL . . . . . . . . . .  	NUMBER	009A	
MI_LONG_JMP  . . . . . . . . . .  	NUMBER	00EA	
MI_LONG_RET  . . . . . . . . . .  	NUMBER	00CB	
MI_NEAR_RET  . . . . . . . . . .  	NUMBER	00C3	
MKDIR  . . . . . . . . . . . . .  	NUMBER	0039	
MOREARGS_PTR . . . . . . . . . .  	NUMBER	0001	
MORECP . . . . . . . . . . . . .  	L NEAR	0291	TRANCODE
msg_disp_class . . . . . . . . .  	V BYTE	0000	TRANDATA	External
msg_flag . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
MSVER  . . . . . . . . . . . . .  	NUMBER	0000	
MULTDOS  . . . . . . . . . . . .  	NUMBER	0012	
MULTIFS  . . . . . . . . . . . .  	NUMBER	0011	
MULTNET  . . . . . . . . . . . .  	NUMBER	0011	
MULTSHARE  . . . . . . . . . . .  	NUMBER	0010	
MULT_ANSI  . . . . . . . . . . .  	NUMBER	001A	
MULT_SHELL_BRK . . . . . . . . .  	NUMBER	1903	
MULT_SHELL_GET . . . . . . . . .  	NUMBER	1902	

NEXTAMBIG  . . . . . . . . . . .  	L NEAR	0303	TRANCODE
NEXTAMBIG0 . . . . . . . . . . .  	L NEAR	02EE	TRANCODE
NEXTMEL  . . . . . . . . . . . .  	L NEAR	03B5	TRANCODE
NEXTSRC  . . . . . . . . . . . .  	L NEAR	0288	TRANCODE
NEXTSRCJ . . . . . . . . . . . .  	L NEAR	03B2	TRANCODE
NLSFUNC  . . . . . . . . . . . .  	NUMBER	0014	
NOCONC . . . . . . . . . . . . .  	L NEAR	05C8	TRANCODE
NODCLOSE . . . . . . . . . . . .  	L NEAR	033D	TRANCODE
NOFLUSH  . . . . . . . . . . . .  	L NEAR	0350	TRANCODE
NOPLUS . . . . . . . . . . . . .  	L NEAR	00C5	TRANCODE
NORMPERLIN . . . . . . . . . . .  	NUMBER	0001	
NOSETCASC  . . . . . . . . . . .  	L NEAR	0218	TRANCODE
NOSTAMP  . . . . . . . . . . . .  	L NEAR	02BC	TRANCODE
NOTESTA  . . . . . . . . . . . .  	L NEAR	055C	TRANCODE
NOTSHORTDEST . . . . . . . . . .  	L NEAR	01BC	TRANCODE
NOT_BAD_SWITCH . . . . . . . . .  	L NEAR	00F4	TRANCODE
NOT_EXISTS_MASK  . . . . . . . .  	NUMBER	00F0	
NOT_SLASHV . . . . . . . . . . .  	L NEAR	00DC	TRANCODE
NOVERIF  . . . . . . . . . . . .  	L NEAR	01EB	TRANCODE
NOWRITE  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
NO_CLOSE_SRC . . . . . . . . . .  	L NEAR	04F4	TRANCODE
NO_CODE_PAGE_CHECK . . . . . . .  	NUMBER	0100	
NO_CONT_FLAG . . . . . . . . . .  	NUMBER	0000	
NO_COPY_XA . . . . . . . . . . .  	L NEAR	0501	TRANCODE
NO_COPY_XA_JMP . . . . . . . . .  	L NEAR	0477	TRANCODE
NO_CP_GET  . . . . . . . . . . .  	L NEAR	045D	TRANCODE
NO_ECHO  . . . . . . . . . . . .  	NUMBER	0000	
NO_ECHO_CHAR . . . . . . . . . .  	NUMBER	0040	
NO_FORGET  . . . . . . . . . . .  	L NEAR	05FA	TRANCODE
NO_HANDLE_OUT  . . . . . . . . .  	NUMBER	-0001	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-13


NO_SRC_XA  . . . . . . . . . . .  	L NEAR	0713	TRANCODE
NO_SUBST . . . . . . . . . . . .  	NUMBER	0000	
NO_XA_CLEANUP_ERR  . . . . . . .  	L NEAR	0659	TRANCODE
NO_XA_SEG  . . . . . . . . . . .  	NUMBER	-0001	
NULLCOMMAND  . . . . . . . . . .  	NUMBER	0001	
NULLRPAREN . . . . . . . . . . .  	NUMBER	0029	
NXTADD . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External

objcnt . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
OEM_C1 . . . . . . . . . . . . .  	NUMBER	00F9	
OEM_C2 . . . . . . . . . . . . .  	NUMBER	00FA	
OEM_C3 . . . . . . . . . . . . .  	NUMBER	00FB	
OEM_C4 . . . . . . . . . . . . .  	NUMBER	00FC	
OEM_C5 . . . . . . . . . . . . .  	NUMBER	00FD	
OEM_C6 . . . . . . . . . . . . .  	NUMBER	00FE	
OEM_C7 . . . . . . . . . . . . .  	NUMBER	00FF	
one_char_val . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
ONE_SUBST  . . . . . . . . . . .  	NUMBER	0001	
OPEN . . . . . . . . . . . . . .  	NUMBER	003D	
OPENOK . . . . . . . . . . . . .  	L NEAR	0417	TRANCODE
OPEN_FOR_BOTH  . . . . . . . . .  	NUMBER	0002	
OPEN_FOR_READ  . . . . . . . . .  	NUMBER	0000	
OPEN_FOR_WRITE . . . . . . . . .  	NUMBER	0001	
overwr_ptr . . . . . . . . . . .  	V WORD	0000	TRANDATA	External

PARM_BLOCK_SIZE  . . . . . . . .  	NUMBER	000B	
PARM_OFF_POS . . . . . . . . . .  	WORD	0002	
PARSE_FILE_DESCRIPTOR  . . . . .  	NUMBER	0029	
parse_last . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
PARSE_MSG_CLASS  . . . . . . . .  	NUMBER	0002	
PATHPARSE  . . . . . . . . . . .  	NUMBER	0061	
PATH_SEP . . . . . . . . . . . .  		0002	
PDB_APPEND . . . . . . . . . . .  	BYTE	003D	
PDB_INTERCON . . . . . . . . . .  	BYTE	003C	
PLUS . . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
PLUS_CHR . . . . . . . . . . . .  	NUMBER	002B	
plus_comma . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
PTR_OFF_POS  . . . . . . . . . .  	NUMBER	0005	
PTR_SEG_POS  . . . . . . . . . .  	NUMBER	0007	
PUTZ . . . . . . . . . . . . . .  	L NEAR	05CA	TRANCODE

RABRACKET  . . . . . . . . . . .  	NUMBER	003E	
RAW_CON_INPUT  . . . . . . . . .  	NUMBER	0007	
RAW_CON_IO . . . . . . . . . . .  	NUMBER	0006	
RDEOF  . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
READ . . . . . . . . . . . . . .  	NUMBER	003F	
READ_OPEN_FLAG . . . . . . . . .  	NUMBER	0101	
READ_OPEN_MODE . . . . . . . . .  	NUMBER	0000	
REDIRECTOR . . . . . . . . . . .  	NUMBER	0000	
RENAME . . . . . . . . . . . . .  	NUMBER	0056	
RESERVED_BITS_MASK . . . . . . .  	NUMBER	FE00	
RESSEG . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
RESTUDIR1  . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
RESULT_DATE  . . . . . . . . . .  	NUMBER	0007	
RESULT_DRIVE . . . . . . . . . .  	NUMBER	0006	
RESULT_FILESPEC  . . . . . . . .  	NUMBER	0005	
RESULT_NO_ERROR  . . . . . . . .  	NUMBER	0000	
RESULT_NUMBER  . . . . . . . . .  	NUMBER	0001	
RESULT_STRING  . . . . . . . . .  	NUMBER	0003	
RESULT_TIME  . . . . . . . . . .  	NUMBER	0008	
RES_SUBST  . . . . . . . . . . .  	NUMBER	0002	
RET50  . . . . . . . . . . . . .  	L NEAR	0691	TRANCODE
RETRY_ALLOWED  . . . . . . . . .  	NUMBER	0010	
RET_L  . . . . . . . . . . . . .  	NEAR	06D5	TRANCODE
RET_NZ . . . . . . . . . . . . .  	NEAR	05AD	TRANCODE
RMDIR  . . . . . . . . . . . . .  	NUMBER	003A	
RPAREN . . . . . . . . . . . . .  	NUMBER	0029	
RSRC_XA_SEG  . . . . . . . . . .  	V WORD	0000	DATARES	External

SCANBUF  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
SCANFSRC . . . . . . . . . . . .  	L NEAR	01F2	TRANCODE
SCANSRC  . . . . . . . . . . . .  	L NEAR	0299	TRANCODE
SCANSRC2 . . . . . . . . . . . .  	L NEAR	0378	TRANCODE
SCROLL_VIDEO_PAGE  . . . . . . .  	NUMBER	0006	
SDIRBUF  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
SEARCH . . . . . . . . . . . . .  	L NEAR	03E2	TRANCODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-14


SEARCHNEXT . . . . . . . . . . .  	L NEAR	03D6	TRANCODE
SEARCH_ATTR  . . . . . . . . . .  	NUMBER	0013	
SEMICOLON  . . . . . . . . . . .  	NUMBER	003B	
SERVERCALL . . . . . . . . . . .  	NUMBER	005D	
SETASC . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
SETBLOCK . . . . . . . . . . . .  	NUMBER	004A	
SETDPB . . . . . . . . . . . . .  	NUMBER	0053	
SETNMEL  . . . . . . . . . . . .  	L NEAR	02F8	TRANCODE
SETNMELJ . . . . . . . . . . . .  	L NEAR	03D3	TRANCODE
SETSTARS . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
Setup_parse_error_msg  . . . . .  	L NEAR	0000	TRANCODE	External
SET_COLOR_PALETTE  . . . . . . .  	NUMBER	000B	
SET_CRITICAL_MSG . . . . . . . .  	NUMBER	0005	
SET_CRIT_DEV . . . . . . . . . .  	NUMBER	0100	
SET_CTRL_C_TRAPPING  . . . . . .  	NUMBER	0033	
SET_CURRENT_PDB  . . . . . . . .  	NUMBER	0050	
SET_CURSOR_POSITION  . . . . . .  	NUMBER	0002	
SET_DATE . . . . . . . . . . . .  	NUMBER	002B	
SET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	000E	
SET_DMA  . . . . . . . . . . . .  	NUMBER	001A	
SET_EXTENDED_MSG . . . . . . . .  	NUMBER	0001	
set_ext_error_msg  . . . . . . .  	L NEAR	0000	TRANCODE	External
SET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0025	
SET_OEM_HANDLER  . . . . . . . .  	NUMBER	00F8	
SET_PARSE_MSG  . . . . . . . . .  	NUMBER	0003	
SET_PRINTER_FLAG . . . . . . . .  	NUMBER	0064	
SET_TIME . . . . . . . . . . . .  	NUMBER	002D	
SET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	002E	
SET_VIDEO_MODE . . . . . . . . .  	NUMBER	0000	
SET_XA . . . . . . . . . . . . .  	NUMBER	0004	
SF_BUSY  . . . . . . . . . . . .  	NUMBER	-0001	
SF_CLOSE_NODATE  . . . . . . . .  	NUMBER	4000	
SF_DEFAULT_NUMBER  . . . . . . .  	NUMBER	0005	
SF_FSDA  . . . . . . . . . . . .  	BYTE	0019	
SF_ISFCB . . . . . . . . . . . .  	NUMBER	8000	
SF_ISNET . . . . . . . . . . . .  	NUMBER	8000	
SF_LRU . . . . . . . . . . . . .  	WORD	0015	
SF_NETID . . . . . . . . . . . .  	BYTE	0019	
SF_NET_SPOOL . . . . . . . . . .  	NUMBER	0800	
SF_NO_INHERIT  . . . . . . . . .  	NUMBER	1000	
SF_OPENAGE . . . . . . . . . . .  	WORD	0017	
SF_PIPE  . . . . . . . . . . . .  	NUMBER	2000	
SF_SERIAL_ID . . . . . . . . . .  	WORD	000B	
SHAREF . . . . . . . . . . . . .  	NUMBER	0000	
SHARING_COMPAT . . . . . . . . .  	NUMBER	0000	
SHARING_DENY_BOTH  . . . . . . .  	NUMBER	0010	
SHARING_DENY_NONE  . . . . . . .  	NUMBER	0040	
SHARING_DENY_READ  . . . . . . .  	NUMBER	0030	
SHARING_DENY_WRITE . . . . . . .  	NUMBER	0020	
SHARING_MASK . . . . . . . . . .  	NUMBER	00F0	
SHARING_NET_FCB  . . . . . . . .  	NUMBER	0070	
SHARING_NO_INHERIT . . . . . . .  	NUMBER	0080	
SHELL_ACTION . . . . . . . . . .  	NUMBER	00FF	
SHOWCPNAM  . . . . . . . . . . .  	L NEAR	0320	TRANCODE
SMALL_A  . . . . . . . . . . . .  	NUMBER	0061	
SMALL_Z  . . . . . . . . . . . .  	NUMBER	007A	
SOURCEPROC . . . . . . . . . . .  	L NEAR	0261	TRANCODE
SOURCE_SET . . . . . . . . . . .  	N PROC	06AD	TRANCODE	Length = 0029
SPECIAL_DELIM  . . . . . . . . .  		0007	
SRCBUF . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
SRCHAND  . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
SRCHDONE . . . . . . . . . . . .  	L NEAR	02E4	TRANCODE
SRCINFO  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
SRCISDEV . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
SRCNONEXIST  . . . . . . . . . .  	L NEAR	023E	TRANCODE
SRCPT  . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
SRCSIZ . . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
SRCTAIL  . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
SRCVARS  . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
srcxname . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
SRC_CP_ERROR . . . . . . . . . .  	L NEAR	045A	TRANCODE
src_xa_seg . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
src_xa_size  . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
STAR . . . . . . . . . . . . . .  	NUMBER	002A	
STARTEL  . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-15


STDERR . . . . . . . . . . . . .  	NUMBER	0002	
STDIN  . . . . . . . . . . . . .  	NUMBER	0000	
STDOUT . . . . . . . . . . . . .  	NUMBER	0001	
STDPRN . . . . . . . . . . . . .  	NUMBER	0004	
STD_AUX_INPUT  . . . . . . . . .  	NUMBER	0003	
STD_AUX_OUTPUT . . . . . . . . .  	NUMBER	0004	
STD_CON_INPUT  . . . . . . . . .  	NUMBER	0001	
STD_CON_INPUT_FLUSH  . . . . . .  	NUMBER	000C	
STD_CON_INPUT_NO_ECHO  . . . . .  	NUMBER	0008	
STD_CON_INPUT_STATUS . . . . . .  	NUMBER	000B	
STD_CON_OUTPUT . . . . . . . . .  	NUMBER	0002	
STD_CON_STRING_INPUT . . . . . .  	NUMBER	000A	
STD_CON_STRING_OUTPUT  . . . . .  	NUMBER	0009	
std_Eprintf  . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
STD_PRINTER_OUTPUT . . . . . . .  	NUMBER	0005	
std_printf . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
string_ptr_2 . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
SWITCH . . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
SWITCHA  . . . . . . . . . . . .  	NUMBER	0004	
SWITCHB  . . . . . . . . . . . .  	NUMBER	0008	
SWITCHCOPY . . . . . . . . . . .  	NUMBER	801C	
SWITCHDIR  . . . . . . . . . . .  	NUMBER	8003	
SWITCHP  . . . . . . . . . . . .  	NUMBER	0002	
SWITCHV  . . . . . . . . . . . .  	NUMBER	0010	
SWITCHW  . . . . . . . . . . . .  	NUMBER	0001	
SW_FLAG  . . . . . . . . . . . .  		0000	
SYM  . . . . . . . . . . . . . .  	NUMBER	003E	

TAB_CHR  . . . . . . . . . . . .  	NUMBER	0009	
TCOMMAND . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
TEMPLEN  . . . . . . . . . . . .  	NUMBER	0086	
TERMREAD . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
TESTDEV  . . . . . . . . . . . .  	L NEAR	0591	TRANCODE
TESTP2 . . . . . . . . . . . . .  	L NEAR	00F9	TRANCODE
TEXT_MODE  . . . . . . . . . . .  	NUMBER	0001	
TPA  . . . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
TPLEN  . . . . . . . . . . . . .  	NUMBER	0040	
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TRUEBYTE . . . . . . . . . . . .  	NUMBER	00FF	
TRYFLUSH . . . . . . . . . . . .  	L NEAR	0000	TRANCODE	External
TRY_TOO_MANY . . . . . . . . . .  	L NEAR	0164	TRANCODE

UNLINK . . . . . . . . . . . . .  	NUMBER	0041	
UNUSED . . . . . . . . . . . . .  		0003	
USEALL . . . . . . . . . . . . .  	L NEAR	0573	TRANCODE
USERDIR1 . . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
USEROPER . . . . . . . . . . . .  	NUMBER	005E	
UTIL_MSG_CLASS . . . . . . . . .  	NUMBER	-0001	

VBAR . . . . . . . . . . . . . .  	NUMBER	007C	
VERVAL . . . . . . . . . . . . .  	V WORD	0000	DATARES	External
VIDEO_ALPHA  . . . . . . . . . .  	NUMBER	0003	
VIDEO_ATTRIBUTE  . . . . . . . .  	NUMBER	0007	
VIDEO_BW . . . . . . . . . . . .  	NUMBER	0007	
VIDEO_IO_INT . . . . . . . . . .  	NUMBER	0010	

WAITPROCESS  . . . . . . . . . .  	NUMBER	004D	
WIDEPERLIN . . . . . . . . . . .  	NUMBER	0005	
WILDCARD . . . . . . . . . . . .  		0001	
WRITE  . . . . . . . . . . . . .  	NUMBER	0040	
WRITE_OPEN_FLAG  . . . . . . . .  	NUMBER	0101	
WRITE_OPEN_MODE  . . . . . . . .  	NUMBER	0001	
WRITTEN  . . . . . . . . . . . .  	V WORD	0000	TRANSPACE	External

XA_CLEANUP_ERR . . . . . . . . .  	L NEAR	0673	TRANCODE
xa_cp_out  . . . . . . . . . . .  	V BYTE	0000	TRANSPACE	External
xa_list_attr . . . . . . . . . .  	V WORD	0000	TRANSPACE	External
XDUP . . . . . . . . . . . . . .  	NUMBER	0045	
XDUP2  . . . . . . . . . . . . .  	NUMBER	0046	
XNAMETRANS . . . . . . . . . . .  	NUMBER	0060	

YES_ECHO . . . . . . . . . . . .  	NUMBER	0001	

??0000 . . . . . . . . . . . . .  	L NEAR	0287	TRANCODE
??0001 . . . . . . . . . . . . .  	L NEAR	03E1	TRANCODE
??0002 . . . . . . . . . . . . .  	L NEAR	03F2	TRANCODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:06
COMMAND COPY routines.                                      Symbols-16


??0003 . . . . . . . . . . . . .  	L NEAR	05A7	TRANCODE
??0005 . . . . . . . . . . . . .  	L NEAR	05C7	TRANCODE
??0006 . . . . . . . . . . . . .  	L NEAR	0692	TRANCODE
??0007 . . . . . . . . . . . . .  	L NEAR	06AC	TRANCODE
??0008 . . . . . . . . . . . . .  	L NEAR	06D5	TRANCODE
?PLM . . . . . . . . . . . . . .  	NUMBER	0000	
?WIN . . . . . . . . . . . . . .  	NUMBER	0000	
@0 . . . . . . . . . . . . . . .  	L NEAR	044A	TRANCODE
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  copy		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   3822 Source  Lines
   4260 Total   Lines
   1132 Symbols

  42524 + 166141 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
