6 Strona
W tym miesiącu laureatem naszego nieustającego konkursu na zagospodarowanie szóstej strony został Andrzej Kidaj z Lublina. Jego program zmienia klawiaturę komputera w instrument muzyczny. Instrument aktywizuje się w dowolnej chwili klawiszem START. Rozkład klawiszy zgodny jest ze standardem CMC. Klawisz OPTION powoduje "uśpienie" instrumentu - można powrócić do przerwanej pracy.
0 REM *--------------------------*
2 REM : MusKey :
4 REM : autor: Andrzej Kidaj :
6 REM : (c) 1992 Tajemnice ATARI :
8 REM *--------------------------*
10 DIM A$(26):A=1536
20 TRAP 60:READ A$:I=1:H=0:TRAP 20
30 N=ASC(A$(I))-48:N=N-7*(N>9):I=I+1
40 X=16*X+N:H=1-H:IF H THEN 30
50 POKE A,X:X=0:A=A+1:GOTO 30
60 X=USR(1536):NEW
1000 DATA 68A907A00AA2064C5CE4AD1FD0
1010 DATA C906F0034C62E4A0FF8CFC02C8
1020 DATA 8C00D2AD1FD0C903F0EDADFC02
1030 DATA C9FFF0F2A9A88D01D2A200BD55
1040 DATA 06CDF202F008E8E8C9FFD0F2F0
1050 DATA D2BD56068D00D2ADF102C900D0
1060 DATA E18D00D24C140617F33EE616D9
1070 DATA 3ACC12C110B63DAD15A2399923
1080 DATA 900188258020790072226C0266
1090 DATA 26602F791E722E6C1A662A6028
1100 DATA 5B1D552D511B4C2B4833440B40
1110 DATA 0D3C3039083532320A2FFF
Dla tych, których ciekawi budowa programu, prezentujemy go poniżej w języku asemblera.
OPT %10101
ORG $600
*- ETYKIETY
CONSOL EQU $D01F
SETVBL EQU $E45C
EXITVBL EQU $E462
AUDF1 EQU $D200
AUDC1 EQU $D201
CH1 EQU $2F2
CH EQU $2FC
KEYDEL EQU $2F1
*- STALE
START EQU $6
OPTION EQU $3
BARWA EQU $A0
GLOS EQU $8
NIC EQU $FF
*- INSTALACJA
PLA
LDA #7
LDY VBL
JMP SETVBL
*- CZY NACISNIETY START?
VBL LDA CONSOL
CMP #START
BEQ P1 TAK!
END JMP EXITVBL
P1 LDY #NIC
STY CH
INY
STY AUDF1
*- CZY NACISNIETY OPTION?
P2 LDA CONSOL
CMP #OPTION
BEQ END TAK!
*- CZY NACISNIETY KLAWISZ?
LDA CH
CMP #NIC
BEQ P2 NIE!
LDA #BARWA+GLOS
STA AUDC1
P3 LDX #0
*- SZUKAJ KODU KLAWISZA
P4 LDA GAMA,X
CMP CH1
BEQ P5
INX
INX
CMP #255
BNE P4
BEQ P1
*- GRAJ DZWIEK
P5 LDA GAMA+1,X
STA AUDF1
*- JAK DLUGO GRAC?
*- AŻ DO ZWOLNIENIA KLAWISZA
LDA KEYDEL
CMP #0
BNE P3
STA AUDF1
JMP Pl JESZCZE RAZ
*- DANE KLAWISZY I DZWIEKOW
GAMA DTA B(23),B(243) Z - C
DTA B(62),B(230) S - C#
DTA B(22),B(217) X - D
DTA B(58),B(204) D - D#
DTA B(18),B(193) C - E
DTA B(16),B(182) V - F
DTA B(61),B(173) G - F#
DTA B(21),B(162) B - G
DTA B(57),B(153) H - G#
DTA B(35),B(144) N - A
DTA B(l),B(136) J - A#
DTA B(37),B(128) M - H
DTA B(32),B(121) , - C
DTA B(0),B(114) L - C#
DTA B(34),B(108) . - D
DTA B(2),B(102) ; - D#
DTA B(38),B(96) / - E
DTA B(47),B(121) Q - C
DTA B(30),B(114) 2 - C#
DTA B(46),B(108) W - D
DTA B(26),B(102) 3 - D#
DTA B(42),B(96) E - E
DTA B(40),B(91) R - F
DTA B(29),B(85) 5 - F#
DTA B(45),B(81) T - G
DTA B(27),B(76) 6 - G#
DTA B(43),B(72) Y - A
DTA B(51),B(68) 7 - A#
DTA B(ll),B(64) U - H
DTA B(13),B(60) I - C
DTA B(48),B(57) 9 - C#
DTA B(8),B(53) O - D
DTA B(50),B(50) 0 - D#
DTA B(10),B(47) P - E
DTA B(255) KONIEC DANYCH
END
|