Rev 485 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 485 | Rev 551 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; SOUND BLASTER |
2 | ; SOUND BLASTER |
3 | ; |
3 | ; |
4 | ; Compile with FASM for Menuet |
4 | ; Compile with FASM for Menuet |
5 | ; |
5 | ; |
6 | 6 | ||
7 | include 'lang.inc' |
7 | include 'lang.inc' |
8 | include '..\..\..\macros.inc' |
8 | include '..\..\..\macros.inc' |
9 | 9 | ||
10 | use32 |
10 | use32 |
11 | 11 | ||
12 | org 0x0 |
12 | org 0x0 |
13 | 13 | ||
14 | db 'MENUET01' ; 8 byte id |
14 | db 'MENUET01' ; 8 byte id |
15 | dd 0x01 |
15 | dd 0x01 |
16 | dd START ; program start |
16 | dd START ; program start |
17 | dd I_END ; program image size |
17 | dd I_END ; program image size |
18 | dd 0x80000 ; required amount of memory |
18 | dd 0x80000 ; required amount of memory |
19 | dd 0xfff0 ; stack position |
19 | dd 0xfff0 ; stack position |
20 | dd 0,0 |
20 | dd 0,0 |
21 | 21 | ||
22 | 22 | ||
23 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
23 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
24 | 24 | ||
25 | vol_data dd 0x40000 |
25 | vol_data dd 0x40000 |
26 | playposition dd 0x20000 |
26 | playposition dd 0x20000 |
27 | next_tic dd 0x0 |
27 | next_tic dd 0x0 |
28 | onoff dd 0x0 |
28 | onoff dd 0x0 |
29 | pause_between_songs dd 100 |
29 | pause_between_songs dd 100 |
30 | delay dd 100 |
30 | delay dd 100 |
31 | repeat_song db 0 |
31 | repeat_song db 0 |
32 | mono_stereo dd 1 |
32 | mono_stereo dd 1 |
33 | 33 | ||
34 | 34 | ||
35 | ; 0x10000 data from hd |
35 | ; 0x10000 data from hd |
36 | ; 0x20000 play position for sb |
36 | ; 0x20000 play position for sb |
37 | ; 0x40000 volume indicator data |
37 | ; 0x40000 volume indicator data |
38 | 38 | ||
39 | 39 | ||
40 | START: ; start of execution |
40 | START: ; start of execution |
41 | 41 | ||
42 | call draw_window ; at first, draw the window |
42 | call draw_window ; at first, draw the window |
43 | 43 | ||
44 | mov eax,26 |
44 | mov eax,26 |
45 | mov ebx,9 |
45 | mov ebx,9 |
46 | mcall |
46 | mcall |
47 | mov [next_tic],eax |
47 | mov [next_tic],eax |
48 | 48 | ||
49 | still: |
49 | still: |
50 | 50 | ||
51 | mov [delay],145 |
51 | mov [delay],145 |
52 | cmp [mono_stereo],2 |
52 | cmp [mono_stereo],2 |
53 | jne no_stereo |
53 | jne no_stereo |
54 | mov [delay],73 |
54 | mov [delay],73 |
55 | no_stereo: |
55 | no_stereo: |
56 | 56 | ||
57 | mov eax,55 |
57 | mov eax,55 |
58 | mov ebx,2 |
58 | mov ebx,2 |
59 | mov ecx,0 |
59 | mov ecx,0 |
60 | mov edx,[mono_stereo] |
60 | mov edx,[mono_stereo] |
61 | mcall |
61 | mcall |
62 | 62 | ||
63 | mov eax,23 ; wait here for event |
63 | mov eax,23 ; wait here for event |
64 | mov ebx,1 |
64 | mov ebx,1 |
65 | mcall |
65 | mcall |
66 | 66 | ||
67 | cmp eax,0 |
67 | cmp eax,0 |
68 | jne do_task |
68 | jne do_task |
69 | 69 | ||
70 | still2: |
70 | still2: |
71 | 71 | ||
72 | cmp [onoff],0 |
72 | cmp [onoff],0 |
73 | je still |
73 | je still |
74 | 74 | ||
75 | mov eax,26 |
75 | mov eax,26 |
76 | mov ebx,9 |
76 | mov ebx,9 |
77 | mcall |
77 | mcall |
78 | mov ebx,[next_tic] |
78 | mov ebx,[next_tic] |
79 | cmp eax,ebx |
79 | cmp eax,ebx |
80 | jge play_wave_block |
80 | jge play_wave_block |
81 | 81 | ||
82 | mov edi,[next_tic] |
82 | mov edi,[next_tic] |
83 | sub edi,eax |
83 | sub edi,eax |
84 | mov eax,[delay] |
84 | mov eax,[delay] |
85 | sub eax,edi |
85 | sub eax,edi |
86 | mov edi,eax |
86 | mov edi,eax |
87 | call draw_volume |
87 | call draw_volume |
88 | 88 | ||
89 | jmp still |
89 | jmp still |
90 | 90 | ||
91 | do_task: |
91 | do_task: |
92 | 92 | ||
93 | cmp eax,1 ; redraw request ? |
93 | cmp eax,1 ; redraw request ? |
94 | je red |
94 | je red |
95 | cmp eax,2 ; key in buffer ? |
95 | cmp eax,2 ; key in buffer ? |
96 | je key |
96 | je key |
97 | cmp eax,3 ; button in buffer ? |
97 | cmp eax,3 ; button in buffer ? |
98 | je button |
98 | je button |
99 | 99 | ||
100 | cmp eax,16+4 |
100 | cmp eax,16+4 |
101 | jne no_irman |
101 | jne no_irman |
102 | mov eax,42 |
102 | mov eax,42 |
103 | mov ebx,4 |
103 | mov ebx,4 |
104 | mcall |
104 | mcall |
105 | dec [ir_count] |
105 | dec [ir_count] |
106 | cmp bl,140 |
106 | cmp bl,140 |
107 | jne no_first |
107 | jne no_first |
108 | mov [ir_count],3 |
108 | mov [ir_count],3 |
109 | no_first: |
109 | no_first: |
110 | cmp [ir_count],0 |
110 | cmp [ir_count],0 |
111 | jne no_irman |
111 | jne no_irman |
112 | call give_wav |
112 | call give_wav |
113 | cmp bl,215 |
113 | cmp bl,215 |
114 | je play |
114 | je play |
115 | mov ah,4 |
115 | mov ah,4 |
116 | ;; cmp bl,55 |
116 | ;; cmp bl,55 |
117 | ;; je rev |
117 | ;; je rev |
118 | mov ah,3 |
118 | mov ah,3 |
119 | ;;; cmp bl,183 |
119 | ;;; cmp bl,183 |
120 | ;;; je rev |
120 | ;;; je rev |
121 | cmp bl,127 |
121 | cmp bl,127 |
122 | jne no_block_dec |
122 | jne no_block_dec |
123 | add [block],65536/512*10 |
123 | add [block],65536/512*10 |
124 | no_block_dec: |
124 | no_block_dec: |
125 | cmp bl,191 |
125 | cmp bl,191 |
126 | jne no_block_inc |
126 | jne no_block_inc |
127 | sub [block],65536/512*10 |
127 | sub [block],65536/512*10 |
128 | no_block_inc: |
128 | no_block_inc: |
129 | jmp still |
129 | jmp still |
130 | no_irman: |
130 | no_irman: |
131 | 131 | ||
132 | jmp still |
132 | jmp still |
133 | 133 | ||
134 | play_wave_block: |
134 | play_wave_block: |
135 | 135 | ||
136 | mov eax,55 ; load wave |
136 | mov eax,55 ; load wave |
137 | mov ebx,0 |
137 | mov ebx,0 |
138 | mov ecx,[playposition] |
138 | mov ecx,[playposition] |
139 | mcall |
139 | mcall |
140 | 140 | ||
141 | mov eax,55 ; play wave |
141 | mov eax,55 ; play wave |
142 | mov ebx,1 |
142 | mov ebx,1 |
143 | mcall |
143 | mcall |
144 | 144 | ||
145 | mov eax,26 |
145 | mov eax,26 |
146 | mov ebx,9 |
146 | mov ebx,9 |
147 | mcall |
147 | mcall |
148 | add eax,[delay] |
148 | add eax,[delay] |
149 | mov [next_tic],eax |
149 | mov [next_tic],eax |
150 | 150 | ||
151 | call draw_wave |
151 | call draw_wave |
152 | call read_wav |
152 | call read_wav |
153 | 153 | ||
154 | jmp still |
154 | jmp still |
155 | 155 | ||
156 | red: ; redraw |
156 | red: ; redraw |
157 | call draw_window |
157 | call draw_window |
158 | jmp still |
158 | jmp still |
159 | 159 | ||
160 | key: ; key |
160 | key: ; key |
161 | mov eax,2 ; just read it and ignore |
161 | mov eax,2 ; just read it and ignore |
162 | mcall |
162 | mcall |
163 | jmp still2 |
163 | jmp still2 |
164 | 164 | ||
165 | button: ; button |
165 | button: ; button |
166 | mov eax,17 ; get id |
166 | mov eax,17 ; get id |
167 | mcall |
167 | mcall |
168 | 168 | ||
169 | cmp ah,6 |
169 | cmp ah,6 |
170 | jne no_ir |
170 | jne no_ir |
171 | call enable_ir |
171 | call enable_ir |
172 | jmp still |
172 | jmp still |
173 | no_ir: |
173 | no_ir: |
174 | 174 | ||
175 | cmp ah,7 |
175 | cmp ah,7 |
176 | jne no_file_name |
176 | jne no_file_name |
177 | call read_string |
177 | call read_string |
178 | jmp still |
178 | jmp still |
179 | no_file_name: |
179 | no_file_name: |
180 | 180 | ||
181 | cmp ah,2 ; button id=2 |
181 | cmp ah,2 ; button id=2 |
182 | jne noplay |
182 | jne noplay |
183 | play: |
183 | play: |
184 | mov eax,[onoff] |
184 | mov eax,[onoff] |
185 | not eax |
185 | not eax |
186 | and eax,1 |
186 | and eax,1 |
187 | mov [onoff],eax |
187 | mov [onoff],eax |
188 | mov [playposition],0x20000 |
188 | mov [playposition],0x20000 |
189 | mov [block],2 |
189 | mov [block],2 |
190 | call read_header |
190 | call read_header |
191 | call read_wav |
191 | call read_wav |
192 | ; mov [next_tic],0 |
192 | ; mov [next_tic],0 |
193 | jmp still |
193 | jmp still |
194 | 194 | ||
195 | noplay: |
195 | noplay: |
196 | 196 | ||
197 | cmp ah,3 |
197 | cmp ah,3 |
198 | jb no_rev |
198 | jb no_rev |
199 | cmp ah,4 |
199 | cmp ah,4 |
200 | jg no_rev |
200 | jg no_rev |
201 | sub ah,3 |
201 | sub ah,3 |
202 | shr eax,8 |
202 | shr eax,8 |
203 | imul eax,4000 |
203 | imul eax,4000 |
204 | sub eax,2000 |
204 | sub eax,2000 |
205 | add [block],eax |
205 | add [block],eax |
206 | cmp [block],0x0f000000 |
206 | cmp [block],0x0f000000 |
207 | jb block_ok |
207 | jb block_ok |
208 | mov [block],2 |
208 | mov [block],2 |
209 | block_ok: |
209 | block_ok: |
210 | call display_progress |
210 | call display_progress |
211 | jmp still2 |
211 | jmp still2 |
212 | no_rev: |
212 | no_rev: |
213 | 213 | ||
214 | cmp ah,5 ; repeat song ? |
214 | cmp ah,5 ; repeat song ? |
215 | jne no_repeat |
215 | jne no_repeat |
216 | mov al,[repeat_song] |
216 | mov al,[repeat_song] |
217 | inc al |
217 | inc al |
218 | and eax,1 |
218 | and eax,1 |
219 | mov [repeat_song],al |
219 | mov [repeat_song],al |
220 | shl eax,2 |
220 | shl eax,2 |
221 | mov eax,[repeat_text+eax] |
221 | mov eax,[repeat_text+eax] |
222 | mov [text+40*5+31],eax |
222 | mov [text+40*5+31],eax |
223 | call draw_window |
223 | call draw_window |
224 | jmp still |
224 | jmp still |
225 | repeat_text: db 'OFF ON ' |
225 | repeat_text: db 'OFF ON ' |
226 | no_repeat: |
226 | no_repeat: |
227 | 227 | ||
228 | 228 | ||
229 | cmp ah,1 |
229 | cmp ah,1 |
230 | jne noclose |
230 | jne noclose |
231 | cmp [infrared_enabled],1 |
231 | cmp [infrared_enabled],1 |
232 | jne no_dis |
232 | jne no_dis |
233 | mov eax,45 |
233 | mov eax,45 |
234 | mov ebx,1 |
234 | mov ebx,1 |
235 | mov ecx,4 |
235 | mov ecx,4 |
236 | mcall |
236 | mcall |
237 | mov eax,46 |
237 | mov eax,46 |
238 | mov ebx,1 |
238 | mov ebx,1 |
239 | mov ecx,0x3f0 |
239 | mov ecx,0x3f0 |
240 | mov edx,0x3ff |
240 | mov edx,0x3ff |
241 | mcall |
241 | mcall |
242 | no_dis: |
242 | no_dis: |
243 | mov eax,-1 ; close this program |
243 | mov eax,-1 ; close this program |
244 | mcall |
244 | mcall |
245 | noclose: |
245 | noclose: |
246 | 246 | ||
247 | jmp still2 |
247 | jmp still2 |
248 | 248 | ||
249 | 249 | ||
250 | give_wav: |
250 | give_wav: |
251 | 251 | ||
252 | pusha |
252 | pusha |
253 | 253 | ||
254 | mov eax,55 |
254 | mov eax,55 |
255 | mov ebx,0 |
255 | mov ebx,0 |
256 | mov ecx,0x20000 |
256 | mov ecx,0x20000 |
257 | mcall |
257 | mcall |
258 | 258 | ||
259 | popa |
259 | popa |
260 | ret |
260 | ret |
261 | 261 | ||
262 | ir_count db 0x0 |
262 | ir_count db 0x0 |
263 | 263 | ||
264 | 264 | ||
265 | drop_rate dd 100 |
265 | drop_rate dd 100 |
266 | 266 | ||
267 | draw_volume: |
267 | draw_volume: |
268 | 268 | ||
269 | ; edi = tic to show |
269 | ; edi = tic to show |
270 | 270 | ||
271 | ret |
271 | ret |
272 | 272 | ||
273 | pusha |
273 | pusha |
274 | 274 | ||
275 | add edi,[vol_data] |
275 | add edi,[vol_data] |
276 | 276 | ||
277 | mov eax,[drop_rate] |
277 | mov eax,[drop_rate] |
278 | cmp eax,2 |
278 | cmp eax,2 |
279 | jb no_drop |
279 | jb no_drop |
280 | sub eax,2 |
280 | sub eax,2 |
281 | no_drop: |
281 | no_drop: |
282 | mov [drop_rate],eax |
282 | mov [drop_rate],eax |
283 | 283 | ||
284 | movzx eax,byte [edi] |
284 | movzx eax,byte [edi] |
285 | cmp eax,[drop_rate] |
285 | cmp eax,[drop_rate] |
286 | jge drop_ok |
286 | jge drop_ok |
287 | mov eax,[drop_rate] |
287 | mov eax,[drop_rate] |
288 | mov [edi],al |
288 | mov [edi],al |
289 | jmp fixed_drop |
289 | jmp fixed_drop |
290 | drop_ok: |
290 | drop_ok: |
291 | mov [drop_rate],eax |
291 | mov [drop_rate],eax |
292 | fixed_drop: |
292 | fixed_drop: |
293 | 293 | ||
294 | mov eax,13 |
294 | mov eax,13 |
295 | mov ebx,320*65536+20 |
295 | mov ebx,320*65536+20 |
296 | mov ecx,50*65536+1 |
296 | mov ecx,50*65536+1 |
297 | movzx edx,byte [edi] |
297 | movzx edx,byte [edi] |
298 | shr edx,1 |
298 | shr edx,1 |
299 | mov esi,128 |
299 | mov esi,128 |
300 | sub esi,edx |
300 | sub esi,edx |
301 | add ecx,esi |
301 | add ecx,esi |
302 | mov edx,0x00ff00 |
302 | mov edx,0x00ff00 |
303 | mcall |
303 | mcall |
304 | 304 | ||
305 | mov eax,13 |
305 | mov eax,13 |
306 | mov ebx,320*65536+20 |
306 | mov ebx,320*65536+20 |
307 | movzx edx,byte [edi] |
307 | movzx edx,byte [edi] |
308 | shr edx,1 |
308 | shr edx,1 |
309 | mov ecx,edx |
309 | mov ecx,edx |
310 | add ecx,(50+128)*65536+1 |
310 | add ecx,(50+128)*65536+1 |
311 | shl edx,16 |
311 | shl edx,16 |
312 | sub ecx,edx |
312 | sub ecx,edx |
313 | mov edx,0xff0000 |
313 | mov edx,0xff0000 |
314 | mcall |
314 | mcall |
315 | 315 | ||
316 | popa |
316 | popa |
317 | 317 | ||
318 | ret |
318 | ret |
319 | 319 | ||
320 | 320 | ||
321 | read_header: |
321 | read_header: |
322 | 322 | ||
323 | pusha |
323 | pusha |
324 | 324 | ||
325 | mov dword [file_info+4],0 ; block to read |
325 | mov dword [file_info+4],0 ; block to read |
326 | mov dword [file_info+8],1 ; blocks to read |
326 | mov dword [file_info+8],1 ; blocks to read |
327 | mov dword [file_info+12],0x10000+1024 ; return data pointer |
327 | mov dword [file_info+12],0x10000+1024 ; return data pointer |
328 | mov dword [file_info+16],0x60000 ; work area for os |
328 | mov dword [file_info+16],0x60000 ; work area for os |
329 | 329 | ||
330 | mov eax,58 |
330 | mov eax,58 |
331 | mov ebx,file_info |
331 | mov ebx,file_info |
332 | mcall |
332 | mcall |
333 | 333 | ||
334 | movzx eax,byte [0x10000+1024+12+10] |
334 | movzx eax,byte [0x10000+1024+12+10] |
335 | mov [channels],eax |
335 | mov [channels],eax |
336 | movzx eax,byte [0x10000+1024+12+20] |
336 | movzx eax,byte [0x10000+1024+12+20] |
337 | mov [bytes_per_sample],eax |
337 | mov [bytes_per_sample],eax |
338 | 338 | ||
339 | cmp [0x10000+1024],dword 'RIFF' |
339 | cmp [0x10000+1024],dword 'RIFF' |
340 | jne unknownformat |
340 | jne unknownformat |
341 | cmp [0x10000+1024+8],dword 'WAVE' |
341 | cmp [0x10000+1024+8],dword 'WAVE' |
342 | jne unknownformat |
342 | jne unknownformat |
343 | 343 | ||
344 | mov [addb],128 |
344 | mov [addb],128 |
345 | cmp [channels],1 |
345 | cmp [channels],1 |
346 | je addb_ok |
346 | je addb_ok |
347 | mov [addb],256 |
347 | mov [addb],256 |
348 | addb_ok: |
348 | addb_ok: |
349 | cmp [bytes_per_sample],1 |
349 | cmp [bytes_per_sample],1 |
350 | je addb_ok2 |
350 | je addb_ok2 |
351 | mov [addb],256 |
351 | mov [addb],256 |
352 | addb_ok2: |
352 | addb_ok2: |
353 | 353 | ||
354 | mov [bmul],256 |
354 | mov [bmul],256 |
355 | cmp [addb],256 |
355 | cmp [addb],256 |
356 | je bmok |
356 | je bmok |
357 | mov [bmul],512 |
357 | mov [bmul],512 |
358 | bmok: |
358 | bmok: |
359 | 359 | ||
360 | cmp [bytes_per_sample],4 |
360 | cmp [bytes_per_sample],4 |
361 | jne no16s |
361 | jne no16s |
362 | mov [addb],512 ;mono_stereo |
362 | mov [addb],512 ;mono_stereo |
363 | mov ecx,[mono_stereo] |
363 | mov ecx,[mono_stereo] |
364 | shr ecx,1 |
364 | shr ecx,1 |
365 | shr [addb],cl |
365 | shr [addb],cl |
366 | mov [bmul],128 ;mono_stereo |
366 | mov [bmul],128 ;mono_stereo |
367 | shl [bmul],cl |
367 | shl [bmul],cl |
368 | no16s: |
368 | no16s: |
369 | 369 | ||
370 | popa |
370 | popa |
371 | 371 | ||
372 | ret |
372 | ret |
373 | 373 | ||
374 | unknownformat: |
374 | unknownformat: |
375 | 375 | ||
376 | mov [onoff],0 |
376 | mov [onoff],0 |
377 | 377 | ||
378 | call display_progress |
378 | call display_progress |
379 | 379 | ||
380 | mov eax,13 |
380 | mov eax,13 |
381 | mov ebx,190*65536+10 |
381 | mov ebx,190*65536+10 |
382 | mov ecx,104*65536+10 |
382 | mov ecx,104*65536+10 |
383 | mov edx,0xff0000 |
383 | mov edx,0xff0000 |
384 | mcall |
384 | mcall |
385 | pusha |
385 | pusha |
386 | 386 | ||
387 | mov eax,5 |
387 | mov eax,5 |
388 | mov ebx,[pause_between_songs] |
388 | mov ebx,[pause_between_songs] |
389 | mcall |
389 | mcall |
390 | 390 | ||
391 | popa |
391 | popa |
392 | mov eax,13 |
392 | mov eax,13 |
393 | mov edx,0x000000 |
393 | mov edx,0x000000 |
394 | mcall |
394 | mcall |
395 | 395 | ||
396 | popa |
396 | popa |
397 | 397 | ||
398 | ret |
398 | ret |
399 | 399 | ||
400 | 400 | ||
401 | 401 | ||
402 | channels dd 0x0 ; 1=mono, 2 stereo |
402 | channels dd 0x0 ; 1=mono, 2 stereo |
403 | bytes_per_sample dd 0x0 ; 1=8 2=2*8/16 4=16 |
403 | bytes_per_sample dd 0x0 ; 1=8 2=2*8/16 4=16 |
404 | 404 | ||
405 | buffer dd 0x20000 |
405 | buffer dd 0x20000 |
406 | 406 | ||
407 | block dd 0x2 |
407 | block dd 0x2 |
408 | addb dd 256 ; 128 = mono 8 bit , 256 = stereo 8 bit/16 bit mono |
408 | addb dd 256 ; 128 = mono 8 bit , 256 = stereo 8 bit/16 bit mono |
409 | bmul dd 0x0 ; 512 = mono 8 bit , 256 = stereo 8 bit/16 bit mono |
409 | bmul dd 0x0 ; 512 = mono 8 bit , 256 = stereo 8 bit/16 bit mono |
410 | 410 | ||
411 | file_size dd 100 |
411 | file_size dd 100 |
412 | 412 | ||
413 | current_play dd wavfile+40*0 |
413 | current_play dd wavfile+40*0 |
414 | 414 | ||
415 | 415 | ||
416 | read_wav: |
416 | read_wav: |
417 | 417 | ||
418 | pusha |
418 | pusha |
419 | 419 | ||
420 | new_file: |
420 | new_file: |
421 | 421 | ||
422 | mov edx,[block] |
422 | mov edx,[block] |
423 | 423 | ||
424 | newread: |
424 | newread: |
425 | 425 | ||
426 | mov dword [file_info+4],edx ; block to read |
426 | mov dword [file_info+4],edx ; block to read |
427 | mov dword [file_info+8],1 ; blocks to read |
427 | mov dword [file_info+8],1 ; blocks to read |
428 | mov dword [file_info+12],0x10000+1024 ; return data pointer |
428 | mov dword [file_info+12],0x10000+1024 ; return data pointer |
429 | mov dword [file_info+16],0x60000 ; work area for os |
429 | mov dword [file_info+16],0x60000 ; work area for os |
430 | 430 | ||
431 | mov eax,58 |
431 | mov eax,58 |
432 | mov ebx,file_info |
432 | mov ebx,file_info |
433 | mcall |
433 | mcall |
434 | 434 | ||
435 | 435 | ||
436 | pusha |
436 | pusha |
437 | mov eax,11 |
437 | mov eax,11 |
438 | mcall |
438 | mcall |
439 | cmp eax,1 |
439 | cmp eax,1 |
440 | jne no_wd |
440 | jne no_wd |
441 | call draw_window |
441 | call draw_window |
442 | no_wd: |
442 | no_wd: |
443 | popa |
443 | popa |
444 | 444 | ||
445 | pusha |
445 | pusha |
446 | mov eax,38 |
446 | mov eax,38 |
447 | mov ebx,1*65536+128 |
447 | mov ebx,1*65536+128 |
448 | mov ecx,71*65536+71 |
448 | mov ecx,71*65536+71 |
449 | add ebx,25*65536+25 |
449 | add ebx,25*65536+25 |
450 | mov edx,0x555555 |
450 | mov edx,0x555555 |
451 | ; mcall |
451 | ; mcall |
452 | mov eax,38 |
452 | mov eax,38 |
453 | mov ebx,[esp+32-12] |
453 | mov ebx,[esp+32-12] |
454 | and ebx,65536/512 -1 |
454 | and ebx,65536/512 -1 |
455 | or ebx,1*65536 |
455 | or ebx,1*65536 |
456 | add ebx,25*65536+25 |
456 | add ebx,25*65536+25 |
457 | mov ecx,71*65536+71 |
457 | mov ecx,71*65536+71 |
458 | mov edx,0x999999 |
458 | mov edx,0x999999 |
459 | ; mcall |
459 | ; mcall |
460 | popa |
460 | popa |
461 | 461 | ||
462 | cmp eax,0 |
462 | cmp eax,0 |
463 | je conp |
463 | je conp |
464 | 464 | ||
465 | movzx eax,byte [repeat_song] |
465 | movzx eax,byte [repeat_song] |
466 | inc eax |
466 | inc eax |
467 | and eax,1 |
467 | and eax,1 |
468 | imul eax,40 |
468 | imul eax,40 |
469 | mov [current_play],wavfile |
469 | mov [current_play],wavfile |
470 | play_ok: |
470 | play_ok: |
471 | 471 | ||
472 | mov [onoff],1 |
472 | mov [onoff],1 |
473 | mov [playposition],0x20000 |
473 | mov [playposition],0x20000 |
474 | mov [block],20 |
474 | mov [block],20 |
475 | 475 | ||
476 | mov eax,5 |
476 | mov eax,5 |
477 | mov ebx,[pause_between_songs] |
477 | mov ebx,[pause_between_songs] |
478 | add ebx,[delay] |
478 | add ebx,[delay] |
479 | mcall |
479 | mcall |
480 | 480 | ||
481 | call read_header |
481 | call read_header |
482 | 482 | ||
483 | cmp [onoff],0 |
483 | cmp [onoff],0 |
484 | je noplay2 |
484 | je noplay2 |
485 | cmp [repeat_song],0 |
485 | cmp [repeat_song],0 |
486 | je noplay2 |
486 | je noplay2 |
487 | 487 | ||
488 | call display_progress |
488 | call display_progress |
489 | 489 | ||
490 | jmp new_file |
490 | jmp new_file |
491 | 491 | ||
492 | noplay2: |
492 | noplay2: |
493 | 493 | ||
494 | mov [onoff],0 |
494 | mov [onoff],0 |
495 | mov [block],2 |
495 | mov [block],2 |
496 | call display_progress |
496 | call display_progress |
497 | 497 | ||
498 | popa |
498 | popa |
499 | ret |
499 | ret |
500 | conp: |
500 | conp: |
501 | 501 | ||
502 | mov [file_size],ebx |
502 | mov [file_size],ebx |
503 | 503 | ||
504 | mov esi,0x10000+1024 ; 8 bit stereo & 16 bit mono |
504 | mov esi,0x10000+1024 ; 8 bit stereo & 16 bit mono |
505 | mov edi,edx |
505 | mov edi,edx |
506 | sub edi,[block] |
506 | sub edi,[block] |
507 | imul edi,[bmul] |
507 | imul edi,[bmul] |
508 | add edi,[buffer] |
508 | add edi,[buffer] |
509 | mov ecx,512 |
509 | mov ecx,512 |
510 | 510 | ||
511 | movedata: |
511 | movedata: |
512 | 512 | ||
513 | mov al,[esi+1] |
513 | mov al,[esi+1] |
514 | 514 | ||
515 | cmp [bytes_per_sample],4 ; for 16 bit stereo |
515 | cmp [bytes_per_sample],4 ; for 16 bit stereo |
516 | jne no_16_stereo |
516 | jne no_16_stereo |
517 | mov al,[esi+1] |
517 | mov al,[esi+1] |
518 | add al,128 |
518 | add al,128 |
519 | no_16_stereo: |
519 | no_16_stereo: |
520 | 520 | ||
521 | cmp [bytes_per_sample],1 ; for 16 bit mono |
521 | cmp [bytes_per_sample],1 ; for 16 bit mono |
522 | je no_16_mono |
522 | je no_16_mono |
523 | cmp [channels],2 |
523 | cmp [channels],2 |
524 | je no_16_mono |
524 | je no_16_mono |
525 | mov al,[esi+1] |
525 | mov al,[esi+1] |
526 | add al,128 |
526 | add al,128 |
527 | no_16_mono: |
527 | no_16_mono: |
528 | 528 | ||
529 | mov [edi],al |
529 | mov [edi],al |
530 | mov eax,[bytes_per_sample] |
530 | mov eax,[bytes_per_sample] |
531 | cmp [mono_stereo],1 |
531 | cmp [mono_stereo],1 |
532 | je bps1 |
532 | je bps1 |
533 | mov eax,[bytes_per_sample] |
533 | mov eax,[bytes_per_sample] |
534 | push ecx |
534 | push ecx |
535 | mov ecx,[mono_stereo] |
535 | mov ecx,[mono_stereo] |
536 | dec ecx |
536 | dec ecx |
537 | shr eax,cl |
537 | shr eax,cl |
538 | pop ecx |
538 | pop ecx |
539 | bps1: |
539 | bps1: |
540 | add esi,eax ; 2;[bytes_per_sample] ; / mono_stereo |
540 | add esi,eax ; 2;[bytes_per_sample] ; / mono_stereo |
541 | add edi,1 |
541 | add edi,1 |
542 | loop movedata |
542 | loop movedata |
543 | 543 | ||
544 | add edx,1 |
544 | add edx,1 |
545 | mov ecx,[block] |
545 | mov ecx,[block] |
546 | add ecx,[addb] |
546 | add ecx,[addb] |
547 | cmp edx,ecx |
547 | cmp edx,ecx |
548 | jbe newread |
548 | jbe newread |
549 | 549 | ||
550 | mov ecx,[addb] |
550 | mov ecx,[addb] |
551 | add [block],ecx |
551 | add [block],ecx |
552 | 552 | ||
553 | call display_progress |
553 | call display_progress |
554 | 554 | ||
555 | rewr: |
555 | rewr: |
556 | 556 | ||
557 | popa |
557 | popa |
558 | 558 | ||
559 | call set_vol_data |
559 | call set_vol_data |
560 | 560 | ||
561 | ret |
561 | ret |
562 | 562 | ||
563 | 563 | ||
564 | set_vol_data: |
564 | set_vol_data: |
565 | 565 | ||
566 | ; ret |
566 | ; ret |
567 | 567 | ||
568 | pusha |
568 | pusha |
569 | 569 | ||
570 | mov eax,65536 |
570 | mov eax,65536 |
571 | xor edx,edx |
571 | xor edx,edx |
572 | mov ebx,[delay] |
572 | mov ebx,[delay] |
573 | div ebx |
573 | div ebx |
574 | push eax |
574 | push eax |
575 | 575 | ||
576 | mov esi,[playposition] |
576 | mov esi,[playposition] |
577 | mov edi,[vol_data] |
577 | mov edi,[vol_data] |
578 | mov ecx,[delay] |
578 | mov ecx,[delay] |
579 | 579 | ||
580 | svd: |
580 | svd: |
581 | 581 | ||
582 | mov eax,0 |
582 | mov eax,0 |
583 | mov edx,100 |
583 | mov edx,100 |
584 | svd3: |
584 | svd3: |
585 | movzx ebx,byte [esi] |
585 | movzx ebx,byte [esi] |
586 | cmp ebx,128 |
586 | cmp ebx,128 |
587 | jge svd2 |
587 | jge svd2 |
588 | mov ebx,0 |
588 | mov ebx,0 |
589 | svd2: |
589 | svd2: |
590 | sub ebx,128 |
590 | sub ebx,128 |
591 | shl ebx,1 |
591 | shl ebx,1 |
592 | 592 | ||
593 | cmp ebx,ebp |
593 | cmp ebx,ebp |
594 | jbe svd4 |
594 | jbe svd4 |
595 | mov edx,ebx |
595 | mov edx,ebx |
596 | svd4: |
596 | svd4: |
597 | 597 | ||
598 | inc esi |
598 | inc esi |
599 | inc eax |
599 | inc eax |
600 | cmp eax,[esp] |
600 | cmp eax,[esp] |
601 | jb svd3 |
601 | jb svd3 |
602 | 602 | ||
603 | mov [edi],dl |
603 | mov [edi],dl |
604 | inc edi |
604 | inc edi |
605 | loop svd |
605 | loop svd |
606 | 606 | ||
607 | pop eax |
607 | pop eax |
608 | popa |
608 | popa |
609 | 609 | ||
610 | ret |
610 | ret |
611 | 611 | ||
612 | 612 | ||
613 | addr dd 0x0 |
613 | addr dd 0x0 |
614 | ya dd 0x0 |
614 | ya dd 0x0 |
615 | 615 | ||
616 | 616 | ||
617 | read_string: |
617 | read_string: |
618 | 618 | ||
619 | mov [onoff],0 |
619 | mov [onoff],0 |
620 | 620 | ||
621 | mov [addr],wavfile |
621 | mov [addr],wavfile |
622 | mov [ya],30 |
622 | mov [ya],30 |
623 | 623 | ||
624 | mov edi,[addr] |
624 | mov edi,[addr] |
625 | mov al,'_' |
625 | mov al,'_' |
626 | mov ecx,32 |
626 | mov ecx,32 |
627 | rep stosb |
627 | rep stosb |
628 | 628 | ||
629 | call print_text |
629 | call print_text |
630 | 630 | ||
631 | mov edi,[addr] |
631 | mov edi,[addr] |
632 | 632 | ||
633 | f11: |
633 | f11: |
634 | mov eax,10 |
634 | mov eax,10 |
635 | mcall |
635 | mcall |
636 | cmp eax,2 |
636 | cmp eax,2 |
637 | jne read_done |
637 | jne read_done |
638 | mov eax,2 |
638 | mov eax,2 |
639 | mcall |
639 | mcall |
640 | shr eax,8 |
640 | shr eax,8 |
641 | cmp eax,13 |
641 | cmp eax,13 |
642 | je read_done |
642 | je read_done |
643 | cmp eax,8 |
643 | cmp eax,8 |
644 | jnz nobsl |
644 | jnz nobsl |
645 | cmp edi,[addr] |
645 | cmp edi,[addr] |
646 | jz f11 |
646 | jz f11 |
647 | sub edi,1 |
647 | sub edi,1 |
648 | mov [edi],byte '_' |
648 | mov [edi],byte '_' |
649 | call print_text |
649 | call print_text |
650 | jmp f11 |
650 | jmp f11 |
651 | nobsl: |
651 | nobsl: |
652 | cmp eax,dword 31 |
652 | cmp eax,dword 31 |
653 | jbe f11 |
653 | jbe f11 |
654 | cmp eax,dword 95 |
654 | cmp eax,dword 95 |
655 | jb keyok |
655 | jb keyok |
656 | sub eax,32 |
656 | sub eax,32 |
657 | keyok: |
657 | keyok: |
658 | mov [edi],al |
658 | mov [edi],al |
659 | 659 | ||
660 | call print_text |
660 | call print_text |
661 | 661 | ||
662 | add edi,1 |
662 | add edi,1 |
663 | mov esi,[addr] |
663 | mov esi,[addr] |
664 | add esi,32 |
664 | add esi,32 |
665 | cmp esi,edi |
665 | cmp esi,edi |
666 | jnz f11 |
666 | jnz f11 |
667 | 667 | ||
668 | read_done: |
668 | read_done: |
669 | 669 | ||
670 | mov ecx,[addr] |
670 | mov ecx,[addr] |
671 | add ecx,38 |
671 | add ecx,38 |
672 | sub ecx,edi |
672 | sub ecx,edi |
673 | mov eax,0 |
673 | mov eax,0 |
674 | cld |
674 | cld |
675 | rep stosb |
675 | rep stosb |
676 | 676 | ||
677 | call print_text |
677 | call print_text |
678 | 678 | ||
679 | ret |
679 | ret |
680 | 680 | ||
681 | 681 | ||
682 | print_text: |
682 | print_text: |
683 | 683 | ||
684 | display_progress: |
684 | display_progress: |
685 | 685 | ||
686 | pusha |
686 | pusha |
687 | 687 | ||
688 | mov eax,13 ; gray progress bar |
688 | mov eax,13 ; gray progress bar |
689 | mov ebx,25*65536+215 |
689 | mov ebx,25*65536+215 |
690 | mov ecx,61*65536+8 |
690 | mov ecx,61*65536+8 |
691 | mov edx,[border] |
691 | mov edx,[border] |
692 | mcall |
692 | mcall |
693 | 693 | ||
694 | cmp [onoff],1 |
694 | cmp [onoff],1 |
695 | je yes_playing |
695 | je yes_playing |
696 | mov [block],0 |
696 | mov [block],0 |
697 | mov [file_size],100*512 |
697 | mov [file_size],100*512 |
698 | yes_playing: |
698 | yes_playing: |
699 | mov eax,[block] ; yellow progress bar |
699 | mov eax,[block] ; yellow progress bar |
700 | imul eax,214 |
700 | imul eax,214 |
701 | xor edx,edx |
701 | xor edx,edx |
702 | mov ebx,[file_size] |
702 | mov ebx,[file_size] |
703 | shr ebx,9 |
703 | shr ebx,9 |
704 | or ebx,1 |
704 | or ebx,1 |
705 | div ebx |
705 | div ebx |
706 | mov ebx,eax |
706 | mov ebx,eax |
707 | and ebx,0xff |
707 | and ebx,0xff |
708 | mov eax,13 |
708 | mov eax,13 |
709 | add ebx,25*65536 |
709 | add ebx,25*65536 |
710 | mov ecx,61*65536+1 |
710 | mov ecx,61*65536+1 |
711 | mov edx,[drawp] |
711 | mov edx,[drawp] |
712 | newbar: |
712 | newbar: |
713 | mcall |
713 | mcall |
714 | add edx,0x101010 |
714 | add edx,0x101010 |
715 | add ecx,1*65536 |
715 | add ecx,1*65536 |
716 | cmp ecx,65*65536 |
716 | cmp ecx,65*65536 |
717 | jb newbar |
717 | jb newbar |
718 | newbar2: |
718 | newbar2: |
719 | mcall |
719 | mcall |
720 | sub edx,0x101010 |
720 | sub edx,0x101010 |
721 | add ecx,1*65536 |
721 | add ecx,1*65536 |
722 | cmp ecx,69*65536 |
722 | cmp ecx,69*65536 |
723 | jb newbar2 |
723 | jb newbar2 |
724 | 724 | ||
725 | 725 | ||
726 | mov eax,[block] |
726 | mov eax,[block] |
727 | imul eax,214-30 |
727 | imul eax,214-30 |
728 | xor edx,edx |
728 | xor edx,edx |
729 | mov ebx,[file_size] |
729 | mov ebx,[file_size] |
730 | shr ebx,9 |
730 | shr ebx,9 |
731 | or ebx,1 |
731 | or ebx,1 |
732 | div ebx |
732 | div ebx |
733 | mov ebx,eax |
733 | mov ebx,eax |
734 | shl ebx,16 |
734 | shl ebx,16 |
735 | add ebx,25*65536+30 |
735 | add ebx,25*65536+30 |
736 | mov ecx,61*65536+9 |
736 | mov ecx,61*65536+9 |
737 | mov edx,0xeeeeff |
737 | mov edx,0xeeeeff |
738 | mov eax,13 |
738 | mov eax,13 |
739 | mov edi,5 |
739 | mov edi,5 |
740 | newb: |
740 | newb: |
741 | ; mcall |
741 | ; mcall |
742 | add ebx,1*65536-2 |
742 | add ebx,1*65536-2 |
743 | add ecx,1*65536-2 |
743 | add ecx,1*65536-2 |
744 | sub edx,0x332211;3366aa |
744 | sub edx,0x332211;3366aa |
745 | dec edi |
745 | dec edi |
746 | jnz newb |
746 | jnz newb |
747 | 747 | ||
748 | 748 | ||
749 | noyellow: |
749 | noyellow: |
750 | 750 | ||
751 | mov esi,[current_play] |
751 | mov esi,[current_play] |
752 | mov edi,now_playing |
752 | mov edi,now_playing |
753 | mov ecx,40 |
753 | mov ecx,40 |
754 | cld |
754 | cld |
755 | rep movsb |
755 | rep movsb |
756 | 756 | ||
757 | mov eax,13 |
757 | mov eax,13 |
758 | mov ebx,42*65536+33*6 |
758 | mov ebx,42*65536+33*6 |
759 | mov ecx,114*65536+11 |
759 | mov ecx,114*65536+11 |
760 | mov edx,0x000000 |
760 | mov edx,0x000000 |
761 | mcall |
761 | mcall |
762 | 762 | ||
763 | mov eax,4 |
763 | mov eax,4 |
764 | mov ebx,42*65536+117 |
764 | mov ebx,42*65536+117 |
765 | mov ecx,[textc] |
765 | mov ecx,[textc] |
766 | mov edx,now_playing |
766 | mov edx,now_playing |
767 | mov esi,38 |
767 | mov esi,38 |
768 | mcall |
768 | mcall |
769 | 769 | ||
770 | popa |
770 | popa |
771 | 771 | ||
772 | ret |
772 | ret |
773 | 773 | ||
774 | 774 | ||
775 | shape_window: |
775 | shape_window: |
776 | 776 | ||
777 | ret |
777 | ret |
778 | 778 | ||
779 | pusha |
779 | pusha |
780 | 780 | ||
781 | mov eax,50 |
781 | mov eax,50 |
782 | mov ebx,0 |
782 | mov ebx,0 |
783 | mov ecx,shape_reference |
783 | mov ecx,shape_reference |
784 | mcall |
784 | mcall |
785 | 785 | ||
786 | mov eax,50 |
786 | mov eax,50 |
787 | mov ebx,1 |
787 | mov ebx,1 |
788 | mov ecx,4 |
788 | mov ecx,4 |
789 | mcall |
789 | mcall |
790 | 790 | ||
791 | popa |
791 | popa |
792 | 792 | ||
793 | ret |
793 | ret |
794 | 794 | ||
795 | 795 | ||
796 | shape_reference: |
796 | shape_reference: |
797 | 797 | ||
798 | times 1 db 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 |
798 | times 1 db 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 |
799 | times 9 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
799 | times 9 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
800 | 800 | ||
801 | infrared_enabled db 0x0 |
801 | infrared_enabled db 0x0 |
802 | 802 | ||
803 | 803 | ||
804 | enable_ir: |
804 | enable_ir: |
805 | 805 | ||
806 | pusha |
806 | pusha |
807 | 807 | ||
808 | mov eax,46 |
808 | mov eax,46 |
809 | mov ebx,0 |
809 | mov ebx,0 |
810 | mov ecx,0x3f0 |
810 | mov ecx,0x3f0 |
811 | mov edx,0x3ff |
811 | mov edx,0x3ff |
812 | mcall |
812 | mcall |
813 | 813 | ||
814 | mov eax,45 |
814 | mov eax,45 |
815 | mov ebx,0 |
815 | mov ebx,0 |
816 | mov ecx,4 |
816 | mov ecx,4 |
817 | mcall |
817 | mcall |
818 | 818 | ||
819 | mov eax,40 |
819 | mov eax,40 |
820 | mov ebx,10000b shl 16 + 111b |
820 | mov ebx,10000b shl 16 + 111b |
821 | mcall |
821 | mcall |
822 | 822 | ||
823 | mov [infrared_enabled],1 |
823 | mov [infrared_enabled],1 |
824 | 824 | ||
825 | popa |
825 | popa |
826 | 826 | ||
827 | ret |
827 | ret |
828 | 828 | ||
829 | 829 | ||
830 | 830 | ||
831 | ; ********************************************* |
831 | ; ********************************************* |
832 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
832 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
833 | ; ********************************************* |
833 | ; ********************************************* |
834 | 834 | ||
835 | 835 | ||
836 | draw_window: |
836 | draw_window: |
837 | 837 | ||
838 | pusha |
838 | pusha |
839 | 839 | ||
840 | inc [next_tic] |
840 | inc [next_tic] |
841 | 841 | ||
842 | mov eax,12 ; function 12:tell os about windowdraw |
842 | mov eax,12 ; function 12:tell os about windowdraw |
843 | mov ebx,1 ; 1, start of draw |
843 | mov ebx,1 ; 1, start of draw |
844 | mcall |
844 | mcall |
845 | ; DRAW WINDOW |
845 | ; DRAW WINDOW |
846 | mov eax,0 ; function 0 : define and draw window |
846 | mov eax,0 ; function 0 : define and draw window |
847 | mov ebx,100*65536+320 ; [x start] *65536 + [x size] |
847 | mov ebx,100*65536+320 ; [x start] *65536 + [x size] |
848 | mov ecx,100*65536+140 ; [y start] *65536 + [y size] |
848 | mov ecx,100*65536+140 ; [y start] *65536 + [y size] |
849 | mov edx,[bgr] |
849 | mov edx,[bgr] |
850 | or edx,0x13000000 ; color of work area RRGGBB,8->color gl |
850 | or edx,0x14000000 ; color of work area RRGGBB,8->color gl |
851 | mov edi,title ; WINDOW LABEL |
851 | mov edi,title ; WINDOW LABEL |
852 | mcall |
852 | mcall |
853 | 853 | ||
854 | 854 | ||
855 | mov eax,8 ; START/STOP - id 2 |
855 | mov eax,8 ; START/STOP - id 2 |
856 | mov ebx,24*65536+77 |
856 | mov ebx,24*65536+77 |
857 | mov ecx,80*65536+16 |
857 | mov ecx,80*65536+16 |
858 | mov edx,2 |
858 | mov edx,2 |
859 | mov esi,[border] |
859 | mov esi,[border] |
860 | mcall |
860 | mcall |
861 | 861 | ||
862 | inc edx ; << / >> - id 3 , 4 |
862 | inc edx ; << / >> - id 3 , 4 |
863 | add ebx,86*65536-57 |
863 | add ebx,86*65536-57 |
864 | mov eax,8 |
864 | mov eax,8 |
865 | mcall |
865 | mcall |
866 | inc edx |
866 | inc edx |
867 | add ebx,24*65536 |
867 | add ebx,24*65536 |
868 | mov eax,8 |
868 | mov eax,8 |
869 | mcall |
869 | mcall |
870 | 870 | ||
871 | mov eax,8 ; REPEAT |
871 | mov eax,8 ; REPEAT |
872 | add ebx,29*65536+54 |
872 | add ebx,29*65536+54 |
873 | inc edx |
873 | inc edx |
874 | mcall |
874 | mcall |
875 | 875 | ||
876 | mov eax,8 ; enable infrared |
876 | mov eax,8 ; enable infrared |
877 | add ebx,98*65536-33 |
877 | add ebx,98*65536-33 |
878 | add ecx,10*65536+10 |
878 | add ecx,10*65536+10 |
879 | inc edx |
879 | inc edx |
880 | mcall |
880 | mcall |
881 | 881 | ||
882 | pusha |
882 | pusha |
883 | mov eax,8 |
883 | mov eax,8 |
884 | mov ebx,25*65536+9 |
884 | mov ebx,25*65536+9 |
885 | mov ecx,115*65536+9 |
885 | mov ecx,115*65536+9 |
886 | inc edx |
886 | inc edx |
887 | mcall |
887 | mcall |
888 | popa |
888 | popa |
889 | 889 | ||
890 | mov eax,4 |
890 | mov eax,4 |
891 | shr ecx,16 |
891 | shr ecx,16 |
892 | mov bx,cx |
892 | mov bx,cx |
893 | add ebx,2*65536+4 |
893 | add ebx,2*65536+4 |
894 | mov ecx,0xffffff |
894 | mov ecx,0xffffff |
895 | mov edx,infrared_text |
895 | mov edx,infrared_text |
896 | mov esi,10 |
896 | mov esi,10 |
897 | mcall |
897 | mcall |
898 | add ebx,11 |
898 | add ebx,11 |
899 | add edx,10 |
899 | add edx,10 |
900 | mov eax,4 |
900 | mov eax,4 |
901 | mcall |
901 | mcall |
902 | 902 | ||
903 | mov ebx,25*65536+35 ; draw info text with function 4 |
903 | mov ebx,25*65536+35 ; draw info text with function 4 |
904 | mov ecx,[textc] |
904 | mov ecx,[textc] |
905 | mov edx,text |
905 | mov edx,text |
906 | mov esi,40 |
906 | mov esi,40 |
907 | newline: |
907 | newline: |
908 | mov eax,4 |
908 | mov eax,4 |
909 | mcall |
909 | mcall |
910 | add ebx,10 |
910 | add ebx,10 |
911 | add edx,40 |
911 | add edx,40 |
912 | cmp [edx],byte 'x' |
912 | cmp [edx],byte 'x' |
913 | jne newline |
913 | jne newline |
914 | 914 | ||
915 | call display_progress |
915 | call display_progress |
916 | 916 | ||
917 | call draw_wave |
917 | call draw_wave |
918 | 918 | ||
919 | mov eax,12 |
919 | mov eax,12 |
920 | mov ebx,2 |
920 | mov ebx,2 |
921 | mcall |
921 | mcall |
922 | 922 | ||
923 | popa |
923 | popa |
924 | ret |
924 | ret |
925 | 925 | ||
926 | 926 | ||
927 | 927 | ||
928 | 928 | ||
929 | draw_wave: |
929 | draw_wave: |
930 | 930 | ||
931 | ; ret |
931 | ; ret |
932 | 932 | ||
933 | pusha |
933 | pusha |
934 | 934 | ||
935 | mov eax,13 |
935 | mov eax,13 |
936 | mov ebx,260*65536+43 |
936 | mov ebx,260*65536+43 |
937 | mov ecx,42*65536+32 |
937 | mov ecx,42*65536+32 |
938 | mov edx,[border] |
938 | mov edx,[border] |
939 | mcall |
939 | mcall |
940 | 940 | ||
941 | mov esi,[playposition] |
941 | mov esi,[playposition] |
942 | mov ebx,260 |
942 | mov ebx,260 |
943 | npix: |
943 | npix: |
944 | mov eax,1 |
944 | mov eax,1 |
945 | inc ebx |
945 | inc ebx |
946 | movzx ecx,byte [esi] |
946 | movzx ecx,byte [esi] |
947 | shr ecx,3 |
947 | shr ecx,3 |
948 | add ecx,42 |
948 | add ecx,42 |
949 | mov edx,[drawc];0x2255aa |
949 | mov edx,[drawc];0x2255aa |
950 | mcall |
950 | mcall |
951 | 951 | ||
952 | add esi,2 |
952 | add esi,2 |
953 | 953 | ||
954 | cmp ebx,300 |
954 | cmp ebx,300 |
955 | jbe npix |
955 | jbe npix |
956 | 956 | ||
957 | popa |
957 | popa |
958 | 958 | ||
959 | ret |
959 | ret |
960 | 960 | ||
961 | 961 | ||
962 | ; DATA AREA |
962 | ; DATA AREA |
963 | 963 | ||
964 | infrared_text: db 'IRMAN INFRAR ' |
964 | infrared_text: db 'IRMAN INFRAR ' |
965 | 965 | ||
966 | 966 | ||
967 | textc dd 0xffffff |
967 | textc dd 0xffffff |
968 | bgr dd 0x00000000 |
968 | bgr dd 0x00000000 |
969 | drawc dd 0x2255aa |
969 | drawc dd 0x2255aa |
970 | drawp dd 0x8011aa |
970 | drawp dd 0x8011aa |
971 | border dd 0x5577aa |
971 | border dd 0x5577aa |
972 | 972 | ||
973 | text: |
973 | text: |
974 | db 'Define SB, HD & partition with setup ' |
974 | db 'Define SB, HD & partition with setup ' |
975 | db 'If clipping change "delay" in source ' |
975 | db 'If clipping change "delay" in source ' |
976 | db ' ' |
976 | db ' ' |
977 | db ' ' |
977 | db ' ' |
978 | db ' ' |
978 | db ' ' |
979 | db ' START/STOP << >> REPEAT:OFF ' |
979 | db ' START/STOP << >> REPEAT:OFF ' |
980 | db 'x <- END MARKER, DONT DELETE ' |
980 | db 'x <- END MARKER, DONT DELETE ' |
981 | now_playing: |
981 | now_playing: |
982 | db ' ' |
982 | db ' ' |
983 | db 'xx ' |
983 | db 'xx ' |
984 | 984 | ||
985 | file_info: |
985 | file_info: |
986 | 986 | ||
987 | dd 0 ; read |
987 | dd 0 ; read |
988 | dd 0 |
988 | dd 0 |
989 | dd 0 |
989 | dd 0 |
990 | dd 0 |
990 | dd 0 |
991 | dd 0 |
991 | dd 0 |
992 | 992 | ||
993 | wavfile: |
993 | wavfile: |
994 | db '/HD/1/MENUET/MUSIC/FILE7.WAV',0 |
994 | db '/HD/1/MENUET/MUSIC/FILE7.WAV',0 |
995 | db ' ' |
995 | db ' ' |
996 | 996 | ||
997 | 997 | ||
998 | title db ' WAVE PLAYER : 8b Mono - 16b Stereo',0 |
998 | title db ' WAVE PLAYER : 8b Mono - 16b Stereo',0 |
999 | 999 | ||
1000 | I_END:->><>><> |
1000 | I_END:->><>><> |