.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