Browse code

Add source code of the ROM

Pawel Jablonski authored on 14/12/2022 19:10:08
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,112 @@
1
+; Author: Pawel Jablonski
2
+; E-mail: pj@xirx.net
3
+; WWW: xirx.net
4
+; GIT: git.xirx.net
5
+;
6
+; License: You can use this code however you like
7
+; but leave information about the original author.
8
+; Code is free for non-commercial and commercial use.
9
+
10
+include io.asm
11
+
12
+; Arguments:
13
+; 	A - note
14
+; No return
15
+external .xSpeakerSetNote:
16
+	push A
17
+	; Set address low register
18
+	mov 2, A
19
+	call .xIOSetRegister
20
+	; Select note field
21
+	mov 0, A
22
+	call .xIOWrite
23
+	; Set speaker field register
24
+	mov 11, A
25
+	call .xIOSetRegister
26
+	pop A
27
+	; Write note
28
+	call .xIOWrite
29
+	ret
30
+
31
+; Arguments:
32
+; 	A - time
33
+; No return
34
+external .xSpeakerSetTime:
35
+	push A
36
+	; Set address low register
37
+	mov 2, A
38
+	call .xIOSetRegister
39
+	; Select time field
40
+	mov 1, A
41
+	call .xIOWrite
42
+	; Set speaker field register
43
+	mov 11, A
44
+	call .xIOSetRegister
45
+	pop A
46
+	; Write time
47
+	call .xIOWrite
48
+	ret
49
+
50
+; Arguments:
51
+; 	A - fill
52
+; No return
53
+external .xSpeakerSetFill:
54
+	push A
55
+	; Set address low register
56
+	mov 2, A
57
+	call .xIOSetRegister
58
+	; Select fill field
59
+	mov 2, A
60
+	call .xIOWrite
61
+	; Set speaker field register
62
+	mov 11, A
63
+	call .xIOSetRegister
64
+	pop A
65
+	; Write fill
66
+	call .xIOWriteLowHalf
67
+	ret
68
+
69
+; Arguments:
70
+; 	A - volume
71
+; No return
72
+external .xSpeakerSetVolume:
73
+	push A
74
+	; Set address low register
75
+	mov 2, A
76
+	call .xIOSetRegister
77
+	; Select volume field
78
+	mov 3, A
79
+	call .xIOWrite
80
+	; Set speaker field register
81
+	mov 11, A
82
+	call .xIOSetRegister
83
+	pop A
84
+	; Write volume
85
+	call .xIOWriteLowHalf
86
+	ret
87
+
88
+; No arguments
89
+; No return
90
+external .xSpeakerClear:
91
+	push A
92
+	; Set speaker command register
93
+	mov 12, A
94
+	call .xIOSetRegister
95
+	; Write clear command
96
+	mov 0, A
97
+	call .xIOWriteLowHalf
98
+	pop A
99
+	ret
100
+
101
+; No arguments
102
+; No return
103
+external .xSpeakerAddNote:
104
+	push A
105
+	; IO transmission
106
+	mov 12, A
107
+	call .xIOSetRegister
108
+	; Write add note command
109
+	mov 1, A
110
+	call .xIOWriteLowHalf
111
+	pop A
112
+	ret