home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
club100
/
mus
/
organ.ba
< prev
next >
Wrap
Text File
|
2006-10-19
|
3KB
|
54 lines
0 'ORGAN.BA - BY MARK LUTTON CLUB 100 LIBRARY - 415/939-1246 BBS, 937-5039 NEWSLETTER, 932-8856 VOICE
1 'Organ -- slow Basic version
2 ' Public Domain, by Mark Lutton, Delphi: MARKLUTTON
3 ' 12/8/84
4 'To understand this, you have to
5 'read "Hidden Powers of the TRS-80
6 'Model 100" by Christopher L. Morgan
7 '(1984, The Waite Group).
8 'Note: There is a delay after you hit a key because of the slowness
9 'of the keyboard input routine. Someday I will rewrite this in
10 'machine language and make it faster.
11 'Think of this as an experimental version.
12 'Also note that this plays around with the innards of the machine.
13 'Be careful if you fiddle with this, and save all your
14 'important files first!
15 ' set up data
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"
17 PRINT " q - [ next octave white keys":PRINT " 1 - + black keys":PRINT " <SHIFT> jumps up 2 octaves.":CALL 30300:'bg task off
18 'get key pressed
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)
20 OUT 185,127:A7=INP(232):X=INP(186):OUT 185,255:OUT 186,X AND 254:A8=INP(232):'any change?
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
22 'break pressed?
23 IF A8 = 126 THEN 49
24 'shift, caps lock?
25 IF (A8 AND 33)=33 THEN S1=0:ELSE S1=1
26 'which key?
27 K=0:IF A0<>255 THEN A9=A0:GOTO 37
28 K=8:IF A1<>255 THEN A9=A1:GOTO 37
29 K=16:IF A2<>255 THEN A9=A2:GOTO 37
30 K=24:IF A3<>255 THEN A9=A3:GOTO 37
31 K=32:IF A4<>255 THEN A9=A4:GOTO 37
32 K=40:IF A5<>255 THEN A9=A5:GOTO 37
33 K=48:IF A6<>255 THEN A9=A6:GOTO 37
34 K=56:IF A7<>255 THEN A9=A7:GOTO 37
35 IF (A8 AND 2) =2THEN K=-1:ELSE K=65
36 GOTO 45
37 IFA9AND128THEN38:ELSEK=K+7:GOTO45
38 IFA9AND64THEN39:ELSEK=K+6:GOTO 45
39 IFA9AND32THEN40:ELSEK=K+5:GOTO 45
40 IFA9AND16THEN41:ELSEK=K+4:GOTO 45
41 IFA9AND8THEN42:ELSEK=K+3:GOTO 45
42 IFA9AND4THEN43:ELSEK=K+2:GOTO 45
43 IFA9AND2THEN45:ELSEK=K+1:GOTO 45
44 'got key number, now make sound
45 IF K>-1 THEN 47:
46 OUT 186,(INP(186)AND223)OR 4:GOTO 19
47 D=S(S1,K):IF D=0 THEN 46
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
49 CLS:PRINT "Goodbye.";'bg task on
50 IF INKEY$ <> "" THEN 50:'flush buffer
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
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.