Subversion Repositories Kolibri OS

Rev

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,  , <0,100>, 0x21, 0xff7a74
811
    mcall 8,  , <0,100>, 0x23, 0x907040
812
    mcall 8,  , <0,100>, 0x25, 0xa08050
813
    mcall 8,  , <0,100>, 0x26, 0xb09060
814
    mcall 8,  , <00,100>, 0x28, 0xc0a070
815
    mcall 8,  , <00,100>, 0x2a, 0xd0b080
816
    mcall 8,  , <0,100>, 0x2c, 0xe0c090
817
    mcall 8,  , <0,100>, 0x31, 0xffa97c
818
    mcall 8,  , <0,100>, 0x33, 0xaf8d8d
819
    mcall 8,  , <0,100>, 0x35, 0xbf9d9d
820
    mcall 8,  , <0,100>, 0x36, 0xcfadad
821
    mcall 8,  , <00,100>, 0x38, 0xdfbdbd
822
    mcall 8,  , <00,100>, 0x3a, 0xefcdcd
823
    mcall 8,  , <0,100>, 0x3c, 0xffdddd
824
    mcall 8,  , <0,100>, 0x41, 0xffe558
7646 leency 825
 
7648 leency 826
    mcall 8,  , <0,50>, 0x22, 0x221100
827
    mcall 8,  , <0,50>, 0x24, 0x221100
828
    mcall 8,  , <0,50>, 0x27, 0x221100
829
    mcall 8,  , <0,50>, 0x29, 0x221100
830
    mcall 8,  , <0,50>, 0x2b, 0x221100
831
    mcall 8,  , <0,50>, 0x32, 0x221100
832
    mcall 8,  , <0,50>, 0x34, 0x221100
833
    mcall 8,  , <0,50>, 0x37, 0x221100
834
    mcall 8,  , <0,50>, 0x39, 0x221100
835
    mcall 8,  , <0,50>, 0x3b, 0x221100
7646 leency 836
 
7648 leency 837
    mcall 8,  , <100,100>, 0xa1, 0x702050
838
    mcall 8,  , <100,100>, 0x03, 0x683638
839
    mcall 8,  , <100,100>, 0x05, 0x784648
840
    mcall 8,  , <100,100>, 0x06, 0x885658
841
    mcall 8,  , <100,100>, 0x08, 0x986668
842
    mcall 8,  , <100,100>, 0x0a, 0xa87678
843
    mcall 8,  , <100,100>, 0x0c, 0xb88688
844
    mcall 8,  , <100,100>, 0x11, 0x880040
845
    mcall 8,  , <100,100>, 0x13, 0x90622b
846
    mcall 8,  , <100,100>, 0x15, 0xa0723b
847
    mcall 8,  , <100,100>, 0x16, 0xb0824b
848
    mcall 8,  , <100,100>, 0x18, 0xc0925b
849
    mcall 8,  , <100,100>, 0x1a, 0xd0a26b
850
    mcall 8,  , <100,100>, 0x1c, 0xe0b27b
851
    mcall 8,  , <100,100>, 0x21, 0xff7a74
7646 leency 852
 
7648 leency 853
    mcall 8,  , <100,50>, 0x02, 0x221100
854
    mcall 8,  , <100,50>, 0x04, 0x221100
855
    mcall 8,  , <100,50>, 0x07, 0x221100
856
    mcall 8,  , <100,50>, 0x09, 0x221100
857
    mcall 8,  , <100,50>, 0x0b, 0x221100
858
    mcall 8,  , <100,50>, 0x12, 0x221100
859
    mcall 8,  , <100,50>, 0x14, 0x221100
860
    mcall 8,  , <100,50>, 0x17, 0x221100
861
    mcall 8,  , <100,50>, 0x19, 0x221100
862
    mcall 8,  , <100,50>, 0x1b, 0x221100
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: