home *** CD-ROM | disk | FTP | other *** search
/ Commodore Free 36 / Commodore_Free_Issue_36_2010_Commodore_Computer_Club.d64 / c16 < prev    next >
Text File  |  2023-02-26  |  9KB  |  371 lines

  1. u
  2.  
  3.  
  4. *************************************
  5.      Commodore 16 Programming
  6.           John Fielden
  7. *************************************
  8.  
  9. Pools
  10.  
  11. lines 10 to 40 pay homage to The
  12. Master spare time programmer!
  13.  
  14. 50 states the obvious.  (It's become
  15. so obvious now that I nearly removed
  16. all occurrences and resubmitted! -
  17. enough of the silliness.)
  18.  
  19. 60 no.11 relates to the numbers that
  20. we used for err... The pools. (So
  21. clearly we were allowed 1 x on the
  22. form!!)
  23.  
  24. 70 Generate random number between 1
  25. and 52, without the plus 1 zero comes
  26. up.  Never fifty-three though -
  27. strange.
  28.  
  29. 80 maketh thy would be prophecy oh!
  30. soulless machine.  (With absolutely
  31. no consideration as to if it comes
  32. true!)
  33.  
  34. 90 go round again until the "to"in 60
  35.  
  36. 100 There was a somewhere on one of
  37. the commodore related sites as to
  38. which was the best command.  I have
  39. to say, in my view it's this one.
  40. Simply because the better the
  41. program, the more satisfying the end
  42. is.
  43.  
  44. The Master' teaching
  45.  
  46. I can only echo memories of learning
  47. in the early days.  (A simpler time)
  48. How do we stop repetitive occurrences
  49. of the same number?  I was giving up
  50. by the time the TV packed in.
  51. Requires what was a new term.  The
  52. Dim statement.55 DimN(52) : REM must
  53. relate to line 70, and equal the max.
  54. range. While the last instruction
  55. could go anywhere before the for next
  56. loop.  The order of the next two
  57. statements is critical to the correct
  58. running of the program. let n(x)=1
  59. ifn(x)=1 then go back and choose
  60. another. It should be easy to get the
  61. order even for beginners. Thanks
  62. again to Roy for walking me through
  63. it all those years ago.  Without his
  64. help, and the editors kindness these
  65. c16/plus4 pages might not have
  66. happened.
  67.  
  68. Escape to Window
  69.  
  70. Another thing I remember getting
  71. nowhere with at the time was a window
  72. within a window.  <PRINT" ESC  &
  73. <related key>"> didn't work.  Having
  74. long since given up on it!
  75. When the answer came I decided to use
  76. it to try to demonstrate the question
  77. above.  It goes  further by allowing
  78. user input to change the numbers.
  79. ("I wonder if I'll win the lottery
  80. that way?????")
  81.  
  82. from 150  Highlights different ways
  83. of storing numbers. and hints why/
  84. allows experiment to show why the
  85. extra dimension is necessary.
  86. Otherwise self explanatory as it is
  87. similar to above in it's main.
  88.  
  89. ("How do mean it doesn't! ??! ...)
  90.  
  91. Shush!
  92.  
  93. ... And Shush 2! intend to stop Sound
  94. in its tracks.  Either build up a
  95. long time in the former before
  96. pressing.  This is less convincing
  97. than the latter where the length of
  98. the Sound is longer. As a back up. On
  99. Shush two. If a normal key press
  100. doesn't work. Press f1 key to switch
  101. off the volume.
  102.  
  103. This short program was devised when
  104. trying to work out how to stop what a
  105. musician would call 'The slurring of
  106. notes'.  My limited experience of
  107. music reading gives insight that both
  108. separate (un-slurred), and "tied" or
  109. slurred.  Do have their  place.  More
  110. Later.
  111.  
  112. Sound Data
  113.  
  114. Plays the scale as written in The c16
  115. Manual.  For some reason they forgot
  116. the flats and Sharps. Makes good use
  117. of The commands READ, and DATA
  118. statements to avoid having to type in
  119. 'SOUND1,note,duration'.
  120.  
  121. rndsong
  122.  
  123. There is scope for improvement in
  124. this program. A programmer could add
  125. a rnd duration, and even whether
  126. notes are to be tied. (requires more
  127. rnd statements.  Have a go if you
  128. wish or wait for its submission to
  129. this excellent magazine... And we'll
  130. save the line by line account for
  131. then! This time the DATA statements
  132. are for storing so that the rnd
  133. generator can play the notes more
  134. quickly, and without falling foul of
  135. RESTORE and DATA's short comings. It
  136. goes further by actually storing the
  137. music in RAM for replay.
  138.  
  139. musicprogrammer16
  140.  
  141. Type in your own commands after line
  142. 2000. (Note:  May require alteration
  143. elsewhere in the program.  It is
  144. currently set to loop.  As I wanted
  145. to test whether the computer has a
  146. set maximum that the command:
  147. RESTORE can be used. (I can't
  148. remember whether I've heard this or
  149. read it.  But there is a way round it
  150. in any case.)
  151.  
  152. The manual states a mathematical
  153. formula to derive even more notes.
  154. -even out of range of human hearing!
  155. And just look in Prof. Andrew Colin'
  156. Introduction to programming part1 for
  157. the sharps.  Which I am sure you all
  158. have.
  159.  
  160. Artificial Intelligence is involved
  161. here!  The computer reads the
  162. program, but instead of blindly
  163. playing the notes checks what it is
  164. to do with them.  (i.e. tied, untied,
  165. change duration, reduce volume etc.)
  166. Quite a clever program.  But I've
  167. left it as a copy and complete task.
  168. (hence,  again! No line by line write
  169. up... yet?)
  170.  
  171. Happy Prog'ing
  172.  
  173. Listing of: EscToWindow.prg
  174.  
  175. 10 REM *ESCAPE TO WINDOW*
  176. 20 B=16:DIMBO(B):DIMO(B)
  177. 30 PRINT"{SHIFT-+}home{SHIFT--}{SHIFT-+}home{SHIFT--}{SHIFT-+}clr{SHIFT--} ESCAPE TO 
  178.  WINDOW{SHIFT-+}down{SHIFT--}"
  179. 40 PRINT"PROGRAM DESIGN
  180.  (C) JOHN FIELDEN{SHIFT-+}down{SHIFT--}"
  181. 50 FORJ=1TO20
  182. 60 X=INT(RND(1)*B)+1
  183. 70 PRINTJ;X
  184. 80 NEXTJ
  185. 90 PRINT"{SHIFT-+}home{SHIFT--}":CHAR1,12,6,
  186.  CHR$(27)+CHR$(84)
  187. 100 FORJ=1TOB
  188. 110 X=INT(RND(1)*B)+1
  189. 120 IFX=0ORBO(X)=XTHEN110
  190. 130 PRINT;J,X:BO(X)=X:O(J)=X
  191. 140 NEXTJ
  192. 150 INPUT"CHANGE";J%
  193. 160 IFJ%<1 ORJ%>16THEN150
  194. 170 INPUT" TO ";X%
  195. 180 O(J%)=X%
  196. 190 FORT=1TOB
  197. 200 PRINTT;"O ";O(T);"BO ";BO(T)
  198. 210 NEXTT
  199.  
  200. Listing of: musicprogrammer16b.prg
  201.  
  202. 10 REM *PROG. YOUR OWN TUNE*
  203. 20 REM *(C) JOHN FIELDEN 2009*
  204. 30 SCNCLR:VOL8:VO%=8
  205. 40 DIM D(28,1):N=65:U=99:C=32
  206. 50 FORJ=1TO28
  207. 60 READZ,A
  208. 70 D(J,0)=A:D(J,1)=N
  209. 80 N=N+1:IFN>71THENN=65
  210. 90 NEXTJ
  211. 95 REM RESTORE:FORT=1TO28:
  212.  READA,B:NEXTT
  213. 100 FORL=1 TOU
  214. 110 READA,B :REM*VOICE,NOTE,DURATION*
  215. 120 READE :REM *INSTRUCTIONS*
  216. 130 IF E=0THENVOLVO%:SOUNDA,D(B,0),C
  217. 140 IF E>0THEN500
  218. 200 NEXTL
  219. 490 END
  220. 500 REM *SPECIAL NOTES ETC.*
  221. 510 IFE=1THENEND
  222. 520 IFE=2THENSOUNDA,D(L,0),0
  223. 530 IFE=3THENFORR=1TOC:
  224.  PRINT"{SHIFT-+}home{SHIFT--}";R,C:NEXTR :
  225.   FORR=1TO25 :NEXTR
  226. 540 IFE=4THENC=2
  227. 550 IFE=5THENC=4
  228. 560 IFE=6THENC=8
  229. 570 IFE=7THENC=16
  230. 580 IFE=8THENC=32
  231. 590 IFE=9THENC=64
  232. 600 IFE=10THENC=128
  233. 640 IFE=30ANDP<30THENFORJ=1TO2500/
  234.  INT(P+1):NEXTJ:PRINT"HELLO":
  235.  P=P+1:RESTORE2000
  236. 650 IFE>19 AND E <29 THENVO%=E-20:
  237.  NE=0:GOTO130
  238. 890 IFE>3 AND E <11 THENE=0:GOTO130
  239. 900 GOTO200
  240. 1200 DATA 1,7, 2,118
  241. 1210 REM *BOTTOM C ***TO*** B
  242. 1300 DATA 3,169, 4,262, 5,345,
  243.  6,383,7,453:DATA8,516, 9,571
  244. 1310 REM *MIDDLE C ***TO*** B
  245. 1400 DATA10,596, 11,643, 12,685,13,
  246.  704, 14,739: DATA15,770, 16,798
  247. 1410 REM * TOP C ***TO*** B
  248. 1500 DATA17,810, 18,834, 19,854,20,86
  249.  4,21,881: DATA22,897, 23,911
  250. 1510 REM *V. TOP C ***TO*** G
  251. 1600 DATA24,917, 25,929, 26,939,27,
  252.  944, 28,953
  253. 1990 REM *** ACTUAL MUSIC ***
  254. 2000 DATA1,8,0 ,1,10,0, 1,9,0,1,28,3,
  255. 1,7,0, 1,8,0, 1,28,3, 1,28,30
  256.  
  257. Listing of: pools.prg
  258.  
  259. 10 REM ************************
  260. 20 REM *(C) ROY ... D.E.R. MAN*
  261. 30 REM *AS FAR AS I KNOW! *
  262. 40 REM ************************
  263. 50 PRINT"{SHIFT-+}clr{SHIFT--} POOLS"
  264. 60 FORT=1TO11
  265. 70 X=INT(RND(1)*52)+1
  266. 80 PRINTX
  267. 90 NEXTT
  268. 100 END
  269.  
  270. Listing of: rndsong.prg
  271.  
  272. 4 REM K=65:FORJ=1TO4:K=K+1:E$(J)=
  273.  CHR$(K):PRINTE$(J):NEXTJ
  274. 10 REM SOUND: *RANDOM SONG*
  275. 20 VOL8 :LP=99:SCNCLR:TT=35
  276. 30 DIM D(28): DIM D$(28):DIM NO%(28)
  277. 35 DIM PL(LP,3): JF=64
  278. 40 X=65
  279. 50 FORJ=1TO28
  280. 70 IFX>71THENX=65
  281. 80 READA
  282. 90 D(J)=A: D$(J)=CHR$(X):NO%(J)=X
  283. 93 X=X+1
  284. 95 NEXTJ
  285. 200 SCNCLR : REM (RANDOM NOTES)
  286. 210 CHAR1,0,0,"Q TO END PLAYING":
  287.  PRINT
  288. 300 FORL=1TOJF
  289. 305 PL(L,3)=TT
  290. 310 GETA$
  291. 400 X=INT(RND(1)*28)
  292. 500 IFX=0THEN400
  293. 510 PL(L,1)=X:PL(L,2)=NO%(X)
  294. 600 SOUND1,D(X),PL(L,3)
  295. 700 PRINTL, X,D(X),D$(X)
  296. 800 PL(L,0)=D(X)
  297. 810 IFA$="Q"THENA%=L:GOTO910
  298. 900 NEXTL
  299. 910 REM PLAY IT AGAIN SAM?
  300. 920 PRINT" KEY 'A' TO LISTEN AGAIN"
  301. 930 PRINT" KEY 'B' FOR NEW RANDOM
  302.   LEAF"
  303. 940 PRINT" ANYTHING ELSE TO EXIT"
  304. 950 GETA$:IFA$=""THEN950
  305. 960 IFA$="A"THEN990
  306. 970 IFA$="B"THEN200
  307. 980 GOTO1090
  308. 990 SCNCLR : REM REPLAY MEMORY
  309. 995 PRINT"REPLAYING, PLEASE WAIT!"
  310. 1000 FORJ=1TOJF
  311. 1010 SOUND1,PL(J,0),PL(J,3)
  312. 1015 PRINTJ;" ";PL(J,1);" ";PL(J,0);
  313.  "";CHR$(PL(J,2))
  314. 1017 IFA%=JTHEN910
  315. 1020 NEXT J
  316. 1030 GOTO910
  317. 1090 END
  318. 1100 RESTORE: REM DATA
  319. 1200 DATA 7,118
  320. 1300 DATA169,262,345,383,453:
  321.  DATA516,571
  322. 1400 DATA596,643,685,704,739:
  323.  DATA770,798
  324. 1500 DATA810,834,854,864,881:
  325.  DATA897,911
  326. 1600 DATA917,929,939,944,953
  327.  
  328. Listing of: shush.prg
  329.  
  330. 10 REM SHUSH!
  331. 20 SCNCLR:VOL8
  332. 25 REM SOUND1,7,7000
  333. 30 PRINT"TO GET SILENCE PRESS A KEY!"
  334. 40 GETA$
  335. 50 SOUND1,7,20
  336. 60 IFA$=""THEN40
  337. 70 SOUND1,7,0
  338.  
  339. Listing of: shush2.prg
  340.  
  341. 6 KEY1,"VOL0"+CHR$(13)
  342. 10 REM SHUSH! !
  343. 20 SCNCLR:VOL8
  344. 25 REM SOUND1,7,20
  345. 30 PRINT"TO GET SILENCE PRESS A KEY!"
  346. 40 REM GETA$
  347. 50 SOUND1,7,7000
  348. 60 GETKEYA$:REM IFA$=""THEN40
  349. 70 SOUND1,7,0
  350.  
  351. Listing of: sounddata.prg
  352.  
  353. 10 REM SOUND
  354. 20 VOL8
  355. 30 FORJ=1TO28
  356. 40 READA
  357. 50 SOUND1,A,35
  358. 90 NEXTJ
  359. 100 END
  360. 2000 RESTORE: REM DATA
  361. 2010 DATA 7,118
  362. 2020 DATA169,262,345,383,453:
  363.  DATA516,571
  364. 2030 DATA596,643,685,704,739:
  365.  DATA770,798
  366. 2040 DATA810,834,854,864,881:
  367.  DATA897,911
  368. 2050 DATA917,929,939,944,953
  369.  
  370. =====================================
  371.