!***************************************************************************!
!                                                                           !
!                              Sign Generator                               !
!                           By David F. Pallmann                            !
!                                                                           !
!***************************************************************************!

VARIABLES:
       MAP1 PATTERN(48), S, 49
       MAP1 I, F, 6
       MAP1 J, F, 6
       MAP1 K, F, 6
       MAP1 L, F, 6
       MAP1 C, S, 1
       MAP1 FILE, S, 30
       MAP1 LINCNT, F, 6
       MAP1 TEXT(10), S, 80
       MAP1 OUTLIN(7), S, 200
       MAP1 WIDTH, F, 6

LOAD'PATTERNS:
       FOR I = 1 TO 48 : READ PATTERN(I) : NEXT I

GET'OUTPUT'FILE:
       INPUT LINE "Output to: "; FILE
       IF INSTR(1,FILE,".")=0 THEN FILE = FILE+".LST"
       LOOKUP FILE, I
       IF I<>0 THEN PRINT "%supersedes existing file"
       OPEN #1, FILE, OUTPUT

GET'WIDTH:
       INPUT LINE "Paper width: "; WIDTH

GET'TEXT'LINES:
       print
       print "Enter sign text below - end with an empty line"
       LINCNT = 0

GET'LINE:
       input line TEXT(LINCNT+1)
       if TEXT(LINCNT+1)="" then goto MAKE'SIGN
       LINCNT = LINCNT+1
       if LINCNT<10 then goto GET'LINE
       PRINT

MAKE'SIGN:
       FOR I = 1 TO 2
           FOR J = 1 TO WIDTH
               PRINT #1, "*";
               NEXT J
               PRINT #1
           NEXT I
       PRINT #1, "**"; SPACE(WIDTH-4); "**"
       PRINT #1, "**"; SPACE(WIDTH-4); "**"
       FOR I = 1 TO LINCNT
           CALL PROCESS'LINE
           NEXT I
       FOR I = 1 TO 2
           FOR J = 1 TO WIDTH
               PRINT #1, "*";
               NEXT J
               PRINT #1
           NEXT I
       CLOSE #1
       END

PROCESS'LINE:
       FOR J = 1 TO 7 : OUTLIN(J) = "" : NEXT J
       IF TEXT(I)="(BLANK)" THEN GOTO OUTPUT
       FOR J = 1 TO LEN(TEXT(I))
           C = MID(TEXT(I),J,1)
           K = INSTR(1," ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg0123456789!.:/",C)
           IF C=0 THEN C = 1
           FOR L = 1 TO 7
               OUTLIN(L) = OUTLIN(L)+PATTERN(K)[L*7-6;7]+"  "
               NEXT L
           NEXT J

OUTPUT: FOR J = 1 TO 7
           K = (WIDTH-4-LEN(OUTLIN(J)))/2
           OUTLIN(J) = SPACE(K)+OUTLIN(J)+SPACE(K)
           IF LEN(OUTLIN(J))+4<WIDTH THEN OUTLIN(J) = OUTLIN(J)+" "
           PRINT #1, "**"; OUTLIN(J); "**"
           NEXT J
       PRINT #1, "**"; SPACE(WIDTH-4); "**"
       PRINT #1, "**"; SPACE(WIDTH-4); "**"
       RETURN

       DATA "                                                 "
       DATA " AAAAA A     AA     AAAAAAAAA     AA     AA     A"
       DATA "BBBBBB B     BB     BBBBBBB B     BB     BBBBBBB "
       DATA " CCCCC C     CC      C      C      C     C CCCCC "
       DATA "DDDDD  D    D D     DD     DD     DD    D DDDDD  "
       DATA "EEEEEEEE      E      EEEEE  E      E      EEEEEEE"
       DATA "FFFFFFFF      F      FFFFF  F      F      F      "
       DATA " GGGGG G      G      G      G  GGGGG     G GGGGG "
       DATA "H     HH     HH     HHHHHHHHH     HH     HH     H"
       DATA "IIIIIII   I      I      I      I      I   IIIIIII"
       DATA "      J      J      J      J      JJ     J JJJJJ "
       DATA "K     KK    K K   K  KKKK   K   K  K    K K     K"
       DATA "L      L      L      L      L      L      LLLLLLL"
       DATA "MM   MMM M M MM  M  MM     MM     MM     MM     M"
       DATA "N     NNN    NN N   NN  N  NN   N NN    NNN     N"
       DATA " OOOOO O     OO     OO     OO     OO     O OOOOO "
       DATA "PPPPPP P     PP     PPPPPPP P      P      P      "
       DATA " QQQQQ Q     QQ     QQ     QQ  Q  QQ   Q Q QQQQQ "
       DATA "RRRRRR R     RR     RRRRRRR R   R  R    R R     R"
       DATA " SSSSS S     SS       SSSSS       SS     S SSSSS "
       DATA "TTTTTTT   T      T      T      T      T      T   "
       DATA "U     UU     UU     UU     UU     UU     U UUUUU "
       DATA "V     VV     VV     VV     V V   V   V V     V   "
       DATA "W     WW     WW     WW  W  WW W W WWW   WWW     W"
       DATA "X     X X   X   X X     X     X X   X   X X     X"
       DATA "Y     Y Y   Y   Y Y     Y      Y      Y      Y   "
       DATA "ZZZZZZZ     Z     Z     Z     Z     Z     ZZZZZZZ"
       DATA "              aaaaaa       a aaaaaaa     a aaaaaa"
       DATA "b      b      bbbbbb b     bb     bb     bbbbbbb "
       DATA "               ccccc c     cc      c     c ccccc "
       DATA "      d      d ddddddd     dd     dd     d dddddd"
       DATA "               eeeee e     eeeeeeeee       eeeeee"
       DATA "   ffff   f    fffff    f      f      f      f   "
       DATA "               ggggg g     g gggggg      ggggggg "
       DATA " 00000 0    000   0 00  0  00 0   000    0 00000 "
       DATA "1111      1      1      1      1      1   1111111"
       DATA " 22222 2     2      2 22222 2      2      2222222"
       DATA " 33333 3     3      3  3333       3      3 33333 "
       DATA "   44    4 4   4  4  4444444    4      4      4  "
       DATA "55555555      5      555555       55     5 55555 "
       DATA " 66666 6     66      666666 6     66     6 66666 "
       DATA "7777777     7     7     7     7     7     7      "
       DATA " 88888 8     88     8 88888 8     88     8 88888 "
       DATA " 99999 9     99     9 99999     9     9     9    "
       DATA "   !      !      !      !      !             !   "
       DATA "                              ...    ...    ...  "
       DATA "         :::    :::           :::    :::         "
       DATA "      /     //    //    //    //    //    //     "

       END