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