uint16_t id = 0;
int16_t code = 0;
+ // temporary fix Z-150 AT should response with ID
+ if (ibmpc_protocol == IBMPC_PROTOCOL_AT_Z150) return 0xFFFD;
+
// Disable
//code = ibmpc_host_send(0xF5);
keyboard_kind = PC_XT;
} else if (0xFFFE == keyboard_id) { // CodeSet2 PS/2 fails to response?
keyboard_kind = PC_AT;
+ } else if (0xFFFD == keyboard_id) { // Zenith Z-150 AT
+ keyboard_kind = PC_AT_Z150;
} else if (0x00FF == keyboard_id) { // Mouse is not supported
xprintf("Mouse: not supported\n");
keyboard_kind = NONE;
case PC_AT:
led_set(host_keyboard_leds());
break;
+ case PC_AT_Z150:
+ // TODO: do not set indicators temporarily for debug
+ break;
case PC_TERMINAL:
// Set all keys to make/break type
ibmpc_host_send(0xF8);
if (process_cs1(code) == -1) state = INIT;
break;
case PC_AT:
+ case PC_AT_Z150:
if (process_cs2(code) == -1) state = INIT;
break;
case PC_TERMINAL:
static enum {
INIT,
E0,
- // Pause: E1 1D 45, E1 9D C5 [a] (TODO: test)
+ // Pause: E1 1D 45, E1 9D C5 [a]
E1,
E1_1D,
E1_9D,
case E1_1D:
switch (code) {
case 0x45:
- matrix_make(0x55);
+ matrix_make(0x55); // Pause
+ state = INIT;
break;
default:
state = INIT;
break;
case E1_9D:
switch (code) {
- case 0x45:
- matrix_break(0x55);
+ case 0xC5:
+ matrix_break(0x55); // Pause
+ state = INIT;
break;
default:
state = INIT;