home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib38b.dsk / DYN.DISPLAYS.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  176 lines

  1. 10  REM  *************************
  2. 20  REM  * DYN.DISPLAYS          *
  3. 30  REM  * BY GEORGE TYLUTKI     *
  4. 40  REM  * COPYRIGHT (C) 1990    *
  5. 50  REM  * MINDCRAFT PUBL. CORP. *
  6. 60  REM  * CONCORD, MA 01742     *
  7. 70  REM  *************************
  8. 80  REM 
  9. 90  REM  INITIAL MENU
  10. 100  REM 
  11. 110  PRINT  CHR$(21):CC = 190: HOME 
  12. 120  PRINT "POKING DYNAMIC DISPLAYS BY G. TYLUTKI": PRINT "COPYRIGHT(C) 1990 MINDCRAFT PUBL. CORP.": POKE 34,3
  13. 130 S = 1:B = 1:E = 6:SP(1) = 1544:SP(2) = 1800:SP(3) = 1072:SP(4) = 1328:SP(5) = 1584:SP(6) = 1840: POKE  -16368,0
  14. 140  HOME : PRINT 
  15. 150  HTAB 10: PRINT "1--SIMPLE DEMO": PRINT : HTAB 10: PRINT "2--ALMOST AS SIMPLE": PRINT : HTAB 10: PRINT "3--WAVING": PRINT : HTAB 10: PRINT "4--BORDER": PRINT : HTAB 10: PRINT "5--OVER/UNDER": PRINT : HTAB 10: PRINT "6--EXIT"
  16. 160  PRINT : PRINT : PRINT : HTAB 10: PRINT "ENTER CHOICE"
  17. 170  FOR X = B TO E  STEP S: POKE SP(X),CC: GOSUB 320: GOSUB 330: POKE SP(X),160: IF K  THEN 190
  18. 180  NEXT :C = B:B = E:E = C:S =  -S: GOTO 170: REM  CHANGE DIRECTION
  19. 190 P = P -176: IF P <1  OR P >6  THEN 170
  20. 200  HOME 
  21. 210  ON P GOTO 1310,1530,610,1030,800
  22. 220  TEXT : HOME : END 
  23. 230  REM 
  24. 240  REM  ------------------
  25. 250  REM  SHARED SUBROUTINES
  26. 260  REM  ------------------
  27. 270  REM 
  28. 280  HOME : VTAB 20: PRINT "PADDLE 0 CONTROLS SPEED": RETURN 
  29. 290  VTAB 21: PRINT "ESC TO RETURN TO MAIN MENU": RETURN 
  30. 300  VTAB 22: PRINT "19 CHARACTERS MAXIMUM PLEASE ": RETURN 
  31. 310  VTAB 23: PRINT "ANY KEY CHANGES DIRECTION": RETURN 
  32. 320  FOR I = 1 TO 100: NEXT : RETURN 
  33. 330 K = 0:P =  PEEK( -16380): POKE  -16368,0: IF P >127  THEN K = 1: REM  CHECK KEYBOARD FOR KEY PRESS
  34. 340  RETURN 
  35. 350  REM 
  36. 360  REM  -----------------------
  37. 370  REM   CONVERT STRING INTO
  38. 380  REM  INTO NORMAL POKE VALUE
  39. 390  REM  -----------------------
  40. 400  REM 
  41. 410  HTAB 1: VTAB 4: INPUT "ENTER A STRING (UP TO 39 CHARACTERS)    ";S$
  42. 420 L =  LEN(S$): DIM LN(L): IF L >39  OR L = 0  THEN  VTAB 4: HTAB 1: PRINT " ": CALL  -958: GOTO 410
  43. 430  FOR X = 1 TO L:LN(X) =  ASC( MID$ (S$,X,1)) +128: NEXT : RETURN 
  44. 440  REM 
  45. 450  REM  -------------------
  46. 460  REM   CONVERT STRING TO
  47. 470  REM   NORMAL AND INVERSE
  48. 480  REM      POKE VALUES
  49. 490  REM  -------------------
  50. 500  REM 
  51. 510  HTAB 1: VTAB 4: INPUT "ENTER A STRING (UP TO 39 CHARACTERS)    ";S$:L =  LEN(S$): IF L >39  OR L = 0  THEN  VTAB 4: HTAB 1: PRINT " ": CALL  -958: GOTO 510
  52. 520  DIM LN(L),LI(L)
  53. 530  FOR X = 1 TO L:LN(X) =  ASC( MID$ (S$,X,1)) +128:LI(X) =  ASC( MID$ (S$,X,1)) -64
  54. 540  IF LI(X) <0  THEN LI(X) = LI(X) +64: REM  LEAVE CONTROL CHARS AND OTHERS WITH ASCII VALUE<64 ALONE
  55. 550  NEXT : RETURN 
  56. 560  REM 
  57. 570  REM  -------------------
  58. 580  REM   WAVING IN THE AIR
  59. 590  REM  -------------------
  60. 600  REM 
  61. 610  GOSUB 290
  62. 620  DIM LN(20): FOR X = 1 TO 20: READ LN(X): NEXT 
  63. 630  DATA  151,129,150,137,142,135,160,137,142,160,148,136,133,160,129,137,146,160,160,160: REM  ASCII VALUES FOR'WAVING IN THE AIR'
  64. 640  FOR X = 1 TO 17: POKE 1550 +X,LN(X): NEXT 
  65. 650  FOR X = 1 TO 3
  66. 660  POKE 1422 +X,LN(X): POKE 1550 +X,160
  67. 670  GOSUB 320: GOSUB 330: IF P = 155 GOTO 740
  68. 680  NEXT 
  69. 690  FOR X = 1 TO 17
  70. 700  POKE 1422 +X +3,LN(X +3): POKE 1550 +X +3,160: POKE 1550 +X,LN(X): POKE 1422 +X,160
  71. 710  GOSUB 320: GOSUB 330: IF P = 155 GOTO 740
  72. 720  NEXT 
  73. 730  GOTO 650
  74. 740  CLEAR :CC = 190: GOTO 130
  75. 750  REM 
  76. 760  REM  ----------
  77. 770  REM  OVER/UNDER
  78. 780  REM  ----------
  79. 790  REM 
  80. 800  REM 
  81. 810 D = 1192
  82. 820  VTAB 4: HTAB 1: PRINT "OVER OR UNDER? (O/U) ";: GET B$: PRINT B$: IF B$ < >"O"  AND B$ < >"o"  AND B$ < >"U"  AND B$ < >"u"  AND B$ < > CHR$(27)  THEN 820
  83. 830  IF B$ =  CHR$(27)  THEN 140
  84. 840  IF B$ = "O"  THEN D = 1920
  85. 850  HTAB 1: VTAB 4: INPUT "ENTER A STRING (UP TO 19 CHARACTERS)    ";S$: IF  LEN(S$) >19  OR  LEN(S$) = 0  THEN  HTAB 1: VTAB 4: CALL  -958: GOTO 810
  86. 860  GOSUB 420
  87. 870  FOR X = 1 TO L: POKE 1064 +X,LN(X): NEXT 
  88. 880  FOR X = 1 TO L
  89. 890  POKE 1064 +X,160
  90. 900  FOR J = X +1 TO L +X
  91. 910  POKE D +J,LN(X): GOSUB 320: POKE D +J,160
  92. 920  NEXT 
  93. 930  POKE 1064 +X +L +1,LN(X)
  94. 940  NEXT 
  95. 950  CLEAR 
  96. 960  VTAB 20: PRINT "DO IT AGAIN? (Y/N) ";: GET A$: PRINT A$: IF A$ = "Y"  OR A$ = "y"  THEN  VTAB 3: HTAB 1: CALL  -958: GOTO 810
  97. 970  CLEAR :CC = 190: GOTO 130
  98. 980  REM 
  99. 990  REM   ------
  100. 1000  REM  BORDER
  101. 1010  REM  ------
  102. 1020  REM 
  103. 1030  HOME 
  104. 1040  GOSUB 510:A$ = S$
  105. 1050  REM  VTAB 4:INPUT "ENTER A STRING PLEASE ";A$:IF LEN(A$)>40 OR LEN(A$)=0 THEN 1030
  106. 1060  VTAB 14: HTAB (40 - INT( LEN(A$)))/2: PRINT A$
  107. 1070 E(1) = 1615:E(2) = 1743:E(3) = 1871
  108. 1080 LN = 159:LI = 173
  109. 1090  VTAB 19: PRINT "PRESS ANY KEY TO CHANGE BORDER": GOSUB 290
  110. 1100  FOR X = 0 TO 39: POKE 1448 +X,LN: NEXT 
  111. 1110  FOR X = 1 TO 3: POKE E(X),LN: NEXT 
  112. 1120  FOR X = 0 TO 39: POKE 1999 -X,LN: NEXT 
  113. 1130  FOR X = 3 TO 1  STEP  -1: POKE E(X) -39,LN: NEXT 
  114. 1140  FOR X = 0 TO 39: POKE 1448 +X,LI: GOSUB 320: POKE 1448 +X,LN
  115. 1150  POKE 1999 -X,LI: GOSUB 320: POKE 1999 -X,LN
  116. 1160  GOSUB 330: IF K = 1  THEN  GOSUB 1210
  117. 1170  NEXT 
  118. 1180  FOR X = 1 TO 3: POKE E(X),LI: POKE E(X),LN
  119. 1190  POKE E(4 -X) -39,LI: POKE E(4 -X) -39,LN
  120. 1200  GOTO 1140
  121. 1210  IF P = 155  THEN  POP : CLEAR :CC = 190: GOTO 130
  122. 1220  IF P >192  THEN LI = P -192:LN = P: GOTO 1250
  123. 1230  IF P >127  THEN LI = P -128:LN = P: GOTO 1250
  124. 1240  RETURN 
  125. 1250  POP : GOTO 1100
  126. 1260  REM 
  127. 1270  REM  -----------
  128. 1280  REM  SIMPLE DEMO
  129. 1290  REM  -----------
  130. 1300  REM 
  131. 1310  GOSUB 510: GOSUB 310: GOSUB 290
  132. 1320  FOR X = 1 TO L: POKE 1920 +X,LI(X)
  133. 1330  GOSUB 320
  134. 1340  POKE 1920 +X,LN(X)
  135. 1350  NEXT X
  136. 1360  GOSUB 330: IF K GOTO 1380
  137. 1370  GOTO 1320
  138. 1380  IF P = 155 GOTO 1470
  139. 1390  FOR X = L TO 1  STEP  -1: POKE 1920 +X,LI(X)
  140. 1400  GOSUB 320
  141. 1410  POKE 1920 +X,LN(X)
  142. 1420  NEXT X
  143. 1430  GOSUB 330: IF K GOTO 1450
  144. 1440  GOTO 1390
  145. 1450  IF P = 155 GOTO 1470
  146. 1460  GOTO 1320
  147. 1470  CLEAR :CC = 190: GOTO 130
  148. 1480  REM 
  149. 1490  REM  ----------------
  150. 1500  REM  ALMOST AS SIMPLE
  151. 1510  REM  ----------------
  152. 1520  REM 
  153. 1530  GOSUB 510
  154. 1540  GOSUB 290: GOSUB 310
  155. 1550  FOR X = 1 TO L: POKE 1920 +X,LN(X)
  156. 1560  GOSUB 320
  157. 1570  NEXT X
  158. 1580  GOSUB 330: IF K GOTO 1640
  159. 1590  FOR X = 1 TO L: POKE 1920 +X,LI(X)
  160. 1600  GOSUB 320
  161. 1610  NEXT X
  162. 1620  GOSUB 330: IF K GOTO 1640
  163. 1630  GOTO 1550
  164. 1640  IF P = 155 GOTO 1760
  165. 1650  FOR X = L TO 1  STEP  -1: POKE 1920 +X,LN(X)
  166. 1660  GOSUB 320
  167. 1670  NEXT X
  168. 1680  GOSUB 330: IF K GOTO 1740
  169. 1690  FOR X = L TO 1  STEP  -1: POKE 1920 +X,LI(X)
  170. 1700  GOSUB 320
  171. 1710  NEXT X
  172. 1720  GOSUB 330: IF K GOTO 1740
  173. 1730  GOTO 1650
  174. 1740  IF P = 155 GOTO 1760
  175. 1750  GOTO 1550
  176. 1760  CLEAR :CC = 190: GOTO 130