Rev 532 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 532 | Rev 551 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; MIXER |
2 | ; MIXER |
3 | ; |
3 | ; |
4 | ; Compile with FASM |
4 | ; Compile with FASM |
5 | ; |
5 | ; |
6 | 6 | ||
7 | include 'lang.inc' |
7 | include 'lang.inc' |
8 | include '..\..\..\macros.inc' |
8 | include '..\..\..\macros.inc' |
9 | 9 | ||
10 | 10 | ||
11 | use32 |
11 | use32 |
12 | org 0x0 |
12 | org 0x0 |
13 | db 'MENUET01' ; header |
13 | db 'MENUET01' ; header |
14 | dd 0x01 ; header version |
14 | dd 0x01 ; header version |
15 | dd START ; entry point |
15 | dd START ; entry point |
16 | dd I_END ; image size |
16 | dd I_END ; image size |
17 | dd 0x1000 ; required memory |
17 | dd 0x1000 ; required memory |
18 | dd 0x1000 ; esp |
18 | dd 0x1000 ; esp |
19 | dd 0x0 , 0x0 ; I_Param , I_Path |
19 | dd 0x0 , 0x0 ; I_Param , I_Path |
20 | 20 | ||
21 | 21 | ||
22 | 22 | ||
23 | START: ; start of execution |
23 | START: ; start of execution |
24 | 24 | ||
25 | red: ; redraw |
25 | red: ; redraw |
26 | call draw_window ; at first, draw the window |
26 | call draw_window ; at first, draw the window |
27 | 27 | ||
28 | 28 | ||
29 | still: |
29 | still: |
30 | 30 | ||
31 | mov eax,10 ; wait here for event |
31 | mov eax,10 ; wait here for event |
32 | mcall |
32 | mcall |
33 | 33 | ||
34 | cmp eax,1 ; redraw request ? |
34 | cmp eax,1 ; redraw request ? |
35 | jz red |
35 | jz red |
36 | cmp eax,2 ; key in buffer ? |
36 | cmp eax,2 ; key in buffer ? |
37 | jz key |
37 | jz key |
38 | cmp eax,3 ; button in buffer ? |
38 | cmp eax,3 ; button in buffer ? |
39 | jz button |
39 | jz button |
40 | 40 | ||
41 | jmp still |
41 | jmp still |
42 | 42 | ||
43 | key: ; key |
43 | key: ; key |
44 | mov eax,2 ; just read it and ignore |
44 | mov eax,2 ; just read it and ignore |
45 | mcall |
45 | mcall |
46 | 46 | ||
47 | jmp still |
47 | jmp still |
48 | 48 | ||
49 | button: ; button |
49 | button: ; button |
50 | mov eax,17 |
50 | mov eax,17 |
51 | mcall |
51 | mcall |
52 | 52 | ||
53 | cmp ah,1 ; button id=1 ? |
53 | cmp ah,1 ; button id=1 ? |
54 | jnz noclose |
54 | jnz noclose |
55 | or eax,-1 ; close this program |
55 | or eax,-1 ; close this program |
56 | mcall |
56 | mcall |
57 | noclose: |
57 | noclose: |
58 | 58 | ||
59 | cmp ah,101 |
59 | cmp ah,101 |
60 | jnz nochange |
60 | jnz nochange |
61 | xor byte [usecard], 3 ; 1 <-> 2 |
61 | xor byte [usecard], 3 ; 1 <-> 2 |
62 | 62 | ||
63 | call drawusedcard |
63 | call drawusedcard |
64 | 64 | ||
65 | nochange: |
65 | nochange: |
66 | 66 | ||
67 | cmp byte [usecard],byte 1 |
67 | cmp byte [usecard],byte 1 |
68 | jnz usesb16II |
68 | jnz usesb16II |
69 | 69 | ||
70 | ; SOUND BLASTER 16 |
70 | ; SOUND BLASTER 16 |
71 | 71 | ||
72 | 72 | ||
73 | usesb16: |
73 | usesb16: |
74 | 74 | ||
75 | mov al,20 |
75 | mov al,20 |
76 | cmp ah,al |
76 | cmp ah,al |
77 | jge nomain |
77 | jge nomain |
78 | 78 | ||
79 | mov ecx,0 |
79 | mov ecx,0 |
80 | cmp ah,12 |
80 | cmp ah,12 |
81 | jnz nomain12 |
81 | jnz nomain12 |
82 | mov ecx,3*16+3 |
82 | mov ecx,3*16+3 |
83 | nomain12: |
83 | nomain12: |
84 | cmp ah,13 |
84 | cmp ah,13 |
85 | jnz nomain13 |
85 | jnz nomain13 |
86 | mov ecx,7*16+7 |
86 | mov ecx,7*16+7 |
87 | nomain13: |
87 | nomain13: |
88 | cmp ah,14 |
88 | cmp ah,14 |
89 | jnz nomain14 |
89 | jnz nomain14 |
90 | mov ecx,11*16+11 |
90 | mov ecx,11*16+11 |
91 | nomain14: |
91 | nomain14: |
92 | cmp ah,15 |
92 | cmp ah,15 |
93 | jnz nomain15 |
93 | jnz nomain15 |
94 | mov ecx,15*16+15 |
94 | mov ecx,15*16+15 |
95 | nomain15: |
95 | nomain15: |
96 | 96 | ||
97 | mov eax,25 |
97 | mov eax,25 |
98 | mov ebx,1 |
98 | mov ebx,1 |
99 | mcall |
99 | mcall |
100 | 100 | ||
101 | jmp still |
101 | jmp still |
102 | 102 | ||
103 | nomain: |
103 | nomain: |
104 | 104 | ||
105 | mov al,30 |
105 | mov al,30 |
106 | cmp ah,al |
106 | cmp ah,al |
107 | jge nocd |
107 | jge nocd |
108 | 108 | ||
109 | mov ecx,0 |
109 | mov ecx,0 |
110 | 110 | ||
111 | cmp ah,22 |
111 | cmp ah,22 |
112 | jnz nocd12 |
112 | jnz nocd12 |
113 | mov ecx,3*16+3 |
113 | mov ecx,3*16+3 |
114 | nocd12: |
114 | nocd12: |
115 | cmp ah,23 |
115 | cmp ah,23 |
116 | jnz nocd13 |
116 | jnz nocd13 |
117 | mov ecx,7*16+7 |
117 | mov ecx,7*16+7 |
118 | nocd13: |
118 | nocd13: |
119 | cmp ah,24 |
119 | cmp ah,24 |
120 | jnz nocd14 |
120 | jnz nocd14 |
121 | mov ecx,11*16+11 |
121 | mov ecx,11*16+11 |
122 | nocd14: |
122 | nocd14: |
123 | cmp ah,25 |
123 | cmp ah,25 |
124 | jnz nocd15 |
124 | jnz nocd15 |
125 | mov ecx,15*16+15 |
125 | mov ecx,15*16+15 |
126 | nocd15: |
126 | nocd15: |
127 | 127 | ||
128 | mov eax,25 |
128 | mov eax,25 |
129 | mov ebx,2 |
129 | mov ebx,2 |
130 | mcall |
130 | mcall |
131 | 131 | ||
132 | jmp still |
132 | jmp still |
133 | 133 | ||
134 | nocd: |
134 | nocd: |
135 | 135 | ||
136 | 136 | ||
137 | jmp still |
137 | jmp still |
138 | 138 | ||
139 | 139 | ||
140 | 140 | ||
141 | 141 | ||
142 | ; SOUND BLASTER 16 II |
142 | ; SOUND BLASTER 16 II |
143 | 143 | ||
144 | usesb16II: |
144 | usesb16II: |
145 | 145 | ||
146 | cld |
146 | cld |
147 | 147 | ||
148 | mov al,20 |
148 | mov al,20 |
149 | cmp ah,al |
149 | cmp ah,al |
150 | jge IIwnomain |
150 | jge IIwnomain |
151 | 151 | ||
152 | mov ecx,0 |
152 | mov ecx,0 |
153 | cmp ah,12 |
153 | cmp ah,12 |
154 | jnz IIwnomain12 |
154 | jnz IIwnomain12 |
155 | mov ecx,50 |
155 | mov ecx,50 |
156 | IIwnomain12: |
156 | IIwnomain12: |
157 | cmp ah,13 |
157 | cmp ah,13 |
158 | jnz IIwnomain13 |
158 | jnz IIwnomain13 |
159 | mov ecx,150 |
159 | mov ecx,150 |
160 | IIwnomain13: |
160 | IIwnomain13: |
161 | cmp ah,14 |
161 | cmp ah,14 |
162 | jnz IIwnomain14 |
162 | jnz IIwnomain14 |
163 | mov ecx,200 |
163 | mov ecx,200 |
164 | IIwnomain14: |
164 | IIwnomain14: |
165 | cmp ah,15 |
165 | cmp ah,15 |
166 | jnz IIwnomain15 |
166 | jnz IIwnomain15 |
167 | mov ecx,255 |
167 | mov ecx,255 |
168 | IIwnomain15: |
168 | IIwnomain15: |
169 | 169 | ||
170 | mov eax,28 |
170 | mov eax,28 |
171 | mov ebx,1 |
171 | mov ebx,1 |
172 | mcall |
172 | mcall |
173 | 173 | ||
174 | jmp still |
174 | jmp still |
175 | 175 | ||
176 | IIwnomain: |
176 | IIwnomain: |
177 | 177 | ||
178 | mov al,30 |
178 | mov al,30 |
179 | cmp ah,al |
179 | cmp ah,al |
180 | jge IIwnocd |
180 | jge IIwnocd |
181 | 181 | ||
182 | mov ecx,0 |
182 | mov ecx,0 |
183 | 183 | ||
184 | cmp ah,22 |
184 | cmp ah,22 |
185 | jnz IIwnocd12 |
185 | jnz IIwnocd12 |
186 | mov ecx,50 |
186 | mov ecx,50 |
187 | IIwnocd12: |
187 | IIwnocd12: |
188 | cmp ah,23 |
188 | cmp ah,23 |
189 | jnz IIwnocd13 |
189 | jnz IIwnocd13 |
190 | mov ecx,150 |
190 | mov ecx,150 |
191 | IIwnocd13: |
191 | IIwnocd13: |
192 | cmp ah,24 |
192 | cmp ah,24 |
193 | jnz IIwnocd14 |
193 | jnz IIwnocd14 |
194 | mov ecx,200 |
194 | mov ecx,200 |
195 | IIwnocd14: |
195 | IIwnocd14: |
196 | cmp ah,25 |
196 | cmp ah,25 |
197 | jnz IIwnocd15 |
197 | jnz IIwnocd15 |
198 | mov ecx,255 |
198 | mov ecx,255 |
199 | IIwnocd15: |
199 | IIwnocd15: |
200 | 200 | ||
201 | mov eax,28 |
201 | mov eax,28 |
202 | mov ebx,2 |
202 | mov ebx,2 |
203 | mcall |
203 | mcall |
204 | 204 | ||
205 | jmp still |
205 | jmp still |
206 | 206 | ||
207 | IIwnocd: |
207 | IIwnocd: |
208 | 208 | ||
209 | 209 | ||
210 | jmp still |
210 | jmp still |
211 | 211 | ||
212 | 212 | ||
213 | 213 | ||
214 | ; ********************************************* |
214 | ; ********************************************* |
215 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
215 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
216 | ; ********************************************* |
216 | ; ********************************************* |
217 | 217 | ||
218 | 218 | ||
219 | draw_window: |
219 | draw_window: |
220 | 220 | ||
221 | mov eax,12 ; function 12:tell os about windowdraw |
221 | mov eax,12 ; function 12:tell os about windowdraw |
222 | mov ebx,1 ; 1, start of draw |
222 | mov ebx,1 ; 1, start of draw |
223 | mcall |
223 | mcall |
224 | 224 | ||
225 | ; DRAW WINDOW |
225 | ; DRAW WINDOW |
226 | mov eax,0 ; function 0 : define and draw window |
226 | mov eax,0 ; function 0 : define and draw window |
227 | mov ebx,100*65536+195 ; [x start] *65536 + [x size] |
227 | mov ebx,100*65536+195 ; [x start] *65536 + [x size] |
228 | mov ecx,100*65536+140 ; [y start] *65536 + [y size] |
228 | mov ecx,100*65536+140 ; [y start] *65536 + [y size] |
229 | mov edx,[wcolor] ; color of work area RRGGBB |
229 | mov edx,[wcolor] ; color of work area RRGGBB |
230 | mov edi,title ; WINDOW LABEL |
230 | mov edi,title ; WINDOW LABEL |
231 | mcall |
231 | mcall |
232 | 232 | ||
233 | 233 | ||
234 | mov edx,16 ; button id |
234 | mov edx,16 ; button id |
235 | mov ebx,10*65536+22 |
235 | mov ebx,10*65536+22 |
236 | 236 | ||
237 | newbut: |
237 | newbut: |
238 | 238 | ||
239 | push edx |
239 | push edx |
240 | 240 | ||
241 | mov esi,[bcolor] |
241 | mov esi,[bcolor] |
242 | 242 | ||
243 | mov eax,8 ; function 8 : define and draw button |
243 | mov eax,8 ; function 8 : define and draw button |
244 | mov ecx,35*65536+8 ; [y start] *65536 + [y size] |
244 | mov ecx,35*65536+8 ; [y start] *65536 + [y size] |
245 | dec edx |
245 | dec edx |
246 | mcall |
246 | mcall |
247 | mov ecx,45*65536+8 ; [y start] *65536 + [y size] |
247 | mov ecx,45*65536+8 ; [y start] *65536 + [y size] |
248 | dec edx |
248 | dec edx |
249 | mcall |
249 | mcall |
250 | mov ecx,55*65536+8 ; [y start] *65536 + [y size] |
250 | mov ecx,55*65536+8 ; [y start] *65536 + [y size] |
251 | dec edx |
251 | dec edx |
252 | mcall |
252 | mcall |
253 | mov ecx,65*65536+8 ; [y start] *65536 + [y size] |
253 | mov ecx,65*65536+8 ; [y start] *65536 + [y size] |
254 | dec edx |
254 | dec edx |
255 | mcall |
255 | mcall |
256 | mov ecx,75*65536+8 ; [y start] *65536 + [y size] |
256 | mov ecx,75*65536+8 ; [y start] *65536 + [y size] |
257 | dec edx |
257 | dec edx |
258 | mcall |
258 | mcall |
259 | 259 | ||
260 | pop edx |
260 | pop edx |
261 | 261 | ||
262 | add ebx,30*65536 |
262 | add ebx,30*65536 |
263 | add edx,10 |
263 | add edx,10 |
264 | 264 | ||
265 | cmp edx,16+6*10 |
265 | cmp edx,16+6*10 |
266 | jnz newbut |
266 | jnz newbut |
267 | 267 | ||
268 | 268 | ||
269 | mov eax,4 ; function 4 : write text to window |
269 | mov eax,4 ; function 4 : write text to window |
270 | mov ebx,10*65536+104 ; [x start] *65536 + [y start] |
270 | mov ebx,10*65536+104 ; [x start] *65536 + [y start] |
271 | mov ecx,0x00ffffff ; color of text RRGGBB |
271 | mov ecx,0x00ffffff ; color of text RRGGBB |
272 | mov edx,text ; pointer to text beginning |
272 | mov edx,text ; pointer to text beginning |
273 | mov esi,29 |
273 | mov esi,29 |
274 | mcall |
274 | mcall |
275 | 275 | ||
276 | mov eax,8 ; function 8 : define and draw button |
276 | mov eax,8 ; function 8 : define and draw button |
277 | mov ebx,(5)*65536+185 ; [x start] *65536 + [x size] |
277 | mov ebx,(5)*65536+185 ; [x start] *65536 + [x size] |
278 | mov ecx,120*65536+14 ; [y start] *65536 + [y size] |
278 | mov ecx,120*65536+14 ; [y start] *65536 + [y size] |
279 | mov edx,101 ; button id |
279 | mov edx,101 ; button id |
280 | mov esi,[bcolor] ; button color RRGGBB |
280 | mov esi,[bcolor] ; button color RRGGBB |
281 | mcall |
281 | mcall |
282 | 282 | ||
283 | call drawusedcard |
283 | call drawusedcard |
284 | 284 | ||
285 | mov eax,12 ; function 12:tell os about windowdraw |
285 | mov eax,12 ; function 12:tell os about windowdraw |
286 | mov ebx,2 ; 2, end of draw |
286 | mov ebx,2 ; 2, end of draw |
287 | mcall |
287 | mcall |
288 | 288 | ||
289 | ret |
289 | ret |
290 | 290 | ||
291 | 291 | ||
292 | drawusedcard: |
292 | drawusedcard: |
293 | 293 | ||
294 | pusha |
294 | pusha |
295 | 295 | ||
296 | mov eax,13 |
296 | mov eax,13 |
297 | mov ebx,14*65536+160 |
297 | mov ebx,14*65536+160 |
298 | mov ecx,123*65536+10 |
298 | mov ecx,123*65536+10 |
299 | mov edx,[bcolor] |
299 | mov edx,[bcolor] |
300 | mcall |
300 | mcall |
301 | 301 | ||
302 | mov edx,c1 |
302 | mov edx,c1 |
303 | 303 | ||
304 | cmp [usecard],2 |
304 | cmp [usecard],2 |
305 | jnz nosbcII |
305 | jnz nosbcII |
306 | mov edx,c2 |
306 | mov edx,c2 |
307 | nosbcII: |
307 | nosbcII: |
308 | 308 | ||
309 | mov eax,4 |
309 | mov eax,4 |
310 | mov ebx,14*65536+123 |
310 | mov ebx,14*65536+123 |
311 | mov ecx,0x00ffffff |
311 | mov ecx,0x00ffffff |
312 | mov esi,30 |
312 | mov esi,30 |
313 | mcall |
313 | mcall |
314 | 314 | ||
315 | popa |
315 | popa |
316 | 316 | ||
317 | ret |
317 | ret |
318 | 318 | ||
319 | 319 | ||
320 | 320 | ||
321 | ; DATA AREA |
321 | ; DATA AREA |
322 | 322 | ||
323 | bcolor dd 0x5577c8 |
323 | bcolor dd 0x5577c8 |
324 | 324 | ||
325 | wcolor dd 0x13000000 |
325 | wcolor dd 0x14000000 |
326 | 326 | ||
327 | 327 | ||
328 | text: |
328 | text: |
329 | db 'MAIN CD WAVE MPU4 AUX1 AUX2' |
329 | db 'MAIN CD WAVE MPU4 AUX1 AUX2' |
330 | 330 | ||
331 | c1 db 'SOUND BLASTER 16 - MIXER I ' |
331 | c1 db 'SOUND BLASTER 16 - MIXER I ' |
332 | c2 db 'SOUND BLASTER 16 - MIXER II ' |
332 | c2 db 'SOUND BLASTER 16 - MIXER II ' |
333 | 333 | ||
334 | 334 | ||
335 | usecard db 0x1 |
335 | usecard db 0x1 |
336 | 336 | ||
337 | title db 'MIXER',0 |
337 | title db 'MIXER',0 |
338 | 338 | ||
339 | I_END:-> |
339 | I_END:-> |