|
|
| version 1.15, 2004/03/30 07:12:03 | version 1.18, 2004/03/31 11:59:18 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "cpucore.h" | |
| #include "commng.h" | #include "commng.h" |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| Line 22 static void keyboard_int(BOOL absolute) | Line 23 static void keyboard_int(BOOL absolute) |
| keybrd.data = keybrd.buf[keybrd.bufpos]; | keybrd.data = keybrd.buf[keybrd.bufpos]; |
| keybrd.bufpos = (keybrd.bufpos + 1) & KB_BUFMASK; | keybrd.bufpos = (keybrd.bufpos + 1) & KB_BUFMASK; |
| } | } |
| TRACEOUT(("recv -> %02x", keybrd.data)); | |
| } | } |
| pic_setirq(1); | pic_setirq(1); |
| nevent_set(NEVENT_KEYBOARD, keybrd.xferclock, | nevent_set(NEVENT_KEYBOARD, keybrd.xferclock, |
| Line 39 void keyboard_callback(NEVENTITEM item) | Line 41 void keyboard_callback(NEVENTITEM item) |
| static void IOOUTCALL keyboard_o41(UINT port, REG8 dat) { | static void IOOUTCALL keyboard_o41(UINT port, REG8 dat) { |
| if (keybrd.cmd & 1) { | if (keybrd.cmd & 1) { |
| keystat_ctrl(dat); | TRACEOUT(("send -> %02x", dat)); |
| keystat_ctrlsend(dat); | |
| } | } |
| (void)port; | (void)port; |
| } | } |
| static void IOOUTCALL keyboard_o43(UINT port, REG8 dat) { | static void IOOUTCALL keyboard_o43(UINT port, REG8 dat) { |
| TRACEOUT(("out43 -> %02x %.4x:%.8x", dat, CPU_CS, CPU_EIP)); | |
| if ((!(dat & 0x08)) && (keybrd.cmd & 0x08)) { | if ((!(dat & 0x08)) && (keybrd.cmd & 0x08)) { |
| keyboard_resetsignal(); | keyboard_resetsignal(); |
| } | } |
| Line 60 static REG8 IOINPCALL keyboard_i41(UINT | Line 64 static REG8 IOINPCALL keyboard_i41(UINT |
| (void)port; | (void)port; |
| keybrd.status &= ~2; | keybrd.status &= ~2; |
| TRACEOUT(("in41 -> %02x %.4x:%.8x", keybrd.data, CPU_CS, CPU_EIP)); | |
| return(keybrd.data); | return(keybrd.data); |
| } | } |
| static REG8 IOINPCALL keyboard_i43(UINT port) { | static REG8 IOINPCALL keyboard_i43(UINT port) { |
| (void)port; | (void)port; |
| return(keybrd.status); | TRACEOUT(("in43 -> %02x %.4x:%.8x", keybrd.status, CPU_CS, CPU_EIP)); |
| return(keybrd.status | 0x85); | |
| } | } |
| Line 96 void keyboard_resetsignal(void) { | Line 102 void keyboard_resetsignal(void) { |
| keybrd.cmd = 0; | keybrd.cmd = 0; |
| keybrd.status = 0; | keybrd.status = 0; |
| keybrd.ctrls = 0; | |
| keybrd.buffers = 0; | keybrd.buffers = 0; |
| keybrd.bufpos = 0; | keystat_ctrlreset(); |
| keystat_resendstat(); | keystat_resendstat(); |
| } | } |