.TITLE VTPLOT ;VT01 PLOTTING ROUTINES .IDENT 'V001A' ; ; THIS VERSION IS INTENDED FOR USE WITH THE RSX-11D VT HANDLER. ; ; BIT DEFINITIONS IN VTPLOT CONTROL WORD: ; POINT = 1 ;[00] PLOT POINT AT INDICATED SPOT LINE = 2 ;[01] DRAW LINE TO INDICATED SPOT INCR = 4 ;[02] X, Y VALUES GIVEN ARE INCREMENTS NOUPDT = 10 ;[03] DON'T UPDATE POSITION WHEN DONE ; .PSECT VTPKRO,RO ; ; SUBROUTINE VTPLOT -- GENERALIZED LINE OR POINT PLOT ROUTINE ; CALLING SEQUENCE: ; CALL VTPLOT(ICODE,NX,NY) ; ICODE: INTEGER*2, LOW 4 BITS SPECIFY OPERATION TO PERFORM (SEE ; DEFINITIONS ABOVE) ; NX,NY: INTEGER*2, X AND Y COORDINATES (OR INCREMENTS) OF POINT OR ; ENDPOINT OF LINE TO BE DRAWN. ; VTPLOT::MOV @2(R5),R4 ;GET CONTROL WORD MOV @4(R5),R2 ;GET X VALUE MOV @6(R5),R3 ;GET Y VALUE BIT #INCR,R4 ;ARE X & Y VALUES INCREMENTS? BEQ 1$ ;NO, ABSOLUTE ADD NGXPOS,R2 ;YES, ADD STARTING VALUE... ADD NGYPOS,R3 ;...TO MAKE ABSOLUTE 1$: BIT #LINE,R4 ;DRAW LINE? BEQ 2$ ;NO MOV NGXPOS,R0 ;YES, SET START COORDINATES... MOV NGYPOS,R1 ;...AT CURRENT POSITION BR 3$ 2$: BIT #POINT,R4 ;DRAW POINT? BEQ 4$ ;NO MOV R2,R0 ;YES, SET START COORDINATE... MOV R3,R1 ;...EQUAL TO END COORDINATE 3$: JSR PC,VTVCTR ;CALL BASIC VECTOR GENERATOR 4$: BIT #NOUPDT,R4 ;INHIBIT POSITION UPDATING? BNE 5$ ;YES MOV R2,NGXPOS ;NO, SET CURRENT POSITION... MOV R3,NGYPOS ;...TO END POINT 5$: RTS PC ;RETURN ; ; SUBROUTINE VTWAIT -- WAIT FOR COMPLETION OF VT01 OPERATION (THIS ; ROUTINE IS A NO-OP FOR THESE RSX-11D VT HANDLER- ; COMPATIBLE ROUTINES) ; CALLING SEQUENCE: ; CALL VTWAIT ; RETURNS WITH R0=0 (FICTITIOUS VT01 CSR ADDRESS) ; VTWAIT::CLR R0 ;HARMLESS ADDRESS RTS PC ; ; SUBROUTINE VTLINE -- DRAW LINE BETWEEN GIVIEN START & END POINTS ; CALLING SEQUENCE: ; CALL VTLINE(IX1,IY1,IX2,IY2) ; IX1, IY1: INTEGER*2, X AND Y COORDINATES OF START POINT ; IX2, IY2: INTEGER*2, X AND Y COORDINATES OF END POINT ; VTLINE::TST (R5)+ ;SKIP NO. OF ARGUMENTS MOV @(R5)+,R0 ;GET START X, MOV @(R5)+,R1 ;START Y, MOV @(R5)+,R2 ;END X, MOV @(R5)+,R3 ;AND END Y JSR PC,VTVCTR ;DRAW A VECTOR RTS PC ;DONE ; ;VTMOVE - MOVE VT01 COORDS TO X,Y ; CALL VTMOVE(IX,IY) .GLOBL VTMOVE VTMOVE: MOV @2(R5),NGXPOS MOV @4(R5),NGYPOS ;STORE X,Y RTS PC ;DONE ; ; COMMON DATA AREA FOR VT01 PACKAGE: ; .PSECT VTDATA,D,GBL,OVR ; IGSTAT: .WORD 0 ;VT01 STATUS (UNUSED AT PRESENT) IGCSR: .WORD 4 ;VT01 CSR (CONTROL & STATUS REGISTER) NGXPOS: .WORD 0 ;CURRENT GRAPHICS X POSITION NGYPOS: .WORD 0 ;CURRENT GRAPHICS Y POSITION ; .END