Subversion Repositories Kolibri OS

Rev

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