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