home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib39b.dsk / SCROLLER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  9KB  |  188 lines

  1. 1  REM  ***********************
  2. 2  REM  *      SCROLLER       *
  3. 3  REM  * BY ALAN A. HODSON   *
  4. 4  REM  * COPYRIGHT (C) 1990  *
  5. 5  REM  * MINDCRAFT PUBL. CO. *
  6. 6  REM  ***********************
  7. 10  PRINT  CHR$(4)"PR#3": REM  80 COLUMN MODE
  8. 20  HOME : PRINT  TAB( 30)"**********************": PRINT  TAB( 31)"PROGRAM BY": PRINT  TAB( 31)"BY ALAN A. HODSON": PRINT  TAB( 31)"COPYRIGHT (C) 1990": PRINT  TAB( 31)"MINDCRAFT PUBL. CORP.": PRINT  TAB( 30)"**********************"
  9. 30  VTAB 23: PRINT  TAB( 27)"INITIALIZING - PLEASE WAIT"
  10. 40 G$ = "                  ........": REM  18 BLANKS, 8.
  11. 50  DIM K$(65,15),F$(60),NN$(60),P$(12,12)
  12. 60  GOSUB 660: REM  FIRST ARRAY
  13. 70  FOR I = 1 TO 59: FOR J = 1 TO 11: READ K$(I,J): NEXT : NEXT 
  14. 80 FL = 1: GOSUB 450: REM  TITLE
  15. 90 L1$ = "*******************************************************************************": REM  80 ASTERISKS
  16. 100 L2$ = "*                            ENTER UP TO SIXTY LINES                          *": REM  1*,28 LEADING BLANKS,25 TRAILING BLANKS,1*
  17. 110 L3$ = "*                           OF EIGHT CHARACTERS EACH                          *": REM  1*,27LB,25TB,1*
  18. 120 L4$ = "*                           HIT ANY KEY TO TERMINATE                          *": REM    1*,27LB,26TB,1* 
  19. 130  PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT 
  20. 140  POKE 34,17: REM  CONTROL TOP PART OF SCREEN
  21. 150  VTAB 17: HTAB 1: PRINT L1$: PRINT L2$: PRINT L3$: PRINT L4$: PRINT L1$: PRINT : PRINT 
  22. 160  VTAB 24: HTAB 1: INPUT "ENTER NUMBER OF LINES ";LL$: IF  VAL(LL$) >60  THEN 190
  23. 170  IF  VAL(LL$) = 0  THEN 130
  24. 180 LL =  VAL(LL$): GOTO 200
  25. 190  PRINT  CHR$(7);">>> MAXIMUM 60 PLEASE <<<": FOR ZZ = 1 TO 2500: NEXT : VTAB 18: GOSUB 650: GOTO 150
  26. 200  POKE 34,0: REM  RESTORE FULL SCREEN
  27. 210  IF LL >9  THEN G$ = " " +G$: REM  1 BLANK
  28. 220  PRINT : FOR II = 1 TO LL
  29. 230  IF II = 10  THEN G$ = " " +G$: REM  1 BLANK
  30. 240 N$ = " ": GOSUB 650: REM  1 BLANK
  31. 250  VTAB 19: HTAB 1: PRINT : PRINT G$: PRINT "ENTER LINE# ";II;"/";LL;"  ";: PRINT N$;: GET X$:X =  ASC(X$)
  32. 260 SZ =  LEN(N$): IF X = 13  THEN 350: REM   SIZE & RETURN 
  33. 270  IF X = 8  AND SZ >1  THEN N$ =  LEFT$(N$, LEN(N$) -1): GOSUB 650: GOTO 250: REM  BACKSPACE 
  34. 280  IF X = 8  AND II = 1  THEN 250
  35. 290  IF X = 127  THEN N$ =  LEFT$(N$, LEN(N$) -1): GOSUB 650: GOTO 250: REM   LEFT ARROW 
  36. 300  IF X = 44  THEN 250: REM  COMMA CONTROL
  37. 310  IF X <32  THEN 250: REM  CONTROL FOR LOW ASCII CHARACTERS
  38. 320  IF X =  >123  THEN 250: REM  CONTROL FOR {,|,},~ AND HIGHER
  39. 330  IF X >90  AND X <96  THEN 250: REM CONTROL FOR [,\,],^,_ 
  40. 340 N$ = N$ +X$: GOTO 250: REM  BUILD N$
  41. 350 N$ = N$ +"-": REM  ADD DUMMY END
  42. 360 L$ = N$: FOR J = 1 TO  LEN(L$):CH$ =  MID$ (L$,J,1): IF  ASC(CH$) >96  AND  ASC(CH$) <123  THEN N$ =  LEFT$(N$,J -1) + CHR$( ASC( MID$ (N$,J,1)) -32) + MID$ (N$,J +1, LEN(L$)): GOTO 360
  43. 370  NEXT J: REM  LOWER CASE TO UPPER
  44. 380 K$ = N$
  45. 390 N$ =  RIGHT$(N$, LEN(K$) -1): IF  LEN(N$) >1  THEN N$ =  LEFT$(N$, LEN(K$) -2)
  46. 400 ZN =  LEN(N$): IF ZN = 8  THEN 430
  47. 410 NZ =  INT((8 -ZN)/2): FOR XS = 1 TO NZ:N$ = " " +N$: NEXT XS: REM  PACK N$
  48. 420  IF  LEN(N$) >9  THEN  GOSUB 650: PRINT  CHR$(7): PRINT " WORD TOO LONG- MAX 8 LETTERS... HIT <RETURN>": GET R$: GOTO 240
  49. 430 NN$(II) = N$:N$ = "": PRINT : NEXT 
  50. 440  HOME : FOR P = 1 TO 7: PRINT : NEXT 
  51. 450  IF FL = 1  THEN LL = 1:NN$(1) = "SCROLLER": VTAB 24
  52. 460  FOR QQ = 1 TO LL: REM  MAIN LOOP
  53. 470 N$ = NN$(QQ)
  54. 480 LN =  LEN(N$): FOR I = 1 TO LN
  55. 490 W =  ASC( MID$ (N$,I,1)) -31
  56. 500  IF W = 1  THEN K$(W,1) = " "
  57. 510  IF K$(W,1) =  MID$ (N$,I,1)  THEN 530
  58. 520 K$(W,1) = "-"
  59. 530  FOR X = 1 TO 11:P$(X,I) = K$(W,X): NEXT X: NEXT I: REM  TURN ARRAY AROUND
  60. 540  IF FL = 1  THEN  HOME : VTAB 24
  61. 550  FOR Z = 2 TO 11: PRINT "    ";: FOR ZZ = 1 TO LN: PRINT F$( VAL(P$(Z,ZZ)));: NEXT : PRINT : NEXT : REM  4 BLANKS - PRINT ARRAYS
  62. 560  IF FL = 1  THEN FL = 0: FOR TT = 1 TO 4: PRINT : NEXT : NEXT QQ: RETURN 
  63. 570  PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : NEXT QQ: FOR T = 1 TO 2000: NEXT 
  64. 580 ND =  PEEK( -16384): IF ND >128  THEN 610
  65. 590  REM  WAIT FOR A KEYPRESS AND THEN CLEAR KEYBOARD STROBE
  66. 600  POKE  -16368,0: GOTO 440
  67. 610  POKE  -16368,0: VTAB 24: HTAB 27: PRINT "QUIT SCROLLER NOW ? (Y/N)  ";: GET ZZ$: IF ZZ$ = "Y"  OR ZZ$ = "y"  THEN  HOME : GOTO 630
  68. 620  GOTO 440
  69. 630  VTAB 3: HTAB 27: PRINT " ANOTHER MESSAGE ? (Y/N) ";: GET ZZ$: IF ZZ$ = "Y"  OR ZZ$ = "y"  THEN  PRINT : GOTO 90
  70. 640  HOME : END 
  71. 650 : VTAB 15: CALL  -958: RETURN : REM  CLEAR SCREEN FROM CURSOR TO END
  72. 660 F$(0) = "         ": REM   9 BLANKS (B), NO ASTERISKS (*)- TOTAL B'S + *'S MUST BE 9
  73. 670 F$(1) = "   ***   ": REM 3B,3*,3B  
  74. 680 F$(2) = "  *****  ": REM 2B,5*,2B 
  75. 690 F$(3) = " **   ** ": REM  1B,2*,3B,2*,1B
  76. 700 F$(4) = " ******* ": REM  1B,7*,1B
  77. 710 F$(5) = " **  **  ": REM  1B,2*,2B,2*,2B
  78. 720 F$(6) = " *****   ": REM  1B,5*,3B
  79. 730 F$(7) = " **      ": REM  1B,2*,6B
  80. 740 F$(8) = " ******  ": REM  1B,6*,2B
  81. 750 F$(9) = " **  *** ": REM  1B,2*,2B,3*,1B
  82. 760 F$(10) = "    **   ": REM  4B,2*,3B
  83. 770 F$(11) = " ** **   ": REM  1B,2*,1B,2*,3B
  84. 780 F$(12) = " ****  * ": REM  1B,4*,2B,1*,1B
  85. 790 F$(13) = " ** ***  ": REM  1B,2*,1B,3*,2B
  86. 800 F$(14) = " ****    ": REM  1B,4*,4B
  87. 810 F$(15) = " *** *** ": REM  1B,3*,1B,3*,1B
  88. 820 F$(16) = " ** * ** ": REM  1B,2*,1B,1*,1B,2*,1B
  89. 830 F$(17) = " ***  ** ": REM  1B,3*,2B,2*,1B
  90. 840 F$(18) = " **** ** ": REM  1B,4*,1B,2*,1B
  91. 850 F$(19) = " ** **** ": REM  1B,2*,1B,4*,1B
  92. 860 F$(20) = "       * ": REM  7B,1*,1B
  93. 870 F$(21) = "      ** ": REM  6B,2*,1B
  94. 880 F$(22) = "  ** **  ": REM  2B,2*,1B,2*,2B
  95. 890 F$(23) = "    *    ": REM  4B,1*,4B
  96. 900 F$(24) = "     **  ": REM  5B,2*,2B
  97. 910 F$(25) = "  **     ": REM  2B,2*,5B
  98. 920 F$(26) = "   *  *  ": REM  3B,1*,2B,1*,2B
  99. 930 F$(27) = "   * *   ": REM  3B,1*,1B,1*,3B
  100. 940 F$(28) = "  **   * ": REM  2B,2*,3B,1*,1B
  101. 950 F$(29) = "  **  *  ": REM  2B,2*,2B,1*,2B
  102. 960 F$(30) = "     *   ": REM  5B,1*,3B
  103. 970 F$(31) = "   *     ": REM  3B,1*,5B
  104. 980 F$(32) = "  *  **  ": REM  2B,1*,2B,2*,2B
  105. 990 F$(33) = " *   **  ": REM  1B,1*,3B,2*,2B
  106. 1000 F$(34) = " *  *    ": REM  1B,1*,2B,1*,4B
  107. 1010 F$(35) = "    *  * ": REM  4B,1*,2B,1*,1B
  108. 1020 F$(36) = "  *   *  ": REM  2B,1*,3B,1*,2B
  109. 1030 F$(37) = "  ***    ": REM  2B,3*,4B
  110. 1040 F$(38) = " **  * * ": REM  1B,2*,2B,1*,1B,1*,1B
  111. 1050 F$(39) = " **   *  ": REM  1B,2*,3B,1*,2B
  112. 1060 F$(40) = "  ****   ": REM  2B,4*,3B
  113. 1070 F$(41) = "    ***  ": REM  4B,3*,2B
  114. 1080 F$(42) = "   **    ": REM  3B,2*,4B
  115. 1090 F$(43) = " *  *  * ": REM  1B,1*,2B,1*,2B,1*,1B
  116. 1100 F$(44) = "  * * *  ": REM  2B,1*,1B,1*,1B,1*,2B
  117. 1110 F$(45) = " **    * ": REM  1B,2*,4B,1*,1B
  118. 1120 F$(46) = "     *** ": REM  5B,3*,1B
  119. 1130 F$(47) = " ***     ": REM  1B,3*,5B
  120. 1140 F$(48) = " *  **   ": REM  1B,1*,2B,2*,3B
  121. 1150 F$(49) = " *       ": REM  1B,1*,7B
  122. 1160 F$(50) = " *     * ": REM  1B,1*,5B,1*,1B
  123. 1170 F$(51) = " * *** * ": REM  1B,1*,1B,3*,1B,1*,1B
  124. 1180 F$(52) = " * * * * ": REM  1B,1*,1B,1*,1B,1*,1B,1*,1B
  125. 1190 F$(53) = " * ***** ": REM  1B,1*,1B,5*,1B
  126. 1200  RETURN : REM  FIRST ENTRY BELOW IS SPACE BAR
  127. 1210  DATA   ,0,0,0,0,0,0,0,0,0,0
  128. 1220  DATA  !,1,1,1,1,1,1,23,0,23,0
  129. 1230  REM  . APPEARS INSTEAD OF "
  130. 1240  DATA  .,26,22,0,0,0,0,0,0,0,0
  131. 1250  DATA  #,0,27,27,4,27,4,27,27,0,0
  132. 1260  DATA  $,23,4,34,34,4,35,35,4,23,0
  133. 1270  DATA  %,0,28,29,30,23,31,32,33,0,0
  134. 1280  DATA  &,2,36,22,1,37,38,39,38,40,0
  135. 1290  DATA  ',30,23,0,0,0,0,0,0,0,0
  136. 1300  DATA  (,24,41,42,25,25,25,42,41,24,0
  137. 1310  DATA  ),25,37,10,24,24,24,10,37,25,0
  138. 1320  DATA  *,0,43,44,1,4,1,44,43,0,0
  139. 1330  DATA  +,1,1,1,4,4,4,1,1,1,0
  140. 1340  REM  . APPEARS INSTEAD OF ,
  141. 1350  DATA  .,0,0,0,0,0,10,10,23,31,0
  142. 1360  DATA  -,0,0,0,2,0,0,0,0,0,0
  143. 1370  DATA  .,0,0,0,0,0,0,10,10,0,0
  144. 1380  DATA  /,20,21,24,10,42,25,7,49,0,0
  145. 1390  DATA  0,2,4,3,3,3,3,3,4,2,0
  146. 1400  DATA  1,37,1,1,1,1,1,1,1,40,0
  147. 1410  DATA  2,4,4,3,46,41,1,37,4,4,0
  148. 1420  DATA  3,4,4,21,21,40,21,21,4,4,0
  149. 1430  DATA  4,3,3,3,4,4,21,21,21,21,0
  150. 1440  DATA  5,4,4,7,4,4,21,21,4,4,0
  151. 1450  DATA  6,4,4,7,7,4,4,3,4,4,0
  152. 1460  DATA  7,4,4,33,24,10,10,42,42,42,0
  153. 1470  DATA  8,2,4,3,4,1,4,3,4,2,0
  154. 1480  DATA  9,2,4,3,4,4,21,21,4,4,0
  155. 1490  REM  . APPEARS INSTEAD OF :
  156. 1500  DATA  .,0,23,23,0,0,23,23,0,0,0
  157. 1510  DATA  ;,0,23,23,0,0,23,23,31,0,0
  158. 1520  DATA  <,21,46,41,1,37,1,41,46,21,0
  159. 1530  DATA  =,0,0,2,0,0,2,0,0,0,0
  160. 1540  DATA  >,25,37,1,41,46,41,1,37,25,0
  161. 1550  DATA  ?,4,4,3,46,41,1,42,0,42,0
  162. 1560  DATA  @,4,50,51,52,52,52,53,49,4,0
  163. 1570  DATA  A,1,2,3,3,4,4,3,3,3,0
  164. 1580  DATA  B,4,3,3,5,6,5,3,3,4,0
  165. 1590  DATA  C,8,8,7,7,7,7,7,4,4,0
  166. 1600  DATA  D,6,8,9,3,3,3,9,8,6,0
  167. 1610  DATA  E,4,4,7,7,6,7,7,4,4,0
  168. 1620  DATA  F,4,4,7,7,6,7,7,7,7,0
  169. 1630  DATA  G,4,4,7,7,7,9,3,4,4,0
  170. 1640  DATA  H,3,3,3,4,4,3,3,3,3,0
  171. 1650  DATA  I,4,4,1,1,1,1,1,4,4,0
  172. 1660  DATA  J,4,4,10,10,10,11,11,6,6,0
  173. 1670  DATA  K,3,9,13,6,14,6,13,9,3,0
  174. 1680  DATA  L,7,7,7,7,7,7,7,4,4,0
  175. 1690  DATA  M,3,15,4,16,16,3,3,3,3,0
  176. 1700  DATA  N,3,17,18,4,19,9,3,3,3,0
  177. 1710  DATA  O,4,4,3,3,3,3,3,4,4,0
  178. 1720  DATA  P,4,4,3,4,4,7,7,7,7,0
  179. 1730  DATA  Q,4,4,3,3,3,3,9,4,4,20
  180. 1740  DATA  R,4,4,3,3,4,6,13,9,3,0
  181. 1750  DATA  S,4,4,7,4,4,21,21,4,4,0
  182. 1760  DATA  T,4,4,1,1,1,1,1,1,1,0
  183. 1770  DATA  U,3,3,3,3,3,3,3,4,4,0
  184. 1780  DATA  V,3,3,3,3,3,3,22,1,23,0
  185. 1790  DATA  W,3,3,3,3,16,16,4,15,3,0
  186. 1800  DATA  X,3,15,2,1,23,1,2,15,3,0
  187. 1810  DATA  Y,3,15,22,1,1,1,1,1,1,0
  188. 1820  DATA  Z,4,4,24,10,1,25,7,4,4,0