home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib29b.dsk / BANNER.MAKER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  10KB  |  269 lines

  1. 10  REM  ************************
  2. 20  REM  * BANNER.MAKER         *
  3. 30  REM  * BY  GLENN TEMAN      *
  4. 40  REM  * COPYRIGHT (C) 1986   *
  5. 50  REM  * BY MICROSPARC, INC.  *
  6. 60  REM  * CONCORD, MA  01742   *
  7. 70  REM  ************************
  8. 80  GOSUB 1380:E2 = 0: IF  PEEK(64435) = 6  THEN E2 = 1
  9. 90  GOTO 250
  10. 100 A$ = "":S = 0: INVERSE : GOSUB 200: FOR X = 1 TO 2  STEP 0
  11. 110  POKE  -16368,0: GET C$:C =  ASC(C$): IF C = 13  OR  LEN(A$) >238  THEN : NORMAL : PRINT : RETURN 
  12. 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
  13. 130  IF (C = 8  OR C = 127)  AND  LEN(A$) = 1  THEN  NORMAL :A$ = "": CALL  -1008: PRINT " ";: CALL  -1008: GOTO 190
  14. 140  IF C = 27  AND E2 = 0  THEN S =  ABS(S -1): GOSUB 200: GOTO 190
  15. 150  IF C >64  AND C <91  AND S  THEN  NORMAL : PRINT C$;:A$ = A$ + CHR$(C +32): GOTO 190
  16. 160  INVERSE : IF C <65  OR C >90  OR E2 = 1  THEN  NORMAL 
  17. 170  IF C >31  AND C <127  THEN  PRINT C$;:A$ = A$ +C$: GOTO 190
  18. 180  PRINT  CHR$(7);
  19. 190  NEXT X
  20. 200 HH =  PEEK(36) +1:VV =  PEEK(37) +1: VTAB 11: HTAB 31
  21. 210  IF S  AND E2 = 0  THEN  NORMAL : PRINT "<LOWER>"
  22. 220  IF   NOT S  AND E2 = 0  THEN  INVERSE : PRINT "<UPPER>"
  23. 230  VTAB VV: HTAB HH
  24. 240  RETURN 
  25. 250  HOME 
  26. 260  VTAB 3: HTAB 1: CALL  -958
  27. 270  PRINT "1. 1X - 7 LINES/PAGE"
  28. 280  PRINT "2. 2X - 3 LINES/PAGE"
  29. 290  PRINT "3. 3X - 2 LINES/PAGE"
  30. 300  PRINT "4. 8X - 1 LINE/PAGE"
  31. 310  VTAB 10: HTAB 1: CALL  -868
  32. 320  PRINT "CHARACTER HEIGHT (<ESC> TO QUIT)? ";
  33. 330  POKE  -16368,0: GET A$: IF A$ =  CHR$(27)  THEN 1050
  34. 340 HX =  VAL(A$)
  35. 350  IF HX <1  OR HX >4  THEN  PRINT  CHR$(7);: GOTO 310
  36. 360  VTAB 3: HTAB 1: CALL  -958
  37. 370  INVERSE : PRINT " HEIGHT = ";HX +(HX = 4) *4;"X ": NORMAL 
  38. 380  PRINT : PRINT "1. 1X - 9 CHARACTERS/PAGE"
  39. 390  PRINT "2. 2X - 4 CHARACTERS/PAGE"
  40. 400  PRINT "3. 3X - 3 CHARACTERS/PAGE"
  41. 410  PRINT "4. 4X - 2 CHARACTERS/PAGE"
  42. 420  PRINT "5. 5X - 2 CHARACTERS/PAGE"
  43. 430  VTAB 13: HTAB 1: CALL  -868
  44. 440  PRINT "CHARACTER WIDTH (<ESC> TO QUIT)? ";
  45. 450  POKE  -16368,0: GET A$: IF A$ =  CHR$(27)  THEN 1050
  46. 460 WX =  VAL(A$)
  47. 470  IF WX <1  OR WX >5  THEN  PRINT  CHR$(7);: GOTO 430
  48. 480  VTAB 4: HTAB 1: CALL  -958
  49. 490  INVERSE : PRINT " WIDTH = ";WX;"X ": NORMAL 
  50. 500  IF HX = 4  THEN LJ = 1: GOTO 590
  51. 510  PRINT : PRINT "1) LEFT JUSTIFY"
  52. 520  PRINT "2) CENTER"
  53. 530  VTAB 10: HTAB 1: CALL  -868
  54. 540  PRINT "CHOICE (<ESC> TO QUIT)? ";: POKE  -16368,0: GET A$
  55. 550  IF A$ =  CHR$(27)  THEN 1050
  56. 560  IF A$ = "1"  THEN LJ = 1
  57. 570  IF A$ = "2"  THEN LJ = 0
  58. 580  IF A$ < >"1"  AND A$ < >"2"  THEN  PRINT  CHR$(7);: GOTO 530
  59. 590  VTAB 5: HTAB 1: CALL  -958: INVERSE 
  60. 600  IF LJ  THEN  PRINT " LEFT JUSTIFY "
  61. 610  IF   NOT LJ  THEN  PRINT " CENTER "
  62. 620  NORMAL 
  63. 630  PRINT : PRINT "1) MANUAL PRINT CHARACTER SELECTION"
  64. 640  PRINT "2) AUTOMATIC PRINT CHARACTER SELECTION"
  65. 650  VTAB 11: HTAB 1: CALL  -868:OC = 1
  66. 660  PRINT "CHOICE (<ESC> TO QUIT)? ";: POKE  -16368,0: GET A$
  67. 670  IF A$ =  CHR$(27)  THEN 1050
  68. 680  IF A$ = "2"  THEN OC = 0: GOTO 750
  69. 690  IF A$ < >"1"  THEN  PRINT  CHR$(7);: GOTO 650
  70. 700  PRINT 1
  71. 710  VTAB 12: HTAB 1: CALL  -868
  72. 720  PRINT "CHARACTER (<ESC> TO QUIT)? ";: POKE  -16368,0: GET O$
  73. 730  IF O$ =  CHR$(27)  THEN 1050
  74. 740  IF  ASC(O$) <33  OR  ASC(O$) >96  THEN  PRINT  CHR$(7);: GOTO 710
  75. 750  VTAB 6: HTAB 1: CALL  -958: INVERSE 
  76. 760  IF OC  THEN  PRINT " USE >> "; CHR$(34);O$; CHR$(34)
  77. 770  IF   NOT OC  THEN  PRINT " AUTO CHARACTER SELECTION"
  78. 780  NORMAL 
  79. 790 ML =  VAL( MID$ ("7321",HX,1))
  80. 800  IF HX = 4  THEN HX = 8
  81. 810  PRINT "> FOR A BLANK LINE, ENTER A SPACE"
  82. 820  PRINT "> TO STOP ENTERING LINES, PRESS <RETURN>";
  83. 830  IF E2 = 0  THEN  PRINT "> TO TOGGLE CAPS-LOCK PRESS <ESCAPE>"
  84. 840  IF ML = 1  THEN  PRINT : PRINT "ENTER 1 LINE OF TEXT:": GOTO 870
  85. 850  PRINT : PRINT "ENTER UP TO ";
  86. 860  PRINT ML;" LINES OF TEXT:"
  87. 870 LL = 0:M = 0: POKE 34,11
  88. 880  PRINT : PRINT "LINE ";LL +1;"? ";
  89. 890  GOSUB 100
  90. 900  IF A$ = ""  THEN 940
  91. 910  IF  LEN(A$) >M  THEN M =  LEN(A$)
  92. 920 L$(LL) = A$:LL = LL +1
  93. 930  IF LL < >ML  THEN 880
  94. 940 L$(LL) = "":LL = LL -1
  95. 950  IF L$(0) = ""  THEN 1050
  96. 960  VTAB 23: PRINT : PRINT "OK? ";: POKE  -16368,0: GET A$
  97. 970  IF A$ = "N"  OR  ASC(A$) = 110  THEN  POKE 34,2: HOME : GOTO 250
  98. 980  IF A$ < >"Y"  AND  ASC(A$) < >121  THEN  PRINT  CHR$(7);: GOTO 960
  99. 990  PRINT A$
  100. 1000  GOSUB 2550
  101. 1010  GOSUB 2570
  102. 1020  IF   NOT LJ  THEN  GOSUB 2640
  103. 1030  GOSUB 2610
  104. 1040  GOSUB 1100
  105. 1050  POKE 34,2: HOME 
  106. 1060  VTAB 4: PRINT "MORE? ";: POKE  -16368,0: GET A$: PRINT A$
  107. 1070  IF A$ = "N"  OR  ASC(A$) = 110  THEN  PRINT : PRINT : PRINT "GOODBYE!": TEXT : END 
  108. 1080  IF A$ = "Y"  OR  ASC(A$) = 121  THEN 250
  109. 1090  PRINT  CHR$(7);: GOTO 1060
  110. 1100  FOR X = 1 TO WB: PRINT : NEXT X
  111. 1110  FOR C = 1 TO 999
  112. 1120  FOR R = 0 TO 4
  113. 1130  FOR W = 1 TO WX
  114. 1140  PRINT  SPC( HB);
  115. 1150  FOR L = LL TO 0  STEP  -1
  116. 1160 C$ =  MID$ (L$(L),C,1): IF C$ = ""  THEN C$ = " "
  117. 1170  IF C$ = " "  THEN  FOR H = 1 TO 9 *HX: PRINT " ";: NEXT H: GOTO 1270
  118. 1180  IF   NOT OC  THEN O$ = C$
  119. 1190 CA =  ASC(C$) -32
  120. 1200  FOR D = 0 TO 8
  121. 1210 X =  INT(B%(CA,R)/2 ^(8 -D))/2
  122. 1220  FOR H = 1 TO HX
  123. 1230  IF X =  INT(X)  THEN  PRINT " ";
  124. 1240  IF X < > INT(X)  THEN  PRINT O$;
  125. 1250  NEXT H
  126. 1260  NEXT D
  127. 1270  FOR H = 1 TO HX: PRINT "  ";: NEXT H
  128. 1280  NEXT L
  129. 1290  PRINT 
  130. 1300  NEXT W
  131. 1310  NEXT R
  132. 1320  IF C = M  THEN 1350
  133. 1330  FOR W = 1 TO WX: PRINT : PRINT : NEXT W
  134. 1340  NEXT C
  135. 1350  PRINT  CHR$(12): PRINT  CHR$(4);"PR#0"
  136. 1360  RETURN 
  137. 1370  END 
  138. 1380  TEXT : HOME 
  139. 1390  INVERSE : VTAB 24: PRINT  SPC( 40);
  140. 1400  VTAB 1: HTAB 1: PRINT  SPC( 40);
  141. 1410  FOR X = 2 TO 23
  142. 1420  VTAB X: HTAB 1: PRINT " ";: HTAB 40: PRINT " ";
  143. 1430  NEXT X
  144. 1440  NORMAL : VTAB 5
  145. 1450  HTAB 8: PRINT "B A N N E R    M A K E R": PRINT 
  146. 1460  HTAB 12: PRINT "BY   GLENN TEMAN": PRINT : HTAB 4: PRINT "COPYRIGHT 1986 BY MICROSPARC, INC."
  147. 1470  VTAB 21: HTAB 8: PRINT "PRESS RETURN TO CONTINUE";: POKE  -16368,0: GET A$
  148. 1480  HOME : INVERSE : PRINT " BANNER MAKER  ": NORMAL : POKE 34,1
  149. 1490  VTAB 5: PRINT "JUST A MOMENT ... ";
  150. 1500  DIM B%(95,4),L$(7):SL = 1
  151. 1510  FOR I = 1 TO 95
  152. 1520  READ A$
  153. 1530  FOR J = 0 TO 4
  154. 1540  READ B%(I,J)
  155. 1550  NEXT J
  156. 1560  NEXT I
  157. 1570  RETURN 
  158. 1580  REM  CHARACTER PATTERNS
  159. 1590  DATA  !,512,512,959,959,512
  160. 1600  DATA  QUOTE,512,519,512,519,512
  161. 1610  DATA  #,580,1023,580,1023,580
  162. 1620  DATA  $,652,658,1023,658,610
  163. 1630  DATA  %,771,704,568,518,897
  164. 1640  DATA  &,736,790,825,710,832
  165. 1650  DATA  ',512,515,527,512,512
  166. 1660  DATA  (,636,642,769,769,512
  167. 1670  DATA  ),512,769,769,642,636
  168. 1680  DATA  *,596,568,766,568,596
  169. 1690  DATA  +,528,528,766,528,528
  170. 1700  DATA  COMMA,512,512,704,960,512
  171. 1710  DATA  -,528,528,528,528,528
  172. 1720  DATA  .,512,512,896,896,512
  173. 1730  DATA  /,768,704,568,518,513
  174. 1740  DATA  0,636,642,769,642,636
  175. 1750  DATA  1,770,769,1023,768,768
  176. 1760  DATA  2,962,801,785,777,774
  177. 1770  DATA  3,642,785,785,785,750
  178. 1780  DATA  4,536,532,530,1023,528
  179. 1790  DATA  5,671,785,785,785,737
  180. 1800  DATA  6,766,801,801,801,706
  181. 1810  DATA  7,515,513,961,561,527
  182. 1820  DATA  8,750,785,785,785,750
  183. 1830  DATA  9,646,777,777,777,766
  184. 1840  DATA  COLON,512,728,728,512,512
  185. 1850  DATA  ;,512,728,984,512,512
  186. 1860  DATA  <,528,552,580,642,769
  187. 1870  DATA  =,552,552,552,552,552
  188. 1880  DATA  >,769,642,580,552,528
  189. 1890  DATA  ?,514,513,945,521,518
  190. 1900  DATA  @,766,881,841,753,766
  191. 1910  DATA  A,1020,530,529,530,1020
  192. 1920  DATA  B,1023,785,785,809,710
  193. 1930  DATA  C,766,769,769,769,642
  194. 1940  DATA  D,1023,769,769,642,636
  195. 1950  DATA  E,1023,785,785,785,769
  196. 1960  DATA  F,1023,529,529,529,513
  197. 1970  DATA  G,766,769,801,801,738
  198. 1980  DATA  H,1023,528,528,528,1023
  199. 1990  DATA  I,769,769,1023,769,769
  200. 2000  DATA  J,705,769,1023,513,513
  201. 2010  DATA  K,1023,528,568,580,899
  202. 2020  DATA  L,1023,768,768,768,768
  203. 2030  DATA  M,1023,518,536,518,1023
  204. 2040  DATA  N,1023,524,528,608,1023
  205. 2050  DATA  O,766,769,769,769,766
  206. 2060  DATA  P,1023,529,529,529,526
  207. 2070  DATA  Q,766,769,833,641,894
  208. 2080  DATA  R,1023,561,593,657,782
  209. 2090  DATA  S,654,785,785,785,738
  210. 2100  DATA  T,513,513,1023,513,513
  211. 2110  DATA  U,767,768,768,768,767
  212. 2120  DATA  V,639,640,768,640,639
  213. 2130  DATA  W,1023,704,560,704,1023
  214. 2140  DATA  X,967,552,528,552,967
  215. 2150  DATA  Y,527,528,992,528,527
  216. 2160  DATA  Z,897,865,785,781,771
  217. 2170  DATA  L.BRACKET,1023,769,769,769,769
  218. 2180  DATA  BKSLASH,513,518,568,704,768
  219. 2190  DATA  ],769,769,769,769,1023
  220. 2200  DATA  ^,524,514,513,514,524
  221. 2210  DATA  UNDERLINE,768,768,768,768,768
  222. 2220  DATA  BACK.APOSTROPHE,512,527,515,512,512
  223. 2230  REM  SMALL LETTERS FOLLOW
  224. 2240  DATA  -A,708,804,804,676,1016
  225. 2250  DATA  -B,1023,784,784,784,736
  226. 2260  DATA  -C,760,772,772,772,648
  227. 2270  DATA  -D,736,784,784,784,1023
  228. 2280  DATA  -E,760,804,804,804,824
  229. 2290  DATA  -F,528,1022,529,529,514
  230. 2300  DATA  -G,664,804,804,804,760
  231. 2310  DATA  -H,1023,544,528,528,992
  232. 2320  DATA  -I,512,776,1018,768,512
  233. 2330  DATA  -J,640,776,762,520,512
  234. 2340  DATA  -K,1023,536,552,580,896
  235. 2350  DATA  -L,512,769,1023,768,512
  236. 2360  DATA  -M,1020,520,752,520,1008
  237. 2370  DATA  -N,1020,528,520,520,1008
  238. 2380  DATA  -O,760,772,772,772,760
  239. 2390  DATA  -P,1020,548,548,548,536
  240. 2400  DATA  -Q,536,548,548,548,1020
  241. 2410  DATA  -R,1020,528,520,520,528
  242. 2420  DATA  -S,792,804,804,804,708
  243. 2430  DATA  -T,512,520,767,776,640
  244. 2440  DATA  -U,764,768,768,768,764
  245. 2450  DATA  -V,572,704,768,704,572
  246. 2460  DATA  -W,1020,768,752,768,1020
  247. 2470  DATA  -X,772,648,624,648,772
  248. 2480  DATA  -Y,652,784,784,784,764
  249. 2490  DATA  -Z,900,836,804,788,780
  250. 2500  DATA  L.BRACE,528,636,642,769,769
  251. 2510  DATA  VERT.BAR,512,512,1007,512,512
  252. 2520  DATA  R.BRACE,769,769,642,636,528
  253. 2530  DATA  TILDE,524,516,524,520,524
  254. 2540  DATA  RUBOUT,512,636,636,636,512
  255. 2550 X = 11 *(LL +1) *HX -2 *HX:HB = (76 -X)/2
  256. 2560  RETURN 
  257. 2570 X = 7 *M *WX -2 *WX
  258. 2580 Y =  INT(X/66) *66 +60
  259. 2590 WB = (Y -X)/2
  260. 2600  RETURN 
  261. 2610  PRINT : PRINT  CHR$(4);"PR#";SL
  262. 2620  PRINT  CHR$(9);"78N"
  263. 2630  RETURN 
  264. 2640  FOR L = LL TO 0  STEP  -1
  265. 2650 X = (M - LEN(L$(L)))/2
  266. 2660  IF   NOT X  THEN 2680
  267. 2670  FOR Y = 1 TO X:L$(L) = " " +L$(L): NEXT Y
  268. 2680  NEXT L
  269. 2690  RETURN