100 ! B A N N E R 110 ! 120 ! 130 ! ORIGINAL VERSION BY DAN VERNON 140 ! 150 ! TRANSLATED TO OS/8 BASIC BY K. FISHER, DEC 160 ! 170 ! OS-78 BASIC V7A HACKS BY R. MOORE, DEC 180 ! 190 ! 200 DIM G$(60,1),H$(6,6),B$(60),G(6),A(60) 210 L=6\R=4\S=0\A=R*2\C=A\S=12 220 PRINT PNT(27);"H";PNT(27);"J" 230 PRINT ,"B A S I C B A N N E R P R I N T E R" \ PRINT \ PRINT 240 PRINT "PROGRAM WILL PUT A BANNER OF YOUR CHOICE ON THE PRINTER" 250 PRINT \ PRINT 260 PRINT "If you have an LQP printer, be sure you have enabled the LQP handler" 270 PRINT "with the "SET HANDLER LPT=LQP" command." 280 PRINT \ PRINT 290 FILEV#1:"LPT:" 310 PRINT \ PRINT 320 PRINT "ENTER BANNER TO BE PRINTED ... TERMINATE WITH A " 330 PRINT 340 INPUT B$ 350 FOR I=1 TO LEN(B$) 360 A(I)=ASC(SEG$(B$,I,I)) 370 NEXT I 380 H$(1)=" "\H$(2)=" "\H$(3)=" "\H$(4)=" " 390 H$(5)=" "\H$(6)=" "\H$=H$(L) 400 GOSUB 3650 410 F=F+1\IF A(F)=0 GOTO 3810\G(0)=L 420 FOR I=1 TO LEN(B$) 430 G$(I)=CHR$(A(I)) 440 NEXT I 450 FOR X=1 TO A/2 460 PRINT#1: 470 NEXT X 480 G$=CHR$(A(F)) 490 FOR X=2 TO L 500 G$=G$&CHR$(A(F)) 510 NEXT X 520 IF A(F)>90 GOTO 410 !"Z" IS HIGHEST WE CAN PRINT 530 IF A(F)=46 GOTO 960 ! CHECK FOR PERIOD 540 IF A(F)=32 GOTO 2280 ! 550 IF A(F)<48 GOTO 410 560 IF A(F)>64 GOTO 680 ! FOR "A" THRU "Z" 570 IF A(F)>57 GOTO 410 580 IF A(F)=48 GOTO 1600 ! PRINT A "0" 590 IF A(F)=49 GOTO 1380 ! 600 IF A(F)=50 GOTO 2210 ! : 610 IF A(F)=51 GOTO 2230 ! : 620 IF A(F)=52 GOTO 2300 ! : 630 IF A(F)=53 GOTO 1790 ! : 640 IF A(F)=54 GOTO 2170 ! V 650 IF A(F)=55 GOTO 2090 ! 660 IF A(F)=56 GOTO 2030 ! 670 IF A(F)=57 GOTO 1940 ! THRU A "9" 680 IF A(F)>79 GOTO 840 690 IF A(F)=65 GOTO 1000 ! PRINT A "A" 700 IF A(F)=66 GOTO 1040 710 IF A(F)=67 GOTO 1110 720 IF A(F)=68 GOTO 1150 730 IF A(F)=69 GOTO 1200 ! : 740 IF A(F)=70 GOTO 1240 ! : 750 IF A(F)=71 GOTO 1280 ! : 760 IF A(F)=72 GOTO 1340 ! : 770 IF A(F)=73 GOTO 1380 ! : 780 IF A(F)=74 GOTO 1400 ! : 790 IF A(F)=75 GOTO 1440 ! V 800 IF A(F)=76 GOTO 1470 810 IF A(F)=77 GOTO 1510 820 IF A(F)=78 GOTO 1560 830 IF A(F)=79 GOTO 1600 840 IF A(F)=80 GOTO 1640 850 IF A(F)=81 GOTO 1680 860 IF A(F)=82 GOTO 1740 870 IF A(F)=83 GOTO 1790 880 IF A(F)=84 GOTO 1830 890 IF A(F)=85 GOTO 1870 900 IF A(F)=86 GOTO 1910 910 IF A(F)=87 GOTO 1980 920 IF A(F)=88 GOTO 2070 930 IF A(F)=89 GOTO 2130 940 IF A(F)=90 GOTO 2210 ! THRU A "Z" 950 GOTO 410 960 FOR X=1 TO A 970 PRINT #1:TAB(S);G$;G$ 980 NEXT X 990 GOTO 410 1000 GOSUB 2340 1010 GOSUB 2490 1020 GOSUB 2340 1030 GOTO 410 1040 GOSUB 2340 1050 GOSUB 2420 1060 A=C*.5 1070 GOSUB 2340 1080 A=C 1090 GOSUB 2920 1100 GOTO 410 1110 GOSUB 2340 1120 GOSUB 2530 1130 GOSUB 2530 1140 GOTO 410 1150 GOSUB 2340 1160 GOSUB 2530 1170 A=C*.5\GOSUB 2340 1180 A=C\GOSUB 3020 1190 GOTO 410 1200 GOSUB 2340 1210 GOSUB 2420 1220 GOSUB 2420 1230 GOTO 410 1240 GOSUB 2340 1250 GOSUB 2490 1260 GOSUB 2490 1270 GOTO 410 1280 GOSUB 2340 1290 A=C*.75\GOSUB 2530 1300 A=C*.25\GOSUB 2420 1310 A=C\GOSUB 2720 1320 A=C*.25\GOSUB 2580 1330 A=C\GOTO 410 1340 GOSUB 2340 1350 GOSUB 2580 1360 GOSUB 2340 1370 GOTO 410 1380 GOSUB 2340 1390 GOTO 410 1400 GOSUB 2680 1410 GOSUB 2640 1420 GOSUB 2340 1430 GOTO 410 1440 GOSUB 2340 1450 GOSUB 3090 1460 GOTO 410 1470 GOSUB 2340 1480 GOSUB 2640 1490 GOSUB 2640 1500 GOTO 410 1510 GOSUB 2340 1520 GOSUB 3240 1530 GOSUB 3200 1540 GOSUB 2340 1550 GOTO 410 1560 GOSUB 2340 1570 GOSUB 3240 1580 GOSUB 2340 1590 GOTO 410 1600 GOSUB 2340 1610 GOSUB 2530 1620 GOSUB 2340 1630 GOTO 410 1640 GOSUB 2340 1650 GOSUB 2490 1660 GOSUB 2840 1670 GOTO 410 1680 GOSUB 2340 1690 A=C*.75\GOSUB 2530 1700 A=C*.25\GOSUB 2420 1710 A=C\GOSUB 2340 1720 A=C*.25\GOSUB 2580 1730 A=C\GOTO 410 1740 GOSUB 2340 1750 GOSUB 2490 1760 A=C*.5\GOSUB 2340 1770 GOSUB 2920 1780 A=C\GOTO 410 1790 GOSUB 2760 1800 GOSUB 2420 1810 GOSUB 2720 1820 GOTO 410 1830 GOSUB 2800 1840 GOSUB 2340 1850 GOSUB 2800 1860 GOTO 410 1870 GOSUB 2340 1880 GOSUB 2640 1890 GOSUB 2340 1900 GOTO 410 1910 GOSUB 3240 1920 GOSUB 3200 1930 GOTO 410 1940 GOSUB 2840 1950 GOSUB 2490 1960 GOSUB 2340 1970 GOTO 410 1980 GOSUB 2340 1990 GOSUB 3200 2000 GOSUB 3240 2010 GOSUB 2340 2020 GOTO 410 2030 GOSUB 2340 2040 GOSUB 2420 2050 GOSUB 2340 2060 GOTO 410 2070 GOSUB 3280 2080 GOTO 410 2090 GOSUB 2800 2100 GOSUB 2800 2110 GOSUB 2340 2120 GOTO 410 2130 GOSUB 3770 2140 GOSUB 2880 2150 GOSUB 3730 2160 GOTO 410 2170 GOSUB 2340 2180 GOSUB 2420 2190 GOSUB 2720 2200 GOTO 410 2210 GOSUB 3470 2220 GOTO 410 2230 GOSUB 2530 2240 GOSUB 2420 2250 A=C*.5\GOSUB 2340 2260 A=C\GOSUB 2920 2270 GOTO 410 2280 GOSUB 3650 2290 GOTO 410 2300 GOSUB 2840 2310 GOSUB 2580 2320 GOSUB 2340 2330 GOTO 410 2340 FOR Y=1 TO A 2350 PRINT #1:TAB(S); 2360 FOR X=1 TO 10 2370 PRINT #1:G$; 2380 NEXT X 2390 PRINT #1: 2400 NEXT Y 2410 RETURN 2420 IF A<1 THEN 2430\GOTO 2440 2430 A=1 2440 FOR X=1 TO A 2450 PRINT #1:TAB(S);G$;G$;H$;H$;G$;G$;H$;H$;G$;G$ 2460 NEXT X 2470 RETURN 2480 PRINT#1:TAB(S); 2490 FOR X=1 TO A 2500 PRINT #1:TAB(4*L+S);G$;G$;H$;H$;G$;G$ 2510 NEXT X 2520 RETURN 2530 FOR X=1 TO A 2540 PRINT#1:TAB(S);G$;G$; 2550 PRINT#1:TAB(8*L+S);G$;G$ 2560 NEXT X 2570 RETURN 2580 IF A<1 THEN 2590\GOTO 2600 2590 A=1 2600 FOR X=1 TO A 2610 PRINT#1:TAB(4*L+S);G$;G$ 2620 NEXT X 2630 RETURN 2640 FOR X=1 TO A 2650 PRINT#1:TAB(S);G$;G$ 2660 NEXT X 2670 RETURN 2680 FOR X=1 TO A 2690 PRINT#1:TAB(S);G$;G$;G$;G$ 2700 NEXT X 2710 RETURN 2720 FOR Y=1 TO A 2730 PRINT#1:TAB(S);G$;G$;G$;G$;G$;G$;H$;H$;G$;G$ 2740 NEXT Y 2750 RETURN 2760 FOR X=1 TO A 2770 PRINT#1:TAB(S);G$;G$;H$;H$;G$;G$;G$;G$;G$;G$ 2780 NEXT X 2790 RETURN 2800 FOR X=1 TO A 2810 PRINT #1:TAB(8*L+S);G$;G$ 2820 NEXT X 2830 RETURN 2840 FOR X=1 TO A 2850 PRINT#1:TAB(4*L+S);G$;G$;G$;G$;G$;G$ 2860 NEXT X 2870 RETURN 2880 FOR X=1 TO A 2890 PRINT#1:TAB(S);G$;G$;G$;G$;G$;G$ 2900 NEXT X 2910 RETURN 2920 FOR X=1 TO C/2 2930 PRINT #1:TAB(S); 2940 FOR Y=1 TO 2 2950 FOR Z=1 TO (5*L)-X 2960 PRINT#1:SEG$(G$,1,1); 2970 NEXT Z 2980 IF X>3 THEN 3690\V=X 2990 PRINT#1:H$(2*V);\NEXT Y 3000 PRINT #1:\NEXT X 3010 RETURN 3020 FOR X=1 TO C/2\PRINT #1:TAB(S);H$(X); 3030 FOR Y=1 TO (10*L)-(2*X) 3040 PRINT #1:SEG$(G$,1,1); 3050 NEXT Y 3060 PRINT #1: 3070 NEXT X 3080 RETURN 3090 FOR X=4*L TO 7*L STEP (14*L)/(C*6) 3100 PRINT #1:TAB(7*L-X+S);G$;G$;G$; 3110 IF (7*L-X+S+3*L)<(X+S) GOTO 3160 3120 FOR I=(7*L-X) TO X 3130 PRINT#1:SEG$(G$,1,1); 3140 NEXT I 3150 GOTO 3170 3160 PRINT#1:TAB(X+S);G$;G$;G$; 3170 PRINT#1: 3180 NEXT X 3190 RETURN 3200 FOR X=0 TO 6*L STEP 6*L/C 3210 PRINT#1:TAB(X+S);G$;G$;G$;G$ 3220 NEXT X 3230 RETURN 3240 FOR X=6*L TO 0 STEP -6*L/C 3250 PRINT#1:TAB(X+S);G$;G$;G$;G$ 3260 NEXT X 3270 RETURN 3280 FOR X=0 TO 7*L STEP (14*L)/(C*6) 3290 IF X>3.5*L GOTO 3370 3300 PRINT#1:TAB(X+S);G$;G$;G$; 3310 IF (X+S+3*L)<(7*L-X+S) GOTO 3360 3320 FOR I=X TO (7*L-X) 3330 PRINT#1:SEG$(G$,1,1); 3340 NEXT I 3350 GOTO 3440 3360 PRINT#1:TAB(7*L-X+S);G$;G$;G$;\GO TO 3440 3370 PRINT#1:TAB(7*L-X+S);G$;G$;G$; 3380 IF (7*L-X+S+3*L)<(X+S) GOTO 3430 3390 FOR I=(7*L-X) TO X 3400 PRINT#1:SEG$(G$,1,1); 3410 NEXT I 3420 GOTO 3440 3430 PRINT#1:TAB(X+S);G$;G$;G$; 3440 PRINT #1: 3450 NEXT X 3460 RETURN 3470 FOR X=0 TO 7*L STEP (7*L)/(C*3) 3480 PRINT#1:TAB(S);G$;G$; 3490 IF X>2*L GOTO 3550 3500 PRINT#1:G$; 3510 FOR I=1 TO X 3520 PRINT#1:SEG$(G$,1,1); 3530 NEXT I 3540 GOTO 3610 3550 PRINT#1:TAB(X+S);G$;G$;G$; 3560 IF X+3*L<8*L GOTO 3610 3570 FOR I=X+3*L TO 10*L 3580 PRINT#1:SEG$(G$,1,1); 3590 NEXT I 3600 GOTO 3620 3610 PRINT#1: TAB(8*L+S);G$;G$;G$; 3620 PRINT#1: 3630 NEXT X 3640 RETURN 3650 FOR X=1 TO A*3 3660 PRINT#1: 3670 NEXT X 3680 RETURN 3690 FOR W=1 TO X-3 3700 PRINT#1:" "; 3710 NEXT W 3720 B=3\GOTO 2990 3730 FOR X=4*L TO 7*L STEP L*4/C 3740 PRINT#1:TAB(X+S);G$;G$;G$ 3750 NEXT X 3760 RETURN 3770 FOR X=7*L TO 4*L STEP -4*L/C 3780 PRINT #1:TAB(X+S);G$;G$;G$ 3790 NEXT X 3800 RETURN 3810 FOR X= 1 TO C*3 3820 PRINT#1: 3830 NEXT X 3840 CLOSE#1 3850 END