Subversion Repositories Kolibri OS

Rev

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