diff --git a/PDP10/ka10_dkb.c b/PDP10/ka10_dkb.c index 2b044a0..df12247 100644 --- a/PDP10/ka10_dkb.c +++ b/PDP10/ka10_dkb.c @@ -399,13 +399,27 @@ int dkb_keys (SIM_KEY_EVENT *kev, UNIT *uptr) } } +uint32 dkb_line (SIM_KEY_EVENT *kev) +{ +#if NUM_DEVS_III + if (kev->dev == &iii_dev) + return iii_keyboard_line ((void *)kev->vptr); +#endif +#if NUM_DEVS_DD + if (kev->dev == &dd_dev) + return dd_keyboard_line ((void *)kev->vptr); +#endif + return ~0U; +} + int dkb_keyboard (SIM_KEY_EVENT *kev) { sim_debug(DEBUG_DETAIL, &dkb_dev, "DKB key %d %o\n", kev->key, kev->state); if (dkb_modifiers (kev)) return 0; - if (dkb_keys (kev, &dkb_unit[0])) { + dkb_unit[0].LINE = dkb_line (kev); + if (dkb_unit[0].LINE != ~0U && dkb_keys (kev, &dkb_unit[0])) { dkb_unit[0].DATA |= VALID; dkb_unit[0].STATUS |= DONE; set_interrupt(DKB_DEVNUM, dkb_unit[0].PIA); @@ -427,12 +441,12 @@ t_stat dkb_reset( DEVICE *dptr) t_stat dkb_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr) { - fprintf (stderr, "This is the keyboard input for the Stanford III display\n"); + fprintf (stderr, "Keyboard input for the Stanford III and Data Disc displays\n"); return SCPE_OK; } const char *dkb_description (DEVICE *dptr) { - return "Keyboard scanner for III display devices"; + return "Keyboard scanner for III and DD display devices"; } #endif diff --git a/PDP10/ka10_iii.c b/PDP10/ka10_iii.c index 167b57b..341a1b6 100644 --- a/PDP10/ka10_iii.c +++ b/PDP10/ka10_iii.c @@ -635,6 +635,12 @@ skip_up: return SCPE_OK; } +uint32 iii_keyboard_line (void *p) +{ + /* III keyboards are 0 to 5, but only one is supported now. */ + return 0; +} + t_stat iii_reset (DEVICE *dptr) { if (dptr->flags & DEV_DIS) { diff --git a/PDP10/kx10_defs.h b/PDP10/kx10_defs.h index 0defc7d..75da569 100644 --- a/PDP10/kx10_defs.h +++ b/PDP10/kx10_defs.h @@ -846,6 +846,9 @@ extern UNIT auxcpu_unit[]; //int slave_write (t_addr addr, uint64); //extern UNIT slave_unit[]; #endif +#if NUM_DEVS_III +extern uint32 iii_keyboard_line (void *); +#endif #if NUM_DEVS_DD extern uint32 dd_keyboard_line (void *); #endif