/* debug PC keyboard *///#defineDEBUG_KBD/* Keyboard Controller Commands */#defineKBD_CCMD_READ_MODE0x20/* Read mode bits */#defineKBD_CCMD_WRITE_MODE0x60/* Write mode bits */#defineKBD_CCMD_GET_VERSION0xA1/* Get controller version */#defineKBD_CCMD_MOUSE_DISABLE0xA7/* Disable mouse interface */#defineKBD_CCMD_MOUSE_ENABLE0xA8/* Enable mouse interface */#defineKBD_CCMD_TEST_MOUSE0xA9/* Mouse interface test */#defineKBD_CCMD_SELF_TEST0xAA/* Controller self test */#defineKBD_CCMD_KBD_TEST0xAB/* Keyboard interface test */#defineKBD_CCMD_KBD_DISABLE0xAD/* Keyboard interface disable */#defineKBD_CCMD_KBD_ENABLE0xAE/* Keyboard interface enable */#defineKBD_CCMD_READ_INPORT0xC0/* read input port */#defineKBD_CCMD_READ_OUTPORT0xD0/* read output port */#defineKBD_CCMD_WRITE_OUTPORT0xD1/* write output port */#defineKBD_CCMD_WRITE_OBUF0xD2#defineKBD_CCMD_WRITE_AUX_OBUF0xD3/*Writetooutputbufferasifinitiatedbytheauxiliarydevice*/#defineKBD_CCMD_WRITE_MOUSE0xD4/* Write the following byte to the mouse */#defineKBD_CCMD_DISABLE_A200xDD/* HP vectra only ? */#defineKBD_CCMD_ENABLE_A200xDF/* HP vectra only ? */#defineKBD_CCMD_RESET0xFE/* Keyboard Commands */#defineKBD_CMD_SET_LEDS0xED/* Set keyboard leds */#defineKBD_CMD_ECHO0xEE#defineKBD_CMD_GET_ID0xF2/* get keyboard ID */#defineKBD_CMD_SET_RATE0xF3/* Set typematic rate */#defineKBD_CMD_ENABLE0xF4/* Enable scanning */#defineKBD_CMD_RESET_DISABLE0xF5/* reset and disable scanning */#defineKBD_CMD_RESET_ENABLE0xF6/* reset and enable scanning */#defineKBD_CMD_RESET0xFF/* Reset *//* Keyboard Replies */#defineKBD_REPLY_POR0xAA/* Power on reset */#defineKBD_REPLY_ACK0xFA/* Command ACK */#defineKBD_REPLY_RESEND0xFE/* Command NACK, send the cmd again *//* Status Register Bits */#defineKBD_STAT_OBF0x01/* Keyboard output buffer full */#defineKBD_STAT_IBF0x02/* Keyboard input buffer full */#defineKBD_STAT_SELFTEST0x04/* Self test successful */#defineKBD_STAT_CMD0x08/* Last write was a command write (0=data) */#defineKBD_STAT_UNLOCKED0x10/* Zero if keyboard locked */#defineKBD_STAT_MOUSE_OBF0x20/* Mouse output buffer full */#defineKBD_STAT_GTO0x40/* General receive/xmit timeout */#defineKBD_STAT_PERR0x80/* Parity error *//* Controller Mode Register Bits */#defineKBD_MODE_KBD_INT0x01/* Keyboard data generate IRQ1 */#defineKBD_MODE_MOUSE_INT0x02/* Mouse data generate IRQ12 */#defineKBD_MODE_SYS0x04/* The system flag (?) */#defineKBD_MODE_NO_KEYLOCK0x08/* The keylock doesn't affect the keyboard if set */#defineKBD_MODE_DISABLE_KBD0x10/* Disable keyboard interface */#defineKBD_MODE_DISABLE_MOUSE0x20/* Disable mouse interface */#defineKBD_MODE_KCC0x40/* Scan code conversion to PC format */#defineKBD_MODE_RFU0x80/* Mouse Commands */#defineAUX_SET_SCALE110xE6/* Set 1:1 scaling */#defineAUX_SET_SCALE210xE7/* Set 2:1 scaling */#defineAUX_SET_RES0xE8/* Set resolution */#defineAUX_GET_SCALE0xE9/* Get scaling factor */#defineAUX_SET_STREAM0xEA/* Set stream mode */#defineAUX_POLL0xEB/* Poll */#defineAUX_RESET_WRAP0xEC/* Reset wrap mode */#defineAUX_SET_WRAP0xEE/* Set wrap mode */#defineAUX_SET_REMOTE0xF0/* Set remote mode */#defineAUX_GET_TYPE0xF2/* Get type */#defineAUX_SET_SAMPLE0xF3/* Set sample rate */#defineAUX_ENABLE_DEV0xF4/* Enable aux device */#defineAUX_DISABLE_DEV0xF5/* Disable aux device */#defineAUX_SET_DEFAULT0xF6#defineAUX_RESET0xFF/* Reset aux device */#defineAUX_ACK0xFA/* Command byte ACK. */#defineMOUSE_STATUS_REMOTE0x40#defineMOUSE_STATUS_ENABLED0x20#defineMOUSE_STATUS_SCALE210x10#defineKBD_QUEUE_SIZE256
break;caseKBD_CCMD_WRITE_MODE:caseKBD_CCMD_WRITE_OBUF:caseKBD_CCMD_WRITE_AUX_OBUF:caseKBD_CCMD_WRITE_MOUSE:caseKBD_CCMD_WRITE_OUTPORT:s->write_cmd=val;break;caseKBD_CCMD_MOUSE_DISABLE:s->mode|=KBD_MODE_DISABLE_MOUSE;break;caseKBD_CCMD_MOUSE_ENABLE:s->mode&=~KBD_MODE_DISABLE_MOUSE;break;caseKBD_CCMD_TEST_MOUSE:kbd_queue(s,0x00,0);break;caseKBD_CCMD_SELF_TEST:s->status|=KBD_STAT_SELFTEST;kbd_queue(s,0x55,0);break;caseKBD_CCMD_KBD_TEST:kbd_queue(s,0x00,0);break;caseKBD_CCMD_KBD_DISABLE:s->mode|=KBD_MODE_DISABLE_KBD;kbd_update_irq(s);break;caseKBD_CCMD_KBD_ENABLE:s->mode&=~KBD_MODE_DISABLE_KBD;kbd_update_irq(s);break;caseKBD_CCMD_READ_INPORT:kbd_queue(s,0x00,0);break;caseKBD_CCMD_READ_OUTPORT:/* XXX: check that */#ifdefTARGET_I386