home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib29b.dsk
/
BANNER.MAKER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
10KB
|
269 lines
10 REM ************************
20 REM * BANNER.MAKER *
30 REM * BY GLENN TEMAN *
40 REM * COPYRIGHT (C) 1986 *
50 REM * BY MICROSPARC, INC. *
60 REM * CONCORD, MA 01742 *
70 REM ************************
80 GOSUB 1380:E2 = 0: IF PEEK(64435) = 6 THEN E2 = 1
90 GOTO 250
100 A$ = "":S = 0: INVERSE : GOSUB 200: FOR X = 1 TO 2 STEP 0
110 POKE -16368,0: GET C$:C = ASC(C$): IF C = 13 OR LEN(A$) >238 THEN : NORMAL : PRINT : RETURN
120 IF (C = 8 OR C = 127) AND LEN(A$) >1 THEN : NORMAL :A$ = LEFT$(A$, LEN(A$) -1): CALL -1008: PRINT " ";: CALL -1008: GOTO 190
130 IF (C = 8 OR C = 127) AND LEN(A$) = 1 THEN NORMAL :A$ = "": CALL -1008: PRINT " ";: CALL -1008: GOTO 190
140 IF C = 27 AND E2 = 0 THEN S = ABS(S -1): GOSUB 200: GOTO 190
150 IF C >64 AND C <91 AND S THEN NORMAL : PRINT C$;:A$ = A$ + CHR$(C +32): GOTO 190
160 INVERSE : IF C <65 OR C >90 OR E2 = 1 THEN NORMAL
170 IF C >31 AND C <127 THEN PRINT C$;:A$ = A$ +C$: GOTO 190
180 PRINT CHR$(7);
190 NEXT X
200 HH = PEEK(36) +1:VV = PEEK(37) +1: VTAB 11: HTAB 31
210 IF S AND E2 = 0 THEN NORMAL : PRINT "<LOWER>"
220 IF NOT S AND E2 = 0 THEN INVERSE : PRINT "<UPPER>"
230 VTAB VV: HTAB HH
240 RETURN
250 HOME
260 VTAB 3: HTAB 1: CALL -958
270 PRINT "1. 1X - 7 LINES/PAGE"
280 PRINT "2. 2X - 3 LINES/PAGE"
290 PRINT "3. 3X - 2 LINES/PAGE"
300 PRINT "4. 8X - 1 LINE/PAGE"
310 VTAB 10: HTAB 1: CALL -868
320 PRINT "CHARACTER HEIGHT (<ESC> TO QUIT)? ";
330 POKE -16368,0: GET A$: IF A$ = CHR$(27) THEN 1050
340 HX = VAL(A$)
350 IF HX <1 OR HX >4 THEN PRINT CHR$(7);: GOTO 310
360 VTAB 3: HTAB 1: CALL -958
370 INVERSE : PRINT " HEIGHT = ";HX +(HX = 4) *4;"X ": NORMAL
380 PRINT : PRINT "1. 1X - 9 CHARACTERS/PAGE"
390 PRINT "2. 2X - 4 CHARACTERS/PAGE"
400 PRINT "3. 3X - 3 CHARACTERS/PAGE"
410 PRINT "4. 4X - 2 CHARACTERS/PAGE"
420 PRINT "5. 5X - 2 CHARACTERS/PAGE"
430 VTAB 13: HTAB 1: CALL -868
440 PRINT "CHARACTER WIDTH (<ESC> TO QUIT)? ";
450 POKE -16368,0: GET A$: IF A$ = CHR$(27) THEN 1050
460 WX = VAL(A$)
470 IF WX <1 OR WX >5 THEN PRINT CHR$(7);: GOTO 430
480 VTAB 4: HTAB 1: CALL -958
490 INVERSE : PRINT " WIDTH = ";WX;"X ": NORMAL
500 IF HX = 4 THEN LJ = 1: GOTO 590
510 PRINT : PRINT "1) LEFT JUSTIFY"
520 PRINT "2) CENTER"
530 VTAB 10: HTAB 1: CALL -868
540 PRINT "CHOICE (<ESC> TO QUIT)? ";: POKE -16368,0: GET A$
550 IF A$ = CHR$(27) THEN 1050
560 IF A$ = "1" THEN LJ = 1
570 IF A$ = "2" THEN LJ = 0
580 IF A$ < >"1" AND A$ < >"2" THEN PRINT CHR$(7);: GOTO 530
590 VTAB 5: HTAB 1: CALL -958: INVERSE
600 IF LJ THEN PRINT " LEFT JUSTIFY "
610 IF NOT LJ THEN PRINT " CENTER "
620 NORMAL
630 PRINT : PRINT "1) MANUAL PRINT CHARACTER SELECTION"
640 PRINT "2) AUTOMATIC PRINT CHARACTER SELECTION"
650 VTAB 11: HTAB 1: CALL -868:OC = 1
660 PRINT "CHOICE (<ESC> TO QUIT)? ";: POKE -16368,0: GET A$
670 IF A$ = CHR$(27) THEN 1050
680 IF A$ = "2" THEN OC = 0: GOTO 750
690 IF A$ < >"1" THEN PRINT CHR$(7);: GOTO 650
700 PRINT 1
710 VTAB 12: HTAB 1: CALL -868
720 PRINT "CHARACTER (<ESC> TO QUIT)? ";: POKE -16368,0: GET O$
730 IF O$ = CHR$(27) THEN 1050
740 IF ASC(O$) <33 OR ASC(O$) >96 THEN PRINT CHR$(7);: GOTO 710
750 VTAB 6: HTAB 1: CALL -958: INVERSE
760 IF OC THEN PRINT " USE >> "; CHR$(34);O$; CHR$(34)
770 IF NOT OC THEN PRINT " AUTO CHARACTER SELECTION"
780 NORMAL
790 ML = VAL( MID$ ("7321",HX,1))
800 IF HX = 4 THEN HX = 8
810 PRINT "> FOR A BLANK LINE, ENTER A SPACE"
820 PRINT "> TO STOP ENTERING LINES, PRESS <RETURN>";
830 IF E2 = 0 THEN PRINT "> TO TOGGLE CAPS-LOCK PRESS <ESCAPE>"
840 IF ML = 1 THEN PRINT : PRINT "ENTER 1 LINE OF TEXT:": GOTO 870
850 PRINT : PRINT "ENTER UP TO ";
860 PRINT ML;" LINES OF TEXT:"
870 LL = 0:M = 0: POKE 34,11
880 PRINT : PRINT "LINE ";LL +1;"? ";
890 GOSUB 100
900 IF A$ = "" THEN 940
910 IF LEN(A$) >M THEN M = LEN(A$)
920 L$(LL) = A$:LL = LL +1
930 IF LL < >ML THEN 880
940 L$(LL) = "":LL = LL -1
950 IF L$(0) = "" THEN 1050
960 VTAB 23: PRINT : PRINT "OK? ";: POKE -16368,0: GET A$
970 IF A$ = "N" OR ASC(A$) = 110 THEN POKE 34,2: HOME : GOTO 250
980 IF A$ < >"Y" AND ASC(A$) < >121 THEN PRINT CHR$(7);: GOTO 960
990 PRINT A$
1000 GOSUB 2550
1010 GOSUB 2570
1020 IF NOT LJ THEN GOSUB 2640
1030 GOSUB 2610
1040 GOSUB 1100
1050 POKE 34,2: HOME
1060 VTAB 4: PRINT "MORE? ";: POKE -16368,0: GET A$: PRINT A$
1070 IF A$ = "N" OR ASC(A$) = 110 THEN PRINT : PRINT : PRINT "GOODBYE!": TEXT : END
1080 IF A$ = "Y" OR ASC(A$) = 121 THEN 250
1090 PRINT CHR$(7);: GOTO 1060
1100 FOR X = 1 TO WB: PRINT : NEXT X
1110 FOR C = 1 TO 999
1120 FOR R = 0 TO 4
1130 FOR W = 1 TO WX
1140 PRINT SPC( HB);
1150 FOR L = LL TO 0 STEP -1
1160 C$ = MID$ (L$(L),C,1): IF C$ = "" THEN C$ = " "
1170 IF C$ = " " THEN FOR H = 1 TO 9 *HX: PRINT " ";: NEXT H: GOTO 1270
1180 IF NOT OC THEN O$ = C$
1190 CA = ASC(C$) -32
1200 FOR D = 0 TO 8
1210 X = INT(B%(CA,R)/2 ^(8 -D))/2
1220 FOR H = 1 TO HX
1230 IF X = INT(X) THEN PRINT " ";
1240 IF X < > INT(X) THEN PRINT O$;
1250 NEXT H
1260 NEXT D
1270 FOR H = 1 TO HX: PRINT " ";: NEXT H
1280 NEXT L
1290 PRINT
1300 NEXT W
1310 NEXT R
1320 IF C = M THEN 1350
1330 FOR W = 1 TO WX: PRINT : PRINT : NEXT W
1340 NEXT C
1350 PRINT CHR$(12): PRINT CHR$(4);"PR#0"
1360 RETURN
1370 END
1380 TEXT : HOME
1390 INVERSE : VTAB 24: PRINT SPC( 40);
1400 VTAB 1: HTAB 1: PRINT SPC( 40);
1410 FOR X = 2 TO 23
1420 VTAB X: HTAB 1: PRINT " ";: HTAB 40: PRINT " ";
1430 NEXT X
1440 NORMAL : VTAB 5
1450 HTAB 8: PRINT "B A N N E R M A K E R": PRINT
1460 HTAB 12: PRINT "BY GLENN TEMAN": PRINT : HTAB 4: PRINT "COPYRIGHT 1986 BY MICROSPARC, INC."
1470 VTAB 21: HTAB 8: PRINT "PRESS RETURN TO CONTINUE";: POKE -16368,0: GET A$
1480 HOME : INVERSE : PRINT " BANNER MAKER ": NORMAL : POKE 34,1
1490 VTAB 5: PRINT "JUST A MOMENT ... ";
1500 DIM B%(95,4),L$(7):SL = 1
1510 FOR I = 1 TO 95
1520 READ A$
1530 FOR J = 0 TO 4
1540 READ B%(I,J)
1550 NEXT J
1560 NEXT I
1570 RETURN
1580 REM CHARACTER PATTERNS
1590 DATA !,512,512,959,959,512
1600 DATA QUOTE,512,519,512,519,512
1610 DATA #,580,1023,580,1023,580
1620 DATA $,652,658,1023,658,610
1630 DATA %,771,704,568,518,897
1640 DATA &,736,790,825,710,832
1650 DATA ',512,515,527,512,512
1660 DATA (,636,642,769,769,512
1670 DATA ),512,769,769,642,636
1680 DATA *,596,568,766,568,596
1690 DATA +,528,528,766,528,528
1700 DATA COMMA,512,512,704,960,512
1710 DATA -,528,528,528,528,528
1720 DATA .,512,512,896,896,512
1730 DATA /,768,704,568,518,513
1740 DATA 0,636,642,769,642,636
1750 DATA 1,770,769,1023,768,768
1760 DATA 2,962,801,785,777,774
1770 DATA 3,642,785,785,785,750
1780 DATA 4,536,532,530,1023,528
1790 DATA 5,671,785,785,785,737
1800 DATA 6,766,801,801,801,706
1810 DATA 7,515,513,961,561,527
1820 DATA 8,750,785,785,785,750
1830 DATA 9,646,777,777,777,766
1840 DATA COLON,512,728,728,512,512
1850 DATA ;,512,728,984,512,512
1860 DATA <,528,552,580,642,769
1870 DATA =,552,552,552,552,552
1880 DATA >,769,642,580,552,528
1890 DATA ?,514,513,945,521,518
1900 DATA @,766,881,841,753,766
1910 DATA A,1020,530,529,530,1020
1920 DATA B,1023,785,785,809,710
1930 DATA C,766,769,769,769,642
1940 DATA D,1023,769,769,642,636
1950 DATA E,1023,785,785,785,769
1960 DATA F,1023,529,529,529,513
1970 DATA G,766,769,801,801,738
1980 DATA H,1023,528,528,528,1023
1990 DATA I,769,769,1023,769,769
2000 DATA J,705,769,1023,513,513
2010 DATA K,1023,528,568,580,899
2020 DATA L,1023,768,768,768,768
2030 DATA M,1023,518,536,518,1023
2040 DATA N,1023,524,528,608,1023
2050 DATA O,766,769,769,769,766
2060 DATA P,1023,529,529,529,526
2070 DATA Q,766,769,833,641,894
2080 DATA R,1023,561,593,657,782
2090 DATA S,654,785,785,785,738
2100 DATA T,513,513,1023,513,513
2110 DATA U,767,768,768,768,767
2120 DATA V,639,640,768,640,639
2130 DATA W,1023,704,560,704,1023
2140 DATA X,967,552,528,552,967
2150 DATA Y,527,528,992,528,527
2160 DATA Z,897,865,785,781,771
2170 DATA L.BRACKET,1023,769,769,769,769
2180 DATA BKSLASH,513,518,568,704,768
2190 DATA ],769,769,769,769,1023
2200 DATA ^,524,514,513,514,524
2210 DATA UNDERLINE,768,768,768,768,768
2220 DATA BACK.APOSTROPHE,512,527,515,512,512
2230 REM SMALL LETTERS FOLLOW
2240 DATA -A,708,804,804,676,1016
2250 DATA -B,1023,784,784,784,736
2260 DATA -C,760,772,772,772,648
2270 DATA -D,736,784,784,784,1023
2280 DATA -E,760,804,804,804,824
2290 DATA -F,528,1022,529,529,514
2300 DATA -G,664,804,804,804,760
2310 DATA -H,1023,544,528,528,992
2320 DATA -I,512,776,1018,768,512
2330 DATA -J,640,776,762,520,512
2340 DATA -K,1023,536,552,580,896
2350 DATA -L,512,769,1023,768,512
2360 DATA -M,1020,520,752,520,1008
2370 DATA -N,1020,528,520,520,1008
2380 DATA -O,760,772,772,772,760
2390 DATA -P,1020,548,548,548,536
2400 DATA -Q,536,548,548,548,1020
2410 DATA -R,1020,528,520,520,528
2420 DATA -S,792,804,804,804,708
2430 DATA -T,512,520,767,776,640
2440 DATA -U,764,768,768,768,764
2450 DATA -V,572,704,768,704,572
2460 DATA -W,1020,768,752,768,1020
2470 DATA -X,772,648,624,648,772
2480 DATA -Y,652,784,784,784,764
2490 DATA -Z,900,836,804,788,780
2500 DATA L.BRACE,528,636,642,769,769
2510 DATA VERT.BAR,512,512,1007,512,512
2520 DATA R.BRACE,769,769,642,636,528
2530 DATA TILDE,524,516,524,520,524
2540 DATA RUBOUT,512,636,636,636,512
2550 X = 11 *(LL +1) *HX -2 *HX:HB = (76 -X)/2
2560 RETURN
2570 X = 7 *M *WX -2 *WX
2580 Y = INT(X/66) *66 +60
2590 WB = (Y -X)/2
2600 RETURN
2610 PRINT : PRINT CHR$(4);"PR#";SL
2620 PRINT CHR$(9);"78N"
2630 RETURN
2640 FOR L = LL TO 0 STEP -1
2650 X = (M - LEN(L$(L)))/2
2660 IF NOT X THEN 2680
2670 FOR Y = 1 TO X:L$(L) = " " +L$(L): NEXT Y
2680 NEXT L
2690 RETURN