Subversion Repositories Kolibri OS

Rev

Rev 90 | Rev 97 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 90 Rev 92
Line 773... Line 773...
773
       ; call  kb_read
773
       ; call  kb_read
Line 774... Line 774...
774
 
774
 
775
        mov   al, 0xF3       ; set repeat rate & delay
775
        mov   al, 0xF3       ; set repeat rate & delay
776
        call  kb_write
776
        call  kb_write
777
        call  kb_read
777
        call  kb_read
778
        mov   al, 00100010b ; 24 500  ;00100100b  ; 20 500
778
        mov   al, 0 ; 30 250 ;00100010b ; 24 500  ;00100100b  ; 20 500
779
        call  kb_write
779
        call  kb_write
780
        call  kb_read
780
        call  kb_read
781
     ;// mike.dld [
781
     ;// mike.dld [
782
        call  set_lights
782
        call  set_lights
Line 824... Line 824...
824
align 32
824
align 32
825
osloop:
825
osloop:
Line 826... Line 826...
826
 
826
 
827
        call   [draw_pointer]
827
        call   [draw_pointer]
828
        call   checkbuttons
-
 
829
        call   main_loop_sys_getkey
828
        call   checkbuttons
830
        call   checkwindows
829
        call   checkwindows
831
;       call   check_window_move_request
830
;       call   check_window_move_request
832
        call   checkmisc
831
        call   checkmisc
833
        call   checkEgaCga
832
        call   checkEgaCga
Line 2269... Line 2268...
2269
     mov ecx,16384
2268
     mov ecx,16384
2270
     cld
2269
     cld
2271
     rep movsd
2270
     rep movsd
2272
     ret
2271
     ret
Line 2273... Line 2272...
2273
 
2272
 
2274
sysfn_lastkey:          ; 18.12 = get all key pressed with ALT
-
 
2275
     mov   eax,[last_key_press]
-
 
2276
     mov   al,[keyboard_mode_sys]
2273
sysfn_lastkey:          ; 18.12 = return 0 (backward compatibility)
2277
     mov   [esp+36],eax
-
 
2278
     mov   [last_key_press],0
2274
        and     dword [esp+36], 0
Line 2279... Line 2275...
2279
     ret
2275
        ret
2280
 
2276
 
2281
sysfn_getversion:       ; 18.13 = get kernel ID and version
2277
sysfn_getversion:       ; 18.13 = get kernel ID and version
Line 2322... Line 2318...
2322
;// mike.dld, 2006-29-01 [
2318
;// mike.dld, 2006-29-01 [
2323
screen_workarea RECT
2319
screen_workarea RECT
2324
;// mike.dld, 2006-29-01 ]
2320
;// mike.dld, 2006-29-01 ]
2325
window_minimize db 0
2321
window_minimize db 0
2326
sound_flag      db 0
2322
sound_flag      db 0
2327
last_key_press  dd 0
-
 
2328
keyboard_mode_sys db 0
-
 
2329
endg
2323
endg
Line 2330... Line 2324...
2330
 
2324
 
2331
iglobal
2325
iglobal
2332
version_inf:
2326
version_inf:
Line 2338... Line 2332...
2338
 
2332
 
2339
UID_NONE=0
2333
UID_NONE=0
2340
UID_MENUETOS=1   ;official
2334
UID_MENUETOS=1   ;official
Line 2341... Line -...
2341
UID_KOLIBRI=2    ;russian
-
 
2342
 
-
 
2343
main_loop_sys_getkey:
-
 
2344
    cmp   [0xf400],byte 0
-
 
2345
    je    .finish
-
 
2346
    movzx eax,byte [0xf401]
-
 
2347
    shl   eax,8
-
 
2348
    mov   [last_key_press],eax
-
 
2349
 .finish:
-
 
2350
    ret
2335
UID_KOLIBRI=2    ;russian
2351
 
2336
 
2352
sys_cachetodiskette:
2337
sys_cachetodiskette:
2353
;    pushad
2338
;    pushad
2354
;    cmp  eax,1
2339
;    cmp  eax,1
Line 2514... Line 2499...
2514
 
2499
 
Line 2515... Line 2500...
2515
align 4
2500
align 4
2516
 
2501
 
-
 
2502
sys_getkey:
2517
sys_getkey:
2503
    mov   [esp+36],dword 1
2518
    mov   [esp+36],dword 1
2504
; test main buffer
2519
    mov   ebx, [0x3000]                          ; TOP OF WINDOW STACK
2505
    mov   ebx, [0x3000]                          ; TOP OF WINDOW STACK
2520
    movzx ecx,word [0xC000 + ebx * 2]
2506
    movzx ecx,word [0xC000 + ebx * 2]
2521
    mov   edx,[0x3004]
2507
    mov   edx,[0x3004]
Line 2536... Line 2522...
2536
 ;  rep   movsb
2522
 ;  rep   movsb
2537
    mov   eax, 0xF402
2523
    mov   eax, 0xF402
2538
    mov   ebx, 0xF401
2524
    mov   ebx, 0xF401
2539
    call  memmove
2525
    call  memmove
2540
    pop   eax
2526
    pop   eax
2541
    mov   [last_key_press],eax
-
 
2542
 
-
 
2543
    mov   eax,[kb_state]
-
 
2544
    and   al,110000b
-
 
2545
    cmp   al,100000b
-
 
2546
    je    .yes_win_key
-
 
2547
    cmp   al,10000b
-
 
2548
    je    .yes_win_key
-
 
2549
    mov   eax,[last_key_press]
-
 
2550
    jmp   .no_win_key
-
 
2551
;    cmp   ah,232
-
 
2552
;    je    .yes_win_key
-
 
2553
;    cmp   ah,233
-
 
2554
;    jne   .no_win_key
-
 
2555
 .yes_win_key:
2527
.ret_eax:
2556
    mov   eax,1
-
 
2557
 .no_win_key:
-
 
2558
    mov   [esp+36],eax
2528
    mov   [esp+36],eax
-
 
2529
    ret
2559
 .finish:
2530
 .finish:
-
 
2531
; test hotkeys buffer
-
 
2532
        mov     ecx, hotkey_buffer
-
 
2533
@@:
-
 
2534
        cmp     [ecx], ebx
-
 
2535
        jz      .found
-
 
2536
        add     ecx, 8
-
 
2537
        cmp     ecx, hotkey_buffer+120*8
-
 
2538
        jb      @b
2560
    ret
2539
        ret
2561
 
2540
.found:
-
 
2541
        mov     ax, [ecx+6]
-
 
2542
        shl     eax, 16
-
 
2543
        mov     ah, [ecx+4]
-
 
2544
        mov     al, 2
-
 
2545
        and     dword [ecx+4], 0
-
 
2546
        and     dword [ecx], 0
-
 
2547
        jmp     .ret_eax
Line 2562... Line 2548...
2562
 
2548
 
Line 2563... Line 2549...
2563
align 4
2549
align 4
Line 4393... Line 4379...
4393
 
4379
 
Line 4394... Line 4380...
4394
     ret
4380
     ret
-
 
4381
 
Line 4395... Line 4382...
4395
 
4382
 
4396
 
4383
sys_process_def:
Line 4397... Line -...
4397
sys_process_def:
-
 
4398
 
4384
        mov     edi, [0x3000]
4399
     cmp   eax,1                   ; set keyboard mode
-
 
4400
     jne   no_set_keyboard_setup
4385
 
Line 4401... Line 4386...
4401
 
4386
        dec     eax             ; 1 = set keyboard mode
Line 4402... Line 4387...
4402
     mov   edi,[0x3000]
4387
     jne   no_set_keyboard_setup
Line 4403... Line 4388...
4403
     shl   edi,8
4388
 
4404
     add   edi,0x80000+0xB4
4389
     shl   edi,8
Line 4405... Line -...
4405
     mov   [edi],bl
-
 
4406
 
4390
     mov   [edi+0x800B4],bl
4407
     ret
-
 
4408
 
4391
 
Line 4409... Line 4392...
4409
   no_set_keyboard_setup:
4392
     ret
Line 4410... Line 4393...
4410
 
4393
 
Line 4411... Line 4394...
4411
     cmp   eax,2                   ; get keyboard mode
4394
   no_set_keyboard_setup:
Line 4412... Line 4395...
4412
     jne   no_get_keyboard_setup
4395
 
4413
 
4396
        dec     eax             ; 2 = get keyboard mode
Line 4414... Line 4397...
4414
     mov   edi,[0x3000]
4397
     jne   no_get_keyboard_setup
4415
     shl   edi,8
4398
 
4416
     add   edi,0x80000+0xB4
4399
     shl   edi,8
Line 4442... Line 4425...
4442
 
4425
 
Line 4443... Line 4426...
4443
     ret
4426
     ret
Line -... Line 4427...
-
 
4427
 
-
 
4428
   no_get_keyboard_cas:
-
 
4429
 
-
 
4430
        dec     eax
-
 
4431
        jnz     no_add_keyboard_hotkey
-
 
4432
 
-
 
4433
        mov     eax, hotkey_list
-
 
4434
@@:
-
 
4435
        cmp     dword [eax+8], 0
-
 
4436
        jz      .found_free
-
 
4437
        add     eax, 16
-
 
4438
        cmp     eax, hotkey_list+16*256
-
 
4439
        jb      @b
-
 
4440
        mov     dword [esp+36], 1
-
 
4441
        ret
-
 
4442
.found_free:
-
 
4443
        mov     [eax+8], edi
-
 
4444
        mov     [eax+4], ecx
-
 
4445
        movzx   ebx, bl
-
 
4446
        lea     ebx, [hotkey_scancodes+ebx*4]
-
 
4447
        mov     ecx, [ebx]
-
 
4448
        mov     [eax], ecx
-
 
4449
        mov     [ebx], eax
-
 
4450
        mov     [eax+12], ebx
-
 
4451
        jecxz   @f
-
 
4452
        mov     [ecx+12], eax
-
 
4453
@@:
-
 
4454
        and     dword [esp+36], 0
-
 
4455
        ret
-
 
4456
 
-
 
4457
no_add_keyboard_hotkey:
-
 
4458
 
-
 
4459
        dec     eax
-
 
4460
        jnz     no_del_keyboard_hotkey
-
 
4461
 
-
 
4462
        movzx   ebx, bl
-
 
4463
        lea     ebx, [hotkey_scancodes+ebx*4]
-
 
4464
        mov     eax, [ebx]
-
 
4465
.scan:
-
 
4466
        test    eax, eax
-
 
4467
        jz      .notfound
-
 
4468
        cmp     [eax+8], edi
-
 
4469
        jnz     .next
-
 
4470
        cmp     [eax+4], ecx
-
 
4471
        jz      .found
-
 
4472
.next:
-
 
4473
        mov     eax, [eax]
-
 
4474
        jmp     .scan
-
 
4475
.notfound:
-
 
4476
        mov     dword [esp+36], 1
-
 
4477
        ret
-
 
4478
.found:
-
 
4479
        mov     ecx, [eax]
-
 
4480
        jecxz   @f
-
 
4481
        mov     edx, [eax+12]
-
 
4482
        mov     [ecx+12], edx
-
 
4483
@@:
-
 
4484
        mov     ecx, [eax+12]
-
 
4485
        mov     edx, [eax]
-
 
4486
        mov     [ecx], edx
-
 
4487
        xor     edx, edx
-
 
4488
        mov     [eax+4], edx
-
 
4489
        mov     [eax+8], edx
-
 
4490
        mov     [eax+12], edx
Line -... Line 4491...
-
 
4491
        mov     [eax], edx
4444
 
4492
        mov     [esp+36], edx
Line 4445... Line 4493...
4445
   no_get_keyboard_cas:
4493
        ret
4446
 
4494