.TITLE PLTGEN SFGL70 ROUTINE TO PLOT .IDENT 'PLTG00' .PSECT PLTGEN ; KEN DEMERS ; UTRC ; OCTOBER 1970 ; THIS ROUTINE IS PART OF THE SMALL FAST ; GRAPHIC LIBRARY ON THE 11/70(SFGL70), WHICH ; HAS THE SAME FUNCTIONALITY AS THE PDP-6 ; MEMO SCOPE LIBRARY. THIS ROUTINE PLOTS ; (OR CONTINUES PLOTTING) LINES (CURVES). ; ON ENTRY: ; R3 = 0 = CALLED BY PLOT (JUST MOVE CURSOR FOR 1ST POINT) ; R3 = -1 = CALLED BY PLOTC (MOVE CURSOR OR PLOT LINE FOR 1ST ; POINT DEPENDING WHETHER WE'RE IN DASHED MODE). ; CALLING FORMAT OF PLOT OR PLOTC ; CALL PLOT[C](NUMPTS,XARRAY,YARRAY) ; WHERE: ; NUMPTS = # OF POINTS TO PLOT ; (IF NEGATIVE CONNECT EVERY OTHER POINT) ; XARRAY = ARRAY OF FLOATING POINT X COORDINATES ; YARRAY = ARRAY OF FLOATING POINT Y COORDINATES ; INTERNAL GLOBALS .GLOBL P$LTGEN,N$EXPLT ; EXTERNAL GLOBALS .GLOBL F$IRST,S$CALE,MVCURI,L$INE P$LTGEN: TST (R5)+ ;BUMP PTR PAST # ARGS CLR R4 ;FLG=0= CONNECT EVERY POINT MOV @(R5)+,R0 ;R0= # OF POINTS TO PLOT BGT PLO10 ;> 0 = CONNECT EVERY POINT COM R4 ;FLG=-1= CONNECT EVERY OTHER POINT NEG R0 ;R0= # OF POINTS TO PLOT PLO10: MOV (R5)+,R1 ;R1= A(XARRAY) MOV (R5),R2 ;R2= A(YARRA) CALL F$IRST ;PLOT 1ST POINT(SPECIAL CASE) DEC R0 ;DEC CNT FOR POINT JUST DONE BLE PLO60 ;DONE PLO20: CALL S$CALE ;S$CALE POINTS TO GRID COORDINATE SYSTEM TST R3 ;TIME TO PLOT OR MOVE CURSOR? BNE PLO30 ;PLOT CALL MVCURI ;MOVE CURSOR BR PLO40 PLO30: CALL L$INE ;PLOT A L$INE PLO40: TST R4 ;DASHED L$INE MODE? BEQ PLO50 ;NO COM R3 ;SWITCH PLOT OR MOVE FLG PLO50: SOB R0,PLO20 ;LOOP UNTIL DONE PLO60: MOV R3,N$EXPLT ;SAVE WHAT NEXT PLOT SHOULD BE RETURN N$EXPLT: .WORD 0 ;FLG=0= MOVE CURSOR NEXT TIME ;FLG= -1 = PLOT L$INE NEXT TIME .END