	TITLE	'Z-80 Disassembler for 8080A'
	ORG	0100H
BDOS	EQU	05H
CTLTBL	EQU	1C00H
FCB	EQU	5CH
STACK	EQU	1BFDH
SYMTBL	EQU	2200H
TBUF	EQU	80H
;
START:	CALL	ENTRY
	DB	'RESOURCE by Ward Christensen'
	DB	0DH,0AH,'(AS OF 07/31/80)'
	DB	0DH,0AH,'Z-80 Version 2'
	DB	0DH,0AH,'$Copyright 1980'
ENTRY:	POP	D
	MVI	C,9
	CALL	BDOS
	LXI	H,0
	DAD	SP
	SHLD	STACK
	LXI	SP,STACK
	CALL	PRTSTR
	DB	0DH,0AH,'Memory open to '
	DB	0
	LHLD	6
	DCX	H
	CALL	PRWORD
	CALL	CRLF
	CALL	CRLF
L0174:	CALL	INITBL
NXCMD:	XRA	A
	STA	WFIFLG
	STA	QUIFLG
	LXI	SP,STACK
	CALL	GTCMD
L0184:	LXI	H,CMDBUF+2
	MOV	A,M
	CPI	0DH
	JZ	NXCMD
	CPI	';'
	JZ	CMCMNT
	CPI	'A'
	JZ	CMATMT
	CPI	'B'
	JZ	CMBLD
	CPI	'C'
	JZ	CMCTL
	CPI	'D'
	JZ	CMDUMP
	CPI	'E'
	JZ	CMENTR
	CPI	'F'
	JZ	CMFIND
	CPI	'K'
	JZ	CMKILL
	CPI	'L'
	JZ	CMLIST
	CPI	'O'
	JZ	CMOFST
	CPI	'P'
	JZ	CMPRLG
	CPI	'Q'
	JZ	CMQIET
	CPI	'R'
	JZ	CMREAD
	CPI	'S'
	JZ	CMSAVE
	CPI	'T'
	JZ	CMTRIM
	CPI	'U'
	JZ	CMUSEC
	CPI	'X'
	JZ	CMPURG
	CPI	'Z'
	JZ	CMEOF
	CPI	'?'
	JZ	CMSTTS
CMERR:	XRA	A
	STA	WFIFLG
	STA	QUIFLG
	CALL	PRTSTR
	DB	'?',0DH,0AH,0
	JMP	NXCMD
;
CMTRIM:	LDA	TRMFLG
	CMA
	STA	TRMFLG
	ORA	A
	JZ	TRMOF
	CALL	PRTSTR
	DB	'Trim On',0DH,0AH,0
	JMP	NXCMD
;
TRMOF:	CALL	PRTSTR
	DB	'Trim Off',0DH,0AH,0
	JMP	NXCMD
;
CMPURG:	CALL	PRTSTR
	DB	'Y/N purge all symbols & '
	DB	'CTL?',0
	CALL	GTCMD
	LDA	CMDBUF+2
	CPI	'Y'
	JZ	L0174
	CPI	'N'
	JZ	NXCMD
	JMP	CMPURG
;
CMPRLG:	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	CMERR
	CALL	GTVAL
	CPI	' '
	JZ	L0241
	CPI	','
	JNZ	CMERR
L0241:	INX	H
	PUSH	D
	PUSH	H
	MVI	A,1
	STA	WFIFLG
	CALL	L1A7E
	DB	9,'.LOC',9,0
	POP	H
	POP	D
	MOV	A,D
	CALL	XO0
	MOV	A,E
	CALL	XO
	MVI	A,'H'
	CALL	TYPE
	CALL	CRLF
	PUSH	D
	CALL	GTVAL
	CPI	0DH
	JNZ	CMERR
	POP	B
	LXI	H,SYMTBL
L0272:	INX	H
	INX	H
	MOV	A,M
	ORA	A
	JZ	NXCMD
	DCX	H
	DCX	H
	MOV	A,M
	SUB	C
	INX	H
	MOV	A,M
	SBB	B
	JC	L028C
	DCX	H
	MOV	A,M
	SUB	E
	INX	H
	MOV	A,M
	SBB	D
	JC	L02D9
L028C:	PUSH	H
	PUSH	B
	INX	H
	MOV	B,M
	PUSH	H
	INX	H
	MOV	A,M
	DCX	H
	CPI	'A'
	JC	L02E5
L0299:	INX	H
	MOV	A,M
	CPI	'+'
	JZ	L02E5
	CPI	'-'
	JZ	L02E5
	DCR	B
	JNZ	L0299
	POP	H
	MOV	B,M
	MVI	A,1
	STA	WFIFLG
L02B0:	INX	H
	MOV	A,M
	CALL	TYPE
	DCR	B
	JNZ	L02B0
	CALL	L1A7E
	DB	9,'=',9,0
	POP	B
	POP	H
	MOV	A,M
	ORA	A
	CNZ	XO0
	DCX	H
	MOV	A,M
	CALL	XO
	MVI	A,'H'
	CALL	TYPE
	CALL	CRLF
	XRA	A
	STA	WFIFLG
	INX	H
L02D9:	INX	H
	MOV	A,M
	CALL	ADDF
	INX	H
	CALL	L1ABF
	JMP	L0272
;
L02E5:	POP	H
	POP	B
	POP	H
	JMP	L02D9
;
CMQIET:	MVI	A,1
	STA	QUIFLG
	LXI	D,CMDBUF+2
	LXI	H,CMDBUF+3
L02F6:	MOV	A,M
	STAX	D
	INX	H
	INX	D
	CPI	0DH
	JNZ	L02F6
	JMP	L0184
;
	DB	'Congratulations, you found '
	DB	'the patch area!'
CMDUMP:	LHLD	L1B1B
	PUSH	H
	XCHG
	LHLD	DMPCNT
	DAD	D
	SHLD	L1B1D
	POP	D
	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	L038B
	CPI	'S'
	JZ	DUSYMT
	CPI	'='
	JZ	SDUCNT
	CPI	','
	JZ	L035D
L0351:	CALL	GTVAL
	PUSH	H
	LHLD	DMPCNT
	DAD	D
	SHLD	L1B1D
	POP	H
L035D:	CPI	0DH
	JZ	L0376
	CPI	' '
	JZ	L036C
	CPI	','
	JNZ	CMERR
L036C:	INX	H
	PUSH	D
	CALL	GTVAL
	XCHG
	SHLD	L1B1D
	POP	D
L0376:	LHLD	OFFSET
	PUSH	H
	DAD	D
	SHLD	L1B1B
	LHLD	L1B1D
	POP	D
	DAD	D
	SHLD	L1B1D
	CPI	0DH
	JNZ	CMERR
L038B:	LHLD	L1B1B
L038E:	CALL	L1ABF
	PUSH	H
	CALL	L087C
	CALL	PRWORD
	POP	H
	PUSH	H
	CALL	PRSPC
L039D:	MOV	A,M
	CALL	XO
	INX	H
	MOV	A,L
	ANI	3
	CZ	PRSPC
	MOV	A,L
	ANI	7
	CZ	PRSPC
	MOV	A,L
	ANI	0FH
	JNZ	L039D
	CALL	PSTAR
	POP	H
L03B8:	MOV	A,M
	CPI	' '
	JC	L03C3
	CPI	7FH
	JC	L03C5
L03C3:	MVI	A,'.'
L03C5:	CALL	TYPE
	INX	H
	MOV	A,L
	ANI	0FH
	JZ	L03D7
	ANI	7
	CZ	PRSPC
	JMP	L03B8
;
L03D7:	CALL	PSTAR
	CALL	CRLF
	SHLD	L1B1B
	LDA	L1B1D
	SUB	L
	LDA	L1B1D+1
	SBB	H
	JNC	L038E
	JMP	NXCMD
;
SDUCNT:	INX	H
	CALL	GTVAL
	INX	H
	DCX	D
	XCHG
	SHLD	DMPCNT
	XCHG
	CPI	','
	JZ	L0351
	CPI	' '
	JZ	L0351
	CPI	0DH
	JZ	NXCMD
	JMP	CMERR
;
DUSYMT:	LXI	H,CMDBUF+4
	MOV	A,M
	CPI	'.'
	JNZ	L0423
	CALL	L1872
	CALL	L1798
	JNC	L0426
	LHLD	L1B4B
	JMP	L0426
;
L0423:	LXI	H,SYMTBL
L0426:	MOV	E,M
	INX	H
	MOV	D,M
	INX	H
	MOV	A,M
	ORA	A
	JZ	NXCMD
	XCHG
	CALL	PRWORD
	XCHG
	MOV	B,M
	INX	H
L0436:	MOV	A,M
	CALL	TYPE
	INX	H
	DCR	B
	JNZ	L0436
	CALL	CRLF
	CALL	L1ABF
	JMP	L0426
;
L0448:	LHLD	OFFSET
	CALL	PRWORD
	CALL	CRLF
	JMP	NXCMD
;
CMOFST:	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	L0448
	CALL	GTVAL
	CPI	0DH
	JNZ	CMERR
	XCHG
	SHLD	OFFSET
	JMP	NXCMD
;
GFNAM:	LDA	WRTFLG
	ORA	A
	JNZ	RRQERR
	STA	FCB
	STA	FCB+12
	LXI	H,CMDBUF+3
	LDA	CMDBUF+4
	CPI	' '
	JZ	CMERR
	CPI	':'
	JNZ	L0493
	LDA	CMDBUF+3
	SUI	'@'
	STA	FCB
	INX	H
	INX	H
L0493:	LXI	D,FCB+1
	MVI	B,8
	CALL	L04A1
	MVI	B,3
	CALL	L04A1
	RET
;
L04A1:	MOV	A,M
	CPI	0DH
	JZ	L04BE
	INX	H
	CPI	'.'
	JZ	L04BE
	STAX	D
	INX	D
	DCR	B
	JNZ	L04A1
L04B3:	MOV	A,M
	CPI	0DH
	RZ
	CPI	'.'
	INX	H
	RZ
	JMP	L04B3
;
L04BE:	MVI	A,' '
	STAX	D
	INX	D
	DCR	B
	JNZ	L04BE
	RET
;
CMATMT:	MVI	A,1
	STA	L1B4F
	XRA	A
	STA	SYBFLG
	JMP	L04E2
;
CMBLD:	MVI	A,1
	STA	SYBFLG
	JMP	L04E2
;
CMLIST:	XRA	A
	STA	SYBFLG
	STA	L1B4F
L04E2:	XRA	A
	STA	WFIFLG
	LDA	LISCNT
	STA	LISCNT+1
	STA	L1B35
	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	L052A
	CPI	','
	JZ	L051E
	CPI	' '
	JZ	L051E
	CPI	'='
	JZ	SLICNT
L0507:	CALL	GTVAL
	XCHG
	SHLD	PCNTR
	XCHG
	CPI	0DH
	JZ	L052A
	CPI	' '
	JZ	L051E
	CPI	','
	JNZ	CMERR
L051E:	INX	H
	CALL	GTVAL
	XCHG
	SHLD	L1B25
	XRA	A
	STA	L1B35
L052A:	CALL	L1ABF
	LDA	L1B35
	ORA	A
	JZ	L053E
	LDA	LISCNT+1
	DCR	A
	JM	NXCMD
	JMP	L054C
;
L053E:	LHLD	L1B25
	LDA	PCNTR
	SUB	L
	LDA	PCNTR+1
	SBB	H
	JNC	NXCMD
L054C:	LDA	L1B4F
	ORA	A
	JZ	L0586
	LHLD	PCNTR
	XCHG
	LHLD	OFFSET
	DAD	D
	MVI	B,8
L055D:	MOV	A,M
	CALL	L1AFE
	JC	L0586
	INX	H
	DCR	B
	JNZ	L055D
L0569:	MOV	A,M
	CALL	L1AFE
	INX	H
	JNC	L0569
	DCX	H
	CALL	L087C
	XCHG
	PUSH	D
	LHLD	PCNTR
	XCHG
	MVI	A,'B'
	CALL	L0B9E
	POP	D
	MVI	A,'I'
	CALL	L0B9E
L0586:	LHLD	DOCTBL
	MOV	A,H
	ORA	L
	JZ	L05C0
	LHLD	PCNTR
	XCHG
	CALL	L0D87
	JC	L05C0
	INX	H
	INX	H
	MOV	B,M
L059B:	MVI	A,1
	STA	WFIFLG
	CALL	SEMIC
	XRA	A
	ORA	B
	JZ	L05BD
L05A8:	INX	H
	MOV	A,M
	CPI	5CH
	JNZ	L05B6
	CALL	CRLF
	DCR	B
	JMP	L059B
;
L05B6:	CALL	TYPE
	DCR	B
	JNZ	L05A8
L05BD:	CALL	CRLF
L05C0:	LHLD	PCNTR
	XCHG
	CALL	L0C51
	DCX	H
	JC	L05CE
	INX	H
	INX	H
	INX	H
L05CE:	MOV	A,M
	CPI	'I'
	JZ	L061E
	CPI	'E'
	JZ	CMEOF
	PUSH	PSW
	INX	H
	MOV	E,M
	INX	H
	MOV	D,M
	PUSH	D
	LHLD	PCNTR
	XCHG
	CALL	L0EB4
	POP	H
	SHLD	L1B48
	XCHG
	XRA	A
	STA	WFIFLG
	POP	PSW
	CPI	'S'
	JZ	L0648
	CPI	'B'
	JZ	L06A9
	CPI	'W'
	JZ	L067B
	CALL	TYPE
	CALL	PRTSTR
	DB	': INVALID CTL ENTRY'
	DB	0DH,0AH,0
	JMP	NXCMD
;
L061E:	CALL	DLINE
	XRA	A
	STA	WFIFLG
	JMP	L052A
;
SLICNT:	INX	H
	CALL	GTVAL
	MOV	A,E
	ORA	A
	JZ	CMERR
	STA	LISCNT
	MOV	A,M
	INX	H
	CPI	','
	JZ	L0507
	CPI	' '
	JZ	L0507
	CPI	0DH
	JZ	NXCMD
	JMP	CMERR
;
L0648:	PUSH	D
	LDA	PCNTR
	CMA
	MOV	L,A
	LDA	PCNTR+1
	CMA
	MOV	H,A
	INX	H
	DAD	D
	MVI	A,1
	STA	WFIFLG
	CALL	L1A7E
	DB	'.BLKB',9,0
	MOV	A,H
	CALL	XO0
	MOV	A,L
	CALL	XO
	MVI	A,'H'
	CALL	TYPE
	CALL	CRLF
	POP	H
	SHLD	PCNTR
	JMP	L052A
;
L067B:	MVI	A,1
	STA	WFIFLG
	CALL	L1A7E
	DB	'.WORD',9,0
	LHLD	PCNTR
	XCHG
	LHLD	OFFSET
	DAD	D
	MOV	E,M
	INX	H
	MOV	D,M
	CALL	L106E
	LHLD	PCNTR
	INX	H
	INX	H
	SHLD	PCNTR
	JMP	L052A
;
L06A3:	CALL	CRLF
	JMP	L052A
;
L06A9:	MVI	A,1
	STA	WFIFLG
L06BB:	LHLD	PCNTR
	XCHG
	LHLD	OFFSET
	DAD	D
	MOV	A,M
	CPI	' '
	JC	NPRTC	;NOT PRINTABLE
	CPI	7FH
	JC	L0722	;VISIBLE ASCII
NPRTC:	CALL	L1A7E
	DB	'.BYTE',9,0
	XRA	A
	STA	L1B4A
MORINV:	MOV	A,M	;RESTORE BYTE
	CPI	0AH
	JC	L06E6
L06D3:	CALL	XO0
	MVI	A,'H'
	CALL	TYPE
	LDA	L1B4A
	ADI	2
	STA	L1B4A
	JMP	L06EB
;
L06E6:	ORI	'0'
	CALL	TYPE
L06EB:	INX	H
	XCHG
	LHLD	PCNTR
	INX	H
	SHLD	PCNTR
	XCHG
L06F5:	LDA	L1B48
	CMP	E
	JNZ	L0703
	LDA	L1B49
	CMP	D
	JZ	L078D
L0703:	LHLD	PCNTR
	XCHG
	CALL	L17EA
	JNC	L06A3
	LDA	L1B4A
	ADI	2
	STA	L1B4A
	CPI	19H
	JNC	L06A3
	LHLD	PCNTR
	XCHG
	LHLD	OFFSET
	DAD	D
	MOV	A,M
	CPI	' '
	JC	NXINV
	CPI	7FH
	JC	L06A3
NXINV:	MVI	A,','
	CALL	TYPE
	JMP	MORINV
;
L0722:	CALL	L1A7E
	DB	'.ASCII',9,0
	XRA	A
	STA	L1B4A
	MVI	A,27H
	CALL	TYPE
	LDA	L1B4A
	INR	A
	STA	L1B4A
	MOV	A,M
L072F:	CALL	TYPE
	MOV	A,M
	CPI	27H
	CZ	TYPE
	INX	H
	XCHG
	LHLD	PCNTR
	INX	H
	SHLD	PCNTR
	XCHG
	LDA	L1B48
	CMP	E
	JNZ	L0750
	LDA	L1B49
	CMP	D
	JZ	L0788
L0750:	PUSH	H
	LHLD	PCNTR
	XCHG
	CALL	L17EA
	POP	H
	JNC	L0788
	LDA	L1B4A
	INR	A
	STA	L1B4A
	CPI	'#'
	JNC	L0780
	CPI	19H
	JC	L0775
	DCX	H
	MOV	A,M
	INX	H
	CPI	' '
	JZ	L0788
L0775:	MOV	A,M
	CPI	' '
	JC	L0780
	CPI	7FH
	JC	L072F
L0780:	MVI	A,27H
	CALL	TYPE
	JMP	L06A3
;
L0788:	MVI	A,27H
	CALL	TYPE
L078D:	CALL	CRLF
	JMP	L052A
;
CMSTTS:	CALL	PRTSTR
	DB	'SYMTBL=',0
	LXI	H,SYMTBL
	CALL	PRWORD
	LHLD	SYMTP
	CALL	PRWORD
	CALL	CRLF
	CALL	PRTSTR
	DB	'PC    =',0
	LHLD	PCNTR
	CALL	PRWORD
	CALL	CRLF
	CALL	PRTSTR
	DB	'OFFSET=',0
	LHLD	OFFSET
	CALL	PRWORD
	CALL	CRLF
	LHLD	DOCTBL
	MOV	A,H
	ORA	L
	JZ	NODOCT
	CALL	PRTSTR
	DB	'COMNTS=',0
	LHLD	DOCTBL
	CALL	PRWORD
	LHLD	DOCEND
	CALL	PRWORD
	CALL	CRLF
NODOCT:	CALL	PRTSTR
	DB	'CTLTBL=',0
	LXI	H,CTLTBL
	CALL	PRWORD
L0808:	MOV	A,M
	INX	H
	ANA	M
	INX	H
	INX	H
	INR	A
	JNZ	L0808
	DCX	H
	DCX	H
	DCX	H
	CALL	PRWORD
	CALL	CRLF
	JMP	NXCMD
;
CMFIND:	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	L0853
	CALL	GTVAL
	XCHG
	SHLD	L1B2F
	LHLD	OFFSET
	SHLD	L1B2D
	XCHG
	CPI	0DH
	JZ	L0853
	CPI	' '
	JZ	L0843
	CPI	','
	JNZ	CMERR
L0843:	INX	H
	CALL	GTVAL
	CPI	0DH
	JNZ	CMERR
	LHLD	OFFSET
	DAD	D
	SHLD	L1B2D
L0853:	LHLD	L1B2F
	XCHG
L0857:	CALL	L1ABF
	LHLD	L1B2D
	MOV	A,M
	INX	H
	SHLD	L1B2D
	CMP	E
	JNZ	L0857
	MOV	A,M
	CMP	D
	JNZ	L0857
	PUSH	H
	PUSH	D
	CALL	L087C
	DCX	H
	CALL	PRWORD
	POP	D
	POP	H
	CALL	PRSPC
	JMP	L0857
;
L087C:	LDA	OFFSET
	CMA
	MOV	E,A
	LDA	OFFSET+1
	CMA
	MOV	D,A
	INX	D
	DAD	D
	RET
;
CMEOF:	CALL	L0EB4
	MVI	A,1
	STA	WFIFLG
	CALL	L1A7E
	DB	'.END',0DH,0AH,0
	XRA	A
	STA	WFIFLG
	LDA	WRTFLG
	ORA	A
	JZ	NXCMD
	MVI	A,1AH
	CALL	L19E6
	CALL	L19A7
	XRA	A
	STA	WRTFLG
	CALL	PRTSTR
	DB	'++ASM FILE CLOSED++',0DH
	LDAX	B
	NOP
	JMP	NXCMD
;
CMREAD:	CALL	GFNAM
	LDA	WRTFLG
	ORA	A
	JNZ	RRQERR
	LXI	H,FCB+9
	LXI	D,SYMLIT
	MVI	C,3
	CALL	CMPSTR
	JNZ	L08F6
	LXI	H,SYMTBL
	CALL	L09C9
	SHLD	SYMTP
	INX	H
	INX	H
	MVI	M,0
	JMP	CMSTTS
;
L08F6:	LXI	H,FCB+9
	LXI	D,COMLIT
	MVI	C,3
	CALL	CMPSTR
	JNZ	L0947
	CALL	FOPEN
	LHLD	OFFSET
	MOV	A,H
	CPI	1EH
	JC	L097A
	LXI	D,START
	DAD	D
L0914:	PUSH	H
	XCHG
	MVI	C,1AH
	CALL	BDOS
	LXI	D,FCB
	MVI	C,14H
	CALL	BDOS
	ORA	A
	JNZ	L092F
	POP	H
	LXI	D,TBUF
	DAD	D
	JMP	L0914
;
L092F:	POP	H
	CALL	PRWORD
	CALL	L087C
	CALL	PRWORD
	CALL	CRLF
	LXI	D,TBUF
	MVI	C,1AH
	CALL	BDOS
	JMP	NXCMD
;
L0947:	LXI	H,FCB+9
	LXI	D,CTLLIT
	MVI	C,3
	CALL	CMPSTR
	JNZ	L0958
	JMP	L0CF1
;
L0958:	LXI	H,FCB+9
	LXI	D,DOCLIT
	MVI	C,3
	CALL	CMPSTR
	JNZ	CMERR
	CALL	L0DFB
	LHLD	DOCTBL
	CALL	L09C9
	SHLD	DOCEND
	MVI	M,0FFH
	INX	H
	MVI	M,0FFH
	JMP	CMSTTS
;
L097A:	CALL	PRTSTR
	DB	'++NO, THAT WOULD OVERLAY '
	DB	'THE DISASSEMBLER',0DH,0AH
	DB	'BECAUSE OFFSET IS TOO SMALL: '
	DB	0
	JMP	L0448
;
L09C9:	CALL	FOPEN
L09CC:	CALL	RDFCHR
	CPI	1AH
	RZ
	CPI	9
	JZ	L09CC
	CPI	0DH
	JZ	L09CC
	CPI	0AH
	JZ	L09CC
	CALL	L0A05
	MOV	M,E
	INX	H
	MOV	M,D
	INX	H
	PUSH	H
	INX	H
	MVI	B,0
L09EC:	CALL	RDFCHR
	CPI	9
	JZ	L09FF
	CPI	0DH
	JZ	L09FF
	MOV	M,A
	INX	H
	INR	B
	JMP	L09EC
;
L09FF:	XTHL
	MOV	M,B
	POP	H
	JMP	L09CC
;
L0A05:	LXI	D,0
L0A08:	CPI	' '
	RZ
	CPI	1AH
L0A0D:	JZ	L0B62
	CPI	':'
	JC	L0A17
	SUI	7
L0A17:	SUI	'0'
	XCHG
	DAD	H
	DAD	H
	DAD	H
	DAD	H
	ADD	L
	MOV	L,A
	XCHG
	CALL	RDFCHR
	CPI	1AH
	JZ	L0B62
	JMP	L0A08
;
CMSAVE:	CALL	GFNAM
	LDA	WRTFLG
	ORA	A
	JNZ	RRQERR
	LXI	H,FCB+9
	LXI	D,SYMLIT
	MVI	C,3
	CALL	CMPSTR
	JNZ	L0A9A
	LXI	H,SYMTBL
L0A47:	CALL	L1986
L0A4A:	MOV	E,M
	INX	H
	MOV	D,M
	INX	H
	MOV	A,M
	INX	H
	MOV	B,A
	ORA	A
	JZ	L0A73
	CALL	L0A7E
	MVI	A,' '
	CALL	L19E6
L0A5D:	MOV	A,M
	CALL	L19E6
	INX	H
	DCR	B
	JNZ	L0A5D
	MVI	A,0DH
	CALL	L19E6
	MVI	A,0AH
	CALL	L19E6
	JMP	L0A4A
;
L0A73:	MVI	A,1AH
	CALL	L19E6
	CALL	L19A7
	JMP	NXCMD
;
L0A7E:	MOV	A,D
	CALL	HEXL
	CALL	L19E6
	MOV	A,D
	CALL	HEXR
	CALL	L19E6
	MOV	A,E
	CALL	HEXL
	CALL	L19E6
	MOV	A,E
	CALL	HEXR
	JMP	L19E6
;
L0A9A:	LXI	H,FCB+9
	LXI	D,CTLLIT
	MVI	C,3
	CALL	CMPSTR
	JZ	SAVCTL
	LXI	H,FCB+9
	LXI	D,DOCLIT
	MVI	C,3
	CALL	CMPSTR
	JZ	SAVDOC
	LXI	H,FCB+9
	LXI	D,ASMLIT
	MVI	C,3
	CALL	CMPSTR
	JNZ	CMERR
	MVI	A,1
	STA	WRTFLG
	XRA	A
	STA	WFIFLG
	CALL	L1986
	CALL	PRTSTR
	DB	'++WRITING .ASM ENABLED'
	DB	0DH,0AH,'USE Z COMMAND OR '
	DB	'E CONTROL TO CLOSE FILE++'
	DB	0DH,0AH,0
	JMP	NXCMD
;
SAVDOC:	CALL	L0DFB
	LHLD	DOCEND
	INX	H
	INX	H
	MVI	M,0
	LHLD	DOCTBL
	JMP	L0A47
;
RRQERR:	CALL	PRTSTR
	DB	'++NO FILE ACCESSES PERMITTED '
	DB	'UNTIL .ASM CLOSED',0DH,0AH
	DB	0
	JMP	NXCMD
;
L0B62:	CALL	PRTSTR
	DB	'++UNEXPECTED EOF',0DH,0AH
	DB	0
	JMP	NXCMD
;
CMCTL:	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	L0C73
	CALL	GTVAL
	CPI	0DH
	JZ	L0C6D
	CPI	' '
	JZ	L0B96
	CPI	','
	JNZ	CMERR
L0B96:	INX	H
	MOV	A,M
	CALL	L0BB0
	JMP	NXCMD
;
L0B9E:	PUSH	H
	PUSH	D
	PUSH	PSW
	CALL	L0C51
	DCX	H
	JC	L0BAB
	INX	H
	INX	H
	INX	H
L0BAB:	POP	PSW
	POP	D
	CMP	M
	POP	H
	RZ
L0BB0:	STA	INTYP
	CALL	L0C51
	JC	L0BFB
	LDA	INTYP
	CPI	'I'
	JZ	L0C4D
	CPI	'W'
	JZ	L0C4D
	CPI	'B'
	JZ	L0C4D
	CPI	'S'
	JZ	L0C4D
	CPI	'E'
	JZ	L0C4D
	CPI	'K'
	JNZ	CMERR
	XCHG
	LXI	H,3
	DAD	D
	XCHG
L0BE0:	MOV	A,M
	INX	H
	ANA	M
	DCX	H
	INR	A
	JZ	L0BF5
	MVI	B,3
L0BEA:	LDAX	D
	MOV	M,A
	INX	D
	INX	H
	DCR	B
	JNZ	L0BEA
	JMP	L0BE0
;
L0BF5:	DCX	H
	DCX	H
	DCX	H
	JMP	NODOCT
;
L0BFB:	LDA	INTYP
	CPI	'K'
	JZ	CMERR
	CPI	'E'
	JZ	L0C1C
	CPI	'B'
	JZ	L0C1C
	CPI	'W'
	JZ	L0C1C
	CPI	'I'
	JZ	L0C1C
	CPI	'S'
	JNZ	CMERR
L0C1C:	PUSH	D
	PUSH	H
	LXI	H,CTLTBL
L0C21:	MOV	A,M
	INX	H
	ANA	M
	INX	H
	INX	H
	INR	A
	JNZ	L0C21
	INX	H
	INX	H
	INX	H
	XCHG
	LXI	H,-3
	DAD	D
	POP	B
L0C33:	DCX	H
	DCX	D
	MOV	A,M
	STAX	D
	MOV	A,E
	CMP	C
	JNZ	L0C33
	MOV	A,D
	CMP	B
	JNZ	L0C33
	MOV	H,B
	MOV	L,C
	POP	D
	MOV	M,E
	INX	H
	MOV	M,D
	INX	H
	LDA	INTYP
	MOV	M,A
	RET
;
L0C4D:	INX	H
	INX	H
	MOV	M,A
	RET
;
L0C51:	LXI	H,CTLTBL
L0C54:	MOV	A,M
	INX	H
	ANA	M
	DCX	H
	INR	A
	STC
	RZ
	INX	H
	MOV	A,D
	CMP	M
	DCX	H
	RC
	JNZ	L0C67
	MOV	A,E
	CMP	M
	RZ
	RC
L0C67:	INX	H
	INX	H
	INX	H
	JMP	L0C54
;
L0C6D:	CALL	L0C51
	JMP	L0C76
;
L0C73:	LXI	H,CTLTBL
L0C76:	CALL	L1ABF
	MOV	E,M
	INX	H
	MOV	D,M
	INX	H
	MOV	A,D
	ANA	E
	INR	A
	JNZ	L0C86
	JMP	NODOCT
;
L0C86:	PUSH	D
	PUSH	H
	CALL	L17EA
	JC	L0C9F
L0C8E:	MOV	A,M
	CALL	TYPE
	INX	H
	DCR	B
	JNZ	L0C8E
	MVI	A,':'
	CALL	TYPE
	CALL	CRLF
L0C9F:	POP	H
	POP	D
	CALL	PRSPC
	CALL	PRSPC
	XCHG
	CALL	PRWORD
	MVI	A,','
	CALL	TYPE
	XCHG
	MOV	A,M
	CALL	TYPE
	CALL	CRLF
	INX	H
	JMP	L0C76
;
SAVCTL:	CALL	L1986
	LXI	H,CTLTBL
L0CC2:	MOV	E,M
	INX	H
	MOV	D,M
	INX	H
	MOV	A,D
	ANA	E
	INR	A
	JZ	L0CE6
	CALL	L0A7E
	MVI	A,','
	CALL	L19E6
	MOV	A,M
	CALL	L19E6
	MVI	A,0DH
	CALL	L19E6
	MVI	A,0AH
	CALL	L19E6
	INX	H
	JMP	L0CC2
;
L0CE6:	MVI	A,1AH
	CALL	L19E6
	CALL	L19A7
	JMP	NXCMD
;
L0CF1:	CALL	FOPEN
	LXI	H,CTLTBL
L0CF7:	CALL	RDFCHR
	LXI	D,0
L0CFD:	CPI	1AH
	JZ	L0D2A
	CPI	','
	JZ	L0D1E
	CPI	':'
	JC	L0D0E
	SUI	7
L0D0E:	SUI	'0'
	XCHG
	DAD	H
	DAD	H
	DAD	H
	DAD	H
	ADD	L
	MOV	L,A
	XCHG
	CALL	RDFCHR
	JMP	L0CFD
;
L0D1E:	MOV	M,E
	INX	H
	MOV	M,D
	INX	H
	CALL	RDFCHR
	MOV	M,A
	INX	H
	JMP	L0CF7
;
L0D2A:	MVI	M,0FFH
	INX	H
	MVI	M,0FFH
	JMP	NODOCT
;
CMCMNT:	CALL	L0DFB
	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	L0DAB
	CALL	GTVAL
	INX	H
	CPI	0DH
	JZ	L0DA5
	CPI	' '
	JZ	L0D51
	CPI	','
	JNZ	CMERR
L0D51:	PUSH	H
	CALL	L0D87
	JC	L0D63
	CALL	L0DD6
	POP	H
	PUSH	H
	MOV	A,M
	CPI	0DH
	JZ	NXCMD
L0D63:	LHLD	DOCEND
	MOV	M,E
	INX	H
	MOV	M,D
	INX	H
	POP	D
	MVI	B,0
	PUSH	H
L0D6E:	INX	H
	LDAX	D
	MOV	M,A
	INX	D
	INR	B
	LDAX	D
	CPI	0DH
	JNZ	L0D6E
	INX	H
	SHLD	DOCEND
	MVI	M,0FFH
	INX	H
	MVI	M,0FFH
	POP	H
	MOV	M,B
	JMP	NXCMD
;
L0D87:	LHLD	DOCTBL
L0D8A:	MOV	A,M
	INX	H
	ANA	M
	DCX	H
	INR	A
	STC
	RZ
	INX	H
	MOV	A,D
	CMP	M
	DCX	H
	JNZ	L0D9B
	MOV	A,E
	CMP	M
	RZ
L0D9B:	INX	H
	INX	H
	MOV	A,M
	CALL	ADDF
	INX	H
	JMP	L0D8A
;
L0DA5:	CALL	L0D87
	JMP	L0DAE
;
L0DAB:	LHLD	DOCTBL
L0DAE:	CALL	L1ABF
	MOV	E,M
	INX	H
	MOV	D,M
	INX	H
	MOV	A,D
	ANA	E
	INR	A
	JZ	NXCMD
	XCHG
	CALL	PRWORD
	XCHG
	MVI	A,';'
	CALL	TYPE
	MOV	B,M
L0DC6:	INX	H
	MOV	A,M
	CALL	TYPE
	DCR	B
	JNZ	L0DC6
	CALL	CRLF
	INX	H
	JMP	L0DAE
;
L0DD6:	MOV	A,M
	INX	H
	ANA	M
	INR	A
	RZ
	DCX	H
	PUSH	D
	MOV	D,H
	MOV	E,L
	INX	H
	INX	H
	MOV	A,M
	CALL	ADDF
	INX	H
	MVI	B,0
L0DE8:	MOV	A,M
	STAX	D
	INX	H
	INX	D
	MOV	C,A
	ANA	B
	INR	A
	MOV	B,C
	JNZ	L0DE8
	XCHG
	DCX	H
	DCX	H
	SHLD	DOCEND
	POP	D
	RET
;
L0DFB:	LHLD	DOCTBL
	MOV	A,H
	ORA	L
	RNZ
	CALL	PRTSTR
	DB	'++COMMAND IGNORED++',0DH
	DB	0AH,'++Issue ''UNNNN'' to tell '
	DB	'RESOURCE to use address '
	DB	'NNNN',0DH,0AH,'as the start '
	DB	'of the comments table',0DH
	DB	0AH,0
	JMP	NXCMD
;
CMUSEC:	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	0DH
	JZ	CMERR
	CPI	'.'
	JZ	CMERR
	CALL	GTVAL
	XCHG
	MOV	A,H
	CPI	1FH
	JC	L0E9D
	SHLD	DOCTBL
	SHLD	DOCEND
	MVI	M,0FFH
	INX	H
	MVI	M,0FFH
	JMP	NXCMD
;
L0E9D:	CALL	PRTSTR
	DB	'++NO!! <2300H!',0DH,0AH
	DB	0
	JMP	NXCMD
;
L0EB4:	PUSH	D
	PUSH	H
	MVI	A,1
	STA	WFIFLG
	LHLD	PCNTR
	XCHG
	CALL	L17EA
	JC	L0EF6
	MOV	C,B
	PUSH	H
L0EC7:	MOV	A,M
	CPI	'+'
	JZ	L0EF5
	CPI	'-'
	JZ	L0EF5
	INX	H
	DCR	C
	JNZ	L0EC7
	POP	H
	CALL	PSTRG
	MVI	A,':'
	CALL	TYPE
	LDA	TRMFLG
	ORA	A
	JNZ	L0EF6
	CALL	TABC
	CALL	TABC
	CALL	SEMIC
	LHLD	PCNTR
	CALL	PRWORD
	CALL	CRLF
	JMP	L0EF6
;
L0EF5:	POP	H
L0EF6:	XRA	A
	STA	WFIFLG
	CALL	PRSPC
	CALL	PRSPC
	LHLD	PCNTR
	CALL	PRWORD
	MVI	A,1
	STA	WFIFLG
	CALL	TABC
	POP	H
	POP	D
	RET
;
DLINE:	CALL	L0EB4
	XRA	A
	STA	INDX
	LHLD	PCNTR
	XCHG
	LHLD	OFFSET
	DAD	D
	SHLD	PGPTR
	XCHG
	INX	H	;COUNT OVER SINGLE BYTE
	SHLD	PCNTR
	XCHG
	MOV	B,M
	LXI	H,OPCT-7
L0F2D:	LXI	D,7
ULP:	DAD	D
	MOV	A,M
	ORA	A
	JZ	PRDB
	ANA	B
	MOV	C,A
	INX	H
	MOV	A,M
	CMP	C
	JNZ	ULP
	INX	H
	MOV	A,M
	STA	INTYP
	MVI	B,5
PROLP:	INX	H
	MOV	A,M
	CPI	1	;INDX VALUE FLAG
	JNZ	PRO2
	LDA	INDX
	ORA	A
	JMP	PRO1
;
PRO2:	CPI	'.'
PRO1:	CNZ	TYPE
	DCR	B
	JNZ	PROLP
	LHLD	PCNTR
	LDA	INTYP
	ANI	3FH
	CPI	4
	JC	FOUND
	CPI	9
	JNC	FOUND
	INX	H	;2 BYTE AT LEAST
	CPI	6
	JC	L0F75
	INX	H	;3 BYTE INSTR
L0F75:	SHLD	PCNTR
FOUND:	MOV	E,A
	MVI	D,0
	LXI	H,JMPTBL
;
	DAD	D
	DAD	D
	DAD	D
	PUSH	H
	LHLD	PGPTR
	RET
;
INCPC:	PUSH	H
	LHLD	PCNTR
	INX	H
	SHLD	PCNTR
	POP	H
	RET
;			LGTH	OPRND	EXMPL
JMPTBL:	JMP	TYPE0	;1	NONE	DAA
	JMP	TYPE1	;1	REG	ADD
	JMP	TYPE2	;1	REG	INR
	JMP	TYPE3	;1	XR	STAX
	JMP	TYPE4	;2	R,DATA	MVI
	JMP	TYPE5	;2	DATA	OUT
	JMP	TYPE6	;3	XR,ADDR	LXI
	JMP	TYPE7	;3	ADDR	LHLD
	JMP	TYPE8	;3	ADDR	JZ
	JMP	TYPE9	;1	NONE	RZ
	JMP	TYP10	;1	NR.	RST
	JMP	TYP11	;1	R,R	MOV
	JMP	TYP12	;2	"CB"	BIT
	JMP	TYP13	;2/4	"ED"	LDI
	JMP	TYP14	;2/4	"DD"	SRL
	JMP	TYP15	;2/4	"FD"	RL
	JMP	TYP16	;2	NONE	JR
	JMP	TYP17	;2	FLAG	JR C
	JMP	TYP18	;2	N,R	BIT
	JMP	TYP19	;X/Y INDEX
	JMP	TYP20	;4	X/Y,ADD	LXI
	JMP	TYP21	;3	D(),R	MOV
	JMP	TYP22	;3	REG	ADD
	JMP	TYP23	;3
	JMP	TYP24	;4
;	
TYPE0:	JMP	CRLF
;
TYP22:	CALL	INCPC	;FOR DD/FD INSTRS
TYPE1:	CALL	TABC
T1B:	CALL	REG
	JMP	CRLF
;
TYP23:	CALL	INCPC
TYPE2:	CALL	TABC
	CALL	REGM
	JMP	CRLF
;
TYPE3:	CALL	TABC
	CALL	XR
	JMP	CRLF
;
TYP24:	CALL	INCPC
	CALL	INCPC
TYPE4:	CALL	TABC
	CALL	REGM
	CALL	COMMA
	JMP	T52
;
TYPE5:	CALL	TABC
T52:	LHLD	PGPTR
	INX	H
	LDA	INDX
	ORA	A
	JZ	T52A
	INX	H
T52A:	SHLD	PGPTR
L1017:	LHLD	PGPTR
	MOV	A,M
	CPI	' '
	JC	PHEXB
	CPI	5BH
	JNC	PHEXB
	LDA	INTYP
	CPI	4
	JC	PHEXB
	CPI	6
	JNC	PHEXB
	MOV	A,M
	CALL	QCHAR
	MVI	A,27H
	CALL	TYPE
	CALL	TABC
	CALL	SEMIC
PHEXB:	MOV	A,M
	CPI	0AH
	JC	NO2CH
	CALL	XO0
	MVI	A,'H'
	CALL	TYPE
	JMP	CRLF
;
NO2CH:	ADI	'0'
	CALL	TYPE
	JMP	CRLF
;
TYPE6:	CALL	TABC
	LHLD	PGPTR
	MOV	A,M
	CALL	XR
	CALL	COMMA
PRT2X:	LHLD	PGPTR
	INX	H
	MOV	E,M
	INX	H
	MOV	D,M
L106E:	PUSH	D
	CALL	L17EA
	JNC	L1084
	LDA	SYBFLG
	ORA	A
	JZ	L108D
	POP	D
	PUSH	D
	CALL	L173A
	JMP	L108D
;
L1084:	CALL	PSTRG
	LDA	TRMFLG
	ORA	A
	JZ	TRMLB2
	POP	D
	JMP	CRLF
TRMLB2:	CALL	TABC
	CALL	SEMIC
L108D:	POP	D
	MOV	A,D
	ORA	E
	MVI	A,'0'
	JZ	L10A3
	MOV	A,D
	ORA	A
	JZ	L10A9
	CALL	XO0
	MOV	A,E
	CALL	XO
L10A1:	MVI	A,'H'
L10A3:	CALL	TYPE
	JMP	CRLF
;
L10A9:	MOV	A,E
	CPI	0AH
	JC	L10B5
	CALL	XO0
	JMP	L10A1
;
L10B5:	ADI	'0'
	JMP	L10A3
;
TYPE7:	CALL	TABC
	JMP	PRT2X
;
TYPE8:	CALL	GETCC
	JMP	TYPE7
;
TYPE9:	CALL	GETCC
	JMP	CRLF
;
TYP10:	CALL	TABC
	LHLD	PGPTR
	MOV	A,M
	RAR
	RAR
	RAR
	ANI	7
	ORI	'0'
	CALL	TYPE
	JMP	CRLF
;
TYP21:	CALL	INCPC	;THEN FALL THRU
;
TYP11:	CALL	TABC
	CALL	REGM
CMREG:	CALL	COMMA
	JMP	T1B
;
PRTRL:	MOV	C,L
	MOV	A,H
	JMP	PRT2X
;
TYP13:	INX	H
	SHLD	PGPTR
	MOV	B,M
	LXI	H,EDTBL-7
	CALL	INCPC
	JMP	L0F2D
;
TYP14:	MVI	A,'X'
	JMP	IXIYC
;
TYP15:	MVI	A,'Y'
;
IXIYC:	STA	INDX
	CALL	INCPC	;ACCNT FOR PREFIX BYTE
	INX	H	;SKIP DD/FD
	MOV	A,M	;BYTE 2 MAY BE OPCODE
	CPI	0CBH
	JNZ	IXIYT
	INX	H
	MOV	A,M
	STA	DISPL	;FROM THIRD BYTE
TYP12:	INX	H
	MOV	B,M	;ACTUAL OPCODE HERE
	SHLD	PGPTR
	CALL	INCPC
	LXI	H,CBTBL-7
	JMP	L0F2D
;
IXIYT:	PUSH	PSW
	SHLD	PGPTR	;SAVE OPCODE PNTR
	INX	H
	MOV	A,M
	STA	DISPL	;FROM THIRD BYTE
	POP	PSW	;RECOV OPCODE
	MOV	B,A
	LXI	H,DDTBL-7
	JMP	L0F2D
;
TYP16:	CALL	TABC
	INX	H
	MOV	A,M
	CALL	INCPC
	LHLD	PCNTR
	MOV	E,A
	MVI	D,0
	CMP	D
	JP	NTNEG
	DCR	D
NTNEG:	DAD	D
	XCHG
	JMP	L106E
;
TYP17:	MOV	A,M
	RAR
	RAR
	ANI	6
	PUSH	H
	CALL	PCC
	POP	H
	JMP	TYP16
;
TYP18:	CALL	TABC
	MOV	A,M
	RAR
	RAR
	RAR
	ANI	7
	ORI	'0'
	CALL	TYPE
	JMP	CMREG
;
TYP19:	CALL	TABC
	LDA	INDX
	CALL	TYPE
	JMP	CRLF
;
TYP20:	SHLD	PGPTR
	CALL	TABC
	LDA	INDX
	CALL	TYPE
	CALL	COMMA
	CALL	INCPC
	CALL	INCPC
	JMP	PRT2X
;
XADSP:	LDA	INDX
	ORA	A
	MVI	A,'M'
	JZ	TYPE
	INX	H
	MOV	A,M
	PUSH	H
	LDA	DISPL
	MOV	H,A
	ORA	A
	JP	POSIT
	MVI	A,'-'
	CALL	TYPE
	MOV	A,H
	CMA
	INR	A
POSIT:	CPI	64H
	JC	LT100
	SBI	64H
	MOV	H,A
	MVI	A,'1'
	CALL	TYPE
	MOV	A,H
LT100:	MVI	L,0
TENLP:	SUI	0AH
	JM	TENOK
	INR	L
	JMP	TENLP
;
TENOK:	ADI	0AH
	MOV	H,A
	MVI	A,'0'
	ADD	L
	CALL	TYPE
	MOV	A,H
	ADI	'0'
	POP	H
	CALL	TYPE
	LXI	H,INDX-1
	MVI	B,3
	JMP	PSTRG
;
COMMA:	MVI	A,','
	JMP	TYPE
;
TABC:	MVI	A,9
	JMP	TYPE
;
SEMIC:	MVI	A,';'
	JMP	TYPE
;
PRDB:	CALL	L1A7E
	DB	'.BYTE',9,0
	LDA	INDX
	ORA	A
	JZ	DB1PR
	LHLD	PGPTR
	DCX	H
	MOV	A,M
	CALL	XO0
	MVI	A,'H'
	CALL	TYPE
	CALL	COMMA
DB1PR:	MVI	A,4
	STA	INTYP
	JMP	L1017
;
GETCC:	LHLD	PGPTR
	MOV	A,M
	RAR
	RAR
	ANI	0EH
PCC:	LXI	H,CCTAB
	CALL	ADDF
	MOV	A,M
	CALL	TYPE
	INX	H
	MOV	A,M
	CPI	'.'
	CNZ	TYPE
	RET
;
QCHAR:	PUSH	PSW
	MVI	A,27H
	CALL	TYPE
	POP	PSW
	CPI	27H
	JNZ	TYPE
	PUSH	PSW
	CALL	TYPE
	POP	PSW
	JMP	TYPE
;
XR:	LHLD	PGPTR
	MOV	A,M
	RAR
	RAR
	RAR
	ANI	6
	CPI	6
	JNZ	L127A
	MOV	A,M
	ANI	0CFH
	CPI	0C1H
	JZ	L1264
	CPI	0C5H
	JZ	L1264
	MVI	A,'S'
	CALL	TYPE
	MVI	A,'P'
	JMP	TYPE
;
L1264:	CALL	L1A7E
	MOV	D,B
	MOV	D,E
	MOV	D,A
	NOP
	RET
;
REGM:	LHLD	PGPTR
	MOV	A,M
	RAR
	RAR
	RAR
	JMP	L127A
;
REG:	LHLD	PGPTR
	MOV	A,M
L127A:	LXI	H,REGTBL
	ANI	7
	CALL	ADDF
	MOV	A,M
	CPI	'M'
	JZ	XADSP
	JMP	TYPE
;
ADDF:	ADD	L
	MOV	L,A
	RNC
	INR	H
	RET
;
XO0:	CPI	0A0H
	JC	XO
	PUSH	PSW
	MVI	A,'0'
	CALL	TYPE
	POP	PSW
	JMP	XO
;
PSTRG:	MOV	A,M
	CALL	TYPE
	INX	H
	DCR	B
	JNZ	PSTRG
	RET
;
CCTAB:	DB	'NZ'
	DB	'Z.'
	DB	'NC'
	DB	'C.'
	DB	'PO'
	DB	'PE'
	DB	'P.'
	DB	'M.'
;
REGTBL:	DB	'BCDE'
	DB	'HLMA'
;
OPCT:	DB	0FFH,0CBH,12,'.....'
	DB	0FFH,0EDH,13,'.....'
	DB	0FFH,0DDH,14,'.....'
	DB	0FFH,0FDH,15,'.....'
	DB	0FFH,0CEH,5,'ACI..'
	DB	0F8H,88H,1,'ADC..'
	DB	0F8H,80H,1,'ADD..'
	DB	0FFH,0C6H,5,'ADI..'
	DB	0F8H,0A0H,1,'ANA..'
	DB	0FFH,0E6H,5,'ANI..'
	DB	0C7H,0C4H,8,'C....'
	DB	0FFH,0CDH,7,'CALL.'
	DB	0FFH,2FH,0,'CMA..'
	DB	0FFH,3FH,0,'CMC..'
	DB	0F8H,0B8H,1,'CMP..'
	DB	0FFH,0FEH,5,'CPI..'
	DB	0FFH,27H,0,'DAA..'
	DB	0CFH,9,3,'DAD..'
	DB	0C7H,5,2,'DCR..'
	DB	0CFH,0BH,3,'DCX..'
	DB	0FFH,0F3H,0,'DI...'
	DB	0FFH,10H,16,'DJNZ.'
	DB	0FFH,0FBH,0,'EI...'
	DB	0FFH,8,40H,'EXAF.'
	DB	0FFH,0D9H,40H,'EXX..'
	DB	0FFH,76H,0,'HLT..'
	DB	0FFH,0DBH,5,'IN...'
	DB	0C7H,4,2,'INR..'
	DB	0CFH,3,3,'INX..'
	DB	0C7H,0C2H,8,'J....'
	DB	0FFH,0C3H,7,'JMP..'
	DB	0FFH,18H,16,'JMPR.'
	DB	0E7H,20H,17,'JR...'
	DB	0FFH,3AH,7,'LDA..'
	DB	0EFH,0AH,3,'LDAX.'
	DB	0FFH,2AH,7,'LHLD.'
	DB	0CFH,1,6,'LXI..'
	DB	0C0H,40H,11,'MOV..'
	DB	0C7H,6,4,'MVI..'
	DB	0FFH,0,0,'NOP..'
	DB	0F8H,0B0H,1,'ORA..'
	DB	0FFH,0F6H,5,'ORI..'
	DB	0FFH,0D3H,5,'OUT..'
	DB	0FFH,0E9H,0,'PCHL.'
	DB	0CFH,0C1H,3,'POP..'
	DB	0CFH,0C5H,3,'PUSH.'
	DB	0C7H,0C0H,9,'R....'
	DB	0FFH,17H,0,'RAL..'
	DB	0FFH,1FH,0,'RAR..'
	DB	0FFH,0C9H,0,'RET..'
	DB	0FFH,0FH,0,'RRC..'
	DB	0FFH,7,0,'RLC..'
	DB	0C7H,0C7H,10,'RST..'
	DB	0F8H,98H,1,'SBB..'
	DB	0FFH,0DEH,5,'SBI..'
	DB	0FFH,22H,7,'SHLD.'
	DB	0FFH,0F9H,0,'SPHL.'
	DB	0FFH,32H,7,'STA..'
	DB	0EFH,2,3,'STAX.'
	DB	0FFH,37H,0,'STC..'
	DB	0F8H,90H,1,'SUB..'
	DB	0FFH,0D6H,5,'SUI..'
	DB	0FFH,0EBH,0,'XCHG.'
	DB	0F8H,0A8H,1,'XRA..'
	DB	0FFH,0EEH,5,'XRI..'
	DB	0FFH,0E3H,0,'XTHL.'
	DB	0
;
CBTBL:	DB	0C0H,40H,18,'BIT..'
	DB	0C0H,80H,18,'RES..'
	DB	0C0H,0C0H,18,'SET..'
	DB	0F8H,0,1,'RLCR.'
	DB	0F8H,8,1,'RRCR.'
	DB	0F8H,10H,1,'RALR.'
	DB	0F8H,18H,1,'RARR.'
	DB	0F8H,20H,1,'SLAR.'
	DB	0F8H,28H,1,'SRAR.'
	DB	0F8H,38H,1,'SRLR.'
	DB	0
;
EDTBL:	DB	0FFH,43H,7,'SBCD.'
	DB	0FFH,53H,7,'SDED.'
	DB	0FFH,73H,7,'SSPD.'
	DB	0FFH,4BH,7,'LBCD.'
	DB	0FFH,5BH,7,'LDED.'
	DB	0FFH,4FH,0,'STAR.'
	DB	0FFH,5FH,0,'LDAR.'
	DB	0FFH,47H,0,'STAI.'
	DB	0FFH,57H,0,'LDAI.'
	DB	0FFH,7BH,7,'LSPD.'
	DB	0FFH,44H,0,'NEG..'
	DB	0FFH,45H,0,'RETN.'
	DB	0FFH,4DH,0,'RETI.'
	DB	0FFH,46H,0,'IM0..'
	DB	0FFH,56H,0,'IM1..'
	DB	0FFH,5EH,0,'IM2..'
	DB	0FFH,0A0H,0,'LDI..'
	DB	0FFH,0B0H,0,'LDIR.'
	DB	0FFH,0A8H,0,'LDD..'
	DB	0FFH,0B8H,0,'LDDR.'
	DB	0FFH,0A1H,0,'CCI..'
	DB	0FFH,0B1H,0,'CCIR.'
	DB	0FFH,0A9H,0,'CCD..'
	DB	0FFH,0B9H,0,'CCDR.'
	DB	0FFH,0A2H,0,'INI..'
	DB	0FFH,0B2H,0,'INIR.'
	DB	0FFH,0AAH,0,'IND..'
	DB	0FFH,0BAH,0,'INDR.'
	DB	0FFH,0A3H,0,'OUTI.'
	DB	0FFH,0B3H,0,'OUTIR'
	DB	0FFH,0ABH,0,'OUTD.'
	DB	0FFH,0BBH,0,'OUTDR'
	DB	0CFH,42H,3,'DSBC.'
	DB	0CFH,4AH,3,'DADC.'
	DB	0FFH,67H,0,'RRD..'
	DB	0FFH,6FH,0,'RLD..'
	DB	0C7H,40H,2,'INP..'
	DB	0C7H,41H,2,'OUTP.'
	DB	0CFH,42H,3,'DSBC.'
	DB	0CFH,4AH,3,'DADC.'
	DB	0
;
DDTBL:	DB	0FFH,29H,19,'DAD',1,'.'
	DB	0CFH,9,3,'DAD',1,'.'
	DB	0FFH,0E1H,19,'POP..'
	DB	0FFH,0E5H,19,'PUSH.'
	DB	0FFH,22H,7,'SI',1,'D.'
	DB	0FFH,2AH,7,'LI',1,'D.'
	DB	0FFH,23H,19,'INX..'
	DB	0FFH,2BH,19,'DCX..'
	DB	0C7H,46H,21,'MOV..'
	DB	0F8H,70H,21,'MOV..'
	DB	0FFH,86H,22,'ADD..'
	DB	0FFH,8EH,22,'ADC..'
	DB	0FFH,96H,22,'SUB..'
	DB	0FFH,9EH,22,'SBB..'
	DB	0FFH,0A6H,22,'ANA..'
	DB	0FFH,0AEH,22,'XRA..'
	DB	0FFH,0B6H,22,'ORA..'
	DB	0FFH,0BEH,22,'CMP..'
	DB	0FFH,34H,23,'INR..'
	DB	0FFH,35H,23,'DCR..'
	DB	0FFH,36H,24,'MVI..'
	DB	0FFH,21H,20,'LXI..'
	DB	0FFH,0F9H,0,'SPI',1,'.'
	DB	0FFH,0E3H,0,'XTI',1,'.'
	DB	0FFH,0E9H,0,'PCI',1,'.'
	DB	0
;
L173A:	LXI	H,CMDBUF
	MVI	M,'L'
	INX	H
	MOV	A,D
	CALL	L189F
	MOV	A,E
	CALL	L189F
	LXI	H,CMDBUF
	MVI	B,5
L174D:	CALL	L1798
	JC	L1757
	MOV	M,E
	INX	H
	MOV	M,D
	RET
;
L1757:	PUSH	H
	PUSH	D
	PUSH	B
	LHLD	SYMTP
	MOV	D,H
	MOV	E,L
	MOV	A,B
	ADI	3
	ADD	L
	MOV	L,A
	MOV	A,H
	ACI	0
	MOV	H,A
	SHLD	SYMTP
	INX	H
	INX	H
	MVI	M,0
	DCX	H
	DCX	H
	MOV	B,H
	MOV	C,L
	LHLD	L1B4B
L1776:	MOV	A,E
	CMP	L
	JNZ	L1780
	MOV	A,D
	CMP	H
	JZ	L1787
L1780:	DCX	D
	DCX	B
	LDAX	D
	STAX	B
	JMP	L1776
;
L1787:	POP	B
	POP	D
	MOV	M,E
	INX	H
	MOV	M,D
	INX	H
	MOV	M,B
	POP	D
L178F:	INX	H
	LDAX	D
	MOV	M,A
	INX	D
	DCR	B
	JNZ	L178F
	RET
;
L1798:	PUSH	D
	PUSH	H
	LXI	H,SYMTBL
L179D:	POP	D
	PUSH	D
	INX	H
	INX	H
	PUSH	H
	MOV	A,M
	INX	H
	ORA	A
	JZ	L17E0
	CMP	B
	JC	L17CC
	JNZ	L17D6
	MOV	C,A
	CALL	CMPSTR
	JZ	L17C5
	JC	L17E0
L17B9:	POP	H
	MOV	A,M
	INX	H
	ADD	L
	MOV	L,A
	JNC	L179D
	INR	H
	JMP	L179D
;
L17C5:	POP	H
	DCX	H
	DCX	H
	POP	D
	POP	D
	ORA	A
	RET
;
L17CC:	MOV	C,A
	CALL	CMPSTR
	JNC	L17B9
	JMP	L17E0
;
L17D6:	MOV	C,B
	CALL	CMPSTR
	JZ	L17E0
	JNC	L17B9
L17E0:	POP	H
	DCX	H
	DCX	H
	SHLD	L1B4B
	POP	H
	POP	D
	STC
	RET
;
L17EA:	LXI	H,SYMTBL
L17ED:	MOV	A,M
	INX	H
	CMP	E
	JNZ	L17F8
	MOV	A,M
	CMP	D
	JZ	L1807
L17F8:	INX	H
	MOV	A,M
	ORA	A
	STC
	RZ
	INX	H
	ADD	L
	MOV	L,A
	JNC	L17ED
	INR	H
	JMP	L17ED
;
L1807:	INX	H
	MOV	A,M
	INX	H
	MOV	B,A
	ORA	A
	RNZ
	STC
	RET
;
CMENTR:	LXI	H,CMDBUF+3
	CALL	GTVAL
	MOV	A,M
	CPI	' '
	JZ	L1820
	CPI	','
	JNZ	CMERR
L1820:	INX	H
	MOV	A,M
	CPI	'.'
	JNZ	CMERR
	PUSH	D
	CALL	L1872
	POP	D
	CALL	L174D
	JMP	NXCMD
;
	RET
;
CMKILL:	LXI	H,CMDBUF+3
	MOV	A,M
	CPI	'.'
	JNZ	CMERR
	CALL	L1872
	CALL	L1798
	JC	CMERR
	MOV	B,H
	MOV	C,L
	INX	H
	INX	H
	MOV	A,M
	ADD	L
	MOV	L,A
	MOV	A,H
	ACI	0
	MOV	H,A
	INX	H
	XCHG
	LHLD	SYMTP
L1855:	MOV	A,E
	CMP	L
	JNZ	L185F
	MOV	A,D
	CMP	H
	JZ	L1866
L185F:	LDAX	D
	STAX	B
	INX	B
	INX	D
	JMP	L1855
;
L1866:	MOV	H,B
	MOV	L,C
	SHLD	SYMTP
	INX	H
	INX	H
	MVI	M,0
	JMP	NXCMD
;
L1872:	INX	H
	MVI	B,0
	PUSH	H
L1876:	MOV	A,M
	INX	H
	INR	B
	CPI	'+'
	JZ	L1876
	CPI	'-'
	JZ	L1876
	CPI	'0'
	JC	L1897
	CPI	':'
	JC	L1876
	CPI	'A'
	JC	L1897
	CPI	5BH
	JC	L1876
L1897:	DCR	B
	JZ	CMERR
	DCX	H
	XCHG
	POP	H
	RET
;
L189F:	PUSH	PSW
	CALL	HEXL
	MOV	M,A
	INX	H
	POP	PSW
	CALL	HEXR
	MOV	M,A
	INX	H
	RET
;
HEXL:	RAR
	RAR
	RAR
	RAR
HEXR:	ANI	0FH
	CPI	0AH
	JC	HEXRN
	ADI	7
HEXRN:	ADI	'0'
	RET
;
XO:	PUSH	PSW
	CALL	HEXL
	CALL	TYPE
	POP	PSW
	CALL	HEXR
	JMP	TYPE
;
PRWORD:	MOV	A,H
	CALL	XO
	MOV	A,L
	CALL	XO
PRSPC:	MVI	A,' '
	JMP	TYPE
;
GTVAL:	MOV	A,M
	CPI	'.'
	JZ	GTSYMB
	LXI	D,0
HEXBI:	MOV	A,M
	CPI	'0'
	RC
	CPI	':'
	JC	CVNUM
	CPI	'A'
	RC
	CPI	'G'
	RNC
	SUI	7
CVNUM:	SUI	'0'
	XCHG
	DAD	H
	DAD	H
	DAD	H
	DAD	H
	ADD	L
	MOV	L,A
	XCHG
	INX	H
	JMP	HEXBI
;
GTSYMB:	CALL	L1872
	PUSH	D
	CALL	L1798
	JC	CMERR
	MOV	E,M
	INX	H
	MOV	D,M
	POP	H
	MOV	A,M
	RET
;
FOPEN:	PUSH	H
	LXI	H,START
	SHLD	OFIPTR
	XRA	A
	STA	FCB+32
	LXI	D,FCB
	MVI	C,0FH
	CALL	BDOS
	POP	H
	INR	A
	RNZ
	CALL	PRTSTR
	DB	'++FILE NOT FOUND',0DH,0AH
	DB	0
	JMP	NXCMD
;
RDFCHR:	PUSH	H
	LHLD	OFIPTR
	MOV	A,H
	CPI	1
	JNZ	L195B
	PUSH	B
	PUSH	D
	LXI	D,FCB
	MVI	C,14H
	CALL	BDOS
	ORA	A
	POP	D
	POP	B
	LXI	H,TBUF
	JNZ	L1962
L195B:	MOV	A,M
	INX	H
	SHLD	OFIPTR
	POP	H
	RET
;
L1962:	CPI	3
	JC	L1980
	CALL	PRTSTR
	DB	'++UNEXPECTED EOF',0DH,0AH
	DB	0
	JMP	NXCMD
;
L1980:	MVI	A,1AH
	MOV	M,A
	JMP	L195B
;
L1986:	PUSH	H
	LXI	D,FCB
	MVI	C,13H
	CALL	BDOS
	LXI	D,FCB
	MVI	C,16H
	CALL	BDOS
	INR	A
	JZ	CMERR
	XRA	A
	STA	FCB+32
	LXI	H,TBUF
	SHLD	OFIPTR
	POP	H
	RET
;
L19A7:	LXI	D,FCB
	MVI	C,15H
	CALL	BDOS
	ORA	A
	JNZ	L19D3
	LXI	D,FCB
	MVI	C,10H
	CALL	BDOS
	INR	A
	RNZ
	CALL	PRTSTR
	DB	'++CLOSE ERROR',0DH,0AH
	NOP
	JMP	NXCMD
;
L19D3:	CALL	PRTSTR
	DB	'++WRITE ERROR',0DH,0AH
	NOP
L19E6:	PUSH	H
	LHLD	OFIPTR
	MOV	M,A
	INR	L
	SHLD	OFIPTR
	POP	H
	RNZ
	PUSH	B
	PUSH	D
	PUSH	H
	LXI	D,FCB
	MVI	C,15H
	CALL	BDOS
	ORA	A
	JNZ	L19D3
	LXI	H,TBUF
	SHLD	OFIPTR
	POP	H
	POP	D
	POP	B
	RET
;
CRLF:	MVI	A,0DH
	CALL	TYPE
	MVI	A,0AH
	JMP	TYPE
;
PSTAR:	MVI	A,'*'
TYPE:	PUSH	B
	PUSH	D
	PUSH	H
	MOV	E,A
	PUSH	D
	MVI	C,2
	LDA	QUIFLG
	ORA	A
	CZ	BDOS
	POP	D
	LDA	WRTFLG
	LXI	H,WFIFLG
	ANA	M
	MOV	A,E
	CNZ	L19E6
	MOV	A,E
	CPI	0AH
	JNZ	L1A41
	LDA	L1B35
	ORA	A
	JZ	L1A41
	LXI	H,LISCNT+1
	DCR	M
L1A41:	POP	H
	POP	D
	POP	B
	RET
;
GTCMD:	CALL	PSTAR
	LXI	D,CMDBUF
	MVI	A,'N'
	STAX	D
	MVI	C,0AH
	CALL	BDOS
	LXI	H,CMDBUF+1
	MOV	E,M
	MVI	D,0
	DAD	D
	INX	H
	MVI	M,0DH
	LXI	H,CMDBUF+1
LTUCNV:	INX	H
	MOV	A,M
	CPI	0DH
	JZ	CRLF
	CPI	61H
	JC	LTUCNV
	CPI	7BH
	JNC	LTUCNV
	ANI	5FH
	MOV	M,A
	JMP	LTUCNV
;
PRTSTR:	XRA	A
	STA	WFIFLG
	STA	QUIFLG
L1A7E:	XTHL
L1A7F:	MOV	A,M
	CALL	TYPE
	INX	H
	MOV	A,M
	ORA	A
	JNZ	L1A7F
	INX	H
	XTHL
	RET
;
INITBL:	XRA	A
	STA	SYMTBL+2
	LXI	H,SYMTBL
	SHLD	SYMTP
	MVI	A,0DH
	STA	CMDBUF+3
	LXI	H,0FFFFH
	SHLD	CTLTBL
	MVI	A,'I'
	STA	CTLTBL-1
	LHLD	DOCTBL
	MOV	A,H
	ORA	L
	RZ
	SHLD	DOCEND
	MVI	M,0FFH
	INX	H
	MVI	M,0FFH
	RET
;
CMPSTR:	LDAX	D
	CMP	M
	RNZ
	INX	D
	INX	H
	DCR	C
	JNZ	CMPSTR
	RET
;
L1ABF:	PUSH	B
	PUSH	D
	PUSH	H
	MVI	C,0BH
	CALL	BDOS
	ORA	A
	JZ	L1AFA
	MVI	C,1
	CALL	BDOS
	CPI	3
	JZ	ABORT
	CALL	CRLF
	JMP	NXCMD
;
ABORT:	CALL	PRTSTR
	DB	0DH,0AH,'ABORT Y/N '
	NOP
	MVI	C,1
	CALL	BDOS
	ANI	5FH
	CPI	'Y'
	JZ	0
	JMP	NXCMD
;
L1AFA:	POP	H
	POP	D
	POP	B
	RET
;
L1AFE:	CPI	0DH
	RZ
	CPI	0AH
	RZ
	ORA	A
	RZ
	CPI	' '
	RC
	CPI	7FH
	CMC
	RET
;
	DB	'('
INDX:	DB	0,')',0
DISPL:	DB	0
TRMFLG:	DB	0
L1B1B:	DW	START
L1B1D:	DW	0180H
OFFSET:	DW	0
SYMTP:	DW	SYMTBL
PCNTR:	DW	START
L1B25:	DW	START
PGPTR:	DW	START
DOCTBL:	DW	0
DOCEND:	DW	0
L1B2D:	DW	0
L1B2F:	DW	0
DMPCNT:	DW	0FFH
LISCNT:	DW	0A16H
L1B35:	DB	1
ASMLIT:	DB	'ASM'
COMLIT:	DB	'COM'
CTLLIT:	DB	'CTL'
SYMLIT:	DB	'SYM'
DOCLIT:	DB	'DOC'
WFIFLG:	DB	0
WRTFLG:	DB	0
QUIFLG:	DB	0
L1B48:	DB	0
L1B49:	DB	0
L1B4A:	DB	0
L1B4B:	DW	0
OFIPTR:	DW	0
L1B4F:	DB	0
SYBFLG:	DB	0
INTYP:	DB	0,0,0
CMDBUF:	DS	002CH
	END
