

;
;	FIG-FORTH 1.1 VERSION A0
;
FIGREL	EQU 1
FIGREV	EQU 1
USRVER	EQU 0
;
;	ASCII CHARACTERS USED
;
ABL	EQU 20H
BELL	EQU 07H
ACR	EQU 0DH
ADOT	EQU 02EH
BSIN	EQU 7FH
BSOUT	EQU 08H
DLE	EQU 10H
LF	EQU 0AH
FF	EQU 0CH
;
;	MEMORY ALLOCATION
;
HBASE	EQU 4200H
EM	EQU HBASE+3000H
NSCR	EQU 1
KBBUF	EQU 128
US	EQU 40H
RTS	EQU 0A0H
;
CO	EQU KBBUF+4
NBUF	EQU NSCR*400H/KBBUF
BUF1	EQU EM-CO*NBUF
INITR0	EQU BUF1-US
INITS0	EQU INITR0-RTS
;
	ORG HBASE+100H
ORIG	NOP
	JMP CLD
	NOP
	JMP WRM
	DB FIGREL
	DB FIGREV
	DB USRVER
	DB 0EH
	DW TASK-7
	DW BSIN
	DW INITR0
;<<<<<	FOLLOWING USED BY COLD;
;	MUST BE IN SAME ORDER AS USER VARIABLES
	DW INITS0
	DW INITR0
	DW INITS0
	DW 1FH
	DW 0
	DW INITDP
	DW INITDP
	DW FORTH+8
;<<<<<<<END	DATA USED BY COLD
	DW 5H,0B320H
;
;FORTH	REGISTERS
;
UP	DW INITR0
RPP	DW INITR0
;
;	DEBUG SUPPORT
;
BIP	DW 0
;
TNEXT	LXI H,BIP
	MOV A,M
	CMP C
	JNZ TNEXT1
	INX H
	MOV A,M
	CMP B
	JNZ TNEXT1
BREAK	NOP
	NOP
	NOP
TNEXT1	LDAX B
	INX B
	MOV L,A
	JMP NEXT+3
;
;	FORTH ADDRESS INTERPRETER
;
DPUSH	PUSH D
HPUSH	PUSH H
NEXT	LDAX B
	INX B
	MOV L,A
	LDAX B
	INX B
	MOV H,A
NEXT1:	MOV E,M
	INX H
	MOV D,M
	XCHG 
	PCHL
;
;	FORTH DICTIONARY
;
DP0	DB 83H
	DB 'LI'
	DB 'T'+80H
	DW 0
LIT	DW $+2
	LDAX B
	INX B
	MOV L,A
	LDAX B
	INX B
	MOV H,A
	JMP HPUSH
;
	DB 87H
	DB 'EXECUT'
	DB 'E'+80H
	DW LIT-6
EXEC	DW $+2
	POP H
	JMP NEXT1
;
	DB 86H
	DB 'BRANC'
	DB 'H'+80H
	DW EXEC-0AH
BRAN	DW $+2
BRAN1	MOV H,B
	MOV L,C
	MOV E,M
	INX H
	MOV D,M
	DCX H
	DAD D
	MOV C,L
	MOV B,H
	JMP NEXT
;
	DB 87H
	DB '0BRANC'
	DB 'H'+80H
	DW BRAN-9
ZBRAN	DW $+2
	POP H
	MOV A,L
	ORA H
	JZ BRAN1
	INX B
	INX B
	JMP NEXT
;
	DB 86H
	DB '(LOOP'
	DB ')'+80H
	DW ZBRAN-0AH
XLOOP	DW $+2
	LXI D,1
XLOO1	LHLD RPP
	MOV A,M
	ADD E
	MOV M,A
	MOV E,A
	INX H
	MOV A,M
	ADC D
	MOV M,A
	INX H
	INR D
	DCR D
	MOV D,A
	JM XLOO2
	MOV A,E
	SUB M
	MOV A,D
	INX H
	SBB M
	JMP XLOO3
XLOO2	MOV A,M
	SUB E
	INX H
	MOV A,M
	SBB D
;
XLOO3	JM BRAN1
	INX H
	SHLD RPP
	INX B
	INX B
	JMP NEXT
;
	DB 87H
	DB '(+LOOP'
	DB ')'+80H
	DW XLOOP-9
XPLOO	DW $+2
	POP D
	JMP XLOO1
;
	DB 84H
	DB '(DO'
	DB ')'+80H
	DW XPLOO-0AH
XDO	DW $+2
	LHLD RPP 
	DCX H
	DCX H
	DCX H
	DCX H
	SHLD RPP
	POP D
	MOV M,E
	INX H
	MOV M,D
	POP D
	INX H
	MOV M,E
	INX H
	MOV M,D
	JMP NEXT
;
	DB 81H
	DB 'I'+80H
	DW XDO-7
IDO	DW $+2
	LHLD RPP 
	MOV E,M
	INX H
	MOV D,M
	PUSH D
	JMP NEXT
;
	DB 85H
	DB 'DIGI'
	DB 'T'+80H
	DW IDO-4
DIGIT	DW $+2
	POP H
	POP D
	MOV A,E
	SUI 30H
	JM DIGI2
	CPI 0AH
	JM DIGI1
	SUI 7
	CPI 0AH
	JM DIGI2
;
DIGI1	CMP L
	JP DIGI2
	MOV E,A
	LXI H,1
	JMP DPUSH
;
DIGI2	MOV L,H
	JMP HPUSH
;
	DB 86H
	DB '(FIND'
	DB ')'+80H
	DW DIGIT-8
PFIND	DW $+2
	POP D
PFIN1	POP H
	PUSH H
	LDAX D
	XRA M
	ANI 3FH
	JNZ PFIN4
;
PFIN2	INX H
	INX D
	LDAX D
	XRA M
	ADD A
	JNZ PFIN3
	JNC PFIN2
	LXI H,5
	DAD D
	XTHL
;
PFIN6	DCX D
	LDAX D
	ORA A
	JP PFIN6
	MOV E,A
	MVI D,0
	LXI H,1
	JMP DPUSH
;
PFIN3	JC PFIN5
PFIN4	INX D
	LDAX D
	ORA A
	JP PFIN4
PFIN5	INX D
	XCHG
	MOV E,M
	INX H
	MOV D,M
	MOV A,D
	ORA E
	JNZ PFIN1
	POP H
	LXI H,0
	JMP HPUSH
;
	DB 87H
	DB 'ENCLOS'
	DB 'E'+80H
	DW PFIND-9
ENCL	DW $+2
	POP D
	POP H
	PUSH H
	MOV A,E
	MOV D,A
	MVI E,0FFH
	DCX H
;
ENCL1	INX H
	INR E
	CMP M
	JZ ENCL1
;
	MVI D,0
	PUSH D
	MOV D,A
	MOV A,M
	ANA A
	JNZ ENCL2
	MVI D,0
	INR E
	PUSH D
	DCR E
	PUSH D
	JMP NEXT
;
ENCL2	MOV A,D
	INX H
	INR E
	CMP M
	JZ ENCL4
	MOV A,M
	ANA A
	JNZ ENCL2
;
ENCL3	MVI D,0
	PUSH D
	PUSH D
	JMP NEXT
;
ENCL4	MVI D,0
	PUSH D
	INR E
	PUSH D
	JMP NEXT
;
	DB 84H
	DB 'EMI'
	DB 'T'+80H
	DW ENCL-0AH
EMIT	DW DOCOL
	DW PEMIT
	DW ONE,OUTT
	DW PSTOR,SEMIS
;
	DB 83H
	DB 'KE'
	DB 'Y'+80H
	DW EMIT-7
KEY	DW $+2
	JMP PKEY
;
	DB 89H
	DB '?TERMINA'
	DB 'L'+80H
	DW KEY-6
QTERM	DW $+2
	LXI H,0
	JMP PQTER
;
	DB 82H
	DB 'C'
	DB 'R'+80H
	DW QTERM-0CH
CR	DW $+2
	JMP PCR
;
	DB 85H
	DB 'CMOV'
	DB 'E'+80H
	DW CR-5
CMOVE	DW $+2
	MOV L,C
	MOV H,B
	POP B
	POP D
	XTHL
;
	JMP CMOV2
CMOV1	MOV A,M
	INX H
	STAX D
	INX D
	DCX B
CMOV2	MOV A,B
	ORA C
	JNZ CMOV1
	POP B
	JMP NEXT
;
	DB 82H
	DB 'U'
	DB '*'+80H
	DW CMOVE-8
USTAR	DW $+2
	POP D
	POP H
	PUSH B
	MOV B,H
	MOV A,L
	CALL MPYX
	PUSH H
	MOV H,A
	MOV A,B
	MOV B,H
	CALL MPYX
	POP D
	MOV C,D
	DAD B
	ACI 0
	MOV D,L
	MOV L,H
	MOV H,A
	POP B
	PUSH D
	JMP HPUSH
;
;	MULTIPLY PRIMITIVE
;
MPYX	LXI H,0
	MVI C,8
MPYX1	DAD H
	RAL 
	JNC MPYX2
	DAD D
	ACI 0
MPYX2	DCR C
	JNZ MPYX1
	RET
;
	DB 82H
	DB 'U'
	DB '/'+80H
	DW USTAR-5
USLAS	DW $+2
	LXI H,4
	DAD SP
	MOV E,M
	MOV M,C
	INX H
	MOV D,M
	MOV M,B
	POP B
	POP H
	MOV A,L
	SUB C
	MOV A,H
	SBB B
	JC USLA1
	LXI H,0FFFFH
	LXI D,0FFFFH
	JMP USLA7
USLA1	MVI A,16
USLA2	DAD H
	RAL 
	XCHG
	DAD H
	JNC USLA3
	INX D
	ANA A
USLA3	XCHG
	RAR
	PUSH PSW
	JNC USLA4
	MOV A,L
	SUB C
	MOV L,A
	MOV A,H
	SBB B
	MOV H,A
	JMP USLA5
USLA4	MOV A,L
	SUB C
	MOV L,A
	MOV A,H
	SBB B
	MOV H,A
	JNC USLA5
	DAD B
	DCX D
USLA5	INX D
USLA6	POP PSW
	DCR A
	JNZ USLA2
USLA7	POP B
	PUSH H
	PUSH D
	JMP NEXT
;
	DB 83H
	DB 'AN'
	DB 'D'+80H
	DW USLAS-5
ANDD	DW $+2
	POP D
	POP H
	MOV A,E
	ANA L
	MOV L,A
	MOV A,D
	ANA H
	MOV H,A
	JMP HPUSH
;
	DB 82H
	DB 'O'
	DB 'R'+80H
	DW ANDD-6
ORR	DW $+2
	POP D
	POP H
	MOV A,E
	ORA L
	MOV L,A
	MOV A,D
	ORA H
	MOV H,A
	JMP HPUSH
;
	DB 83H
	DB 'XO'
	DB 'R'+80H
	DW ORR-5
XORR	DW $+2
	POP D
	POP H
	MOV A,E
	XRA L
	MOV L,A
	MOV A,D
	XRA H
	MOV H,A
	JMP HPUSH
;
	DB 83H
	DB 'SP'
	DB '@'+80H
	DW XORR-6
SPAT	DW $+2
	LXI H,0
	DAD SP
	JMP HPUSH
;
	DB 83H
	DB 'SP'
	DB '!'+80H
	DW SPAT-6
SPSTO	DW $+2
	LHLD UP
	LXI D,6
	DAD D
	MOV E,M
	INX H
	MOV D,M
	XCHG
	SPHL
	JMP NEXT
;
	DB 83H
	DB 'RP'
	DB '@'+80H
	DW SPSTO-6
RPAT	DW $+2
	LHLD RPP
	JMP HPUSH
;
	DB 83H
	DB 'RP'
	DB '!'+80H
	DW RPAT-6
RPSTO	DW $+2
	LHLD UP
	LXI D,8
	DAD D
	MOV E,M
	INX H
	MOV D,M
	XCHG
	SHLD RPP
	JMP NEXT
;
	DB 82H
	DB ';'
	DB 'S'+80H
	DW RPSTO-6
SEMIS	DW $+2
	LHLD RPP
	MOV C,M
	INX H
	MOV B,M
	INX H
	SHLD RPP
	JMP NEXT
;
	DB 85H
	DB 'LEAV'
	DB 'E'+80H
	DW SEMIS-5
LEAVE	DW $+2
	LHLD RPP 
	MOV E,M
	INX H
	MOV D,M
	INX H
	MOV M,E
	INX H
	MOV M,D
	JMP NEXT
;
	DB 82H
	DB '>'
	DB 'R'+80H
	DW LEAVE-8
TOR	DW $+2
	POP D
	LHLD RPP
	DCX H
	DCX H
	SHLD RPP
	MOV M,E
	INX H
	MOV M,D
	JMP NEXT
;
	DB 82H
	DB 'R'
	DB '>'+80H
	DW TOR-5
FROMR	DW $+2
	LHLD RPP 
	MOV E,M
	INX H
	MOV D,M
	INX H
	SHLD RPP
	PUSH D
	JMP NEXT
;
	DB 81H
	DB 'R'+80H
	DW FROMR-5
RR	DW IDO+2
;
	DB 82H
	DB '0'
	DB '='+80H
	DW RR-4
ZEQU	DW $+2
	POP H
	MOV A,L
	ORA H
	LXI H,0
	JNZ ZEQU1
	INX H
ZEQU1	JMP HPUSH
;
	DB 82H
	DB '0'
	DB '<'+80H
	DW ZEQU-5
ZLESS	DW $+2
	POP H
	DAD H
	LXI H,0
	JNC ZLES1
	INX H
ZLES1	JMP HPUSH
;
	DB 81H
	DB '+'+80H
	DW ZLESS-5
PLUS	DW $+2
	POP D
	POP H
	DAD D
	JMP HPUSH
;
	DB 82H
	DB 'D'
	DB '+'+80H
	DW PLUS-4
DPLUS	DW $+2
	LXI H,6
	DAD SP
	MOV E,M
	MOV M,C
	INX H
	MOV D,M
	MOV M,B
	POP B
	POP H
	DAD D
	XCHG
	POP H
	MOV A,L
	ADC C
	MOV L,A
	MOV A,H
	ADC B
	MOV H,A
	POP B
	PUSH D
	JMP HPUSH
;
	DB 85H
	DB 'MINU'
	DB 'S'+80H
	DW DPLUS-5
MINUS	DW $+2
	POP H
	MOV A,L
	CMA
	MOV L,A
	MOV A,H
	CMA
	MOV H,A
	INX H
	JMP HPUSH
;
	DB 86H
	DB 'DMINU'
	DB 'S'+80H
	DW MINUS-8
DMINU	DW $+2
	POP H
	POP D
	SUB A
	SUB E
	MOV E,A
	MVI A,0
	SBB D
	MOV D,A
	MVI A,0
	SBB L
	MOV L,A
	MVI A,0
	SBB H
	MOV H,A
	PUSH D
	JMP HPUSH
;
	DB 84H
	DB 'OVE'
	DB 'R'+80H
	DW DMINU-9
OVER	DW $+2
	POP D
	POP H
	PUSH H
	JMP DPUSH
;
	DB 84H
	DB 'DRO'
	DB 'P'+80H
	DW OVER-7
DROP	DW $+2
	POP H
	JMP NEXT
;
	DB 84H
	DB 'SWA'
	DB 'P'+80H
	DW DROP-7
SWAP	DW $+2
	POP H
	XTHL
	JMP HPUSH
;
	DB 83H
	DB 'DU'
	DB 'P'+80H
	DW SWAP-7
DUP	DW $+2
	POP H
	PUSH H
	JMP HPUSH
;
	DB 84H
	DB '2DU'
	DB 'P'+80H
	DW DUP-6
TDUP	DW $+2
	POP H
	POP D
	PUSH D
	PUSH H
	JMP DPUSH
;
	DB 82H
	DB '+'
	DB '!'+80H
	DW TDUP-7
PSTOR	DW $+2
	POP H
	POP D
	MOV A,M
	ADD E
	MOV M,A
	INX H
	MOV A,M
	ADC D
	MOV M,A
	JMP NEXT
;
	DB 86H
	DB 'TOGGL'
	DB 'E'+80H
	DW PSTOR-5
TOGGL	DW $+2
	POP D
	POP H
	MOV A,M
	XRA E
	MOV M,A
	JMP NEXT
;
	DB 81H
	DB '@'+80H
	DW TOGGL-9
AT	DW $+2
	POP H
	MOV E,M
	INX H
	MOV D,M
	PUSH D
	JMP NEXT
;
	DB 82H
	DB 'C'
	DB '@'+80H
	DW AT-4
CAT	DW $+2
	POP H
	MOV L,M
	MVI H,0
	JMP HPUSH
;
	DB 82H
	DB '2'
	DB '@'+80H
	DW CAT-5
TAT	DW $+2
	POP H
	LXI D,2
	DAD D
	MOV E,M
	INX H
	MOV D,M
	PUSH D
	LXI D,-3
	DAD D
	MOV E,M
	INX H
	MOV D,M
	PUSH D
	JMP NEXT
;
	DB 81H
	DB '!'+80H
	DW TAT-5
STORE	DW $+2
	POP H
	POP D
	MOV M,E
	INX H
	MOV M,D
	JMP NEXT
;
	DB 82H
	DB 'C'
	DB '!'+80H
	DW STORE-4
CSTOR	DW $+2
	POP H
	POP D
	MOV M,E
	JMP NEXT
;
	DB 82H
	DB '2'
	DB '!'+80H
	DW CSTOR-5
TSTOR	DW $+2
	POP H
	POP D
	MOV M,E
	INX H
	MOV M,D
	INX H
	POP D
	MOV M,E
	INX H
	MOV M,D
	JMP NEXT
;
	DB 0C1H ; :
	DB ':'+80H
	DW TSTOR-5
COLON	DW DOCOL
	DW QEXEC
	DW SCSP
	DW CURR
	DW AT
	DW CONT
	DW STORE
	DW CREAT
	DW RBRAC
	DW PSCOD
DOCOL	LHLD RPP
	DCX H
	MOV M,B
	DCX H
	MOV M,C
	SHLD RPP
	INX D
	MOV C,E
	MOV B,D
	JMP NEXT
;
	DB 0C1H ; ;
	DB ';'+80H
	DW COLON-4
SEMI	DW DOCOL
	DW QCSP
	DW COMP
	DW SEMIS
	DW SMUDG
	DW LBRAC
	DW SEMIS
;
	DB 84H
	DB 'NOO'
	DB 'P'+80H
	DW SEMI-4
NOOP	DW DOCOL
	DW SEMIS
;
	DB 88H
	DB 'CONSTAN'
	DB 'T'+80H
	DW NOOP-7
CON	DW DOCOL
	DW CREAT
	DW SMUDG
	DW COMMA 
	DW PSCOD
DOCON	INX D
	XCHG
	MOV E,M
	INX H
	MOV D,M
	PUSH D
	JMP NEXT
;
	DB 88H
	DB 'VARIABL'
	DB 'E'+80H
	DW CON-0BH
VAR	DW DOCOL
	DW CON
	DW PSCOD
DOVAR	INX D
	PUSH D
	JMP NEXT
;
	DB 84H
	DB 'USE'
	DB 'R'+80H
	DW VAR-0BH
USER	DW DOCOL
	DW CON
	DW PSCOD
DOUSE	INX D
	XCHG
	MOV E,M
	MVI D,0
	LHLD UP
	DAD D
	JMP HPUSH
;
	DB 81H
	DB '0'+80H
	DW USER-7
ZERO	DW DOCON
	DW 0
;
	DB 81H
	DB '1'+80H
	DW ZERO-4
ONE	DW DOCON
	DW 1
;
	DB 81H
	DB '2'+80H
	DW ONE-4
TWO	DW DOCON
	DW 2
;
	DB 81H
	DB '3'+80H
	DW TWO-4
THREE	DW DOCON
	DW 3
;
	DB 82H
	DB 'B'
	DB 'L'+80H
	DW THREE-4
BL	DW DOCON
	DW 20H
;
	DB 83H
	DB 'C/'
	DB 'L'+80H
	DW BL-5
CSLL	DW DOCON
	DW 64
;
	DB 85H
	DB 'FIRS'
	DB 'T'+80H
	DW CSLL-6
FIRST	DW DOCON
	DW BUF1
;
	DB 85H
	DB 'LIMI'
	DB 'T'+80H
	DW FIRST-8
LIMIT	DW DOCON
	DW EM
;
	DB 85H
	DB 'B/BU'
	DB 'F'+80H
	DW LIMIT-8
BBUF	DW DOCON
	DW KBBUF
;
	DB 85H
	DB 'B/SC'
	DB 'R'+80H
	DW BBUF-8
BSCR	DW DOCON
	DW 400H/KBBUF
;
	DB 87H
	DB '+ORIGI'
	DB 'N'+80H
	DW BSCR-8
PORIG	DW DOCOL
	DW LIT
	DW ORIG
	DW PLUS
	DW SEMIS
;
;	USER VARIABLES
;
	DB 82H
	DB 'S'
	DB '0'+80H
	DW PORIG-0AH
SZERO	DW DOUSE
	DW 6
;
	DB 82H
	DB 'R'
	DB '0'+80H
	DW SZERO-5
RZERO	DW DOUSE
	DW 8
;
	DB 83H
	DB 'TI'
	DB 'B'+80H
	DW RZERO-5
TIB	DW DOUSE
	DB 0AH
;
	DB 85H
	DB 'WIDT'
	DB 'H'+80H
	DW TIB-6
WIDTH	DW DOUSE
	DB 0CH
;
	DB 87H
	DB 'WARNIN'
	DB 'G'+80H
	DW WIDTH-8
WARN	DW DOUSE
	DB 0EH
;
	DB 85H
	DB 'FENC'
	DB 'E'+80H
	DW WARN-0AH
FENCE	DW DOUSE
	DB 10H
;
	DB 82H
	DB 'D'
	DB 'P'+80H
	DW FENCE-8
DP	DW DOUSE
	DB 12H
;
	DB 88H
	DB 'VOC-LIN'
	DB 'K'+80H
	DW DP-5
VOCL	DW DOUSE
	DW 14H
;
	DB 83H
	DB 'BL'
	DB 'K'+80H
	DW VOCL-0BH
BLK	DW DOUSE
	DB 16H
;
	DB 82H
	DB 'I'
	DB 'N'+80H
	DW BLK-6
INN	DW DOUSE
	DB 18H
;
	DB 83H
	DB 'OU'
	DB 'T'+80H
	DW INN-5
OUTT	DW DOUSE
	DB 1AH
;
	DB 83H
	DB 'SC'
	DB 'R'+80H
	DW OUTT-6
SCR	DW DOUSE
	DB 1CH
;
	DB 86H
	DB 'OFFSE'
	DB 'T'+80H
	DW SCR-6
OFSET	DW DOUSE
	DB 1EH
;
	DB 87H
	DB 'CONTEX'
	DB 'T'+80H
	DW OFSET-9
CONT	DW DOUSE
	DB 20H
;
	DB 87H
	DB 'CURREN'
	DB 'T'+80H
	DW CONT-0AH
CURR	DW DOUSE
	DB 22H
;
	DB 85H
	DB 'STAT'
	DB 'E'+80H
	DW CURR-0AH
STATE	DW DOUSE
	DB 24H
;
	DB 84H
	DB 'BAS'
	DB 'E'+80H
	DW STATE-8
BASE	DW DOUSE
	DB 26H
;
	DB 83H
	DB 'DP'
	DB 'L'+80H
	DW BASE-7
DPL	DW DOUSE
	DB 28H
;
	DB 83H
	DB 'FL'
	DB 'D'+80H
	DW DPL-6
FLD	DW DOUSE
	DB 2AH
;
	DB 83H
	DB 'CS'
	DB 'P'+80H
	DW FLD-6
CSPP	DW DOUSE
	DB 2CH
;
	DB 82H
	DB 'R'
	DB '#'+80H
	DW CSPP-6
RNUM	DW DOUSE
	DB 2EH
;
	DB 83H
	DB 'HL'
	DB 'D'+80H
	DW RNUM-5
HLD	DW DOUSE
	DW 30H
;
;	END OF USER VARIABLES
;
	DB 82H
	DB '1'
	DB '+'+80H
	DW HLD-6
ONEP	DW DOCOL
	DW ONE
	DW PLUS
	DW SEMIS
;
	DB 82H
	DB '2'
	DB '+'+80H
	DW ONEP-5
TWOP	DW DOCOL
	DW TWO
	DW PLUS
	DW SEMIS
;
	DB 84H
	DB 'HER'
	DB 'E'+80H
	DW TWOP-5
HERE	DW DOCOL
	DW DP
	DW AT
	DW SEMIS
;
	DB 85H
	DB 'ALLO'
	DB 'T'+80H
	DW HERE-7
ALLOT	DW DOCOL
	DW DP
	DW PSTOR
	DW SEMIS
;
	DB 81H
	DB ','+80H
	DW ALLOT-8
COMMA	DW DOCOL
	DW HERE
	DW STORE
	DW TWO
	DW ALLOT
	DW SEMIS
;
	DB 82H
	DB 'C'
	DB ','+80H
	DW COMMA-4
CCOMM	DW DOCOL
	DW HERE
	DW CSTOR
	DW ONE
	DW ALLOT
	DW SEMIS
;
;	SUBROUTINE USED BY - AND <
;
SSUB	MOV A,L
	SUB E
	MOV L,A
	MOV A,H
	SBB D
	MOV H,A
	RET
;
	DB 81H
	DB '-'+80H
	DW CCOMM-5
SUBB	DW $+2
	POP D
	POP H
	CALL SSUB
	JMP HPUSH
;
	DB 81H
	DB '='+80H
	DW SUBB-4
EQUAL	DW DOCOL
	DW SUBB
	DW ZEQU
	DW SEMIS
;
	DB 81H
	DB '<'+80H
	DW EQUAL-4
LESS	DW $+2
	POP D
	POP H
	MOV A,D
	XRA H
	JM LES1
	CALL SSUB
LES1	INR H
	DCR H
	JM LES2
	LXI H,0
	JMP HPUSH
LES2	LXI H,1
	JMP HPUSH
;
	DB 82H
	DB 'U'
	DB '<'+80H
	DW LESS-4
ULESS	DW DOCOL,TDUP
	DW XORR,ZLESS
	DW ZBRAN,ULES1-$
	DW DROP,ZLESS
	DW ZEQU
	DW BRAN,ULES2-$
ULES1	DW SUBB,ZLESS
ULES2	DW SEMIS
;
	DB 81H
	DB '>'+80H
	DW ULESS-5
GREAT	DW DOCOL
	DW SWAP
	DW LESS
	DW SEMIS
;
	DB 83H
	DB 'RO'
	DB 'T'+80H
	DW GREAT-4
ROT	DW $+2
	POP D
	POP H
	XTHL
	JMP DPUSH
;
	DB 85H
	DB 'SPAC'
	DB 'E'+80H
	DW ROT-6
SPACE	DW DOCOL
	DW BL
	DW EMIT
	DW SEMIS
;
	DB 84H
	DB '-DU'
	DB 'P'+80H
	DW SPACE-8
DDUP	DW DOCOL
	DW DUP
	DW ZBRAN
	DW DDUP1-$
	DW DUP
DDUP1	DW SEMIS
;
	DB 88H
	DB 'TRAVERS'
	DB 'E'+80H
	DW DDUP-7
TRAV	DW DOCOL
	DW SWAP
TRAV1	DW OVER
	DW PLUS
	DW LIT
	DW 7FH
	DW OVER
	DW CAT
	DW LESS
	DW ZBRAN
	DW TRAV1-$
	DW SWAP
	DW DROP
	DW SEMIS
;
	DB 86H
	DB 'LATES'
	DB 'T'+80H
	DW TRAV-0BH
LATES	DW DOCOL
	DW CURR
	DW AT
	DW AT
	DW SEMIS
;
	DB 83H
	DB 'LF'
	DB 'A'+80H
	DW LATES-9
LFA	DW DOCOL
	DW LIT
	DW 4
	DW SUBB
	DW SEMIS
;
	DB 83H
	DB 'CF'
	DB 'A'+80H
	DW LFA-6
CFA	DW DOCOL
	DW TWO
	DW SUBB
	DW SEMIS
;
	DB 83H
	DB 'NF'
	DB 'A'+80H
	DW CFA-6
NFA	DW DOCOL
	DW LIT
	DW 5
	DW SUBB
	DW LIT
	DW -1
	DW TRAV
	DW SEMIS
;
	DB 83H
	DB 'PF'
	DB 'A'+80H
	DW NFA-6
PFA	DW DOCOL
	DW ONE
	DW TRAV
	DW LIT
	DW 5
	DW PLUS
	DW SEMIS
;
	DB 84H
	DB '!CS'
	DB 'P'+80H
	DW PFA-6
SCSP	DW DOCOL
	DW SPAT
	DW CSPP
	DW STORE
	DW SEMIS
;
	DB 86H
	DB '?ERRO'
	DB 'R'+80H
	DW SCSP-7
QERR	DW DOCOL
	DW SWAP
	DW ZBRAN
	DW QERR1-$
	DW ERROR
	DW BRAN
	DW QERR2-$
QERR1	DW DROP
QERR2	DW SEMIS
;
	DB 85H
	DB '?COM'
	DB 'P'+80H
	DW QERR-9
QCOMP	DW DOCOL
	DW STATE
	DW AT
	DW ZEQU
	DW LIT
	DW 11H
	DW QERR
	DW SEMIS
;
	DB 85H
	DB '?EXE'
	DB 'C'+80H
	DW QCOMP-8
QEXEC	DW DOCOL
	DW STATE
	DW AT
	DW LIT
	DW 12H
	DW QERR
	DW SEMIS
;
	DB 86H
	DB '?PAIR'
	DB 'S'+80H
	DW QEXEC-8
QPAIR	DW DOCOL
	DW SUBB
	DW LIT
	DW 13H
	DW QERR
	DW SEMIS
;
	DB 84H
	DB '?CS'
	DB 'P'+80H
	DW QPAIR-9
QCSP	DW DOCOL
	DW SPAT
	DW CSPP
	DW AT
	DW SUBB
	DW LIT
	DW 14H
	DW QERR
	DW SEMIS
;
	DB 88H
	DB '?LOADIN'
	DB 'G'+80H
	DW QCSP-7
QLOAD	DW DOCOL
	DW BLK
	DW AT
	DW ZEQU
	DW LIT
	DW 16H
	DW QERR
	DW SEMIS
;
	DB 87H
	DB 'COMPIL'
	DB 'E'+80H
	DW QLOAD-0BH
COMP	DW DOCOL
	DW QCOMP
	DW FROMR
	DW DUP
	DW TWOP
	DW TOR
	DW AT
	DW COMMA
	DW SEMIS
;
	DB 0C1H
	DB '['+80H
	DW COMP-0AH
LBRAC	DW DOCOL
	DW ZERO
	DW STATE
	DW STORE
	DW SEMIS
;
	DB 81H
	DB ']'+80H
	DW LBRAC-4
RBRAC	DW DOCOL
	DW LIT,0C0H
	DW STATE,STORE
	DW SEMIS
;
	DB 86H
	DB 'SMUDG'
	DB 'E'+80H
	DW RBRAC-4
SMUDG	DW DOCOL
	DW LATES
	DW LIT
	DW 20H
	DW TOGGL
	DW SEMIS
;
	DB 83H
	DB 'HE'
	DB 'X'+80H
	DW SMUDG-9
HEX	DW DOCOL
	DW LIT
	DW 10H
	DW BASE
	DW STORE
	DW SEMIS
;
	DB 87H
	DB 'DECIMA'
	DB 'L'+80H
	DW HEX-6
DEC	DW DOCOL
	DW LIT
	DW 0AH
	DW BASE
	DW STORE
	DW SEMIS
;
	DB 87H
	DB '(;CODE'
	DB ')'+80H
	DW DEC-0AH
PSCOD	DW DOCOL
	DW FROMR
	DW LATES
	DW PFA
	DW CFA
	DW STORE
	DW SEMIS
;
	DB 0C5H
	DB ';COD'
	DB 'E'+80H
	DW PSCOD-0AH
SEMIC	DW DOCOL
	DW QCSP
	DW COMP
	DW PSCOD
	DW LBRAC
SEMI1	DW NOOP
	DW SEMIS
;
	DB 87H
	DB '<BUILD'
	DB 'S'+80H
	DW SEMIC-8
BUILD	DW DOCOL
	DW ZERO
	DW CON
	DW SEMIS
;
	DB 85H
	DB 'DOES'
	DB '>'+80H
	DW BUILD-0AH
DOES	DW DOCOL
	DW FROMR
	DW LATES
	DW PFA
	DW STORE
	DW PSCOD
DODOE	LHLD RPP
	DCX H
	MOV M,B
	DCX H
	MOV M,C
	SHLD RPP
	INX D
	XCHG
	MOV C,M
	INX H
	MOV B,M
	INX H
	JMP HPUSH
;
	DB 85H
	DB 'COUN'
	DB 'T'+80H
	DW DOES-8
COUNT	DW DOCOL
	DW DUP
	DW ONEP
	DW SWAP
	DW CAT
	DW SEMIS
;
	DB 84H
	DB 'TYP'
	DB 'E'+80H
	DW COUNT-8
TYPE	DW DOCOL
	DW DDUP
	DW ZBRAN
	DW TYPE1-$
	DW OVER
	DW PLUS
	DW SWAP
	DW XDO
TYPE2	DW IDO
	DW CAT
	DW EMIT
	DW XLOOP
	DW TYPE2-$
	DW BRAN
	DW TYPE3-$
TYPE1	DW DROP
TYPE3	DW SEMIS
;
	DB 89H
	DB '-TRAILIN'
	DB 'G'+80H
	DW TYPE-7
DTRAI	DW DOCOL
	DW DUP
	DW ZERO
	DW XDO
DTRA1	DW OVER
	DW OVER
	DW PLUS
	DW ONE
	DW SUBB
	DW CAT
	DW BL
	DW SUBB
	DW ZBRAN
	DW DTRA2-$
	DW LEAVE
	DW BRAN
	DW DTRA3-$
DTRA2	DW ONE
	DW SUBB
DTRA3	DW XLOOP
	DW DTRA1-$
	DW SEMIS
;
	DB 84H
	DB '(."'
	DB ')'+80H
	DW DTRAI-0CH
PDOTQ	DW DOCOL
	DW RR
	DW COUNT
	DW DUP
	DW ONEP
	DW FROMR
	DW PLUS
	DW TOR
	DW TYPE
	DW SEMIS
;
	DB 0C2H
	DB '.'
	DB '"'+80H
	DW PDOTQ-7
DOTQ	DW DOCOL
	DW LIT
	DW 22H
	DW STATE
	DW AT
	DW ZBRAN
	DW DOTQ1-$
	DW COMP
	DW PDOTQ
	DW WORD
	DW HERE
	DW CAT
	DW ONEP
	DW ALLOT
	DW BRAN
	DW DOTQ2-$
DOTQ1	DW WORD
	DW HERE
	DW COUNT
	DW TYPE
DOTQ2	DW SEMIS
;
	DB 86H
	DB 'EXPEC'
	DB 'T'+80H
	DW DOTQ-5
EXPEC	DW DOCOL
	DW OVER
	DW PLUS
	DW OVER
	DW XDO
EXPE1	DW KEY
	DW DUP
	DW LIT
	DW 0EH
	DW PORIG
	DW AT
	DW EQUAL
	DW ZBRAN
	DW EXPE2-$
	DW DROP
	DW DUP
	DW IDO
	DW EQUAL
	DW DUP
	DW FROMR
	DW TWO
	DW SUBB
	DW PLUS
	DW TOR
	DW ZBRAN
	DW EXPE6-$
	DW LIT
	DW BELL
	DW BRAN
	DW EXPE7-$
EXPE6	DW LIT
	DW BSOUT
EXPE7	DW BRAN
	DW EXPE3-$
EXPE2	DW DUP
	DW LIT
	DW 0DH
	DW EQUAL
	DW ZBRAN
	DW EXPE4-$
	DW LEAVE
	DW DROP
	DW BL
	DW ZERO
	DW BRAN
	DW EXPE5-$
EXPE4	DW DUP
EXPE5	DW IDO
	DW CSTOR
	DW ZERO
	DW IDO
	DW ONEP
	DW STORE
EXPE3	DW EMIT
	DW XLOOP
	DW EXPE1-$
	DW DROP
	DW SEMIS
;
	DB 85H
	DB 'QUER'
	DB 'Y'+80H
	DW EXPEC-9
QUERY	DW DOCOL
	DW TIB
	DW AT
	DW LIT
	DW 50H
	DW EXPEC
	DW ZERO
	DW INN
	DW STORE
	DW SEMIS
;
	DB 0C1H
	DB 80H
	DW QUERY-8
NULL	DW DOCOL
	DW BLK
	DW AT
	DW ZBRAN
	DW NULL1-$
	DW ONE
	DW BLK
	DW PSTOR
	DW ZERO
	DW INN
	DW STORE
	DW BLK
	DW AT
	DW BSCR
	DW ONE
	DW SUBB
	DW ANDD
	DW ZEQU
	DW ZBRAN
	DW NULL2-$
	DW QEXEC
	DW FROMR
	DW DROP
NULL2	DW BRAN
	DW NULL3-$
NULL1	DW FROMR
	DW DROP
NULL3	DW SEMIS
;
	DB 84H
	DB 'FIL'
	DB 'L'+80H
	DW NULL-4
FILL	DW $+2
	MOV L,C
	MOV H,B
	POP D
	POP B
	XTHL
	XCHG
FILL1	MOV A,B
	ORA C
	JZ FILL2
	MOV A,L
	STAX D
	INX D
	DCX B
	JMP FILL1
FILL2	POP B
	JMP NEXT
;
	DB 85H
	DB 'ERAS'
	DB 'E'+80H
	DW FILL-7
ERASEE	DW DOCOL
	DW ZERO
	DW FILL
	DW SEMIS
;
	DB 86H
	DB 'BLANK'
	DB 'S'+80H
	DW ERASEE-8
BLANK	DW DOCOL
	DW BL
	DW FILL
	DW SEMIS
;
	DB 84H
	DB 'HOL'
	DB 'D'+80H
	DW BLANK-9
HOLD	DW DOCOL
	DW LIT
	DW -1
	DW HLD
	DW PSTOR
	DW HLD
	DW AT
	DW CSTOR
	DW SEMIS
;
	DB 83H
	DB 'PA'
	DB 'D'+80H
	DW HOLD-7
PAD	DW DOCOL
	DW HERE
	DW LIT
	DW 44H
	DW PLUS
	DW SEMIS
;
	DB 84H
	DB 'WOR'
	DB 'D'+80H
	DW PAD-6
WORD	DW DOCOL
	DW BLK
	DW AT
	DW ZBRAN
	DW WORD1-$
	DW BLK
	DW AT
	DW BLOCK
	DW BRAN
	DW WORD2-$
WORD1	DW TIB
	DW AT
WORD2	DW INN
	DW AT
	DW PLUS
	DW SWAP
	DW ENCL
	DW HERE
	DW LIT
	DW 22H
	DW BLANK
	DW INN
	DW PSTOR
	DW OVER
	DW SUBB
	DW TOR
	DW RR
	DW HERE
	DW CSTOR
	DW PLUS
	DW HERE
	DW ONEP
	DW FROMR
	DW CMOVE
	DW SEMIS
;
	DB 88H
	DB '(NUMBER'
	DB ')'+80H
	DW WORD-7
PNUMB	DW DOCOL
PNUM1	DW ONEP
	DW DUP
	DW TOR
	DW CAT
	DW BASE
	DW AT
	DW DIGIT
	DW ZBRAN
	DW PNUM2-$
	DW SWAP
	DW BASE
	DW AT
	DW USTAR
	DW DROP
	DW ROT
	DW BASE
	DW AT
	DW USTAR
	DW DPLUS
	DW DPL
	DW AT
	DW ONEP
	DW ZBRAN
	DW PNUM3-$
	DW ONE
	DW DPL
	DW PSTOR
PNUM3	DW FROMR
	DW BRAN
	DW PNUM1-$
PNUM2	DW FROMR
	DW SEMIS
;
	DB 86H
	DB 'NUMBE'
	DB 'R'+80H
	DW PNUMB-0BH
NUMB	DW DOCOL
	DW ZERO
	DW ZERO
	DW ROT
	DW DUP
	DW ONEP
	DW CAT
	DW LIT
	DW 2DH
	DW EQUAL
	DW DUP
	DW TOR
	DW PLUS
	DW LIT
	DW -1
NUMB1	DW DPL
	DW STORE
	DW PNUMB
	DW DUP
	DW CAT
	DW BL
	DW SUBB
	DW ZBRAN
	DW NUMB2-$
	DW DUP
	DW CAT
	DW LIT
	DW 2EH
	DW SUBB
	DW ZERO
	DW QERR
	DW ZERO
	DW BRAN
	DW NUMB1-$
NUMB2	DW DROP
	DW FROMR
	DW ZBRAN
	DW NUMB3-$
	DW DMINU
NUMB3	DW SEMIS
;
	DB 85H
	DB '-FIN'
	DB 'D'+80H
	DW NUMB-9
DFIND	DW DOCOL
	DW BL
	DW WORD
	DW HERE
	DW CONT
	DW AT
	DW AT
	DW PFIND
	DW DUP
	DW ZEQU 
	DW ZBRAN
	DW DFIN1-$
	DW DROP
	DW HERE
	DW LATES
	DW PFIND
DFIN1	DW SEMIS
;
	DB 87H
	DB '(ABORT'
	DB ')'+80H
	DW DFIND-8
PABOR	DW DOCOL
	DW ABORT
	DW SEMIS
;
	DB 85H
	DB 'ERRO'
	DB 'R'+80H
	DW PABOR-0AH
ERROR	DW DOCOL
	DW WARN
	DW AT
	DW ZLESS
	DW ZBRAN
	DW ERRO1-$
	DW PABOR
ERRO1	DW HERE
	DW COUNT
	DW TYPE
	DW PDOTQ
	DB 2
	DB '? '
	DW MESS
	DW SPSTO
;	CHANGE FROM FIG MODEL
;	DW INN,AT,BLK,AT
	DW BLK,AT
	DW DDUP
	DW ZBRAN,ERRO2-$
	DW INN,AT
	DW SWAP
ERRO2	DW QUIT
;
	DB 83H
	DB 'ID'
	DB '.'+80H
	DW ERROR-8
IDDOT	DW DOCOL
	DW PAD
	DW LIT
	DW 20H
	DW LIT
	DW 5FH
	DW FILL
	DW DUP
	DW PFA
	DW LFA
	DW OVER
	DW SUBB
	DW PAD
	DW SWAP
	DW CMOVE
	DW PAD
	DW COUNT
	DW LIT
	DW 1FH
	DW ANDD
	DW TYPE
	DW SPACE
	DW SEMIS
;
	DB 86H
	DB 'CREAT'
	DB 'E'+80H
	DW IDDOT-6
CREAT	DW DOCOL
	DW DFIND
	DW ZBRAN
	DW CREA1-$
	DW DROP
	DW NFA
	DW IDDOT
	DW LIT
	DW 4
	DW MESS
	DW SPACE
CREA1	DW HERE
	DW DUP
	DW CAT
	DW WIDTH
	DW AT
	DW MIN
	DW ONEP
	DW ALLOT
	DW DUP
	DW LIT
	DW 0A0H
	DW TOGGL
	DW HERE
	DW ONE
	DW SUBB
	DW LIT
	DW 80H
	DW TOGGL
	DW LATES
	DW COMMA
	DW CURR
	DW AT
	DW STORE
	DW HERE
	DW TWOP
	DW COMMA
	DW SEMIS
;
	DB 0C9H
	DB '[COMPILE'
	DB ']'+80H
	DW CREAT-9
BCOMP	DW DOCOL
	DW DFIND
	DW ZEQU
	DW ZERO
	DW QERR
	DW DROP
	DW CFA
	DW COMMA
	DW SEMIS
;
	DB 0C7H
	DB 'LITERA'
	DB 'L'+80H
	DW BCOMP-0CH
LITER	DW DOCOL
	DW STATE
	DW AT
	DW ZBRAN
	DW LITE1-$
	DW COMP
	DW LIT
	DW COMMA
LITE1	DW SEMIS
;
	DB 0C8H
	DB 'DLITERA'
	DB 'L'+80H
	DW LITER-0AH
DLITE	DW DOCOL
	DW STATE
	DW AT
	DW ZBRAN
	DW DLIT1-$
	DW SWAP
	DW LITER
	DW LITER
DLIT1	DW SEMIS
;
	DB 86H
	DB '?STAC'
	DB 'K'+80H
	DW DLITE-0BH
QSTAC	DW DOCOL
	DW SPAT
	DW SZERO
	DW AT
	DW SWAP
	DW ULESS
	DW ONE
	DW QERR
	DW SPAT
	DW HERE
	DW LIT
	DW 80H
	DW PLUS
	DW ULESS
	DW LIT
	DW 7
	DW QERR
	DW SEMIS
;
	DB 89H
	DB 'INTERPRE'
	DB 'T'+80H
	DW QSTAC-9
INTER	DW DOCOL
INTE1	DW DFIND
	DW ZBRAN
	DW INTE2-$
	DW STATE
	DW AT
	DW LESS
	DW ZBRAN
	DW INTE3-$
	DW CFA
	DW COMMA
	DW BRAN
	DW INTE4-$
INTE3	DW CFA
	DW EXEC
INTE4	DW QSTAC
	DW BRAN
	DW INTE5-$
INTE2	DW HERE
	DW NUMB
	DW DPL
	DW AT
	DW ONEP
	DW ZBRAN
	DW INTE6-$
	DW DLITE
	DW BRAN
	DW INTE7-$
INTE6	DW DROP
	DW LITER
INTE7	DW QSTAC
INTE5	DW BRAN
	DW INTE1-$
;
	DB 89H
	DB 'IMMEDIAT'
	DB 'E'+80H
	DW INTER-0CH
IMMED	DW DOCOL
	DW LATES
	DW LIT
	DW 40H
	DW TOGGL
	DW SEMIS
;
	DB 8AH
	DB 'VOCABULAR'
	DB 'Y'+80H
	DW IMMED-0CH
VOCAB	DW DOCOL
	DW BUILD
	DW LIT
	DW 0A081H
	DW COMMA
	DW CURR
	DW AT
	DW CFA
	DW COMMA
	DW HERE
	DW VOCL
	DW AT
	DW COMMA
	DW VOCL
	DW STORE
	DW DOES
DOVOC	DW TWOP
	DW CONT
	DW STORE
	DW SEMIS
;
	DB 0C5H
	DB 'FORT'
	DB 'H'+80H
	DW VOCAB-0DH
FORTH	DW DODOE
	DW DOVOC
	DW 0A081H
	DW TASK-7
;
	DW 0
;
	DB 8BH
	DB 'DEFINITION'
	DB 'S'+80H
	DW FORTH-8
DEFIN	DW DOCOL
	DW CONT
	DW AT
	DW CURR
	DW STORE
	DW SEMIS
;
	DB 0C1H
	DB '('+80H
	DW DEFIN-0EH
PAREN	DW DOCOL
	DW LIT
	DW 29H
	DW WORD
	DW SEMIS
;
	DB 84H
	DB 'QUI'
	DB 'T'+80H
	DW PAREN-4
QUIT	DW DOCOL
	DW ZERO
	DW BLK
	DW STORE
	DW LBRAC
QUIT1	DW RPSTO
	DW CR
	DW QUERY
	DW INTER
	DW STATE
	DW AT
	DW ZEQU
	DW ZBRAN
	DW QUIT2-$
	DW PDOTQ
	DB 2
	DB 'OK'
QUIT2	DW BRAN
	DW QUIT1-$
;
	DB 85H
	DB 'ABOR'
	DB 'T'+80H
	DW QUIT-7
ABORT	DW DOCOL
	DW SPSTO
	DW DEC
	DW QSTAC
	DW CR
	DW DOTCPU
	DW PDOTQ
	DB 0DH
	DB 'FIG-FORTH '
	DB FIGREL+30H,ADOT,FIGREV+30H
	DW FORTH
	DW DEFIN
	DW QUIT
;
;
WRM	LXI B,WRM1
	JMP NEXT
WRM1	DW WARM
;
	DB 84H
	DB 'WAR'
	DB 'M'+80H
	DW ABORT-8
WARM	DW DOCOL
	DW MTBUF
	DW ABORT
;
CLD	LXI B,CLD1
	LHLD ORIG+12H
	SPHL
	JMP NEXT
CLD1	DW COLD
;
	DB 84H
	DB 'COL'
	DB 'D'+80H
	DW WARM-7
COLD	DW DOCOL
	DW MTBUF
	DW ZERO,DENSTY
	DW STORE
	DW LIT,BUF1
	DW USE,STORE
	DW LIT,BUF1
	DW PREV,STORE
	DW DRZER
	DW LIT,0
	DW LIT,EPRINT
	DW STORE
;
	DW LIT
	DW ORIG+12H
	DW LIT
	DW UP
	DW AT
	DW LIT
	DW 6
	DW PLUS
	DW LIT
	DW 10H
	DW CMOVE
	DW LIT
	DW ORIG+0CH
	DW AT
	DW LIT
	DW FORTH+6
	DW STORE
	DW ABORT
;
	DB 84H
	DB 'S->'
	DB 'D'+80H
	DW COLD-7
STOD	DW $+2
	POP D
	LXI H,0
	MOV A,D
	ANI 80H
	JZ STOD1
	DCX H
STOD1	JMP DPUSH
;
	DB 82H
	DB '+'
	DB '-'+80H
	DW STOD-7
PM	DW DOCOL
	DW ZLESS
	DW ZBRAN
	DW PM1-$
	DW MINUS
PM1	DW SEMIS
;
	DB 83H
	DB 'D+'
	DB '-'+80H
	DW PM-5
DPM	DW DOCOL
	DW ZLESS
	DW ZBRAN
	DW DPM1-$
	DW DMINU
DPM1	DW SEMIS
;
	DB 83H
	DB 'AB'
	DB 'S'+80H
	DW DPM-6
ABS	DW DOCOL
	DW DUP
	DW PM
	DW SEMIS
;
	DB 84H
	DB 'DAB'
	DB 'S'+80H
	DW ABS-6
DABS	DW DOCOL
	DW DUP
	DW DPM
	DW SEMIS
;
	DB 83H
	DB 'MI'
	DB 'N'+80H
	DW DABS-7
MIN	DW DOCOL,TDUP
	DW GREAT
	DW ZBRAN
	DW MIN1-$
	DW SWAP
MIN1	DW DROP
	DW SEMIS
;
	DB 83H
	DB 'MA'
	DB 'X'+80H
	DW MIN-6
MAX	DW DOCOL,TDUP
	DW LESS
	DW ZBRAN
	DW MAX1-$
	DW SWAP
MAX1	DW DROP
	DW SEMIS
;
	DB 82H
	DB 'M'
	DB '*'+80H
	DW MAX-6
MSTAR	DW DOCOL,TDUP
	DW XORR
	DW TOR
	DW ABS
	DW SWAP
	DW ABS
	DW USTAR
	DW FROMR
	DW DPM
	DW SEMIS
;
	DB 82H
	DB 'M'
	DB '/'+80H
	DW MSTAR-5
MSLAS	DW DOCOL
	DW OVER
	DW TOR
	DW TOR
	DW DABS
	DW RR
	DW ABS
	DW USLAS
	DW FROMR
	DW RR
	DW XORR
	DW PM
	DW SWAP
	DW FROMR
	DW PM
	DW SWAP
	DW SEMIS
;
	DB 81H
	DB '*'+80H
	DW MSLAS-5
STAR	DW DOCOL
	DW MSTAR
	DW DROP
	DW SEMIS
;
	DB 84H
	DB '/MO'
	DB 'D'+80H
	DW STAR-4
SLMOD	DW DOCOL
	DW TOR
	DW STOD
	DW FROMR
	DW MSLAS
	DW SEMIS
;
	DB 81H
	DB '/'+80H
	DW SLMOD-7
SLASH	DW DOCOL
	DW SLMOD
	DW SWAP
	DW DROP
	DW SEMIS
;
	DB 83H
	DB 'MO'
	DB 'D'+80H
	DW SLASH-4
MODD	DW DOCOL
	DW SLMOD
	DW DROP
	DW SEMIS
;
	DB 85H
	DB '*/MO'
	DB 'D'+80H
	DW MODD-6
SSMOD	DW DOCOL
	DW TOR
	DW MSTAR
	DW FROMR
	DW MSLAS
	DW SEMIS
;
	DB 82H
	DB '*'
	DB '/'+80H
	DW SSMOD-8
SSLA	DW DOCOL
	DW SSMOD
	DW SWAP
	DW DROP
	DW SEMIS
;
	DB 85H
	DB 'M/MO'
	DB 'D'+80H
	DW SSLA-5
MSMOD	DW DOCOL
	DW TOR
	DW ZERO
	DW RR
	DW USLAS
	DW FROMR
	DW SWAP
	DW TOR
	DW USLAS
	DW FROMR
	DW SEMIS
;
;	BLOCK MOVED DOWN 2 PAGES
;
;
	DB 86H
	DB '(LINE'
	DB ')'+80H
	DW MSMOD-8
PLINE	DW DOCOL
	DW TOR
	DW LIT
	DW 40H
	DW BBUF
	DW SSMOD 
	DW FROMR
	DW BSCR
	DW STAR
	DW PLUS
	DW BLOCK
	DW PLUS
	DW LIT
	DW 40H
	DW SEMIS
;
	DB 85H
	DB '.LIN'
	DB 'E'+80H
	DW PLINE-9
DLINE	DW DOCOL
	DW PLINE
	DW DTRAI
	DW TYPE
	DW SEMIS
;
	DB 87H
	DB 'MESSAG'
	DB 'E'+80H
	DW DLINE-8
MESS	DW DOCOL
	DW WARN
	DW AT
	DW ZBRAN
	DW MESS1-$
	DW DDUP
	DW ZBRAN
	DW MESS2-$
	DW LIT
	DW 4
	DW OFSET
	DW AT
	DW BSCR
	DW SLASH
	DW SUBB
	DW DLINE
	DW SPACE
MESS2	DW BRAN
	DW MESS3-$
MESS1	DW PDOTQ
	DB 6
	DB 'MSG # '
	DW DOT
MESS3	DW SEMIS
;
;	8080 PORT FETCH AND STORE
;	( SELF MODIFYING CODE, NOT REENTRANT)
;
	DB 82H
	DB 'P'
	DB '@'+80H
	DW MESS-0AH
PTAT:	DW $+2
	POP D
	LXI H,$+5
	MOV M,E
	IN 0
	MOV L,A
	MVI H,0
	JMP HPUSH
;
	DB 82H
	DB 'P'
	DB '!'+80H
	DW PTAT-5
PTSTO:	DW $+2
	POP D
	LXI H,$+7
	MOV M,E
	POP H
	MOV A,L
	OUT 0
	JMP NEXT
;
;	CP/M DISK INTERFACE
;
;	CP/M BIOS CALLS USED
;
;	NOTE EQU'S ARE 3 LOWER THAN DOCUMENTED OFFSETS
;	BECAUSE BASE ADDR IS BIOS+3
;
RITSEC	EQU 39
RDSEC	EQU 36
SETDMA	EQU 33
SETSEC	EQU 30
SETTRK	EQU 27
SETDSK	EQU 24
;
;	DOUBLE DENSITY 8" CAPACITIES
SPT2	EQU 52
TRKS2	EQU 77
SPDRV2	EQU SPT2*TRKS2
;	SINGLE DENSITY 8" CAPACITIES
SPT1	EQU 20
TRKS1	EQU 40
SPDRV1	EQU SPT1*TRKS1
;
BPS	EQU 128
MXDRV	EQU 2
;
;	FORTH VARIABLES AND CONSTANTS USED IN DISK INTERFACE
;
	DB 85H
	DB 'DRIV'
	DB 'E'+80H
	DW PTSTO-5
DRIVE	DW DOVAR,0
;
	DB 83H
	DB 'SE'
	DB 'C'+80H
	DW DRIVE-8
SEC:	DW DOVAR
	DW 0
;
	DB 85H
	DB 'TRAC'
	DB 'K'+80H
	DW SEC-6
TRACK:	DW DOVAR,0
;
	DB 83H
	DB 'US'
	DB 'E'+80H
	DW TRACK-8
USE:	DW DOVAR
	DW BUF1
;
	DB 84H
	DB 'PRE'
	DB 'V'+80H
	DW USE-6
PREV	DW DOVAR
	DW BUF1
;
	DB 87H
	DB 'SEC/BL'
	DB 'K'+80H
	DW PREV-7
SPBLK	DW DOCON
	DW KBBUF/BPS
;
	DB 85H
	DB '#BUF'
	DB 'F'+80H
	DW SPBLK-10
NOBUF	DW DOCON,NBUF
;
	DB 87H
	DB 'DENSIT'
	DB 'Y'+80H
	DW NOBUF-8
DENSTY	DW DOVAR
	DW 0
;
	DB 8AH
	DB 'DISK-ERRO'
	DB 'R'+80H
	DW DENSTY-10
DSKERR	DW DOVAR,0
;
;	DISK INTERFACE HIGH LEVEL ROUTINES
;
	DB 84H
	DB '+BU'
	DB 'F'+80H
	DW DSKERR-13
PBUF	DW DOCOL
	DW LIT,CO
	DW PLUS,DUP
	DW LIMIT,EQUAL
	DW ZBRAN,PBUF1-$
	DW DROP,FIRST
PBUF1:	DW DUP,PREV
	DW AT,SUBB
	DW SEMIS
;
	DB 86H
	DB 'UPDAT'
	DB 'E'+80H
	DW PBUF-7
UPDAT	DW DOCOL,PREV
	DW AT,AT
	DW LIT,8000H
	DW ORR
	DW PREV,AT
	DW STORE,SEMIS
;
	DB 8DH
	DB 'EMPTY-BUFFER'
	DB 'S'+80H
	DW UPDAT-9
MTBUF	DW DOCOL,FIRST
	DW LIMIT,OVER
	DW SUBB,ERASEE
	DW SEMIS
;
	DB 83H
	DB 'DR'
	DB '0'+80H
	DW MTBUF-16
DRZER	DW DOCOL,ZERO
	DW OFSET,STORE
	DW SEMIS
;
	DB 83H
	DB 'DR'
	DB '1'+80H
	DW DRZER-6
DRONE	DW DOCOL
	DW DENSTY,AT
	DW ZBRAN,DRON1-$
	DW LIT,SPDRV2
	DW BRAN,DRON2-$
DRON1	DW LIT,SPDRV1
DRON2	DW OFSET,STORE
	DW SEMIS
;
	DB 86H
	DB 'BUFFE'
	DB 'R'+80H
	DW DRONE-6
BUFFE:	DW DOCOL,USE
	DW AT,DUP
	DW TOR
BUFF1	DW PBUF
	DW ZBRAN,BUFF1-$
	DW USE,STORE
	DW RR,AT
	DW ZLESS
	DW ZBRAN,BUFF2-$
	DW RR,TWOP
	DW RR,AT
	DW LIT,7FFFH
	DW ANDD,ZERO
	DW RSLW
BUFF2	DW RR,STORE
	DW RR,PREV
	DW STORE,FROMR
	DW TWOP,SEMIS
;
	DB 85H
	DB 'BLOC'
	DB 'K'+80H
	DW BUFFE-9
BLOCK	DW DOCOL,OFSET
	DW AT,PLUS
	DW TOR,PREV
	DW AT,DUP
	DW AT,RR
	DW SUBB
	DW DUP,PLUS
	DW ZBRAN,BLOC1-$
BLOC2	DW PBUF,ZEQU
	DW ZBRAN,BLOC3-$
	DW DROP,RR
	DW BUFFE,DUP
	DW RR,ONE
	DW RSLW
	DW TWO,SUBB
BLOC3	DW DUP,AT
	DW RR,SUBB
	DW DUP,PLUS
	DW ZEQU
	DW ZBRAN,BLOC2-$
	DW DUP,PREV
	DW STORE
BLOC1	DW FROMR,DROP
	DW TWOP,SEMIS
;
;
;	CP/M INTERFACE ROUTINES
;
;
IOS	LHLD HBASE+1
	DAD D
	PCHL
;
;
	DB 86H
;
	DB 'SET-I'
	DB 'O'+80H
	DW BLOCK-8
SETIO:	DW $+2
	PUSH B
	LHLD USE+2
	MOV B,H
	MOV C,L
	LXI D,SETDMA
	CALL IOS
;
	LHLD SEC+2
	MOV C,L
	LXI D,SETSEC
	CALL IOS
;
	LHLD TRACK+2
	MOV B,H
	MOV C,L
	LXI D,SETTRK
	CALL IOS
;
	POP B
	JMP NEXT
;
	DB 89H
	DB 'SET-DRIV'
	DB 'E'+80H
	DW SETIO-9
SETDRV:	DW $+2
	PUSH B
	LDA DRIVE+2
	MOV C,A
	LXI D,SETDSK
	CALL IOS
	POP B
	JMP NEXT
;
;	T&SCALC (CALCULATES DRIVE, TRACK, AND SECTOR)
;
;
	DB 87H
	DB 'T&SCAL'
	DB 'C'+80H
	DW SETDRV-12
TSCALC:	DW DOCOL,DENSTY
	DW AT
	DW ZBRAN,TSCALS-$
	DW LIT,SPDRV2
	DW SLMOD
	DW LIT,MXDRV
	DW MIN
	DW DUP,DRIVE
	DW AT,EQUAL
	DW ZBRAN,TSCAL1-$
	DW DROP
	DW BRAN,TSCAL2-$
TSCAL1	DW DRIVE,STORE
	DW SETDRV
TSCAL2	DW LIT,SPT2
	DW SLMOD,TRACK
	DW STORE,ONEP
	DW SEC,STORE
	DW SEMIS
;	SINGLE DENSITY
TSCALS	DW LIT,SPDRV1
	DW SLMOD
	DW LIT,MXDRV
	DW MIN
	DW DUP,DRIVE
	DW AT,EQUAL
	DW ZBRAN,TSCAL3-$
	DW DROP
	DW BRAN,TSCAL4-$
TSCAL3	DW DRIVE,STORE
	DW SETDRV
TSCAL4	DW LIT,SPT1
	DW SLMOD,TRACK
	DW STORE,ONEP
	DW SEC,STORE
	DW SEMIS
;
;	SEC-READ
;
	DB 88H
	DB 'SEC-REA'
	DB 'D'+80H
	DW TSCALC-10
SECRD	DW $+2
	PUSH B
	LXI D,RDSEC
	CALL IOS
	STA DSKERR+2
	POP B
	JMP NEXT
;
;	SEC-WRITE
;
	DB 89H
	DB 'SEC-WRIT'
	DB 'E'+80H
	DW SECRD-11
SECWT	DW $+2
	PUSH B
	LXI D,RITSEC
	CALL IOS
	STA DSKERR+2
	POP B
	JMP NEXT
;
	DB 83H
	DB 'R/'
	DB 'W'+80H
	DW SECWT-12
RSLW	DW DOCOL
	DW USE,AT
	DW TOR
	DW SWAP,SPBLK
	DW STAR,ROT
	DW USE,STORE
	DW SPBLK,ZERO
	DW XDO
RSLW1	DW OVER,OVER
	DW TSCALC,SETIO
	DW ZBRAN,RSLW2-$
	DW SECRD
	DW BRAN,RSLW3-$
RSLW2	DW SECWT
RSLW3	DW ONEP
	DW LIT,80H
	DW USE,PSTOR
	DW XLOOP,RSLW1-$
	DW DROP,DROP
	DW FROMR,USE
	DW STORE,SEMIS
;
	DB 85H
	DB 'FLUS'
	DB 'H'+80H
	DW RSLW-6
FLUSH	DW DOCOL
	DW NOBUF,ONEP
	DW ZERO,XDO
FLUS1	DW ZERO,BUFFE
	DW DROP
	DW XLOOP,FLUS1-$
	DW SEMIS
;
	DB 84H
	DB 'LOA'
	DB 'D'+80H
	DW FLUSH-8
LOAD	DW DOCOL,BLK
	DW AT,TOR
	DW INN,AT
	DW TOR,ZERO
	DW INN,STORE
	DW BSCR,STAR
	DW BLK,STORE
	DW INTER
	DW FROMR,INN
	DW STORE
	DW FROMR,BLK
	DW STORE
	DW SEMIS
;
	DB 0C3H
	DB '--'
	DB '>'+80H
	DW LOAD-7
ARROW	DW DOCOL
	DW QLOAD
	DW ZERO
	DW INN
	DW STORE
	DW BSCR
	DW BLK
	DW AT
	DW OVER
	DW MODD
	DW SUBB
	DW BLK
	DW PSTOR
	DW SEMIS
;
;
;	CP/M CONSOLE AND PRINTER INTERFACE
;
;
KCSTAT	EQU 3
KCIN	EQU 6
KCOUT	EQU 9
KPOUT	EQU 0CH
;
EPRINT	DW 0
;
;
CSTAT	PUSH B
	LXI D,KCSTAT
	CALL IOS
	POP B
	RET
;
;
CIN	PUSH B
	LXI D,KCIN
	CALL IOS
	POP B
	RET
;
COUT	PUSH H
	LXI D,KCOUT
	CALL IOS
	POP H
	RET
;
POUT	LXI D,KPOUT
	CALL IOS
	RET
;
CPOUT	CALL COUT
	XCHG
	LXI H,EPRINT
	MOV A,M
	ORA A
	JZ CPOU1
	MOV C,E
	CALL POUT
CPOU1	RET
;
;	FORTH TO CP/M SERIAL IO INTERFACE
;
PQTER	CALL CSTAT
	LXI H,0
	ORA A
	JZ PQTE1
	INR L
PQTE1	JMP HPUSH
;
PKEY	CALL CIN
	CPI DLE
	MOV E,A
	JNZ PKEY1
	LXI H,EPRINT
	MVI E,ABL
	MOV A,M
	XRI 1
	MOV M,A
PKEY1	MOV L,E
	MVI H,0
	JMP HPUSH
;
PEMIT	DW $+2
	POP H
	PUSH B
	MOV C,L
	CALL CPOUT
;
	POP B
	JMP NEXT
;
PCR	PUSH B
	MVI C,ACR
	MOV L,C
	CALL CPOUT
	MVI C,LF
	MOV L,C
	CALL CPOUT
	POP B
	JMP NEXT
;
	DB 0C1H
	DB 0A7H ;(')
	DW ARROW-6
TICK	DW DOCOL
	DW DFIND
	DW ZEQU
	DW ZERO
	DW QERR
	DW DROP
	DW LITER
	DW SEMIS
;
	DB 86H
	DB 'FORGE'
	DB 'T'+80H
	DW TICK-4
FORG	DW DOCOL
	DW CURR
	DW AT
	DW CONT
	DW AT
	DW SUBB
	DW LIT
	DW 18H
	DW QERR
	DW TICK
	DW DUP
	DW FENCE
	DW AT
	DW LESS
	DW LIT
	DW 15H
	DW QERR
	DW DUP
	DW NFA
	DW DP
	DW STORE
	DW LFA
	DW AT
	DW CONT
	DW AT
	DW STORE
	DW SEMIS
;
	DB 84H
	DB 'BAC'
	DB 'K'+80H
	DW FORG-9
BACK	DW DOCOL
	DW HERE
	DW SUBB
	DW COMMA
	DW SEMIS
;
	DB 0C5H
	DB 'BEGI'
	DB 'N'+80H
	DW BACK-7
BEGIN	DW DOCOL
	DW QCOMP
	DW HERE
	DW ONE
	DW SEMIS
;
	DB 0C5H
	DB 'ENDI'
	DB 'F'+80H
	DW BEGIN-8
ENDIFF	DW DOCOL
	DW QCOMP
	DW TWO
	DW QPAIR
	DW HERE
	DW OVER
	DW SUBB
	DW SWAP
	DW STORE
	DW SEMIS
;
	DB 0C4H
	DB 'THE'
	DB 'N'+80H
	DW ENDIFF-8
THEN	DW DOCOL
	DW ENDIFF
	DW SEMIS
;
	DB 0C2H
	DB 'D'
	DB 'O'+80H
	DW THEN-7
DO	DW DOCOL
	DW COMP
	DW XDO
	DW HERE
	DW THREE
	DW SEMIS
;
	DB 0C4H
	DB 'LOO'
	DB 'P'+80H
	DW DO-5
LOOP	DW DOCOL
	DW THREE
	DW QPAIR
	DW COMP
	DW XLOOP
	DW BACK
	DW SEMIS
;
	DB 0C5H
	DB '+LOO'
	DB 'P'+80H
	DW LOOP-7
PLOOP	DW DOCOL
	DW THREE
	DW QPAIR
	DW COMP
	DW XPLOO
	DW BACK
	DW SEMIS
;
	DB 0C5H
	DB 'UNTI'
	DB 'L'+80H
	DW PLOOP-8
UNTIL	DW DOCOL
	DW ONE
	DW QPAIR
	DW COMP 
	DW ZBRAN
	DW BACK
	DW SEMIS
;
	DB 0C3H
	DB 'EN'
	DB 'D'+80H
	DW UNTIL-8
ENDD	DW DOCOL
	DW UNTIL
	DW SEMIS
;
	DB 0C5H
	DB 'AGAI'
	DB 'N'+80H
	DW ENDD-6
AGAIN	DW DOCOL
	DW ONE
	DW QPAIR
	DW COMP
	DW BRAN
	DW BACK
	DW SEMIS
;
	DB 0C6H
	DB 'REPEA'
	DB 'T'+80H
	DW AGAIN-8
REPEA	DW DOCOL
	DW TOR
	DW TOR
	DW AGAIN
	DW FROMR
	DW FROMR
	DW TWO
	DW SUBB
	DW ENDIFF
	DW SEMIS
	DB 0C2H
	DB 'I'
	DB 'F'+80H
	DW REPEA-9
IFF	DW DOCOL
	DW COMP
	DW ZBRAN
	DW HERE
	DW ZERO
	DW COMMA
	DW TWO
	DW SEMIS
;
	DB 0C4H
	DB 'ELS'
	DB 'E'+80H
	DW IFF-5
ELSEE	DW DOCOL
	DW TWO
	DW QPAIR
	DW COMP
	DW BRAN
	DW HERE
	DW ZERO
	DW COMMA
	DW SWAP
	DW TWO
	DW ENDIFF
	DW TWO
	DW SEMIS
;
	DB 0C5H
	DB 'WHIL'
	DB 'E'+80H
	DW ELSEE-7
WHILE	DW DOCOL
	DW IFF
	DW TWOP
	DW SEMIS
;
	DB 86H
	DB 'SPACE'
	DB 'S'+80H
	DW WHILE-8
SPACS	DW DOCOL
	DW ZERO
	DW MAX
	DW DDUP
	DW ZBRAN
	DW SPAX1-$
	DW ZERO
	DW XDO
SPAX2	DW SPACE
	DW XLOOP
	DW SPAX2-$
SPAX1	DW SEMIS
;
	DB 82H
	DB '<'
	DB '#'+80H
	DW SPACS-9
BDIGS	DW DOCOL
	DW PAD
	DW HLD
	DW STORE
	DW SEMIS
;
	DB 82H
	DB '#'
	DB '>'+80H
	DW BDIGS-5
EDIGS	DW DOCOL
	DW DROP
	DW DROP
	DW HLD
	DW AT
	DW PAD
	DW OVER
	DW SUBB
	DW SEMIS
;
	DB 84H
	DB 'SIG'
	DB 'N'+80H
	DW EDIGS-5
SIGN	DW DOCOL
	DW ROT
	DW ZLESS
	DW ZBRAN
	DW SIGN1-$
	DW LIT
	DW 2DH
	DW HOLD
SIGN1	DW SEMIS
;
	DB 81H
	DB '#'+80H
	DW SIGN-7
DIG	DW DOCOL
	DW BASE
	DW AT
	DW MSMOD
	DW ROT
	DW LIT
	DW 9
	DW OVER
	DW LESS
	DW ZBRAN
	DW DIG1-$
	DW LIT
	DW 7
	DW PLUS
DIG1	DW LIT
	DW 30H
	DW PLUS
	DW HOLD
	DW SEMIS
;
	DB 82H
	DB '#'
	DB 'S'+80H
	DW DIG-4
DIGS	DW DOCOL
DIGS1	DW DIG
	DW OVER
	DW OVER
	DW ORR
	DW ZEQU
	DW ZBRAN
	DW DIGS1-$
	DW SEMIS
;
	DB 83H
	DB 'D.'
	DB 'R'+80H
	DW DIGS-5
DDOTR	DW DOCOL
	DW TOR
	DW SWAP
	DW OVER
	DW DABS
	DW BDIGS
	DW DIGS
	DW SIGN
	DW EDIGS
	DW FROMR
	DW OVER
	DW SUBB
	DW SPACS
	DW TYPE
	DW SEMIS
;
	DB 82H
	DB '.'
	DB 'R'+80H
	DW DDOTR-6
DOTR	DW DOCOL
	DW TOR
	DW STOD
	DW FROMR
	DW DDOTR
	DW SEMIS
;
	DB 82H
	DB 'D'
	DB '.'+80H
	DW DOTR-5
DDOT	DW DOCOL
	DW ZERO
	DW DDOTR
	DW SPACE
	DW SEMIS
;
	DB 81H
	DB '.'+80H
	DW DDOT-5
DOT	DW DOCOL
	DW STOD
	DW DDOT
	DW SEMIS
;
	DB 81H
	DB '?'+80H
	DW DOT-4
QUES	DW DOCOL
	DW AT
	DW DOT
	DW SEMIS
;
	DB 82H
	DB 'U'
	DB '.'+80H
	DW QUES-4
UDOT	DW DOCOL
	DW ZERO
	DW DDOT
	DW SEMIS
;
	DB 85H
	DB 'VLIS'
	DB 'T'+80H
	DW UDOT-5
VLIST	DW DOCOL
	DW LIT
	DW 80H
	DW OUTT
	DW STORE
	DW CONT
	DW AT
	DW AT
VLIS1	DW OUTT
	DW AT
	DW CSLL
	DW GREAT
	DW ZBRAN
	DW VLIS2-$
	DW CR
	DW ZERO
	DW OUTT
	DW STORE
VLIS2	DW DUP
	DW IDDOT
	DW SPACE
	DW SPACE
	DW PFA
	DW LFA
	DW AT
	DW DUP
	DW ZEQU
	DW QTERM
	DW ORR
	DW ZBRAN
	DW VLIS1-$
	DW DROP
	DW SEMIS
;
;------EXIT	CP/M------
;
	DB 83H
	DB 'BY'
	DB 'E'+80H
	DW VLIST-8
BYE	DW $+2
	JMP HBASE+0
;
	DB 84H
	DB 'LIS'
	DB 'T'+80H
	DW BYE-6
LIST	DW DOCOL,DEC
	DW CR,DUP
	DW SCR,STORE
	DW PDOTQ
	DB 6,'SCR # '
	DW DOT
	DW LIT,10H
	DW ZERO,XDO
LIST1	DW CR,IDO
	DW LIT,3
	DW DOTR,SPACE
	DW IDO,SCR
	DW AT,DLINE
	DW QTERM
	DW ZBRAN,LIST2-$
	DW LEAVE
LIST2	DW XLOOP,LIST1-$
	DW CR,SEMIS
;
	DB 85H
	DB 'INDE'
	DB 'X'+80H
	DW LIST-7
INDEX	DW DOCOL
	DW LIT,FF
	DW EMIT,CR
	DW ONEP,SWAP
	DW XDO
INDE1	DW CR,IDO
	DW LIT,3
	DW DOTR,SPACE
	DW ZERO,IDO
	DW DLINE,QTERM
	DW ZBRAN,INDE2-$
	DW LEAVE
INDE2	DW XLOOP,INDE1-$
	DW SEMIS
;
	DB 85H
	DB 'TRIA'
	DB 'D'+80H
	DW INDEX-8
TRIAD	DW DOCOL
	DW LIT,FF
	DW EMIT
	DW LIT,3
	DW SLASH
	DW LIT,3
	DW STAR
	DW LIT,3
	DW OVER,PLUS
	DW SWAP,XDO
TRIA1	DW CR,IDO
	DW LIST
	DW QTERM
	DW ZBRAN,TRIA2-$
	DW LEAVE
TRIA2	DW XLOOP,TRIA1-$
	DW CR
	DW LIT,15
	DW MESS,CR
	DW SEMIS
;
	DB 84H
	DB '.CP'
	DB 'U'+80H
	DW TRIAD-8
DOTCPU	DW DOCOL
	DW BASE,AT
	DW LIT,36
	DW BASE,STORE
	DW LIT,22H
	DW PORIG,TAT
	DW DDOT
	DW BASE,STORE
	DW SEMIS
;
	DB 84H
	DB 'TAS'
	DB 'K'+80H
	DW DOTCPU-7
TASK	DW DOCOL
	DW SEMIS
;
INITDP:	DS EM-$
;
;
;	MEMORY MAP
;
MCOLD	EQU ORIG
MWARM	EQU ORIG+4
MA2	EQU ORIG+8
MUP	EQU UP
MRP	EQU RPP
;
MBIP	EQU BIP
MDPUSH	EQU DPUSH
MHPUSH	EQU HPUSH
MNEXT	EQU NEXT
;
MDP0	EQU DP0
MDIO	EQU DRIVE
MCIO	EQU EPRINT
MIDP	EQU INITDP
;
MIS0	EQU INITS0
;
MIR0	EQU INITR0
;MFIRST	EQU BUF1
;
MEND	EQU EM-1
MLIMIT	EQU EM
;
	END


