File PSCAL.FT (FORTRAN source file)

Directory of image this file is from
This file as a plain text file

      SUBROUTINE PSCAL
      COMMON /TKTRNX/ TMINVX,TMINVY,TMAXVX,TMAXVY,TREALX,TREALY,
     1 TIMAGX,TIMAGY,TRCOSF,TRSINF,TRSCAL,TRFACX,TRFACY,
     2 TRPAR1,TRPAR2,TRPAR3,TRPAR4,TRPAR5,TRPAR6,KMOFLG(8),KPAD2,
     3 KBAUDR,KGNFLG,KGRAFL,KHOMEY,KKMODE,KHORSZ,KVERSZ,KTBLSZ,
     4 KSIZEF,KLMRGN,KRMRGN,KFACTR,KTERM,KLINE,KZAXIS,KBEAMX,KBEAMY,
     5 KMOVEF,KPCHAR(5),KDASHT,KMINSX,KMINSY,KMAXSX,KMAXSY,KEYCON,
     6 KINLFT,KOTLFT,KUNIT
      LOGICAL ANEG
      ANEG=TRPAR1 .GT. TRPAR2
      PIDV2=90.00
C * SET UP UNTRANSLATED TRIAL POLAR WINDOW
      TRPAR3=0.
      TRPAR4=0.
      TRFACY=1.
      TRPAR6=0.
      R1=TMINVX
      R2=TMAXVX
      RMAX=AMAX1(ABS(R1),ABS(R2))
      TRFACX=1000./RMAX
      THMIN=AMIN1(TRPAR1,TRPAR2)
      THMAX=AMAX1(TRPAR2,TRPAR1)
C * FIND EXTREMES OF THE TRIAL POLAR WINDOW
      CALL WINCOT(R1,THMIN,IX1,IY1)
      CALL WINCOT(R1,THMAX,IX2,IY2)
      CALL WINCOT(R2,THMIN,IX3,IY3)
      CALL WINCOT(R2,THMAX,IX4,IY4)
      IXMIN=MIN0(IX1,IX2,IX3,IX4)
      IXMAX=MAX0(IX1,IX2,IX3,IX4)
      IYMIN=MIN0(IY1,IY2,IY3,IY4)
      IYMAX=MAX0(IY1,IY2,IY3,IY4)
      X=THMIN/PIDV2
      IF(THMIN.GT.0.)X=X+.999
      QUAD=FLOAT(IFIX(X))*PIDV2
      NQUAD=0
C * CHECK EXTREMES OF TRIAL WINDOW AT 90 DEGREE INTERVALS
200   IF(QUAD.GE.THMAX)GO TO 300
      NQUAD=NQUAD+1
      CALL WINCOT(R1,QUAD,IX1,IY1)
      CALL WINCOT(R2,QUAD,IX2,IY2)
      IXMIN=MIN0(IX1,IX2,IXMIN)
      IXMAX=MAX0(IX1,IX2,IXMAX)
      IYMIN=MIN0(IY1,IY2,IYMIN)
      IYMAX=MAX0(IY1,IY2,IYMAX)
      QUAD=QUAD+PIDV2
      IF(NQUAD.LT.4)GO TO 200
C * COMPUTE SREEN AND VIRTUAL RANGES
300   TSRANX=KMAXSX-KMINSX
      TSRANY=KMAXSY-KMINSY
      XRANGE=IXMAX-IXMIN

YRANGE=IYMAX-IYMIN C * COMPUTE RELATIVE RADIUS SCALE FACTOR FACTOR=AMIN1(ABS(TSRANX)/XRANGE,ABS(TSRANY)/YRANGE) C * COMPUTE SCREEN OFFSETS TRPAR3=FLOAT(KMINSX)-FACTOR*FLOAT(IXMIN) TRPAR4=FLOAT(KMINSY)-FACTOR*FLOAT(IYMIN) C * COMPUTE FINAL RADIUS SCALE FACTOR TRFACX=TRFACX*FACTOR C * COMPUTE ANGLE SCALE FACTOR TRFACY=(TRPAR2-TRPAR1)/(TMAXVY-TMINVY) C * APPLY CORRECT SIGN TO ANGLE SCALE FACTOR TRFACY=SIGN(1.,TSRANX*TSRANY)*TRFACY AANG=0. C * APPLY CORRECTION FOR 'REVERSED' WINDOWS IF(ANEG.AND.TSRANY.LT.0..OR.TSRANX.LT.0..AND..NOT.ANEG)AANG=180. C * COMPUTE ANGLE OFFSET TRPAR6=TMINVY-(TRPAR1+AANG)/TRFACY RETURN END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search