File BANNER.BA (BASIC source file)

Directory of image this file is from
This file as a plain text file

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 <CR>"
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			! <SPACE>
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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search