Subversion Repositories Kolibri OS

Rev

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

Rev 4772 Rev 5012
Line 69... Line 69...
69
format binary as "mnt"
69
format binary as "mnt"
Line 70... Line 70...
70
 
70
 
71
include 'macros.inc'
71
include 'macros.inc'
Line 72... Line 72...
72
include 'struct.inc'
72
include 'struct.inc'
Line 73... Line 73...
73
 
73
 
74
$Revision: 4772 $
74
$Revision: 5012 $
Line 969... Line 969...
969
 
969
 
Line 970... Line 970...
970
        cli
970
        cli
971
 
971
 
972
; SET KEYBOARD PARAMETERS
972
; SET KEYBOARD PARAMETERS
973
        mov     al, 0xf6       ; reset keyboard, scan enabled
973
        mov     al, 0xf6       ; reset keyboard, scan enabled
974
        call    kb_write
974
        call    kb_write_wait_ack
Line 975... Line -...
975
        test    ah, ah
-
 
976
        jnz     .no_keyboard
-
 
977
 
-
 
978
        ; wait until 8042 is ready
-
 
979
        xor     ecx, ecx
-
 
980
      @@:
-
 
981
        in      al, 64h
-
 
982
        and     al, 00000010b
975
        test    ah, ah
983
        loopnz  @b
976
        jnz     .no_keyboard
984
 
977
 
985
iglobal
978
iglobal
986
align 4
979
align 4
987
ps2_keyboard_functions:
980
ps2_keyboard_functions:
988
        dd      .end - $
981
        dd      .end - $
989
        dd      0       ; no close
982
        dd      0       ; no close
990
        dd      ps2_set_lights
983
        dd      ps2_set_lights
991
.end:
984
.end:
992
endg
985
endg
993
        stdcall register_keyboard, ps2_keyboard_functions, 0
-
 
994
       ; mov   al, 0xED       ; Keyboard LEDs - only for testing!
986
        stdcall register_keyboard, ps2_keyboard_functions, 0
995
       ; call  kb_write
987
       ; mov   al, 0xED       ; Keyboard LEDs - only for testing!
996
       ; call  kb_read
-
 
Line 997... Line 988...
997
       ; mov   al, 111b
988
       ; call  kb_write_wait_ack
998
       ; call  kb_write
989
       ; mov   al, 111b
999
       ; call  kb_read
-
 
1000
 
990
       ; call  kb_write_wait_ack
1001
        mov     al, 0xF3     ; set repeat rate & delay
991
 
1002
        call    kb_write
-
 
1003
;        call  kb_read
992
        mov     al, 0xF3     ; set repeat rate & delay
1004
        mov     al, 0; 30 250 ;00100010b ; 24 500  ;00100100b  ; 20 500
993
        call    kb_write_wait_ack
1005
        call    kb_write
994
        mov     al, 0; 30 250 ;00100010b ; 24 500  ;00100100b  ; 20 500
1006
;        call  kb_read
995
        call    kb_write_wait_ack
1007
     ;// mike.dld [
996
     ;// mike.dld [
Line 4488... Line 4477...
4488
;        call    vesa20_drawbar
4477
;        call    vesa20_drawbar
4489
;        call    [draw_pointer]
4478
;        call    [draw_pointer]
4490
;        ret
4479
;        ret
4491
;-----------------------------------------------------------------------------
4480
;-----------------------------------------------------------------------------
4492
align 4
4481
align 4
4493
kb_read:
-
 
4494
 
-
 
4495
        push    ecx edx
-
 
4496
 
-
 
4497
        mov     ecx, 0x1ffff; last 0xffff, new value in view of fast CPU's
-
 
4498
      kr_loop:
-
 
4499
        in      al, 0x64
-
 
4500
        test    al, 1
-
 
4501
        jnz     kr_ready
-
 
4502
        loop    kr_loop
-
 
4503
        mov     ah, 1
-
 
4504
        jmp     kr_exit
-
 
4505
      kr_ready:
-
 
4506
        push    ecx
-
 
4507
        mov     ecx, 32
-
 
4508
      kr_delay:
-
 
4509
        loop    kr_delay
-
 
4510
        pop     ecx
-
 
4511
        in      al, 0x60
-
 
4512
        xor     ah, ah
-
 
4513
      kr_exit:
-
 
4514
 
-
 
4515
        pop     edx ecx
-
 
4516
 
-
 
4517
        ret
-
 
4518
;-----------------------------------------------------------------------------
-
 
4519
align 4
-
 
4520
kb_write:
4482
kb_write_wait_ack:
Line 4521... Line 4483...
4521
 
4483
 
Line 4522... Line 4484...
4522
        push    ecx edx
4484
        push    ecx edx
4523
 
-
 
4524
        mov     dl, al
-
 
4525
;        mov     ecx,0x1ffff ; last 0xffff, new value in view of fast CPU's
-
 
4526
;      kw_loop1:
-
 
4527
;        in      al,0x64
-
 
4528
;        test    al,0x20
-
 
4529
;        jz      kw_ok1
-
 
4530
;        loop    kw_loop1
-
 
4531
;        mov     ah,1
-
 
4532
;        jmp     kw_exit
-
 
4533
;      kw_ok1:
4485
 
4534
        in      al, 0x60
4486
        mov     dl, al
4535
        mov     ecx, 0x1ffff; last 0xffff, new value in view of fast CPU's
4487
        mov     ecx, 0x1ffff; last 0xffff, new value in view of fast CPU's
4536
      kw_loop:
4488
.wait_output_ready:
4537
        in      al, 0x64
4489
        in      al, 0x64
4538
        test    al, 2
4490
        test    al, 2
4539
        jz      kw_ok
4491
        jz      @f
4540
        loop    kw_loop
4492
        loop    .wait_output_ready
4541
        mov     ah, 1
4493
        mov     ah, 1
4542
        jmp     kw_exit
4494
        jmp     .nothing
4543
      kw_ok:
4495
@@:
4544
        mov     al, dl
4496
        mov     al, dl
4545
        out     0x60, al
-
 
4546
        mov     ecx, 0x1ffff; last 0xffff, new value in view of fast CPU's
-
 
4547
      kw_loop3:
-
 
4548
        in      al, 0x64
-
 
4549
        test    al, 2
-
 
4550
        jz      kw_ok3
-
 
4551
        loop    kw_loop3
-
 
4552
        mov     ah, 1
4497
        out     0x60, al
4553
        jmp     kw_exit
-
 
4554
      kw_ok3:
-
 
4555
        mov     ah, 8
-
 
4556
      kw_loop4:
-
 
4557
        mov     ecx, 0x1ffff; last 0xffff, new value in view of fast CPU's
4498
        mov     ecx, 0xfffff; last 0xffff, new value in view of fast CPU's
4558
      kw_loop5:
4499
.wait_ack:
4559
        in      al, 0x64
4500
        in      al, 0x64
4560
        test    al, 1
4501
        test    al, 1
4561
        jnz     kw_ok4
4502
        jnz     @f
4562
        loop    kw_loop5
4503
        loop    .wait_ack
-
 
4504
        mov     ah, 1
4563
        dec     ah
4505
        jmp     .nothing
4564
        jnz     kw_loop4
4506
@@:
4565
      kw_ok4:
-
 
Line -... Line 4507...
-
 
4507
        in      al, 0x60
4566
        xor     ah, ah
4508
        xor     ah, ah
Line 4567... Line 4509...
4567
      kw_exit:
4509
 
4568
 
4510
.nothing:
4569
        pop     edx ecx
-
 
4570
 
-
 
4571
        ret
-
 
4572
;-----------------------------------------------------------------------------
-
 
4573
align 4
-
 
4574
kb_cmd:
-
 
4575
 
-
 
4576
        mov     ecx, 0x1ffff; last 0xffff, new value in view of fast CPU's
-
 
4577
      c_wait:
-
 
4578
        in      al, 0x64
-
 
4579
        test    al, 2
-
 
4580
        jz      c_send
-
 
4581
        loop    c_wait
-
 
4582
        jmp     c_error
-
 
4583
      c_send:
-
 
4584
        mov     al, bl
-
 
4585
        out     0x64, al
-
 
4586
        mov     ecx, 0x1ffff; last 0xffff, new value in view of fast CPU's
-
 
4587
      c_accept:
-
 
4588
        in      al, 0x64
-
 
4589
        test    al, 2
-
 
4590
        jz      c_ok
-
 
4591
        loop    c_accept
-
 
4592
      c_error:
-
 
4593
        mov     ah, 1
-
 
4594
        jmp     c_exit
-
 
4595
      c_ok:
-
 
Line 4596... Line 4511...
4596
        xor     ah, ah
4511
        pop     edx ecx
4597
      c_exit:
4512
 
Line 4598... Line 4513...
4598
        ret
4513
        ret