... | ... |
@@ -10,11 +10,13 @@ |
10 | 10 |
;pointer { x 2 y 2 } |
11 | 11 |
;color { byte 1 } |
12 | 12 |
;rect { x1 2 y1 2 x2 2 y2 2 } |
13 |
-;frame { x1 2 y1 2 x2 2 y2 2 } |
|
13 |
+;trkframe { x1 2 y1 2 x2 2 y2 2 } |
|
14 |
+;chnframe { x1 2 y1 2 x2 2 y2 2 } |
|
15 |
+;ctlframe { x1 2 y1 2 x2 2 y2 2 } |
|
14 | 16 |
;label { x 2 y 2 color 1 addr 2 } |
15 | 17 |
;knob { x 2 y 2 value 1 } |
16 | 18 |
;head { pos 1 } |
17 |
-;track { ch1 20 ch2 20 ch3 20 ch4 20 } |
|
19 |
+;track { active 1 ch1 20 ch2 20 ch3 20 ch4 20 } |
|
18 | 20 |
|
19 | 21 |
( devices ) |
20 | 22 |
|
... | ... |
@@ -38,21 +40,25 @@ |
38 | 40 |
|
39 | 41 |
( theme ) #e0fa =System.r #30fa =System.g #30fa =System.b |
40 | 42 |
|
41 |
- ~Screen.width #0002 DIV2 #0080 SUB2 =frame.x1 |
|
42 |
- ~Screen.height #0002 DIV2 #0038 SUB2 =frame.y1 |
|
43 |
- ~Screen.width #0002 DIV2 #0080 ADD2 =frame.x2 |
|
44 |
- ~Screen.height #0002 DIV2 #0038 ADD2 =frame.y2 |
|
43 |
+ ~Screen.width #0002 DIV2 #0080 SUB2 =trkframe.x1 |
|
44 |
+ ~Screen.height #0002 DIV2 #0038 SUB2 #0010 SUB2 =trkframe.y1 |
|
45 |
+ ~Screen.width #0002 DIV2 #0080 ADD2 =trkframe.x2 |
|
46 |
+ ~Screen.height #0002 DIV2 #0038 ADD2 #0010 SUB2 =trkframe.y2 |
|
45 | 47 |
|
46 |
- #0438 =Audio.ch1adsr |
|
48 |
+ ~trkframe.x1 =chnframe.x1 ~trkframe.y2 =chnframe.y1 |
|
49 |
+ ~chnframe.x1 #0030 ADD2 =chnframe.x2 ~chnframe.y1 #0030 ADD2 =chnframe.y2 |
|
47 | 50 |
|
48 |
- ,draw-timeline JSR2 |
|
49 |
- ,draw-controls JSR2 |
|
51 |
+ ~chnframe.x2 =ctlframe.x1 ~chnframe.y1 =ctlframe.y1 |
|
52 |
+ ~trkframe.x2 =ctlframe.x2 ~chnframe.y2 =ctlframe.y2 |
|
50 | 53 |
|
54 |
+ #048c =Audio.ch1adsr |
|
55 |
+ #159d =Audio.ch2adsr |
|
56 |
+ #26ae =Audio.ch3adsr |
|
57 |
+ #37bf =Audio.ch4adsr |
|
51 | 58 |
|
52 |
- ~frame.x1 #0028 SUB2 ~frame.y2 #0010 ADD2 #06 ,ch1_txt ,draw-label JSR2 |
|
53 |
- ~frame.x1 #0028 SUB2 ~frame.y2 #0018 ADD2 #01 ,ch2_txt ,draw-label JSR2 |
|
54 |
- ~frame.x1 #0028 SUB2 ~frame.y2 #0020 ADD2 #01 ,ch3_txt ,draw-label JSR2 |
|
55 |
- ~frame.x1 #0028 SUB2 ~frame.y2 #0028 ADD2 #01 ,ch4_txt ,draw-label JSR2 |
|
59 |
+ ,draw-timeline JSR2 |
|
60 |
+ ,draw-controls JSR2 |
|
61 |
+ ,draw-channels JSR2 |
|
56 | 62 |
|
57 | 63 |
BRK |
58 | 64 |
|
... | ... |
@@ -63,28 +69,36 @@ BRK |
63 | 69 |
|
64 | 70 |
~head.pos #08 MOD #00 NEQ ^$skip JNZ |
65 | 71 |
,bang JSR2 |
66 |
- ,draw-position JSR2 |
|
67 | 72 |
$skip |
68 | 73 |
|
69 | 74 |
~Mouse.state #00 EQU ,$click-end JNZ2 |
70 | 75 |
|
71 |
- ~Mouse.x ~frame.x1 GTH2 ~Mouse.x ~frame.x2 LTH2 #0101 EQU2 |
|
72 |
- ~Mouse.y ~frame.y1 GTH2 ~Mouse.y ~frame.y2 LTH2 #0101 EQU2 |
|
76 |
+ ~Mouse.x ~trkframe.x1 GTH2 ~Mouse.x ~trkframe.x2 LTH2 #0101 EQU2 |
|
77 |
+ ~Mouse.y ~trkframe.y1 GTH2 ~Mouse.y ~trkframe.y2 LTH2 #0101 EQU2 |
|
73 | 78 |
#0101 NEQ2 ,$no-track-click JNZ2 |
74 | 79 |
,clear-notes JSR2 |
75 | 80 |
( get note ) |
76 |
- #0e ~Mouse.y ~frame.y1 SUB2 SWP POP #08 DIV SUB |
|
81 |
+ #0e ~Mouse.y ~trkframe.y1 SUB2 SWP POP #08 DIV SUB |
|
77 | 82 |
~Mouse.state #10 NEQ ^$no-erase JNZ |
78 | 83 |
POP #00 |
79 | 84 |
$no-erase |
80 | 85 |
( get track ) |
81 |
- ,track.ch1 #00 ~Mouse.x ~frame.x1 SUB2 SWP POP #08 DIV ADD2 |
|
86 |
+ ,get-track JSR2 #00 ~Mouse.x ~trkframe.x1 SUB2 SWP POP #08 DIV ADD2 |
|
82 | 87 |
POK2 |
83 | 88 |
( release ) #00 =Mouse.state |
84 | 89 |
,draw-notes JSR2 |
85 |
- ,draw-bars JSR2 |
|
86 | 90 |
$no-track-click |
87 | 91 |
|
92 |
+ ~Mouse.x ~chnframe.x1 GTH2 ~Mouse.x ~chnframe.x2 LTH2 #0101 EQU2 |
|
93 |
+ ~Mouse.y ~chnframe.y1 #0008 ADD2 GTH2 ~Mouse.y ~chnframe.y2 #0008 SUB2 LTH2 #0101 EQU2 |
|
94 |
+ #0101 NEQ2 ,$no-channel-click JNZ2 |
|
95 |
+ ,clear-notes JSR2 |
|
96 |
+ ~Mouse.y ~chnframe.y1 SUB2 SWP POP #08 DIV #01 SUB =track.active |
|
97 |
+ ( release ) #00 =Mouse.state |
|
98 |
+ ,draw-channels JSR2 |
|
99 |
+ ,draw-notes JSR2 |
|
100 |
+ $no-channel-click |
|
101 |
+ |
|
88 | 102 |
$click-end |
89 | 103 |
|
90 | 104 |
BRK |
... | ... |
@@ -93,41 +107,62 @@ BRK |
93 | 107 |
|
94 | 108 |
BRK |
95 | 109 |
|
110 |
+@get-track ( -- track-addr ) |
|
111 |
+ |
|
112 |
+ ,track.ch1 #00 ~track.active #0020 MUL2 ADD2 |
|
113 |
+ |
|
114 |
+RTN |
|
115 |
+ |
|
96 | 116 |
@bang ( -- ) |
97 | 117 |
|
98 |
- ( load ) |
|
99 | 118 |
,track.ch1 #00 ~head.pos #08 DIV ADD2 PEK2 |
100 | 119 |
#01 SUB |
101 |
- DUP #ff NEQ ^$skip JNZ |
|
102 |
- POP RTN |
|
103 |
- $skip |
|
120 |
+ DUP #ff NEQ ^$skip1 JNZ |
|
121 |
+ POP ^$listen2 JMP |
|
122 |
+ $skip1 |
|
104 | 123 |
#00 SWP ,notes ADD2 PEK2 |
105 | 124 |
#0c #03 MUL SUB =Audio.ch1pitch |
106 | 125 |
#11 =Audio.ch1vol |
107 | 126 |
|
127 |
+ $listen2 |
|
128 |
+ ,track.ch2 #00 ~head.pos #08 DIV ADD2 PEK2 |
|
129 |
+ #01 SUB |
|
130 |
+ DUP #ff NEQ ^$skip2 JNZ |
|
131 |
+ POP ^$listen3 JMP |
|
132 |
+ $skip2 |
|
133 |
+ #00 SWP ,notes ADD2 PEK2 |
|
134 |
+ #0c #03 MUL SUB =Audio.ch2pitch |
|
135 |
+ #11 =Audio.ch2vol |
|
136 |
+ |
|
137 |
+ $listen3 |
|
138 |
+ ,track.ch3 #00 ~head.pos #08 DIV ADD2 PEK2 |
|
139 |
+ #01 SUB |
|
140 |
+ DUP #ff NEQ ^$skip3 JNZ |
|
141 |
+ POP ^$end JMP |
|
142 |
+ $skip3 |
|
143 |
+ #00 SWP ,notes ADD2 PEK2 |
|
144 |
+ #0c #03 MUL SUB =Audio.ch3pitch |
|
145 |
+ #11 =Audio.ch3vol |
|
146 |
+ |
|
147 |
+ $end |
|
148 |
+ |
|
108 | 149 |
RTN |
109 | 150 |
|
110 | 151 |
@move-head ( -- ) |
111 | 152 |
|
112 | 153 |
( clear ) |
113 |
- ~frame.y1 #0008 SUB2 =Sprite.y |
|
114 |
- ~frame.x1 #00 ~head.pos ADD2 =Sprite.x |
|
154 |
+ ~trkframe.y1 #0008 SUB2 =Sprite.y |
|
155 |
+ ~trkframe.x1 #00 ~head.pos ADD2 =Sprite.x |
|
115 | 156 |
,head_icn =Sprite.addr |
116 | 157 |
#00 =Sprite.color |
117 | 158 |
( incr ) ~head.pos #01 ADD =head.pos |
118 | 159 |
( draw ) |
119 |
- ~frame.x1 #00 ~head.pos ADD2 =Sprite.x |
|
160 |
+ ~trkframe.x1 #00 ~head.pos ADD2 =Sprite.x |
|
120 | 161 |
,head_icn =Sprite.addr |
121 |
- #01 =Sprite.color |
|
122 |
- |
|
123 |
-RTN |
|
124 | 162 |
|
125 |
-@draw-position ( -- ) |
|
126 |
- |
|
127 |
- ~frame.x2 #0008 SUB2 =Sprite.x |
|
128 |
- ~frame.y1 #0010 SUB2 =Sprite.y |
|
129 |
- ,font_hex #00 ~head.pos #10 DIV #0008 MUL2 ADD2 =Sprite.addr |
|
130 |
- #01 =Sprite.color |
|
163 |
+ #01 |
|
164 |
+ ( if note ) ,get-track JSR2 #00 ~head.pos #08 DIV ADD2 PEK2 #00 NEQ ADD |
|
165 |
+ =Sprite.color |
|
131 | 166 |
|
132 | 167 |
RTN |
133 | 168 |
|
... | ... |
@@ -135,10 +170,12 @@ RTN |
135 | 170 |
|
136 | 171 |
#00 #20 |
137 | 172 |
$loop |
138 |
- ( load ) OVR #00 SWP ,track.ch1 ADD2 PEK2 |
|
139 |
- #00 SWP #0e SWP SUB #0008 MUL2 ~frame.y1 ADD2 =Sprite.y |
|
140 |
- OVR #00 SWP #0008 MUL2 ~frame.x1 ADD2 =Sprite.x |
|
141 |
- #00 =Sprite.color |
|
173 |
+ ( load ) OVR #00 SWP ,get-track JSR2 ADD2 PEK2 |
|
174 |
+ DUP STH #00 SWP #0e SWP SUB #0008 MUL2 ~trkframe.y1 ADD2 =Sprite.y |
|
175 |
+ OVR #00 SWP #0008 MUL2 ~trkframe.x1 ADD2 =Sprite.x |
|
176 |
+ STHr #00 EQU ^$skip JNZ |
|
177 |
+ #00 =Sprite.color |
|
178 |
+ $skip |
|
142 | 179 |
( incr ) SWP #01 ADD SWP |
143 | 180 |
DUP2 LTH ^$loop JNZ |
144 | 181 |
POP2 |
... | ... |
@@ -149,41 +186,42 @@ RTN |
149 | 186 |
|
150 | 187 |
#00 #20 |
151 | 188 |
$notes-loop |
152 |
- ( load ) OVR #00 SWP ,track.ch1 ADD2 PEK2 |
|
153 |
- DUP STH #00 SWP #0e SWP SUB #0008 MUL2 ~frame.y1 ADD2 =Sprite.y |
|
154 |
- OVR #00 SWP #0008 MUL2 ~frame.x1 ADD2 =Sprite.x |
|
189 |
+ ( load ) OVR #00 SWP ,get-track JSR2 ADD2 PEK2 |
|
190 |
+ DUP STH #00 SWP #0e SWP SUB #0008 MUL2 ~trkframe.y1 ADD2 =Sprite.y |
|
191 |
+ OVR #00 SWP #0008 MUL2 ~trkframe.x1 ADD2 =Sprite.x |
|
155 | 192 |
,note2_icn =Sprite.addr |
156 |
- #02 STHr #00 EQU SUB =Sprite.color |
|
193 |
+ STHr #00 EQU ^$skip JNZ |
|
194 |
+ #05 =Sprite.color |
|
195 |
+ $skip |
|
157 | 196 |
( incr ) SWP #01 ADD SWP |
158 | 197 |
DUP2 LTH ^$notes-loop JNZ |
159 | 198 |
POP2 |
199 |
+ ,draw-bars JSR2 |
|
160 | 200 |
|
161 | 201 |
RTN |
162 | 202 |
|
163 | 203 |
@draw-bars ( -- ) |
164 |
- |
|
165 |
- ( draw notes ) |
|
166 | 204 |
|
167 |
- ~frame.x1 ~frame.y1 ~frame.x2 ~frame.y2 #01 ,line-rect JSR2 |
|
205 |
+ ~trkframe.x1 ~trkframe.y1 ~trkframe.x2 ~trkframe.y2 #01 ,line-rect JSR2 |
|
168 | 206 |
|
169 | 207 |
( grid ) |
170 |
- ~frame.y1 #0010 SUB2 =Sprite.y |
|
208 |
+ ~trkframe.y1 #0010 SUB2 =Sprite.y |
|
171 | 209 |
,font_hex =Sprite.addr |
172 | 210 |
#0000 #0100 |
173 | 211 |
$loop |
174 | 212 |
OVR2 SWP POP #02 DIV #0f AND #00 NEQ ^$skip JNZ |
175 |
- OVR2 ~frame.x1 ADD2 =Sprite.x |
|
213 |
+ OVR2 ~trkframe.x1 ADD2 =Sprite.x |
|
176 | 214 |
#01 =Sprite.color |
177 | 215 |
~Sprite.addr 8+ =Sprite.addr |
178 |
- OVR2 ~frame.x1 ADD2 ~frame.y1 #0001 ADD2 ~frame.y2 #01 ,line-vertical-dotted JSR2 |
|
216 |
+ OVR2 ~trkframe.x1 ADD2 ~trkframe.y1 #0001 ADD2 ~trkframe.y2 #01 ,line-vertical-dotted JSR2 |
|
179 | 217 |
$skip |
180 |
- OVR2 ~frame.x1 ADD2 ~frame.y1 ~frame.y2 #01 ,line-vertical-dotted JSR2 |
|
218 |
+ OVR2 ~trkframe.x1 ADD2 ~trkframe.y1 ~trkframe.y2 #01 ,line-vertical-dotted JSR2 |
|
181 | 219 |
SWP2 #0008 ADD2 SWP2 |
182 | 220 |
OVR2 OVR2 LTH2 ^$loop JNZ |
183 | 221 |
POP2 |
184 | 222 |
POP2 |
185 | 223 |
|
186 |
- ~frame.x1 ~frame.x2 ~frame.y1 #0008 SUB2 #0040 ADD2 #01 ,line-horizontal-dotted JSR2 |
|
224 |
+ ~trkframe.x1 ~trkframe.x2 ~trkframe.y1 #0008 SUB2 #0040 ADD2 #01 ,line-horizontal-dotted JSR2 |
|
187 | 225 |
|
188 | 226 |
RTN |
189 | 227 |
|
... | ... |
@@ -211,20 +249,20 @@ RTN |
211 | 249 |
|
212 | 250 |
@draw-octaves ( -- ) |
213 | 251 |
|
214 |
- ~frame.x1 #0018 SUB2 ~frame.y1 ,draw-octave JSR2 |
|
215 |
- ~frame.x1 #0018 SUB2 ~frame.y1 #0038 ADD2 ,draw-octave JSR2 |
|
216 |
- ~frame.x1 #0028 SUB2 =Sprite.x |
|
217 |
- ~frame.y1 =Sprite.y |
|
252 |
+ ~trkframe.x1 #0018 SUB2 ~trkframe.y1 ,draw-octave JSR2 |
|
253 |
+ ~trkframe.x1 #0018 SUB2 ~trkframe.y1 #0038 ADD2 ,draw-octave JSR2 |
|
254 |
+ ~trkframe.x1 #0028 SUB2 =Sprite.x |
|
255 |
+ ~trkframe.y1 =Sprite.y |
|
218 | 256 |
,font_hex #0060 ADD2 =Sprite.addr |
219 | 257 |
#01 =Sprite.color |
220 |
- ~frame.x1 #0030 SUB2 =Sprite.x |
|
258 |
+ ~trkframe.x1 #0030 SUB2 =Sprite.x |
|
221 | 259 |
,font_hex #0020 ADD2 =Sprite.addr |
222 | 260 |
#01 =Sprite.color |
223 |
- ~frame.x1 #0028 SUB2 =Sprite.x |
|
224 |
- ~frame.y1 #0038 ADD2 =Sprite.y |
|
261 |
+ ~trkframe.x1 #0028 SUB2 =Sprite.x |
|
262 |
+ ~trkframe.y1 #0038 ADD2 =Sprite.y |
|
225 | 263 |
,font_hex #0060 ADD2 =Sprite.addr |
226 | 264 |
#01 =Sprite.color |
227 |
- ~frame.x1 #0030 SUB2 =Sprite.x |
|
265 |
+ ~trkframe.x1 #0030 SUB2 =Sprite.x |
|
228 | 266 |
,font_hex #0018 ADD2 =Sprite.addr |
229 | 267 |
#01 =Sprite.color |
230 | 268 |
|
... | ... |
@@ -274,17 +312,31 @@ RTN |
274 | 312 |
|
275 | 313 |
@draw-controls ( -- ) |
276 | 314 |
|
277 |
- ~frame.x1 #0000 ADD2 ~frame.y2 #0010 ADD2 #01 ,env_txt ,draw-label JSR2 |
|
315 |
+ ~ctlframe.x1 ~ctlframe.y1 ~ctlframe.x2 ~ctlframe.y2 #01 ,line-rect JSR2 |
|
316 |
+ |
|
317 |
+ ~ctlframe.x1 #0008 ADD2 ~ctlframe.y1 #0008 ADD2 #01 ,env_txt ,draw-label JSR2 |
|
318 |
+ |
|
319 |
+ ~ctlframe.x1 #0008 ADD2 ~ctlframe.y1 #0010 ADD2 #00 ,draw-knob JSR2 |
|
320 |
+ ~ctlframe.x1 #0018 ADD2 ~ctlframe.y1 #0010 ADD2 #02 ,draw-knob JSR2 |
|
321 |
+ ~ctlframe.x1 #0028 ADD2 ~ctlframe.y1 #0010 ADD2 #0a ,draw-knob JSR2 |
|
322 |
+ ~ctlframe.x1 #0038 ADD2 ~ctlframe.y1 #0010 ADD2 #0c ,draw-knob JSR2 |
|
278 | 323 |
|
279 |
- ~frame.x1 #0000 ADD2 ~frame.y2 #0020 ADD2 #00 ,draw-knob JSR2 |
|
280 |
- ~frame.x1 #0010 ADD2 ~frame.y2 #0020 ADD2 #02 ,draw-knob JSR2 |
|
281 |
- ~frame.x1 #0020 ADD2 ~frame.y2 #0020 ADD2 #0a ,draw-knob JSR2 |
|
282 |
- ~frame.x1 #0030 ADD2 ~frame.y2 #0020 ADD2 #0c ,draw-knob JSR2 |
|
324 |
+ ~ctlframe.x1 #0050 ADD2 ~ctlframe.y1 #0008 ADD2 #01 ,vol_txt ,draw-label JSR2 |
|
283 | 325 |
|
284 |
- ~frame.x1 #0050 ADD2 ~frame.y2 #0010 ADD2 #01 ,vol_txt ,draw-label JSR2 |
|
326 |
+ ~ctlframe.x1 #0050 ADD2 ~ctlframe.y1 #0010 ADD2 #00 ,draw-knob JSR2 |
|
327 |
+ ~ctlframe.x1 #0060 ADD2 ~ctlframe.y1 #0010 ADD2 #0f ,draw-knob JSR2 |
|
328 |
+ |
|
329 |
+RTN |
|
330 |
+ |
|
331 |
+@draw-channels |
|
332 |
+ |
|
333 |
+ ~chnframe.x1 ~chnframe.y1 ~chnframe.x2 ~chnframe.y2 #01 ,line-rect JSR2 |
|
285 | 334 |
|
286 |
- ~frame.x1 #0050 ADD2 ~frame.y2 #0020 ADD2 #00 ,draw-knob JSR2 |
|
287 |
- ~frame.x1 #0060 ADD2 ~frame.y2 #0020 ADD2 #0f ,draw-knob JSR2 |
|
335 |
+ ~track.active =Console.byte |
|
336 |
+ ~chnframe.x1 #0008 ADD2 ~chnframe.y1 #0008 ADD2 #01 ~track.active #00 EQU #07 MUL ADD ,ch1_txt ,draw-label JSR2 |
|
337 |
+ ~chnframe.x1 #0008 ADD2 ~chnframe.y1 #0010 ADD2 #01 ~track.active #01 EQU #07 MUL ADD ,ch2_txt ,draw-label JSR2 |
|
338 |
+ ~chnframe.x1 #0008 ADD2 ~chnframe.y1 #0018 ADD2 #01 ~track.active #02 EQU #07 MUL ADD ,ch3_txt ,draw-label JSR2 |
|
339 |
+ ~chnframe.x1 #0008 ADD2 ~chnframe.y1 #0020 ADD2 #01 ~track.active #03 EQU #07 MUL ADD ,ch4_txt ,draw-label JSR2 |
|
288 | 340 |
|
289 | 341 |
RTN |
290 | 342 |
|
... | ... |
@@ -368,10 +420,10 @@ RTN |
368 | 420 |
@note2_icn [ 0000 1c3e 3e3e 1c00 ] |
369 | 421 |
@head_icn [ 0018 1818 7e3c 1800 ] |
370 | 422 |
|
371 |
-@ch1_txt [ SQR1 00 ] |
|
372 |
-@ch2_txt [ SQR2 00 ] |
|
373 |
-@ch3_txt [ TRI3 00 ] |
|
374 |
-@ch4_txt [ WAV4 00 ] |
|
423 |
+@ch1_txt [ CHN0 00 ] |
|
424 |
+@ch2_txt [ CHN1 00 ] |
|
425 |
+@ch3_txt [ CHN2 00 ] |
|
426 |
+@ch4_txt [ CHN3 00 ] |
|
375 | 427 |
@env_txt [ Envelope 00 ] |
376 | 428 |
@vol_txt [ Volume 00 ] |
377 | 429 |
|