	.TITLE	EVAL
	.IDENT	"V1.0"
;
;   Author:	D. Mischler	25-MAY-87
;
;   This module implements the EVAL command.
;
	.PSECT	CODE,I,RO
;
;   Evaluate an expression and display the result in all formats.
;   On entry:	R0 points to the EVAL command.
;
EVAL::
	CALL	U$FNXT		; Find start of expression.
	CALL	XPRESS		; Evaluate expression, OK?
	BCC	DISPLY		; Yes, display results.
	CALLR	ERROR		; Display error.
;   Expression has been evaluated. Display results.
DISPLY:
	MOV	#TRMBUF,R0	; Point to terminal buffer.
	MOV	R1,R5		; Save value.
	MOV	#FMTTBL,R4	; Point to format table.
10$:	MOV	R5,R1		; Get value.
	MOV	(R4),R2		; Get format word, zero?
	BEQ	30$		; Yes, done operating from table.
	CALL	$CBTA		; Convert value to ASCII.
	CMPB	#10.,(R4)	; Decimal conversion?
	BNE	20$		; No, just separate values.
	MOVB	#'.,(R0)+	; Buffer decimal indicator.
20$:	MOVB	#' ,(R0)+	; Separate values.
	MOVB	#' ,(R0)+
	TST	(R4)+		; Point to next format table entry.
	BR	10$		; Scan through entire table.
;   Display in RAD50 and ASCII.
30$:	MOVB	#'%,(R0)+	; Buffer RAD50 indicator.
	MOV	R5,R1		; Get value.
	CALL	C$R50		; Convert RAD50 to ASCII.
	MOVB	#' ,(R0)+	; Separate values.
	MOVB	#' ,(R0)+
	MOVB	#'",(R0)+	; Indicate ASCII values.
	CALL	C$ASCI		; Convert value to ASCII.
	CLRB	(R0)		; Terminate message.
	MOV	#TRMBUF,R1	; Point to message.
	CALLR	LINOUT		; Display value message.
	.END
