Compucolor.org – Virtual Media

Listing of file='MON.SRC;01' on disk='vmedia/taylor_6-sector.ccvf'

	ORG	0E000H
	JMP	INIT

SIGNON:	DB	'ALLTRONICS MONITOR V6.16.80 '
	DB	' (C) 1980 ',237

INIT:	LXI	SP,SPTR
	XRA	A
	STA	READY
	STA	PRTSW
	STA	KBFL
	MVI	A,12
	STA	KBDFL	;THROW AWAY
	CALL	PTCN
	MVI	A,4
	OUT	8
	LXI	H,USEESCE
	SHLD	33216	;SET USER ESCAPE VECT.
	MVI	A,0C3H	;JMP
	STA	33215
	LXI	H,INIT-1
	SHLD	32940	;TOP OF BASIC
	XRA	A
	DCR	A
	STA	PRTSW
	LXI	H,PRTINIT
	CALL	LSTR
	LXI	H,SIGNON
	CALL	PSTR
	LXI	H,INIT
	CALL	PTAD2
	MVI	A,'-'
	CALL	PTCN
	CALL	SPCE
	LXI	H,ENDP
	CALL	PTAD2
	CALL	CRLF
	XRA	A
	STA	PRTSW
;#
; RECYCLE FOR NEW COMMAND
;
START:	LXI	SP,SPTR
	MVI	A,4
	OUT	8
	MVI	A,$-$
	ORG	$-1
	INX	H	;OPND OF MVI
	STA	GOON	;RESET BMP
	CALL	CRLF
	CALL	CRLF
	MVI	A,'*'
	CALL	PTCN
	CALL	RDCN
	ANI	5FH
	PUSH	PSW
	CALL	SPCE
	POP	PSW
	LXI	H,START
	PUSH	H
	CPI	'A'
	RC
	CPI	05BH
	RNC
	LXI	H,CMDTB-2*'A'
	PUSH	PSW
	ADD	A
	MOV	E,A
	MVI	D,0
	DAD	D
	MOV	E,M
	INX	H
	MOV	D,M
	XCHG
	POP	PSW
	PCHL
;#
; COMMAND TABLE
;
CMDTB:	DW	DISASM	;A
	DW	START
	DW	COMPR	;C
	DW	DISP	;D
	DW	ENTER	;E
	DW	SRCH	;F
	DW	GO	;G
	DW	START	;H
	DW	START	;I
	DW	START	;J
	DW	CKPT	;K
	DW	LOG	;L
	DW	MOVEB	;M
	DW	START	;N
	DW	START	;O
	DW	PGM	;P
	DW	START	;Q
	DW	REG	;R
	DW	SRCH	;S
	DW	TMEM	;T
	DW	START	;U
	DW	VISUAL	;V
	DW	START	;W
	DW	MOVEB	;X
	DW	START	;Y
	DW	ZEROM	;Z
PRTINIT:
	DB	27,67,27,68
	DB	27,56,27,53,27,98,18,27,84,88
	DB	27,57,8,27,58,237
;
; TURN PRINTER(LOG) ON/OFF
;
LOG:	XRA	A
	DCR	A
	STA	PRTSW
	CALL	CRLF
	LXI	H,PRTINIT
	CALL	LSTR
	RET
VISUAL:	CALL	CRLF
	CALL	WPRT
	XRA	A
	STA	PRTSW
	RET
;#
; ENTER/GO COMANDS
;
ENTER:
	DI
	LHLD	SP
	SPHL
	LXI	H,NRET
	PUSH	H
	JMP	CGE
GO:	DI
	LHLD	SP
	SPHL
CGE:
	LHLD	PC
	PUSH	H
	LHLD	HL
	PUSH	H
	LHLD	DE
	PUSH	H
	POP	D
	LHLD	BC
	PUSH	H
	POP	B
	LDA	MASK
	OUT	8
	STA	CMASK
	LDA	KBFL
	STA	KBDFL
	LHLD	PSW
	PUSH	H
	POP	PSW
	POP	H
	EI
	RET
;
; HEX TO BINARY
;
AHEX:	MVI	C,4
AHE0:	LXI	H,0
AHE1:	CALL	RDCN
	CPI	30H
	JC	START
	CPI	':'
	CNC	ALPH
	DAD	H
	DAD	H
	DAD	H
	DAD	H
	SUI	48
	CPI	10
	JC	ALF
	SUI	7
ALF:	ADD	L
	MOV	L,A
	DCR	C
	JNZ	AHE1
	XCHG
	RET
;
;PUT CHAR STRING END 237
;
LSTR:
	MOV	A,M
	CPI	237
	RZ
	MOV	E,A
	CALL	PRINT
	INX	H
	JMP	LSTR
PSTR:
	MOV	A,M
	CPI	237
	RZ
	CALL	PTCN
	INX	H
	JMP	PSTR
;#
; PUT A TO DISPLAY
;
SPCE:	MVI	A,20H
PTCN:	CPI	09	;TAB
	JZ	TAB
	PUSH	PSW
	LDA	COLCTR
	INR	A
	STA	COLCTR
	POP	PSW
	CALL	PRINT
	PUSH	H
	PUSH	B
	LXI	H,BASFL
	MOV	C,M
	MVI	M,0
	CALL	OUT
	MOV	M,C
	POP	B
	POP	H
	RET
TAB:
	CALL	SPCE
	LDA	COLCTR
	ANI	7
	JNZ	TAB
	RET
CRLF:	MVI	A,0DH
	CALL	PTCN
	MVI	A,0AH
	CALL	PTCN
	XRA	A
	STA	COLCTR
	RET
;
;WAIT FOR PRINTER
;
WPRT:	IN	1
	ANI	80H
	JNZ	WPRT2
	MVI	A,9	;RED/RED
	STA	32767	;SCREEN FLAG
	JMP	WPRT
WPRT2:	IN	3
	ANI	10H
	JZ	WPRT
	MVI	A,2	;GRN/BLK
	STA	32767
	RET
;
;PRINT CHAR IN A IF PRTSW NZ
;
PRINT:	PUSH	PSW
	LDA	PRTSW
	ORA	A
	JZ	PRTRTN
	CALL	WPRT
	POP	PSW
	OUT	6	;TO RS232
	RET
PRTRTN:
	POP	PSW
	RET
;
;CHECK FOR ALPHA A-F
;
ALPH:	CPI	'A'
	JC	START
	ANI	5FH
	CPI	'G'
	JNC	START
	RET
;#
; READ CHARACTER FROM KEYBOARD
;
RDCN:	CALL	WPRT	;WAIT FOR PRINT QUIESCE
	MVI	A,223	;ENABLE KEYBD
	OUT	8
RDCN1:	LDA	READY
	CPI	50H
	JZ	RDCN1
	CPI	80H
	LDA	KBUF
	JNZ	RDCN1
	PUSH	PSW
	XRA	A
	STA	READY
	POP	PSW
	ANI	7FH
	CPI	127
	JZ	START
	CPI	32
	JC	START
	PUSH	PSW
	MVI	A,4
	OUT	8
	POP	PSW
	CALL	PTCN
	RET
PAUSE:	CALL	WPRT
PAUSE1:	RST	3	;INIT KEYBD INT
	LDA	READY
	CPI	50H
	JZ	PAUSE1
	LDA	KBUF
	PUSH	PSW
	XRA	A
	STA	READY
	MVI	A,4	;DISABLE KEYBD
	OUT	8
	POP	PSW
	CPI	12H	; CTRL-R
	JZ	START
	RET
;
; MEMORY TEST
;
TMEM:	CALL	TAHEX
	LXI	B,5A5AH
CYCL:	CALL	RNDM
	PUSH	B
	PUSH	H
	PUSH	D
TLOP:	CALL	RNDM
	MOV	M,B
	CALL	BMP
	JNZ	TLOP
	POP	D
	POP	H
	POP	B
	PUSH	H
	PUSH	D
RLOP:	CALL	RNDM
	MOV	A,M
	CMP	B
	CNZ	ERR
	CALL	BMP
	JNZ	RLOP
	POP	D
	POP	H
	CALL	PAUSE
	JMP	CYCL
;#
; RANDOM NUMBER ROUTINE
;
RNDM:	MOV	A,B
	ANI	0B4H
	ANA	A
	JPE	PEVE
	STC
PEVE:	MOV	A,C
	RAL
	MOV	C,A
	MOV	A,B
	RAL
	MOV	B,A
	RET
;
; ERROR PRINT-OUT ROUTINE
;
PTAD:	CALL	CRLF
	CALL	PAUSE
PTAD2:	MOV	A,H
	CALL	PT2
	MOV	A,L
	CALL	PT2
	CALL	SPCE
	RET
ERR:	PUSH	PSW
	CALL	PTAD
	MOV	A,B
	CALL	PT2
	CALL	SPCE
	POP	PSW
PT2:	PUSH	PSW
	CALL	BINH
	POP	PSW
	JMP	BINL
BINH:	RAR
	RAR
	RAR
	RAR
BINL:	ANI	0FH
	ADI	48
	CPI	58
	JC	PTCN
	ADI	7
	JMP	PTCN
;
;MOVE UP TO 255 BYTES FROM DE TO HL
;
MOVHD:
	LDAX	D
	MOV	M,A
	INX	H
	INX	D
	DCR	B
	JNZ	MOVHD
	RET
;#
; DISPLAY MEMORY CONTENTS
;
DISP:	CALL	TAHEX
DISP1:	PUSH	H
	CALL	ENT1
	POP	H
	CALL	ASCD
	XRA	A
	CMP	C
	JZ	DISP1
	RET
ENT1:	MVI	C,16
	CALL	PTAD
	CALL	SPCE
LP2:
	MOV	A,M
	CALL	PT2
	CALL	BMP
	RZ
	DCR	C
	RZ
	MOV	A,C
	ANI	7
	PUSH	PSW
	JNZ	$+6
	CALL	SPCE
	POP	PSW
	ANI	1
	JNZ	$+6
	CALL	SPCE
	JMP	LP2
ASCD:
AMLP:
	LDA	COLCTR
	CPI	47
	JZ	AMLP2
	CALL	SPCE
	JMP	AMLP
AMLP2:
	MVI	C,16
ALP2:
	MOV	A,M
	ANI	127
	CPI	32
	JC	ASCON
	CPI	127
	JNZ	NCON
ASCON:	MVI	A,'.'
	CALL	PTCN
	JMP	ALP3
NCON:	CALL	PTCN
ALP3:
	CALL	BMP
	RZ
	DCR	C
	RZ
	JMP	ALP2
;#
; PROGRAM MEMORY
;
PGM:	CALL	AHEX
	XCHG
PGMNL:	XCHG
	CALL	CRLF
	LXI	H,15
	DAD	D
	XCHG
	PUSH	H
	CALL	ENT1
	POP	H
	CALL	PTAD
	CALL	SPCE
	CALL	GENPGM
	JMP	PGMNL
GENPGM:
	MVI	C,16
PGLP:
	PUSH	H
	LXI	H,PRTSW
	MOV	B,M
	MVI	M,0
	CALL	RDCN
	CPI	20H
	JZ	CON2
	MOV	M,B
	POP	H
	CALL	PRINT
	PUSH	D
	XCHG
	LXI	H,0
	PUSH	B
	MVI	C,2
	CALL	AHE1+3
	MOV	M,E
	POP	B
	POP	D
	JMP	CON3
CON2:	CALL	BKSPC
	MOV	M,B
	POP	H
	MOV	A,M
	CALL	PT2
CON3:
	CALL	BMP
	RZ
	DCR	C
	RZ
	MOV	A,C
	ANI	7
	PUSH	PSW
	JNZ	$+6
	CALL	SPCE
	POP	PSW
	ANI	1
	JNZ	$+6
	CALL	SPCE
	JMP	PGLP
;#
; DISASSEMBLE
;
DISASM:
	CALL	TAHEX
DISINST:
	XRA	A
	STA	DISTABSW
	CALL	PTAD
	CALL	SPCE
	PUSH	D
	PUSH	H
	MOV	E,M	;OP CODE
	MVI	D,0
	XCHG
	DAD	H
	XCHG
	LXI	H,DISPTR
	DAD	D
	SHLD	OPCPTR
	INX	H
	INX	H
	MOV	E,M
	INX	H
	MOV	D,M
	XCHG
	DCX	H
	MOV	E,M	;LENGTH OF INST-1
	MVI	D,0
	MOV	A,E
	STA	INSTL	;SAVE INST LENGTH(-1)
	POP	H
	PUSH	H
	DAD	D
	XCHG
	POP	H
	PUSH	D
	PUSH	H
DIS01:	MOV	A,M
	CALL	PT2
	CALL	BMP
	JNZ	DIS01
	CALL	TAB
	LHLD	OPCPTR
	MOV	E,M
	INX	H
	MOV	D,M
	INX	H
	PUSH	D
	MOV	E,M
	INX	H
	MOV	D,M
	DCX	D
	DCX	D
	POP	H
DIS02:
	MOV	A,M
	CPI	09	;TAB?
	JNZ	$+6
	STA	DISTABSW
	CALL	PTCN
	CALL	BMP
	JNZ	DIS02
	POP	H
	PUSH	H
	INX	H
	LDA	INSTL
	ORA	A
	JZ	DIS09
	CPI	1
	JZ	DISI2
;#
DISI3:
	LDA	DISTABSW
	ORA	A
	JNZ	DISI3B
	CALL	TAB
DISI3A:	MVI	A,'0'
	CALL	PTCN
	INX	H
	MOV	A,M
	CALL	PT2
	DCX	H
	MOV	A,M
	CALL	PT2
	MVI	A,'H'
	CALL	PTCN
	JMP	DIS09
DISI3B:
	MVI	A,','
	CALL	PTCN
	JMP	DISI3A
DISI2:
	LDA	DISTABSW
	ORA	A
	JNZ	DISI2B
	CALL	TAB
DISI2A:	MVI	A,'0'
	CALL	PTCN
	MOV	A,M
	CALL	PT2
	MVI	A,'H'
	CALL	PTCN
	JMP	DIS09
DISI2B:
	MVI	A,','
	CALL	PTCN
	JMP	DISI2A
DIS09:
	POP	H
	POP	D
	PUSH	H
	CALL	ASCD
	POP	H
	POP	D
	LDA	INSTL
	INR	A
DIS10:
	PUSH	PSW
	CALL	BMP
	JZ	START
	POP	PSW
	DCR	A
	JNZ	DIS10
	JMP	DISINST
;#
;DISPLAY/PROGRAM REGISTERS
;
REG:
	LXI	H,REGHED
	CALL	PSTR
	LXI	D,REGSTR
	LXI	H,REGSTRE
	MVI	A,$-$
	ORG	$-1
	DCX	H	;OPND OF MVI
	STA	GOON	;SET BMP FOR DECR
	MVI	C,16
	CALL	LP2
	CALL	CRLF
	LXI	H,REGSTRE
	MVI	C,16
	CALL	GENPGM
	RET
;
;SET CHECKPOINT
;
CKPT:
	CALL	RDCN	;CKPT NO. 0-9
	SUI	'0'
	RC
	CPI	10
	RNC
	MVI	H,0
	MOV	L,A	;CKPT NO.
	PUSH	H
	DAD	H	;X2
	POP	D
	DAD	D	;X3
	DAD	H	;X6
	XCHG
	LXI	H,CKPTAB
	DAD	D	;INDEX CKPT TAB
	PUSH	H
	MOV	A,M
	INX	H
	ORA	M
	POP	H
	CNZ	CLRCKPT
	PUSH	H
	CALL	SPCE
	CALL	AHEX
	POP	H
	MOV	M,E
	INX	H
	MOV	M,D
	INX	H
	PUSH	D
	MVI	B,3
	CALL	MOVHD
	POP	H
	LXI	D,CKPCALL
	MVI	B,3
	CALL	MOVHD
	RET
CKPCALL:
	CALL	CKPRETN
CKPRETN:
	CALL	RTNSAV
	LXI	H,CKPRM1
	CALL	PSTR
	CALL	CKPSCH
	CALL	PTCN
	CALL	CRLF
	CALL	REG
	JMP	START

;#
;STORE REGISTERS ON ENTRY FROM CKPT
;
RTNSAV:	DI
	PUSH	H
	PUSH	PSW
	PUSH	D
	LXI	H,10
	DAD	SP
	SHLD	SP
	POP	H
	SHLD	DE
	POP	H
	SHLD	PSW
	POP	H
	SHLD	HL
	POP	D	;RTN
	POP	H
	DCX	H
	DCX	H
	DCX	H
	SHLD	PC
	PUSH	B
	POP	H
	SHLD	BC
	LDA	CMASK
	STA	MASK
	LDA	KBDFL
	STA	KBFL
	MVI	A,4
	OUT	8
	MVI	A,12	;NO PROCESS ENTRY
	STA	KBDFL
	LXI	SP,SPTR
	PUSH	D
	EI
	RET
NRET:
	CALL	RTNSAV
	LXI	H,CKPRM2
	CALL	PSTR
	LXI	H,0	;SET PC
	SHLD	PC
	JMP	START
;#
;ENTRY FROM USER ESC(ESC ^)
;
USEESCE:
	CALL	RTNSAV
	LXI	H,CKPRM3
	CALL	PSTR
	CALL	REG
	JMP	START
CKPRM1:	DB	'RTN FROM CKPT ',237
CKPRM2:	DB	'RTN FROM ENTER',13,10,237
CKPRM3:	DB	13,10,27,11,'ENTRY FROM ESC ^',237
CLRCKPT:
	PUSH	H	;CKT
	LXI	H,CLRC1
	CALL	PSTR
	POP	H
	PUSH	H
	PUSH	D
	MOV	E,M
	INX	H
	MOV	D,M
	INX	H
	XCHG		;D=CKT+2:H=CKPT
	PUSH	H
	CALL	PTAD2
	LXI	H,CLRC2
	CALL	PSTR
	POP	H
	MVI	B,3
	CALL	MOVHD
	POP	D
	POP	H
	PUSH	H
	XRA	A
	MOV	M,A
	INX	H
	MOV	M,A
	POP	H
	RET

CLRC1:	DB	'		CKPT AT ',237
CLRC2:	DB	' CLEARED',13,'*K ',25,237
;#
;SUBROUTINE TO SEARCH CKPT TABLE
;
CKPSCH:			;SEARCH FOR CKPT/RTN NO.
	PUSH	H
	PUSH	D
	PUSH	B
	LXI	D,PC
	PUSH	D
	LXI	H,CKPTAB
	MVI	B,10
CKPS01:
	LDAX	D
	CMP	M
	INX	D
	INX	H
	JNZ	CKPS10
	LDAX	D
	CMP	M
CKPS10:
	INX	H
	INX	H
	INX	H
	INX	H
	INX	H
	JZ	CKPS20
	POP	D
	PUSH	D
	DCR	B
	JNZ	CKPS01
	MVI	A,'*'
	JMP	CKPS30
CKPS20:
	DCX	H
	MOV	A,M
CKPS30:	POP	D
	POP	B
	POP	D
	POP	H
	RET
;
;BACKSPACE
;
BKSPC:	PUSH	H
	LXI	H,COLCTR
	DCR	M
	MVI	A,26
	CALL	PTCN
	POP	H
	RET
;#
; COMPARE ADDRESSES, INCR/DECR H
;
BMP:	MOV	A,E
	SUB	L
	JNZ	GOON
	MOV	A,D
	SBB	H
GOON:	INX	H	;(OR DCX H)
	RET
;
; FILL MEMORY
;
ZEROM:	CALL	TAHEX
	PUSH	H
	MVI	C,2
	CALL	AHE0
	XCHG
	XTHL
	POP	B
ZLOOP:	MOV	M,C
	CALL	BMP
	RZ
	JMP	ZLOOP
;
; MOVE BLOCK
;
MOVEB:	MOV	B,A
	CALL	TAHEX
	PUSH	H
	CALL	AHEX
	XCHG
	XTHL
MLOOP:	MOV	C,M
	XTHL
	MOV	A,B
	CPI	'M'
	JZ	NEXCH
	MOV	A,M
	XTHL
	MOV	M,A
	XTHL
NEXCH:	MOV	M,C
	INX	H
	XTHL
	CALL	BMP
	JZ	START
	JMP	MLOOP
;
; COMPARE BLOCKS
;
COMPR:	CALL	TAHEX
	PUSH	H
	CALL	AHEX
	XCHG
VMLOP:	MOV	A,M
	INX	H
	XTHL
	CMP	M
	MOV	B,M
	CNZ	ERR
	CALL	BMP
	XTHL
	JNZ	VMLOP
	POP	PSW
	RET
;#
; SEARCH FOR BYTE/WORD
;
SRCH:	PUSH	PSW
	CALL	TAHEX
	PUSH	H
	MVI	C,2
	CALL	AHE0
	XCHG
	MOV	B,L
	POP	H
	POP	PSW
	CPI	'S'
	PUSH	PSW
	JZ	CONT
	PUSH	H
	MVI	C,2
	CALL	AHE0
	XCHG
	MOV	C,L
	POP	H
CONT:	MOV	A,M
	CMP	B
	JNZ	SKP
	POP	PSW
	CPI	'S'
	PUSH	PSW
	JZ	OBCP
	INX	H
	MOV	A,M
	DCX	H
	CMP	C
	JNZ	SKP
OBCP:	INX	H
	MOV	A,M
	DCX	H
	CALL	ERR
SKP:	CALL	BMP
	JNZ	CONT
	POP	PSW
	RET
;
;READ TWO ADDRESSES FROM KEYBD
;
TAHEX:	CALL	AHEX
	CALL	SPCE
	CALL	AHEX
	CALL	SPCE
	RET
;#
;EQUATES, MESSAGES & VARIABLES
;
OUT	EQU	0033H	;BASOUT
BASFL	EQU	81F1H	;BASIC OUTPUT FLAG
CMASK	EQU	81E0H	;SYSTEM MASK SETTING
KBDFL	EQU	81DFH	;KEYBOARD FLAG
READY	EQU	81FFH	;KEYBD READY FLAG
KBUF	EQU	81FEH	;KEYBD CHAR BUFFER
;
;REGISTER DISPLAY HEADING
;
REGHED:	DB	13,10
	DB	'  PC  PSW   BC   DE    HL   SP MK/KB'
	DB	13,10,237

REGSTR:			;REGISTER STORAGE FOR GO
KBFL:	DB	0	;KEYBOARD FLAG
MASK:	DB	223	;MASK(OUT 8)
SP:	DW	SPTR	;STACK PTR
HL:	DW	0	;HL
DE:	DW	0	;DE
BC:	DW	0	;BC
PSW:	DW	0	;A/STATUS
PC:	DW	0	;PROGRAM COUNTER
REGSTRE	EQU	$-1
COLCTR:	DB	0	;COLUMN COUNTER
PRTSW:	DB	0	;PRINT(LOG) SW
	ORG	($+1)AND -2
CKPTAB:			;TABLE OF UP TO 10 CHECKPOINTS
	DW	0	;CHECKPOINT LOCATION
	DS	3	;ORIG CONTENTS OF CKPT
	DB	'0'	;CKPT NUMBER(ASCII)
	DW	0	;CKPT 1
	DS	3
	DB	'1'
	DW	0	;CKPT 2
	DS	3
	DB	'2'
	DW	0	;CKPT 3
	DS	3
	DB	'3'
	DW	0	;CKPT 4
	DS	3
	DB	'4'
	DW	0	;CKPT 5
	DS	3
	DB	'5'
	DW	0	;CKPT 6
	DS	3
	DB	'6'
	DW	0	;CKPT 7
	DS	3
	DB	'7'
	DW	0	;CKPT 8
	DS	3
	DB	'8'
	DW	0	;CKPT 9
	DS	3
	DB	'9'

;#
; STORAGE AREA FOR DISASSEMBLER
;
OPCPTR:	DW	0	;PTR TO OP TABLE
INSTL:	DB	0	;INST LENGTH(-1)
DISTABSW:
	DB	0	;TAB IN DISASM ASCII

	DS	128
SPTR	EQU	$	;INTERNAL STACK
;
;VECTOR TO DISSASSEMBLER OP TABLE
;
DISPTR:	DW	L00
	DW	L01
	DW	L02
	DW	L03
	DW	L04
	DW	L05
	DW	L06
	DW	L07
	DW	L08
	DW	L09
	DW	L0A
	DW	L0B
	DW	L0C
	DW	L0D
	DW	L0E
	DW	L0F
	DW	L10
	DW	L11
	DW	L12
	DW	L13
	DW	L14
	DW	L15
	DW	L16
	DW	L17
	DW	L18
	DW	L19
	DW	L1A
	DW	L1B
	DW	L1C
	DW	L1D
	DW	L1E
	DW	L1F
	DW	L20
	DW	L21
	DW	L22
	DW	L23
	DW	L24
	DW	L25
	DW	L26
	DW	L27
	DW	L28
	DW	L29
	DW	L2A
	DW	L2B
	DW	L2C
	DW	L2D
	DW	L2E
	DW	L2F
	DW	L30
	DW	L31
	DW	L32
	DW	L33
	DW	L34
	DW	L35
	DW	L36
	DW	L37
	DW	L38
	DW	L39
	DW	L3A
	DW	L3B
	DW	L3C
	DW	L3D
	DW	L3E
	DW	L3F
	DW	L40
	DW	L41
	DW	L42
	DW	L43
	DW	L44
	DW	L45
	DW	L46
	DW	L47
	DW	L48
	DW	L49
	DW	L4A
	DW	L4B
	DW	L4C
	DW	L4D
	DW	L4E
	DW	L4F
	DW	L50
	DW	L51
	DW	L52
	DW	L53
	DW	L54
	DW	L55
	DW	L56
	DW	L57
	DW	L58
	DW	L59
	DW	L5A
	DW	L5B
	DW	L5C
	DW	L5D
	DW	L5E
	DW	L5F
	DW	L60
	DW	L61
	DW	L62
	DW	L63
	DW	L64
	DW	L65
	DW	L66
	DW	L67
	DW	L68
	DW	L69
	DW	L6A
	DW	L6B
	DW	L6C
	DW	L6D
	DW	L6E
	DW	L6F
	DW	L70
	DW	L71
	DW	L72
	DW	L73
	DW	L74
	DW	L75
	DW	L76
	DW	L77
	DW	L78
	DW	L79
	DW	L7A
	DW	L7B
	DW	L7C
	DW	L7D
	DW	L7E
	DW	L7F
	DW	L80
	DW	L81
	DW	L82
	DW	L83
	DW	L84
	DW	L85
	DW	L86
	DW	L87
	DW	L88
	DW	L89
	DW	L8A
	DW	L8B
	DW	L8C
	DW	L8D
	DW	L8E
	DW	L8F
	DW	L90
	DW	L91
	DW	L92
	DW	L93
	DW	L94
	DW	L95
	DW	L96
	DW	L97
	DW	L98
	DW	L99
	DW	L9A
	DW	L9B
	DW	L9C
	DW	L9D
	DW	L9E
	DW	L9F
	DW	LA0
	DW	LA1
	DW	LA2
	DW	LA3
	DW	LA4
	DW	LA5
	DW	LA6
	DW	LA7
	DW	LA8
	DW	LA9
	DW	LAA
	DW	LAB
	DW	LAC
	DW	LAD
	DW	LAE
	DW	LAF
	DW	LB0
	DW	LB1
	DW	LB2
	DW	LB3
	DW	LB4
	DW	LB5
	DW	LB6
	DW	LB7
	DW	LB8
	DW	LB9
	DW	LBA
	DW	LBB
	DW	LBC
	DW	LBD
	DW	LBE
	DW	LBF
	DW	LC0
	DW	LC1
	DW	LC2
	DW	LC3
	DW	LC4
	DW	LC5
	DW	LC6
	DW	LC7
	DW	LC8
	DW	LC9
	DW	LCA
	DW	LCB
	DW	LCC
	DW	LCD
	DW	LCE
	DW	LCF
	DW	LD0
	DW	LD1
	DW	LD2
	DW	LD3
	DW	LD4
	DW	LD5
	DW	LD6
	DW	LD7
	DW	LD8
	DW	LD9
	DW	LDA
	DW	LDB
	DW	LDC
	DW	LDD
	DW	LDE
	DW	LDF
	DW	LE0
	DW	LE1
	DW	LE2
	DW	LE3
	DW	LE4
	DW	LE5
	DW	LE6
	DW	LE7
	DW	LE8
	DW	LE9
	DW	LEA
	DW	LEB
	DW	LEC
	DW	LED
	DW	LEE
	DW	LEF
	DW	LF0
	DW	LF1
	DW	LF2
	DW	LF3
	DW	LF4
	DW	LF5
	DW	LF6
	DW	LF7
	DW	LF8
	DW	LF9
	DW	LFA
	DW	LFB
	DW	LFC
	DW	LFD
	DW	LFE
	DW	LFF
	DW	L100
;#
;TABLE OF OP MNEMONICS AND INSTRUCTION LENGTHS(-1)
;
L00:	DB	'NOP',0
L01:	DB	'LXI	B',2
L02:	DB	'STAX	B',0
L03:	DB	'INX	B',0
L04:	DB	'INR	B',0
L05:	DB	'DCR	B',0
L06:	DB	'MVI	B',1
L07:	DB	'RLC',0
L08:	DB	'DB 	08H',0
L09:	DB	'DAD	B',0
L0A:	DB	'LDAX	B',0
L0B:	DB	'DCX	B',0
L0C:	DB	'INR	C',0
L0D:	DB	'DCR	C',0
L0E:	DB	'MVI	C',1
L0F:	DB	'RRC',0
L10:	DB	'DB 	10H',0
L11:	DB	'LXI	D',2
L12:	DB	'STAX	D',0
L13:	DB	'INX	D',0
L14:	DB	'INR	D',0
L15:	DB	'DCR	D',0
L16:	DB	'MVI	D',1
L17:	DB	'RAL',0
L18:	DB	'DB 	18H',0
L19:	DB	'DAD	D',0
L1A:	DB	'LDAX	D',0
L1B:	DB	'DCX	D',0
L1C:	DB	'INR	E',0
L1D:	DB	'DCR	E',0
L1E:	DB	'MVI	E',1
L1F:	DB	'RAR',0
L20:	DB	'DB 	20H',0
L21:	DB	'LXI	H',2
L22:	DB	'SHLD',2
L23:	DB	'INX	H',0
L24:	DB	'INR	H',0
L25:	DB	'DCR	H',0
L26:	DB	'MVI	H',1
L27:	DB	'DAA',0
L28:	DB	'DB 	28H',0
L29:	DB	'DAD	H',0
L2A:	DB	'LHLD',2
L2B:	DB	'DCX	H',0
L2C:	DB	'INR	L',0
L2D:	DB	'DCR	L',0
L2E:	DB	'MVI	L',1
L2F:	DB	'CMA',0
L30:	DB	'DB 	30H',0
L31:	DB	'LXI	SP',2
L32:	DB	'STA',2
L33:	DB	'INX	SP',0
L34:	DB	'INR	M',0
L35:	DB	'DCR	M',0
L36:	DB	'MVI	M',1
L37:	DB	'STC',0
L38:	DB	'DB 	38H',0
L39:	DB	'DAD	SP',0
L3A:	DB	'LDA',2
L3B:	DB	'DCX	SP',0
L3C:	DB	'INR	A',0
L3D:	DB	'DCR	A',0
L3E:	DB	'MVI	A',1
L3F:	DB	'CMC',0
L40:	DB	'MOV	B,B',0
L41:	DB	'MOV	B,C',0
L42:	DB	'MOV	B,D',0
L43:	DB	'MOV	B,E',0
L44:	DB	'MOV	B,H',0
L45:	DB	'MOV	B,L',0
L46:	DB	'MOV	B,M',0
L47:	DB	'MOV	B,A',0
L48:	DB	'MOV	C,B',0
L49:	DB	'MOV	C,C',0
L4A:	DB	'MOV	C,D',0
L4B:	DB	'MOV	C,E',0
L4C:	DB	'MOV	C,H',0
L4D:	DB	'MOV	C,L',0
L4E:	DB	'MOV	C,M',0
L4F:	DB	'MOV	C,A',0
L50:	DB	'MOV	D,B',0
L51:	DB	'MOV	D,C',0
L52:	DB	'MOV	D,D',0
L53:	DB	'MOV	D,E',0
L54:	DB	'MOV	D,H',0
L55:	DB	'MOV	D,L',0
L56:	DB	'MOV	D,M',0
L57:	DB	'MOV	D,A',0
L58:	DB	'MOV	E,B',0
L59:	DB	'MOV	E,C',0
L5A:	DB	'MOV	E,D',0
L5B:	DB	'MOV	E,E',0
L5C:	DB	'MOV	E,H',0
L5D:	DB	'MOV	E,L',0
L5E:	DB	'MOV	E,M',0
L5F:	DB	'MOV	E,A',0
L60:	DB	'MOV	H,B',0
L61:	DB	'MOV	H,C',0
L62:	DB	'MOV	H,D',0
L63:	DB	'MOV	H,E',0
L64:	DB	'MOV	H,H',0
L65:	DB	'MOV	H,L',0
L66:	DB	'MOV	H,M',0
L67:	DB	'MOV	H,A',0
L68:	DB	'MOV	L,B',0
L69:	DB	'MOV	L,C',0
L6A:	DB	'MOV	L,D',0
L6B:	DB	'MOV	L,E',0
L6C:	DB	'MOV	L,H',0
L6D:	DB	'MOV	L,L',0
L6E:	DB	'MOV	L,M',0
L6F:	DB	'MOV	L,A',0
L70:	DB	'MOV	M,B',0
L71:	DB	'MOV	M,C',0
L72:	DB	'MOV	M,D',0
L73:	DB	'MOV	M,E',0
L74:	DB	'MOV	M,H',0
L75:	DB	'MOV	M,L',0
L76:	DB	'HALT',0
L77:	DB	'MOV	M,A',0
L78:	DB	'MOV	A,B',0
L79:	DB	'MOV	A,C',0
L7A:	DB	'MOV	A,D',0
L7B:	DB	'MOV	A,E',0
L7C:	DB	'MOV	A,H',0
L7D:	DB	'MOV	A,L',0
L7E:	DB	'MOV	A,M',0
L7F:	DB	'MOV	A,A',0
L80:	DB	'ADD	B',0
L81:	DB	'ADD	C',0
L82:	DB	'ADD	D',0
L83:	DB	'ADD	E',0
L84:	DB	'ADD	H',0
L85:	DB	'ADD	L',0
L86:	DB	'ADD	M',0
L87:	DB	'ADD	A',0
L88:	DB	'ADC	B',0
L89:	DB	'ADC	C',0
L8A:	DB	'ADC	D',0
L8B:	DB	'ADC	E',0
L8C:	DB	'ADC	H',0
L8D:	DB	'ADC	L',0
L8E:	DB	'ADC	M',0
L8F:	DB	'ADC	A',0
L90:	DB	'SUB	B',0
L91:	DB	'SUB	C',0
L92:	DB	'SUB	D',0
L93:	DB	'SUB	E',0
L94:	DB	'SUB	H',0
L95:	DB	'SUB	L',0
L96:	DB	'SUB	M',0
L97:	DB	'SUB	A',0
L98:	DB	'SBB	B',0
L99:	DB	'SBB	C',0
L9A:	DB	'SBB	D',0
L9B:	DB	'SBB	E',0
L9C:	DB	'SBB	H',0
L9D:	DB	'SBB	L',0
L9E:	DB	'SBB	M',0
L9F:	DB	'SBB	A',0
LA0:	DB	'ANA	B',0
LA1:	DB	'ANA	C',0
LA2:	DB	'ANA	D',0
LA3:	DB	'ANA	E',0
LA4:	DB	'ANA	H',0
LA5:	DB	'ANA	L',0
LA6:	DB	'ANA	M',0
LA7:	DB	'ANA	A',0
LA8:	DB	'XRA	B',0
LA9:	DB	'XRA	C',0
LAA:	DB	'XRA	D',0
LAB:	DB	'XRA	E',0
LAC:	DB	'XRA	H',0
LAD:	DB	'XRA	L',0
LAE:	DB	'XRA	M',0
LAF:	DB	'XRA	A',0
LB0:	DB	'ORA	B',0
LB1:	DB	'ORA	C',0
LB2:	DB	'ORA	D',0
LB3:	DB	'ORA	E',0
LB4:	DB	'ORA	H',0
LB5:	DB	'ORA	L',0
LB6:	DB	'ORA	M',0
LB7:	DB	'ORA	A',0
LB8:	DB	'CMP	B',0
LB9:	DB	'CMP	C',0
LBA:	DB	'CMP	D',0
LBB:	DB	'CMP	E',0
LBC:	DB	'CMP	H',0
LBD:	DB	'CMP	L',0
LBE:	DB	'CMP	M',0
LBF:	DB	'CMP	A',0
LC0:	DB	'RNZ',0
LC1:	DB	'POP	B',0
LC2:	DB	'JNZ',2
LC3:	DB	'JMP',2
LC4:	DB	'CNZ',2
LC5:	DB	'PUSH	B',0
LC6:	DB	'ADI',1
LC7:	DB	'RST	0',0
LC8:	DB	'RZ',0
LC9:	DB	'RET',0
LCA:	DB	'JZ',2
LCB:	DB	'DB 	0CBH',0
LCC:	DB	'CZ',2
LCD:	DB	'CALL',2
LCE:	DB	'ACI',1
LCF:	DB	'RST	1',0
LD0:	DB	'RNC',0
LD1:	DB	'POP	D',0
LD2:	DB	'JNC',2
LD3:	DB	'OUT',1
LD4:	DB	'CNC',2
LD5:	DB	'PUSH	D',0
LD6:	DB	'SUI',1
LD7:	DB	'RST	2',0
LD8:	DB	'RC',0
LD9:	DB	'DB 	0D9H',0
LDA:	DB	'JC',2
LDB:	DB	'IN',1
LDC:	DB	'CC',2
LDD:	DB	'DB 	0DDH',0
LDE:	DB	'SBI',1
LDF:	DB	'RST	3',0
LE0:	DB	'RPO',0
LE1:	DB	'POP	H',0
LE2:	DB	'JPO',2
LE3:	DB	'XTHL',0
LE4:	DB	'CPO',2
LE5:	DB	'PUSH	H',0
LE6:	DB	'ANI',1
LE7:	DB	'RST	4',0
LE8:	DB	'RPE',0
LE9:	DB	'PCHL',0
LEA:	DB	'JPE',2
LEB:	DB	'XCHG',0
LEC:	DB	'CPE',2
LED:	DB	'DB 	0EDH',0
LEE:	DB	'XRI',1
LEF:	DB	'RST	5',0
LF0:	DB	'RP',0
LF1:	DB	'POP	PSW',0
LF2:	DB	'JP',2
LF3:	DB	'DI',0
LF4:	DB	'CP',2
LF5:	DB	'PUSH	PSW',0
LF6:	DB	'ORI',1
LF7:	DB	'RST	6',0
LF8:	DB	'RM',0
LF9:	DB	'SPHL',0
LFA:	DB	'JM',2
LFB:	DB	'EI',0
LFC:	DB	'CM',2
LFD:	DB	'DB 	0FDH',0
LFE:	DB	'CPI',1
LFF:	DB	'RST	7',0
L100:
ENDP:
	END	INIT