Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0049/font1c.for
There is 1 other file named font1c.for in the archive. Click here to see a list.
      SUBROUTINE LTRPLT(LWORD,LTRBGN,LTREND,KONTRL,KSCALE,LASTX,LASTY,
     1LX7,LY7)
C     (PDP-10 VERSION)
C     SIMPLE ALPHANUMERIC PLOTTING PROGRAM FOR GENPLT-II PLOT PACKAGE
C
C     DONALD BARTH, C/O K.B. WIBERG, DEPT. OF CHEMISTRY, YALE UNIVERSITY
C
C     THIS SUBROUTINE IS NOT MEANT TO BE CALLED DIRECTLY BY USER
C     CDC VERSION CALLS FUNCTION ISHIFT.
C
C     SUBROUTINE LTRPLT ARGUMENT LIST DEFINITIONS.
C
C     LWORD  = WORD ARRAY TO BE PLOTTED, READ BY 12A6 FORMAT.
C     LTRBGN = FIRST LETTER IN WORD ARRAY TO BE PLOTTED.
C     LTREND = FINAL LETTER IN WORD ARRAY TO BE PLOTTED.
C              PLOTTING OF ARRAY IS ALSO TERMINATED BY $ CHARACTER.
C     KONTRL = INDEX SELECTING HORIZONTAL OR VERTICAL LETTERING.
C     KONTRL = 0 OFFSETS LX7 TO RIGHT BUT SUPPRESSES ACTUAL LETTERING.
C     KNOTRL = 1 LETTERS HORIZONTALLY FROM LEFT TO RIGHT.
C     KONTRL = 2 LETTERS VERTICALLY FROM BOTTOM TO TOP.
C     KSCALE = HEIGHT OF LETTERS TO BE PLOTTED IN GRID COORDINATES / 6.
C     LASTX  = LAST X GRID COORDINATE PLOTTED.
C     LASTY  = LAST Y GRID COORDINATE PLOTTED.
C     LX7    = X GRID COORDINATE OF LOWER LEFT CORNER OF PLOTTED LETTER.
C     LY7    = Y GRID COORDINATE OF LOWER LEFT CORNER OF PLOTTED LETTER.
C
      COMMON/PPARM/FACTOR,OFSETX,OFSETY,IERR,IPEN,NTAPE,MODE,IPOINT,
     .IFREER,ILINE
      DIMENSION LWORD(12),KRD(250),LOCATN(64)
C
      DATA (LOCATN(I), I=1, 64) /    3011,   54061,  127135,   29042,
     1  157162,  190199,   21035,   51054,   27044,   38050,  300300,
     2  152156,  163168,  164175,  164174,  300300,  200204,  142147,
     3   63073,    3010,   15022,   77083,   78083,    1010,   82089,
     4   54062,  300300,  170174,   18022,  300300,  300300,  300300,
     5  200201,   90094,   97104,   77079,  103107,  109112,    3011,
     6   68074,    3014,   68077,  300300,  301301,  148152,  300300,
     7  300300,  300300,  300300,  125126,  131140,  121125,   89094,
     8   95097,  106110,  112116,  116121,  124127,  300300,  170175,
     9    5008,  121122,  176183,  184189/
C
C     POINTER CHARACTER, BCD CODE/ 0 = 00 , 1 = 01 , 2 = 02 , 3 = 03 ,
C       4 = 04 , 5 = 05 , 6 = 06 , 7 = 07 , 8 = 08 , 9 = 09 , ****** ,
C       = = 11 , @ = 12 , ****** , ****** , ****** , + = 16 , A = 17 ,
C       B = 18 , C = 19 , D = 20 , E = 21 , F = 22 , G = 23 , H = 24 ,
C       I = 25 , ****** , . = 27 , ) = 28 , ****** , ****** , ****** ,
C       - = 32 , J = 33 , K = 34 , L = 35 , M = 36 , N = 37 , O = 38 ,
C       P = 39 , Q = 40 , R = 41 , ****** , $ = 43 , * = 44 , ****** ,
C       ****** , ****** ,   = 48 , / = 49 , S = 50 , T = 51 , U = 52 ,
C       V = 53 , W = 54 , X = 55 , Y = 56 , Z = 57 , ****** , , = 59 ,
C       ( = 60 ,VERTICAL,RITARROW,RITARROW/
C     VERTICAL AND RITARROW ARE SPECIAL SYMBOLS.
C     VERTICAL IS A SINGLE VERTICAL LINE.
C     THE TWO RITARROW SYMBOLS ARE THE FEATHER END AND THE POINT END
C     OF AN ARROW POINTING TO THE RIGHT.
C
      DATA (   KRD(I), I=1,204) /33,43,41,30,10, 1, 5,16,36,45,41,77,22,
     140,36, 6,-0,30,41,44,45,36,16, 5, 2,77,13, 2, 1,10,30,41,42,33,13,
     277,33,44,45,36,16, 5, 4,13,33,44,41,30,10, 1, 5, 6,46,10,30,77,20,
     326,77,16,26,36, 3,33,42,41,30, 0, 6,36,45,44,33, 3,77,33,40, 0, 6,
     446,77, 3,43,77,46,40,77, 0, 6, 1,10,30,41,46, 6,20,46, 2,77,40,24,
     577, 0, 6,23,46,40,23, 0, 6,40,46, 0,77,40, 6,23,46,77,23,20,26,77,
     6 6,46, 0,40, 0, 1,44,45,36,16, 5, 4,42,41,30,10, 1, 2, 0,26,40,77,
     733,13, 1,45,77, 5,41, 1,77, 4,44,40,44,77,46, 2,42,13,24,35,26,15,
     824,77,20,11,22,31,20,88,43,23, 5, 6,33, 0, 1,23, 3,33, 6,53, 0,33,
     946, 6, 3,14,34,43,41,30,10, 1, 3,43,77,25,21/
C
      MODE = ILINE
      DO 23 J=LTRBGN,LTREND
C
C     ******************DETERMINE LETTER TO BE PLOTTED******************
      LTR=IBCD(LWORD,J)
C
C     ***************************PLOT LETTER****************************
    7 KRDBGN=LOCATN(LTR+1)/1000
      KRDEND=LOCATN(LTR+1)-(1000*KRDBGN)
      IF(KONTRL-1)15,16,8
C
C     KONTRL=2, VERTICAL LETTERING
    8 IF(KRDBGN-300)9,14,24
    9 NEWY=KRD(KRDBGN)/10
      NEWX=KRD(KRDBGN)-(10*NEWY)
      NEWY=LY7+(NEWY*KSCALE)
      NEWX=LX7-(NEWX*KSCALE)
      CALL PENUP(LASTX,LASTY,NEWX,NEWY)
      KRDNEW=KRDBGN+1
      DO 13   N=KRDNEW,KRDEND
      IF(KRD(N)-77)12,10,11
   10 KRDBGN=N+1
      GO TO 9
   11 NEWX=LX7+KSCALE
      NEWY=LY7+KSCALE
      GO TO 13
   12 NEWY=KRD(N)/10
      NEWX=KRD(N)-(10*NEWY)
      NEWY=LY7+(NEWY*KSCALE)
      NEWX=LX7-(NEWX*KSCALE)
   13 CALL PENDWN(LASTX,LASTY,NEWX,NEWY)
   14 LY7=LY7+(6*KSCALE)
      GO TO 23
C
C     KONTRL=1, HORIZONTAL LETTERING
   15 IF(KRDBGN-300)22,22,24
   16 IF(KRDBGN-300)17,22,24
   17 NEWX=KRD(KRDBGN)/10
      NEWY=KRD(KRDBGN)-(10*NEWX)
      NEWX=LX7+(NEWX*KSCALE)
      NEWY=LY7+(NEWY*KSCALE)
      CALL PENUP(LASTX,LASTY,NEWX,NEWY)
      KRDNEW=KRDBGN+1
      DO 21  N=KRDNEW,KRDEND
      IF(KRD(N)-77)20,18,19
   18 KRDBGN=N+1
      GO TO 17
   19 NEWX=LX7+KSCALE
      NEWY=LY7-KSCALE
      GO TO 21
   20 NEWX=KRD(N)/10
      NEWY=KRD(N)-(10*NEWX)
      NEWX=LX7+(NEWX*KSCALE)
      NEWY=LY7+(NEWY*KSCALE)
   21 CALL PENDWN(LASTX,LASTY,NEWX,NEWY)
   22 LX7=LX7+(6*KSCALE)
   23 CONTINUE
   24 RETURN
      END