.TITLE VTVCTR ;BASIC VT01 VECTOR GENERATOR .IDENT 'V001A' AC0=%0 ; ; THIS VERSION IS INTENDED FOR USE WITH PLXY11 AND HP PLOTTERS ; ; DEFINITIONS: ; GS = 35 ;ASCII "GS" CHARACTER (GRAPHICS) RS = 36 ;ASCII "RS" CHARACTER (RESET POSITION) ; .PSECT VTPKRO,RO ; ; SUBROUTINE VTVCTR -- DRAW VECTOR ON VT01 SCREEN ; ENTERED WITH R0=X COORDINATE OF START POINT ; R1=Y COORDINATE OF START POINT ; R2=X COORDINATE OF END POINT ; R3=Y COORDINATE OF END POINT ; VTVCTR::MOV R4,-(SP) ;SAVE REGISTERS MOV R5,-(SP) MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) SETI ;SET UP FPU SETF LDCIF R0,AC0 MULF VPLTFC,AC0 ;SCALE TO PLOT UNITS STF AC0,FA ;STORE START X COORD LDCIF R1,AC0 ;GET Y MULF VPLTFC,AC0 ;SCALE TO PLOT UNITS STF AC0,FB ;STORE Y MOV #3,III ;SET TO "MOVE TO X,Y" JSR R5,RSAV MOV #VCORD,R5 .IF NDF,XHP JSR PC,HPTST BCC 65$ JSR PC,HPLINE ;WRITE THE LINE ON HP PLOTTER BR 66$ 65$: .ENDC JSR PC,PLOT 66$: JSR R5,RRES LDCIF R2,AC0 ;GET END X MULF VPLTFC,AC0 ;SCALE TO PLOT UNITS STF AC0,FA LDCIF R3,AC0 MULF VPLTFC,AC0 ;SCALE TO PLOT UNITS STF AC0,FB MOV #2,III ;SET TO DRAW VECTOR MOV #VCORD,R5 JSR R5,RSAV .IF NDF,XHP JSR PC,HPTST BCS 68$ ;IF USING HP, NO PLXY11 CALL. .ENDC JSR PC,PLOT ;ISSUE THE PLOT ; MOV #VORGN,R5 ; JSR PC,PLOT ;RESET TO ORIGIN REF POINT 68$: JSR R5,RRES ;THIS DRAWS THE DESIRED VECTOR MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 MOV (SP)+,R5 ;RESTORE REGISTERS MOV (SP)+,R4 RTS PC ;RETURN VCORD: .WORD 3 IA: .WORD FA IB: .WORD FB II: .WORD III III: .WORD 03 FA: .WORD 0,0 ;X COORD FB: .WORD 0,0 ;Y COORD ;VORGN: .WORD 3 ; .WORD FF0,FF0,FF3 ;FF0: .WORD 0,0 ;FF3: .WORD 3 ;; .END