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:
#ifndef IBMPC_USB_H
#define IBMPC_USB_H
-typedef enum { NONE, PC_XT, PC_AT, PC_TERMINAL } keyboard_kind_t;
+typedef enum { NONE, PC_XT, PC_AT, PC_TERMINAL, PC_AT_Z150 } keyboard_kind_t;
extern uint16_t keyboard_id;
extern keyboard_kind_t keyboard_kind;