Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-1


					PAGE	60,132			;
					TITLE	DEBUG.SAL - DEBUGger for PC DOS
				
				;======================= START OF SPECIFICATIONS =========================
				;
				; MODULE NAME: DEBUG.SAL
				;
				; DESCRIPTIVE NAME: DEBUGGING TOOL
				;
				; FUNCTION: PROVIDES USERS WITH A TOOL FOR DEBUGGING PROGRAMS.
				;
				; ENTRY POINT: START
				;
				; INPUT: DOS COMMAND LINE
				;	 DEBUG COMMANDS
				;
				; EXIT NORMAL: NA
				;
				; EXIT ERROR: NA
				;
				; INTERNAL REFERENCES:
				;
				; EXTERNAL REFERENCES:
				;
				;	ROUTINE: DEBCOM1 - CONTAINS ROUTINES CALLED BY DEBUG
				;		 DEBCOM2 - CONTAINS ROUTINES CALLED BY DEBUG
				;		 DEBCOM3 - CONTAINS ROUTINES CALLED BY DEBUG
				;		 DEBASM  - CONTAINS ROUTINES CALLED BY DEBUG
				;		 DEBUASM - CONTAINS ROUTINES CALLED BY DEBUG
				;		 DEBMES  - CONTAINS MESSAGE RETRIEVER ROUTINES
				;
				; NOTES: THIS MODULE IS TO BE PREPPED BY SALUT WITH THE "PR" OPTIONS.
				;	 LINK DEBUG+DEBCOM1+DEBCOM2+DEBCOM3+DEBASM+DEBUASM+DEBERR+
				;	      DEBCONST+DEBDATA+DEBMES
				;
				; REVISION HISTORY:
				;
				;	AN000	VERSION 4.00 - REVISIONS MADE RELATE TO THE FOLLOWING:
				;
				;				- IMPLEMENT DBCS HANDLING	DMS:6/17/87
				;				- IMPLEMENT DBCS HANDLING	bgb:5/03/88	;an001;bgb
				;				- IMPLEMENT MESSAGE RETRIEVER	DMS:6/17/87
				;				- > 32 MB SUPPORT		DMS:6/17/87
				;
				; COPYRIGHT: "MS DOS DEBUG UTILITY"
				;	     "VERSION 4.00 (C) COPYRIGHT 1988 Microsoft"
				;	     "LICENSED MATERIAL - PROPERTY OF Microsoft  "
				;
				;	MICROSOFT REVISION HISTORY:
				;
				; Modified 5/4/82 by AaronR to do all I/O direct to devices
				; Runs on MS-DOS 1.28 and above
				;
				; REV 1.20
				;	Tab expansion
				;	New device interface (1.29 and above)
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-2


				; REV 2.0
				;	line by line assembler added by C. P.
				; REV 2.1
				;	Uses EXEC system call
				; REV 2.2
				;	Ztrace mode by zibo.
				;	Fix dump display to indent properly
				;	Parity nonsense by zibo
				;
				; REV 2.3 NP
				;	Use Printf for all standard output.
				;	Change to EXE file
				; REV 2.4 ARR
				;	Bug fixes. TEST, XCHG instructions reg order reversed.
				;	Single step, break point interrupts saved and restored.
				;	Access denied given on W to read only file.
				;======================= END OF SPECIFICATIONS ===========================
				
				.LIST
					INCLUDE DEBEQU.ASM
			     C	;======================= START OF SPECIFICATIONS =========================
			     C	;
			     C	; MODULE NAME: DEBEQU.SAL
			     C	;
			     C	; DESCRIPTIVE NAME: EQUATES NEEDED BY DEBUG
			     C	;
			     C	; FUNCTION: PROVIDES EQUATES NEEDED BY DEBUG
			     C	;
			     C	; ENTRY POINT: NA
			     C	;
			     C	; INPUT: NA
			     C	;
			     C	; EXIT NORMAL: NA
			     C	;
			     C	; EXIT ERROR: NA
			     C	;
			     C	; INTERNAL REFERENCES: NA
			     C	;
			     C	; EXTERNAL REFERENCES: NA
			     C	;
			     C	; NOTES: THIS MODULE IS TO BE PREPPED BY SALUT WITH THE "PR" OPTIONS.
			     C	;	 LINK DEBUG+DEBCOM1+DEBCOM2+DEBCOM3+DEBASM+DEBUASM+DEBERR+
			     C	;	      DEBCONST+DEBDATA+DEBMES
			     C	;
			     C	; REVISION HISTORY:
			     C	;
			     C	;	AN000	VERSION 4.00 - REVISIONS MADE RELATE TO THE FOLLOWING:
			     C	;
			     C	;				- IMPLEMENT DBCS HANDLING	DMS:6/17/87
			     C	;				- IMPLEMENT MESSAGE RETRIEVER	DMS:6/17/87
			     C	;				- > 32 MB SUPPORT		DMS:6/17/87
			     C	;
			     C	; COPYRIGHT: "MS DOS DEBUG UTILITY"
			     C	;	     "VERSION 4.00 (C) COPYRIGHT 1988 Microsoft"
			     C	;	     "LICENSED MATERIAL - PROPERTY OF Microsoft  "
			     C	;
			     C	;======================= END OF SPECIFICATIONS ===========================
			     C	
			     C	
			     C	;IBMVER EQU	TRUE		    ; These switches get set in version.inc
			     C	;MSVER	EQU	FALSE		    ; NOT HERE !!!
			     C	
			     C		INCLUDE SYSVER.INC
			     C	
			     C	
			     C	
 =                           C	SYSVER		   EQU	FALSE		; if true, i/o direct to bios
			     C						; so DOS can be debugged
			     C	
			     C	
			     C	
 =                           C	IBMJAPAN EQU	FALSE
			     C	
 =                           C	SETCNTC EQU	TRUE			; If this is FALSE, DEBUG will not set
			     C						; the Control C int vector
			     C	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-3
                                                            

 = 002D                      C	PROMPT	EQU	"-"
 = 005C                      C	FCB	EQU	5CH
 =                           C	EXEFCB	EQU	FCB
 = 0050                      C	BUFLEN	EQU	80			; Maximum length of line input buffer
 = 000A                      C	BPMAX	EQU	10			; Maximum number of breakpoints
 = 0032                      C	BPLEN	EQU	5*BPMAX 		; Length of breakpoint table
 = 000E                      C	REGTABLEN EQU	14			; Number of registers
 = 0000                      C	SEGDIF	EQU	0
 = 0200                      C	BUFSIZ	EQU	512
			     C	
 = 5842                      C	BXREG	EQU	"B"+5800H		; "BX"
 = 5042                      C	BPREG	EQU	"B"+5000H		; "BP"
 = 4953                      C	SIREG	EQU	"S"+4900H		; "SI"
 = 4944                      C	DIREG	EQU	"D"+4900H		; "DI"
 = 2C00                      C	COMMA	EQU	2C00H
 = 0023                      C	OPBUFLEN EQU	35
			     C	
			     C		IF	IBMVER
 = 0021                      C	MASK_PORT   EQU     21H 		; 8259 interrupt control register
 = 00FF                      C	INT_MASK    EQU     11111111B		; Disable ALL interrupts
			     C		ENDIF
			     C	
 = 000D                      C	CR	EQU	13			;CARRIAGE RETURN
 = 000A                      C	LF	EQU	10			;LINE FEED
 = 0009                      C	CHAR_TAB EQU	9			;TAB
 = 0008                      C	CHAR_BACKSPACE EQU 8			;BACKSPACE CHARACTER
 = 001A                      C	CHAR_EOF EQU	1AH			;END OF FILE CHARACTER
 = 007F                      C	CHAR_RUBOUT EQU 7FH			;RUBOUT CHARACTER
			     C	
 = 003D                      C	CHAR_EQUAL EQU	"="			;CHARACTER EQUAL
 = 002D                      C	CHAR_MINUS EQU	"-"			;MINUS CHARACTER
 = 0020                      C	CHAR_BLANK EQU	" "			;BLANK CHARACTER
 = 0022                      C	DOUBLE_QUOTE EQU '"'			;DOUBLE QUOTE CHARACTER
 = 0027                      C	SINGLE_QUOTE EQU "'"			;SINGLE QUOTE CHARACTER
 = 002C                      C	CHAR_COMMA EQU	","			;CHARACTER COMMA
 = 002E                      C	CHAR_PERIOD EQU "."			;CHARACTER PERIOD
 = 003A                      C	CHAR_COLON EQU	":"			;CHARACTER COLON
 = 003B                      C	CHAR_SEMICOLON EQU ";"			;CHARACTER SEMICOLON
 = 005B                      C	CHAR_LEFT_BRACKET EQU "["		;CHARACTER LEFT BRACKET
 = 0040                      C	CHAR_AT_SIGN EQU "@"			;CHARACTER "AT" SIGN
 = 0030                      C	CHAR_ZERO EQU	"0"			;CHARACTER ZERO
			     C	
 = 0061                      C	LOWER_A EQU	"a"			;LOWER CASE CHARACTER "a"
 = 007A                      C	LOWER_Z EQU	"z"			;LOWER CASE CHARACTER "z"
			     C	
 = 0041                      C	UPPER_A EQU	"A"			;UPPER CASE CHARACTER "A"
 = 0043                      C	UPPER_C EQU	"C"			;UPPER CASE CHARACTER "C"
 = 0045                      C	UPPER_E EQU	"E"			;UPPER CASE CHARACTER "E"
 = 0046                      C	UPPER_F EQU	"F"			;UPPER CASE CHARACTER "F"
 = 004C                      C	UPPER_L EQU	"L"			;UPPER CASE CHARACTER "L"
 = 004D                      C	UPPER_M EQU	"M"			;UPPER CASE CHARACTER "M"
 = 004E                      C	UPPER_N EQU	"N"			;UPPER CASE CHARACTER "N"
 = 0050                      C	UPPER_P EQU	"P"			;UPPER CASE CHARACTER "P"
 = 0053                      C	UPPER_S EQU	"S"			;UPPER CASE CHARACTER "S"
 = 0058                      C	UPPER_X EQU	"X"			;UPPER CASE CHARACTER "X"
 = 005A                      C	UPPER_Z EQU	"Z"			;UPPER CASE CHARACTER "Z"
			     C	
 = 0001                      C	VEC_SING_STEP EQU 1			;ID OF THE SINGLE STEP VECTOR
 = 0003                      C	VEC_BREAKPOINT EQU 3			;ID OF THE BREAKPOINT VECTOR
 = 0022                      C	VEC_TERM_ADDR EQU 22H			;ID OF THE TERMINATE ADDRESS VECTOR
 = 0023                      C	VEC_CTRL_BREAK EQU 23H			;ID OF THE CTRL BREAK EXIT ADDRESS VECTOR
 = 0024                      C	VEC_CRIT_ERR EQU 24H			;ID OF THE CRITICAL ERROR HANDLER VECTOR
 = 0025                      C	VEC_PRIMITIVE_DISK_READ EQU 25H 	;ID OF THE PRIMITAVE DISK READ VECTOR
 = 0026                      C	VEC_PRIMITIVE_DISK_WRITE EQU 26H	;ID OF THE PRIMITAVE DISK WRITE VECTOR
 = 440D                      C	GENERIC_IOCTL EQU 440DH 		;an000;Generic IOCtl function
 = 0008                      C	READ_WRITE EQU	08H			;an000;read/write relative sectors
 = 0000                      C	READ_SECTOR EQU 00H			;an000;currently unknown value
 = 0000                      C	WRITE_SECTOR EQU 00H			;an000;currently unknown value
			     C	
 = 0001                      C	SET_DRIVEID_OPTION EQU 1		;AL VALUE FOR "PARSE FILENAME" FUNCTION
 = 0000                      C	LSEEK_FROM_START EQU 0			;AL VALUE FOR "LSEEK" FUNCTION
 = 0002                      C	LSEEK_EOF_OPTION EQU 2			;AL VALUE FOR "LSEEK" FUNCTION
			     C	
			     C	;======================= EMS Equates Begin ===============================
			     C	
 = 0040                      C	EMS_GET_MAN_STAT equ 40h		;an000;function 40h, int 67h
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-4
                                                            

 = 0042                      C	EMS_UNALL_PG_CNT equ 42h		;an000;funciton 42h, int 67h
 = 0043                      C	EMS_HAN_ALLOC equ 43h			;an000;function 43h, int 67h
 = 0044                      C	EMS_MAP_MEMORY equ 44h			;an000;function 44h, int 67h
 = 0045                      C	EMS_PAGE_DEALL equ 45h			;an000;function 45h, int 67h
 = 0046                      C	EMS_VERSION equ 46h			;an000;function 46h, int 67h
 = 0047                      C	EMS_SAVE_PAGE_MAP equ 47h		;an000;function 47h, int 67h
 = 0048                      C	EMS_REST_PAGE_MAP equ 48h		;an000;function 48h, int 67h
 = 004B                      C	EMS_HANDLE_CNT equ 4bh			;an000;function 4bh, int 67h
 = 004D                      C	EMS_HANDLE_PAGES equ 4dh		;an000;function 4dh, int 67h
 = 004E                      C	EMS_GET_SET_PG_MP equ 4eh		;an000;function 4eh, int 67h
 = 0000                      C	EMS_GET_PAGE_MAP equ 00h		;an000;sub function 00h of
 = 5800                      C	EMS_PG_FRAME equ 5800h			;an000;function 58h, int 67h
			     C						;      function 4eh, int 67h
 = 0001                      C	EMS_SET_PAGE_MAP equ 01h		;an000;sub function 01h of
			     C						;      function 4eh, int 67h
 = 00FF                      C	EMS_HANDLE_TOTAL equ 0ffh		;an000;total possible handles
			     C	
 = 0040                      C	EMS_LIM_40 equ	040h			;an000;LIM 4.0 I.D.
			     C	
 = 0080                      C	XM_ERR80 equ	80h			;an000;error message type
 = 0083                      C	XM_ERR83 equ	83h			;an000;error message type
 = 0084                      C	XM_ERR84 equ	84h			;an000;error message type
 = 0085                      C	XM_ERR85 equ	85h			;an000;error message type
 = 0086                      C	XM_ERR86 equ	86h			;an000;error message type
 = 0087                      C	XM_ERR87 equ	87h			;an000;error message type
 = 0088                      C	XM_ERR88 equ	88h			;an000;error message type
 = 0089                      C	XM_ERR89 equ	89h			;an000;error message type
 = 008A                      C	XM_ERR8A equ	8Ah			;an000;error message type
 = 008B                      C	XM_ERR8B equ	8Bh			;an000;error message type
 = 008D                      C	XM_ERR8D equ	8Dh			;an000;error message type
 = 008E                      C	XM_ERR8E equ	8Eh			;an000;error message type
 = 008F                      C	XM_ERR8F equ	8Fh			;an000;error message type
 = 00FF                      C	XM_NOT_INST equ 0ffh			;an000;EMS not inst
			     C	
			     C	;======================= EMS Equates End =================================
			     C	
				
				
				;======================= macro equates ===================================
				
 = 0081				dbcs_delim equ	81h			;an000;delimits dbcs char
 = 0040				asian_blk equ	40h			;an000;asian blank
 = 0020				amer_blk equ	20h			;an000;american blank
 = 0022				quote_char equ	22h			;an000;quote delim "
				
				;======================= end macro equates ===============================
				
				
				;This segment must be the first loaded since we are using it to make
				;a CREATE_PROCESS_DATA_BLOCK system call a la 1.0 and .COM files.
				;For this system call CS must point to the Program Prefix Header, so
				;by setting up a seperate segment just after the header we can issue
				;an INT 21H via a long call.  So don't move this guy around!
				
 0000				A_CREATE_BLOCK SEGMENT
				
					PUBLIC	CREATE_CALL
				
				;The other arguements to this system call have been set up
				;by the caller.
				
 0000				CREATE_CALL PROC FAR
 0000  B4 26				MOV	AH,CREATE_PROCESS_DATA_BLOCK
 0002  CD 21				INT	21H
 0004  CB				RET
				
 0005				CREATE_CALL ENDP
				
 0005				A_CREATE_BLOCK ENDS
				
				
 0000				CODE	SEGMENT PUBLIC
 0000				CODE	ENDS
				
 0000				CONST	SEGMENT PUBLIC
 0000				CONST	ENDS
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-5
                                                            

				
 0000				CSTACK	SEGMENT STACK
 0000				CSTACK	ENDS
				
 0000				DATA	SEGMENT PUBLIC
 0000				DATA	ENDS
				
				DG	GROUP	CODE,CONST,CSTACK,DATA
				
 0000				CONST	SEGMENT PUBLIC BYTE
					EXTRN	BADVER:BYTE,ENDMES_PTR:BYTE,CRLF_PTR:BYTE
					EXTRN	PROMPT_PTR:BYTE,ADD_PTR:BYTE,HEX_PTR:BYTE
					EXTRN	USER_PROC_PDB:WORD,CSSAVE:WORD,DSSAVE:WORD
					EXTRN	SPSAVE:WORD,IPSAVE:WORD,LINEBUF:BYTE,QFLAG:BYTE
					EXTRN	NEWEXEC:BYTE,HEADSAVE:WORD,LBUFSIZ:BYTE,BACMES_PTR:WORD
				
					IF	IBMVER
					    EXTRN   DSIZ:BYTE,NOREGL:BYTE,DISPB:WORD
					ENDIF
				
				
					EXTRN	NAMESPEC:BYTE
				
 0000				CONST	ENDS
				
 0000				CSTACK	SEGMENT STACK
 0000  016A[				DB	(362 - 80H) + 80H DUP(?) ; (362 - 80H) == IBM'S ROM REQUIREMENTS
	   ??			
			 ]	
				
									; (NEW - OLD) == SIZE TO GROW STACK
 016A				CSTACK	ENDS
				
 0000				DATA	SEGMENT PUBLIC BYTE
					EXTRN	ARG_BUF:BYTE,ADD_ARG:WORD,SUB_ARG:WORD,HEX_ARG1:WORD
					EXTRN	HEX_ARG2:WORD,STACK:BYTE, PREV24:DWORD, FIN24:BYTE
					EXTRN	PARSERR:BYTE,DATAEND:WORD,PARITYFLAG:BYTE,DISADD:BYTE
					EXTRN	ASMADD:BYTE,DEFDUMP:BYTE,BYTEBUF:BYTE,BEGSEG:WORD
					EXTRN	BPINTSAV:DWORD,SSINTSAV:DWORD ;ARR 2.4
					EXTRN	CREATE_LONG:DWORD
				
					extrn	lbtbl:dword		;an000;lead byte table pointer
				
 0000				DATA	ENDS
				
					EXTRN	PRINTF:NEAR		;ac000;changed to NEAR call
				
 0000				CODE	SEGMENT PUBLIC
					ASSUME	CS:DG,DS:NOTHING,ES:NOTHING,SS:CSTACK
				
					PUBLIC	RESTART
					PUBLIC	STD_PRINTF,PRINTF_CRLF
					PUBLIC	HEX_ADDRESS_ONLY,HEX_ADDRESS_STR
					PUBLIC	RESTART,SET_TERMINATE_VECTOR,DABORT,TERMINATE,COMMAND
					PUBLIC	FIND_DEBUG,CRLF,BLANK,TAB,INBUF,SCANB,SCANP
					PUBLIC	HEX,OUTSI,OUTDI,DIGIT,BACKUP,RBUFIN
					public	test_lead							;an001;bgb
					public	test1								;an001;bgb
				
				
					EXTRN	PERR:NEAR,COMPARE:NEAR,DUMP:NEAR,ENTERDATA:NEAR,FILL:NEAR
					EXTRN	GO:NEAR,INPUT:NEAR,LOAD:NEAR,MOVE:NEAR,NAMED:NEAR
					EXTRN	REG:NEAR,SEARCH:NEAR,DWRITE:NEAR,UNASSEM:NEAR,ASSEM:NEAR
					EXTRN	OUTPUT:NEAR,ZTRACE:NEAR,TRACE:NEAR,GETHEX:NEAR,GETEOL:NEAR
					EXTRN	PREPNAME:NEAR,DEFIO:NEAR,SKIP_FILE:NEAR,DEBUG_FOUND:NEAR
					EXTRN	TRAPPARITY:NEAR,RELEASEPARITY:NEAR
					extrn	pre_load_message:near	;an000;load messages
					extrn	debems:near		;an000;ems support
				
				
 0000  0100[				DB	100H DUP (?)
	   ??			
			 ]	
				
				
 0100				START:
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-6
                                                            

 0100  EB 09				JMP	SHORT DSTRT
				
 0102  56 65 72 73 20 32	HEADER	DB	"Vers 2.40"
       2E 34 30			
				
 010B				DSTRT:
				;=========================================================================
				; invoke PRE_LOAD_MESSAGE here.  If the messages were not loaded we will
				; exit with an appropriate error message.
				;
				;	Date	   : 6/14/87
				;=========================================================================
				
 010B  1E				push	ds			;an000;save regs
 010C  06				push	es			;an000;save resg
				
 010D  0E				push	cs			;an000;transfer cs
 010E  1F				pop	ds			;an000;    to ds
				
 010F  0E				push	cs			;an000;transfer cs
 0110  07				pop	es			;an000;    to es
					assume	ds:dg,es:dg		;an000;assume them
 0111  E8 0000 E			call	PRE_LOAD_MESSAGE	;an000;invoke SYSLOADMSG
				;	$if	c			;an000;if the load was unsuccessful
 0114  73 05				JNC $$IF1
 0116  B8 4C00				    mov     ax,(exit shl 8)	;an000;exit EDLIN.  PRE_LOAD_MESSAGE
									;      has already said why
 0119  CD 21				    int     21h 		;an000;exit
				;	$endif				;an000;
 011B				$$IF1:
				
 011B  07				pop	es			;an000;restore regs.
 011C  1F				pop	ds			;an000;
					assume	ds:nothing,es:nothing	;an000;back to original
				
 011D  B8 3503				MOV	AX,(GET_INTERRUPT_VECTOR SHL 8) OR VEC_BREAKPOINT ;get original contents
 0120  CD 21				INT	21H			;  of the BREAKPOINT vector
				
 0122  2E: 89 1E 0000 E			MOV	WORD PTR [BPINTSAV],BX	;  and save that vector for later
 0127  2E: 8C 06 0002 E			MOV	WORD PTR [BPINTSAV+WORD],ES ; restoration
				
 012C  B8 3501				MOV	AX,(GET_INTERRUPT_VECTOR SHL 8) OR VEC_SING_STEP ;get original contents
 012F  CD 21				INT	21H			;  of the SINGLE STEP vector
				
 0131  2E: 89 1E 0000 E			MOV	WORD PTR [SSINTSAV],BX	;  and save that vector for later
 0136  2E: 8C 06 0002 E			MOV	WORD PTR [SSINTSAV+WORD],ES ; restoration
				
 013B  2E: 8C 1E 0000 E			MOV	BEGSEG,DS		; save beginning DS
 0140  0E				PUSH	CS			; repair damaged ES to be
 0141  07				POP	ES			;  back to just like CS
 0142  33 F6				XOR	SI,SI			; set source and destination
 0144  33 FF				XOR	DI,DI			;  indices both to zero
 0146  B9 0100				MOV	CX,256			; set count to size of PSP
 0149  F3/ A4				REP	MOVSB			; move to es:[di] from ds:[si]
 014B  0E				PUSH	CS			; set up DS to be just like CS
 014C  1F				POP	DS			;  to match .COM rules of addressability
					ASSUME	DS:DG,ES:DG		; like CS, also have DS and DS as bases
				
 014D  E8 0000 E			CALL	TRAPPARITY		; scarf up those parity guys
 0150  B4 51				MOV	AH,GET_CURRENT_PDB	;(undocumented function call - 51h)
 0152  CD 21				INT	21H
				
 0154  89 1E 0000 E			MOV	[USER_PROC_PDB],BX	; Initially set to DEBUG
				
				
 0158  A2 0000 E			MOV	[PARSERR],AL
				
				
				
 015B				GOTLIST:
				;DX = OFFSET OF 'CONFCB', WHICH HAS JUST BEEN OPENED OK
 015B				NOLIST:
 015B  8C C8				MOV	AX,CS			;restore the DS and ES segregs
 015D  8E D8				MOV	DS,AX			; to become once again just like CS
 015F  8E C0				MOV	ES,AX
					ASSUME	DS:DG,ES:DG
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-7
                                                            

				
				; Code to print header
				;	MOV	DX,OFFSET DG:HEADER_PTR
				;	CALL	STD_PRINTF
				
 0161  E8 029A R			CALL	SET_TERMINATE_VECTOR
				
				; Save the current INT 24 vector.  We will need this to link to the previous
				; handler for handling of int 24 output.
 0164  06				PUSH	ES			; save it, about to clobber it...
 0165  B8 3524				MOV	AX,(GET_INTERRUPT_VECTOR SHL 8) + VEC_CRIT_ERR ; get original contents
 0168  CD 21				INT	21H			; of the int 24h vector
				
 016A  89 1E 0000 E			MOV	WORD PTR PREV24,BX	; remember what int 24h used to
 016E  8C 06 0002 E			MOV	WORD PTR PREV24+WORD,ES ;  point to
 0172  07				POP	ES			; restore ES to be like CS and DS
				
 0173  B8 2524				MOV	AX,(SET_INTERRUPT_VECTOR SHL 8) + VEC_CRIT_ERR ; change int 24h to
 0176  BA 02C2 R			MOV	DX,OFFSET DG:MY24	; point to my own int 24h handler
 0179  CD 21				INT	21H
				
					IF	SETCNTC
 017B  B0 23				    MOV     AL,VEC_CTRL_BREAK	; Set vector 23H
 017D  BA 0335 R			    MOV     DX,OFFSET DG:DABORT
 0180  CD 21				    INT     21H
					ENDIF
				
 0182  8C CA				MOV	DX,CS			;get para of where this pgm starts
 0184  B8 000F E			MOV	AX,OFFSET DG:DATAEND+15 ;get offset of end of this program
 0187  B1 04				MOV	CL,4			; (plus 15 padding for rounding)
 0189  D3 E8				SHR	AX,CL			; adjusted to number of paragraphs
 018B  03 D0				ADD	DX,AX			;get para of where this pgm ends
 018D  8C C8				MOV	AX,CS
 018F  2B 06 0000 E			SUB	AX,BEGSEG		; add in size of printf
 0193  03 D0				ADD	DX,AX			; create program segment here
 0195  FF 1E 0000 E			CALL	[CREATE_LONG]		; and call special routine
				
 0199  8B C2				MOV	AX,DX
				; Initialize the segments
 019B  BF 0000 E			MOV	DI,OFFSET DG:DSSAVE
 019E  FC				CLD
 019F  AB				STOSW
 01A0  AB				STOSW
 01A1  AB				STOSW
 01A2  AB				STOSW
 01A3  A3 0002 E			MOV	WORD PTR [DISADD+WORD],AX
 01A6  A3 0002 E			MOV	WORD PTR [ASMADD+WORD],AX
 01A9  A3 0002 E			MOV	WORD PTR [DEFDUMP+WORD],AX
				
 01AC  B8 0100				MOV	AX,100H
 01AF  A3 0000 E			MOV	WORD PTR[DISADD],AX
 01B2  A3 0000 E			MOV	WORD PTR[ASMADD],AX
 01B5  A3 0000 E			MOV	WORD PTR [DEFDUMP],AX
				
 01B8  8E DA				MOV	DS,DX
 01BA  8E C2				MOV	ES,DX
					ASSUME	DS:NOTHING,ES:NOTHING
				
 01BC  BA 0080				MOV	DX,80H
 01BF  B4 1A				MOV	AH,SET_DMA
 01C1  CD 21				INT	21H			; Set default DMA address to 80H
				; Set up initial stack.  We already have a 'good' stack set up already.  DS:6
				; has the number of bytes remaining in the segment.  We should take this
				; value, add 100h and use it as the Stack pointer.
 01C3  A1 0006				MOV	AX,WORD PTR DS:[6]	; get bytes remaining
 01C6  8B D8				MOV	BX,AX
 01C8  05 0100				ADD	AX,100h
				
				;	MOV	BX,AX
				;	CMP	AX,0FFF0H
				;	PUSH	CS
				;	POP	DS
				;	JAE	SAVSTK
				;	MOV	AX,WORD PTR DS:[6]
				;	PUSH	BX
				;	MOV	BX,OFFSET DG:DATAEND + 15
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-8
                                                            

				;	AND	BX,0FFF0H		; Size of DEBUG in bytes (rounded up to PARA)
				;	SUB	AX,BX
				;	POP	BX
				;SAVSTK:
 01CB  0E				PUSH	CS
 01CC  1F				POP	DS
					ASSUME	DS:DG
 01CD  53				PUSH	BX			; bx is no. bytes remaining from PSP+6
 01CE  48				DEC	AX			; ax was no. bytes remaining +100h
 01CF  48				DEC	AX			; back up one word from end of new stack
 01D0  8B D8				MOV	BX,AX			; set base to point to last word in new stack
 01D2  26: C7 07 0000			MOV	WORD PTR ES:[BX],0	; set final word in new stack to zero
 01D7  5B				POP	BX			; back to beginning of new stack area
 01D8  A3 0000 E			MOV	SPSAVE,AX		; remember where new stack is
 01DB  FE CC				DEC	AH
 01DD  26: A3 0006			MOV	ES:WORD PTR [6],AX	; change PSP to show usage of
 01E1  2B D8				SUB	BX,AX			; new stack area
 01E3  B1 04				MOV	CL,4
 01E5  D3 EB				SHR	BX,CL
 01E7  26: 01 1E 0008			ADD	ES:WORD PTR [8],BX
				
					IF	IBMVER
				; Get screen size and initialize display related variables
 01EC  B4 0F				    MOV     AH,15		;function = "request current video state"
 01EE  CD 10				    INT     10H 		;set al=screen mode
									;    ah=no. char cols on screen
									;    bh=current active display page
 01F0  80 FC 28				    CMP     AH,40		;is screen in 40 col mode?
 01F3  75 10				    JNZ     PARSCHK		; no, skip
									; yes, 40 col, continue
									;next fields defined in 'debconst.asm'
 01F5  C6 06 0000 E 07			    MOV     BYTE PTR DSIZ,7	; originally assembled as 0fh
 01FA  C6 06 0000 E 04			    MOV     BYTE PTR NOREGL,4	; originally assembled as 8
 01FF  C7 06 0000 E 0040		    MOV     DISPB,64		; originally assembled as 128
					ENDIF
				
 0205				PARSCHK:
				
				
 0205  E8 04B8 R			call	DEBUG_LEAD_BYTE 	;an000;build the dbcs env. table
									;      of valid dbcs lead bytes
				
				;=========================================================================
				; prep_command_line requires the use of ds:si.	ds is left intact for
				; the call.  si is initialized to point to the command line input buffer.
				; ds and si are saved since we stomp all over them in prep_command_line.
				;=========================================================================
				
 0208  56				push	si			;an000;save si
				
 0209  BE 0081				mov	si,81h			;an000;point to command line
 020C  E8 047F R			call	prep_command_line	;an000;invoke command line conversion
				
 020F  5E				pop	si			;an000;restore si
				
				;=========================================================================
				; we have prepped the command line for dbcs.  we can now enter the old
				; routines.
				;=========================================================================
				
				; Copy rest of command line to test program's parameter area
 0210  BF 005C				MOV	DI,FCB			;es[di]=to be filled with unopened FCB
 0213  BE 0081				MOV	SI,81H			;ds[si]=command line to parse
 0216  B8 2901				MOV	AX,(PARSE_FILE_DESCRIPTOR SHL 8) OR SET_DRIVEID_OPTION
									;func=29H, option al=1, which
									; says, drive id byte in fcb is set
									; only if drive specified in command
									; line being parsed.
 0219  CD 21				INT	21H			;parse filename from command to fcb
									; ds:si=points to first char AFTER parsed filename
									; es:di=points to first byte of formatted FCB
				
 021B  E8 0000 E			CALL	SKIP_FILE		; Make sure si points to delimiter
 021E				test1:					;for testing only - u can remove this
 021E  E8 0000 E			CALL	PREPNAME
				
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-9
                                                            

 0221  0E				PUSH	CS			;restore ES to point to the
 0222  07				POP	ES			;  common group
 0223				FILECHK:
 0223  BF 0080				MOV	DI,80H			;point to byte in PSP defining parm length
 0226  26: 80 3D 00			CMP	BYTE PTR ES:[DI],0	; ANY STUFF FOUND?
 022A  74 2F				JZ	COMMAND 		; no parms, skip
									; yes parms, continue
 022C				FILOOP:
 022C  47				INC	DI			;set index to first/next char in parm text
 022D  26: 80 3D 0D			CMP	BYTE PTR ES:[DI],CR	; carriage return? (at end of parms)
 0231  74 28				JZ	COMMAND 		; yes, at end of parms
									; no, not at end of parms yet, continue
 0233  26: 80 3D 20			CMP	BYTE PTR ES:[DI],CHAR_BLANK ; is this parm text char a blank?
 0237  74 F3				JZ	FILOOP			; yes, a blank, skip
									; no, not a blank, continue
 0239  26: 80 3D 09			CMP	BYTE PTR ES:[DI],CHAR_TAB ; is this parm text char a tab?
 023D  74 ED				JZ	FILOOP			; yes, a tab, skip
									; no, not a tab, continue
 023F  80 0E 0000 E 01			OR	[NAMESPEC],1		; set flag to indicate
									;  we have a specified file
									; (this could be set by "N" command also)
 0244  E8 0000 E			CALL	DEFIO			; READ in the specified file
				
 0247  0E				PUSH	CS			;restore DS to point to the
 0248  1F				POP	DS			; common group
				
									;perform self-relocation on some internal vectors:
 0249  A1 0000 E			MOV	AX,CSSAVE		; pick up the seg id to go to vectors
 024C  A3 0002 E			MOV	WORD PTR DISADD+WORD,AX ;  shove it into the segid portion
 024F  A3 0002 E			MOV	WORD PTR ASMADD+WORD,AX ;  of these two vectors
 0252  A1 0000 E			MOV	AX,IPSAVE		; pick up the offset to go to vectors
 0255  A3 0000 E			MOV	WORD PTR DISADD,AX	;  shove it into the offset portion
 0258  A3 0000 E			MOV	WORD PTR ASMADD,AX	;  of these two vectors
 025B				COMMAND:
 025B  FC				CLD
 025C  8C C8				MOV	AX,CS
 025E  8E D8				MOV	DS,AX
 0260  8E C0				MOV	ES,AX
 0262  FA				cli				;disable before setting up the stack - EMK
 0263  8E D0				MOV	SS,AX			;now everything points to the same group
					ASSUME	SS:DG
				
 0265  BC 0000 E			MOV	SP,OFFSET DG:STACK
 0268  FB				STI				;re-enable
 0269  80 3E 0000 E 00			CMP	[PARITYFLAG],0		; did we detect a parity error?
 026E  74 05				JZ	GOPROMPT		; no, go prompt
									; yes, parity error, continue
 0270  C6 06 0000 E 00			MOV	[PARITYFLAG],0		; reset flag
 0275				GOPROMPT:
 0275  BA 0000 E			MOV	DX,OFFSET DG:PROMPT_PTR ;display the user prompt request
 0278  E8 03EF R			CALL	STD_PRINTF
				
 027B  E8 0343 R			CALL	INBUF			; Get command line
				; From now and throughout command line processing, DI points
				; to next character in command line to be processed.
 027E  E8 039D R			CALL	SCANB			; Scan off leading blanks
				
 0281  74 D8				JZ	COMMAND 		; if zero, Null command, go get another
									; nonzero, got something in response
 0283  AC				LODSB				; AL=first non-blank character
				; Prepare command letter for table lookup
				; converts the first non-blank (assumed to be the command letter)
				; to in index in the "comtab" array.
 0284  2C 41				SUB	AL,UPPER_A		; Low end range check
 0286  72 0F				JB	ERR1
				
 0288  3C 19				CMP	AL,UPPER_Z - UPPER_A	; Upper end range check
 028A  77 0B				JA	ERR1
				
 028C  D0 E0				SHL	AL,1			; Times two
 028E  98				CBW				; Now a 16-bit quantity
 028F  93				XCHG	BX,AX			; In BX we can address with it
 0290  2E: FF 97 0434 R			CALL	CS:[BX+COMTAB]		; Execute command
				
 0295  EB C4				JMP	SHORT COMMAND		; Get next command
 0297				ERR1:
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-10
                                                            

 0297  E9 0000 E			JMP	PERR
				
 029A				SET_TERMINATE_VECTOR:
 029A  1E				PUSH	DS
 029B  0E				PUSH	CS
 029C  1F				POP	DS
 029D  B8 2522				MOV	AX,(SET_INTERRUPT_VECTOR SHL 8) OR VEC_TERM_ADDR ; Set vector 22H
 02A0  BA 02FA R			MOV	DX,OFFSET DG:TERMINATE
 02A3  CD 21				INT	21H
				
 02A5  1F				POP	DS
 02A6  C3				RET
				
 02A7				RESTORE_DEB_VECT:
 02A7  1E				PUSH	DS
 02A8  52				PUSH	DX
 02A9  50				PUSH	AX
 02AA  2E: C5 16 0000 E			LDS	DX,CS:[BPINTSAV]
 02AF  B8 2503				MOV	AX,(SET_INTERRUPT_VECTOR SHL 8) OR VEC_BREAKPOINT ;Vector 3
 02B2  CD 21				INT	21H
				
 02B4  2E: C5 16 0000 E			LDS	DX,CS:[SSINTSAV]
 02B9  B8 2501				MOV	AX,(SET_INTERRUPT_VECTOR SHL 8) OR VEC_SING_STEP ;Vector 1
 02BC  CD 21				INT	21H
				
 02BE  58				POP	AX
 02BF  5A				POP	DX
 02C0  1F				POP	DS
 02C1  C3				RET
				
				; Internal INT 24 handler.  We allow our parent's handler to decide what to do
				; and how to prompt.  When our parent returns, we note the return in AL.  If
				; he said ABORT, we need to see if we are aborting ourselves.  If so, we
				; cannot turn it into fail; we may get a cascade of errors due to the original
				; cause.  Instead, we do the ol' disk-reset hack to clean up.  This involves
				; issuing a disk-reset, ignoring all errors, and then returning to the caller.
 02C2				MY24:
					ASSUME	DS:NOTHING,ES:NOTHING,SS:NOTHING
				
				; If we are already inside an INT 24, just ignore this error
 02C2  2E: F6 06 0000 E FF		TEST	FIN24,-1
 02C8  74 03				JZ	DO24
				
 02CA  B0 00				MOV	AL,0			; signal ignore
 02CC  CF				IRET
				
				; Let the user decide what to do
 02CD				DO24:
 02CD  9C				PUSHF
 02CE  2E: FF 1E 0000 E			CALL	PREV24			; simulate INT 24 to him
				
 02D3  3C 02				CMP	AL,2			; was it ABORT?
 02D5  75 0F				JNZ	DOIRET			; no, let it happen
				
 02D7  50				PUSH	AX
 02D8  53				PUSH	BX
 02D9  B4 51				MOV	AH,GET_CURRENT_PDB	; find out who's terminating
 02DB  CD 21				INT	21H
				
 02DD  2E: 3B 1E 0000 E			CMP	BX,BEGSEG		; is it us?
 02E2  5B				POP	BX
 02E3  58				POP	AX
 02E4  74 01				JZ	DORESET 		; no, let it happen
				
 02E6				DOIRET:
 02E6  CF				IRET
				
				; We have been instructed to abort ourselves.  Since we can't do this, we will
				; perform a disk reset to flush out all buffers and then ignore the errors we
				; get.
 02E7				DORESET:
 02E7  2E: C6 06 0000 E FF		MOV	FIN24,-1		; signal that we ignore errors
 02ED  B4 0D				MOV	AH,DISK_RESET
 02EF  CD 21				INT	21H			; clean out cache
				
 02F1  2E: C6 06 0000 E 00		MOV	FIN24,0 		; reset flag
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-11
                                                            

 02F7  E9 025B R			JMP	COMMAND
				
 02FA				TERMINATE:
					ASSUME	DS:NOTHING,ES:NOTHING,SS:NOTHING
				
 02FA  2E: 80 3E 0000 E 00		CMP	QFLAG,0
 0300  75 28				JNZ	QUITING
				
 0302  2E: A1 0000 E			MOV	AX,BEGSEG
 0306  2E: A3 0000 E			MOV	USER_PROC_PDB,AX
 030A  2E: 80 3E 0000 E 00		CMP	NEWEXEC,0
 0310  74 11				JZ	NORMTERM
				
 0312  8C C8				MOV	AX,CS
 0314  8E D8				MOV	DS,AX
					ASSUME	DS:DG
									;is CLI/STI needed here ? - emk
 0316  FA				CLI
 0317  8E D0				MOV	SS,AX
					ASSUME	SS:DG
				
 0319  BC 0000 E			MOV	SP,OFFSET DG:STACK
 031C  FB				STI
 031D  A1 0000 E			MOV	AX,HEADSAVE
 0320  E9 0000 E			JMP	DEBUG_FOUND
				
 0323				NORMTERM:
					ASSUME	DS:NOTHING,ES:NOTHING,SS:NOTHING
				
 0323  0E				PUSH	CS
 0324  1F				POP	DS
					ASSUME	DS:DG
				
 0325  BA 0000 E			MOV	DX,OFFSET DG:ENDMES_PTR
 0328  EB 08				JMP	SHORT RESTART
				
 032A				QUITING:
					ASSUME	DS:NOTHING,ES:NOTHING,SS:NOTHING
				
 032A  E8 02A7 R			CALL	RESTORE_DEB_VECT
				
 032D  B8 4C00				MOV	AX,(EXIT SHL 8)
 0330  CD 21				INT	21H
				
 0332				RESTART:
 0332  E8 03EF R			CALL	STD_PRINTF
 0335				DABORT:
 0335  8C C8				MOV	AX,CS
 0337  8E D8				MOV	DS,AX
					ASSUME	DS:DG
				
									;is CLI\STI needed here? - emk
 0339  FA				CLI
 033A  8E D0				MOV	SS,AX
					ASSUME	SS:DG
				
 033C  BC 0000 E			MOV	SP,OFFSET DG:STACK
 033F  FB				STI
				;;;;;;	CALL	CRLF
				
 0340  E9 025B R			JMP	COMMAND
				
				; Get input line. Convert all characters NOT in quotes to upper case.
 0343				INBUF:
 0343  E8 041C R			CALL	RBUFIN
				
				;=========================================================================
				; prep_command_line requires the use of ds:si.	ds is left intact for
				; the call.  si is initialized to point to the command line input buffer.
				; ds and si are saved since we stomp all over them in prep_command_line.
				;=========================================================================
				
 0346  56				push	si			;an000;save si
				
 0347  BE 0000 E			mov	si,offset dg:linebuf	;an000;point to command line
 034A  E8 047F R			call	prep_command_line	;an000;invoke command line conversion
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-12
                                                            

				
 034D  5E				pop	si			;an000;restore si
				
				;=========================================================================
				; we have prepped the command line for dbcs.  we can now enter the old
				; routines.
				;=========================================================================
				
 034E  BE 0000 E			MOV	SI,OFFSET DG:LINEBUF
 0351  BF 0000 E			MOV	DI,OFFSET DG:BYTEBUF
				
 0354				CASECHK:
				
 0354  AC				LODSB
				
 0355  E8 04CE R			call	Test_Lead			;DBCS lead byte 		;an000; dms;
				;	$if	c				;yes - ignore 2nd. byte 	;an000; dms;
 0358  73 05				JNC $$IF3
 035A  AA					stosb				;save the byte			;an000; dms;
 035B  AC					lodsb				;pick up the 2nd. character	;an000; dms;
 035C  AA					stosb				;save it also			;an000; dms;
 035D  EB F5					jmp	CaseChk 		;read next character		;an000; dms;
				;	$endif					;				;an000; dms;
 035F				$$IF3:
				
 035F  3C 61				CMP	AL,LOWER_A
 0361  72 06				JB	NOCONV
				
 0363  3C 7A				CMP	AL,LOWER_Z
 0365  77 02				JA	NOCONV
				
 0367  04 E0				ADD	AL,UPPER_A - LOWER_A	; Convert to upper case
 0369				NOCONV:
 0369  AA				STOSB
 036A  3C 0D				CMP	AL,CR
 036C  74 16				JZ	INDONE
				
 036E  3C 22				CMP	AL,DOUBLE_QUOTE
 0370  74 04				JZ	QUOTSCAN
				
 0372  3C 27				CMP	AL,SINGLE_QUOTE
 0374  75 DE				JNZ	CASECHK
				
 0376				QUOTSCAN:
 0376  8A E0				MOV	AH,AL
 0378				KILLSTR:
 0378  AC				LODSB
 0379  AA				STOSB
 037A  3C 0D				CMP	AL,CR			;CARRIAGE RETURN?
 037C  74 06				JZ	INDONE
				
 037E  3A C4				CMP	AL,AH
 0380  75 F6				JNZ	KILLSTR
				
 0382  EB D0				JMP	SHORT CASECHK
				
 0384				INDONE:
 0384  BE 0000 E			MOV	SI,OFFSET DG:BYTEBUF
 0387  E8 03FA R			CALL	CRLF
				
 038A  C3				RET
				
				; Physical backspace - blank, backspace, blank
 038B				BACKUP:
 038B  52				PUSH	DX
 038C  BA 0000 E			MOV	DX,OFFSET DG:BACMES_PTR
 038F  E8 03EF R			CALL	STD_PRINTF
				
 0392  5A				POP	DX
 0393  C3				RET
				
				; Scan for parameters of a command
 0394				SCANP:
 0394  E8 039D R			CALL	SCANB			; Get first non-blank
				
 0397  80 3C 2C				CMP	BYTE PTR [SI],CHAR_COMMA ; One comma between params OK
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-13
                                                            

 039A  75 0D				JNE	EOLCHK			; If not comma, we found param
				
 039C  46				INC	SI			; Skip over comma
				; Scan command line for next non-blank character
 039D				SCANB:
 039D  50				PUSH	AX
 039E				SCANNEXT:
 039E  AC				LODSB
 039F  3C 20				CMP	AL,CHAR_BLANK		;is this char a "blank"?
 03A1  74 FB				JZ	SCANNEXT
				
 03A3  3C 09				CMP	AL,CHAR_TAB		;is this char a "tab"?
 03A5  74 F7				JZ	SCANNEXT
				
 03A7  4E				DEC	SI			; Back to first non-blank
 03A8  58				POP	AX
 03A9				EOLCHK:
 03A9  80 3C 0D				CMP	BYTE PTR [SI],CR	;CARRIAGE RETURN
 03AC  C3				RET
				
				; Hex addition and subtraction
 03AD				HEXADD:
 03AD  B9 0004				MOV	CX,4
 03B0  E8 0000 E			CALL	GETHEX
				
 03B3  8B FA				MOV	DI,DX
 03B5  B9 0004				MOV	CX,4
 03B8  E8 0000 E			CALL	GETHEX
				
 03BB  E8 0000 E			CALL	GETEOL
				
 03BE  52				PUSH	DX
 03BF  03 D7				ADD	DX,DI
 03C1  89 16 0000 E			MOV	[ADD_ARG],DX
 03C5  5A				POP	DX
 03C6  2B FA				SUB	DI,DX
 03C8  89 3E 0000 E			MOV	[SUB_ARG],DI
 03CC  BA 0000 E			MOV	DX,OFFSET DG:ADD_PTR
 03CF  E8 03F5 R			CALL	PRINTF_CRLF
				
 03D2  C3				RET
				
				; Put the hex address in DS:SI in the argument list for a call to printf
 03D3				OUTSI:
 03D3  2E: 8C 1E 0000 E			MOV	CS:[HEX_ARG1],DS
 03D8  2E: 89 36 0000 E			MOV	CS:[HEX_ARG2],SI
 03DD  C3				RET
				
				;Put the hex address in ES:DI in the argument list for a call to printf
 03DE				OUTDI:
 03DE  8C 06 0000 E			MOV	[HEX_ARG1],ES
 03E2  89 3E 0000 E			MOV	[HEX_ARG2],DI
 03E6  C3				RET
				
 03E7				HEX_ADDRESS_ONLY:
 03E7  C6 06 0000 E 00			MOV	BYTE PTR [ARG_BUF],0
 03EC				HEX_ADDRESS_STR:
 03EC  BA 0000 E			MOV	DX,OFFSET DG:HEX_PTR
 03EF				STD_PRINTF:
 03EF  52				PUSH	DX
 03F0  E8 0000 E			CALL	PRINTF
 03F3  5A				POP	DX			;ac000;restore dx
				
 03F4  C3				RET
				
 03F5				PRINTF_CRLF:
 03F5  52				PUSH	DX
 03F6  E8 0000 E			CALL	PRINTF
 03F9  5A				POP	DX			;ac000;restore dx
 03FA				CRLF:
 03FA  BA 0000 E			MOV	DX,OFFSET DG:CRLF_PTR
 03FD  52				PUSH	DX
 03FE  E8 0000 E			CALL	PRINTF
 0401  5A				POP	DX			;ac000;restore dx
				
 0402  C3				RET
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-14
                                                            

				
 0403				HEX:
 0403  8A E0				MOV	AH,AL			; Save for second digit
 0405  51				PUSH	CX
 0406  B1 04				MOV	CL,4
 0408  D2 E8				SHR	AL,CL
 040A  59				POP	CX
				
 040B  E8 0410 R			CALL	DIGIT			; First digit
				
 040E  8A C4				MOV	AL,AH			; Now do digit saved in AH
 0410				DIGIT:
 0410  24 0F				AND	AL,0FH			; Mask to 4 bits
 0412  04 90				ADD	AL,90H
 0414  27				DAA
 0415  14 40				ADC	AL,40H
 0417  27				DAA
 0418  24 7F				AND	AL,7FH
 041A  AA				STOSB
 041B  C3				RET
				
 041C				RBUFIN:
 041C  50				PUSH	AX
 041D  52				PUSH	DX
 041E  B4 0A				MOV	AH,STD_CON_STRING_INPUT
 0420  BA 0000 E			MOV	DX,OFFSET DG:LBUFSIZ
 0423  CD 21				INT	21H
				
 0425  5A				POP	DX
 0426  58				POP	AX
 0427  C3				RET
				
				; Put one space in the printf output uffer
 0428				BLANK:
 0428  B0 20				MOV	AL,CHAR_BLANK
 042A  AA				STOSB
 042B  C3				RET
				
				; Put CX spaces in the printf output buffer
 042C				TAB:
 042C  E3 05				JCXZ	TAB_RET
				
 042E  E8 0428 R			CALL	BLANK
				
 0431  E2 F9				LOOP	TAB
 0433				TAB_RET:
 0433  C3				RET
				
				; Command Table. Command letter indexes into table to get
				; address of command. PERR prints error for no such command.
				
 0434  0000 E			COMTAB	DW	ASSEM			; A
 0436  0000 E				DW	PERR			; B
 0438  0000 E				DW	COMPARE 		; C
 043A  0000 E				DW	DUMP			; D
 043C  0000 E				DW	ENTERDATA		; E
 043E  0000 E				DW	FILL			; F
 0440  0000 E				DW	GO			; G
 0442  03AD R				DW	HEXADD			; H
 0444  0000 E				DW	INPUT			; I
 0446  0000 E				DW	PERR			; J
 0448  0000 E				DW	PERR			; K
 044A  0000 E				DW	LOAD			; L
 044C  0000 E				DW	MOVE			; M
 044E  0000 E				DW	NAMED			; N
 0450  0000 E				DW	OUTPUT			; O
 0452  0000 E				DW	ZTRACE			; P
 0454  0468 R				DW	QUIT			; Q (QUIT)
 0456  0000 E				DW	REG			; R
 0458  0000 E				DW	SEARCH			; S
 045A  0000 E				DW	TRACE			; T
 045C  0000 E				DW	UNASSEM 		; U
 045E  0000 E				DW	PERR			; V
 0460  0000 E				DW	DWRITE			; W
					ELSE
 0462  0000 E				    DW	    DEBEMS
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-15
                                                            

					ENDIF
 0464  0000 E				DW	PERR			; Y
 0466  0000 E				DW	PERR			; Z
				
 0468				QUIT:
 0468  FE 06 0000 E			INC	BYTE PTR [QFLAG]
 046C  8B 1E 0000 E			MOV	BX,[USER_PROC_PDB]
 0470				FIND_DEBUG:
					IF	NOT SYSVER
 0470  B4 50				    MOV     AH,SET_CURRENT_PDB
 0472  CD 21				    INT     21H
					ENDIF
 0474  E8 0000 E			CALL	RELEASEPARITY		; let system do normal parity stuff
				
 0477  E8 02A7 R			CALL	RESTORE_DEB_VECT
				
 047A  B8 4C00				MOV	AX,(EXIT SHL 8)
 047D  CD 21				INT	21H
				
				;======================= proc  prep_command_line =========================
				; prep_command_line: This proc converts a Asian DBCS space delimiter (8140h)
				;		     into 2 20h values.  In this way we can pass command
				;		     lines throughout DEBUG without major modification
				;		     to the source code.  This proc is invoked anywhere
				;		     a command line is initially accessed.  In the case
				;		     of DEBUG it is used in PARSCHK and INBUF.
				;		     Any quoted string, a string delimited by ("), will
				;		     be ignored.
				;
				;	input: ds - segment of command line
				;	       si - offset of command line
				;
				;	output: command line with Asian blanks (8140h) converted to
				;		2020h.
				;
				;=========================================================================
				
 047F				prep_command_line proc near		;command line conversion
 047F  50			    push    ax				;save affected regs.
 0480  53			    push    bx				;
 0481  56			    push    si				;
				
 0482  B3 00			    mov     bl,00h			;initialize flag
									;bl is used to signal
									;  a quote delimiter
				;   $DO 				;do while not CR
 0484				$$DO5:
 0484  8A 04				mov	al,[si] 		;move char from cmd line for compare
 0486  3C 0D				cmp	al,CR			;is it a CR ?
				;   $LEAVE  E				;if CR exit
 0488  74 2A			    JE $$EN5
				
 048A  3C 22				cmp	al,quote_char		;is it a quote ?
				;	$IF	Z			;if it is a quote
 048C  75 03				JNZ $$IF7
 048E  80 F3 01				    xor     bl,01h		;set or reset the flag
				;	$ENDIF
 0491				$$IF7:
				
 0491  80 FB 01				cmp	bl,01h			;is 1st quote set ?
				;	$IF	NZ			;if not continue
 0494  74 1B				JZ $$IF9
 0496  E8 04CE R			    call    TEST_LEAD		;test for dbcs lead byte
				;	    $IF     C			;we have a lead byte
 0499  73 16				    JNC $$IF10
 049B  3C 81					cmp	al,dbcs_delim	;is it a dbcs char? 81h
				;		$IF	Z		;if a dbcs char
 049D  75 12					JNZ $$IF11
 049F  8A 44 01					    mov     al,[si+1]	    ;move next char al
 04A2  3C 40					    cmp     al,asian_blk    ;is it an Asian blank? 40h
				;		    $IF     Z		    ;if an Asian blank
 04A4  75 0A					    JNZ $$IF12
 04A6  B0 20						mov	al,amer_blk ;set up moves
 04A8  88 04						mov	[si],al     ;  to replace
 04AA  88 44 01						mov	[si+1],al   ;  Asian blank w/20h
 04AD  46						inc	si	    ;point to si+1
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-16
                                                            

				;		    $ELSE		;if not an asian blank
 04AE  EB 01					    JMP SHORT $$EN12
 04B0				$$IF12:
 04B0  46						inc	si	;point to dbcs char
				;		    $ENDIF		;
 04B1				$$EN12:
				;		$ENDIF			;
 04B1				$$IF11:
				;	    $ENDIF			;end lead byte test
 04B1				$$IF10:
				;	$ENDIF				;
 04B1				$$IF9:
 04B1  46				inc	si			;point to si+1
				;   $ENDDO				;end do while
 04B2  EB D0			    JMP SHORT $$DO5
 04B4				$$EN5:
 04B4  5E			    pop     si				;restore affected regs.
 04B5  5B			    pop     bx				;
 04B6  58			    pop     ax				;
 04B7  C3			    ret 				;return to caller
 04B8				prep_command_line endp			;end proc
				
				
				;=========================================================================
				; DEBUG_LEAD_BYTE - This routine sets the lead-byte-pointers to point
				;		    to the dbcs environmental vector table of lead bytes.
				;		    This table will be used to determine if we have a
				;		    dbcs lead byte.
				;
				;	Inputs - none
				;
				;	Outputs- pointer to dbcs environmental vector table of lead bytes
				;		 LBTBL DD ?
				;
				;	Date	  : 6/16/87
				;=========================================================================
				
 04B8				DEBUG_LEAD_BYTE proc near		;an000;get lead byte vector
				
 04B8  1E				push	ds			;an000;save affected regs
 04B9  06				push	es			;an000;
 04BA  56				push	si			;an000;
				
 04BB  B8 6300				mov	ax,(ECS_call shl 8) or 00h ;an000;get dbcs env. vector
 04BE  CD 21				int	21h			;an000;invoke function
				
					assume	ds:nothing
				
 04C0  2E: 89 36 0000 E			mov	word ptr cs:lbtbl[0],si ;an000;move offset of table
 04C5  2E: 8C 1E 0002 E			mov	word ptr cs:lbtbl[2],ds ;an000;move segment of table
				
 04CA  5E				pop	si			;an000;restore affected regs
 04CB  07				pop	es			;an000;
 04CC  1F				pop	ds			;an000;
				
 04CD  C3				ret				;an000;return to caller
				
 04CE				DEBUG_LEAD_BYTE endp			;an000;end proc
				
				;=========================================================================
				; TEST_LEAD - This routine will determine whether or not we have a valid
				;	      lead byte for a DBCS character.
				;
				;	Inputs : AL - Holds the byte to compare.  Passed by POP.		;an001;bgb
				;
				;	Outputs: Carry set if lead byte
				;		 No carry if not lead byte
				;
				;	Date	  : 6/16/87
				;=========================================================================
				
 04CE				TEST_LEAD proc	near			;an000;check for dbcs lead byte
				
 04CE  1E				push	ds			;an000;save affected regs
 04CF  56				push	si			;an000;
 04D0  50				push	ax			;an000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Page     1-17
                                                            

				
 04D1  86 E0				xchg	ah,al			;an000;ah used for compare
 04D3  2E: 8B 36 0002 E			mov	si,word ptr cs:lbtbl[2] ;an000;get segment of table
 04D8  8E DE				mov	ds,si			;an000;
 04DA  2E: 8B 36 0000 E			mov	si,word ptr cs:lbtbl[0] ;an000;get offset of table
				
 04DF				ck_next:
				
 04DF  AC				lodsb				;an000;load al with byte table
 04E0  0A C0				or	al,al			;an000;end of table?
				;	$IF	z			;an000;yes, end of table
 04E2  75 05				JNZ $$IF19
 04E4  EB 17 90				    jmp     lead_exit		;an000;exit with clear carry
				;	$ELSE				;an000;
 04E7  EB 14				JMP SHORT $$EN19
 04E9				$$IF19:
 04E9  3A C4				    cmp     al,ah		;an000;start > character?
				;	    $IF     a			;an000;it is above
 04EB  76 06				    JNA $$IF21
 04ED  F8					clc			;an000;clear carry flag
 04EE  EB 0D 90					jmp	lead_exit	;an000;exit with clear carry
				;	    $ELSE			;an000;
 04F1  EB 0A				    JMP SHORT $$EN21
 04F3				$$IF21:
 04F3  AC					lodsb			;an000;load al with byte table
 04F4  3A E0					cmp	ah,al		;an000;character > end range
				;		$IF	a		;an000;not a lead
 04F6  76 04					JNA $$IF23
 04F8  EB E5					    jmp     ck_next	;an000;check next range
				;		$ELSE			;an000;lead byte found
 04FA  EB 01					JMP SHORT $$EN23
 04FC				$$IF23:
 04FC  F9					    stc 		;an000;set carry flag
				;		$ENDIF			;an000;
 04FD				$$EN23:
				;	    $ENDIF			;an000;
 04FD				$$EN21:
				;	$ENDIF				;an000;
 04FD				$$EN19:
				
 04FD				lead_exit:				;an000;exit from check
				
 04FD  58				pop	ax			;an000;
 04FE  5E				pop	si			;an000;restore affected regs.
 04FF  1F				pop	ds			;an000;
				
 0500  C3				ret				;an000;return to caller
				
 0501				TEST_LEAD endp				;an000;end proc
				
				
				
 0501				CODE	ENDS
					END	START

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             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

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
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
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
  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
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-2


  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
  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
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-3


  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
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
  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
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-4


  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

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

A_CREATE_BLOCK . . . . . . . . .  	0005	PARA	NONE	
DG . . . . . . . . . . . . . . .  	GROUP
  CODE . . . . . . . . . . . . .  	0501	PARA	PUBLIC	
  CONST  . . . . . . . . . . . .  	0000	BYTE	PUBLIC	
  CSTACK . . . . . . . . . . . .  	016A	PARA	STACK	
  DATA . . . . . . . . . . . . .  	0000	BYTE	PUBLIC	

Symbols:            

                N a m e         	Type	 Value	 Attr

ABORT  . . . . . . . . . . . . .  	NUMBER	0000	
ACCESS_MASK  . . . . . . . . . .  	NUMBER	000F	
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	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-5


ADDR_INT_IBM . . . . . . . . . .  	NUMBER	00A8	
ADDR_INT_KEEP_PROCESS  . . . . .  	NUMBER	009C	
ADDR_INT_SPOOLER . . . . . . . .  	NUMBER	00A0	
ADDR_INT_TERMINATE . . . . . . .  	NUMBER	0088	
ADD_ARG  . . . . . . . . . . . .  	V WORD	0000	DATA	External
ADD_PTR  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
ALLOC  . . . . . . . . . . . . .  	NUMBER	0048	
ALLOCOPER  . . . . . . . . . . .  	NUMBER	0058	
ALLOWED_FAIL . . . . . . . . . .  	NUMBER	0008	
ALLOWED_IGNORE . . . . . . . . .  	NUMBER	0020	
ALLOWED_RETRY  . . . . . . . . .  	NUMBER	0010	
ALTVECT  . . . . . . . . . . . .  	ALIAS	 FALSE		
ALT_EXPECTED_VERSION . . . . . .  	NUMBER	1A05	
ALT_MAJOR_VERSION  . . . . . . .  	NUMBER	0005	
ALT_MINOR_VERSION  . . . . . . .  	NUMBER	001A	
AMER_BLK . . . . . . . . . . . .  	NUMBER	0020	
ARENA_OWNER_SYSTEM . . . . . . .  	NUMBER	0000	
ARENA_SIGNATURE_END  . . . . . .  	NUMBER	005A	
ARENA_SIGNATURE_NORMAL . . . . .  	NUMBER	004D	
ARG_BUF  . . . . . . . . . . . .  	V BYTE	0000	DATA	External
ASIAN_BLK  . . . . . . . . . . .  	NUMBER	0040	
ASMADD . . . . . . . . . . . . .  	V BYTE	0000	DATA	External
ASSEM  . . . . . . . . . . . . .  	L NEAR	0000	CODE	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	

BACKUP . . . . . . . . . . . . .  	L NEAR	038B	CODE	Global
BACMES_PTR . . . . . . . . . . .  	V WORD	0000	CONST	External
BADVER . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
BEGSEG . . . . . . . . . . . . .  	V WORD	0000	DATA	External
BLANK  . . . . . . . . . . . . .  	L NEAR	0428	CODE	Global
BPINTSAV . . . . . . . . . . . .  	V DWORD	0000	DATA	External
BPLEN  . . . . . . . . . . . . .  	NUMBER	0032	
BPMAX  . . . . . . . . . . . . .  	NUMBER	000A	
BPREG  . . . . . . . . . . . . .  	NUMBER	5042	
BUFFERFLAG . . . . . . . . . . .  	NUMBER	FFFF	
BUFINSIZ . . . . . . . . . . . .  	NUMBER	0014	
BUFLEN . . . . . . . . . . . . .  	NUMBER	0050	
BUFSIZ . . . . . . . . . . . . .  	NUMBER	0200	
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	
BXREG  . . . . . . . . . . . . .  	NUMBER	5842	
BYTEBUF  . . . . . . . . . . . .  	V BYTE	0000	DATA	External

CARGS  . . . . . . . . . . . . .  	NUMBER	0000	
CASECHK  . . . . . . . . . . . .  	L NEAR	0354	CODE
CHAR_AT_SIGN . . . . . . . . . .  	NUMBER	0040	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-6


CHAR_BACKSPACE . . . . . . . . .  	NUMBER	0008	
CHAR_BLANK . . . . . . . . . . .  	NUMBER	0020	
CHAR_COLON . . . . . . . . . . .  	NUMBER	003A	
CHAR_COMMA . . . . . . . . . . .  	NUMBER	002C	
CHAR_EOF . . . . . . . . . . . .  	NUMBER	001A	
CHAR_EQUAL . . . . . . . . . . .  	NUMBER	003D	
CHAR_LEFT_BRACKET  . . . . . . .  	NUMBER	005B	
CHAR_MINUS . . . . . . . . . . .  	NUMBER	002D	
CHAR_OPER  . . . . . . . . . . .  	NUMBER	0037	
CHAR_PERIOD  . . . . . . . . . .  	NUMBER	002E	
CHAR_RUBOUT  . . . . . . . . . .  	NUMBER	007F	
CHAR_SEMICOLON . . . . . . . . .  	NUMBER	003B	
CHAR_TAB . . . . . . . . . . . .  	NUMBER	0009	
CHAR_ZERO  . . . . . . . . . . .  	NUMBER	0030	
CHDIR  . . . . . . . . . . . . .  	NUMBER	003B	
CHMOD  . . . . . . . . . . . . .  	NUMBER	0043	
CK_NEXT  . . . . . . . . . . . .  	L NEAR	04DF	CODE
CLOSE  . . . . . . . . . . . . .  	NUMBER	003E	
COMMA  . . . . . . . . . . . . .  	NUMBER	2C00	
COMMAND  . . . . . . . . . . . .  	L NEAR	025B	CODE	Global
COMMIT . . . . . . . . . . . . .  	NUMBER	0068	
COMPARE  . . . . . . . . . . . .  	L NEAR	0000	CODE	External
COMTAB . . . . . . . . . . . . .  	L 0002	0434	CODE
CR . . . . . . . . . . . . . . .  	NUMBER	000D	
CREAT  . . . . . . . . . . . . .  	NUMBER	003C	
CREATENEWFILE  . . . . . . . . .  	NUMBER	005B	
CREATETEMPFILE . . . . . . . . .  	NUMBER	005A	
CREATE_CALL  . . . . . . . . . .  	F PROC	0000	A_CREATE_BLOCK	Global	Length = 0005
CREATE_LONG  . . . . . . . . . .  	V DWORD	0000	DATA	External
CREATE_PROCESS_DATA_BLOCK  . . .  	NUMBER	0026	
CRITASSIGN . . . . . . . . . . .  	NUMBER	0008	
CRITDEVICE . . . . . . . . . . .  	NUMBER	0002	
CRITDISK . . . . . . . . . . . .  	NUMBER	0001	
CRITIFS  . . . . . . . . . . . .  	NUMBER	0006	
CRITMEM  . . . . . . . . . . . .  	NUMBER	0001	
CRITNET  . . . . . . . . . . . .  	NUMBER	0005	
CRITSFT  . . . . . . . . . . . .  	NUMBER	0001	
CRITSHARE  . . . . . . . . . . .  	NUMBER	0001	
CRLF . . . . . . . . . . . . . .  	L NEAR	03FA	CODE	Global
CRLF_PTR . . . . . . . . . . . .  	V BYTE	0000	CONST	External
CSSAVE . . . . . . . . . . . . .  	V WORD	0000	CONST	External
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	
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	

DABORT . . . . . . . . . . . . .  	L NEAR	0335	CODE	Global
DATAEND  . . . . . . . . . . . .  	V WORD	0000	DATA	External
DBCS . . . . . . . . . . . . . .  	NUMBER	0000	
DBCS_DELIM . . . . . . . . . . .  	NUMBER	0081	
DEALLOC  . . . . . . . . . . . .  	NUMBER	0049	
debems . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
DEBUG  . . . . . . . . . . . . .  	NUMBER	0000	
DEBUG_FOUND  . . . . . . . . . .  	L NEAR	0000	CODE	External
DEBUG_LEAD_BYTE  . . . . . . . .  	N PROC	04B8	CODE	Length = 0016
DEFDUMP  . . . . . . . . . . . .  	V BYTE	0000	DATA	External
DEFIO  . . . . . . . . . . . . .  	L NEAR	0000	CODE	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	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-7


DEVID_DEVICE_RAW . . . . . . . .  	NUMBER	0020	
DEVID_DEVICE_SPECIAL . . . . . .  	NUMBER	0010	
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	
DIGIT  . . . . . . . . . . . . .  	L NEAR	0410	CODE	Global
DIREG  . . . . . . . . . . . . .  	NUMBER	4944	
DIRSTRLEN  . . . . . . . . . . .  	NUMBER	0043	
DIR_SEARCH_FIRST . . . . . . . .  	NUMBER	0011	
DIR_SEARCH_NEXT  . . . . . . . .  	NUMBER	0012	
DISADD . . . . . . . . . . . . .  	V BYTE	0000	DATA	External
DISK_RESET . . . . . . . . . . .  	NUMBER	000D	
DISPB  . . . . . . . . . . . . .  	V WORD	0000	CONST	External
DO24 . . . . . . . . . . . . . .  	L NEAR	02CD	CODE
DOIRET . . . . . . . . . . . . .  	L NEAR	02E6	CODE
DORESET  . . . . . . . . . . . .  	L NEAR	02E7	CODE
DOUBLE_QUOTE . . . . . . . . . .  	NUMBER	0022	
DPBSIZ . . . . . . . . . . . . .  	NUMBER	0021	
DSIZ . . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
DSKSIZ . . . . . . . . . . . . .  	NUMBER	000D	
DSSAVE . . . . . . . . . . . . .  	V WORD	0000	CONST	External
DSTRT  . . . . . . . . . . . . .  	L NEAR	010B	CODE
DUMP . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
DUP_PDB  . . . . . . . . . . . .  	NUMBER	0055	
DWRITE . . . . . . . . . . . . .  	L NEAR	0000	CODE	External

ECS_CALL . . . . . . . . . . . .  	NUMBER	0063	
EMS_GET_MAN_STAT . . . . . . . .  	NUMBER	0040	
EMS_GET_PAGE_MAP . . . . . . . .  	NUMBER	0000	
EMS_GET_SET_PG_MP  . . . . . . .  	NUMBER	004E	
EMS_HANDLE_CNT . . . . . . . . .  	NUMBER	004B	
EMS_HANDLE_PAGES . . . . . . . .  	NUMBER	004D	
EMS_HANDLE_TOTAL . . . . . . . .  	NUMBER	00FF	
EMS_HAN_ALLOC  . . . . . . . . .  	NUMBER	0043	
EMS_LIM_40 . . . . . . . . . . .  	NUMBER	0040	
EMS_MAP_BUFF_SIZE  . . . . . . .  	NUMBER	000C	
EMS_MAP_MEMORY . . . . . . . . .  	NUMBER	0044	
EMS_PAGE_DEALL . . . . . . . . .  	NUMBER	0045	
EMS_PG_FRAME . . . . . . . . . .  	NUMBER	5800	
EMS_REST_PAGE_MAP  . . . . . . .  	NUMBER	0048	
EMS_SAVE_PAGE_MAP  . . . . . . .  	NUMBER	0047	
EMS_SET_PAGE_MAP . . . . . . . .  	NUMBER	0001	
EMS_UNALL_PG_CNT . . . . . . . .  	NUMBER	0042	
EMS_VERSION  . . . . . . . . . .  	NUMBER	0046	
ENDMES_PTR . . . . . . . . . . .  	V BYTE	0000	CONST	External
ENTERDATA  . . . . . . . . . . .  	L NEAR	0000	CODE	External
ENTRYPOINT . . . . . . . . . . .  	NUMBER	00C0	
EOLCHK . . . . . . . . . . . . .  	L NEAR	03A9	CODE
ERR1 . . . . . . . . . . . . . .  	L NEAR	0297	CODE
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	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-8


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	
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_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	
EXEFCB . . . . . . . . . . . . .  	ALIAS	 FCB		
EXE_VALID_OLD_SIGNATURE  . . . .  	NUMBER	4D5A	
EXE_VALID_SIGNATURE  . . . . . .  	NUMBER	5A4D	
EXISTS_MASK  . . . . . . . . . .  	NUMBER	000F	
EXIT . . . . . . . . . . . . . .  	NUMBER	004C	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-9


EXIT_ABORT . . . . . . . . . . .  	NUMBER	0000	
EXIT_CTRL_C  . . . . . . . . . .  	NUMBER	0001	
EXIT_HARD_ERROR  . . . . . . . .  	NUMBER	0002	
EXIT_KEEP_PROCESS  . . . . . . .  	NUMBER	0003	
EXIT_TERMINATE . . . . . . . . .  	NUMBER	0000	
EXPECTED_VERSION . . . . . . . .  	NUMBER	0004	
EXTHANDLE  . . . . . . . . . . .  	NUMBER	0067	
EXTOPEN  . . . . . . . . . . . .  	NUMBER	006C	
EXT_EXISTS_FAIL  . . . . . . . .  	NUMBER	0000	
EXT_EXISTS_OPEN  . . . . . . . .  	NUMBER	0001	
EXT_FILE_NOT_EXISTS  . . . . . .  	NUMBER	0004	
EXT_NEXISTS_CREATE . . . . . . .  	NUMBER	0010	
EXT_OPEN_I24_OFF . . . . . . . .  	NUMBER	0002	
EXT_OPEN_ON  . . . . . . . . . .  	NUMBER	0001	

FALSE  . . . . . . . . . . . . .  	NUMBER	0000	
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	
FCHK . . . . . . . . . . . . . .  	NUMBER	0001	
FDELIM . . . . . . . . . . . . .  	NUMBER	0002	
FFCB . . . . . . . . . . . . . .  	NUMBER	0008	
FILDIRENT  . . . . . . . . . . .  	NUMBER	0010	
FILECHK  . . . . . . . . . . . .  	L NEAR	0223	CODE
FILE_TIMES . . . . . . . . . . .  	NUMBER	0057	
FILL . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
FILOOP . . . . . . . . . . . . .  	L NEAR	022C	CODE
FILPERPROC . . . . . . . . . . .  	NUMBER	0014	
FIN24  . . . . . . . . . . . . .  	V BYTE	0000	DATA	External
FIND_DEBUG . . . . . . . . . . .  	L NEAR	0470	CODE	Global
FIND_FIRST . . . . . . . . . . .  	NUMBER	004E	
FIND_NEXT  . . . . . . . . . . .  	NUMBER	004F	
FSPCHK . . . . . . . . . . . . .  	NUMBER	0004	
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	
F_ZERO . . . . . . . . . . . . .  	NUMBER	0040	

GENERIC_IOCTL  . . . . . . . . .  	NUMBER	440D	
GETCURRENTPSP  . . . . . . . . .  	NUMBER	0062	
GETEOL . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
GETEXTCNTRY  . . . . . . . . . .  	NUMBER	0065	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-10


GETEXTENDEDERROR . . . . . . . .  	NUMBER	0059	
GETHEX . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
GETSETCDPG . . . . . . . . . . .  	NUMBER	0066	
GETSETMEDIAID  . . . . . . . . .  	NUMBER	0069	
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_FCB_FILE_LENGTH  . . . . . .  	NUMBER	0023	
GET_FCB_POSITION . . . . . . . .  	NUMBER	0024	
GET_INDOS_FLAG . . . . . . . . .  	NUMBER	0034	
GET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0035	
GET_IN_VARS  . . . . . . . . . .  	NUMBER	0052	
GET_TIME . . . . . . . . . . . .  	NUMBER	002C	
GET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	0054	
GET_VERSION  . . . . . . . . . .  	NUMBER	0030	
GO . . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
GOPROMPT . . . . . . . . . . . .  	L NEAR	0275	CODE
GOTLIST  . . . . . . . . . . . .  	L NEAR	015B	CODE

HANDLE_FAIL_I24  . . . . . . . .  	NUMBER	0100	
HEADER . . . . . . . . . . . . .  	L BYTE	0102	CODE
HEADSAVE . . . . . . . . . . . .  	V WORD	0000	CONST	External
HEX  . . . . . . . . . . . . . .  	L NEAR	0403	CODE	Global
HEXADD . . . . . . . . . . . . .  	L NEAR	03AD	CODE
HEX_ADDRESS_ONLY . . . . . . . .  	L NEAR	03E7	CODE	Global
HEX_ADDRESS_STR  . . . . . . . .  	L NEAR	03EC	CODE	Global
HEX_ARG1 . . . . . . . . . . . .  	V WORD	0000	DATA	External
HEX_ARG2 . . . . . . . . . . . .  	V WORD	0000	DATA	External
HEX_PTR  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
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	
INBUF  . . . . . . . . . . . . .  	L NEAR	0343	CODE	Global
INDONE . . . . . . . . . . . . .  	L NEAR	0384	CODE
INPUT  . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
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_MASK . . . . . . . . . . . .  	NUMBER	00FF	
INT_SPOOLER  . . . . . . . . . .  	NUMBER	0028	
INT_TERMINATE  . . . . . . . . .  	NUMBER	0022	
IOCTL  . . . . . . . . . . . . .  	NUMBER	0044	
IO_MODE_ID . . . . . . . . . . .  	NUMBER	0002	
IPSAVE . . . . . . . . . . . . .  	V WORD	0000	CONST	External

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

KANJI  . . . . . . . . . . . . .  	ALIAS	 FALSE		
KEEP_PROCESS . . . . . . . . . .  	NUMBER	0031	
KILLSTR  . . . . . . . . . . . .  	L NEAR	0378	CODE
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-11


KOREA  . . . . . . . . . . . . .  	ALIAS	 FALSE		

lbtbl  . . . . . . . . . . . . .  	V DWORD	0000	DATA	External
LBUFSIZ  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
LEAD_EXIT  . . . . . . . . . . .  	L NEAR	04FD	CODE
LF . . . . . . . . . . . . . . .  	NUMBER	000A	
LINEBUF  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
LOAD . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
LOCKOPER . . . . . . . . . . . .  	NUMBER	005C	
LOWER_A  . . . . . . . . . . . .  	NUMBER	0061	
LOWER_Z  . . . . . . . . . . . .  	NUMBER	007A	
LSEEK  . . . . . . . . . . . . .  	NUMBER	0042	
LSEEK_EOF_OPTION . . . . . . . .  	NUMBER	0002	
LSEEK_FROM_START . . . . . . . .  	NUMBER	0000	

MAJOR_VERSION  . . . . . . . . .  	NUMBER	0004	
MASK_PORT  . . . . . . . . . . .  	NUMBER	0021	
MAXBUCKETINPAGE  . . . . . . . .  	NUMBER	0002	
MAXBUFFINBUCKET  . . . . . . . .  	NUMBER	000F	
MEMS . . . . . . . . . . . . . .  	NUMBER	0001	
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	
MOVE . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
MSVER  . . . . . . . . . . . . .  	NUMBER	0000	
MULTDOS  . . . . . . . . . . . .  	NUMBER	0012	
MULTIFS  . . . . . . . . . . . .  	NUMBER	0011	
MULTNET  . . . . . . . . . . . .  	NUMBER	0011	
MULTSHARE  . . . . . . . . . . .  	NUMBER	0010	
MY24 . . . . . . . . . . . . . .  	L NEAR	02C2	CODE

NAMED  . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
NAMESPEC . . . . . . . . . . . .  	V BYTE	0000	CONST	External
NEWEXEC  . . . . . . . . . . . .  	V BYTE	0000	CONST	External
NLSFUNC  . . . . . . . . . . . .  	NUMBER	0014	
NOCONV . . . . . . . . . . . . .  	L NEAR	0369	CODE
NOLIST . . . . . . . . . . . . .  	L NEAR	015B	CODE
NOREGL . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
NORMTERM . . . . . . . . . . . .  	L NEAR	0323	CODE
NOT_EXISTS_MASK  . . . . . . . .  	NUMBER	00F0	
NO_CODE_PAGE_CHECK . . . . . . .  	NUMBER	0100	

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	
OPBUFLEN . . . . . . . . . . . .  	NUMBER	0023	
OPEN . . . . . . . . . . . . . .  	NUMBER	003D	
OPEN_FOR_BOTH  . . . . . . . . .  	NUMBER	0002	
OPEN_FOR_READ  . . . . . . . . .  	NUMBER	0000	
OPEN_FOR_WRITE . . . . . . . . .  	NUMBER	0001	
OUTDI  . . . . . . . . . . . . .  	L NEAR	03DE	CODE	Global
OUTPUT . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
OUTSI  . . . . . . . . . . . . .  	L NEAR	03D3	CODE	Global

PARITYFLAG . . . . . . . . . . .  	V BYTE	0000	DATA	External
PARSCHK  . . . . . . . . . . . .  	L NEAR	0205	CODE
PARSERR  . . . . . . . . . . . .  	V BYTE	0000	DATA	External
PARSE_FILE_DESCRIPTOR  . . . . .  	NUMBER	0029	
PATHPARSE  . . . . . . . . . . .  	NUMBER	0061	
PDB_APPEND . . . . . . . . . . .  	BYTE	003D	
PDB_INTERCON . . . . . . . . . .  	BYTE	003C	
PERR . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
PREPNAME . . . . . . . . . . . .  	L NEAR	0000	CODE	External
PREP_COMMAND_LINE  . . . . . . .  	N PROC	047F	CODE	Length = 0039
PREV24 . . . . . . . . . . . . .  	V DWORD	0000	DATA	External
pre_load_message . . . . . . . .  	L NEAR	0000	CODE	External
PRINTF . . . . . . . . . . . . .  	L NEAR	0000		External
PRINTF_CRLF  . . . . . . . . . .  	L NEAR	03F5	CODE	Global
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-12


PROMPT . . . . . . . . . . . . .  	NUMBER	002D	
PROMPT_PTR . . . . . . . . . . .  	V BYTE	0000	CONST	External

QFLAG  . . . . . . . . . . . . .  	V BYTE	0000	CONST	External
QUIT . . . . . . . . . . . . . .  	L NEAR	0468	CODE
QUITING  . . . . . . . . . . . .  	L NEAR	032A	CODE
QUOTE_CHAR . . . . . . . . . . .  	NUMBER	0022	
QUOTSCAN . . . . . . . . . . . .  	L NEAR	0376	CODE

RAW_CON_INPUT  . . . . . . . . .  	NUMBER	0007	
RAW_CON_IO . . . . . . . . . . .  	NUMBER	0006	
RBUFIN . . . . . . . . . . . . .  	L NEAR	041C	CODE	Global
READ . . . . . . . . . . . . . .  	NUMBER	003F	
READ_SECTOR  . . . . . . . . . .  	NUMBER	0000	
READ_WRITE . . . . . . . . . . .  	NUMBER	0008	
REDIRECTOR . . . . . . . . . . .  	NUMBER	0000	
REG  . . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
REGTABLEN  . . . . . . . . . . .  	NUMBER	000E	
RELEASEPARITY  . . . . . . . . .  	L NEAR	0000	CODE	External
RENAME . . . . . . . . . . . . .  	NUMBER	0056	
RESERVED_BITS_MASK . . . . . . .  	NUMBER	FE00	
RESTART  . . . . . . . . . . . .  	L NEAR	0332	CODE	Global
RESTORE_DEB_VECT . . . . . . . .  	L NEAR	02A7	CODE
RMDIR  . . . . . . . . . . . . .  	NUMBER	003A	

SCANB  . . . . . . . . . . . . .  	L NEAR	039D	CODE	Global
SCANNEXT . . . . . . . . . . . .  	L NEAR	039E	CODE
SCANP  . . . . . . . . . . . . .  	L NEAR	0394	CODE	Global
SEARCH . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
SEGDIF . . . . . . . . . . . . .  	NUMBER	0000	
SERVERCALL . . . . . . . . . . .  	NUMBER	005D	
SETBLOCK . . . . . . . . . . . .  	NUMBER	004A	
SETCNTC  . . . . . . . . . . . .  	ALIAS	 TRUE		
SETDPB . . . . . . . . . . . . .  	NUMBER	0053	
SET_CTRL_C_TRAPPING  . . . . . .  	NUMBER	0033	
SET_CURRENT_PDB  . . . . . . . .  	NUMBER	0050	
SET_DATE . . . . . . . . . . . .  	NUMBER	002B	
SET_DEFAULT_DRIVE  . . . . . . .  	NUMBER	000E	
SET_DMA  . . . . . . . . . . . .  	NUMBER	001A	
SET_DRIVEID_OPTION . . . . . . .  	NUMBER	0001	
SET_INTERRUPT_VECTOR . . . . . .  	NUMBER	0025	
SET_OEM_HANDLER  . . . . . . . .  	NUMBER	00F8	
SET_PRINTER_FLAG . . . . . . . .  	NUMBER	0064	
SET_TERMINATE_VECTOR . . . . . .  	L NEAR	029A	CODE	Global
SET_TIME . . . . . . . . . . . .  	NUMBER	002D	
SET_VERIFY_ON_WRITE  . . . . . .  	NUMBER	002E	
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	
SINGLE_QUOTE . . . . . . . . . .  	NUMBER	0027	
SIREG  . . . . . . . . . . . . .  	NUMBER	4953	
SKIP_FILE  . . . . . . . . . . .  	L NEAR	0000	CODE	External
SPSAVE . . . . . . . . . . . . .  	V WORD	0000	CONST	External
SSINTSAV . . . . . . . . . . . .  	V DWORD	0000	DATA	External
STACK  . . . . . . . . . . . . .  	V BYTE	0000	DATA	External
START  . . . . . . . . . . . . .  	L NEAR	0100	CODE
STDAUX . . . . . . . . . . . . .  	NUMBER	0003	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-13


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_PRINTER_OUTPUT . . . . . . .  	NUMBER	0005	
STD_PRINTF . . . . . . . . . . .  	L NEAR	03EF	CODE	Global
SUB_ARG  . . . . . . . . . . . .  	V WORD	0000	DATA	External
SYSVER . . . . . . . . . . . . .  	ALIAS	 FALSE		

TAB  . . . . . . . . . . . . . .  	L NEAR	042C	CODE	Global
TAB_RET  . . . . . . . . . . . .  	L NEAR	0433	CODE
TEMPLEN  . . . . . . . . . . . .  	NUMBER	0086	
TERMINATE  . . . . . . . . . . .  	L NEAR	02FA	CODE	Global
test1  . . . . . . . . . . . . .  	L NEAR	021E	CODE	Global
test_lead  . . . . . . . . . . .  	N PROC	04CE	CODE	Global	Length = 0033
TRACE  . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
TRAPPARITY . . . . . . . . . . .  	L NEAR	0000	CODE	External
TRUE . . . . . . . . . . . . . .  	NUMBER	FFFF	
TRUEBYTE . . . . . . . . . . . .  	NUMBER	00FF	

UNASSEM  . . . . . . . . . . . .  	L NEAR	0000	CODE	External
UNLINK . . . . . . . . . . . . .  	NUMBER	0041	
UPPER_A  . . . . . . . . . . . .  	NUMBER	0041	
UPPER_C  . . . . . . . . . . . .  	NUMBER	0043	
UPPER_E  . . . . . . . . . . . .  	NUMBER	0045	
UPPER_F  . . . . . . . . . . . .  	NUMBER	0046	
UPPER_L  . . . . . . . . . . . .  	NUMBER	004C	
UPPER_M  . . . . . . . . . . . .  	NUMBER	004D	
UPPER_N  . . . . . . . . . . . .  	NUMBER	004E	
UPPER_P  . . . . . . . . . . . .  	NUMBER	0050	
UPPER_S  . . . . . . . . . . . .  	NUMBER	0053	
UPPER_X  . . . . . . . . . . . .  	NUMBER	0058	
UPPER_Z  . . . . . . . . . . . .  	NUMBER	005A	
USEROPER . . . . . . . . . . . .  	NUMBER	005E	
USER_PROC_PDB  . . . . . . . . .  	V WORD	0000	CONST	External

VEC_BREAKPOINT . . . . . . . . .  	NUMBER	0003	
VEC_CRIT_ERR . . . . . . . . . .  	NUMBER	0024	
VEC_CTRL_BREAK . . . . . . . . .  	NUMBER	0023	
VEC_PRIMITIVE_DISK_READ  . . . .  	NUMBER	0025	
VEC_PRIMITIVE_DISK_WRITE . . . .  	NUMBER	0026	
VEC_SING_STEP  . . . . . . . . .  	NUMBER	0001	
VEC_TERM_ADDR  . . . . . . . . .  	NUMBER	0022	

WAITPROCESS  . . . . . . . . . .  	NUMBER	004D	
WRITE  . . . . . . . . . . . . .  	NUMBER	0040	
WRITE_SECTOR . . . . . . . . . .  	NUMBER	0000	

XDUP . . . . . . . . . . . . . .  	NUMBER	0045	
XDUP2  . . . . . . . . . . . . .  	NUMBER	0046	
XM_ERR80 . . . . . . . . . . . .  	NUMBER	0080	
XM_ERR83 . . . . . . . . . . . .  	NUMBER	0083	
XM_ERR84 . . . . . . . . . . . .  	NUMBER	0084	
XM_ERR85 . . . . . . . . . . . .  	NUMBER	0085	
XM_ERR86 . . . . . . . . . . . .  	NUMBER	0086	
XM_ERR87 . . . . . . . . . . . .  	NUMBER	0087	
XM_ERR88 . . . . . . . . . . . .  	NUMBER	0088	
XM_ERR89 . . . . . . . . . . . .  	NUMBER	0089	
XM_ERR8A . . . . . . . . . . . .  	NUMBER	008A	
XM_ERR8B . . . . . . . . . . . .  	NUMBER	008B	
XM_ERR8D . . . . . . . . . . . .  	NUMBER	008D	
XM_ERR8E . . . . . . . . . . . .  	NUMBER	008E	
XM_ERR8F . . . . . . . . . . . .  	NUMBER	008F	
XM_NOT_INST  . . . . . . . . . .  	NUMBER	00FF	
XNAMETRANS . . . . . . . . . . .  	NUMBER	0060	

ZTRACE . . . . . . . . . . . . .  	L NEAR	0000	CODE	External
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:44:17
DEBUG.SAL - DEBUGger for PC DOS                             Symbols-14



$$DO5  . . . . . . . . . . . . .  	L NEAR	0484	CODE
$$EN12 . . . . . . . . . . . . .  	L NEAR	04B1	CODE
$$EN19 . . . . . . . . . . . . .  	L NEAR	04FD	CODE
$$EN21 . . . . . . . . . . . . .  	L NEAR	04FD	CODE
$$EN23 . . . . . . . . . . . . .  	L NEAR	04FD	CODE
$$EN5  . . . . . . . . . . . . .  	L NEAR	04B4	CODE
$$IF1  . . . . . . . . . . . . .  	L NEAR	011B	CODE
$$IF10 . . . . . . . . . . . . .  	L NEAR	04B1	CODE
$$IF11 . . . . . . . . . . . . .  	L NEAR	04B1	CODE
$$IF12 . . . . . . . . . . . . .  	L NEAR	04B0	CODE
$$IF19 . . . . . . . . . . . . .  	L NEAR	04E9	CODE
$$IF21 . . . . . . . . . . . . .  	L NEAR	04F3	CODE
$$IF23 . . . . . . . . . . . . .  	L NEAR	04FC	CODE
$$IF3  . . . . . . . . . . . . .  	L NEAR	035F	CODE
$$IF7  . . . . . . . . . . . . .  	L NEAR	0491	CODE
$$IF9  . . . . . . . . . . . . .  	L NEAR	04B1	CODE
?PLM . . . . . . . . . . . . . .  	NUMBER	0000	
?WIN . . . . . . . . . . . . . .  	NUMBER	0000	
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  debug		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   3831 Source  Lines
   3943 Total   Lines
    993 Symbols

  42926 + 166931 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
