.TITLE SCALE .MCALL .PCM,.SCALE,.PA .GLOBL .SCALE,SCALE,.PA,PA,.PAX,.PAY,.XMIN,.YMIN,.XMAX,.YMAX A0=R0 A1=R1 A2=R2 ; .MACRO .SCALE XMIN,YMIN,XMAX,YMAX ;SCALE POINTS TO FIT BETWEEN XMIN & XMAX, & YMIN & YMAX ;CALL SCALE(XMIN,YMIN,XMAX,YMAX) SCALE(XMIN,YMIN,XMAX,YMAX); SCALE: .SCALE @2(R5),@4(R5),@6(R5),@10(R5) RETURN OFFY: .FLT2 0 OFFX: .FLT2 0 .YMAX: .FLT2 16 ;16x16 cm IS DEFAULT SIZE OF (SCALED) PLOTTING AREA .XMAX: .FLT2 16 .YMIN: .FLT2 0 .XMIN: .FLT2 0 .SCALE: ;NO SUBROUTINE .SCALE ; .MACRO .PA X,Y ;PLOT ABSOLUTE SCALED. 400 PLOTTER UNITS=1 cm. ;WHEN SCALING IS IN EFFECT, THE ORIGIN IS (XMIN,YMIN), WHICH IS PLOTTED AT ;(4,2) cm. THE UPPER RIGHT CORNER IS AT (XMAX,YMAX), WHICH IS PLOTTED AT ;(20,18) cm; SCALED PLOT IS 16x16 cm PA: .PA @2(R5),@4(R5) ;CALL PA(X,Y) PA(X,Y); RETURN .PAY: .BLKW 2 .PAX: .BLKW 2 .PA: STF A0,-(SP) STF A1,-(SP) STF A2,-(SP) LDF .PAX,A0 ;X IN cm=A0=16*(.PAX-.XMIN)/(.XMAX-.XMIN)+OFFX SUBF .XMIN,A0 MULF #16,A0 ;16 cm IS PLOT SIZE LDF .XMAX,A1 SUBF .XMIN,A1 DIVF A1,A0 ADDF OFFX,A0 LDF .PAY,A2 ;Y IN cm=16*(.PAY-.YMIN)/(.YMAX-.YMIN)+OFFY SUBF .YMIN,A2 MULF #16,A2 LDF .YMAX,A1 SUBF .YMIN,A1 DIVF A1,A2 ADDF OFFY,A2 .PCM A0,A2 LDF (SP)+,A2 LDF (SP)+,A1 LDF (SP)+,A0 RETURN .END