	.PREL
	.IDENT	EXPR
	.INSERT	BBEQU.ASM
; ** EXPR **
EXPRLA:: CALL	EXPR1
	PUSH	H
	LXI	H,TAB6
	JMP	EXEC#
XPR1:	CALL	XPR8
	RC	
	MOV	L,A
	RET
XPR2:	CALL	XPR8
	RZ	
	MOV	L,A
	RET
XPR3:	CALL	XPR8
	RZ	
	RC	
	MOV	L,A
	RET
XPR4:	CALL	XPR8
	MOV	L,A
	RZ	
	RC	
	MOV	L,H
	RET
XPR5:	CALL	XPR8
	RNZ	
	MOV	L,A
	RET
XPR6:	CALL	XPR8
	RNC	
	MOV	L,A
	RET
XPR7:	POP	H
	RET
XPR8:	MOV	A,C
	POP	H
	POP	B
	PUSH	H
	PUSH	B
	MOV	C,A
	CALL	EXPR1
	XCHG	
	XTHL	
	CALL	CKHLDE#
	POP	D
	LXI	H,0
	MVI	A,1
	RET
EXPR1:	TSTC    '-',XP11
	LXI	H,0
	JMPR	XP16
XP11:	TSTC    '+',XP12
XP12:	CALL	EXPR2
XP13:	TSTC    '+',XP15
	PUSH	H
	CALL	EXPR2
XP14:	XCHG	
	XTHL	
	MOV	A,H
	XRA	D
	MOV	A,D
	DAD	D
	POP	D
	JM	XP13
	XRA	H
	JP	XP13
	JMP	QHOW#
XP15:	TSTC    '-',XPR9
XP16:	PUSH	H
	CALL	EXPR2
	CALL	CHGSGN#
	JMPR	XP14
EXPR2:	CALL	EXPR3
XP21:	TSTCC   62H,XP24
	PUSH	H
	CALL	EXPR3
	MVI	B,0
	CALL	CHKSGN#
	XTHL	
	CALL	CHKSGN#
	XCHG	
	XTHL	
	MOV	A,H
	ORA	A
	JRZ	XP22
	MOV	A,D
	ORA	D
	XCHG	
	JNZ	AHOW#
XP22:	MOV	A,L
	LXI	H,0
	ORA	A
	JRZ	XP25
XP23:	DAD	D
	JC	AHOW#
	DCR	A
	JRNZ	XP23
	JMPR	XP25
XP24:	TSTCC   63H,XPR9
	PUSH	H
	CALL	EXPR3
	MVI	B,0
	CALL	CHKSGN#
	XTHL	
	CALL	CHKSGN#
	XCHG	
	XTHL	
	XCHG	
	MOV	A,D
	ORA	E
	JZ	AHOW#
	PUSH	B
	CALL	DIVIDE#
	POP	D	; SIGN STUFF TO DE
	PUSH	B	; SAVE DIVIDE RESULT
	BIT	7,D	; WAS SIGN SET?
	CNZ	CHGSGN#	; YEP - CHANGE#
	SHLD	REMAIN#	; STUFF IT
	POP	H	; RESULT TO HL
	MOV	B,D	; COPY OVER SIGN STUFF
	MOV	C,E
XP25:	POP	D
	MOV	A,H
	ORA	A
	JM	QHOW#
	MOV	A,B
	ORA	A
	CM	CHGSGN#
	JMPR	XP21
EXPR3:	LXI	H,TAB3
	JMP	EXEC#
NOTF::	CALL	TSTV#
	JRC	XP32
	XCHG	
	LDAX	D
	PUSH	PSW
	INX	D
	LDAX	D
	XCHG	
	MOV	H,A
	POP	PSW
	MOV	L,A
	RET
XP32:	CALL	TSTNUM#
	MOV	A,B
	ORA	A
	RNZ	
; SINGLE CHAR STRING CONSTANT?
	TSTC    '"',PARN	; HAVE WE GOT QUOTES?
	LDAX	D
	MOV	L,A	; FAILED TSTNUM SET H TO ZERO
	INX	D
	TSTC    '"',XPR0	; ERROR IF NO TRAILING
	RET
PARN::	TSTC    '(',XPR0
PARNP:	RSTEXP
	TSTC    ')',XPR0
XPR9:	RET
XPR0:	JMP	QWHAT#
; FUNCTION AND COMPARISON OPERATION LOOKUP TABLES
TAB3:	TOKEN   76H,RND#
	ITEM    'KN',GETPOT#
	ITEM    'TR',GETTRG#
	ITEM    'JX',GETJX#
	ITEM    'JY',GETJY#
	ITEM    'KP',GETKB#
	ITEM    'PX',PIXFUN#
	ITEM    '&',IOFUN#
	ITEM    'ABS',ABS#
	ITEM    'SZ',SIZE#
	ITEM	'BYTE',BYTEFUN#
	ITEM	'LARGE',LARGEF#
	ITEM	'SMALL',SMALF#
	ITEM	'RND',RND#
	TOKEN	5FH,RETADR#
	TOKEN	7FH,HKUFUN#
TAB6:	ITEM    '>=',XPR1
	ITEM    '#',XPR2
	ITEM    '>',XPR3
	ITEM    '=',XPR5
	ITEM    '<=',XPR4
	ITEM    '<',XPR6
	TOKEN	7FH,XPR7
	.END
                                                                                  