

Seattle Computer Products 8086 Assembler Version 2.30
Copyright 1979,80,81 by Seattle Computer Products, Inc.

0000                       0001 ; Seattle Computer Products 8086 Assembler  version 2.31
0000                       0002 ;   by Tim Paterson
0000                       0003 ; Runs on the 8086 under 86-DOS
0000                       0004 
0000                       0005 ;* * * * * * REVISION HISTORY * * * * * *
0000                       0006 ;
0000                       0007 ; 12/29/80  2.01  General release with 86-DOS version 0.34
0000                       0008 ; 02/22/81  2.10  Increased buffer size from 128 bytes to 1024 bytes
0000                       0009 ; 03/18/81  2.11  General cleanup and more documentation
0000                       0010 ; 03/24/81  2.20  Modify ESC handling for full 8087 operation
0000                       0011 ; 04/01/81  2.21  Fix date in HEX and PRN files; modify buffer handling
0000                       0012 ; 04/03/81  2.22  Fix 2.21 buffer handling
0000                       0013 ; 04/13/81  2.23  Re-open source file for listing to allow assembling CON:
0000                       0014 ; 04/28/81  2.24  Allow nested IFs
0000                       0015 ; 07/30/81  2.25  Add Intel string mnemonics; clean up a little
0000                       0016 ; 08/02/81  2.30  Re-write pass 2:
0000                       0017 ;			Always report errors to console
0000                       0018 ;			Exact byte lengths for HEX and PRN files
0000                       0019 ; 08/23/81  2.40  Add 8087 mnemonics
0000                       0020 ;
0000                       0021 ;* * * * * * * * * * * * * * * * * * * * *
0000                       0022 
0000                       0023 SYMWID:	EQU	10
0000                       0024 FCB:	EQU	5CH
0000                       0025 BUFSIZ:	EQU	1024	;Source code buffer
0000                       0026 LSTBUFSIZ:EQU	BUFSIZ	;List file buffer
0000                       0027 HEXBUFSIZ:EQU	70	;Hex file buffer (26*2 + 5*2 + 3 + EXTRA)
0000                       0028 EOL:	EQU	13	;ASCII carriage return
0000                       0029 OBJECT:	EQU	100H	;DEFAULT "PUT" ADDRESS
0000                       0030 
0000                       0031 ;System call function codes
0000                       0032 PRINTMES: EQU	9
0000                       0033 OPEN:	EQU	15
0000                       0034 CLOSE:	EQU	16
0000                       0035 READ:	EQU	20
0000                       0036 SETDMA:	EQU	26
0000                       0037 MAKE:	EQU	22
0000                       0038 BLKWRT:	EQU	40
0000                       0039 
0000                       0040 ;The following equates define some token values returned by GETSYM
0000                       0041 UNDEFID:EQU	0	;Undefined identifier (including no nearby RET)
0000                       0042 CONST:	EQU	1	;Constant (including $)
0000                       0043 REG:	EQU	2	;8-bit register
0000                       0044 XREG:	EQU	3	;16-bit register (except segment registers)
0000                       0045 SREG:	EQU	4	;Segment register
0000                       0046 
0000                       0047 ;Ouput file record definition
0000                       0048 	ORG	0
0000                       0049 WRTPT:	DS	2	;Pointer to next byte to be written
0002                       0050 BUFEND:	DS	2	;Pointer to end of buffer plus one
0004                       0051 BUFSTRT:DS	2	;Address of start of buffer
0006                       0052 BUFFCB:	DS	37	;FCB for the file
002B                       0053 
002B                       0054 	ORG	100H
0100                       0055 	PUT	100H
0100                       0056 
0100 EB 75                 0057 	JP	BEGIN
0102                       0058 
0102 0D 0A 53 65 61 74 74  0059 HEADER:	DB	13,10,'Seattle Computer Products 8086 Assembler Version 2.31'
     6C 65 20 43 6F 6D 70 
     75 74 65 72 20 50 72 
     6F 64 75 63 74 73 20 
     38 30 38 36 20 41 73 
     73 65 6D 62 6C 65 72 
     20 56 65 72 73 69 6F 
     6E 20 32 2E 33 31    
0139 0D 0A 43 6F 70 79 72  0060 	DB	13,10,'Copyright 1979,80,81 by Seattle Computer Products, Inc.'
     69 67 68 74 20 31 39 
     37 39 2C 38 30 2C 38 
     31 20 62 79 20 53 65 
     61 74 74 6C 65 20 43 
     6F 6D 70 75 74 65 72 
     20 50 72 6F 64 75 63 
     74 73 2C 20 49 6E 63 
     2E                   
0172 0D 0A 0D 0A 24        0061 	DB	13,10,13,10,'$'
0177                       0062 
0177                       0063 BEGIN:
0177 BC 90 24              0064 	MOV	SP,STACK
017A BA 02 01              0065 	MOV	DX,HEADER
017D B4 09                 0066 	MOV	AH,PRINTMES
017F CD 21                 0067 	INT	33
0181 A0 6D 00              0068 	MOV	AL,[FCB+17]
0184 A2 D0 1B              0069 	MOV	[SYMFLG],AL	;Save symbol table request flag
0187 BE 65 00              0070 	MOV	SI,FCB+9	;Point to file extension
018A AC                    0071 	LODB			;Get source drive letter
018B E8 10 01              0072 	CALL	CHKDSK		;Valid drive?
018E 0A C0                 0073 	OR	AL,AL
0190 74 03                 0074 	JZ	DEFAULT		;If no extension, use existing drive spec
0192 A2 5C 00              0075 	MOV	[FCB],AL
0195                       0076 DEFAULT:
0195 AC                    0077 	LODB			;Get HEX file drive letter
0196 3C 5A                 0078 	CMP	AL,'Z'		;Suppress HEX file?
0198 74 03                 0079 	JZ	L0000
019A E8 01 01              0080 	CALL	CHKDSK
019D                       0081 L0000:	
019D A2 1B 1B              0082 	MOV	[HEXFCB],AL
01A0 AC                    0083 	LODB			;Get PRN file drive letter
01A1 B4 00                 0084 	MOV	AH,0		;Signal no PRN file
01A3 3C 5A                 0085 	CMP	AL,'Z'		;Suppress PRN file?
01A5 74 15                 0086 	JZ	NOPRN
01A7 3C 59                 0087 	CMP	AL,'Y'		;Print errors only on console?
01A9 74 11                 0088 	JZ	NOPRN
01AB B4 02                 0089 	MOV	AH,2
01AD 3C 58                 0090 	CMP	AL,'X'		;PRN file to console?
01AF 74 0B                 0091 	JZ	NOPRN
01B1 B4 04                 0092 	MOV	AH,4
01B3 3C 50                 0093 	CMP	AL,'P'		;PRN file to printer?
01B5 74 05                 0094 	JZ	NOPRN
01B7 E8 E4 00              0095 	CALL	CHKDSK
01BA B4 80                 0096 	MOV	AH,80H
01BC                       0097 NOPRN:
01BC A2 40 1B              0098 	MOV	[LSTFCB],AL
01BF 88 26 EC 1B           0099 	MOV	[LSTDEV],AH	;Flag device for list ouput
01C3 BE 0A 1B              0100 	MOV	SI,EXTEND
01C6 BF 65 00              0101 	MOV	DI,FCB+9
01C9 A5                    0102 	MOVW
01CA A4                    0103 	MOVB			;Set extension to ASM
01CB A5                    0104 	MOVW			;Zero extent field
01CC BA 5C 00              0105 	MOV	DX,FCB
01CF B4 0F                 0106 	MOV	AH,OPEN
01D1 CD 21                 0107 	INT	33
01D3 BB AF 1A              0108 	MOV	BX,NOFILE
01D6 0A C0                 0109 	OR	AL,AL
01D8 74 03                 0110 	JZ	$+5
01DA E9 97 00              0111 	JMP	PRERR
01DD BA 1B 1B              0112 	MOV	DX,HEXFCB
01E0 E8 99 00              0113 	CALL	MAKFIL
01E3 BA 40 1B              0114 	MOV	DX,LSTFCB
01E6 E8 93 00              0115 	CALL	MAKFIL
01E9 C6 06 7C 00 00        0116 	MOV	B,[FCB+32],0	;Zero Next Record field
01EE C7 06 6A 00 00 04     0117 	MOV	[FCB+14],BUFSIZ	;Set record size
01F4 C7 06 3E 20 40 20     0118 	MOV	[BUFPT],SRCBUF	;Initialize buffer pointer
01FA C7 06 D1 1B 91 24     0119 	MOV	[CODE],START+1	;POINTER TO NEXT BYTE OF INTERMEDIATE CODE
0200 C7 06 F2 1B 90 24     0120 	MOV	[IY],START	;POINTER TO CURRENT RELOCATION BYTE
0206 33 C0                 0121 	XOR	AX,AX
0208 A3 65 1B              0122 	MOV	[PC],AX		;DEFAULT PROGRAM COUNTER
020B A3 CC 1B              0123 	MOV	[BASE],AX	;POINTER TO ROOT OF ID TREE=NIL
020E A3 EA 1B              0124 	MOV	[RETPT],AX	;Pointer to last RET record
0211 A2 E4 1B              0125 	MOV	[IFFLG],AL	;NOT WITHIN IF/ENDIF
0214 A2 E5 1B              0126 	MOV	[CHKLAB],AL	;LOOKUP ALL LABELS
0217 48                    0127 	DEC	AX
0218 A3 E8 1B              0128 	MOV	[LSTRET],AX	;Location of last RET
021B A1 06 00              0129 	MOV	AX,[6]		;HL=END OF MEMORY
021E A3 CE 1B              0130 	MOV	[HEAP],AX	;BACK END OF SYMBOL TABLE SPACE
0221 C7 06 D5 1B 04 00     0131 	MOV	[BCOUNT],4	;CODE BYTES PER RELOCATION BYTE
0227                       0132 
0227                       0133 ;Assemble each line of code
0227                       0134 
0227                       0135 LOOP:
0227 E8 8A 00              0136 	CALL	NEXTCHR		;Get first character on line
022A 3C 1A                 0137 	CMP	AL,1AH
022C 74 1E                 0138 	JZ	ENDJ
022E B0 FF                 0139 	MOV	AL,-1		;Flag that no tokens have been read yet
0230 A2 CB 1B              0140 	MOV	[SYM],AL
0233 E8 89 06              0141 	CALL	ASMLIN		;Assemble the line
0236 A0 CB 1B              0142 	MOV	AL,[SYM]
0239 3C FF                 0143 	CMP	AL,-1		;Any tokens found on line?
023B 75 03                 0144 	JNZ	L0002
023D E8 67 03              0145 	CALL	GETSYM		;If no tokens read yet, read first one
0240                       0146 L0002:	
0240 3C 3B                 0147 	CMP	AL,';'
0242 74 0B                 0148 	JZ	ENDLN
0244 3C 0D                 0149 	CMP	AL,EOL
0246 74 07                 0150 	JZ	ENDLN
0248 B0 14                 0151 	MOV	AL,14H		;Garbage at end of line error
024A EB 05                 0152 	JP	ENDLIN
024C E9 B9 0D              0153 ENDJ:	JMP	END
024F                       0154 
024F                       0155 ENDLN:
024F 32 C0                 0156 	XOR	AL,AL		;Flag no errors on line
0251                       0157 ENDLIN:
0251                       0158 ;AL = error code for line. Stack depth unknown
0251 BC 90 24              0159 	MOV	SP,STACK
0254 E8 02 00              0160 	CALL	NEXLIN
0257 EB CE                 0161 	JP	LOOP
0259                       0162 
0259                       0163 NEXLIN:
0259 B5 C0                 0164 	MOV	CH,0C0H		;Put end of line marker and error code (AL)
025B E8 00 08              0165 	CALL	PUTCD
025E E8 C7 07              0166 	CALL	GEN1
0261 A0 CA 1B              0167 	MOV	AL,[CHR]
0264                       0168 GETEOL:
0264 3C 0A                 0169 	CMP	AL,10
0266 74 35                 0170 	JZ	RET
0268 3C 1A                 0171 	CMP	AL,1AH
026A 74 E0                 0172 	JZ	ENDJ
026C E8 45 00              0173 	CALL	NEXTCHR		;Scan over comments for linefeed
026F EB F3                 0174 	JP	GETEOL
0271                       0175 
0271                       0176 ABORT:
0271 BB 97 1A              0177 	MOV	BX,NOMEM
0274                       0178 PRERR:
0274 8B D3                 0179 	MOV	DX,BX
0276 B4 09                 0180 	MOV	AH,PRINTMES
0278 CD 21                 0181 	INT	33
027A CD 20                 0182 	INT	32
027C                       0183 
027C                       0184 MAKFIL:
027C 8B F2                 0185 	MOV	SI,DX
027E AC                    0186 	LODB			;Get drive select byte
027F 3C 20                 0187 	CMP	AL,20H		;If not valid, don't make file
0281 73 1A                 0188 	JNC	RET
0283 B9 04 00              0189 	MOV	CX,4
0286 8B FE                 0190 	MOV	DI,SI
0288 BE 5D 00              0191 	MOV	SI,FCB+1
028B F3                    0192 	REP
028C A5                    0193 	MOVW			;Copy source file name
028D B4 16                 0194 	MOV	AH,MAKE
028F CD 21                 0195 	INT	33
0291 C7 45 05 01 00        0196 	MOV	[DI-9+14],1	;Set record length to 1 byte
0296 BB 7D 1A              0197 	MOV	BX,NOSPAC
0299 0A C0                 0198 	OR	AL,AL		;Success?
029B 75 D7                 0199 	JNZ	PRERR
029D C3                    0200 	RET
029E                       0201 
029E                       0202 CHKDSK:
029E 2C 20                 0203 	SUB	AL,' '		;If not present, set zero flag
02A0 74 FB                 0204 	JZ	RET
02A2 2C 20                 0205 	SUB	AL,20H
02A4 74 04                 0206 	JZ	DSKERR		;Must be in range A-O
02A6 3C 10                 0207 	CMP	AL,'P'-'@'
02A8 72 F3                 0208 	JC	RET
02AA                       0209 DSKERR:
02AA BB D0 1A              0210 	MOV	BX,BADDSK
02AD EB C5                 0211 	JP	PRERR
02AF                       0212 
02AF                       0213 ERROR:
02AF 8A C1                 0214 	MOV	AL,CL
02B1 E9 9D FF              0215 	JMP	ENDLIN
02B4                       0216 
02B4                       0217 NEXTCHR:
02B4 8B 36 3E 20           0218 	MOV	SI,[BUFPT]
02B8 81 FE 40 20           0219 	CMP	SI,SRCBUF
02BC 75 15                 0220 	JNZ	GETCH
02BE                       0221 ;Buffer empty so refill it
02BE 52                    0222 	PUSH	DX
02BF 8B D6                 0223 	MOV	DX,SI
02C1 B4 1A                 0224 	MOV	AH,SETDMA
02C3 CD 21                 0225 	INT	33
02C5 BA 5C 00              0226 	MOV	DX,FCB
02C8 B4 14                 0227 	MOV	AH,READ
02CA CD 21                 0228 	INT	33
02CC 5A                    0229 	POP	DX
02CD 3C 01                 0230 	CMP	AL,1
02CF B0 1A                 0231 	MOV	AL,1AH		;Possibly signal End of File
02D1 74 0A                 0232 	JZ	NOMOD		;If nothing read
02D3                       0233 GETCH:
02D3 AC                    0234 	LODB
02D4 81 FE 40 24           0235 	CMP	SI,SRCBUF+BUFSIZ
02D8 75 03                 0236 	JNZ	NOMOD
02DA BE 40 20              0237 	MOV	SI,SRCBUF
02DD                       0238 NOMOD:
02DD 89 36 3E 20           0239 	MOV	[BUFPT],SI
02E1 A2 CA 1B              0240 	MOV	[CHR],AL
02E4 C3                    0241 	RET
02E5                       0242 
02E5                       0243 
02E5                       0244 MROPS:
02E5                       0245 
02E5                       0246 ; Get two operands and check for certain types, according to flag byte
02E5                       0247 ; in CL. OP code in CH. Returns only if immediate operation.
02E5                       0248 
02E5 51                    0249 	PUSH	CX		;Save type flags
02E6 E8 D8 00              0250 	CALL	GETOP
02E9 52                    0251 	PUSH	DX		;Save first operand
02EA E8 CB 00              0252 	CALL	GETOP2
02ED 5B                    0253 	POP	BX		;First op in BX, second op in DX
02EE B0 04                 0254 	MOV	AL,SREG		;Check for a segment register
02F0 3A C7                 0255 	CMP	AL,BH
02F2 74 41                 0256 	JZ	SEGCHK
02F4 3A C6                 0257 	CMP	AL,DH
02F6 74 3D                 0258 	JZ	SEGCHK
02F8 B0 01                 0259 	MOV	AL,CONST	;Check if the first operand is immediate
02FA B1 1A                 0260 	MOV	CL,26
02FC 3A C7                 0261 	CMP	AL,BH
02FE 74 AF                 0262 	JZ	ERROR		;Error if so
0300 59                    0263 	POP	CX		;Restore type flags
0301 3A C6                 0264 	CMP	AL,DH		;If second operand is immediate, then done
0303 74 DF                 0265 	JZ	RET
0305 B0 00                 0266 	MOV	AL,UNDEFID	;Check for memory reference
0307 3A C7                 0267 	CMP	AL,BH
0309 74 4F                 0268 	JZ	STORE		;Is destination memory?
030B 3A C6                 0269 	CMP	AL,DH
030D 74 55                 0270 	JZ	LOAD		;Is source memory?
030F F6 C1 01              0271 	TEST	CL,1		;Check if register-to-register operation OK
0312 B1 1B                 0272 	MOV	CL,27
0314 74 99                 0273 	JZ	ERROR
0316 8A C6                 0274 	MOV	AL,DH
0318 3A C7                 0275 	CMP	AL,BH		;Registers must be of same length
031A                       0276 RR:
031A B1 16                 0277 	MOV	CL,22
031C 75 91                 0278 	JNZ	ERROR
031E                       0279 RR1:
031E 24 01                 0280 	AND	AL,1		;Get register length (1=16 bits)
0320 0A C5                 0281 	OR	AL,CH		;Or in to OP code
0322 E8 F6 06              0282 	CALL	PUT		;And write it
0325 59                    0283 	POP	CX		;Dump return address
0326 8A C3                 0284 	MOV	AL,BL
0328 02 C0                 0285 	ADD	AL,AL		;Rotate register number into middle position
032A 02 C0                 0286 	ADD	AL,AL
032C 02 C0                 0287 	ADD	AL,AL
032E 0C C0                 0288 	OR	AL,0C0H		;Set register-to-register mode
0330 0A C2                 0289 	OR	AL,DL		;Combine with other register number
0332 E9 E6 06              0290 	JMP	PUT
0335                       0291 
0335                       0292 SEGCHK:
0335                       0293 ;Come here if at least one operand is a segment register
0335 59                    0294 	POP	CX		;Restore flags
0336 F6 C1 08              0295 	TEST	CL,8		;Check if segment register OK
0339 B1 16                 0296 	MOV	CL,22
033B 74 78                 0297 	JZ	ERR1
033D B9 03 8E              0298 	MOV	CX,8E03H	;Segment register move OP code
0340 B0 00                 0299 	MOV	AL,UNDEFID
0342 3A C6                 0300 	CMP	AL,DH		;Check if source is memory
0344 74 1E                 0301 	JZ	LOAD
0346 3A C7                 0302 	CMP	AL,BH		;Check if destination is memory
0348 74 10                 0303 	JZ	STORE
034A B0 03                 0304 	MOV	AL,XREG
034C 2A C6                 0305 	SUB	AL,DH		;Check if source is 16-bit register
034E 74 CA                 0306 	JZ	RR		;If so, AL must be zero
0350 B5 8C                 0307 	MOV	CH,8CH		;Change direction
0352 87 DA                 0308 	XCHG	DX,BX		;Flip which operand is first and second
0354 B0 03                 0309 	MOV	AL,XREG
0356 2A C6                 0310 	SUB	AL,DH		;Let RR perform finish the test
0358 EB C0                 0311 	JP	RR
035A                       0312 
035A                       0313 STORE:
035A F6 C1 04              0314 	TEST	CL,004H		;Check if storing is OK
035D 75 52                 0315 	JNZ	STERR
035F 87 DA                 0316 	XCHG	DX,BX		;If so, flip operands
0361 80 E5 FD              0317 	AND	CH,0FDH		;   and zero direction bit
0364                       0318 LOAD:
0364 B6 19                 0319 	MOV	DH,25
0366 3A C7                 0320 	CMP	AL,BH		;Check if memory-to-memory
0368 74 49                 0321 	JZ	MRERR
036A 8A C7                 0322 	MOV	AL,BH
036C 3C 02                 0323 	CMP	AL,REG		;Check if 8-bit operation
036E 75 07                 0324 	JNZ	XRG
0370 B6 16                 0325 	MOV	DH,22
0372 F6 C1 01              0326 	TEST	CL,1		;See if 8-bit operation is OK
0375 74 3C                 0327 	JZ	MRERR
0377                       0328 XRG:
0377 8A C2                 0329 	MOV	AL,DL
0379 2C 06                 0330 	SUB	AL,6		;Check for R/M mode 6 and register 0
037B 0A C3                 0331 	OR	AL,BL		;   meaning direct load/store of accumulator
037D 75 19                 0332 	JNZ	NOTAC
037F F6 C1 08              0333 	TEST	CL,8		;See if direct load/store of accumulator
0382 74 14                 0334 	JZ	NOTAC		;   means anything in this case
0384                       0335 ; Process direct load/store of accumulator
0384 8A C5                 0336 	MOV	AL,CH
0386 24 02                 0337 	AND	AL,2		;Preserve direction bit only
0388 34 02                 0338 	XOR	AL,2		;   but flip it
038A 0C A0                 0339 	OR	AL,0A0H		;Combine with OP code
038C 8A E8                 0340 	MOV	CH,AL
038E 8A C7                 0341 	MOV	AL,BH		;Check byte/word operation
0390 24 01                 0342 	AND	AL,1
0392 0A C5                 0343 	OR	AL,CH
0394 59                    0344 	POP	CX		;Dump return address
0395 E9 47 07              0345 	JMP	PUTADD		;Write the address
0398                       0346 
0398                       0347 NOTAC:
0398 8A C7                 0348 	MOV	AL,BH
039A 24 01                 0349 	AND	AL,1		;Get byte/word bit
039C 22 C1                 0350 	AND	AL,CL		;But don't use it in word-only operations
039E 0A C5                 0351 	OR	AL,CH		;Combine with OP code
03A0 E8 78 06              0352 	CALL	PUT
03A3 8A C3                 0353 	MOV	AL,BL
03A5 02 C0                 0354 	ADD	AL,AL		;Rotate to middle position
03A7 02 C0                 0355 	ADD	AL,AL
03A9 02 C0                 0356 	ADD	AL,AL
03AB 0A C2                 0357 	OR	AL,DL		;Combine register field
03AD 59                    0358 	POP	CX		;Dump return address
03AE E9 2E 07              0359 	JMP	PUTADD		;Write the address
03B1                       0360 
03B1                       0361 STERR:
03B1 B6 1D                 0362 	MOV	DH,29
03B3                       0363 MRERR:
03B3 8A CE                 0364 	MOV	CL,DH
03B5                       0365 
03B5 E9 F7 FE              0366 ERR1:	JMP	ERROR
03B8                       0367 
03B8                       0368 GETOP2:
03B8                       0369 ;Get the second operand: look for a comma and drop into GETOP
03B8 A0 CB 1B              0370 	MOV	AL,[SYM]
03BB 3C 2C                 0371 	CMP	AL,','
03BD B1 15                 0372 	MOV	CL,21
03BF 75 F4                 0373 	JNZ	ERR1
03C1                       0374 
03C1                       0375 
03C1                       0376 GETOP:
03C1                       0377 
03C1                       0378 ; Get one operand. Operand may be a memory reference in brackets, a register,
03C1                       0379 ; or a constant. If a flag (such as "B" for byte operation) is encountered,
03C1                       0380 ; it is noted and processing continues to find the operand.
03C1                       0381 ;
03C1                       0382 ; On exit, AL (=DH) has the type of operand. Other information depends
03C1                       0383 ; on the actual operand:
03C1                       0384 ;
03C1                       0385 ; AL=DH=0  Memory Reference.  DL has the address mode properly prepared in
03C1                       0386 ; the 8086 R/M format (middle bits zero). The constant part of the address
03C1                       0387 ; is in ADDR. If an undefined label needs to be added to this, a pointer to
03C1                       0388 ; its information fields is in ALABEL, otherwise ALABEL is zero.
03C1                       0389 ;
03C1                       0390 ; AL=DH=1  Value. The constant part is in DATA. If an undefined label needs
03C1                       0391 ; to be added to this, a pointer to its information fields is in DLABEL,
03C1                       0392 ; otherwise DLABEL is zero. "$" and "RET" are in this class.
03C1                       0393 ;
03C1                       0394 ; AL=DH=2  8-bit Register. DL has the register number.
03C1                       0395 ;
03C1                       0396 ; AL=DH=3  16-bit Register. DL has the register number.
03C1                       0397 ;
03C1                       0398 ; AL=DH=4  Segment Register. DL has the register number.
03C1                       0399 
03C1 E8 E3 01              0400 	CALL	GETSYM
03C4                       0401 GETOP1:
03C4                       0402 ;Enter here if we don't need a GETSYM first
03C4 3C 5B                 0403 	CMP	AL,'['		;Memory reference?
03C6 74 30                 0404 	JZ	MEM
03C8 3C 05                 0405 	CMP	AL,5		;Flag ("B", "W", etc.)?
03CA 74 57                 0406 	JZ	FLG
03CC 3C 02                 0407 	CMP	AL,REG		;8-Bit register?
03CE 74 20                 0408 	JZ	NREG
03D0 3C 03                 0409 	CMP	AL,XREG		;16-Bit register?
03D2 74 1C                 0410 	JZ	NREG
03D4 3C 04                 0411 	CMP	AL,SREG		;Segment register?
03D6 74 18                 0412 	JZ	NREG
03D8                       0413 VAL:				;Must be immediate
03D8 32 C0                 0414 	XOR	AL,AL		;No addressing modes allowed
03DA                       0415 VAL1:
03DA E8 4F 00              0416 	CALL	GETVAL
03DD A1 75 1B              0417 	MOV	AX,[CON]	;Defined part
03E0 A3 71 1B              0418 	MOV	[DATA],AX
03E3 A1 77 1B              0419 	MOV	AX,[UNDEF]	;Undefined part
03E6 A3 73 1B              0420 	MOV	[DLABEL],AX
03E9 8A D5                 0421 	MOV	DL,CH
03EB B6 01                 0422 	MOV	DH,CONST
03ED 8A C6                 0423 	MOV	AL,DH
03EF C3                    0424 	RET
03F0                       0425 NREG:
03F0 52                    0426 	PUSH	DX
03F1 E8 B3 01              0427 	CALL	GETSYM
03F4 5A                    0428 	POP	DX
03F5 8A C6                 0429 	MOV	AL,DH
03F7 C3                    0430 	RET
03F8                       0431 MEM:
03F8 E8 AC 01              0432 	CALL	GETSYM
03FB B0 01                 0433 	MOV	AL,1
03FD E8 2C 00              0434 	CALL	GETVAL
0400 A0 CB 1B              0435 	MOV	AL,[SYM]
0403 3C 5D                 0436 	CMP	AL,']'
0405 B1 18                 0437 	MOV	CL,24
0407 75 AC                 0438 	JNZ	ERR1
0409 E8 9B 01              0439 	CALL	GETSYM
040C 8B 1E 75 1B           0440 	MOV	BX,[CON]
0410 89 1E 6D 1B           0441 	MOV	[ADDR],BX
0414 8B 1E 77 1B           0442 	MOV	BX,[UNDEF]
0418 89 1E 6F 1B           0443 	MOV	[ALABEL],BX
041C 8A D5                 0444 	MOV	DL,CH
041E B6 00                 0445 	MOV	DH,UNDEFID
0420 8A C6                 0446 	MOV	AL,DH
0422 C3                    0447 	RET
0423                       0448 FLG:
0423 E8 81 01              0449 	CALL	GETSYM
0426 3C 2C                 0450 	CMP	AL,','
0428 74 97                 0451 	JZ	GETOP
042A EB 98                 0452 	JP	GETOP1
042C                       0453 
042C                       0454 
042C                       0455 GETVAL:
042C                       0456 
042C                       0457 ; Expression analyzer. On entry, if AL=0 then do not allow base or index
042C                       0458 ; registers. If AL=1, we are analyzing a memory reference, so allow base
042C                       0459 ; and index registers, and compute addressing mode when done. The constant
042C                       0460 ; part of the expression will be found in CON. If an undefined label is to
042C                       0461 ; be added to this, a pointer to its information fields will be found in
042C                       0462 ; UNDEF.
042C                       0463 
042C 95                    0464 	XCHG	AX,BP		;Flag is kept in BP
042D 53                    0465 	PUSH	BX
042E BB 00 00              0466 	MOV	BX,0
0431 89 1E 75 1B           0467 	MOV	[CON],BX
0435 89 1E 77 1B           0468 	MOV	[UNDEF],BX
0439 5B                    0469 	POP	BX
043A A0 CB 1B              0470 	MOV	AL,[SYM]
043D 3C 2B                 0471 	CMP	AL,'+'
043F 74 09                 0472 	JZ	PLSMNS
0441 3C 2D                 0473 	CMP	AL,'-'
0443 74 05                 0474 	JZ	PLSMNS
0445 B1 2B                 0475 	MOV	CL,'+'
0447 51                    0476 	PUSH	CX
0448 EB 08                 0477 	JP	OPERATE
044A                       0478 PLSMNS:
044A 50                    0479 	PUSH	AX
044B 81 CD 04 00           0480 	OR	BP,4		;Flag that a sign was found
044F E8 55 01              0481 	CALL	GETSYM
0452                       0482 OPERATE:
0452 3C 01                 0483 	CMP	AL,CONST
0454 75 03                 0484 	JNZ	$+5
0456 E9 C3 00              0485 	JMP	CVAL
0459 3C 00                 0486 	CMP	AL,UNDEFID
045B 75 03                 0487 	JNZ	$+5
045D E9 CA 00              0488 	JMP	UVAL
0460 3C 22                 0489 	CMP	AL,'"'
0462 75 03                 0490 	JNZ	$+5
0464 E9 DE 00              0491 STRINGJ:JMP	STRING
0467 3C 27                 0492 	CMP	AL,"'"
0469 74 F9                 0493 	JZ	STRINGJ
046B 3C 03                 0494 	CMP	AL,XREG		;Only 16-bit register may index
046D B1 14                 0495 	MOV	CL,20
046F 75 20                 0496 	JNZ	ERR2
0471 F7 C5 01 00           0497 	TEST	BP,1		;Check to see if indexing is OK
0475 B1 01                 0498 	MOV	CL,1
0477 74 18                 0499 	JZ	ERR2
0479 8A C2                 0500 	MOV	AL,DL
047B B1 03                 0501 	MOV	CL,3
047D 3C 03                 0502 	CMP	AL,3		;Check for BX
047F 74 25                 0503 	JZ	BXJ
0481 2C 05                 0504 	SUB	AL,5		;Check for BP
0483 74 2A                 0505 	JZ	BPJ
0485 FE C8                 0506 	DEC	AL		;Check for SI
0487 B1 04                 0507 	MOV	CL,4
0489 74 12                 0508 	JZ	SIJ
048B FE C8                 0509 	DEC	AL		;Check for DI
048D 74 05                 0510 	JZ	DIJ
048F B1 02                 0511 	MOV	CL,2		;Invalid base/index register
0491 E9 1B FE              0512 ERR2:	JMP	ERROR
0494                       0513 DIJ:
0494 95                    0514 	XCHG	AX,BP
0495 A8 10                 0515 	TEST	AL,10H		;Check if already seen index register
0497 75 F8                 0516 	JNZ	ERR2
0499 0C 30                 0517 	OR	AL,30H		;Flag seeing index register DI
049B EB 19                 0518 	JP	LPCHK
049D                       0519 SIJ:
049D 95                    0520 	XCHG	AX,BP
049E A8 10                 0521 	TEST	AL,010H		;Check if already seen index register
04A0 75 EF                 0522 	JNZ	ERR2
04A2 0C 10                 0523 	OR	AL,010H		;Flag seeing index register SI
04A4 EB 10                 0524 	JP	LPCHK
04A6                       0525 BXJ:
04A6 95                    0526 	XCHG	AX,BP
04A7 A8 80                 0527 	TEST	AL,080H		;Check if already seen base register
04A9 75 E6                 0528 	JNZ	ERR2
04AB 0C 80                 0529 	OR	AL,080H		;Flag seeing base register BX
04AD EB 07                 0530 	JP	LPCHK
04AF                       0531 BPJ:
04AF 95                    0532 	XCHG	AX,BP
04B0 A8 80                 0533 	TEST	AL,080H		;Check if already seen base register
04B2 75 DD                 0534 	JNZ	ERR2
04B4 0C C0                 0535 	OR	AL,0C0H		;Flag seeing base register BP
04B6                       0536 LPCHK:
04B6 95                    0537 	XCHG	AX,BP
04B7 58                    0538 	POP	AX		;Get operator
04B8 3C 2D                 0539 	CMP	AL,'-'		;Can't subtract a register
04BA B1 05                 0540 	MOV	CL,5
04BC 74 D3                 0541 	JZ	ERR2
04BE                       0542 NEXTER:
04BE E8 E6 00              0543 	CALL	GETSYM
04C1 3C 2B                 0544 	CMP	AL,'+'
04C3 75 03                 0545 	JNZ	$+5
04C5 E9 82 FF              0546 PJ:	JMP	PLSMNS
04C8 3C 2D                 0547 	CMP	AL,'-'
04CA 74 F9                 0548 	JZ	PJ
04CC 95                    0549 	XCHG	AX,BP
04CD B5 00                 0550 	MOV	CH,0
04CF A8 10                 0551 	TEST	AL,010H		;Test INDEX bit
04D1 D0 D0                 0552 	RCL	AL		;BASE bit (zero flag not affected)
04D3 74 3B                 0553 	JZ	NOIND		;Jump if not indexed, with BASE bit in carry
04D5 F5                    0554 	CMC
04D6 D0 D5                 0555 	RCL	CH
04D8 D0 D0                 0556 	RCL	AL		;BP bit
04DA D0 D5                 0557 	RCL	CH
04DC D0 D0                 0558 	RCL	AL		;DI bit
04DE D0 D5                 0559 	RCL	CH		;The low 3 bits now have indexing mode
04E0                       0560 MODE:
04E0 80 CD 80              0561 	OR	CH,080H		;If undefined label, force 16-bit displacement
04E3 F7 06 77 1B FF FF     0562 	TEST	[UNDEF],-1
04E9 75 1E                 0563 	JNZ	RET
04EB 8B 1E 75 1B           0564 	MOV	BX,[CON]
04EF E8 18 00              0565 	CALL	SIGNEXT		;Check if 8-bit with sign extended
04F2 75 15                 0566 	JNZ	RET		;If not, use 16-bit displacement
04F4 80 E5 7F              0567 	AND	CH,07FH		;Reset 16-bit displacement
04F7 80 CD 40              0568 	OR	CH,040H		;Set 8-bit displacement
04FA 0B DB                 0569 	OR	BX,BX
04FC 75 0B                 0570 	JNZ	RET		;Use it if not zero displacement
04FE 80 E5 07              0571 	AND	CH,7		;Specify no displacement
0501 82 FD 06              0572 	CMP	CH,6		;Check for BP+0 addressing mode
0504 75 03                 0573 	JNZ	RET
0506 80 CD 40              0574 	OR	CH,040H		;If BP+0, use 8-bit displacement
0509 C3                    0575 	RET
050A                       0576 
050A                       0577 SIGNEXT:
050A                       0578 ; Return with zero flag set if value in BX is a valid sign-extended
050A                       0579 ; 8-bit value. AX destroyed
050A 8A C3                 0580 	MOV	AL,BL
050C 98                    0581 	CBW
050D 3B C3                 0582 	CMP	AX,BX
050F C3                    0583 	RET
0510                       0584 
0510                       0585 NOIND:
0510 B5 06                 0586 	MOV	CH,6		;Try direct address mode
0512 73 FB                 0587 	JNC	RET		;If no base register, that's right
0514 D0 D0                 0588 	RCL	AL		;Check BP bit
0516 72 C8                 0589 	JC	MODE
0518 FE C5                 0590 	INC	CH		;If not, must be BX
051A EB C4                 0591 	JP	MODE
051C                       0592 
051C                       0593 CVAL:
051C 58                    0594 	POP	AX
051D 3C 2D                 0595 	CMP	AL,'-'
051F 75 02                 0596 	JNZ	ADDCON
0521 F7 DA                 0597 	NEG	DX
0523                       0598 ADDCON:
0523 01 16 75 1B           0599 	ADD	[CON],DX
0527 E9 94 FF              0600 	JMP	NEXTER
052A                       0601 
052A                       0602 UVAL:
052A 95                    0603 	XCHG	AX,BP
052B B1 06                 0604 	MOV	CL,6
052D A8 08                 0605 	TEST	AL,008H		;Check if undefined label has been seen
052F 75 11                 0606 	JNZ	ERR30
0531 0C 08                 0607 	OR	AL,008H		;Flag seeing undefined label
0533 95                    0608 	XCHG	AX,BP
0534 89 1E 77 1B           0609 	MOV	[UNDEF],BX
0538 58                    0610 	POP	AX
0539 3C 2B                 0611 	CMP	AL,'+'		;Undefined label may only be added
053B B1 05                 0612 	MOV	CL,5
053D 75 03                 0613 	JNZ	ERR30
053F E9 7C FF              0614 	JMP	NEXTER
0542                       0615 
0542 E9 6A FD              0616 ERR30:	JMP	ERROR
0545                       0617 
0545                       0618 STRING:
0545 8A E8                 0619 	MOV	CH,AL
0547 A0 CA 1B              0620 	MOV	AL,[CHR]
054A 3A C5                 0621 	CMP	AL,CH
054C B1 23                 0622 	MOV	CL,35
054E 8A D0                 0623 	MOV	DL,AL
0550 B6 00                 0624 	MOV	DH,0
0552 75 03                 0625 	JNZ	L0003
0554 E8 36 00              0626 	CALL	ZERLEN
0557                       0627 L0003:
0557 E8 3B 00              0628 	CALL	GETCHR
055A 9F                    0629 	LAHF
055B 95                    0630 	XCHG	AX,BP
055C 9E                    0631 	SAHF
055D B1 25                 0632 	MOV	CL,37
055F A8 02                 0633 	TEST	AL,002H
0561 74 DF                 0634 	JZ	ERR30
0563 A8 04                 0635 	TEST	AL,004H
0565 B1 26                 0636 	MOV	CL,38
0567 75 D9                 0637 	JNZ	ERR30
0569 9F                    0638 	LAHF
056A 95                    0639 	XCHG	AX,BP
056B 9E                    0640 	SAHF
056C                       0641 STRGDAT:
056C 8A C2                 0642 	MOV	AL,DL
056E 3C 0D                 0643 	CMP	AL,EOL
0570 B1 27                 0644 	MOV	CL,39
0572 74 CE                 0645 	JZ	ERR30
0574 E8 A4 04              0646 	CALL	PUT
0577 A0 D3 1B              0647 	MOV	AL,[DATSIZ]
057A 0A C0                 0648 	OR	AL,AL
057C 75 05                 0649 	JNZ	BYTSIZ
057E 8A C6                 0650 	MOV	AL,DH
0580 E8 98 04              0651 	CALL	PUT
0583                       0652 BYTSIZ:
0583 A0 CA 1B              0653 	MOV	AL,[CHR]
0586 8A D0                 0654 	MOV	DL,AL
0588 E8 0A 00              0655 	CALL	GETCHR
058B EB DF                 0656 	JP	STRGDAT
058D                       0657 ZERLEN:
058D E8 24 FD              0658 	CALL	NEXTCHR
0590 3A C5                 0659 	CMP	AL,CH
0592 75 AE                 0660 	JNZ	ERR30
0594 C3                    0661 	RET
0595                       0662 GETCHR:
0595 E8 1C FD              0663 	CALL	NEXTCHR
0598 3A C5                 0664 	CMP	AL,CH
059A 75 F8                 0665 	JNZ	RET
059C E8 15 FD              0666 	CALL	NEXTCHR
059F 3A C5                 0667 	CMP	AL,CH
05A1 74 F1                 0668 	JZ	RET
05A3 5B                    0669 	POP	BX
05A4 E9 75 FF              0670 	JMP	CVAL
05A7                       0671 
05A7                       0672 
05A7                       0673 GETSYM:
05A7                       0674 
05A7                       0675 ; The lexical scanner. Used only in the operand field. Returns with the token
05A7                       0676 ; in SYM and AL, sometimes with additional info in BX or DX.
05A7                       0677 ;
05A7                       0678 ; AL=SYM=0  Undefined label. BX has pointer to information fields.
05A7                       0679 ;
05A7                       0680 ; AL=SYM=1  Constant (or defined label). DX has value.
05A7                       0681 ;
05A7                       0682 ; AL=SYM=2,3,4  8-bit register, 16-bit register, or segment register,
05A7                       0683 ; respectively. DL has register number.
05A7                       0684 ;
05A7                       0685 ; AL=SYM=5  A mode flag (such as "B" for byte operation). Also stored in
05A7                       0686 ; appropriate memory location--FLAG or LONG.
05A7                       0687 ;
05A7                       0688 ; All other values are the ASCII code of the character. Note that this may
05A7                       0689 ; never be a letter or number.
05A7                       0690 
05A7 E8 20 00              0691 	CALL	GETSY
05AA A0 CB 1B              0692 	MOV	AL,[SYM]
05AD C3                    0693 	RET
05AE                       0694 
05AE                       0695 SCANB:
05AE A0 CA 1B              0696 	MOV	AL,[CHR]
05B1                       0697 SCANT:
05B1 3C 20                 0698 	CMP	AL,' '
05B3 74 04                 0699 	JZ	NEXB
05B5 3C 09                 0700 	CMP	AL,9
05B7 75 F4                 0701 	JNZ	RET
05B9                       0702 NEXB:
05B9 E8 F8 FC              0703 	CALL	NEXTCHR
05BC EB F3                 0704 	JP	SCANT
05BE                       0705 
05BE                       0706 DOLLAR:
05BE 8B 16 67 1B           0707 	MOV	DX,[OLDPC]
05C2 B0 01                 0708 	MOV	AL,CONST
05C4 A2 CB 1B              0709 	MOV	[SYM],AL
05C7                       0710 NEXTCHJ:
05C7 E9 EA FC              0711 	JMP	NEXTCHR
05CA                       0712 
05CA                       0713 GETSY:
05CA E8 E1 FF              0714 	CALL	SCANB
05CD 3C 24                 0715 	CMP	AL,'$'
05CF 74 ED                 0716 	JZ	DOLLAR
05D1 A2 CB 1B              0717 	MOV	[SYM],AL
05D4 0C 20                 0718 	OR	AL,20H
05D6 3C 7B                 0719 	CMP	AL,'z'+1
05D8 73 ED                 0720 	JNC	NEXTCHJ
05DA 3C 61                 0721 	CMP	AL,'a'
05DC 72 03                 0722 	JC	$+5
05DE E9 BF 00              0723 	JMP	LETTER
05E1 3C 3A                 0724 	CMP	AL,'9'+1
05E3 73 E2                 0725 	JNC	NEXTCHJ
05E5 3C 30                 0726 	CMP	AL,'0'
05E7 72 DE                 0727 	JC	NEXTCHJ
05E9 BB CB 1B              0728 	MOV	BX,SYM
05EC C6 07 01              0729 	MOV	B,[BX],CONST
05EF E8 83 00              0730 	CALL	READID
05F2 4B                    0731 	DEC	BX
05F3 8A 07                 0732 	MOV	AL,[BX]
05F5 B1 07                 0733 	MOV	CL,7
05F7 BB 00 00              0734 	MOV	BX,0
05FA 3C 68                 0735 	CMP	AL,'h'
05FC 75 03                 0736 	JNZ	$+5
05FE E9 32 00              0737 	JMP	HEX
0601 FE C1                 0738 	INC	CL
0603 C7 06 F0 1B 7A 1B     0739 	MOV	[IX],ID
0609                       0740 DEC:
0609 8B 36 F0 1B           0741 	MOV	SI,[IX]
060D 8A 04                 0742 	MOV	AL,[SI]
060F FF 06 F0 1B           0743 	INC	[IX]
0613 3C 3A                 0744 	CMP	AL,'9'+1
0615 72 03                 0745 	JC	$+5
0617 E9 95 FC              0746 	JMP	ERROR
061A 2C 30                 0747 	SUB	AL,'0'
061C 8B D3                 0748 	MOV	DX,BX
061E D1 E3                 0749 	SHL	BX
0620 D1 E3                 0750 	SHL	BX
0622 03 DA                 0751 	ADD	BX,DX
0624 D1 E3                 0752 	SHL	BX
0626 8A D0                 0753 	MOV	DL,AL
0628 B6 00                 0754 	MOV	DH,0
062A 03 DA                 0755 	ADD	BX,DX
062C FE CD                 0756 	DEC	CH
062E 75 D9                 0757 	JNZ	DEC
0630 87 DA                 0758 	XCHG	DX,BX
0632 C3                    0759 	RET
0633                       0760 
0633                       0761 HEX:
0633 BA 7A 1B              0762 	MOV	DX,ID
0636 FE CD                 0763 	DEC	CH
0638                       0764 HEX1:
0638 8B F2                 0765 	MOV	SI,DX
063A AC                    0766 	LODB
063B 42                    0767 	INC	DX
063C 2C 30                 0768 	SUB	AL,'0'
063E 3C 0A                 0769 	CMP	AL,10
0640 72 06                 0770 	JC	GOTIT
0642 3C 37                 0771 	CMP	AL,'g'-'0'
0644 73 13                 0772 	JNC	ERR4
0646 2C 27                 0773 	SUB	AL,'a'-10-'0'
0648                       0774 GOTIT:
0648 D1 E3                 0775 	SHL	BX
064A D1 E3                 0776 	SHL	BX
064C D1 E3                 0777 	SHL	BX
064E D1 E3                 0778 	SHL	BX
0650 02 D8                 0779 	ADD	BL,AL
0652 FE CD                 0780 	DEC	CH
0654 75 E2                 0781 	JNZ	HEX1
0656 87 DA                 0782 	XCHG	DX,BX
0658 C3                    0783 	RET
0659                       0784 
0659 E9 53 FC              0785 ERR4:	JMP	ERROR
065C                       0786 
065C                       0787 GETLET:
065C E8 4F FF              0788 	CALL	SCANB
065F 3C 0D                 0789 	CMP	AL,EOL
0661 F9                    0790 	STC
0662 74 F4                 0791 	JZ	RET
0664 3C 3B                 0792 	CMP	AL,';'
0666 F9                    0793 	STC
0667 74 EF                 0794 	JZ	RET
0669 B1 0A                 0795 	MOV	CL,10
066B 0C 20                 0796 	OR	AL,20H
066D 3C 61                 0797 	CMP	AL,'a'
066F 72 E8                 0798 	JC	ERR4
0671 3C 7B                 0799 	CMP	AL,'z'+1
0673 73 E4                 0800 	JNC	ERR4
0675                       0801 READID:
0675 BB 7A 1B              0802 	MOV	BX,ID
0678 B5 00                 0803 	MOV	CH,0
067A                       0804 MOREID:
067A 88 07                 0805 	MOV	[BX],AL
067C FE C5                 0806 	INC	CH
067E 43                    0807 	INC	BX
067F E8 32 FC              0808 	CALL	NEXTCHR
0682 3C 30                 0809 	CMP	AL,'0'
0684 72 0E                 0810 	JC	NOMORE
0686 0C 20                 0811 	OR	AL,20H
0688 3C 7B                 0812 	CMP	AL,'z'+1
068A 73 08                 0813 	JNC	NOMORE
068C 3C 3A                 0814 	CMP	AL,'9'+1
068E 72 EA                 0815 	JC	MOREID
0690 3C 61                 0816 	CMP	AL,'a'
0692 73 E6                 0817 	JNC	MOREID
0694                       0818 NOMORE:
0694 8A C8                 0819 	MOV	CL,AL
0696 8A C5                 0820 	MOV	AL,CH
0698 A2 79 1B              0821 	MOV	[LENID],AL
069B 0A C0                 0822 	OR	AL,AL
069D 8A C1                 0823 	MOV	AL,CL
069F C3                    0824 	RET
06A0                       0825 
06A0                       0826 LETTER:
06A0 E8 D2 FF              0827 	CALL	READID
06A3 8A C5                 0828 	MOV	AL,CH
06A5 FE C8                 0829 	DEC	AL
06A7 75 1B                 0830 	JNZ	NOFLG
06A9 A0 7A 1B              0831 	MOV	AL,[ID]
06AC 3C 6C                 0832 	CMP	AL,'l'
06AE B1 00                 0833 	MOV	CL,0
06B0 BA 6C 1B              0834 	MOV	DX,LONG
06B3 74 23                 0835 	JZ	BWFLAG
06B5 3C 62                 0836 	CMP	AL,'b'
06B7 BA 6B 1B              0837 	MOV	DX,FLAG
06BA 74 1C                 0838 	JZ	BWFLAG
06BC 3C 77                 0839 	CMP	AL,'w'
06BE B1 01                 0840 	MOV	CL,1
06C0 74 16                 0841 	JZ	BWFLAG
06C2 32 C0                 0842 	XOR	AL,AL
06C4                       0843 NOFLG:
06C4 FE C8                 0844 	DEC	AL
06C6 53                    0845 	PUSH	BX
06C7 75 03                 0846 	JNZ	L0004
06C9 E8 1F 00              0847 	CALL	REGCHK
06CC                       0848 L0004:	
06CC 5B                    0849 	POP	BX
06CD 8A C6                 0850 	MOV	AL,DH
06CF 74 03                 0851 	JZ	SYMSAV
06D1 E8 B6 00              0852 	CALL	LOOKRET
06D4                       0853 SYMSAV:
06D4 A2 CB 1B              0854 	MOV	[SYM],AL
06D7 C3                    0855 	RET
06D8                       0856 
06D8                       0857 BWFLAG:
06D8 87 DA                 0858 	XCHG	DX,BX
06DA 8A 07                 0859 	MOV	AL,[BX]
06DC FE C0                 0860 	INC	AL
06DE 88 0F                 0861 	MOV	[BX],CL
06E0 B1 20                 0862 	MOV	CL,32
06E2 74 03                 0863 	JZ	$+5
06E4 E9 C8 FB              0864 	JMP	ERROR
06E7 B0 05                 0865 	MOV	AL,5
06E9 EB E9                 0866 	JP	SYMSAV
06EB                       0867 
06EB                       0868 REGCHK:
06EB BB 7A 1B              0869 	MOV	BX,ID
06EE 8A 0F                 0870 	MOV	CL,[BX]
06F0 9F                    0871 	LAHF
06F1 43                    0872 	INC	BX
06F2 9E                    0873 	SAHF
06F3 8A 07                 0874 	MOV	AL,[BX]
06F5 BB 52 07              0875 	MOV	BX,REGTAB
06F8 B6 03                 0876 	MOV	DH,XREG
06FA B2 00                 0877 	MOV	DL,0
06FC 3C 78                 0878 	CMP	AL,'x'
06FE 74 3B                 0879 	JZ	SCANREG
0700 B6 02                 0880 	MOV	DH,REG
0702 3C 6C                 0881 	CMP	AL,'l'
0704 74 35                 0882 	JZ	SCANREG
0706 B2 04                 0883 	MOV	DL,4
0708 3C 68                 0884 	CMP	AL,'h'
070A 74 2F                 0885 	JZ	SCANREG
070C B6 04                 0886 	MOV	DH,SREG
070E B2 00                 0887 	MOV	DL,0
0710 BB 56 07              0888 	MOV	BX,SEGTAB
0713 3C 73                 0889 	CMP	AL,'s'
0715 74 24                 0890 	JZ	SCANREG
0717 B6 03                 0891 	MOV	DH,XREG
0719 3C 70                 0892 	CMP	AL,'p'
071B 74 11                 0893 	JZ	PREG
071D 3C 69                 0894 	CMP	AL,'i'
071F 75 B6                 0895 	JNZ	RET
0721 B2 06                 0896 	MOV	DL,6
0723 8A C1                 0897 	MOV	AL,CL
0725 3C 73                 0898 	CMP	AL,'s'
0727 74 AE                 0899 	JZ	RET
0729 FE C2                 0900 	INC	DL
072B 3C 64                 0901 	CMP	AL,'d'
072D C3                    0902 	RET
072E                       0903 PREG:
072E B2 04                 0904 	MOV	DL,4
0730 8A C1                 0905 	MOV	AL,CL
0732 3C 73                 0906 	CMP	AL,'s'
0734 74 F7                 0907 	JZ	RET
0736 FE C2                 0908 	INC	DL
0738 3C 62                 0909 	CMP	AL,'b'
073A C3                    0910 	RET
073B                       0911 SCANREG:
073B 8A C1                 0912 	MOV	AL,CL
073D B9 04 00              0913 	MOV	CX,4
0740 FC                    0914 	UP
0741 8B FB                 0915 	MOV	DI,BX
0743 F2                    0916 	REPNZ
0744 AE                    0917 	SCAB
0745 8B DF                 0918 	MOV	BX,DI
0747 75 F1                 0919 	JNZ	RET
0749 8A C1                 0920 	MOV	AL,CL
074B 02 C2                 0921 	ADD	AL,DL
074D 8A D0                 0922 	MOV	DL,AL
074F 32 C0                 0923 	XOR	AL,AL
0751 C3                    0924 	RET
0752                       0925 
0752 62 64 63 61           0926 REGTAB:	DB	'bdca'
0756                       0927 
0756 64 73 63 65           0928 SEGTAB:	DB	'dsce'
075A                       0929 
075A                       0930 LOOK:
075A 8A 2F                 0931 	MOV	CH,[BX]
075C 43                    0932 	INC	BX
075D BA 7A 1B              0933 	MOV	DX,ID
0760 E8 F4 00              0934 	CALL	CPSLP
0763 74 EC                 0935 	JZ	RET
0765 34 80                 0936 	XOR	AL,80H
0767 8A C8                 0937 	MOV	CL,AL
0769 4B                    0938 	DEC	BX
076A 8A 07                 0939 	MOV	AL,[BX]
076C 34 80                 0940 	XOR	AL,80H
076E 3A C1                 0941 	CMP	AL,CL
0770 73 04                 0942 	JNC	SMALL
0772 FE C5                 0943 	INC	CH
0774 FE C5                 0944 	INC	CH
0776                       0945 SMALL:
0776 8A D5                 0946 	MOV	DL,CH
0778 B6 00                 0947 	MOV	DH,0
077A 03 DA                 0948 	ADD	BX,DX
077C 8B 17                 0949 	MOV	DX,[BX]
077E 43                    0950 	INC	BX
077F 8A C2                 0951 	MOV	AL,DL
0781 0A C6                 0952 	OR	AL,DH
0783 F9                    0953 	STC
0784 74 CB                 0954 	JZ	RET
0786 87 DA                 0955 	XCHG	DX,BX
0788 EB D0                 0956 	JP	LOOK
078A                       0957 
078A                       0958 LOOKRET:
078A 8A C5                 0959 	MOV	AL,CH
078C 3C 03                 0960 	CMP	AL,3	;RET has 3 letters
078E 75 4D                 0961 	JNZ	LOOKUP
0790 4B                    0962 	DEC	BX
0791 80 0F 80              0963 	OR	B,[BX],080H
0794 BA 1A 1B              0964 	MOV	DX,RETSTR+2
0797                       0965 CHKRET:
0797 8B F2                 0966 	MOV	SI,DX
0799 AC                    0967 	LODB
079A 3A 07                 0968 	CMP	AL,[BX]
079C 75 43                 0969 	JNZ	LOOKIT
079E 4B                    0970 	DEC	BX
079F 4A                    0971 	DEC	DX
07A0 FE CD                 0972 	DEC	CH
07A2 75 F3                 0973 	JNZ	CHKRET
07A4 8B 16 E8 1B           0974 	MOV	DX,[LSTRET]
07A8 8A C2                 0975 	MOV	AL,DL
07AA 22 C6                 0976 	AND	AL,DH
07AC FE C0                 0977 	INC	AL
07AE 74 0D                 0978 	JZ	ALLRET
07B0 8B 1E 65 1B           0979 	MOV	BX,[PC]
07B4 2B DA                 0980 	SUB	BX,DX
07B6 E8 51 FD              0981 	CALL	SIGNEXT
07B9 B0 01                 0982 	MOV	AL,1
07BB 74 94                 0983 	JZ	RET
07BD                       0984 ALLRET:
07BD 8B 1E EA 1B           0985 	MOV	BX,[RETPT]
07C1 8A C7                 0986 	MOV	AL,BH
07C3 0A C3                 0987 	OR	AL,BL
07C5 B0 00                 0988 	MOV	AL,0
07C7 75 88                 0989 	JNZ	RET
07C9 8B 1E CE 1B           0990 	MOV	BX,[HEAP]
07CD 4B                    0991 	DEC	BX
07CE 4B                    0992 	DEC	BX
07CF 4B                    0993 	DEC	BX
07D0 89 1E CE 1B           0994 	MOV	[HEAP],BX
07D4 32 C0                 0995 	XOR	AL,AL
07D6 88 07                 0996 	MOV	[BX],AL
07D8 89 1E EA 1B           0997 	MOV	[RETPT],BX
07DC C3                    0998 	RET
07DD                       0999 
07DD                       1000 LOOKUP:
07DD 4B                    1001 	DEC	BX
07DE 80 0F 80              1002 	OR	B,[BX],080H
07E1                       1003 LOOKIT:
07E1 8B 1E CC 1B           1004 	MOV	BX,[BASE]
07E5 8A C7                 1005 	MOV	AL,BH
07E7 0A C3                 1006 	OR	AL,BL
07E9 74 1E                 1007 	JZ	EMPTY
07EB E8 6C FF              1008 	CALL	LOOK
07EE 72 10                 1009 	JC	ENTER
07F0 BA 04 00              1010 	MOV	DX,4
07F3 03 DA                 1011 	ADD	BX,DX
07F5 8A 07                 1012 	MOV	AL,[BX]
07F7 0A C0                 1013 	OR	AL,AL
07F9 74 E1                 1014 	JZ	RET
07FB 43                    1015 	INC	BX
07FC 8B 17                 1016 	MOV	DX,[BX]
07FE 43                    1017 	INC	BX
07FF C3                    1018 	RET
0800                       1019 
0800                       1020 ENTER:
0800 53                    1021 	PUSH	BX		;Save pointer to link field
0801 E8 0D 00              1022 	CALL	CREATE		;Add the node
0804 5E                    1023 	POP	SI
0805 89 54 FF              1024 	MOV	[SI-1],DX	;Link new node
0808 C3                    1025 	RET			;Zero was set by CREATE
0809                       1026 
0809                       1027 EMPTY:
0809 E8 05 00              1028 	CALL	CREATE
080C 89 16 CC 1B           1029 	MOV	[BASE],DX
0810 C3                    1030 	RET
0811                       1031 
0811                       1032 
0811                       1033 CREATE:
0811                       1034 
0811                       1035 ; Add a new node to the identifier tree. The identifier is at ID with
0811                       1036 ; bit 7 of the last character set to one. The length of the identifier is
0811                       1037 ; in LENID, which is ID-1.
0811                       1038 ;
0811                       1039 ; Node format:
0811                       1040 ;	1. Length of identifier (1 byte)
0811                       1041 ;	2. Identifier (1-80 bytes)
0811                       1042 ;	3. Left link (2-byte pointer to alphabetically smaller identifiers)
0811                       1043 ;	4. Right link (0 if none larger)
0811                       1044 ;	5. Data field:
0811                       1045 ;	   a. Defined flag (0=undefined, 1=defined)
0811                       1046 ;	   b. Value (2 bytes)
0811                       1047 ;
0811                       1048 ; This routine returns with AL=zero and zero flag set (which indicates
0811                       1049 ; on return from LOOKUP that it has not yet been defined), DX points
0811                       1050 ; to start of new node, and BX points to data field of new node.
0811                       1051 
0811 A0 79 1B              1052 	MOV	AL,[LENID]
0814 04 08                 1053 	ADD	AL,8		;Storage needed for the node
0816 8B 1E CE 1B           1054 	MOV	BX,[HEAP]
081A 8A D0                 1055 	MOV	DL,AL
081C B6 00                 1056 	MOV	DH,0
081E 2B DA                 1057 	SUB	BX,DX		;Heap grows downward
0820 89 1E CE 1B           1058 	MOV	[HEAP],BX
0824 87 DA                 1059 	XCHG	DX,BX
0826 8B 1E D1 1B           1060 	MOV	BX,[CODE]	;Check to make sure there's enough
082A 3B DA                 1061 	CMP	BX,DX
082C 72 03                 1062 	JB	$+5
082E E9 40 FA              1063 	JMP	ABORT
0831 52                    1064 	PUSH	DX
0832 BB 79 1B              1065 	MOV	BX,LENID
0835 8A 0F                 1066 	MOV	CL,[BX]
0837 FE C1                 1067 	INC	CL
0839 B5 00                 1068 	MOV	CH,0
083B FC                    1069 	UP
083C 8B F3                 1070 	MOV	SI,BX
083E 8B FA                 1071 	MOV	DI,DX
0840 F3                    1072 	REP
0841 A4                    1073 	MOVB			;Move identifier and length into node
0842 8B D7                 1074 	MOV	DX,DI
0844 8B DE                 1075 	MOV	BX,SI
0846 B5 04                 1076 	MOV	CH,4
0848 87 DA                 1077 	XCHG	DX,BX
084A                       1078 NILIFY:
084A 88 0F                 1079 	MOV	[BX],CL		;Zero left and right links
084C 43                    1080 	INC	BX
084D FE CD                 1081 	DEC	CH
084F 75 F9                 1082 	JNZ	NILIFY
0851 32 C0                 1083 	XOR	AL,AL		;Set zero flag
0853 88 07                 1084 	MOV	[BX],AL		;Zero defined flag
0855 5A                    1085 	POP	DX		;Restore pointer to node
0856 C3                    1086 	RET
0857                       1087 
0857                       1088 CPSLP:
0857 8B F2                 1089 	MOV	SI,DX
0859 AC                    1090 	LODB
085A 3A 07                 1091 	CMP	AL,[BX]
085C 9F                    1092 	LAHF
085D 42                    1093 	INC	DX
085E 43                    1094 	INC	BX
085F 9E                    1095 	SAHF
0860 75 F4                 1096 	JNZ	RET
0862 FE CD                 1097 	DEC	CH
0864 75 F1                 1098 	JNZ	CPSLP
0866 C3                    1099 	RET
0867                       1100 
0867                       1101 GETLAB:
0867 BB 00 00              1102 	MOV	BX,0
086A 89 1E 69 1B           1103 	MOV	[LABPT],BX
086E B0 FF                 1104 	MOV	AL,-1
0870 A2 6B 1B              1105 	MOV	[FLAG],AL
0873 A2 6C 1B              1106 	MOV	[LONG],AL
0876 B6 00                 1107 	MOV	DH,0
0878 A0 CA 1B              1108 	MOV	AL,[CHR]
087B 3C 21                 1109 	CMP	AL,' '+1
087D 72 03                 1110 	JC	NOT1
087F 80 CE 01              1111 	OR	DH,001H
0882                       1112 NOT1:
0882 E8 D7 FD              1113 	CALL	GETLET
0885 72 DF                 1114 	JC	RET
0887 3C 3A                 1115 	CMP	AL,':'
0889 75 05                 1116 	JNZ	LABCHK
088B E8 26 FA              1117 	CALL	NEXTCHR
088E EB 07                 1118 	JP	LABEL
0890                       1119 LABCHK:
0890 0A C0                 1120 	OR	AL,AL
0892 F6 C6 01              1121 	TEST	DH,001H
0895 74 CF                 1122 	JZ	RET
0897                       1123 LABEL:
0897 A0 E5 1B              1124 	MOV	AL,[CHKLAB]
089A 0A C0                 1125 	OR	AL,AL
089C 74 03                 1126 	JZ	$+5
089E E9 BB FD              1127 	JMP	GETLET
08A1 E8 39 FF              1128 	CALL	LOOKUP
08A4 B1 0B                 1129 	MOV	CL,11
08A6 75 14                 1130 	JNZ	ERR5
08A8 8B 16 65 1B           1131 	MOV	DX,[PC]
08AC C6 07 01              1132 	MOV	B,[BX],1
08AF 43                    1133 	INC	BX
08B0 88 17                 1134 	MOV	[BX],DL
08B2 89 1E 69 1B           1135 	MOV	[LABPT],BX
08B6 43                    1136 	INC	BX
08B7 88 37                 1137 	MOV	[BX],DH
08B9 E9 A0 FD              1138 	JMP	GETLET
08BC                       1139 
08BC E9 F0 F9              1140 ERR5:	JMP	ERROR
08BF                       1141 
08BF                       1142 ASMLIN:
08BF 8B 1E 65 1B           1143 	MOV	BX,[PC]
08C3 89 1E 67 1B           1144 	MOV	[OLDPC],BX
08C7 E8 9D FF              1145 	CALL	GETLAB
08CA 73 03                 1146 	JNC	$+5
08CC E9 80 F9              1147 	JMP	ENDLN
08CF BB 79 1B              1148 	MOV	BX,LENID
08D2 8A 07                 1149 	MOV	AL,[BX]
08D4 B1 0C                 1150 	MOV	CL,12
08D6 2C 02                 1151 	SUB	AL,2
08D8 8A E8                 1152 	MOV	CH,AL
08DA 72 E0                 1153 	JC	ERR5
08DC 43                    1154 	INC	BX
08DD 82 3F 66              1155 	CMP	B,[BX],"f"	;See if an 8087 mnemonic
08E0 74 57                 1156 	JZ	NDPOP
08E2 3C 05                 1157 	CMP	AL,5
08E4 73 D6                 1158 	JNC	ERR5
08E6 8A 07                 1159 	MOV	AL,[BX]
08E8 2C 61                 1160 	SUB	AL,'a'
08EA 8A C8                 1161 	MOV	CL,AL
08EC 02 C0                 1162 	ADD	AL,AL
08EE 02 C0                 1163 	ADD	AL,AL
08F0 02 C1                 1164 	ADD	AL,CL
08F2 02 C5                 1165 	ADD	AL,CH
08F4 02 C0                 1166 	ADD	AL,AL
08F6 BB 35 19              1167 	MOV	BX,OPTAB
08F9 8A D0                 1168 	MOV	DL,AL
08FB B6 00                 1169 	MOV	DH,0
08FD 03 DA                 1170 	ADD	BX,DX
08FF 8A 17                 1171 	MOV	DL,[BX]
0901 43                    1172 	INC	BX
0902 8A 37                 1173 	MOV	DH,[BX]
0904 87 DA                 1174 	XCHG	DX,BX
0906 FE C5                 1175 	INC	CH
0908 8A CD                 1176 	MOV	CL,CH
090A 8A 07                 1177 	MOV	AL,[BX]
090C 43                    1178 	INC	BX
090D 0A C0                 1179 	OR	AL,AL
090F 74 1E                 1180 	JZ	OPERR
0911                       1181 FINDOP:
0911 8A E9                 1182 	MOV	CH,CL
0913 9F                    1183 	LAHF
0914 95                    1184 	XCHG	AX,BP
0915 9E                    1185 	SAHF
0916 BA 7B 1B              1186 	MOV	DX,ID+1
0919 E8 3B FF              1187 	CALL	CPSLP
091C 74 16                 1188 	JZ	HAVOP
091E B6 00                 1189 	MOV	DH,0
0920 8A D5                 1190 	MOV	DL,CH
0922 FE C2                 1191 	INC	DL
0924 FE C2                 1192 	INC	DL
0926 03 DA                 1193 	ADD	BX,DX
0928 9F                    1194 	LAHF
0929 95                    1195 	XCHG	AX,BP
092A 9E                    1196 	SAHF
092B FE C8                 1197 	DEC	AL
092D 75 E2                 1198 	JNZ	FINDOP
092F                       1199 OPERR:
092F B1 0C                 1200 	MOV	CL,12
0931 E9 7B F9              1201 	JMP	ERROR
0934                       1202 
0934                       1203 HAVOP:
0934 8A 47 02              1204 	MOV	AL,[BX+2]	;Get opcode
0937 FF 27                 1205 	JMP	[BX]
0939                       1206 
0939                       1207 NDPOP:	;First letter is "F" so must be 8087 opcode ("Numeric Data Processor")
0939 43                    1208 	INC	BX
093A 82 3F 6E              1209 	CMP	B,[BX],"n"	;"No-wait" form?
093D B4 00                 1210 	MOV	AH,0
093F 75 05                 1211 	JNZ	SAVNFLG
0941 B4 01                 1212 	MOV	AH,1
0943 FE C8                 1213 	DEC	AL
0945 43                    1214 	INC	BX		;Skip over the "N"
0946                       1215 SAVNFLG:
0946 88 26 EF 1B           1216 	MOV	[NOWAIT],AH	;0 for wait, 1 for no wait
094A 3C 01                 1217 	CMP	AL,1
094C 72 E1                 1218 	JB	OPERR		;Not enough char left for valid opcode?
094E 3C 05                 1219 	CMP	AL,5
0950 77 DD                 1220 	JA	OPERR		;Too many?
0952 98                    1221 	CBW
0953 92                    1222 	XCHG	AX,DX		;Save length in DX
0954 8B F2                 1223 	MOV	SI,DX
0956 80 08 80              1224 	OR	B,[SI+BX],80H	;Set high bit of last character
0959 8A 07                 1225 	MOV	AL,[BX]		;Get first char of opcode
095B 43                    1226 	INC	BX
095C 2C 61                 1227 	SUB	AL,"a"
095E 72 28                 1228 	JB	TRY2XM1		;Go see if opcode starts with "2"
0960 3C 19                 1229 	CMP	AL,"z"-"a"
0962 77 CB                 1230 	JA	OPERR
0964 98                    1231 	CBW
0965 D1 E0                 1232 	SHL	AX		;Double to index into address table
0967 96                    1233 	XCHG	AX,SI		;Put in index register
0968 8B BC 39 1A           1234 	MOV	DI,[SI+NDPTAB]	;Get start of opcode table for this letter
096C                       1235 LOOKNDP:
096C 8A 25                 1236 	MOV	AH,[DI]		;Number of opcodes starting with this letter
096E 0A E4                 1237 	OR	AH,AH
0970 74 BD                 1238 	JZ	OPERR		;Any start with this letter?
0972                       1239 FNDNDP:
0972 47                    1240 	INC	DI
0973 8B F3                 1241 	MOV	SI,BX		;Pointer to start of opcode
0975 8B CA                 1242 	MOV	CX,DX		;Get length of opcode
0977 F3                    1243 	REPE
0978 A6                    1244 	CMPB			;Compare opcode to table entry
0979 74 16                 1245 	JZ	HAVNDP
097B 4F                    1246 	DEC	DI		;Back up in case that was last letter
097C B0 80                 1247 	MOV	AL,80H		;Look for char with high bit set
097E                       1248 ENDOP:
097E AE                    1249 	SCASB
097F 77 FD                 1250 	JA	ENDOP
0981 47                    1251 	INC	DI		;Skip over info about opcode
0982 FE CC                 1252 	DEC	AH
0984 75 EC                 1253 	JNZ	FNDNDP
0986 EB A7                 1254 	JP	OPERR
0988                       1255 
0988                       1256 TRY2XM1:
0988 3C D1                 1257 	CMP	AL,"2"-"a"
098A 75 A3                 1258 	JNZ	OPERR
098C BF CC 17              1259 	MOV	DI,XM1
098F EB DB                 1260 	JP	LOOKNDP
0991                       1261 
0991                       1262 HAVNDP:
0991 8B F7                 1263 	MOV	SI,DI
0993 82 3E EF 1B 00        1264 	CMP	B,[NOWAIT],0
0998 75 05                 1265 	JNZ	NWAIT
099A B0 9B                 1266 	MOV	AL,9BH		;Wait opcode
099C E8 7C 00              1267 	CALL	PUT
099F                       1268 NWAIT:
099F AD                    1269 	LODW			;Get opcode info
09A0 A8 F8                 1270 	TEST	AL,0F8H		;Any operand bits set?
09A2 74 00                 1271 	JZ	NOOPS		;If no operands, output code
09A4                       1272 NOOPS:
09A4 0C D8                 1273 	OR	AL,0D8H		;ESC hook
09A6 E8 72 00              1274 	CALL	PUT
09A9 8A C4                 1275 	MOV	AL,AH
09AB E9 6D 00              1276 	JMP	PUT
09AE                       1277 
09AE                       1278 GRP1:
09AE B9 09 8A              1279 	MOV	CX,8A09H
09B1 E8 31 F9              1280 	CALL	MROPS
09B4 B9 C6 00              1281 	MOV	CX,0C6H
09B7 8A C7                 1282 	MOV	AL,BH
09B9 3C 00                 1283 	CMP	AL,UNDEFID
09BB 75 03                 1284 	JNZ	L0006
09BD E8 40 00              1285 	CALL	STIMM
09C0                       1286 L0006:	
09C0 24 01                 1287 	AND	AL,1
09C2 74 0A                 1288 	JZ	BYTIMM
09C4 B0 B8                 1289 	MOV	AL,0B8H
09C6 0A C3                 1290 	OR	AL,BL
09C8 E8 50 00              1291 	CALL	PUT
09CB E9 9A 00              1292 	JMP	PUTWOR
09CE                       1293 
09CE                       1294 BYTIMM:
09CE B0 B0                 1295 	MOV	AL,0B0H
09D0 0A C3                 1296 	OR	AL,BL
09D2 E8 46 00              1297 	CALL	PUT
09D5 E9 97 00              1298 PUTBJ:	JMP	PUTBYT
09D8                       1299 
09D8                       1300 IMMED:
09D8 8A C7                 1301 	MOV	AL,BH
09DA 3C 00                 1302 	CMP	AL,UNDEFID
09DC 74 22                 1303 	JZ	STIMM
09DE 8A C3                 1304 	MOV	AL,BL
09E0 0A C0                 1305 	OR	AL,AL
09E2 74 36                 1306 	JZ	RET
09E4 8A C7                 1307 	MOV	AL,BH
09E6 E8 22 00              1308 	CALL	IMM
09E9 0C C0                 1309 	OR	AL,0C0H
09EB E8 2D 00              1310 	CALL	PUT
09EE                       1311 FINIMM:
09EE 8A C1                 1312 	MOV	AL,CL
09F0 59                    1313 	POP	CX
09F1 D1 DE                 1314 	RCR	SI
09F3 A8 01                 1315 	TEST	AL,001H
09F5 D1 D6                 1316 	RCL	SI
09F7 74 DC                 1317 	JZ	PUTBJ
09F9 3C 83                 1318 	CMP	AL,83H
09FB 74 D8                 1319 	JZ	PUTBJ
09FD E9 68 00              1320 	JMP	PUTWOR
0A00                       1321 
0A00                       1322 STIMM:
0A00 A0 6B 1B              1323 	MOV	AL,[FLAG]
0A03 E8 05 00              1324 	CALL	IMM
0A06 E8 D6 00              1325 	CALL	PUTADD
0A09 EB E3                 1326 	JP	FINIMM
0A0B                       1327 
0A0B                       1328 IMM:
0A0B 24 01                 1329 	AND	AL,1
0A0D 0A C1                 1330 	OR	AL,CL
0A0F 8A C8                 1331 	MOV	CL,AL
0A11 E8 07 00              1332 	CALL	PUT
0A14 8A C5                 1333 	MOV	AL,CH
0A16 24 38                 1334 	AND	AL,38H
0A18 0A C3                 1335 	OR	AL,BL
0A1A C3                    1336 	RET
0A1B                       1337 
0A1B                       1338 PUT:
0A1B                       1339 ;Save byte in AL as pure code, with intermediate code bits 00. AL and
0A1B                       1340 ;DI destroyed, no other registers affected.
0A1B 53                    1341 	PUSH	BX
0A1C 51                    1342 	PUSH	CX
0A1D B5 00                 1343 	MOV	CH,0		;Flag as pure code
0A1F E8 03 00              1344 	CALL	GEN
0A22 59                    1345 	POP	CX
0A23 5B                    1346 	POP	BX
0A24 C3                    1347 	RET
0A25                       1348 
0A25                       1349 GEN:
0A25                       1350 ;Save byte of code in AL, given intermediate code bits in bits 7&8 of CH.
0A25 E8 32 00              1351 	CALL	PUTINC		;Save it and bump code pointer
0A28                       1352 GEN1:
0A28 8A 0E D4 1B           1353 	MOV	CL,[RELOC]
0A2C D1 C1                 1354 	ROL	CX
0A2E D1 C1                 1355 	ROL	CX
0A30 88 0E D4 1B           1356 	MOV	[RELOC],CL
0A34 BB D5 1B              1357 	MOV	BX,BCOUNT
0A37 FE 0F                 1358 	DEC	B,[BX]
0A39 75 E9                 1359 	JNZ	RET
0A3B C6 07 04              1360 	MOV	B,[BX],4
0A3E BB D4 1B              1361 	MOV	BX,RELOC
0A41 8A 07                 1362 	MOV	AL,[BX]
0A43 C6 07 00              1363 	MOV	B,[BX],0
0A46 8B 3E F2 1B           1364 	MOV	DI,[IY]
0A4A 88 05                 1365 	MOV	[DI],AL
0A4C 8B 1E D1 1B           1366 	MOV	BX,[CODE]
0A50 89 1E F2 1B           1367 	MOV	[IY],BX
0A54 43                    1368 	INC	BX
0A55 89 1E D1 1B           1369 	MOV	[CODE],BX
0A59 C3                    1370 	RET
0A5A                       1371 
0A5A                       1372 PUTINC:
0A5A FF 06 65 1B           1373 	INC	[PC]
0A5E                       1374 PUTCD:
0A5E 8B 3E D1 1B           1375 	MOV	DI,[CODE]
0A62 AA                    1376 	STOB
0A63 89 3E D1 1B           1377 	MOV	[CODE],DI
0A67 C3                    1378 	RET
0A68                       1379 
0A68                       1380 PUTWOR:
0A68                       1381 ;Save the word value described by [DLABEL] and [DATA] as code. If defined,
0A68                       1382 ;two bytes of pure code will be produced. Otherwise, appropriate intermediate
0A68                       1383 ;code will be generated.
0A68 51                    1384 	PUSH	CX
0A69 B5 80                 1385 	MOV	CH,80H
0A6B 52                    1386 	PUSH	DX
0A6C 53                    1387 	PUSH	BX
0A6D EB 20                 1388 	JP	PUTBW
0A6F                       1389 
0A6F                       1390 PUTBYT:
0A6F                       1391 ;Same as PUTWOR, above, but for byte value.
0A6F 51                    1392 	PUSH	CX
0A70 B5 40                 1393 	MOV	CH,40H
0A72 52                    1394 	PUSH	DX
0A73 53                    1395 	PUSH	BX
0A74 8B 1E 73 1B           1396 	MOV	BX,[DLABEL]
0A78 8A C7                 1397 	MOV	AL,BH
0A7A 0A C3                 1398 	OR	AL,BL
0A7C 75 11                 1399 	JNZ	PUTBW
0A7E 8B 1E 71 1B           1400 	MOV	BX,[DATA]
0A82 0A C7                 1401 	OR	AL,BH
0A84 74 09                 1402 	JZ	PUTBW
0A86 FE C7                 1403 	INC	BH
0A88 74 05                 1404 	JZ	PUTBW
0A8A B1 1F                 1405 	MOV	CL,31
0A8C E9 20 F8              1406 	JMP	ERROR
0A8F                       1407 PUTBW:
0A8F 8B 16 73 1B           1408 	MOV	DX,[DLABEL]
0A93 8B 1E 71 1B           1409 	MOV	BX,[DATA]
0A97                       1410 PUTCHK:
0A97 8A C6                 1411 	MOV	AL,DH
0A99 0A C2                 1412 	OR	AL,DL
0A9B 74 29                 1413 	JZ	NOUNDEF
0A9D 8A C2                 1414 	MOV	AL,DL
0A9F E8 BC FF              1415 	CALL	PUTCD
0AA2 8A C6                 1416 	MOV	AL,DH
0AA4 E8 B7 FF              1417 	CALL	PUTCD
0AA7 8A C3                 1418 	MOV	AL,BL
0AA9 E8 AE FF              1419 	CALL	PUTINC
0AAC 8A C7                 1420 	MOV	AL,BH
0AAE D1 DE                 1421 	RCR	SI
0AB0 F6 C5 80              1422 	TEST	CH,080H
0AB3 D1 D6                 1423 	RCL	SI
0AB5 74 05                 1424 	JZ	SMPUT
0AB7 E8 6B FF              1425 	CALL	GEN
0ABA EB 06                 1426 	JP	PRET
0ABC                       1427 SMPUT:
0ABC E8 9F FF              1428 	CALL	PUTCD
0ABF E8 66 FF              1429 	CALL	GEN1
0AC2                       1430 PRET:
0AC2 5B                    1431 	POP	BX
0AC3 5A                    1432 	POP	DX
0AC4 59                    1433 	POP	CX
0AC5 C3                    1434 	RET
0AC6                       1435 
0AC6                       1436 NOUNDEF:
0AC6 8A C3                 1437 	MOV	AL,BL
0AC8 8A CF                 1438 	MOV	CL,BH
0ACA 51                    1439 	PUSH	CX
0ACB B5 00                 1440 	MOV	CH,0
0ACD E8 55 FF              1441 	CALL	GEN
0AD0 59                    1442 	POP	CX
0AD1 8A C1                 1443 	MOV	AL,CL
0AD3 F6 C5 80              1444 	TEST	CH,080H
0AD6 B5 00                 1445 	MOV	CH,0
0AD8 74 E8                 1446 	JZ	PRET
0ADA E8 48 FF              1447 	CALL	GEN
0ADD EB E3                 1448 	JP	PRET
0ADF                       1449 
0ADF                       1450 PUTADD:
0ADF                       1451 ;Save complete addressing mode. Addressing mode is in AL; if this is a register
0ADF                       1452 ;operation (>=C0), then the one byte will be saved as pure code. Otherwise,
0ADF                       1453 ;the details of the addressing mode will be investigated and the optional one-
0ADF                       1454 ;or two-byte displacement will be added, as described by [ADDR] and [ALABEL].
0ADF 51                    1455 	PUSH	CX
0AE0 52                    1456 	PUSH	DX
0AE1 53                    1457 	PUSH	BX
0AE2 B5 00                 1458 	MOV	CH,0
0AE4 8A C8                 1459 	MOV	CL,AL
0AE6 E8 3C FF              1460 	CALL	GEN		;Save the addressing mode as pure code
0AE9 8A C1                 1461 	MOV	AL,CL
0AEB B5 80                 1462 	MOV	CH,80H
0AED 24 C7                 1463 	AND	AL,0C7H
0AEF 3C 06                 1464 	CMP	AL,6
0AF1 74 0A                 1465 	JZ	TWOBT		;Direct address?
0AF3 24 C0                 1466 	AND	AL,0C0H
0AF5 74 CB                 1467 	JZ	PRET		;Indirect through reg, no displacement?
0AF7 3C C0                 1468 	CMP	AL,0C0H
0AF9 74 C7                 1469 	JZ	PRET		;Register to register operation?
0AFB 8A E8                 1470 	MOV	CH,AL		;Save whether one- or two-byte displacement
0AFD                       1471 TWOBT:
0AFD 8B 1E 6D 1B           1472 	MOV	BX,[ADDR]
0B01 8B 16 6F 1B           1473 	MOV	DX,[ALABEL]
0B05 EB 90                 1474 	JP	PUTCHK
0B07                       1475 
0B07                       1476 GRP2:
0B07 E8 B7 F8              1477 	CALL	GETOP
0B0A B9 30 FF              1478 	MOV	CX,0FF30H
0B0D 3C 00                 1479 	CMP	AL,UNDEFID
0B0F 74 14                 1480 	JZ	PMEM
0B11 B5 50                 1481 	MOV	CH,50H
0B13 3C 03                 1482 	CMP	AL,XREG
0B15 74 1A                 1483 	JZ	PXREG
0B17 B5 06                 1484 	MOV	CH,6
0B19 3C 04                 1485 	CMP	AL,SREG
0B1B 75 03                 1486 	JNZ	$+5
0B1D E9 2C 04              1487 	JMP	PACKREG
0B20 B1 14                 1488 	MOV	CL,20
0B22 E9 8A F7              1489 	JMP	ERROR
0B25                       1490 
0B25                       1491 PMEM:
0B25 8A C5                 1492 	MOV	AL,CH
0B27 E8 F1 FE              1493 	CALL	PUT
0B2A 8A C1                 1494 	MOV	AL,CL
0B2C 0A C2                 1495 	OR	AL,DL
0B2E E9 AE FF              1496 	JMP	PUTADD
0B31                       1497 
0B31                       1498 PXREG:
0B31 8A C5                 1499 	MOV	AL,CH
0B33 0A C2                 1500 	OR	AL,DL
0B35 E9 E3 FE              1501 	JMP	PUT
0B38                       1502 
0B38                       1503 GRP3:
0B38 E8 86 F8              1504 	CALL	GETOP
0B3B 52                    1505 	PUSH	DX
0B3C E8 79 F8              1506 	CALL	GETOP2
0B3F 5B                    1507 	POP	BX
0B40 B9 14 86              1508 	MOV	CX,8614H
0B43 B0 04                 1509 	MOV	AL,SREG
0B45 3A C7                 1510 	CMP	AL,BH
0B47 74 4C                 1511 	JZ	ERR6
0B49 3A C6                 1512 	CMP	AL,DH
0B4B 74 48                 1513 	JZ	ERR6
0B4D B0 01                 1514 	MOV	AL,CONST
0B4F 3A C7                 1515 	CMP	AL,BH
0B51 74 42                 1516 	JZ	ERR6
0B53 3A C6                 1517 	CMP	AL,DH
0B55 74 3E                 1518 	JZ	ERR6
0B57 B0 00                 1519 	MOV	AL,UNDEFID
0B59 3A C7                 1520 	CMP	AL,BH
0B5B 74 2D                 1521 	JZ	EXMEM
0B5D 3A C6                 1522 	CMP	AL,DH
0B5F 74 2B                 1523 	JZ	EXMEM1
0B61 8A C7                 1524 	MOV	AL,BH
0B63 3A C6                 1525 	CMP	AL,DH
0B65 B1 16                 1526 	MOV	CL,22
0B67 75 2C                 1527 	JNZ	ERR6
0B69 3C 03                 1528 	CMP	AL,XREG
0B6B 74 03                 1529 	JZ	L0008
0B6D E8 AE F7              1530 	CALL	RR1
0B70                       1531 L0008:			;RR1 never returns
0B70 8A C3                 1532 	MOV	AL,BL
0B72 0A C0                 1533 	OR	AL,AL
0B74 74 0D                 1534 	JZ	EXACC
0B76 87 DA                 1535 	XCHG	DX,BX
0B78 8A C3                 1536 	MOV	AL,BL
0B7A 0A C0                 1537 	OR	AL,AL
0B7C 8A C7                 1538 	MOV	AL,BH
0B7E 74 03                 1539 	JZ	EXACC
0B80 E8 9B F7              1540 	CALL	RR1
0B83                       1541 EXACC:
0B83 B0 90                 1542 	MOV	AL,90H
0B85 0A C2                 1543 	OR	AL,DL
0B87 E9 91 FE              1544 	JMP	PUT
0B8A                       1545 
0B8A                       1546 EXMEM:
0B8A 87 DA                 1547 	XCHG	DX,BX
0B8C                       1548 EXMEM1:
0B8C 3A C7                 1549 	CMP	AL,BH
0B8E 74 05                 1550 	JZ	ERR6
0B90 B1 01                 1551 	MOV	CL,1	;Flag word as OK
0B92 E8 03 F8              1552 	CALL	NOTAC	;NOTAC never returns
0B95 E9 17 F7              1553 ERR6:	JMP	ERROR
0B98                       1554 
0B98                       1555 GRP4:
0B98 9F                    1556 	LAHF
0B99 86 E0                 1557 	XCHG	AH,AL
0B9B 50                    1558 	PUSH	AX
0B9C 86 E0                 1559 	XCHG	AH,AL
0B9E E8 20 F8              1560 	CALL	GETOP
0BA1 59                    1561 	POP	CX
0BA2 3C 01                 1562 	CMP	AL,CONST
0BA4 74 13                 1563 	JZ	FIXED
0BA6 2C 03                 1564 	SUB	AL,XREG
0BA8 FE CA                 1565 	DEC	DL
0BAA FE CA                 1566 	DEC	DL
0BAC 0A C2                 1567 	OR	AL,DL
0BAE B1 14                 1568 	MOV	CL,20
0BB0 75 E3                 1569 	JNZ	ERR6
0BB2 8A C5                 1570 	MOV	AL,CH
0BB4 0C 08                 1571 	OR	AL,8
0BB6 E9 62 FE              1572 	JMP	PUT
0BB9                       1573 FIXED:
0BB9 8A C5                 1574 	MOV	AL,CH
0BBB E8 5D FE              1575 	CALL	PUT
0BBE E9 AE FE              1576 	JMP	PUTBYT
0BC1                       1577 
0BC1                       1578 GRP5:
0BC1 9F                    1579 	LAHF
0BC2 86 E0                 1580 	XCHG	AH,AL
0BC4 50                    1581 	PUSH	AX
0BC5 86 E0                 1582 	XCHG	AH,AL
0BC7 E8 F7 F7              1583 	CALL	GETOP
0BCA 3C 01                 1584 	CMP	AL,CONST
0BCC 75 C7                 1585 	JNZ	ERR6
0BCE 8B 1E 73 1B           1586 	MOV	BX,[DLABEL]
0BD2 8A C7                 1587 	MOV	AL,BH
0BD4 0A C3                 1588 	OR	AL,BL
0BD6 B1 1E                 1589 	MOV	CL,30
0BD8 75 BB                 1590 	JNZ	ERR6
0BDA 8B 1E 71 1B           1591 	MOV	BX,[DATA]
0BDE 58                    1592 	POP	AX
0BDF 86 E0                 1593 	XCHG	AH,AL
0BE1 9E                    1594 	SAHF
0BE2 0A C0                 1595 	OR	AL,AL
0BE4 74 4B                 1596 	JZ	ORG
0BE6 FE C8                 1597 	DEC	AL
0BE8 74 19                 1598 	JZ	DSJ
0BEA FE C8                 1599 	DEC	AL
0BEC 74 2D                 1600 	JZ	EQU
0BEE FE C8                 1601 	DEC	AL
0BF0 74 03                 1602 	JZ	$+5
0BF2 E9 BA 03              1603 	JMP	IF
0BF5                       1604 PUTOP:
0BF5 B0 FD                 1605 	MOV	AL,-3
0BF7 EB 3E                 1606 	JP	NEWLOC
0BF9                       1607 ALIGN:
0BF9 A0 65 1B              1608 	MOV	AL,[PC]
0BFC 24 01                 1609 	AND	AL,1
0BFE 74 30                 1610 	JZ	RET
0C00 BB 01 00              1611 	MOV	BX,1
0C03                       1612 DSJ:
0C03 87 DA                 1613 	XCHG	DX,BX
0C05 8B 1E 65 1B           1614 	MOV	BX,[PC]
0C09 9F                    1615 	LAHF
0C0A 03 DA                 1616 	ADD	BX,DX
0C0C D1 DE                 1617 	RCR	SI
0C0E 9E                    1618 	SAHF
0C0F D1 D6                 1619 	RCL	SI
0C11 89 1E 65 1B           1620 	MOV	[PC],BX
0C15 87 DA                 1621 	XCHG	DX,BX
0C17 B0 FC                 1622 	MOV	AL,-4
0C19 EB 1C                 1623 	JP	NEWLOC
0C1B                       1624 EQU:
0C1B 87 DA                 1625 	XCHG	DX,BX
0C1D 8B 1E 69 1B           1626 	MOV	BX,[LABPT]
0C21 8A C7                 1627 	MOV	AL,BH
0C23 0A C3                 1628 	OR	AL,BL
0C25 B1 22                 1629 	MOV	CL,34
0C27 74 29                 1630 	JZ	ERR7
0C29 88 17                 1631 	MOV	[BX],DL
0C2B 9F                    1632 	LAHF
0C2C 43                    1633 	INC	BX
0C2D 9E                    1634 	SAHF
0C2E 88 37                 1635 	MOV	[BX],DH
0C30 C3                    1636 	RET
0C31                       1637 ORG:
0C31 89 1E 65 1B           1638 	MOV	[PC],BX
0C35 B0 FE                 1639 	MOV	AL,-2
0C37                       1640 NEWLOC:
0C37 E8 24 FE              1641 	CALL	PUTCD
0C3A 8A C3                 1642 	MOV	AL,BL
0C3C E8 1F FE              1643 	CALL	PUTCD
0C3F 8A C7                 1644 	MOV	AL,BH
0C41 E8 1A FE              1645 	CALL	PUTCD
0C44 B5 C0                 1646 	MOV	CH,0C0H
0C46 E9 DF FD              1647 	JMP	GEN1
0C49                       1648 GRP6:
0C49 8A E8                 1649 	MOV	CH,AL
0C4B B1 04                 1650 	MOV	CL,4
0C4D E8 95 F6              1651 	CALL	MROPS
0C50 B1 17                 1652 	MOV	CL,23
0C52 E9 5A F6              1653 ERR7:	JMP	ERROR
0C55                       1654 GRP7:
0C55 8A E8                 1655 	MOV	CH,AL
0C57 B1 01                 1656 	MOV	CL,1
0C59 E8 89 F6              1657 	CALL	MROPS
0C5C B1 80                 1658 	MOV	CL,80H
0C5E 8B 16 73 1B           1659 	MOV	DX,[DLABEL]
0C62 8A C6                 1660 	MOV	AL,DH
0C64 0A C2                 1661 	OR	AL,DL
0C66 75 12                 1662 	JNZ	ACCJ
0C68 87 DA                 1663 	XCHG	DX,BX
0C6A 8B 1E 71 1B           1664 	MOV	BX,[DATA]
0C6E E8 99 F8              1665 	CALL	SIGNEXT
0C71 87 DA                 1666 	XCHG	DX,BX
0C73 75 05                 1667 	JNZ	ACCJ
0C75 9F                    1668 	LAHF
0C76 80 C9 02              1669 	OR	CL,002H
0C79 9E                    1670 	SAHF
0C7A E9 C5 00              1671 ACCJ:	JMP	ACCIMM
0C7D                       1672 GRP8:
0C7D 8A C8                 1673 	MOV	CL,AL
0C7F B5 FE                 1674 	MOV	CH,0FEH
0C81 EB 04                 1675 	JP	ONEOP
0C83                       1676 GRP9:
0C83 8A C8                 1677 	MOV	CL,AL
0C85 B5 F6                 1678 	MOV	CH,0F6H
0C87                       1679 ONEOP:
0C87 51                    1680 	PUSH	CX
0C88 E8 36 F7              1681 	CALL	GETOP
0C8B                       1682 ONE:
0C8B B1 1A                 1683 	MOV	CL,26
0C8D 3C 01                 1684 	CMP	AL,CONST
0C8F 74 C1                 1685 	JZ	ERR7
0C91 3C 04                 1686 	CMP	AL,SREG
0C93 B1 16                 1687 	MOV	CL,22
0C95 74 BB                 1688 	JZ	ERR7
0C97 59                    1689 	POP	CX
0C98 3C 00                 1690 	CMP	AL,UNDEFID
0C9A 74 16                 1691 	JZ	MOP
0C9C 24 01                 1692 	AND	AL,1
0C9E 74 25                 1693 	JZ	ROP
0CA0 D1 DE                 1694 	RCR	SI
0CA2 F6 C1 01              1695 	TEST	CL,001H
0CA5 D1 D6                 1696 	RCL	SI
0CA7 74 1C                 1697 	JZ	ROP
0CA9 8A C1                 1698 	MOV	AL,CL
0CAB 24 F8                 1699 	AND	AL,0F8H
0CAD 0A C2                 1700 	OR	AL,DL
0CAF E9 69 FD              1701 	JMP	PUT
0CB2                       1702 MOP:
0CB2 A0 6B 1B              1703 	MOV	AL,[FLAG]
0CB5 24 01                 1704 	AND	AL,1
0CB7 0A C5                 1705 	OR	AL,CH
0CB9 E8 5F FD              1706 	CALL	PUT
0CBC 8A C1                 1707 	MOV	AL,CL
0CBE 24 38                 1708 	AND	AL,38H
0CC0 0A C2                 1709 	OR	AL,DL
0CC2 E9 1A FE              1710 	JMP	PUTADD
0CC5                       1711 ROP:
0CC5 0A C5                 1712 	OR	AL,CH
0CC7 E8 51 FD              1713 	CALL	PUT
0CCA 8A C1                 1714 	MOV	AL,CL
0CCC 24 38                 1715 	AND	AL,38H
0CCE 0C C0                 1716 	OR	AL,0C0H
0CD0 0A C2                 1717 	OR	AL,DL
0CD2 E9 46 FD              1718 	JMP	PUT
0CD5                       1719 GRP10:
0CD5 8A C8                 1720 	MOV	CL,AL
0CD7 B5 F6                 1721 	MOV	CH,0F6H
0CD9 51                    1722 	PUSH	CX
0CDA E8 E4 F6              1723 	CALL	GETOP
0CDD B1 14                 1724 	MOV	CL,20
0CDF 8A C2                 1725 	MOV	AL,DL
0CE1 0A C0                 1726 	OR	AL,AL
0CE3 75 08                 1727 	JNZ	ERRJ1
0CE5 8A C6                 1728 	MOV	AL,DH
0CE7 3C 03                 1729 	CMP	AL,XREG
0CE9 74 04                 1730 	JZ	G10
0CEB 3C 02                 1731 	CMP	AL,REG
0CED 75 77                 1732 ERRJ1:	JNZ	ERR8
0CEF                       1733 G10:
0CEF 9F                    1734 	LAHF
0CF0 86 E0                 1735 	XCHG	AH,AL
0CF2 50                    1736 	PUSH	AX
0CF3 86 E0                 1737 	XCHG	AH,AL
0CF5 E8 C9 F6              1738 	CALL	GETOP
0CF8 58                    1739 	POP	AX
0CF9 86 E0                 1740 	XCHG	AH,AL
0CFB 9E                    1741 	SAHF
0CFC 24 01                 1742 	AND	AL,1
0CFE A2 6B 1B              1743 	MOV	[FLAG],AL
0D01 8A C6                 1744 	MOV	AL,DH
0D03 EB 86                 1745 ONEJ:	JP	ONE
0D05                       1746 GRP11:
0D05 E8 13 FD              1747 	CALL	PUT
0D08 B0 0A                 1748 	MOV	AL,0AH
0D0A E9 0E FD              1749 	JMP	PUT
0D0D                       1750 GRP12:
0D0D 8A C8                 1751 	MOV	CL,AL
0D0F B5 D0                 1752 	MOV	CH,0D0H
0D11 51                    1753 	PUSH	CX
0D12 E8 AC F6              1754 	CALL	GETOP
0D15 A0 CB 1B              1755 	MOV	AL,[SYM]
0D18 3C 2C                 1756 	CMP	AL,','
0D1A 8A C6                 1757 	MOV	AL,DH
0D1C 75 E5                 1758 	JNZ	ONEJ
0D1E 52                    1759 	PUSH	DX
0D1F E8 9F F6              1760 	CALL	GETOP
0D22 2C 02                 1761 	SUB	AL,REG
0D24 B1 14                 1762 	MOV	CL,20
0D26 FE CA                 1763 	DEC	DL
0D28 0A C2                 1764 	OR	AL,DL
0D2A 75 3A                 1765 	JNZ	ERR8
0D2C 5A                    1766 	POP	DX
0D2D 8A C6                 1767 	MOV	AL,DH
0D2F 59                    1768 	POP	CX
0D30 9F                    1769 	LAHF
0D31 80 CD 02              1770 	OR	CH,002H
0D34 9E                    1771 	SAHF
0D35 51                    1772 	PUSH	CX
0D36 E9 52 FF              1773 	JMP	ONE
0D39                       1774 GRP13:
0D39 8A E8                 1775 	MOV	CH,AL
0D3B B1 01                 1776 	MOV	CL,1
0D3D E8 A5 F5              1777 	CALL	MROPS
0D40 B1 80                 1778 	MOV	CL,80H
0D42                       1779 ACCIMM:
0D42 E8 93 FC              1780 	CALL	IMMED
0D45 80 CD 04              1781 	OR	CH,004H
0D48 80 E5 FD              1782 	AND	CH,0FDH
0D4B                       1783 AIMM:
0D4B 8A C7                 1784 	MOV	AL,BH
0D4D 24 01                 1785 	AND	AL,1
0D4F 9F                    1786 	LAHF
0D50 86 E0                 1787 	XCHG	AH,AL
0D52 50                    1788 	PUSH	AX
0D53 86 E0                 1789 	XCHG	AH,AL
0D55 0A C5                 1790 	OR	AL,CH
0D57 E8 C1 FC              1791 	CALL	PUT
0D5A 58                    1792 	POP	AX
0D5B 86 E0                 1793 	XCHG	AH,AL
0D5D 9E                    1794 	SAHF
0D5E 75 03                 1795 	JNZ	$+5
0D60 E9 0C FD              1796 	JMP	PUTBYT
0D63 E9 02 FD              1797 	JMP	PUTWOR
0D66 E9 46 F5              1798 ERR8:	JMP	ERROR
0D69                       1799 GRP14:
0D69 9F                    1800 	LAHF
0D6A 86 E0                 1801 	XCHG	AH,AL
0D6C 50                    1802 	PUSH	AX
0D6D 86 E0                 1803 	XCHG	AH,AL
0D6F E8 4F F6              1804 	CALL	GETOP
0D72 3C 01                 1805 	CMP	AL,CONST
0D74 74 31                 1806 	JZ	DIRECT
0D76 B1 14                 1807 	MOV	CL,20
0D78 3C 02                 1808 	CMP	AL,REG
0D7A 74 EA                 1809 	JZ	ERR8
0D7C 3C 04                 1810 	CMP	AL,SREG
0D7E 74 E6                 1811 	JZ	ERR8
0D80 3C 03                 1812 	CMP	AL,XREG
0D82 75 06                 1813 	JNZ	NOTRG
0D84 80 CA 40              1814 	OR	DL,040H
0D87 80 CA 80              1815 	OR	DL,080H
0D8A                       1816 NOTRG:
0D8A B0 FF                 1817 	MOV	AL,0FFH
0D8C E8 8C FC              1818 	CALL	PUT
0D8F 58                    1819 	POP	AX
0D90 86 E0                 1820 	XCHG	AH,AL
0D92 9E                    1821 	SAHF
0D93 24 38                 1822 	AND	AL,38H
0D95 0A C2                 1823 	OR	AL,DL
0D97 8A E8                 1824 	MOV	CH,AL
0D99 A0 6C 1B              1825 	MOV	AL,[LONG]
0D9C 0A C0                 1826 	OR	AL,AL
0D9E 8A C5                 1827 	MOV	AL,CH
0DA0 74 02                 1828 	JZ	PUTADDJ
0DA2 24 F7                 1829 	AND	AL,0F7H
0DA4                       1830 PUTADDJ:
0DA4 E9 38 FD              1831 	JMP	PUTADD
0DA7                       1832 DIRECT:
0DA7 A0 CB 1B              1833 	MOV	AL,[SYM]
0DAA 3C 2C                 1834 	CMP	AL,','
0DAC 74 22                 1835 	JZ	LONGJ
0DAE 58                    1836 	POP	AX
0DAF 86 E0                 1837 	XCHG	AH,AL
0DB1 9E                    1838 	SAHF
0DB2 FE C8                 1839 	DEC	AL
0DB4 3C E9                 1840 	CMP	AL,0E9H
0DB6 74 02                 1841 	JZ	GOTOP
0DB8 B0 E8                 1842 	MOV	AL,0E8H
0DBA                       1843 GOTOP:
0DBA E8 5E FC              1844 	CALL	PUT
0DBD 8B 1E 71 1B           1845 	MOV	BX,[DATA]
0DC1 8B 16 65 1B           1846 	MOV	DX,[PC]
0DC5 42                    1847 	INC	DX
0DC6 42                    1848 	INC	DX
0DC7 2B DA                 1849 	SUB	BX,DX
0DC9 89 1E 71 1B           1850 	MOV	[DATA],BX
0DCD E9 98 FC              1851 	JMP	PUTWOR
0DD0                       1852 LONGJ:
0DD0 58                    1853 	POP	AX
0DD1 86 E0                 1854 	XCHG	AH,AL
0DD3 9E                    1855 	SAHF
0DD4 E8 44 FC              1856 	CALL	PUT
0DD7 E8 8E FC              1857 	CALL	PUTWOR
0DDA E8 E4 F5              1858 	CALL	GETOP
0DDD B1 14                 1859 	MOV	CL,20
0DDF 3C 01                 1860 	CMP	AL,CONST
0DE1 75 83                 1861 	JNZ	ERR8
0DE3 E9 82 FC              1862 	JMP	PUTWOR
0DE6                       1863 GRP16:
0DE6 9F                    1864 	LAHF
0DE7 86 E0                 1865 	XCHG	AH,AL
0DE9 50                    1866 	PUSH	AX
0DEA 86 E0                 1867 	XCHG	AH,AL
0DEC E8 B8 F7              1868 	CALL	GETSYM
0DEF 3C 05                 1869 	CMP	AL,5
0DF1 74 1C                 1870 	JZ	LONGR
0DF3 3C 0D                 1871 	CMP	AL,EOL
0DF5 74 3F                 1872 	JZ	NODEC
0DF7 3C 3B                 1873 	CMP	AL,';'
0DF9 74 3B                 1874 	JZ	NODEC
0DFB                       1875 GETSP:
0DFB E8 C6 F5              1876 	CALL	GETOP1
0DFE 59                    1877 	POP	CX
0DFF 3C 01                 1878 	CMP	AL,CONST
0E01 B1 14                 1879 	MOV	CL,20
0E03 75 6A                 1880 	JNZ	ERR9
0E05 8A C5                 1881 	MOV	AL,CH
0E07 24 FE                 1882 	AND	AL,0FEH
0E09 E8 0F FC              1883 	CALL	PUT
0E0C E9 59 FC              1884 	JMP	PUTWOR
0E0F                       1885 LONGR:
0E0F A0 6C 1B              1886 	MOV	AL,[LONG]
0E12 0A C0                 1887 	OR	AL,AL
0E14 75 0C                 1888 	JNZ	NOTLON
0E16 58                    1889 	POP	AX
0E17 86 E0                 1890 	XCHG	AH,AL
0E19 9E                    1891 	SAHF
0E1A 0C 08                 1892 	OR	AL,8
0E1C 9F                    1893 	LAHF
0E1D 86 E0                 1894 	XCHG	AH,AL
0E1F 50                    1895 	PUSH	AX
0E20 86 E0                 1896 	XCHG	AH,AL
0E22                       1897 NOTLON:
0E22 E8 82 F7              1898 	CALL	GETSYM
0E25 3C 0D                 1899 	CMP	AL,EOL
0E27 74 35                 1900 	JZ	DORET
0E29 3C 3B                 1901 	CMP	AL,';'
0E2B 74 31                 1902 	JZ	DORET
0E2D 3C 2C                 1903 	CMP	AL,','
0E2F 75 03                 1904 	JNZ	L0011
0E31 E8 73 F7              1905 	CALL	GETSYM
0E34                       1906 L0011:	
0E34 EB C5                 1907 	JP	GETSP
0E36                       1908 NODEC:
0E36 8B 1E 65 1B           1909 	MOV	BX,[PC]
0E3A 89 1E E8 1B           1910 	MOV	[LSTRET],BX
0E3E 87 DA                 1911 	XCHG	DX,BX
0E40 8B 1E EA 1B           1912 	MOV	BX,[RETPT]
0E44 8A C7                 1913 	MOV	AL,BH
0E46 0A C3                 1914 	OR	AL,BL
0E48 74 14                 1915 	JZ	DORET
0E4A C6 07 01              1916 	MOV	B,[BX],1
0E4D 9F                    1917 	LAHF
0E4E 43                    1918 	INC	BX
0E4F 9E                    1919 	SAHF
0E50 88 17                 1920 	MOV	[BX],DL
0E52 9F                    1921 	LAHF
0E53 43                    1922 	INC	BX
0E54 9E                    1923 	SAHF
0E55 88 37                 1924 	MOV	[BX],DH
0E57 BB 00 00              1925 	MOV	BX,0
0E5A 89 1E EA 1B           1926 	MOV	[RETPT],BX
0E5E                       1927 DORET:
0E5E 58                    1928 	POP	AX
0E5F 86 E0                 1929 	XCHG	AH,AL
0E61 9E                    1930 	SAHF
0E62 E9 B6 FB              1931 	JMP	PUT
0E65                       1932 GRP17:
0E65 E8 B3 FB              1933 	CALL	PUT
0E68 E8 56 F5              1934 	CALL	GETOP
0E6B 3C 01                 1935 	CMP	AL,CONST
0E6D B1 14                 1936 	MOV	CL,20
0E6F 75 29                 1937 ERR9:	JNZ	ERR10
0E71 8B 1E 71 1B           1938 	MOV	BX,[DATA]
0E75 8B 16 65 1B           1939 	MOV	DX,[PC]
0E79 9F                    1940 	LAHF
0E7A 42                    1941 	INC	DX
0E7B 9E                    1942 	SAHF
0E7C 1B DA                 1943 	SBB	BX,DX
0E7E 89 1E 71 1B           1944 	MOV	[DATA],BX
0E82 E8 EA FB              1945 	CALL	PUTBYT
0E85 8B 1E 73 1B           1946 	MOV	BX,[DLABEL]
0E89 8A C7                 1947 	MOV	AL,BH
0E8B 0A C3                 1948 	OR	AL,BL
0E8D 75 0E                 1949 	JNZ	RET
0E8F 8B 1E 71 1B           1950 	MOV	BX,[DATA]
0E93 E8 74 F6              1951 	CALL	SIGNEXT
0E96 74 05                 1952 	JZ	RET
0E98 B1 1F                 1953 	MOV	CL,31
0E9A E9 12 F4              1954 ERR10:	JMP	ERROR
0E9D C3                    1955 	RET
0E9E                       1956 GRP18:
0E9E E8 20 F5              1957 	CALL	GETOP
0EA1 3C 01                 1958 	CMP	AL,CONST
0EA3 B1 14                 1959 	MOV	CL,20
0EA5 75 F3                 1960 	JNZ	ERR10
0EA7 8B 1E 73 1B           1961 	MOV	BX,[DLABEL]
0EAB 8A C7                 1962 	MOV	AL,BH
0EAD 0A C3                 1963 	OR	AL,BL
0EAF 75 10                 1964 	JNZ	GENINT
0EB1 8B 1E 71 1B           1965 	MOV	BX,[DATA]
0EB5 BA 03 00              1966 	MOV	DX,3
0EB8 1B DA                 1967 	SBB	BX,DX
0EBA 75 05                 1968 	JNZ	GENINT
0EBC B0 CC                 1969 	MOV	AL,0CCH
0EBE E9 5A FB              1970 	JMP	PUT
0EC1                       1971 GENINT:
0EC1 B0 CD                 1972 	MOV	AL,0CDH
0EC3 E8 55 FB              1973 	CALL	PUT
0EC6 E9 A6 FB              1974 	JMP	PUTBYT
0EC9                       1975 
0EC9                       1976 GRP19:	;ESC opcode
0EC9 E8 F5 F4              1977 	CALL	GETOP
0ECC B1 14                 1978 	MOV	CL,20
0ECE 3C 01                 1979 	CMP	AL,CONST
0ED0 75 39                 1980 	JNZ	ERRJ		;First operand must be immediate
0ED2 B1 1E                 1981 	MOV	CL,1EH
0ED4 F7 06 73 1B FF FF     1982 	TEST	[DLABEL],-1	;See if all labels have been defined
0EDA 75 2F                 1983 	JNZ	ERRJ
0EDC A1 71 1B              1984 	MOV	AX,[DATA]
0EDF 3D 40 00              1985 	CMP	AX,64		;Must only be 6 bits
0EE2 B1 1F                 1986 	MOV	CL,1FH
0EE4 73 25                 1987 	JNB	ERRJ
0EE6 8A D8                 1988 	MOV	BL,AL		;Save for second byte
0EE8 D0 E8                 1989 	SHR	AL
0EEA D0 E8                 1990 	SHR	AL
0EEC D0 E8                 1991 	SHR	AL
0EEE 0C D8                 1992 	OR	AL,0D8H		;ESC opcode
0EF0 E8 28 FB              1993 	CALL	PUT
0EF3 53                    1994 	PUSH	BX
0EF4 E8 C1 F4              1995 	CALL	GETOP2
0EF7 5B                    1996 	POP	BX
0EF8 80 E3 07              1997 	AND	BL,7		;Low 3 bits of first operand
0EFB D0 E3                 1998 	SHL	BL
0EFD D0 E3                 1999 	SHL	BL
0EFF D0 E3                 2000 	SHL	BL
0F01 3C 00                 2001 	CMP	AL,UNDEFID	;Check for memory operand
0F03 74 09                 2002 	JZ	ESCMEM
0F05 3C 01                 2003 	CMP	AL,CONST	;Check for another immediate
0F07 74 0C                 2004 	JZ	ESCIMM
0F09 B1 14                 2005 	MOV	CL,20
0F0B E9 A1 F3              2006 ERRJ:	JMP	ERROR
0F0E                       2007 
0F0E                       2008 ESCMEM:
0F0E 0A DA                 2009 	OR	BL,DL		;Combine mode with first operand
0F10 8A C3                 2010 	MOV	AL,BL
0F12 E9 CA FB              2011 	JMP	PUTADD
0F15                       2012 
0F15                       2013 ESCIMM:
0F15 B1 1E                 2014 	MOV	CL,1EH
0F17 F7 06 73 1B FF FF     2015 	TEST	[DLABEL],-1	;See if second operand is fully defined
0F1D 75 EC                 2016 	JNZ	ERRJ
0F1F A1 71 1B              2017 	MOV	AX,[DATA]
0F22 B1 1F                 2018 	MOV	CL,1FH
0F24 3D 08 00              2019 	CMP	AX,8		;Must only be 3 bit value
0F27 73 E2                 2020 	JNB	ERRJ
0F29 0A C3                 2021 	OR	AL,BL		;Combine first and second operands
0F2B 0C C0                 2022 	OR	AL,0C0H		;Force "register" mode
0F2D E9 EB FA              2023 	JMP	PUT
0F30                       2024 
0F30                       2025 GRP20:
0F30 8A E8                 2026 	MOV	CH,AL
0F32 B1 01                 2027 	MOV	CL,1
0F34 E8 AE F3              2028 	CALL	MROPS
0F37 B1 F6                 2029 	MOV	CL,0F6H
0F39 E8 9C FA              2030 	CALL	IMMED
0F3C B5 A8                 2031 	MOV	CH,0A8H
0F3E E9 0A FE              2032 	JMP	AIMM
0F41                       2033 GRP21:
0F41 E8 7D F4              2034 	CALL	GETOP
0F44 3C 04                 2035 	CMP	AL,SREG
0F46 B1 1C                 2036 	MOV	CL,28
0F48 75 C1                 2037 	JNZ	ERRJ
0F4A B5 26                 2038 	MOV	CH,26H
0F4C                       2039 PACKREG:
0F4C 8A C2                 2040 	MOV	AL,DL
0F4E 02 C0                 2041 	ADD	AL,AL
0F50 02 C0                 2042 	ADD	AL,AL
0F52 02 C0                 2043 	ADD	AL,AL
0F54 0A C5                 2044 	OR	AL,CH
0F56 E9 C2 FA              2045 	JMP	PUT
0F59                       2046 GRP22:
0F59 E8 65 F4              2047 	CALL	GETOP
0F5C B9 00 8F              2048 	MOV	CX,8F00H
0F5F 3C 00                 2049 	CMP	AL,UNDEFID
0F61 75 03                 2050 	JNZ	$+5
0F63 E9 BF FB              2051 	JMP	PMEM
0F66 B5 58                 2052 	MOV	CH,58H
0F68 3C 03                 2053 	CMP	AL,XREG
0F6A 75 03                 2054 	JNZ	$+5
0F6C E9 C2 FB              2055 	JMP	PXREG
0F6F B5 07                 2056 	MOV	CH,7
0F71 3C 04                 2057 	CMP	AL,SREG
0F73 74 D7                 2058 	JZ	PACKREG
0F75 B1 14                 2059 	MOV	CL,20
0F77 E9 35 F3              2060 ERR11:	JMP	ERROR
0F7A                       2061 GRP23:
0F7A A2 D3 1B              2062 	MOV	[DATSIZ],AL
0F7D                       2063 GETDAT:
0F7D E8 27 F6              2064 	CALL	GETSYM
0F80 B0 02                 2065 	MOV	AL,2
0F82 E8 55 F4              2066 	CALL	VAL1
0F85 A0 CB 1B              2067 	MOV	AL,[SYM]
0F88 3C 2C                 2068 	CMP	AL,','
0F8A A0 D3 1B              2069 	MOV	AL,[DATSIZ]
0F8D 75 05                 2070 	JNZ	ENDDAT
0F8F E8 13 00              2071 	CALL	SAVDAT
0F92 EB E9                 2072 	JP	GETDAT
0F94                       2073 ENDDAT:
0F94 3C 02                 2074 	CMP	AL,2
0F96 75 0D                 2075 	JNZ	SAVDAT
0F98 8B 1E 71 1B           2076 	MOV	BX,[DATA]
0F9C 9F                    2077 	LAHF
0F9D 80 CB 80              2078 	OR	BL,080H
0FA0 9E                    2079 	SAHF
0FA1 89 1E 71 1B           2080 	MOV	[DATA],BX
0FA5                       2081 SAVDAT:
0FA5 0A C0                 2082 	OR	AL,AL
0FA7 74 03                 2083 	JZ	$+5
0FA9 E9 C3 FA              2084 	JMP	PUTBYT
0FAC E9 B9 FA              2085 	JMP	PUTWOR
0FAF                       2086 IF:
0FAF 0B DB                 2087 	OR	BX,BX
0FB1 74 05                 2088 	JZ	SKIPCD
0FB3 FE 06 E4 1B           2089 	INC	B,[IFFLG]
0FB7 C3                    2090 	RET
0FB8                       2091 
0FB8                       2092 SKIPCD:
0FB8 FE 06 E5 1B           2093 	INC	B,[CHKLAB]
0FBC                       2094 SKIPLP:
0FBC 32 C0                 2095 	XOR	AL,AL
0FBE E8 98 F2              2096 	CALL	NEXLIN
0FC1 E8 F0 F2              2097 	CALL	NEXTCHR
0FC4 3C 1A                 2098 	CMP	AL,1AH
0FC6 74 40                 2099 	JZ	END
0FC8 E8 9C F8              2100 	CALL	GETLAB
0FCB 72 EF                 2101 	JC	SKIPLP
0FCD BF 79 1B              2102 	MOV	DI,LENID
0FD0 BE 0F 1B              2103 	MOV	SI,IFEND
0FD3 B5 00                 2104 	MOV	CH,0
0FD5 8A 0D                 2105 	MOV	CL,[DI]
0FD7 FE C1                 2106 	INC	CL
0FD9 F3                    2107 	REPE
0FDA A6                    2108 	CMPB
0FDB 74 14                 2109 	JZ	ENDCOND
0FDD BF 79 1B              2110 	MOV	DI,LENID
0FE0 BE 15 1B              2111 	MOV	SI,IFNEST
0FE3 8A 0D                 2112 	MOV	CL,[DI]
0FE5 FE C1                 2113 	INC	CL
0FE7 F3                    2114 	REPE
0FE8 A6                    2115 	CMPB
0FE9 75 D1                 2116 	JNZ	SKIPLP
0FEB FE 06 E5 1B           2117 	INC	B,[CHKLAB]
0FEF EB CB                 2118 	JP	SKIPLP
0FF1                       2119 
0FF1                       2120 ENDCOND:
0FF1 FE 0E E5 1B           2121 	DEC	B,[CHKLAB]
0FF5 75 C5                 2122 	JNZ	SKIPLP
0FF7 C3                    2123 	RET
0FF8                       2124 
0FF8                       2125 ENDIF:
0FF8 A0 E4 1B              2126 	MOV	AL,[IFFLG]
0FFB B1 24                 2127 	MOV	CL,36
0FFD FE C8                 2128 	DEC	AL
0FFF 78 04                 2129 	JS	ERRJMP
1001 A2 E4 1B              2130 	MOV	[IFFLG],AL
1004 C3                    2131 	RET
1005                       2132 
1005 E9 A7 F2              2133 ERRJMP:	JMP	ERROR
1008                       2134 
1008                       2135 ;*********************************************************************
1008                       2136 ;
1008                       2137 ;	PASS 2
1008                       2138 ;
1008                       2139 ;*********************************************************************
1008                       2140 
1008                       2141 END:
1008 B2 04                 2142 	MOV	DL,4
100A                       2143 WREND:
100A B5 FF                 2144 	MOV	CH,0FFH
100C 8A C5                 2145 	MOV	AL,CH
100E E8 14 FA              2146 	CALL	GEN
1011 FE CA                 2147 	DEC	DL
1013 75 F5                 2148 	JNZ	WREND
1015 C7 06 3E 20 40 20     2149 	MOV	[BUFPT],SRCBUF
101B C6 06 E0 1B FB        2150 	MOV	B,[HEXCNT],-5	;FLAG HEX BUFFER AS EMPTY
1020 C7 06 F6 1B 3E 1C     2151 	MOV	[LSTPNT],LSTBUF
1026 C7 06 F4 1B F8 1B     2152 	MOV	[HEXPNT],HEXBUF
102C 33 C0                 2153 	XOR	AX,AX
102E A3 E6 1B              2154 	MOV	[ERRCNT],AX
1031 A3 65 1B              2155 	MOV	[PC],AX
1034 A3 D8 1B              2156 	MOV	[LINE],AX	;Current line number
1037 C7 06 DC 1B 00 01     2157 	MOV	[HEXADD],OBJECT
103D BA 5C 00              2158 	MOV	DX,FCB
1040 B4 0F                 2159 	MOV	AH,OPEN
1042 CD 21                 2160 	INT	33		;Re-open source file
1044 32 C0                 2161 	XOR	AL,AL
1046 A2 7C 00              2162 	MOV	[FCB+20H],AL
1049 C7 06 6A 00 00 04     2163 	MOV	[FCB+14],BUFSIZ
104F A2 D6 1B              2164 	MOV	[COUNT],AL
1052 B5 01                 2165 	MOV	CH,1
1054 BE 90 24              2166 	MOV	SI,START
1057                       2167 FIXLINE:
1057 BF 90 24              2168 	MOV	DI,START	;Store code over used up intermediate code
105A 32 C0                 2169 	XOR	AL,AL
105C A2 EE 1B              2170 	MOV	[SPC],AL	;No "special" yet (ORG, PUT, DS)
105F A2 D7 1B              2171 	MOV	[ERR],AL	;No second pass errors yet
1062                       2172 NEXBT:
1062 D0 E1                 2173 	SHL	CL		;Shift out last bit of previous code
1064 FE CD                 2174 	DEC	CH		;Still have codes left?
1066 75 05                 2175 	JNZ	TESTTYP
1068 AC                    2176 	LODB			;Get next flag byte
1069 8A C8                 2177 	MOV	CL,AL
106B B5 04                 2178 	MOV	CH,4
106D                       2179 TESTTYP:
106D D0 E1                 2180 	SHL	CL		;Set flags based on two bits
106F 70 06                 2181 	JO	FIXUP
1071 AC                    2182 	LODB
1072 72 4E                 2183 	JC	EMARK
1074                       2184 OBJBT:
1074 AA                    2185 	STOB
1075 EB EB                 2186 	JP	NEXBT
1077                       2187 
1077                       2188 FIXUP:
1077                       2189 ;Either a word or byte fixup is needed from a forward reference
1077 AD                    2190 	LODW			;Get pointer to symbol
1078 93                    2191 	XCHG	AX,BX
1079 AD                    2192 	LODW			;Get constant part
107A 03 47 01              2193 	ADD	AX,[BX+1]	;Add symbol value to constant part
107D 82 3F 00              2194 	CMP	B,[BX],0	;See if symbol got defined
1080 75 07                 2195 	JNZ	HAVDEF
1082 C6 06 D7 1B 64        2196 	MOV	B,[ERR],100	;Undefined - flag error
1087 33 C0                 2197 	XOR	AX,AX
1089                       2198 HAVDEF:
1089 0A C9                 2199 	OR	CL,CL		;See if word or byte fixup
108B 78 03                 2200 	JS	DEFBYT
108D AB                    2201 	STOW
108E EB D2                 2202 	JP	NEXBT
1090                       2203 
1090                       2204 DEFBYT:
1090 8B D0                 2205 	MOV	DX,AX
1092 98                    2206 	CBW			;Extend sign
1093 3B C2                 2207 	CMP	AX,DX		;See if in range +127 to -128
1095 74 DD                 2208 	JZ	OBJBT		;If so, it's always OK
1097 F6 D4                 2209 	NOT	AH		;Check for range +255 to -256
1099 3A E6                 2210 	CMP	AH,DH
109B 75 1B                 2211 	JNZ	RNGERR		;Must always be in this range
109D                       2212 ;Check for short jump. If so, we're out of range; otherwise we're OK
109D 81 FF 91 24           2213 	CMP	DI,START+1	;Only one other byte on line?
10A1 75 D1                 2214 	JNZ	OBJBT		;Can't be short jump if not
10A3 A0 90 24              2215 	MOV	AL,[START]	;Get the first byte of this line
10A6 3C EB                 2216 	CMP	AL,0EBH		;Direct short jump?
10A8 74 0E                 2217 	JZ	RNGERR
10AA 24 FC                 2218 	AND	AL,0FCH
10AC 3C E0                 2219 	CMP	AL,0E0H		;LOOP or JCXZ instruction?
10AE 74 08                 2220 	JZ	RNGERR
10B0 24 F0                 2221 	AND	AL,0F0H
10B2 3C 70                 2222 	CMP	AL,70H		;Conditional jump?
10B4 8A C2                 2223 	MOV	AL,DL		;Get code byte in AL
10B6 75 BC                 2224 	JNZ	OBJBT		;If not, we're OK
10B8                       2225 RNGERR:
10B8 C6 06 D7 1B 65        2226 	MOV	B,[ERR],101	;Value out of range
10BD EB B5                 2227 	JP	OBJBT
10BF                       2228 
10BF E9 7A 01              2229 FINIJ:	JMP	FINI
10C2                       2230 
10C2                       2231 EMARK:
10C2 3C FF                 2232 	CMP	AL,-1		;End of file?
10C4 74 F9                 2233 	JZ	FINIJ
10C6 3C F6                 2234 	CMP	AL,-10		;Special item?
10C8 77 5C                 2235 	JA	SPEND
10CA 51                    2236 	PUSH	CX
10CB 56                    2237 	PUSH	SI
10CC 50                    2238 	PUSH	AX		;Save error code
10CD 8A 26 EC 1B           2239 	MOV	AH,[LSTDEV]
10D1 80 E4 FE              2240 	AND	AH,0FEH		;Reset error indicator
10D4 0A 06 D7 1B           2241 	OR	AL,[ERR]	;See if any errors on this line
10D8 74 03                 2242 	JZ	NOERR
10DA 80 CC 01              2243 	OR	AH,1		;Send line to console if error occured
10DD                       2244 NOERR:
10DD 88 26 EC 1B           2245 	MOV	[LSTDEV],AH
10E1 8B CF                 2246 	MOV	CX,DI
10E3 E8 EE 00              2247 	CALL	STRTLIN		;Print address of line
10E6 BE 90 24              2248 	MOV	SI,START
10E9 2B CE                 2249 	SUB	CX,SI		;Get count of bytes of code
10EB 74 06                 2250 	JZ	SHOLIN
10ED                       2251 CODLP:
10ED AC                    2252 	LODB
10EE E8 33 02              2253 	CALL	SAVCD		;Ouput code to HEX and PRN files
10F1 E2 FA                 2254 	LOOP	CODLP
10F3                       2255 SHOLIN:
10F3 B0 00                 2256 	MOV	AL,0
10F5 86 06 D6 1B           2257 	XCHG	AL,[COUNT]
10F9 B9 07 00              2258 	MOV	CX,7		;Allow 7 bytes of code per line
10FC 2A C8                 2259 	SUB	CL,AL
10FE B0 20                 2260 	MOV	AL,' '
1100 74 0B                 2261 	JZ	NOFIL
1102                       2262 BLNK:				;Put in 3 blanks for each byte not present
1102 E8 E4 00              2263 	CALL	LIST
1105 E8 E1 00              2264 	CALL	LIST
1108 E8 DE 00              2265 	CALL	LIST
110B E2 F5                 2266 	LOOP	BLNK
110D                       2267 NOFIL:
110D E8 45 00              2268 	CALL	OUTLIN
1110 58                    2269 	POP	AX		;Restore error code
1111 E8 46 02              2270 	CALL	REPERR
1114 A0 D7 1B              2271 	MOV	AL,[ERR]
1117 E8 40 02              2272 	CALL	REPERR
111A 5E                    2273 	POP	SI
111B 59                    2274 	POP	CX
111C A0 EE 1B              2275 	MOV	AL,[SPC]	;Any special funtion?
111F 0A C0                 2276 	OR	AL,AL
1121 75 0D                 2277 	JNZ	SPCFUN
1123 E9 31 FF              2278 	JMP	FIXLINE
1126                       2279 
1126                       2280 SPEND:
1126 A2 EE 1B              2281 	MOV	[SPC],AL	;Record special function
1129 AD                    2282 	LODW			;Get it's data
112A A3 71 1B              2283 	MOV	[DATA],AX
112D E9 32 FF              2284 	JMP	NEXBT
1130                       2285 
1130                       2286 SPCFUN:
1130 8B 16 71 1B           2287 	MOV	DX,[DATA]
1134 3C FE                 2288 	CMP	AL,-2
1136 74 0F                 2289 	JZ	DORG
1138 3C FD                 2290 	CMP	AL,-3
113A 74 12                 2291 	JZ	DPUT
113C                       2292 DDS:
113C                       2293 ;Handle DS pseudo-op
113C 01 16 65 1B           2294 	ADD	[PC],DX
1140 01 16 DC 1B           2295 	ADD	[HEXADD],DX
1144 E9 10 FF              2296 	JMP	FIXLINE
1147                       2297 
1147                       2298 DORG:
1147                       2299 ;Handle ORG pseudo-op
1147 89 16 65 1B           2300 	MOV	[PC],DX
114B E9 09 FF              2301 	JMP	FIXLINE
114E                       2302 
114E                       2303 DPUT:
114E                       2304 ;Handle PUT pseudo-op
114E 89 16 DC 1B           2305 	MOV	[HEXADD],DX
1152 E9 02 FF              2306 	JMP	FIXLINE
1155                       2307 
1155                       2308 OUTLIN:
1155                       2309 ;Copy the source line to the ouput device. Line will be preceded by
1155                       2310 ;assembler-generated line number. This routine may be called several times
1155                       2311 ;on one line (once for each line of object code bytes), so it sets a flag
1155                       2312 ;so the line will only be output on the first call.
1155 B0 FF                 2313 	MOV	AL,-1
1157 86 06 E2 1B           2314 	XCHG	AL,[LINFLG]
115B 0A C0                 2315 	OR	AL,AL
115D 75 33                 2316 	JNZ	CRLF		;Output line only if first time
115F A1 D8 1B              2317 	MOV	AX,[LINE]
1162 40                    2318 	INC	AX
1163 A3 D8 1B              2319 	MOV	[LINE],AX
1166 B7 00                 2320 	MOV	BH,0		;No leading zero suppression
1168 E8 30 00              2321 	CALL	OUT10
116B B0 20                 2322 	MOV	AL," "
116D E8 79 00              2323 	CALL	LIST
1170 A0 40 1B              2324 	MOV	AL,[LSTFCB]
1173 3C 5A                 2325 	CMP	AL,'Z'
1175 74 1B                 2326 	JZ	CRLF		;Don't call NEXTCHR if listing suppressed
1177 56                    2327 	PUSH	SI		;Save the only register destroyed by NEXTCHR
1178                       2328 OUTLN:
1178 E8 39 F1              2329 	CALL	NEXTCHR
117B E8 6B 00              2330 	CALL	LIST
117E 3C 0A                 2331 	CMP	AL,10		;Output until linefeed found
1180 75 F6                 2332 	JNZ	OUTLN
1182 5E                    2333 	POP	SI
1183 C3                    2334 	RET
1184                       2335 
1184                       2336 PRTCNT:
1184 BB E7 1A              2337 	MOV	BX,ERCNTM
1187 E8 E6 01              2338 	CALL	PRINT
118A A1 E6 1B              2339 	MOV	AX,[ERRCNT]
118D B7 10                 2340 	MOV	BH,"0"-" "	;Enable leading zero suppression
118F E8 09 00              2341 	CALL	OUT10
1192                       2342 CRLF:
1192 B0 0D                 2343 	MOV	AL,13
1194 E8 52 00              2344 	CALL	LIST
1197 B0 0A                 2345 	MOV	AL,10
1199 EB 4E                 2346 	JP	LIST
119B                       2347 
119B                       2348 OUT10:
119B 33 D2                 2349 	XOR	DX,DX
119D BF 10 27              2350 	MOV	DI,10000
11A0 F7 F7                 2351 	DIV	AX,DI
11A2 0A C0                 2352 	OR	AL,AL		;>10,000?
11A4 75 02                 2353 	JNZ	LEAD
11A6 2C 10                 2354 	SUB	AL,"0"-" "	;Convert leading zero to blank
11A8                       2355 LEAD:
11A8 04 30                 2356 	ADD	AL,"0"
11AA E8 3C 00              2357 	CALL	LIST
11AD 92                    2358 	XCHG	AX,DX
11AE B3 64                 2359 	MOV	BL,100
11B0 F6 F3                 2360 	DIV	AL,BL
11B2 8A DC                 2361 	MOV	BL,AH
11B4 E8 0C 00              2362 	CALL	HIDIG		;Convert to decimal and print 1000s digit
11B7 E8 0E 00              2363 	CALL	DIGIT		;Print 100s digit
11BA 8A C3                 2364 	MOV	AL,BL
11BC E8 04 00              2365 	CALL	HIDIG		;Convert to decimal and print 10s digit
11BF B7 00                 2366 	MOV	BH,0		;Ensure leading zero suppression is off
11C1 EB 05                 2367 	JP	DIGIT
11C3                       2368 
11C3                       2369 HIDIG:
11C3 D4 0A                 2370 	AAM			;Convert binary to unpacked BCD
11C5 0D 30 30              2371 	OR	AX,3030H	;Add "0" bias
11C8                       2372 DIGIT:
11C8 86 C4                 2373 	XCHG	AL,AH
11CA 3C 30                 2374 	CMP	AL,"0"
11CC 74 02                 2375 	JZ	SUPZ
11CE B7 00                 2376 	MOV	BH,0		;Turn off zero suppression if not zero
11D0                       2377 SUPZ:
11D0 2A C7                 2378 	SUB	AL,BH		;Convert leading zeros to blanks
11D2 EB 15                 2379 	JP	LIST
11D4                       2380 
11D4                       2381 STRTLIN:
11D4 C6 06 E2 1B 00        2382 	MOV	B,[LINFLG],0
11D9 8B 1E 65 1B           2383 	MOV	BX,[PC]
11DD 8A C7                 2384 	MOV	AL,BH
11DF E8 4D 00              2385 	CALL	PHEX
11E2 8A C3                 2386 	MOV	AL,BL
11E4                       2387 PHEXB:
11E4 E8 48 00              2388 	CALL	PHEX
11E7 B0 20                 2389 	MOV	AL,' '
11E9                       2390 LIST:
11E9 50                    2391 	PUSH	AX
11EA 52                    2392 	PUSH	DX
11EB 24 7F                 2393 	AND	AL,7FH
11ED 8A D0                 2394 	MOV	DL,AL
11EF F6 06 EC 1B 03        2395 	TEST	B,[LSTDEV],3	;See if output goes to console
11F4 74 04                 2396 	JZ	PRNCHK
11F6 B4 02                 2397 	MOV	AH,2
11F8 CD 21                 2398 	INT	33		;Output to console
11FA                       2399 PRNCHK:
11FA F6 06 EC 1B 04        2400 	TEST	B,[LSTDEV],4	;See if output goes to printer
11FF 74 04                 2401 	JZ	FILCHK
1201 B4 04                 2402 	MOV	AH,4
1203 CD 21                 2403 	INT	33		;Output to printer
1205                       2404 FILCHK:
1205 8A C2                 2405 	MOV	AL,DL
1207 5A                    2406 	POP	DX
1208 F6 06 EC 1B 80        2407 	TEST	B,[LSTDEV],80H	;See if output goes to a file
120D 74 03                 2408 	JZ	LISTRET
120F E8 02 00              2409 	CALL	WRTBUF
1212                       2410 LISTRET:
1212 58                    2411 	POP	AX
1213 C3                    2412 	RET
1214                       2413 
1214                       2414 WRTBUF:
1214 57                    2415 	PUSH	DI
1215 8B 3E F6 1B           2416 	MOV	DI,[LSTPNT]
1219 AA                    2417 	STOB
121A 81 FF 3E 20           2418 	CMP	DI,LSTBUF+LSTBUFSIZ
121E 75 09                 2419 	JNZ	SAVPT
1220 50                    2420 	PUSH	AX
1221 51                    2421 	PUSH	CX
1222 52                    2422 	PUSH	DX
1223 E8 22 02              2423 	CALL	FLUSHBUF
1226 5A                    2424 	POP	DX
1227 59                    2425 	POP	CX
1228 58                    2426 	POP	AX
1229                       2427 SAVPT:
1229 89 3E F6 1B           2428 	MOV	[LSTPNT],DI
122D 5F                    2429 	POP	DI
122E C3                    2430 	RET
122F                       2431 
122F                       2432 PHEX:
122F 50                    2433 	PUSH	AX
1230 E8 37 02              2434 	CALL	UHALF
1233 E8 B3 FF              2435 	CALL	LIST
1236 58                    2436 	POP	AX
1237 E8 38 02              2437 	CALL	LHALF
123A EB AD                 2438 	JP	LIST
123C                       2439 
123C                       2440 FINI:
123C 80 0E EC 1B 01        2441 	OR	B,[LSTDEV],1
1241 E8 40 FF              2442 	CALL	PRTCNT
1244 80 26 EC 1B FE        2443 	AND	B,[LSTDEV],0FEH
1249 A0 1B 1B              2444 	MOV	AL,[HEXFCB]
124C 3C 5A                 2445 	CMP	AL,'Z'
124E 74 3B                 2446 	JZ	SYMDMP
1250 A0 E0 1B              2447 	MOV	AL,[HEXCNT]
1253 3C FB                 2448 	CMP	AL,-5
1255 74 03                 2449 	JZ	L0012
1257 E8 A0 01              2450 	CALL	ENHEXL
125A                       2451 L0012:	
125A B0 3A                 2452 	MOV	AL,':'
125C E8 DF 01              2453 	CALL	PUTCHR
125F B5 0A                 2454 	MOV	CH,10
1261                       2455 HEXEND:
1261 51                    2456 	PUSH	CX
1262 B0 30                 2457 	MOV	AL,'0'
1264 E8 D7 01              2458 	CALL	PUTCHR
1267 59                    2459 	POP	CX
1268 FE CD                 2460 	DEC	CH
126A 75 F5                 2461 	JNZ	HEXEND
126C B0 0D                 2462 	MOV	AL,13
126E E8 CD 01              2463 	CALL	PUTCHR
1271 B0 0A                 2464 	MOV	AL,10
1273 E8 C8 01              2465 	CALL	PUTCHR
1276 B0 1A                 2466 	MOV	AL,1AH
1278 E8 C3 01              2467 	CALL	PUTCHR
127B E8 A5 01              2468 	CALL	WRTHEX		;Flush HEX file buffer
127E A1 70 00              2469 	MOV	AX,[FCB+20]
1281 A3 2F 1B              2470 	MOV	[HEXFCB+20],AX	;Copy date to hex file
1284 BA 1B 1B              2471 	MOV	DX,HEXFCB
1287 B4 10                 2472 	MOV	AH,CLOSE
1289 CD 21                 2473 	INT	33
128B                       2474 SYMDMP:
128B A0 D0 1B              2475 	MOV	AL,[SYMFLG]
128E 3C 53                 2476 	CMP	AL,'S'
1290 75 19                 2477 	JNZ	ENDSYM
1292 BB F8 1A              2478 	MOV	BX,SYMMES
1295 E8 D8 00              2479 	CALL	PRINT
1298 8B 16 CC 1B           2480 	MOV	DX,[BASE]
129C 8A C6                 2481 	MOV	AL,DH
129E 0A C2                 2482 	OR	AL,DL
12A0 74 22                 2483 	JZ	EXIT
12A2 8B 1E CE 1B           2484 	MOV	BX,[HEAP]
12A6 8B E3                 2485 	MOV	SP,BX
12A8 E8 1C 00              2486 	CALL	NODE
12AB                       2487 ENDSYM:
12AB F6 06 EC 1B 80        2488 	TEST	B,[LSTDEV],80H	;Print listing to file?
12B0 74 12                 2489 	JZ	EXIT
12B2 B0 1A                 2490 	MOV	AL,1AH
12B4 E8 5D FF              2491 	CALL	WRTBUF		;Write end-of-file mark
12B7 E8 8E 01              2492 	CALL	FLUSHBUF
12BA A1 70 00              2493 	MOV	AX,[FCB+20]	;Get date of source file
12BD A3 54 1B              2494 	MOV	[LSTFCB+20],AX
12C0 B4 10                 2495 	MOV	AH,CLOSE
12C2 CD 21                 2496 	INT	33
12C4 E9 39 ED              2497 EXIT:	JMP	0
12C7                       2498 
12C7                       2499 NODE:
12C7 87 DA                 2500 	XCHG	DX,BX
12C9 53                    2501 	PUSH	BX
12CA 8A 17                 2502 	MOV	DL,[BX]
12CC B6 00                 2503 	MOV	DH,0
12CE 43                    2504 	INC	BX
12CF 03 DA                 2505 	ADD	BX,DX
12D1 8A 17                 2506 	MOV	DL,[BX]
12D3 43                    2507 	INC	BX
12D4 8A 37                 2508 	MOV	DH,[BX]
12D6 8A C2                 2509 	MOV	AL,DL
12D8 0A C6                 2510 	OR	AL,DH
12DA 74 03                 2511 	JZ	L0014
12DC E8 E8 FF              2512 	CALL	NODE
12DF                       2513 L0014:	
12DF 5B                    2514 	POP	BX
12E0 8A 2F                 2515 	MOV	CH,[BX]
12E2 43                    2516 	INC	BX
12E3 B0 0A                 2517 	MOV	AL,SYMWID
12E5 2A C5                 2518 	SUB	AL,CH
12E7 73 02                 2519 	JNC	LENOK
12E9 B0 01                 2520 	MOV	AL,1
12EB                       2521 LENOK:
12EB 8A F0                 2522 	MOV	DH,AL
12ED                       2523 WRTSYM:
12ED 8A 07                 2524 	MOV	AL,[BX]
12EF 43                    2525 	INC	BX
12F0 E8 F6 FE              2526 	CALL	LIST
12F3 FE CD                 2527 	DEC	CH
12F5 75 F6                 2528 	JNZ	WRTSYM
12F7 8A EE                 2529 	MOV	CH,DH
12F9 FE C5                 2530 	INC	CH
12FB B0 20                 2531 	MOV	AL,' '
12FD                       2532 OUTB:
12FD E8 E9 FE              2533 	CALL	LIST
1300 FE CD                 2534 	DEC	CH
1302 75 F9                 2535 	JNZ	OUTB
1304 43                    2536 	INC	BX
1305 43                    2537 	INC	BX
1306 53                    2538 	PUSH	BX
1307 43                    2539 	INC	BX
1308 43                    2540 	INC	BX
1309 43                    2541 	INC	BX
130A 43                    2542 	INC	BX
130B 8A 07                 2543 	MOV	AL,[BX]
130D E8 1F FF              2544 	CALL	PHEX
1310 4B                    2545 	DEC	BX
1311 8A 07                 2546 	MOV	AL,[BX]
1313 E8 19 FF              2547 	CALL	PHEX
1316 E8 79 FE              2548 	CALL	CRLF
1319 5B                    2549 	POP	BX
131A 8B 17                 2550 	MOV	DX,[BX]
131C 43                    2551 	INC	BX
131D 8A C6                 2552 	MOV	AL,DH
131F 0A C2                 2553 	OR	AL,DL
1321 75 A4                 2554 	JNZ	NODE
1323 C3                    2555 	RET
1324                       2556 
1324                       2557 SAVCD:
1324 A2 E3 1B              2558 	MOV	[PREV],AL
1327 53                    2559 	PUSH	BX
1328 51                    2560 	PUSH	CX
1329 50                    2561 	PUSH	AX
132A 52                    2562 	PUSH	DX
132B E8 59 00              2563 	CALL	CODBYT
132E 5A                    2564 	POP	DX
132F BB D6 1B              2565 	MOV	BX,COUNT
1332 FE 07                 2566 	INC	B,[BX]
1334 8A 07                 2567 	MOV	AL,[BX]
1336 3C 08                 2568 	CMP	AL,8
1338 75 11                 2569 	JNZ	NOEXT
133A C6 07 01              2570 	MOV	B,[BX],1
133D E8 15 FE              2571 	CALL	OUTLIN
1340 B0 20                 2572 	MOV	AL,' '
1342 B5 05                 2573 	MOV	CH,5
1344                       2574 TAB:
1344 E8 A2 FE              2575 	CALL	LIST
1347 FE CD                 2576 	DEC	CH
1349 75 F9                 2577 	JNZ	TAB
134B                       2578 NOEXT:
134B 58                    2579 	POP	AX
134C E8 95 FE              2580 	CALL	PHEXB
134F 59                    2581 	POP	CX
1350 FF 06 65 1B           2582 	INC	[PC]
1354 FF 06 DC 1B           2583 	INC	[HEXADD]
1358 5B                    2584 	POP	BX
1359 C3                    2585 	RET
135A                       2586 
135A                       2587 REPERR:
135A 0A C0                 2588 	OR	AL,AL
135C 74 FB                 2589 	JZ	RET
135E 50                    2590 	PUSH	AX
135F BB 6D 1A              2591 	MOV	BX,ERRMES
1362 E8 0B 00              2592 	CALL	PRINT
1365 58                    2593 	POP	AX
1366 E8 C6 FE              2594 	CALL	PHEX
1369 BB 94 1A              2595 	MOV	BX,ENDMES
136C FF 06 E6 1B           2596 	INC	[ERRCNT]
1370                       2597 PRINT:
1370 8A 07                 2598 	MOV	AL,[BX]
1372 E8 74 FE              2599 	CALL	LIST
1375 0A C0                 2600 	OR	AL,AL
1377 78 E0                 2601 	JS	RET
1379 43                    2602 	INC	BX
137A EB F4                 2603 	JP	PRINT
137C                       2604 
137C                       2605 OUTA:
137C 8A D0                 2606 	MOV	DL,AL
137E                       2607 OUT:
137E 80 E2 7F              2608 	AND	DL,7FH
1381 B1 02                 2609 	MOV	CL,2
1383                       2610 SYSTEM:
1383 E8 7F EC              2611 	CALL	5
1386 C3                    2612 	RET
1387                       2613 
1387                       2614 CODBYT:
1387 82 3E 1B 1B 5A        2615 	CMP	B,[HEXFCB],"Z"
138C 74 F8                 2616 	JZ	RET
138E 50                    2617 	PUSH	AX
138F 8B 16 DE 1B           2618 	MOV	DX,[LASTAD]
1393 8B 1E DC 1B           2619 	MOV	BX,[HEXADD]
1397 89 1E DE 1B           2620 	MOV	[LASTAD],BX
139B 42                    2621 	INC	DX
139C A0 E0 1B              2622 	MOV	AL,[HEXCNT]
139F 3C FB                 2623 	CMP	AL,-5
13A1 74 07                 2624 	JZ	NEWLIN
13A3 3B DA                 2625 	CMP	BX,DX
13A5 74 2E                 2626 	JZ	AFHEX
13A7 E8 50 00              2627 	CALL	ENHEXL
13AA                       2628 NEWLIN:
13AA B0 3A                 2629 	MOV	AL,':'
13AC E8 8F 00              2630 	CALL	PUTCHR
13AF B0 FC                 2631 	MOV	AL,-4
13B1 A2 E0 1B              2632 	MOV	[HEXCNT],AL
13B4 32 C0                 2633 	XOR	AL,AL
13B6 A2 E1 1B              2634 	MOV	[CHKSUM],AL
13B9 8B 1E F4 1B           2635 	MOV	BX,[HEXPNT]
13BD 89 1E DA 1B           2636 	MOV	[HEXLEN],BX
13C1 E8 12 00              2637 	CALL	HEXBYT
13C4 A0 DD 1B              2638 	MOV	AL,[HEXADD+1]
13C7 E8 0C 00              2639 	CALL	HEXBYT
13CA A0 DC 1B              2640 	MOV	AL,[HEXADD]
13CD E8 06 00              2641 	CALL	HEXBYT
13D0 32 C0                 2642 	XOR	AL,AL
13D2 E8 01 00              2643 	CALL	HEXBYT
13D5                       2644 AFHEX:
13D5 58                    2645 	POP	AX
13D6                       2646 HEXBYT:
13D6 8A E8                 2647 	MOV	CH,AL
13D8 BB E1 1B              2648 	MOV	BX,CHKSUM
13DB 02 07                 2649 	ADD	AL,[BX]
13DD 88 07                 2650 	MOV	[BX],AL
13DF 8A C5                 2651 	MOV	AL,CH
13E1 E8 86 00              2652 	CALL	UHALF
13E4 E8 57 00              2653 	CALL	PUTCHR
13E7 8A C5                 2654 	MOV	AL,CH
13E9 E8 86 00              2655 	CALL	LHALF
13EC E8 4F 00              2656 	CALL	PUTCHR
13EF BB E0 1B              2657 	MOV	BX,HEXCNT
13F2 FE 07                 2658 	INC	B,[BX]
13F4 8A 07                 2659 	MOV	AL,[BX]
13F6 3C 1A                 2660 	CMP	AL,26
13F8 75 8C                 2661 	JNZ	RET
13FA                       2662 ENHEXL:
13FA 8B 3E DA 1B           2663 	MOV	DI,[HEXLEN]
13FE 8A E8                 2664 	MOV	CH,AL
1400 E8 67 00              2665 	CALL	UHALF
1403 AA                    2666 	STOB
1404 8A C5                 2667 	MOV	AL,CH
1406 E8 69 00              2668 	CALL	LHALF
1409 AA                    2669 	STOB
140A B0 FA                 2670 	MOV	AL,-6
140C A2 E0 1B              2671 	MOV	[HEXCNT],AL
140F A0 E1 1B              2672 	MOV	AL,[CHKSUM]
1412 02 C5                 2673 	ADD	AL,CH
1414 F6 D8                 2674 	NEG	AL
1416 E8 BD FF              2675 	CALL	HEXBYT
1419 B0 0D                 2676 	MOV	AL,13
141B E8 20 00              2677 	CALL	PUTCHR
141E B0 0A                 2678 	MOV	AL,10
1420 E8 1B 00              2679 	CALL	PUTCHR
1423                       2680 WRTHEX:
1423                       2681 ;Write out the line
1423 BA F8 1B              2682 	MOV	DX,HEXBUF
1426 89 16 F4 1B           2683 	MOV	[HEXPNT],DX
142A B4 1A                 2684 	MOV	AH,SETDMA
142C CD 21                 2685 	INT	33
142E 2B FA                 2686 	SUB	DI,DX		;Length of buffer
1430 8B CF                 2687 	MOV	CX,DI
1432 BA 1B 1B              2688 	MOV	DX,HEXFCB
1435 B4 28                 2689 	MOV	AH,BLKWRT
1437 CD 21                 2690 	INT	33
1439 0A C0                 2691 	OR	AL,AL
143B 75 27                 2692 	JNZ	DSKFUL
143D C3                    2693 	RET
143E                       2694 
143E                       2695 PUTCHR:
143E 8B 3E F4 1B           2696 	MOV	DI,[HEXPNT]
1442 AA                    2697 	STOB
1443 89 3E F4 1B           2698 	MOV	[HEXPNT],DI
1447 C3                    2699 	RET
1448                       2700 
1448                       2701 FLUSHBUF:
1448 8B 0E F6 1B           2702 	MOV	CX,[LSTPNT]
144C BA 3E 1C              2703 	MOV	DX,LSTBUF
144F 8B FA                 2704 	MOV	DI,DX
1451 2B CA                 2705 	SUB	CX,DX
1453 74 F2                 2706 	JZ	RET		;Buffer empty?
1455 B4 1A                 2707 	MOV	AH,SETDMA
1457 CD 21                 2708 	INT	33
1459 BA 40 1B              2709 	MOV	DX,LSTFCB
145C B4 28                 2710 	MOV	AH,BLKWRT
145E CD 21                 2711 	INT	33
1460 0A C0                 2712 	OR	AL,AL
1462 74 E3                 2713 	JZ	RET
1464                       2714 DSKFUL:
1464 BB C2 1A              2715 	MOV	BX,WRTERR
1467 E9 0A EE              2716 	JMP	PRERR
146A                       2717 
146A                       2718 UHALF:
146A D0 D8                 2719 	RCR	AL
146C D0 D8                 2720 	RCR	AL
146E D0 D8                 2721 	RCR	AL
1470 D0 D8                 2722 	RCR	AL
1472                       2723 LHALF:
1472 24 0F                 2724 	AND	AL,0FH
1474 0C 30                 2725 	OR	AL,30H
1476 3C 3A                 2726 	CMP	AL,'9'+1
1478 72 CD                 2727 	JC	RET
147A 04 07                 2728 	ADD	AL,7
147C C3                    2729 	RET
147D                       2730 
147D 00                    2731 NONE:	DB	0
147E                       2732 
147E                       2733 ; 8086 MNEMONIC TABLE
147E                       2734 
147E                       2735 ; This table is actually a sequence of subtables, each starting with a label.
147E                       2736 ; The label signifies which mnemonics the subtable applies to--A3, for example,
147E                       2737 ; means all 3-letter mnemonics beginning with A.
147E                       2738 
147E                       2739 A3:
147E 07                    2740 	DB	7
147F 64 64                 2741 	DB	'dd'
1481 55 0C                 2742 	DW	GRP7
1483 02                    2743 	DB	2
1484 6E 64                 2744 	DB	'nd'
1486 39 0D                 2745 	DW	GRP13
1488 22                    2746 	DB	22H
1489 64 63                 2747 	DB	'dc'
148B 55 0C                 2748 	DW	GRP7
148D 12                    2749 	DB	12H
148E 61 61                 2750 	DB	'aa'
1490 1B 0A                 2751 	DW	PUT
1492 37                    2752 	DB	37H
1493 61 73                 2753 	DB	'as'
1495 1B 0A                 2754 	DW	PUT
1497 3F                    2755 	DB	3FH
1498 61 6D                 2756 	DB	'am'
149A 05 0D                 2757 	DW	GRP11
149C D4                    2758 	DB	0D4H
149D 61 64                 2759 	DB	'ad'
149F 05 0D                 2760 	DW	GRP11
14A1 D5                    2761 	DB	0D5H
14A2                       2762 A5:
14A2 01                    2763 	DB	1
14A3 6C 69 67 6E           2764 	DB	'lign'
14A7 F9 0B                 2765 	DW	ALIGN
14A9 00                    2766 	DB	0
14AA                       2767 C3:
14AA 07                    2768 	DB	7
14AB 6D 70                 2769 	DB	'mp'
14AD 55 0C                 2770 	DW	GRP7
14AF 3A                    2771 	DB	3AH
14B0 6C 63                 2772 	DB	'lc'
14B2 1B 0A                 2773 	DW	PUT
14B4 F8                    2774 	DB	0F8H
14B5 6C 64                 2775 	DB	'ld'
14B7 1B 0A                 2776 	DW	PUT
14B9 FC                    2777 	DB	0FCH
14BA 6C 69                 2778 	DB	'li'
14BC 1B 0A                 2779 	DW	PUT
14BE FA                    2780 	DB	0FAH
14BF 6D 63                 2781 	DB	'mc'
14C1 1B 0A                 2782 	DW	PUT
14C3 F5                    2783 	DB	0F5H
14C4 62 77                 2784 	DB	'bw'
14C6 1B 0A                 2785 	DW	PUT
14C8 98                    2786 	DB	98H
14C9 77 64                 2787 	DB	'wd'
14CB 1B 0A                 2788 	DW	PUT
14CD 99                    2789 	DB	99H
14CE                       2790 C4:
14CE 03                    2791 	DB	3
14CF 61 6C 6C              2792 	DB	'all'
14D2 69 0D                 2793 	DW	GRP14
14D4 9A                    2794 	DB	9AH
14D5 6D 70 62              2795 	DB	'mpb'
14D8 1B 0A                 2796 	DW	PUT
14DA A6                    2797 	DB	0A6H
14DB 6D 70 77              2798 	DB	'mpw'
14DE 1B 0A                 2799 	DW	PUT
14E0 A7                    2800 	DB	0A7H
14E1                       2801 C5:
14E1 02                    2802 	DB	2
14E2 6D 70 73 62           2803 	DB	'mpsb'
14E6 1B 0A                 2804 	DW	PUT
14E8 A6                    2805 	DB	0A6H
14E9 6D 70 73 77           2806 	DB	'mpsw'
14ED 1B 0A                 2807 	DW	PUT
14EF A7                    2808 	DB	0A7H
14F0                       2809 D2:
14F0 05                    2810 	DB	5
14F1 62                    2811 	DB	'b'
14F2 7A 0F                 2812 	DW	GRP23
14F4 01                    2813 	DB	1
14F5 77                    2814 	DB	'w'
14F6 7A 0F                 2815 	DW	GRP23
14F8 00                    2816 	DB	0
14F9 6D                    2817 	DB	'm'
14FA 7A 0F                 2818 	DW	GRP23
14FC 02                    2819 	DB	2
14FD 73                    2820 	DB	's'
14FE C1 0B                 2821 	DW	GRP5
1500 01                    2822 	DB	1
1501 69                    2823 	DB	'i'
1502 1B 0A                 2824 	DW	PUT
1504 FA                    2825 	DB	0FAH
1505                       2826 D3:
1505 04                    2827 	DB	4
1506 65 63                 2828 	DB	'ec'
1508 7D 0C                 2829 	DW	GRP8
150A 49                    2830 	DB	49H
150B 69 76                 2831 	DB	'iv'
150D D5 0C                 2832 	DW	GRP10
150F 30                    2833 	DB	30H
1510 61 61                 2834 	DB	'aa'
1512 1B 0A                 2835 	DW	PUT
1514 27                    2836 	DB	27H
1515 61 73                 2837 	DB	'as'
1517 1B 0A                 2838 	DW	PUT
1519 2F                    2839 	DB	2FH
151A                       2840 D4:
151A 01                    2841 	DB	1
151B 6F 77 6E              2842 	DB	'own'
151E 1B 0A                 2843 	DW	PUT
1520 FD                    2844 	DB	0FDH
1521                       2845 E2:
1521 01                    2846 	DB	1
1522 69                    2847 	DB	'i'
1523 1B 0A                 2848 	DW	PUT
1525 FB                    2849 	DB	0FBH
1526                       2850 E3:
1526 03                    2851 	DB	3
1527 71 75                 2852 	DB	'qu'
1529 C1 0B                 2853 	DW	GRP5
152B 02                    2854 	DB	2
152C 73 63                 2855 	DB	'sc'
152E C9 0E                 2856 	DW	GRP19
1530 D8                    2857 	DB	0D8H
1531 6E 64                 2858 	DB	'nd'
1533 08 10                 2859 	DW	END
1535 00                    2860 	DB	0
1536                       2861 E5:
1536 01                    2862 	DB	1
1537 6E 64 69 66           2863 	DB	'ndif'
153B F8 0F                 2864 	DW	ENDIF
153D 00                    2865 	DB	0
153E                       2866 H3:
153E 01                    2867 	DB	1
153F 6C 74                 2868 	DB	'lt'
1541 1B 0A                 2869 	DW	PUT
1543 F4                    2870 	DB	0F4H
1544                       2871 H4:
1544 01                    2872 	DB	1
1545 61 6C 74              2873 	DB	'alt'
1548 1B 0A                 2874 	DW	PUT
154A F4                    2875 	DB	0F4H
154B                       2876 I2:
154B 02                    2877 	DB	2
154C 6E                    2878 	DB	'n'
154D 98 0B                 2879 	DW	GRP4
154F E4                    2880 	DB	0E4H
1550 66                    2881 	DB	'f'
1551 C1 0B                 2882 	DW	GRP5
1553 04                    2883 	DB	4
1554                       2884 I3:
1554 04                    2885 	DB	4
1555 6E 63                 2886 	DB	'nc'
1557 7D 0C                 2887 	DW	GRP8
1559 41                    2888 	DB	41H
155A 6E 62                 2889 	DB	'nb'
155C 98 0B                 2890 	DW	GRP4
155E E4                    2891 	DB	0E4H
155F 6E 77                 2892 	DB	'nw'
1561 98 0B                 2893 	DW	GRP4
1563 E5                    2894 	DB	0E5H
1564 6E 74                 2895 	DB	'nt'
1566 9E 0E                 2896 	DW	GRP18
1568 CC                    2897 	DB	0CCH
1569                       2898 I4:
1569 04                    2899 	DB	4
156A 6D 75 6C              2900 	DB	'mul'
156D D5 0C                 2901 	DW	GRP10
156F 28                    2902 	DB	28H
1570 64 69 76              2903 	DB	'div'
1573 D5 0C                 2904 	DW	GRP10
1575 38                    2905 	DB	38H
1576 72 65 74              2906 	DB	'ret'
1579 1B 0A                 2907 	DW	PUT
157B CF                    2908 	DB	0CFH
157C 6E 74 6F              2909 	DB	'nto'
157F 1B 0A                 2910 	DW	PUT
1581 CE                    2911 	DB	0CEH
1582                       2912 J2:
1582 0A                    2913 	DB	10
1583 70                    2914 	DB	'p'
1584 65 0E                 2915 	DW	GRP17
1586 EB                    2916 	DB	0EBH
1587 7A                    2917 	DB	'z'
1588 65 0E                 2918 	DW	GRP17
158A 74                    2919 	DB	74H
158B 65                    2920 	DB	'e'
158C 65 0E                 2921 	DW	GRP17
158E 74                    2922 	DB	74H
158F 6C                    2923 	DB	'l'
1590 65 0E                 2924 	DW	GRP17
1592 7C                    2925 	DB	7CH
1593 62                    2926 	DB	'b'
1594 65 0E                 2927 	DW	GRP17
1596 72                    2928 	DB	72H
1597 61                    2929 	DB	'a'
1598 65 0E                 2930 	DW	GRP17
159A 77                    2931 	DB	77H
159B 67                    2932 	DB	'g'
159C 65 0E                 2933 	DW	GRP17
159E 7F                    2934 	DB	7FH
159F 6F                    2935 	DB	'o'
15A0 65 0E                 2936 	DW	GRP17
15A2 70                    2937 	DB	70H
15A3 73                    2938 	DB	's'
15A4 65 0E                 2939 	DW	GRP17
15A6 78                    2940 	DB	78H
15A7 63                    2941 	DB	'c'
15A8 65 0E                 2942 	DW	GRP17
15AA 72                    2943 	DB	72H
15AB                       2944 J3:
15AB 11                    2945 	DB	17
15AC 6D 70                 2946 	DB	'mp'
15AE 69 0D                 2947 	DW	GRP14
15B0 EA                    2948 	DB	0EAH
15B1 6E 7A                 2949 	DB	'nz'
15B3 65 0E                 2950 	DW	GRP17
15B5 75                    2951 	DB	75H
15B6 6E 65                 2952 	DB	'ne'
15B8 65 0E                 2953 	DW	GRP17
15BA 75                    2954 	DB	75H
15BB 6E 6C                 2955 	DB	'nl'
15BD 65 0E                 2956 	DW	GRP17
15BF 7D                    2957 	DB	7DH
15C0 67 65                 2958 	DB	'ge'
15C2 65 0E                 2959 	DW	GRP17
15C4 7D                    2960 	DB	7DH
15C5 6E 62                 2961 	DB	'nb'
15C7 65 0E                 2962 	DW	GRP17
15C9 73                    2963 	DB	73H
15CA 61 65                 2964 	DB	'ae'
15CC 65 0E                 2965 	DW	GRP17
15CE 73                    2966 	DB	73H
15CF 6E 63                 2967 	DB	'nc'
15D1 65 0E                 2968 	DW	GRP17
15D3 73                    2969 	DB	73H
15D4 6E 67                 2970 	DB	'ng'
15D6 65 0E                 2971 	DW	GRP17
15D8 7E                    2972 	DB	7EH
15D9 6C 65                 2973 	DB	'le'
15DB 65 0E                 2974 	DW	GRP17
15DD 7E                    2975 	DB	7EH
15DE 6E 61                 2976 	DB	'na'
15E0 65 0E                 2977 	DW	GRP17
15E2 76                    2978 	DB	76H
15E3 62 65                 2979 	DB	'be'
15E5 65 0E                 2980 	DW	GRP17
15E7 76                    2981 	DB	76H
15E8 70 65                 2982 	DB	'pe'
15EA 65 0E                 2983 	DW	GRP17
15EC 7A                    2984 	DB	7AH
15ED 6E 70                 2985 	DB	'np'
15EF 65 0E                 2986 	DW	GRP17
15F1 7B                    2987 	DB	7BH
15F2 70 6F                 2988 	DB	'po'
15F4 65 0E                 2989 	DW	GRP17
15F6 7B                    2990 	DB	7BH
15F7 6E 6F                 2991 	DB	'no'
15F9 65 0E                 2992 	DW	GRP17
15FB 71                    2993 	DB	71H
15FC 6E 73                 2994 	DB	'ns'
15FE 65 0E                 2995 	DW	GRP17
1600 79                    2996 	DB	79H
1601                       2997 J4:
1601 06                    2998 	DB	6
1602 6D 70 73              2999 	DB	'mps'
1605 65 0E                 3000 	DW	GRP17
1607 EB                    3001 	DB	0EBH
1608 63 78 7A              3002 	DB	'cxz'
160B 65 0E                 3003 	DW	GRP17
160D E3                    3004 	DB	0E3H
160E 6E 67 65              3005 	DB	'nge'
1611 65 0E                 3006 	DW	GRP17
1613 7C                    3007 	DB	7CH
1614 6E 61 65              3008 	DB	'nae'
1617 65 0E                 3009 	DW	GRP17
1619 72                    3010 	DB	72H
161A 6E 62 65              3011 	DB	'nbe'
161D 65 0E                 3012 	DW	GRP17
161F 77                    3013 	DB	77H
1620 6E 6C 65              3014 	DB	'nle'
1623 65 0E                 3015 	DW	GRP17
1625 7F                    3016 	DB	7FH
1626                       3017 L3:
1626 03                    3018 	DB	3
1627 65 61                 3019 	DB	'ea'
1629 49 0C                 3020 	DW	GRP6
162B 8D                    3021 	DB	8DH
162C 64 73                 3022 	DB	'ds'
162E 49 0C                 3023 	DW	GRP6
1630 C5                    3024 	DB	0C5H
1631 65 73                 3025 	DB	'es'
1633 49 0C                 3026 	DW	GRP6
1635 C4                    3027 	DB	0C4H
1636                       3028 L4:
1636 05                    3029 	DB	5
1637 6F 6F 70              3030 	DB	'oop'
163A 65 0E                 3031 	DW	GRP17
163C E2                    3032 	DB	0E2H
163D 6F 64 62              3033 	DB	'odb'
1640 1B 0A                 3034 	DW	PUT
1642 AC                    3035 	DB	0ACH
1643 6F 64 77              3036 	DB	'odw'
1646 1B 0A                 3037 	DW	PUT
1648 AD                    3038 	DB	0ADH
1649 61 68 66              3039 	DB	'ahf'
164C 1B 0A                 3040 	DW	PUT
164E 9F                    3041 	DB	9FH
164F 6F 63 6B              3042 	DB	'ock'
1652 1B 0A                 3043 	DW	PUT
1654 F0                    3044 	DB	0F0H
1655                       3045 L5:
1655 04                    3046 	DB	4
1656 6F 6F 70 65           3047 	DB	'oope'
165A 65 0E                 3048 	DW	GRP17
165C E1                    3049 	DB	0E1H
165D 6F 6F 70 7A           3050 	DB	'oopz'
1661 65 0E                 3051 	DW	GRP17
1663 E1                    3052 	DB	0E1H
1664 6F 64 73 62           3053 	DB	'odsb'
1668 1B 0A                 3054 	DW	PUT
166A AC                    3055 	DB	0ACH
166B 6F 64 73 77           3056 	DB	'odsw'
166F 1B 0A                 3057 	DW	PUT
1671 AD                    3058 	DB	0ADH
1672                       3059 L6:
1672 02                    3060 	DB	2
1673 6F 6F 70 6E 65        3061 	DB	'oopne'
1678 65 0E                 3062 	DW	GRP17
167A E0                    3063 	DB	0E0H
167B 6F 6F 70 6E 7A        3064 	DB	'oopnz'
1680 65 0E                 3065 	DW	GRP17
1682 E0                    3066 	DB	0E0H
1683                       3067 M3:
1683 02                    3068 	DB	2
1684 6F 76                 3069 	DB	'ov'
1686 AE 09                 3070 	DW	GRP1
1688 88                    3071 	DB	88H
1689 75 6C                 3072 	DB	'ul'
168B D5 0C                 3073 	DW	GRP10
168D 20                    3074 	DB	20H
168E                       3075 M4:
168E 02                    3076 	DB	2
168F 6F 76 62              3077 	DB	'ovb'
1692 1B 0A                 3078 	DW	PUT
1694 A4                    3079 	DB	0A4H
1695 6F 76 77              3080 	DB	'ovw'
1698 1B 0A                 3081 	DW	PUT
169A A5                    3082 	DB	0A5H
169B                       3083 M5:
169B 02                    3084 	DB	2
169C 6F 76 73 62           3085 	DB	'ovsb'
16A0 1B 0A                 3086 	DW	PUT
16A2 A4                    3087 	DB	0A4H
16A3 6F 76 73 77           3088 	DB	'ovsw'
16A7 1B 0A                 3089 	DW	PUT
16A9 A5                    3090 	DB	0A5H
16AA                       3091 N3:
16AA 03                    3092 	DB	3
16AB 6F 74                 3093 	DB	'ot'
16AD 83 0C                 3094 	DW	GRP9
16AF 10                    3095 	DB	10H
16B0 65 67                 3096 	DB	'eg'
16B2 83 0C                 3097 	DW	GRP9
16B4 18                    3098 	DB	18H
16B5 6F 70                 3099 	DB	'op'
16B7 1B 0A                 3100 	DW	PUT
16B9 90                    3101 	DB	90H
16BA                       3102 O2:
16BA 01                    3103 	DB	1
16BB 72                    3104 	DB	'r'
16BC 39 0D                 3105 	DW	GRP13
16BE 0A                    3106 	DB	0AH
16BF                       3107 O3:
16BF 02                    3108 	DB	2
16C0 75 74                 3109 	DB	'ut'
16C2 98 0B                 3110 	DW	GRP4
16C4 E6                    3111 	DB	0E6H
16C5 72 67                 3112 	DB	'rg'
16C7 C1 0B                 3113 	DW	GRP5
16C9 00                    3114 	DB	0
16CA                       3115 O4:
16CA 02                    3116 	DB	2
16CB 75 74 62              3117 	DB	'utb'
16CE 98 0B                 3118 	DW	GRP4
16D0 E6                    3119 	DB	0E6H
16D1 75 74 77              3120 	DB	'utw'
16D4 98 0B                 3121 	DW	GRP4
16D6 E7                    3122 	DB	0E7H
16D7                       3123 P3:
16D7 02                    3124 	DB	2
16D8 6F 70                 3125 	DB	'op'
16DA 59 0F                 3126 	DW	GRP22
16DC 8F                    3127 	DB	8FH
16DD 75 74                 3128 	DB	'ut'
16DF C1 0B                 3129 	DW	GRP5
16E1 03                    3130 	DB	3
16E2                       3131 P4:
16E2 02                    3132 	DB	2
16E3 75 73 68              3133 	DB	'ush'
16E6 07 0B                 3134 	DW	GRP2
16E8 FF                    3135 	DB	0FFH
16E9 6F 70 66              3136 	DB	'opf'
16EC 1B 0A                 3137 	DW	PUT
16EE 9D                    3138 	DB	9DH
16EF                       3139 P5:
16EF 01                    3140 	DB	1
16F0 75 73 68 66           3141 	DB	'ushf'
16F4 1B 0A                 3142 	DW	PUT
16F6 9C                    3143 	DB	9CH
16F7                       3144 R3:
16F7 06                    3145 	DB	6
16F8 65 74                 3146 	DB	'et'
16FA E6 0D                 3147 	DW	GRP16
16FC C3                    3148 	DB	0C3H
16FD 65 70                 3149 	DB	'ep'
16FF 1B 0A                 3150 	DW	PUT
1701 F3                    3151 	DB	0F3H
1702 6F 6C                 3152 	DB	'ol'
1704 0D 0D                 3153 	DW	GRP12
1706 00                    3154 	DB	0
1707 6F 72                 3155 	DB	'or'
1709 0D 0D                 3156 	DW	GRP12
170B 08                    3157 	DB	8
170C 63 6C                 3158 	DB	'cl'
170E 0D 0D                 3159 	DW	GRP12
1710 10                    3160 	DB	10H
1711 63 72                 3161 	DB	'cr'
1713 0D 0D                 3162 	DW	GRP12
1715 18                    3163 	DB	18H
1716                       3164 R4:
1716 02                    3165 	DB	2
1717 65 70 7A              3166 	DB	'epz'
171A 1B 0A                 3167 	DW	PUT
171C F3                    3168 	DB	0F3H
171D 65 70 65              3169 	DB	'epe'
1720 1B 0A                 3170 	DW	PUT
1722 F3                    3171 	DB	0F3H
1723                       3172 R5:
1723 02                    3173 	DB	2
1724 65 70 6E 7A           3174 	DB	'epnz'
1728 1B 0A                 3175 	DW	PUT
172A F2                    3176 	DB	0F2H
172B 65 70 6E 65           3177 	DB	'epne'
172F 1B 0A                 3178 	DW	PUT
1731 F2                    3179 	DB	0F2H
1732                       3180 S3:
1732 0B                    3181 	DB	11
1733 75 62                 3182 	DB	'ub'
1735 55 0C                 3183 	DW	GRP7
1737 2A                    3184 	DB	2AH
1738 62 62                 3185 	DB	'bb'
173A 55 0C                 3186 	DW	GRP7
173C 1A                    3187 	DB	1AH
173D 62 63                 3188 	DB	'bc'
173F 55 0C                 3189 	DW	GRP7
1741 1A                    3190 	DB	1AH
1742 74 63                 3191 	DB	'tc'
1744 1B 0A                 3192 	DW	PUT
1746 F9                    3193 	DB	0F9H
1747 74 64                 3194 	DB	'td'
1749 1B 0A                 3195 	DW	PUT
174B FD                    3196 	DB	0FDH
174C 74 69                 3197 	DB	'ti'
174E 1B 0A                 3198 	DW	PUT
1750 FB                    3199 	DB	0FBH
1751 68 6C                 3200 	DB	'hl'
1753 0D 0D                 3201 	DW	GRP12
1755 20                    3202 	DB	20H
1756 68 72                 3203 	DB	'hr'
1758 0D 0D                 3204 	DW	GRP12
175A 28                    3205 	DB	28H
175B 61 6C                 3206 	DB	'al'
175D 0D 0D                 3207 	DW	GRP12
175F 20                    3208 	DB	20H
1760 61 72                 3209 	DB	'ar'
1762 0D 0D                 3210 	DW	GRP12
1764 38                    3211 	DB	38H
1765 65 67                 3212 	DB	'eg'
1767 41 0F                 3213 	DW	GRP21
1769 26                    3214 	DB	26H
176A                       3215 S4:
176A 05                    3216 	DB	5
176B 63 61 62              3217 	DB	'cab'
176E 1B 0A                 3218 	DW	PUT
1770 AE                    3219 	DB	0AEH
1771 63 61 77              3220 	DB	'caw'
1774 1B 0A                 3221 	DW	PUT
1776 AF                    3222 	DB	0AFH
1777 74 6F 62              3223 	DB	'tob'
177A 1B 0A                 3224 	DW	PUT
177C AA                    3225 	DB	0AAH
177D 74 6F 77              3226 	DB	'tow'
1780 1B 0A                 3227 	DW	PUT
1782 AB                    3228 	DB	0ABH
1783 61 68 66              3229 	DB	'ahf'
1786 1B 0A                 3230 	DW	PUT
1788 9E                    3231 	DB	9EH
1789                       3232 S5:
1789 04                    3233 	DB	4
178A 63 61 73 62           3234 	DB	'casb'
178E 1B 0A                 3235 	DW	PUT
1790 AE                    3236 	DB	0AEH
1791 63 61 73 77           3237 	DB	'casw'
1795 1B 0A                 3238 	DW	PUT
1797 AF                    3239 	DB	0AFH
1798 74 6F 73 62           3240 	DB	'tosb'
179C 1B 0A                 3241 	DW	PUT
179E AA                    3242 	DB	0AAH
179F 74 6F 73 77           3243 	DB	'tosw'
17A3 1B 0A                 3244 	DW	PUT
17A5 AB                    3245 	DB	0ABH
17A6                       3246 T4:
17A6 01                    3247 	DB	1
17A7 65 73 74              3248 	DB	'est'
17AA 30 0F                 3249 	DW	GRP20
17AC 84                    3250 	DB	84H
17AD                       3251 U2:
17AD 01                    3252 	DB	1
17AE 70                    3253 	DB	'p'
17AF 1B 0A                 3254 	DW	PUT
17B1 FC                    3255 	DB	0FCH
17B2                       3256 W4:
17B2 01                    3257 	DB	1
17B3 61 69 74              3258 	DB	'ait'
17B6 1B 0A                 3259 	DW	PUT
17B8 9B                    3260 	DB	9BH
17B9                       3261 X3:
17B9 01                    3262 	DB	1
17BA 6F 72                 3263 	DB	'or'
17BC 39 0D                 3264 	DW	GRP13
17BE 32                    3265 	DB	32H
17BF                       3266 X4:
17BF 02                    3267 	DB	2
17C0 63 68 67              3268 	DB	'chg'
17C3 38 0B                 3269 	DW	GRP3
17C5 86                    3270 	DB	86H
17C6 6C 61 74              3271 	DB	'lat'
17C9 1B 0A                 3272 	DW	PUT
17CB D7                    3273 	DB	0D7H
17CC                       3274 
17CC                       3275 
17CC                       3276 ; 8087 MNEMONIC TABLE
17CC                       3277 ; Similar to 8086 table above, except NOT distinguished by opcode length
17CC                       3278 
17CC                       3279 XM1:	;F2XM1
17CC 01                    3280 	DB	1		;One opcode
17CD 78 6D B1              3281 	DM	"xm1"
17D0 01 F0                 3282 	DB	1,0F0H
17D2                       3283 
17D2                       3284 NDPA:
17D2 03                    3285 	DB	3
17D3 64 E4                 3286 	DM	"dd"
17D5 00 C0                 3287 	DB	0,0C0H
17D7 64 64 F0              3288 	DM	"ddp"
17DA 06 C0                 3289 	DB	6,0C0H
17DC 62 F3                 3290 	DM	"bs"
17DE 01 E0                 3291 	DB	1,0E0H
17E0                       3292 
17E0                       3293 NDPB:
17E0 02                    3294 	DB	2
17E1 6C E4                 3295 	DM	"ld"
17E3 07 20                 3296 	DB	7,20H
17E5 73 74 F0              3297 	DM	"stp"
17E8 07 30                 3298 	DB	7,30H
17EA                       3299 
17EA                       3300 NDPC:
17EA 05                    3301 	DB	5
17EB 6F ED                 3302 	DM	"om"
17ED 00 D0                 3303 	DB	0,0D0H
17EF 6F 6D F0              3304 	DM	"omp"
17F2 00 18                 3305 	DB	0,18H
17F4 68 F3                 3306 	DM	"hs"
17F6 01 E0                 3307 	DB	1,0E0H
17F8 6F 6D 70 F0           3308 	DM	"ompp"
17FC 06 D9                 3309 	DB	6,0D9H
17FE 6C 65 F8              3310 	DM	"lex"
1801 03 E2                 3311 	DB	3,0E2H
1803                       3312 
1803                       3313 NDPD:
1803 06                    3314 	DB	6
1804 69 F6                 3315 	DM	"iv"
1806 00 30                 3316 	DB	0,30H
1808 69 76 F0              3317 	DM	"ivp"
180B 06 F0                 3318 	DB	6,0F0H
180D 69 76 F2              3319 	DM	"ivr"
1810 00 38                 3320 	DB	0,38H
1812 69 76 72 F0           3321 	DM	"ivrp"
1816 06 F8                 3322 	DB	6,0F8H
1818 65 63 73 74 F0        3323 	DM	"ecstp"
181D 01 F6                 3324 	DB	1,0F6H
181F 69 73 E9              3325 	DM	"isi"
1822 03 E1                 3326 	DB	3,0E1H
1824                       3327 
1824                       3328 NDPE:
1824 01                    3329 	DB	1
1825 6E E9                 3330 	DM	"ni"
1827 03 E0                 3331 	DB	3,0E0H
1829                       3332 
1829                       3333 NDPF:
1829 01                    3334 	DB	1
182A 72 65 E5              3335 	DM	"ree"
182D 05 C0                 3336 	DB	5,0C0H
182F                       3337 
182F                       3338 NDPI:
182F 0D                    3339 	DB	13
1830 61 64 E4              3340 	DM	"add"
1833 00 00                 3341 	DB	0,0
1835 6C E4                 3342 	DM	"ld"
1837 00 00                 3343 	DB	0,0
1839 73 75 E2              3344 	DM	"sub"
183C 00 00                 3345 	DB	0,0
183E 73 74 F0              3346  	DM	"stp"
1841 00 00                 3347 	DB	0,0
1843 73 F4                 3348 	DM	"st"
1845 00 00                 3349 	DB	0,0
1847 6D 75 EC              3350 	DM	"mul"
184A 00 00                 3351 	DB	0,0
184C 64 69 F6              3352 	DM	"div"
184F 00 00                 3353 	DB	0,0
1851 73 75 62 F2           3354 	DM	"subr"
1855 00 00                 3355 	DB	0,0
1857 64 69 76 F2           3356 	DM	"divr"
185B 00 00                 3357 	DB	0,0
185D 63 6F ED              3358 	DM	"com"
1860 00 00                 3359 	DB	0,0
1862 63 6F 6D F0           3360 	DM	"comp"
1866 00 00                 3361 	DB	0,0
1868 6E 63 73 74 F0        3362 	DM	"ncstp"
186D 01 F7                 3363 	DB	1,0F7H
186F 6E 69 F4              3364 	DM	"nit"
1872 03 E3                 3365 	DB	3,0E3H
1874                       3366 
1874                       3367 NDPL:
1874 0A                    3368 	DB	10
1875 E4                    3369 	DM	"d"
1876 00 00                 3370 	DB	0,0
1878 64 FA                 3371 	DM	"dz"
187A 01 EE                 3372 	DB	1,0EEH
187C 64 B1                 3373 	DM	"d1"
187E 01 E8                 3374 	DB	1,0E8H
1880 64 70 E9              3375 	DM	"dpi"
1883 01 EB                 3376 	DB	1,0EBH
1885 64 6C 32 F4           3377 	DM	"dl2t"
1889 01 E9                 3378 	DB	1,0E9H
188B 64 6C 32 E5           3379 	DM	"dl2e"
188F 01 EA                 3380 	DB	1,0EAH
1891 64 6C 67 B2           3381 	DM	"dlg2"
1895 01 EC                 3382 	DB	1,0ECH
1897 64 6C 6E B2           3383 	DM	"dln2"
189B 01 EB                 3384 	DB	1,0EBH
189D 64 63 F7              3385 	DM	"dcw"
18A0 01 00                 3386 	DB	1,0
18A2 64 65 6E F6           3387 	DM	"denv"
18A6 00 00                 3388 	DB	0,0
18A8                       3389 
18A8                       3390 NDPM:
18A8 02                    3391 	DB	2
18A9 75 EC                 3392 	DM	"ul"
18AB 00 00                 3393 	DB	0,0
18AD 75 6C F0              3394 	DM	"ulp"
18B0 00 00                 3395 	DB	0,0
18B2                       3396 
18B2                       3397 NDPP:
18B2 03                    3398 	DB	3
18B3 72 65 ED              3399 	DM	"rem"
18B6 01 F8                 3400 	DB	1,0F8H
18B8 74 61 EE              3401 	DM	"tan"
18BB 01 F2                 3402 	DB	1,0F2H
18BD 61 74 61 EE           3403 	DM	"atan"
18C1 01 F3                 3404 	DB	1,0F3H
18C3                       3405 
18C3                       3406 NDPR:
18C3 02                    3407 	DB	2
18C4 6E 64 69 6E F4        3408 	DM	"ndint"
18C9 01 FC                 3409 	DB	1,0FCH
18CB 73 74 6F F2           3410 	DM	"stor"
18CF 05 00                 3411 	DB	5,0
18D1                       3412 
18D1                       3413 NDPS:
18D1 0C                    3414 	DB	12
18D2 F4                    3415 	DM	"t"
18D3 00 00                 3416 	DB	0,0
18D5 74 F0                 3417 	DM	"tp"
18D7 00 00                 3418 	DB	0,0
18D9 75 E2                 3419 	DM	"ub"
18DB 00 00                 3420 	DB	0,0
18DD 75 62 F0              3421 	DM	"ubp"
18E0 00 00                 3422 	DB	0,0
18E2 75 62 F2              3423 	DM	"ubr"
18E5 00 00                 3424 	DB	0,0
18E7 75 62 72 F0           3425 	DM	"ubrp"
18EB 00 00                 3426 	DB	0,0
18ED 71 72 F4              3427 	DM	"qrt"
18F0 01 FA                 3428 	DB	1,0FAH
18F2 63 61 6C E5           3429 	DM	"cale"
18F6 01 FD                 3430 	DB	1,0FDH
18F8 61 76 E5              3431 	DM	"ave"
18FB 05 00                 3432 	DB	5,0
18FD 74 63 F7              3433 	DM	"tcw"
1900 05 00                 3434 	DB	5,0
1902 74 65 6E F6           3435 	DM	"tenv"
1906 05 00                 3436 	DB	5,0
1908 74 73 F7              3437 	DM	"tsw"
190B 05 00                 3438 	DB	5,0
190D                       3439 
190D                       3440 NDPT:
190D 01                    3441 	DB	1
190E 73 F4                 3442 	DM	"st"
1910 01 E4                 3443 	DB	1,0E4H
1912                       3444 
1912                       3445 NDPW:
1912 01                    3446 	DB	1
1913 61 69 F4              3447 	DM	"ait"
1916 00 00                 3448 	DB	0,0
1918                       3449 
1918                       3450 NDPX:
1918 03                    3451 	DB	3
1919 63 E8                 3452 	DM	"ch"
191B 01 C4                 3453 	DB	1,0C4H
191D 61 ED                 3454 	DM	"am"
191F 01 E5                 3455 	DB	1,0E5H
1921 74 72 61 63 F4        3456 	DM	"tract"
1926 01 F4                 3457 	DB	1,0F4H
1928                       3458 
1928                       3459 NDPY:
1928 02                    3460 	DB	2
1929 6C 32 F8              3461 	DM	"l2x"
192C 01 F1                 3462 	DB	1,0F1H
192E 6C 32 78 70 B1        3463 	DM	"l2xp1"
1933 01 F9                 3464 	DB	1,0F9H
1935                       3465 
1935                       3466 
1935                       3467 OPTAB:
1935                       3468 ; Table of pointers  to mnemonics. For each letter of the alphabet (the
1935                       3469 ; starting letter of the mnemonic), there are 5 entries. Each entry
1935                       3470 ; corresponds to a mnemonic whose length is 2, 3, 4, 5, and 6 characters
1935                       3471 ; long, respectively. If there are no mnemonics for a given combination
1935                       3472 ; of first letter and length (such as A-2), then the corresponding entry
1935                       3473 ; points to NONE. Otherwise, it points to a place in the mnemonic table
1935                       3474 ; for that type.
1935                       3475 
1935                       3476 ; This table only needs to be modified if a mnemonic is added to a group
1935                       3477 ; previously marked NONE. Change the NONE to a label made up of the first
1935                       3478 ; letter of the mnemonic and its length, then add a new subsection to
1935                       3479 ; the mnemonic table in alphabetical order.
1935                       3480 
1935 7D 14                 3481 	DW	NONE
1937 7E 14                 3482 	DW	A3
1939 7D 14                 3483 	DW	NONE
193B A2 14                 3484 	DW	A5
193D 7D 14                 3485 	DW	NONE
193F 7D 14                 3486 	DW	NONE	;B
1941 7D 14                 3487 	DW	NONE
1943 7D 14                 3488 	DW	NONE
1945 7D 14                 3489 	DW	NONE
1947 7D 14                 3490 	DW	NONE
1949 7D 14                 3491 	DW	NONE	;C
194B AA 14                 3492 	DW	C3
194D CE 14                 3493 	DW	C4
194F E1 14                 3494 	DW	C5
1951 7D 14                 3495 	DW	NONE
1953 F0 14                 3496 	DW	D2	;D
1955 05 15                 3497 	DW	D3
1957 1A 15                 3498 	DW	D4
1959 7D 14                 3499 	DW	NONE
195B 7D 14                 3500 	DW	NONE
195D 21 15                 3501 	DW	E2	;E
195F 26 15                 3502 	DW	E3
1961 7D 14                 3503 	DW	NONE
1963 36 15                 3504 	DW	E5
1965 7D 14                 3505 	DW	NONE
1967 7D 14                 3506 	DW	NONE	;F
1969 7D 14                 3507 	DW	NONE
196B 7D 14                 3508 	DW	NONE
196D 7D 14                 3509 	DW	NONE
196F 7D 14                 3510 	DW	NONE
1971 7D 14                 3511 	DW	NONE	;G
1973 7D 14                 3512 	DW	NONE
1975 7D 14                 3513 	DW	NONE
1977 7D 14                 3514 	DW	NONE
1979 7D 14                 3515 	DW	NONE
197B 7D 14                 3516 	DW	NONE	;H
197D 3E 15                 3517 	DW	H3
197F 44 15                 3518 	DW	H4
1981 7D 14                 3519 	DW	NONE
1983 7D 14                 3520 	DW	NONE
1985 4B 15                 3521 	DW	I2	;I
1987 54 15                 3522 	DW	I3
1989 69 15                 3523 	DW	I4
198B 7D 14                 3524 	DW	NONE
198D 7D 14                 3525 	DW	NONE
198F 82 15                 3526 	DW	J2	;J
1991 AB 15                 3527 	DW	J3
1993 01 16                 3528 	DW	J4
1995 7D 14                 3529 	DW	NONE
1997 7D 14                 3530 	DW	NONE
1999 7D 14                 3531 	DW	NONE	;K
199B 7D 14                 3532 	DW	NONE
199D 7D 14                 3533 	DW	NONE
199F 7D 14                 3534 	DW	NONE
19A1 7D 14                 3535 	DW	NONE
19A3 7D 14                 3536 	DW	NONE	;L
19A5 26 16                 3537 	DW	L3
19A7 36 16                 3538 	DW	L4
19A9 55 16                 3539 	DW	L5
19AB 72 16                 3540 	DW	L6
19AD 7D 14                 3541 	DW	NONE	;M
19AF 83 16                 3542 	DW	M3
19B1 8E 16                 3543 	DW	M4
19B3 9B 16                 3544 	DW	M5
19B5 7D 14                 3545 	DW	NONE
19B7 7D 14                 3546 	DW	NONE	;N
19B9 AA 16                 3547 	DW	N3
19BB 7D 14                 3548 	DW	NONE
19BD 7D 14                 3549 	DW	NONE
19BF 7D 14                 3550 	DW	NONE
19C1 BA 16                 3551 	DW	O2	;O
19C3 BF 16                 3552 	DW	O3
19C5 CA 16                 3553 	DW	O4
19C7 7D 14                 3554 	DW	NONE
19C9 7D 14                 3555 	DW	NONE
19CB 7D 14                 3556 	DW	NONE	;P
19CD D7 16                 3557 	DW	P3
19CF E2 16                 3558 	DW	P4
19D1 EF 16                 3559 	DW	P5
19D3 7D 14                 3560 	DW	NONE
19D5 7D 14                 3561 	DW	NONE	;Q
19D7 7D 14                 3562 	DW	NONE
19D9 7D 14                 3563 	DW	NONE
19DB 7D 14                 3564 	DW	NONE
19DD 7D 14                 3565 	DW	NONE
19DF 7D 14                 3566 	DW	NONE	;R
19E1 F7 16                 3567 	DW	R3
19E3 16 17                 3568 	DW	R4
19E5 23 17                 3569 	DW	R5
19E7 7D 14                 3570 	DW	NONE
19E9 7D 14                 3571 	DW	NONE	;S
19EB 32 17                 3572 	DW	S3
19ED 6A 17                 3573 	DW	S4
19EF 89 17                 3574 	DW	S5
19F1 7D 14                 3575 	DW	NONE
19F3 7D 14                 3576 	DW	NONE	;T
19F5 7D 14                 3577 	DW	NONE
19F7 A6 17                 3578 	DW	T4
19F9 7D 14                 3579 	DW	NONE
19FB 7D 14                 3580 	DW	NONE
19FD AD 17                 3581 	DW	U2	;U
19FF 7D 14                 3582 	DW	NONE
1A01 7D 14                 3583 	DW	NONE
1A03 7D 14                 3584 	DW	NONE
1A05 7D 14                 3585 	DW	NONE
1A07 7D 14                 3586 	DW	NONE	;V
1A09 7D 14                 3587 	DW	NONE
1A0B 7D 14                 3588 	DW	NONE
1A0D 7D 14                 3589 	DW	NONE
1A0F 7D 14                 3590 	DW	NONE
1A11 7D 14                 3591 	DW	NONE	;W
1A13 7D 14                 3592 	DW	NONE
1A15 B2 17                 3593 	DW	W4
1A17 7D 14                 3594 	DW	NONE
1A19 7D 14                 3595 	DW	NONE
1A1B 7D 14                 3596 	DW	NONE	;X
1A1D B9 17                 3597 	DW	X3
1A1F BF 17                 3598 	DW	X4
1A21 7D 14                 3599 	DW	NONE
1A23 7D 14                 3600 	DW	NONE
1A25 7D 14                 3601 	DW	NONE	;Y
1A27 7D 14                 3602 	DW	NONE
1A29 7D 14                 3603 	DW	NONE
1A2B 7D 14                 3604 	DW	NONE
1A2D 7D 14                 3605 	DW	NONE
1A2F 7D 14                 3606 	DW	NONE	;Z
1A31 7D 14                 3607 	DW	NONE
1A33 7D 14                 3608 	DW	NONE
1A35 7D 14                 3609 	DW	NONE
1A37 7D 14                 3610 	DW	NONE
1A39                       3611 
1A39                       3612 NDPTAB:
1A39                       3613 ;Lookup table for 8087 mnemonics. There is one entry for each letter of the
1A39                       3614 ;alphabet
1A39 D2 17                 3615 	DW	NDPA
1A3B E0 17                 3616 	DW	NDPB
1A3D EA 17                 3617 	DW	NDPC
1A3F 03 18                 3618 	DW	NDPD
1A41 24 18                 3619 	DW	NDPE
1A43 29 18                 3620 	DW	NDPF
1A45 7D 14                 3621 	DW	NONE	;G
1A47 7D 14                 3622 	DW	NONE	;H
1A49 2F 18                 3623 	DW	NDPI
1A4B 7D 14                 3624 	DW	NONE	;J
1A4D 7D 14                 3625 	DW	NONE	;K
1A4F 74 18                 3626 	DW	NDPL
1A51 A8 18                 3627 	DW	NDPM
1A53 7D 14                 3628 	DW	NONE	;N
1A55 7D 14                 3629 	DW	NONE	;O
1A57 B2 18                 3630 	DW	NDPP
1A59 7D 14                 3631 	DW	NONE	;Q
1A5B C3 18                 3632 	DW	NDPR
1A5D D1 18                 3633 	DW	NDPS
1A5F 0D 19                 3634 	DW	NDPT
1A61 7D 14                 3635 	DW	NONE	;U
1A63 7D 14                 3636 	DW	NONE	;V
1A65 12 19                 3637 	DW	NDPW
1A67 18 19                 3638 	DW	NDPX
1A69 28 19                 3639 	DW	NDPY
1A6B 7D 14                 3640 	DW	NONE	;Z
1A6D                       3641 
1A6D                       3642 
1A6D 2A 2A 2A 2A 2A 20 45  3643 ERRMES:	DM	'***** ERROR no. '
     52 52 4F 52 20 6E 6F 
     2E A0                
1A7D 0D 0A 4E 6F 20 64 69  3644 NOSPAC:	DB	13,10,'No directory space',13,10,24H
     72 65 63 74 6F 72 79 
     20 73 70 61 63 65 0D 
     0A 24                
1A94 48 0D 8A              3645 ENDMES:	DM	'H',13,10
1A97 0D 0A 49 6E 73 75 66  3646 NOMEM:	DB	13,10,'Insufficient memory',13,10,'$'
     66 69 63 69 65 6E 74 
     20 6D 65 6D 6F 72 79 
     0D 0A 24             
1AAF 0D 0A 46 69 6C 65 20  3647 NOFILE:	DB	13,10,'File not found',13,10,'$'
     6E 6F 74 20 66 6F 75 
     6E 64 0D 0A 24       
1AC2 0D 0A 44 69 73 6B 20  3648 WRTERR:	DB	13,10,'Disk full',13,10,'$'
     66 75 6C 6C 0D 0A 24 
1AD0 0D 0A 42 61 64 20 64  3649 BADDSK:	DB	13,10,'Bad disk specifier',13,10,'$'
     69 73 6B 20 73 70 65 
     63 69 66 69 65 72 0D 
     0A 24                
1AE7 0D 0A 0D 0A 45 72 72  3650 ERCNTM:	DM	13,10,13,10,'Error Count ='
     6F 72 20 43 6F 75 6E 
     74 20 BD             
1AF8 0D 0A 53 79 6D 62 6F  3651 SYMMES:	DM	13,10,'Symbol Table',13,10,13,10
     6C 20 54 61 62 6C 65 
     0D 0A 0D 8A          
1B0A 41 53 4D 00 00        3652 EXTEND:	DB	'ASM',0,0
1B0F 05 65 6E 64 69 66     3653 IFEND:	DB	5,'endif'
1B15 02 69 66              3654 IFNEST:	DB	2,'if'
1B18 72 65 F4              3655 RETSTR:	DM	'ret'
1B1B 00 20 20 20 20 20 20  3656 HEXFCB:	DB	0,'        HEX',0,0,0,0
     20 20 48 45 58 00 00 
     00 00                
1B2B                       3657 	DS	16
1B3B 00 00 00 00 00        3658 	DB	0,0,0,0,0
1B40 00 20 20 20 20 20 20  3659 LSTFCB:	DB	0,'        PRN',0,0,0,0
     20 20 50 52 4E 00 00 
     00 00                
1B50                       3660 	DS	16
1B60 00 00 00 00 00        3661 	DB	0,0,0,0,0
1B65                       3662 PC:	DS	2
1B67                       3663 OLDPC:	DS	2
1B69                       3664 LABPT:	DS	2
1B6B                       3665 FLAG:	DS	1
1B6C                       3666 LONG:	DS	1
1B6D                       3667 ADDR:	DS	2
1B6F                       3668 ALABEL:	DS	2
1B71                       3669 DATA:	DS	2
1B73                       3670 DLABEL:	DS	2
1B75                       3671 CON:	DS	2
1B77                       3672 UNDEF:	DS	2
1B79                       3673 LENID:	DS	1
1B7A                       3674 ID:	DS	80
1BCA                       3675 CHR:	DS	1
1BCB                       3676 SYM:	DS	1
1BCC                       3677 BASE:	DS	2
1BCE                       3678 HEAP:	DS	2
1BD0                       3679 SYMFLG:	DS	1
1BD1                       3680 CODE:	DS	2
1BD3                       3681 DATSIZ:	DS	1
1BD4                       3682 RELOC:	DS	1
1BD5                       3683 BCOUNT:	DS	1
1BD6                       3684 COUNT:	DS	1
1BD7                       3685 ERR:	DS	1
1BD8                       3686 LINE:	DS	2
1BDA                       3687 HEXLEN:	DS	2
1BDC                       3688 HEXADD:	DS	2
1BDE                       3689 LASTAD:	DS	2
1BE0                       3690 HEXCNT:	DS	1
1BE1                       3691 CHKSUM:	DS	1
1BE2                       3692 LINFLG:	DS	1
1BE3                       3693 PREV:	DS	1
1BE4                       3694 IFFLG:	DS	1
1BE5                       3695 CHKLAB:	DS	1
1BE6                       3696 ERRCNT:	DS	2
1BE8                       3697 LSTRET:	DS	2
1BEA                       3698 RETPT:	DS	2
1BEC                       3699 LSTDEV:	DS	2
1BEE                       3700 SPC:	DS	1
1BEF                       3701 NOWAIT:	DS	1
1BF0                       3702 IX:	DS	2
1BF2                       3703 IY:	DS	2
1BF4                       3704 HEXPNT:	DS	2
1BF6                       3705 LSTPNT:	DS	2
1BF8                       3706 HEXBUF:	DS	HEXBUFSIZ
1C3E                       3707 LSTBUF:	DS	LSTBUFSIZ
203E                       3708 BUFPT:	DS	2
2040                       3709 SRCBUF:	DS	BUFSIZ
2440                       3710 	DS	80
2490                       3711 	ALIGN
2490                       3712 STACK:	EQU	$
2490                       3713 START:	EQU	$


Error Count =    0
