10   ! BASIC PROGRAM TO PRINT POSTERS, MAR.7,79
20   ! WRITTEN BY ALAN R. MILLER
30   ! NEW MEXICO TECH, SOCORRO 87801
50   !
60   ! FOR XITAN VERSION DELETE LINE 110
70   !   CHANGE LPRINT TO PRINT #LU,
80   !   CHANGE LINE INPUT TO INPUT LINE #0,
90   !
92   MAP1 SI$(9),S,14           !ARRAY FOR LARGE LETTER POSTER
94   DIM AL$(7,63)              !ARRAY FOR LETTER DATA
96   MAP1 SM$(15),S,132         !ARRAY FOR SMALL LETTER MESSAGE
98   MAP1 IZ(9),F
100  MAP1 IY(15),F
102  MAP1 E1$,S,40              !ERROR MESSAGE STRING
120  LU=2 ! LOGICAL-UNIT FOR LIST,XITAN VERSION
130  !OPTION #LU,"W",132'MAXIMUM NUMBER OF LINES
140  !
145  OPEN #2,"POSTER.DAT",OUTPUT
150  CR$=CHR$(13)
160  MC=14                      !MAXIMUM CHARACTERS PER LINE
170  !MC=8:REM FOR MARROW PAPER
180  MP=MC*9+5:ML=9!MAXIMUM NUMBER OF LINES
190  MS=15                      !MAX NUMBER OF SMALL LINES
200  !
220  !
230  E1$="ERROR:TO MANY CHARACTERS TRY AGAIN"
240  !
250  FOR J=1 TO 59:FOR I=1 TO 7:READ AL$(I,J):NEXT I:NEXT J
270  !
280  INPUT "PAGE LENGHT, IN INCHES ";YP:LP=YP*6
290  INPUT "NUMBER OF COPIES ";NC
300  PRINT "ENTER MESSAGE OF LARGE LETTERS,UP TO";
310  PRINT MC;" LETTERS PER LINE."
320  PRINT "TWO SUCCESSIVE CARRIAGE RETURNS SIGNIFY END."
322  FOR I=1 TO 9:SI$(I)="":IZ(I)=0:NEXT I
324  FOR I=1 TO 15:SM$(I)="":IY(I)=0:NEXT I
330  !
340  I=O
350  I=I+1:IZ(I)=0
360  PRINT "LINE"+STR$(I);":";
370  INPUT LINE SI$(I)          !INPUT A LINE OF LARGE LETTERS
380  LN=LEN(SI$(I))
390  IF LN>MC THEN PRINT E1$:GOTO 360
400  IF LN=MC THEN 460
410  IF LN=0 THEN NL=I-1:GOTO 480
420  N1=MC-LN:N2=INT(N1/2):N3=N1-N2
430  IF N1=1 THEN 450
440  FOR J=1 TO N2:SI$(I)=" "+SI$(I):NEXT J
450  IF N2<>N3 THEN IZ(I)=1!SET HALF-SPACE FLAG
460  IF I<ML THEN 350
470  !
480  PRINT "ENTER SMALL LINES"
490  I=0
500  I=I+1:IY(I)=0
510  PRINT "LINE"+STR$(I);";";
520  INPUT LINE SM$(I)          ! INPUT A LINE OF SMALL LETTERS
530  LN=LEN(SM$(I))
540  IF LN=0 THEN NS=I-1:GOTO 580
550  IF LN>MP-6 THEN PRINT E1$:GOTO 510
560  IF LN<MP THEN SM$(I)=SPACE((MP-LN)/2-4)+SM$(I)
570  IF I<MS THEN 500
580  PRINT #2
590  !
600  ! START A NEW PAGE
610  !
620  FOR K=1 TO NC:LT=6!GET A NEW PAGE
630  GOSUB 1020!PUT * ACROSS TOP
640  !
650  !START A NEW LINE OF MESSAGE
660  !
670  FOR J=1 TO NL
680  LT=LT+9!GO THROUGH EACH LINE
690  LS=LEN(SI$(J)):GOSUB 1060  !2 BLANK LINES
700  !
710  !START ONE OF SEVEN ROWS OF SPOTS
720  !
730  FOR I=1 TO 7
740  IF LS=MC THEN PRINT #2 "** ";ELSE PRINT #2   "**  ";
750  IF IZ(J)<>0 THEN PRINT #2 SPACE$(4);
760  !
770  ! SELECT A NEW CHARACTER IN LINE
780  !
790  SP$="A":GOSUB 1080
800  PRINT #2 CR$;:SP$="W"
810  IF LS=MC THEN ? #2, SPACE$(3);ELSE ? #2, SPACE$(4);
820  IF IZ(J)<>0 THEN PRINT #2 "    ";
830  GOSUB 1080
840  IF LS>=MC THEN 880
850  IF MC-LS<=1 THEN GOTO 870
860  FOR L=LS+2 TO MC:PRINT #2 SPACE$(9);:NEXT L
870  IF IZ(J)<>0 THEN PRINT #2 SPACE$(4);ELSE PRINT #2 SPACE$(8);
880  PRINT #2 "**"
890  NEXT I
900  NEXT J
910  GOSUB 1060
920  IF NS=0 THEN 960
930  FOR J=1 TO NS:PRINT #2, "**  ";:LT=LT+1
940  PRINT #2,SM$(J); TAB (MP-2); "**"
950  NEXT J
960  GOSUB 1020                 !PUT 2 ROWS OF * AT BOTTOM
970  LT=INT(LP*(LT-INT(LT/LP))+.001)
980  IF LT+1-LP<> 0 THEN FOR J=LT+1 TO LP: ?#2 : NEXT J
985 ?#2,CHR$(12)
990  NEXT K
994  INPUT "DO YOU HAVE ANOTHER POSTER YOU WANT TO DO ";C1$
996  IF C1$="Y" OR C1$="YES" THEN 322
1000 GOTO 2440                  !DONE
1010 !
1020 FOR L=1 TO MP:PRINT #2 "*";:NEXT L:PRINT #2
1030 FOR L=1 TO MP:? #2, "*";:NEXT L:? #2
1040 RETURN
1050 !
1060 PRINT #2 "**";SPACE$(MP-4);"**"
1070 PRINT #2 "**";SPACE$(MP-4);"**":RETURN
1080 !
1090 ! SELECT A CHARACTER FOR S SINGLE LINE
1100 !
1110 FOR L=1 TO LS
1120 LL=ASC(MID$(SI$(J),L,1))-31
1130 ! CONVERT NON-PRINTING CHARACTER TO A BLANK
1140 IF LL<1 THEN LL=1
1150 IF LL>64 THEN LL=LL-32     ! MAKE LOWER CASE
1160 AS$=AL$(I,LL)
1170 FOR M=1 TO 7               ! CHECK EACH SPOT
1180 IF MID$(AS$,M,1)=" " THEN PRINT #2 " "; ELSE PRINT #2 SP$;
1190 NEXT M:PRINT #2 "  ";
1200 NEXT L
1210 RETURN
1220 !
1230 ! CHARACTER DATA
1240 !
1250 DATA "       ","       ","       ","       ","       "
1260 DATA "       ","       "
1270 DATA "   !   ","   !   ","   !   ","   !   ","   !   "
1280 DATA "       ","   !   "
1290 DATA "       "," XX XX "," XX XX "," XX XX ","       "
1300 DATA "       ","       "
1310 DATA "  # #  ","  # #  ",#######,"  # #  ",#######
1320 DATA "  # #  ","  # #  "
1330 DATA " $$$$$$","$$ $   ","$$ $   "," $$$$$ ","   $ $$"
1340 DATA "   $ $$","$$$$$$ "
1350 DATA " %%   %"," %%  % ","    %  ","   %   ","  %    "
1360 DATA " %  %% ","%   %% "
1370 DATA "  &    "," & &   ","  &    "," & &   ","&   & &"
1380 DATA "&    & "," &&&& &"
1390 DATA "       ","  ''   ","  ''   ","  '    ","       "
1400 DATA "       ","       "
1410 DATA "      (","     ( ","    (  ","    (  ","    (  "
1420 DATA "     ( ","      ("
1430 DATA ")      "," )     ","  )    ","  )    ","  )    "
1440 DATA " )     ",")      ",
1450 DATA "*  *  *"," * * * ","  ***  ","*******","  ***  "
1460 DATA " * * * ","*  *  *"
1470 DATA "   +   ","   +   ","   +   ","+++++++","   +   "
1480 DATA "   +   ","   +   "
1490 DATA "       ","       ","       ","       ","       "
1500 DATA "   ,   ","   ,   "
1510 DATA "       ","       ","       ","  ___  ","       "
1520 DATA "       ","       "
1530 DATA "       ","       ","       ","       ","       "
1540 DATA "  . .  ","  . .  "
1550 DATA "      /","     / ","    /  ","   /   ","  /    "
1560 DATA " /     ","/      "
1570 DATA " 00000 ",0     0,0     0,0     0,0     0
1580 DATA 0     0," 00000 "
1590 DATA "   1   ","  11   "," 1 1   ","   1   ","   1   "
1600 DATA "   1   "," 11111 "
1610 DATA "  2222 "," 2    2","     2 ","    2  ","   2   "
1620 DATA "  2    "," 222222"
1630 DATA " 33333 ",3     3,"      3","    33 ","      3"
1640 DATA "3     3"," 33333 "
1650 DATA "    44 ","  4  4 "," 4   4 ","444444 ","     4 "
1660 DATA "     4 ","     4 "
1670 DATA "555555 ","5      ","5      ","55555  ","     5 "
1680 DATA "     5 ","55555  "
1690 DATA " 6666  ","6      ","6      ","66666  ","6    6 "
1700 DATA "6    6 "," 6666  "
1710 DATA 7777777,"     7 ","    7  ","   7   ","  7    "
1720 DATA " 7     ","7      "
1730 DATA "  8888 "," 8    8"," 8    8","  8888 "," 8    8"
1740 DATA " 8    8","  8888 "
1750 DATA "  9999 "," 9    9"," 9    9","  99999","      9"
1760 DATA "      9","  9999 "
1770 DATA "       ","  ::   ","  ::   ","       ","  ::   "
1780 DATA "  ::   ","       "
1790 DATA "       ","  ;;   ","  ;;   ","       ","   ;   "
1800 DATA "  ;    ","       "
1810 DATA "    <  ","   <   ","  <     "," <     ","  <    "
1820 DATA "   <   ","    <  "
1830 DATA "       "," ===== "," ===== ","       "," ===== "
1840 DATA " ===== ","       "
1850 DATA "  >    ","   >   ","    >  ","     > ","    >  "
1860 DATA "   >   ","  >    "
1870 DATA "  ???  "," ?   ? ","     ? ","    ?  ","   ?   "
1880 DATA "       ","   ?   "
1890 DATA "       ","       ","       ","       ","       "
1900 DATA "       ","       "
1910 DATA " AAAAA ",AA   AA,AA   AA,AAAAAAA
1920 DATA "AA   AA","AA   AA","AA   AA"
1930 DATA "BBBBBB ",BB   BB,BB   BB,"BBBBBB "
1940 DATA BB   BB,BB   BB,"BBBBBB "
1950 DATA " CCCCC ","CC   CC","CC     ","CC     ","CC     "
1960 DATA CC   CC," CCCCC "
1970 DATA "DDDDDD ",DD   DD,DD   DD,DD   DD
1980 DATA DD   DD,DD   DD,"DDDDDD "
1990 DATA EEEEEEE,"EE     ","EE     ","EEEEE  ","EE     "
2000 DATA "EE     ",EEEEEEE
2010 DATA FFFFFFF,"FF     ","FF     ","FFFF   ","FF     "
2020 DATA "FF     ","FF     "
2030 DATA " GGGGG ",GG   GG,"GG     ","GG     ",GG  GGG
2040 DATA GG   GG," GGGGG "
2050 DATA HH   HH,HH   HH,HH   HH,HHHHHHH,HH   HH
2060 DATA HH   HH,HH   HH
2070 DATA "  IIII ","   II  ","   II  ","   II  ","   II  "
2080 DATA "   II  ","  IIII "
2090 DATA "     JJ","     JJ","     JJ","     JJ","     JJ"
2100 DATA " JJ  JJ","  JJJJ "
2110 DATA KK   KK,"KK  KK ","KK KK  ","KKKK   ","KKKKK  "
2120 DATA "KK  KK ",KK   KK
2130 DATA "LL     ","LL     ","LL     ","LL     ","LL     "
2140 DATA "LL     ",LLLLLLL
2150 DATA M     M,MM   MM,MMM MMM,MM M MM,MM   MM
2160 DATA MM   MM,MM   MM
2170 DATA N    NN,NN   NN,NNN  NN,NN N NN,NN  NNN
2180 DATA NN   NN,NN    N
2190 DATA " OOOOO ",OO   OO,OO   OO,OO   OO,OO   OO
2200 DATA OO   OO," OOOOO "
2210 DATA "PPPPPP ",PP   PP,PP   PP,"PPPPPP "
2220 DATA "PP     ","PP     ","PP     "
2230 DATA " QQQQQ ",QQ   QQ,QQ   QQ,QQ   QQ
2240 DATA QQ   QQ,QQ  QQQ," QQQQQQ"
2250 DATA "RRRRRR ",RR   RR,RR   RR,"RRRRRR ","RRRR   "
2260 DATA "RR RR ","RR  RR "
2270 DATA " SSSSSS","SS     ","SS     "," SSSSS ","     SS"
2280 DATA "     SS","SSSSSS "
2290 DATA "TTTTTT ","  TT   ","  TT   ","  TT   ","  TT   "
2300 DATA "  TT   ","  TT   "
2310 DATA UU   UU,UU   UU,UU   UU,UU   UU,UU   UU
2320 DATA UU   UU," UUUUU "
2330 DATA " V    V"," V    V"," VV  VV","  V  V ","  VVVV "
2340 DATA "   VV  ","   VV  "
2350 DATA WW   WW,WW   WW,WW   WW,WW   WW,WW W WW
2360 DATA WWW WWW," W   W "
2370 DATA XX   XX," XX XX ","  XXX  ","  XXX  ","  XXX  "
2380 DATA " XX XX ",XX   XX
2390 DATA YY   YY," YY YY ","  YYY  ","   YY  ","   YY  "
2400 DATA "   YY  ","   YY   "
2410 DATA ZZZZZZZ,"     Z ","    Z  ","   Z   ","  Z    "
2420 DATA " Z     ",ZZZZZZZ, , , , ,
2430 !
2440 CLOSE #2
2450 END