home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / club100 / mus / organ.ba < prev    next >
Text File  |  2006-10-19  |  3KB  |  54 lines

  1. 0 'ORGAN.BA - BY MARK LUTTON               CLUB 100 LIBRARY - 415/939-1246 BBS,    937-5039 NEWSLETTER, 932-8856 VOICE
  2. 1 'Organ -- slow Basic version
  3. 2 ' Public Domain, by Mark Lutton, Delphi: MARKLUTTON
  4. 3 '  12/8/84
  5. 4 'To understand this, you have to
  6. 5 'read "Hidden Powers of the TRS-80
  7. 6 'Model 100" by Christopher L. Morgan
  8. 7 '(1984, The Waite Group).
  9. 8 'Note:  There is a delay after you hit a key because of the slowness
  10. 9 'of the keyboard input routine.   Someday I will rewrite this in
  11. 10 'machine language and make it faster.
  12. 11 'Think of this as an experimental version.
  13. 12 'Also note that this plays around with the innards of the machine.
  14. 13 'Be careful if you fiddle with this, and save all your
  15. 14 'important files first!
  16. 15 ' set up data
  17. 16 DEFINT A-Z:DIM S(1,71):FOR I=0 TO 71:READ S(0,I):S(1,I)=S(0,I)/4:NEXT I:CLS:PRINT "                 Organ":PRINT "       (Hit shift-break to quit)":PRINT "     z - / lower octave white keys":PRINT "     a - ; lower octave black keys"
  18. 17 PRINT "     q - [ next octave white keys":PRINT "     1 - + black keys":PRINT "     <SHIFT> jumps up 2 octaves.":CALL 30300:'bg task off
  19. 18 'get key pressed
  20. 19 B0=A0:B1=A1:B2=A2:B3=A3:B4=A4:B5=A5:B6=A6:B7=A7:B8=A8:X=INP(186):OUT 186,X OR 1:OUT 185,254:A0=INP(232):OUT 185,253:A1=INP(232):OUT 185,251:A2=INP(232):OUT 185,247:A3=INP(232):OUT 185,239:A4=INP(232):OUT 185,223:A5=INP(232):OUT 185,191:A6=INP(232)
  21. 20 OUT 185,127:A7=INP(232):X=INP(186):OUT 185,255:OUT 186,X AND 254:A8=INP(232):'any change?
  22. 21 IF A0=B0 AND A1=B1 AND A2=B2 AND A3=B3 AND A4=B4 AND A5=B5 AND A6=B6 AND A7=B7 AND A8=B8 THEN 19
  23. 22 'break pressed?
  24. 23 IF A8 = 126 THEN 49
  25. 24 'shift, caps lock?
  26. 25 IF (A8 AND 33)=33 THEN S1=0:ELSE S1=1
  27. 26 'which key?
  28. 27 K=0:IF A0<>255 THEN A9=A0:GOTO 37
  29. 28 K=8:IF A1<>255 THEN A9=A1:GOTO 37
  30. 29 K=16:IF A2<>255 THEN A9=A2:GOTO 37
  31. 30 K=24:IF A3<>255 THEN A9=A3:GOTO 37
  32. 31 K=32:IF A4<>255 THEN A9=A4:GOTO 37
  33. 32 K=40:IF A5<>255 THEN A9=A5:GOTO 37
  34. 33 K=48:IF A6<>255 THEN A9=A6:GOTO 37
  35. 34 K=56:IF A7<>255 THEN A9=A7:GOTO 37
  36. 35 IF (A8 AND 2) =2THEN K=-1:ELSE K=65
  37. 36 GOTO 45
  38. 37 IFA9AND128THEN38:ELSEK=K+7:GOTO45
  39. 38 IFA9AND64THEN39:ELSEK=K+6:GOTO 45
  40. 39 IFA9AND32THEN40:ELSEK=K+5:GOTO 45
  41. 40 IFA9AND16THEN41:ELSEK=K+4:GOTO 45
  42. 41 IFA9AND8THEN42:ELSEK=K+3:GOTO 45
  43. 42 IFA9AND4THEN43:ELSEK=K+2:GOTO 45
  44. 43 IFA9AND2THEN45:ELSEK=K+1:GOTO 45
  45. 44 'got key number, now make sound
  46. 45 IF K>-1 THEN 47:
  47. 46 OUT 186,(INP(186)AND223)OR 4:GOTO 19
  48. 47 D=S(S1,K):IF D=0 THEN 46
  49. 48 OUT 188,(D MOD 256):OUT 189,((D/256) AND 127) OR 64:OUT 184,195:OUT 186,(INP(186) AND 219) OR 32:GOTO 19
  50. 49 CLS:PRINT "Goodbye.";'bg task on
  51. 50 IF INKEY$ <> "" THEN 50:'flush buffer
  52. 51 END:DATA 9394,8368,7456,7032,6269,5586,4976,4433:DATA 9952,8866,7900,0,6642,5918,5272,0:DATA 4697,4184,3728,3516,3134,2793,2488,2348:DATA 2092,1864,1758,3950,0,4697,4184,3728:DATA 4976,4433,3950,0,3321,2959,2636,0:DATA 2216,1975,0,1660,0,0,0,0
  53. 52 DATA 0,1567,11172,12538,0,0,0,0:DATA 0,0,0,0,0,0,0,0:DATA 0,10544,0,0,0,0,0,0:'end of ORGAN.
  54.