-
Notifications
You must be signed in to change notification settings - Fork 0
/
114-ay-high-frequency.asm
52 lines (39 loc) · 1.59 KB
/
114-ay-high-frequency.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
; Example that is used in following article:
; Podrobnější popis možností zvukového čipu řady AY-3–8910 na ZX Spectru 128k
; https://www.root.cz/clanky/podrobnejsi-popis-moznosti-zvukoveho-cipu-rady-ay-3-8910-na-zx-spectru-128k/
;
; This article is part of series:
; "Vývoj pro slavné ZX Spectrum"
; https://www.root.cz/serialy/vyvoj-pro-slavne-zx-spectrum/
;
; Repository:
; https://github.com/tisnik/8bit-fame
;
; Example #114:
; Play high frequency wave signal AY-3-8912 chip.
ENTRY_POINT equ $8000
AY_SELECT_REGISTER equ $fffd
AY_DATA_REGISTER equ $bffd
org ENTRY_POINT
start:
ld d, 0 ; výška tónu (spodní bajt)
ld e, 20
call ay_write ; zápis hodnoty do AY
ld d, 1 ; výška tónu (horní bajt)
ld e, 0
call ay_write ; zápis hodnoty do AY
ld d, 8 ; hlasitost kanálu A
ld e, 15 ; maximální hlasitost
call ay_write ; zápis hodnoty do AY
ld d, 7 ; povolení výstupu z kanálu A
ld e, %11111110 ; bitová maska
call ay_write ; zápis hodnoty do AY
loop:
jr loop ; nechceme návrat do BASICu
ay_write:
ld bc, AY_SELECT_REGISTER ; zápis do výběrového registru AY
out (c), d ; index vybraného registru
ld bc,AY_DATA_REGISTER ; zápis do datového registru AY
out (c), e ; zapisovaná hodnota
ret ; návrat ze subrutiny
end ENTRY_POINT