Rev 9439 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7646 | leency | 1 | ; Простой пример программы для KolibriOS |
2 | ; озвучивает код нажатой клавиши |
||
3 | ; |
||
4 | ;--------------------------------------------------------------------- |
||
5 | |||
8812 | Doczom | 6 | use32 |
7 | org 0 |
||
7646 | leency | 8 | |
8812 | Doczom | 9 | db 'MENUET01' |
10 | dd 1 |
||
11 | dd START |
||
12 | dd I_END |
||
13 | dd MEM |
||
14 | dd STACKTOP |
||
15 | dd 0 |
||
16 | dd 0 |
||
7646 | leency | 17 | |
7650 | leency | 18 | include "lang.inc" |
8812 | Doczom | 19 | include "../../macros.inc" |
9647 | IgorA | 20 | include "../../KOSfuncs.inc" |
7646 | leency | 21 | |
22 | |||
23 | START: |
||
24 | |||
8812 | Doczom | 25 | red: ; перерисовать окно |
7646 | leency | 26 | |
8812 | Doczom | 27 | call draw_window ; вызываем процедуру отрисовки окна |
7646 | leency | 28 | |
29 | |||
30 | still: |
||
9647 | IgorA | 31 | mcall SF_WAIT_EVENT |
7646 | leency | 32 | |
8812 | Doczom | 33 | cmp eax,2 ; нажата клавиша ? |
34 | je key ; если да - на key |
||
35 | cmp eax,3 ; нажата кнопка ? |
||
36 | je button ; если да - на button |
||
37 | cmp eax,1 ; перерисовать окно ? |
||
38 | je red ; если да - на метку red |
||
7646 | leency | 39 | |
8812 | Doczom | 40 | jmp still ; если другое событие - в начало цикла |
7646 | leency | 41 | |
42 | |||
43 | |||
44 | ;--------------------------------------------------------------------- |
||
45 | |||
46 | |||
8812 | Doczom | 47 | key: ; нажата клавиша на клавиатуре |
9647 | IgorA | 48 | mcall SF_GET_KEY ; считать код символа (в ah) |
7646 | leency | 49 | |
50 | |||
8812 | Doczom | 51 | cmp ah, 0x41 ; A - if Caps Lock ON |
52 | jnz @f |
||
53 | jmp _07 |
||
7646 | leency | 54 | @@: |
8812 | Doczom | 55 | cmp ah, 0x5a ; Z |
56 | jnz @f |
||
57 | jmp _08 |
||
7646 | leency | 58 | @@: |
8812 | Doczom | 59 | cmp ah, 0x53 ; S |
60 | jnz @f |
||
61 | jmp _09 |
||
7646 | leency | 62 | @@: |
8812 | Doczom | 63 | cmp ah, 0x58 ; X |
64 | jnz @f |
||
65 | jmp _0a |
||
7646 | leency | 66 | @@: |
8812 | Doczom | 67 | cmp ah, 0x44 ; D |
68 | jnz @f |
||
69 | jmp _0b |
||
7646 | leency | 70 | @@: |
8812 | Doczom | 71 | cmp ah, 0x43 ; C |
72 | jnz @f |
||
73 | jmp _0c |
||
7646 | leency | 74 | @@: |
8812 | Doczom | 75 | cmp ah, 0x56 ; V |
76 | jnz @f |
||
7646 | leency | 77 | _01: |
8812 | Doczom | 78 | mov ah, 0x01 |
79 | jmp p |
||
7646 | leency | 80 | @@: |
8812 | Doczom | 81 | cmp ah, 0x47 ; G |
82 | jnz @f |
||
7646 | leency | 83 | _02: |
8812 | Doczom | 84 | mov ah, 0x02 |
85 | jmp p |
||
7646 | leency | 86 | @@: |
8812 | Doczom | 87 | cmp ah, 0x42 ; B |
88 | jnz @f |
||
7646 | leency | 89 | _03: |
8812 | Doczom | 90 | mov ah, 0x03 |
91 | jmp p |
||
7646 | leency | 92 | @@: |
8812 | Doczom | 93 | cmp ah, 0x48 ; H |
94 | jnz @f |
||
7646 | leency | 95 | _04: |
8812 | Doczom | 96 | mov ah, 0x04 |
97 | jmp p |
||
7646 | leency | 98 | @@: |
8812 | Doczom | 99 | cmp ah, 0x4e ; N |
100 | jnz @f |
||
7646 | leency | 101 | _05: |
8812 | Doczom | 102 | mov ah, 0x05 |
103 | jmp p |
||
7646 | leency | 104 | @@: |
8812 | Doczom | 105 | cmp ah, 0x4d ; M |
106 | jnz @f |
||
7646 | leency | 107 | _06: |
8812 | Doczom | 108 | mov ah, 0x06 |
109 | jmp p |
||
7646 | leency | 110 | @@: |
8812 | Doczom | 111 | cmp ah, 0x4b ; K |
112 | jnz @f |
||
7646 | leency | 113 | _07: |
8812 | Doczom | 114 | mov ah, 0x07 |
115 | jmp p |
||
7646 | leency | 116 | @@: |
8812 | Doczom | 117 | cmp ah, 0x3c ; < |
118 | jnz @f |
||
7646 | leency | 119 | _08: |
8812 | Doczom | 120 | mov ah, 0x08 |
121 | jmp p |
||
7646 | leency | 122 | @@: |
8812 | Doczom | 123 | cmp ah, 0x4c ; L |
124 | jnz @f |
||
7646 | leency | 125 | _09: |
8812 | Doczom | 126 | mov ah, 0x09 |
127 | jmp p |
||
7646 | leency | 128 | @@: |
8812 | Doczom | 129 | cmp ah, 0x3e ; > |
130 | jnz @f |
||
7646 | leency | 131 | _0a: |
8812 | Doczom | 132 | mov ah, 0x0a |
133 | jmp p |
||
7646 | leency | 134 | @@: |
8812 | Doczom | 135 | cmp ah, 0x3a ; : |
136 | jnz @f |
||
7646 | leency | 137 | _0b: |
8812 | Doczom | 138 | mov ah, 0x0b |
139 | jmp p |
||
7646 | leency | 140 | @@: |
8812 | Doczom | 141 | cmp ah, 0x3f ; ? |
142 | jnz @f |
||
7646 | leency | 143 | _0c: |
8812 | Doczom | 144 | mov ah, 0x0c |
145 | jmp p |
||
7646 | leency | 146 | @@: |
8812 | Doczom | 147 | cmp ah, 0x22 ; " |
148 | jnz @f |
||
149 | jmp _11 |
||
7646 | leency | 150 | @@: |
8812 | Doczom | 151 | cmp ah, 0x21 ; key !------- |
152 | jnz @f |
||
153 | jmp _0c |
||
7646 | leency | 154 | @@: |
8812 | Doczom | 155 | cmp ah, 0x51 ; key Q |
156 | jnz @f |
||
7646 | leency | 157 | _11: |
8812 | Doczom | 158 | mov ah, 0x11 |
159 | jmp p |
||
7646 | leency | 160 | @@: |
8812 | Doczom | 161 | cmp ah, 0x40 ; key @ |
162 | jnz @f |
||
7646 | leency | 163 | _12: |
8812 | Doczom | 164 | mov ah, 0x12 |
165 | jmp p |
||
7646 | leency | 166 | @@: |
8812 | Doczom | 167 | cmp ah, 0x57 ; key W |
168 | jnz @f |
||
7646 | leency | 169 | _13: |
8812 | Doczom | 170 | mov ah, 0x13 |
171 | jmp p |
||
7646 | leency | 172 | @@: |
8812 | Doczom | 173 | cmp ah, 0x23 ; key # |
174 | jnz @f |
||
7646 | leency | 175 | _14: |
8812 | Doczom | 176 | mov ah, 0x14 |
177 | jmp p |
||
7646 | leency | 178 | @@: |
8812 | Doczom | 179 | cmp ah, 0x45 ; key E |
180 | jnz @f |
||
7646 | leency | 181 | _15: |
8812 | Doczom | 182 | mov ah, 0x15 |
183 | jmp p |
||
7646 | leency | 184 | @@: |
8812 | Doczom | 185 | cmp ah, 0x52 ; key R |
186 | jnz @f |
||
7646 | leency | 187 | _16: |
8812 | Doczom | 188 | mov ah, 0x16 |
189 | jmp p |
||
7646 | leency | 190 | @@: |
8812 | Doczom | 191 | cmp ah, 0x25 ; key % |
192 | jnz @f |
||
193 | jmp _17 |
||
7646 | leency | 194 | @@: |
8812 | Doczom | 195 | cmp ah, 0x54 ; key T |
196 | jnz @f |
||
197 | jmp _18 |
||
7646 | leency | 198 | @@: |
8812 | Doczom | 199 | cmp ah, 0x5e ; key ^ |
200 | jnz @f |
||
201 | jmp _19 |
||
7646 | leency | 202 | @@: |
8812 | Doczom | 203 | cmp ah, 0x59 ; key Y |
204 | jnz @f |
||
205 | jmp _1a |
||
7646 | leency | 206 | @@: |
8812 | Doczom | 207 | cmp ah, 0x26 ; key & |
208 | jnz @f |
||
209 | jmp _1b |
||
7646 | leency | 210 | @@: |
8812 | Doczom | 211 | cmp ah, 0x55 ; key U |
212 | jnz @f |
||
213 | jmp _1c |
||
7646 | leency | 214 | @@: |
8812 | Doczom | 215 | cmp ah, 0x49 ; key I |
216 | jnz @f |
||
217 | jmp _21 |
||
7646 | leency | 218 | @@: |
8812 | Doczom | 219 | cmp ah, 0x28 ; key ( |
220 | jnz @f |
||
221 | jmp _22 |
||
7646 | leency | 222 | @@: |
8812 | Doczom | 223 | cmp ah, 0x4f ; key O |
224 | jnz @f |
||
225 | jmp _23 |
||
7646 | leency | 226 | @@: |
8812 | Doczom | 227 | cmp ah, 0x29 ; key ) |
228 | jnz @f |
||
229 | jmp _24 |
||
7646 | leency | 230 | @@: |
8812 | Doczom | 231 | cmp ah, 0x50 ; key P |
232 | jnz @f |
||
233 | jmp _25 |
||
7646 | leency | 234 | @@: |
8812 | Doczom | 235 | cmp ah, 0x7b ; key { |
236 | jnz @f |
||
237 | jmp _26 |
||
7646 | leency | 238 | @@: |
8812 | Doczom | 239 | cmp ah, 0x2b ; key + |
240 | jnz @f |
||
241 | jmp _27 |
||
7646 | leency | 242 | @@: |
8812 | Doczom | 243 | cmp ah, 0x7d ; key } |
244 | jnz @f |
||
245 | jmp _28 |
||
7646 | leency | 246 | @@: |
8812 | Doczom | 247 | cmp ah, 0x7c ; key | |
248 | jnz @f |
||
249 | jmp _29 |
||
7646 | leency | 250 | @@: |
8812 | Doczom | 251 | cmp ah, 0x61 ; a - if Caps Lock OFF |
252 | jnz @f |
||
7646 | leency | 253 | _17: |
8812 | Doczom | 254 | mov ah, 0x17 |
255 | jmp p |
||
7646 | leency | 256 | @@: |
8812 | Doczom | 257 | cmp ah, 0x7a ; z |
258 | jnz @f |
||
7646 | leency | 259 | _18: |
8812 | Doczom | 260 | mov ah, 0x18 |
261 | jmp p |
||
7646 | leency | 262 | @@: |
8812 | Doczom | 263 | cmp ah, 0x73 ; s |
264 | jnz @f |
||
7646 | leency | 265 | _19: |
8812 | Doczom | 266 | mov ah, 0x19 |
267 | jmp p |
||
7646 | leency | 268 | @@: |
8812 | Doczom | 269 | cmp ah, 0x78 ; x |
270 | jnz @f |
||
7646 | leency | 271 | _1a: |
8812 | Doczom | 272 | mov ah, 0x1a |
273 | jmp p |
||
7646 | leency | 274 | @@: |
8812 | Doczom | 275 | cmp ah, 0x64 ; d |
276 | jnz @f |
||
7646 | leency | 277 | _1b: |
8812 | Doczom | 278 | mov ah, 0x1b |
279 | jmp p |
||
7646 | leency | 280 | @@: |
8812 | Doczom | 281 | cmp ah, 0x63 ; c |
282 | jnz @f |
||
7646 | leency | 283 | _1c: |
8812 | Doczom | 284 | mov ah, 0x1c |
285 | jmp p |
||
7646 | leency | 286 | @@: |
8812 | Doczom | 287 | cmp ah, 0x76 ; v |
288 | jnz @f |
||
7646 | leency | 289 | _21: |
8812 | Doczom | 290 | mov ah, 0x21 |
291 | jmp p |
||
7646 | leency | 292 | @@: |
8812 | Doczom | 293 | cmp ah, 0x67 ; g |
294 | jnz @f |
||
7646 | leency | 295 | _22: |
8812 | Doczom | 296 | mov ah, 0x22 |
297 | jmp p |
||
7646 | leency | 298 | @@: |
8812 | Doczom | 299 | cmp ah, 0x62 ; b |
300 | jnz @f |
||
7646 | leency | 301 | _23: |
8812 | Doczom | 302 | mov ah, 0x23 |
303 | jmp p |
||
7646 | leency | 304 | @@: |
8812 | Doczom | 305 | cmp ah, 0x68 ; h |
306 | jnz @f |
||
7646 | leency | 307 | _24: |
8812 | Doczom | 308 | mov ah, 0x24 |
309 | jmp p |
||
7646 | leency | 310 | @@: |
8812 | Doczom | 311 | cmp ah, 0x6e ; n |
312 | jnz @f |
||
7646 | leency | 313 | _25: |
8812 | Doczom | 314 | mov ah, 0x25 |
315 | jmp p |
||
7646 | leency | 316 | @@: |
8812 | Doczom | 317 | cmp ah, 0x6d ; m |
318 | jnz @f |
||
7646 | leency | 319 | _26: |
8812 | Doczom | 320 | mov ah, 0x26 |
321 | jmp p |
||
7646 | leency | 322 | @@: |
8812 | Doczom | 323 | cmp ah, 0x6b ; k |
324 | jnz @f |
||
7646 | leency | 325 | _27: |
8812 | Doczom | 326 | mov ah, 0x27 |
327 | jmp p |
||
7646 | leency | 328 | @@: |
8812 | Doczom | 329 | cmp ah, 0x2c ; , |
330 | jnz @f |
||
7646 | leency | 331 | _28: |
8812 | Doczom | 332 | mov ah, 0x28 |
333 | jmp p |
||
7646 | leency | 334 | @@: |
8812 | Doczom | 335 | cmp ah, 0x6c ; l |
336 | jnz @f |
||
7646 | leency | 337 | _29: |
8812 | Doczom | 338 | mov ah, 0x29 |
339 | jmp p |
||
7646 | leency | 340 | @@: |
8812 | Doczom | 341 | cmp ah, 0x2e ; . |
342 | jnz @f |
||
7646 | leency | 343 | _2a: |
8812 | Doczom | 344 | mov ah, 0x2a |
345 | jmp p |
||
7646 | leency | 346 | @@: |
8812 | Doczom | 347 | cmp ah, 0x3b ; ; |
348 | jnz @f |
||
7646 | leency | 349 | _2b: |
8812 | Doczom | 350 | mov ah, 0x2b |
351 | jmp p |
||
7646 | leency | 352 | @@: |
8812 | Doczom | 353 | cmp ah, 0x2f ; / |
354 | jnz @f |
||
7646 | leency | 355 | _2c: |
8812 | Doczom | 356 | mov ah, 0x2c |
357 | jmp p |
||
7646 | leency | 358 | @@: |
8812 | Doczom | 359 | cmp ah, 0x27 ; ' |
360 | jnz @f |
||
7646 | leency | 361 | _31: |
8812 | Doczom | 362 | mov ah, 0x31 |
363 | jmp p |
||
7646 | leency | 364 | @@: |
8812 | Doczom | 365 | cmp ah, 0x60 ; key ` |
366 | jnz @f |
||
367 | jmp _2c |
||
7646 | leency | 368 | @@: |
8812 | Doczom | 369 | cmp ah, 0x09 ; key tab |
370 | jnz @f |
||
371 | jmp _31 |
||
7646 | leency | 372 | @@: |
8812 | Doczom | 373 | cmp ah, 0x31 ; key 1 |
374 | jnz @f |
||
7646 | leency | 375 | _32: |
8812 | Doczom | 376 | mov ah, 0x32 |
377 | jmp p |
||
7646 | leency | 378 | @@: |
8812 | Doczom | 379 | cmp ah, 0x71 ; key q |
380 | jnz @f |
||
7646 | leency | 381 | _33: |
8812 | Doczom | 382 | mov ah, 0x33 |
383 | jmp p |
||
7646 | leency | 384 | @@: |
8812 | Doczom | 385 | cmp ah, 0x32 ; key 2 |
386 | jnz @f |
||
7646 | leency | 387 | _34: |
8812 | Doczom | 388 | mov ah, 0x34 |
389 | jmp p |
||
7646 | leency | 390 | @@: |
8812 | Doczom | 391 | cmp ah, 0x77 ; key w |
392 | jnz @f |
||
7646 | leency | 393 | _35: |
8812 | Doczom | 394 | mov ah, 0x35 |
395 | jmp p |
||
7646 | leency | 396 | @@: |
8812 | Doczom | 397 | cmp ah, 0x65 ; key e |
398 | jnz @f |
||
7646 | leency | 399 | _36: |
8812 | Doczom | 400 | mov ah, 0x36 |
401 | jmp p |
||
7646 | leency | 402 | @@: |
8812 | Doczom | 403 | cmp ah, 0x34 ; key 4 |
404 | jnz @f |
||
7646 | leency | 405 | _37: |
8812 | Doczom | 406 | mov ah, 0x37 |
407 | jmp p |
||
7646 | leency | 408 | @@: |
8812 | Doczom | 409 | cmp ah, 0x72 ; key r |
410 | jnz @f |
||
7646 | leency | 411 | _38: |
8812 | Doczom | 412 | mov ah, 0x38 |
413 | jmp p |
||
7646 | leency | 414 | @@: |
8812 | Doczom | 415 | cmp ah, 0x35 ; key 5 |
416 | jnz @f |
||
7646 | leency | 417 | _39: |
8812 | Doczom | 418 | mov ah, 0x39 |
419 | jmp p |
||
7646 | leency | 420 | @@: |
8812 | Doczom | 421 | cmp ah, 0x74 ; key t |
422 | jnz @f |
||
7646 | leency | 423 | _3a: |
8812 | Doczom | 424 | mov ah, 0x3a |
425 | jmp p |
||
7646 | leency | 426 | @@: |
8812 | Doczom | 427 | cmp ah, 0x36 ; key 6 |
428 | jnz @f |
||
7646 | leency | 429 | _3b: |
8812 | Doczom | 430 | mov ah, 0x3b |
431 | jmp p |
||
7646 | leency | 432 | @@: |
8812 | Doczom | 433 | cmp ah, 0x79 ; key y |
434 | jnz @f |
||
7646 | leency | 435 | _3c: |
8812 | Doczom | 436 | mov ah, 0x3c |
437 | jmp p |
||
7646 | leency | 438 | @@: |
8812 | Doczom | 439 | cmp ah, 0x75 ; key u |
440 | jnz @f |
||
7646 | leency | 441 | _41: |
8812 | Doczom | 442 | mov ah, 0x41 |
443 | jmp p |
||
7646 | leency | 444 | @@: |
8812 | Doczom | 445 | cmp ah, 0x38 ; key 8 |
446 | jnz @f |
||
447 | mov ah, 0x42 |
||
448 | jmp p |
||
7646 | leency | 449 | @@: |
8812 | Doczom | 450 | cmp ah, 0x69 ; key i |
451 | jnz @f |
||
452 | mov ah, 0x43 |
||
453 | jmp p |
||
7646 | leency | 454 | @@: |
8812 | Doczom | 455 | cmp ah, 0x39 ; key 9 |
456 | jnz @f |
||
457 | mov ah, 0x44 |
||
458 | jmp p |
||
7646 | leency | 459 | @@: |
8812 | Doczom | 460 | cmp ah, 0x6f ; key o |
461 | jnz @f |
||
462 | mov ah, 0x45 |
||
463 | jmp p |
||
7646 | leency | 464 | @@: |
8812 | Doczom | 465 | cmp ah, 0x70 ; key p |
466 | jnz @f |
||
467 | mov ah, 0x46 |
||
468 | jmp p |
||
7646 | leency | 469 | @@: |
8812 | Doczom | 470 | cmp ah, 0x2d ; key - |
471 | jnz @f |
||
472 | mov ah, 0x47 |
||
473 | jmp p |
||
7646 | leency | 474 | @@: |
8812 | Doczom | 475 | cmp ah, 0x5b ; key [ |
476 | jnz @f |
||
477 | mov ah, 0x48 |
||
478 | jmp p |
||
7646 | leency | 479 | @@: |
8812 | Doczom | 480 | cmp ah, 0x3d ; key = |
481 | jnz @f |
||
482 | mov ah, 0x49 |
||
483 | jmp p |
||
7646 | leency | 484 | @@: |
8812 | Doczom | 485 | cmp ah, 0x5d ; key ] |
486 | jnz @f |
||
487 | mov ah, 0x4a |
||
488 | jmp p |
||
7646 | leency | 489 | @@: |
8812 | Doczom | 490 | cmp ah, 0x5c ; key \ |
491 | jnz @f |
||
492 | mov ah, 0x4b |
||
493 | jmp p |
||
7646 | leency | 494 | @@: |
8812 | Doczom | 495 | cmp ah, 0x08 ; key backspace |
496 | jnz @f |
||
497 | mov ah, 0x4c |
||
498 | jmp p |
||
7646 | leency | 499 | @@: |
8812 | Doczom | 500 | cmp ah, 0x0d ; key enter |
501 | jnz @f |
||
502 | mov ah, 0x51 |
||
503 | jmp p |
||
7646 | leency | 504 | @@: |
8812 | Doczom | 505 | cmp ah, 0x66 ; key f |
506 | jnz @f |
||
507 | mov ah, 0x01 |
||
508 | jmp p |
||
7646 | leency | 509 | @@: |
8812 | Doczom | 510 | cmp ah, 0x6a ; key j |
511 | jnz @f |
||
512 | mov ah, 0x05 |
||
513 | jmp p |
||
7646 | leency | 514 | @@: |
8812 | Doczom | 515 | cmp ah, 0x33 ; key 3 |
516 | jnz @f |
||
517 | mov ah, 0x08 |
||
518 | jmp p |
||
7646 | leency | 519 | @@: |
8812 | Doczom | 520 | cmp ah, 0x37 ; key 7 |
521 | jnz @f |
||
522 | jmp _11 |
||
7646 | leency | 523 | @@: |
8812 | Doczom | 524 | cmp ah, 0x30 ; key 0 |
525 | jnz @f |
||
526 | jmp _15 |
||
7646 | leency | 527 | @@: |
8812 | Doczom | 528 | cmp ah, 0xb4 ; key home |
529 | jnz @f |
||
530 | mov ah, 0x10 |
||
531 | jmp p |
||
7646 | leency | 532 | @@: |
8812 | Doczom | 533 | cmp ah, 0xb5 ; key end |
534 | jnz @f |
||
7646 | leency | 535 | _70: |
8812 | Doczom | 536 | mov ah, 0xfc |
537 | jmp p |
||
7646 | leency | 538 | @@: |
8812 | Doczom | 539 | cmp ah, 0xb8 ; key Page Up |
540 | jnz @f |
||
541 | mov ah, 0x20 |
||
542 | jmp p |
||
7646 | leency | 543 | @@: |
8812 | Doczom | 544 | cmp ah, 0xb7 ; key Page Down |
545 | jnz @f |
||
546 | jmp _70 |
||
7646 | leency | 547 | @@: |
8812 | Doczom | 548 | cmp ah, 0xff ; key F12 |
549 | jnz @f |
||
550 | mov ah, 0x00 |
||
551 | jmp p |
||
7646 | leency | 552 | @@: |
8812 | Doczom | 553 | cmp ah, 0xb6 ; key Del |
554 | jnz @f |
||
555 | jmp _70 |
||
7646 | leency | 556 | @@: |
557 | |||
558 | p: |
||
559 | mov [M+1], ah ; записать код символа как код ноты |
||
560 | |||
561 | ; функция 55-55: системный динамик ("PlayNote") |
||
562 | ; esi - адрес мелодии |
||
563 | |||
9647 | IgorA | 564 | mov eax,SF_SPEAKER_PLAY |
7646 | leency | 565 | mov ebx,eax |
566 | mov esi,M |
||
567 | int 0x40 |
||
568 | |||
569 | ; или коротко: |
||
9647 | IgorA | 570 | ;mcall SF_SPEAKER_PLAY, , , , Music |
7646 | leency | 571 | |
8812 | Doczom | 572 | jmp still ; вернуться к началу цикла |
7646 | leency | 573 | |
574 | |||
575 | ;--------------------------------------------------------------------- |
||
576 | |||
577 | button: |
||
9647 | IgorA | 578 | mcall SF_GET_BUTTON |
7646 | leency | 579 | |
8812 | Doczom | 580 | cmp ah, 0xa1 ; button 1 |
581 | jnz @f |
||
582 | jmp _01 |
||
7646 | leency | 583 | @@: |
8812 | Doczom | 584 | cmp ah, 0x02 ; button 2 |
585 | jnz @f |
||
586 | jmp _02 |
||
7646 | leency | 587 | @@: |
8812 | Doczom | 588 | cmp ah, 0x03 ; button 3 |
589 | jnz @f |
||
590 | jmp _03 |
||
7646 | leency | 591 | @@: |
8812 | Doczom | 592 | cmp ah, 0x04 |
593 | jnz @f |
||
594 | jmp _04 |
||
7646 | leency | 595 | @@: |
8812 | Doczom | 596 | cmp ah, 0x05 |
597 | jnz @f |
||
598 | jmp _05 |
||
7646 | leency | 599 | @@: |
8812 | Doczom | 600 | cmp ah, 0x06 |
601 | jnz @f |
||
602 | jmp _06 |
||
7646 | leency | 603 | @@: |
8812 | Doczom | 604 | cmp ah, 0x07 |
605 | jnz @f |
||
606 | jmp _07 |
||
7646 | leency | 607 | @@: |
8812 | Doczom | 608 | cmp ah, 0x08 ; button 8 |
609 | jnz @f |
||
610 | jmp _08 |
||
7646 | leency | 611 | @@: |
8812 | Doczom | 612 | cmp ah, 0x09 |
613 | jnz @f |
||
614 | jmp _09 |
||
7646 | leency | 615 | @@: |
8812 | Doczom | 616 | cmp ah, 0x0a ; button 10 |
617 | jnz @f |
||
618 | jmp _0a |
||
7646 | leency | 619 | @@: |
8812 | Doczom | 620 | cmp ah, 0x0b |
621 | jnz @f |
||
622 | jmp _0b |
||
7646 | leency | 623 | @@: |
8812 | Doczom | 624 | cmp ah, 0x0c ; button 12 |
625 | jnz @f |
||
626 | jmp _0c |
||
7646 | leency | 627 | @@: |
628 | |||
8812 | Doczom | 629 | cmp ah, 0x11 |
630 | jnz @f |
||
631 | jmp _11 |
||
7646 | leency | 632 | @@: |
8812 | Doczom | 633 | cmp ah, 0x12 |
634 | jnz @f |
||
635 | jmp _12 |
||
7646 | leency | 636 | @@: |
8812 | Doczom | 637 | cmp ah, 0x13 |
638 | jnz @f |
||
639 | jmp _13 |
||
7646 | leency | 640 | @@: |
8812 | Doczom | 641 | cmp ah, 0x14 |
642 | jnz @f |
||
643 | jmp _14 |
||
7646 | leency | 644 | @@: |
8812 | Doczom | 645 | cmp ah, 0x15 |
646 | jnz @f |
||
647 | jmp _15 |
||
7646 | leency | 648 | @@: |
8812 | Doczom | 649 | cmp ah, 0x16 |
650 | jnz @f |
||
651 | jmp _16 |
||
7646 | leency | 652 | @@: |
8812 | Doczom | 653 | cmp ah, 0x17 |
654 | jnz @f |
||
655 | jmp _17 |
||
7646 | leency | 656 | @@: |
8812 | Doczom | 657 | cmp ah, 0x18 |
658 | jnz @f |
||
659 | jmp _18 |
||
7646 | leency | 660 | @@: |
8812 | Doczom | 661 | cmp ah, 0x19 |
662 | jnz @f |
||
663 | jmp _19 |
||
7646 | leency | 664 | @@: |
8812 | Doczom | 665 | cmp ah, 0x1a |
666 | jnz @f |
||
667 | jmp _1a |
||
7646 | leency | 668 | @@: |
8812 | Doczom | 669 | cmp ah, 0x1b |
670 | jnz @f |
||
671 | jmp _1b |
||
7646 | leency | 672 | @@: |
8812 | Doczom | 673 | cmp ah, 0x1c |
674 | jnz @f |
||
675 | jmp _1c |
||
7646 | leency | 676 | @@: |
677 | |||
8812 | Doczom | 678 | cmp ah, 0x21 ; button 1 |
679 | jnz @f |
||
680 | jmp _21 |
||
7646 | leency | 681 | @@: |
8812 | Doczom | 682 | cmp ah, 0x22 |
683 | jnz @f |
||
684 | jmp _22 |
||
7646 | leency | 685 | @@: |
8812 | Doczom | 686 | cmp ah, 0x23 ; button 3 |
687 | jnz @f |
||
688 | jmp _23 |
||
7646 | leency | 689 | @@: |
8812 | Doczom | 690 | cmp ah, 0x24 |
691 | jnz @f |
||
692 | jmp _24 |
||
7646 | leency | 693 | @@: |
8812 | Doczom | 694 | cmp ah, 0x25 ; button 5 |
695 | jnz @f |
||
696 | jmp _25 |
||
7646 | leency | 697 | @@: |
8812 | Doczom | 698 | cmp ah, 0x26 |
699 | jnz @f |
||
700 | jmp _26 |
||
7646 | leency | 701 | @@: |
8812 | Doczom | 702 | cmp ah, 0x27 ; button 7 |
703 | jnz @f |
||
704 | jmp _27 |
||
7646 | leency | 705 | @@: |
8812 | Doczom | 706 | cmp ah, 0x28 |
707 | jnz @f |
||
708 | jmp _28 |
||
7646 | leency | 709 | @@: |
8812 | Doczom | 710 | cmp ah, 0x29 ; button 9 |
711 | jnz @f |
||
712 | jmp _29 |
||
7646 | leency | 713 | @@: |
8812 | Doczom | 714 | cmp ah, 0x2a |
715 | jnz @f |
||
716 | jmp _2a |
||
7646 | leency | 717 | @@: |
8812 | Doczom | 718 | cmp ah, 0x2b ; button 11 |
719 | jnz @f |
||
720 | jmp _2b |
||
7646 | leency | 721 | @@: |
8812 | Doczom | 722 | cmp ah, 0x2c |
723 | jnz @f |
||
724 | jmp _2c |
||
7646 | leency | 725 | @@: |
8812 | Doczom | 726 | cmp ah, 0x31 |
727 | jnz @f |
||
728 | jmp _31 |
||
7646 | leency | 729 | |
730 | @@: |
||
8812 | Doczom | 731 | cmp ah, 0x32 |
732 | jnz @f |
||
733 | jmp _32 |
||
7646 | leency | 734 | @@: |
8812 | Doczom | 735 | cmp ah, 0x33 |
736 | jnz @f |
||
737 | jmp _33 |
||
7646 | leency | 738 | @@: |
8812 | Doczom | 739 | cmp ah, 0x34 |
740 | jnz @f |
||
741 | jmp _34 |
||
7646 | leency | 742 | @@: |
8812 | Doczom | 743 | cmp ah, 0x35 |
744 | jnz @f |
||
745 | jmp _35 |
||
7646 | leency | 746 | @@: |
8812 | Doczom | 747 | cmp ah, 0x36 |
748 | jnz @f |
||
749 | jmp _36 |
||
7646 | leency | 750 | @@: |
8812 | Doczom | 751 | cmp ah, 0x37 |
752 | jnz @f |
||
753 | jmp _37 |
||
7646 | leency | 754 | @@: |
8812 | Doczom | 755 | cmp ah, 0x38 |
756 | jnz @f |
||
757 | jmp _38 |
||
7646 | leency | 758 | @@: |
8812 | Doczom | 759 | cmp ah, 0x39 |
760 | jnz @f |
||
761 | jmp _39 |
||
7646 | leency | 762 | @@: |
8812 | Doczom | 763 | cmp ah, 0x3a |
764 | jnz @f |
||
765 | jmp _3a |
||
7646 | leency | 766 | @@: |
8812 | Doczom | 767 | cmp ah, 0x3b |
768 | jnz @f |
||
769 | jmp _3b |
||
7646 | leency | 770 | @@: |
8812 | Doczom | 771 | cmp ah, 0x3c |
772 | jnz @f |
||
773 | jmp _3c |
||
7646 | leency | 774 | @@: |
8812 | Doczom | 775 | cmp ah, 0x41 |
776 | jnz @f |
||
777 | jmp _41 |
||
7646 | leency | 778 | @@: |
779 | |||
8812 | Doczom | 780 | cmp ah, 1 ; если НЕ нажата кнопка с номером 1, |
781 | jne still ; вернуться |
||
7646 | leency | 782 | |
783 | .exit: |
||
9647 | IgorA | 784 | mcall SF_TERMINATE_PROCESS ; иначе конец программы |
7646 | leency | 785 | |
786 | |||
787 | ;--------------------------------------------------------------------- |
||
788 | ;--- ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА ---------------------------------- |
||
789 | ;--------------------------------------------------------------------- |
||
790 | |||
7648 | leency | 791 | WHITE_W=48 ; While key width |
792 | BLACK_W=30 ; Black key width |
||
793 | BLACK_X=34 ; Black key X offset |
||
794 | |||
7646 | leency | 795 | draw_window: |
796 | |||
9647 | IgorA | 797 | mcall SF_REDRAW, SSF_BEGIN_DRAW ; сообщить ОС о начале отрисовки |
7646 | leency | 798 | |
9647 | IgorA | 799 | mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc,sizeof.system_colors |
7646 | leency | 800 | |
801 | |||
8812 | Doczom | 802 | mov edx, [sc.work] ; цвет фона |
803 | or edx, 0x33000000 ; и тип окна 3 |
||
9647 | IgorA | 804 | mcall SF_CREATE_WINDOW, <20,WHITE_W*15+9>, <200,250>, , ,caption |
8812 | Doczom | 805 | |
9647 | IgorA | 806 | mcall SF_DEFINE_BUTTON, |
807 | mcall , |
||
808 | mcall , |
||
809 | mcall , |
||
810 | mcall , |
||
811 | mcall , |
||
812 | mcall , |
||
813 | mcall , |
||
814 | mcall , |
||
815 | mcall , |
||
816 | mcall , |
||
817 | mcall , |
||
818 | mcall , |
||
819 | mcall , |
||
820 | mcall , |
||
7646 | leency | 821 | |
9647 | IgorA | 822 | mcall , |
823 | mcall , |
||
824 | mcall , |
||
825 | mcall , |
||
826 | mcall , |
||
827 | mcall , |
||
828 | mcall , |
||
829 | mcall , |
||
830 | mcall , |
||
831 | mcall , |
||
7646 | leency | 832 | |
9647 | IgorA | 833 | mcall , |
834 | mcall , |
||
835 | mcall , |
||
836 | mcall , |
||
837 | mcall , |
||
838 | mcall , |
||
839 | mcall , |
||
840 | mcall , |
||
841 | mcall , |
||
842 | mcall , |
||
843 | mcall , |
||
844 | mcall , |
||
845 | mcall , |
||
846 | mcall , |
||
847 | mcall , |
||
7646 | leency | 848 | |
9647 | IgorA | 849 | mcall , |
850 | mcall , |
||
851 | mcall , |
||
852 | mcall , |
||
853 | mcall , |
||
854 | mcall , |
||
855 | mcall , |
||
856 | mcall , |
||
857 | mcall , |
||
858 | mcall , |
||
7646 | leency | 859 | |
860 | |||
861 | ; вывод текстовой строки |
||
8812 | Doczom | 862 | mov ecx, [sc.work_text] ; цвет фона |
863 | or ecx, 0x90000000 ; и тип строки |
||
9647 | IgorA | 864 | mcall SF_DRAW_TEXT, <50, 205>, , message |
865 | mcall , <10, 235>, , message1 |
||
866 | mcall , <10, 260>, , message2 |
||
867 | mcall , <10, 285>, , message3 |
||
868 | mcall , <10, 310>, , message4 |
||
869 | mcall , <16, 185>, , t_notes |
||
7646 | leency | 870 | |
9647 | IgorA | 871 | mcall SF_REDRAW, SSF_END_DRAW ; закончили рисовать |
7646 | leency | 872 | |
8812 | Doczom | 873 | ret |
7646 | leency | 874 | |
875 | |||
876 | ;--------------------------------------------------------------------- |
||
877 | ;--- ДАННЫЕ ПРОГРАММЫ ---------------------------------------------- |
||
878 | ;--------------------------------------------------------------------- |
||
879 | |||
880 | |||
881 | ; Второй байт в M (Music) изменяется нажатием клавиши |
||
882 | |||
883 | M: |
||
884 | db 0x90, 0x30, 0 |
||
885 | |||
886 | |||
887 | sc system_colors |
||
888 | |||
7650 | leency | 889 | if lang eq ru |
890 | message db 'Справка: щёлкните 2 раза на заголовке.',0 |
||
891 | message1 db 'Нажмите любую клавишу в английской раскладке - ',0 |
||
892 | message2 db 'должен звучать встроенный динамик компьютера (не колонки!)',0 |
||
893 | message3 db 'Нота "До" - клавиши V,Tab,U,Enter',0 |
||
894 | message4 db 'при включении Caps Lock - клавиши V,Q,I.',0 |
||
895 | t_notes db 'ДО РЕ МИ ФА СОЛЬ ЛЯ СИ ДО',0 |
||
896 | caption db 'Детское пианино',0 |
||
897 | else |
||
9439 | leency | 898 | message db 'Click twice on the window header to see help.',0 |
7650 | leency | 899 | message1 db 'Press any key in English keyboard layout - ',0 |
900 | message2 db 'so you will hear the sound from the PC-speaker (Beeper)',0 |
||
901 | message3 db 'Note "C" is the key V,Tab,U,Enter',0 |
||
902 | message4 db 'and when Caps Lock is on then the keys V,Q,I.',0 |
||
903 | t_notes db 'C D E F G A B C ',0 |
||
9439 | leency | 904 | caption db 'Toy piano',0 |
7650 | leency | 905 | end if |
7646 | leency | 906 | |
907 | ;--------------------------------------------------------------------- |
||
908 | |||
8812 | Doczom | 909 | I_END: |
910 | rb 4096 |
||
7646 | leency | 911 | align 16 |
8812 | Doczom | 912 | STACKTOP: |
913 | MEM:16,>10,>10,>10,>10,>50,>100,50>100,100>0,50>0,100>0,100>200,250>20,WHITE_W*15+9> |