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