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 |