.TITLE OA ;.MACRO .OA X,Y,DOWN ;OUTPUT PEN POSITION X,Y IN cm .GLOBL .OA,OA ;INTEGER DOWN=1 IF PEN DOWN .MCALL .CVSF,.XMTB,.PARS,.OA A0=R0 OA: .OA @2(R5),@4(R5),@6(R5) RETURN RCSR=176510 ;RECEIVE CONTROL STATUS REG RBUF=RCSR+2 ;RECEIVE DATA BUFFER XCSR=RCSR+4 ;TRANSMIT CONTROL STATUS REG XBUF=RCSR+6 ;TRANSMIT DATA BUFFER DOWN: .BLKW 1 Y: .BLKW 2 X: .BLKW 2 .OA: MOV R0,-(SP) MOV R1,-(SP) STF A0,-(SP) .XMTB #'O .XMTB #'A .XMTB #73 ;73=; MOV #B,R1 LOA: TSTB RCSR ;TEST BIT7 (DONE BIT) BGE LOA MOVB RBUF,R0 CMPB R0,#15 ;CR=15 TERMINATES STRING BEQ DIGEST MOVB R0,(R1)+ BR LOA DIGEST: .PARS #B,#ASCII,#COMMA,R0 .CVSF #ASCII,A0 ;CONVERT ASCII TO FLOATING DIVF UNITS,A0 ;CONVERT PLOTTER UNITS TO cm STF A0,X .PARS R0,#ASCII,#COMMA,R0 .CVSF #ASCII,A0 DIVF UNITS,A0 STF A0,Y CLR DOWN CMPB (R0),#60 ;CHAR 0? BGT UP INC DOWN UP: LDF (SP)+,A0 MOV (SP)+,R1 MOV (SP)+,R0 RETURN UNITS: .FLT2 400 ;400 PLOTTER UNITS/cm COMMA: .BYTE 54,0 ;TERMINATOR ASCII: .BLKB 20. B: .BLKB 40. .EVEN .END