1
0
mirror of https://github.com/simh/simh.git synced 2026-04-13 23:44:44 +00:00

PDP8/PDP11/VAX: Support high speed character input on console and other multiplexer ports instead of limiting input data rate to 1 character per clock tick.

This commit is contained in:
Mark Pizzolato
2013-10-23 07:50:39 -07:00
parent c8ae76cb65
commit be46bac750
12 changed files with 39 additions and 48 deletions

View File

@@ -66,7 +66,7 @@ t_stat tty_set_mode (UNIT *uptr, int32 val, char *cptr, void *desc);
DIB tti_dib = { DEV_TTI, 1, { &tti } };
UNIT tti_unit = { UDATA (&tti_svc, UNIT_IDLE|TT_MODE_KSR, 0), 0 };
UNIT tti_unit = { UDATA (&tti_svc, UNIT_IDLE|TT_MODE_KSR, 0), SERIAL_IN_WAIT };
REG tti_reg[] = {
{ ORDATA (BUF, tti_unit.buf, 8) },
@@ -164,6 +164,7 @@ switch (IR & 07) { /* decode IR<9:11> */
case 6: /* KRB */
dev_done = dev_done & ~INT_TTI; /* clear flag */
int_req = int_req & ~INT_TTI;
sim_activate_abs (&tti_unit, tti_unit.wait); /* check soon for more input */
return (tti_unit.buf); /* return buffer */
default:

View File

@@ -92,7 +92,7 @@ void ttx_enbdis (int32 dis);
DIB ttix_dib = { DEV_KJ8, 8,
{ &ttix, &ttox, &ttix, &ttox, &ttix, &ttox, &ttix, &ttox } };
UNIT ttix_unit = { UDATA (&ttix_svc, UNIT_IDLE|UNIT_ATTABLE, 0), KBD_POLL_WAIT };
UNIT ttix_unit = { UDATA (&ttix_svc, UNIT_IDLE|UNIT_ATTABLE, 0), SERIAL_IN_WAIT };
REG ttix_reg[] = {
{ BRDATA (BUF, ttix_buf, 8, 8, TTX_LINES) },
@@ -119,30 +119,12 @@ MTAB ttix_mod[] = {
{ 0 }
};
#define DBG_XMT TMXR_DBG_XMT /* display Transmitted Data */
#define DBG_RCV TMXR_DBG_RCV /* display Received Data */
#define DBG_MDM TMXR_DBG_MDM /* display Modem Signals */
#define DBG_CON TMXR_DBG_CON /* display connection activities */
#define DBG_TRC TMXR_DBG_TRC /* display trace routine calls */
#define DBG_ASY TMXR_DBG_ASY /* display Asynchronous Activities */
DEBTAB ttx_debug[] = {
{"XMT", DBG_XMT},
{"RCV", DBG_RCV},
{"MDM", DBG_MDM},
{"CON", DBG_CON},
{"TRC", DBG_TRC},
{"ASY", DBG_ASY},
{0}
};
DEVICE ttix_dev = {
"TTIX", &ttix_unit, ttix_reg, ttix_mod,
1, 10, 31, 1, 8, 8,
&tmxr_ex, &tmxr_dep, &ttix_reset,
NULL, &ttx_attach, &ttx_detach,
&ttix_dib, DEV_DEBUG | DEV_MUX | DEV_DISABLE,
0, ttx_debug
&ttix_dib, DEV_MUX | DEV_DISABLE,
};
/* TTOx data structures
@@ -188,8 +170,7 @@ DEVICE ttox_dev = {
4, 10, 31, 1, 8, 8,
NULL, NULL, &ttox_reset,
NULL, NULL, NULL,
NULL, DEV_DISABLE | DEV_DEBUG,
0, ttx_debug
NULL, DEV_DISABLE
};
/* Terminal input: IOT routine */
@@ -200,7 +181,6 @@ int32 pulse = inst & 07; /* IOT pulse */
int32 ln = TTX_GETLN (inst); /* line # */
int32 itti = (INT_TTI1 << ln); /* rx intr */
int32 itto = (INT_TTO1 << ln); /* tx intr */
int32 itti_data;
switch (pulse) { /* case IR<9:11> */
@@ -219,7 +199,7 @@ switch (pulse) { /* case IR<9:11> */
return 0; /* clear AC */
case 4: /* KRS */
return ttix_buf[ln]; /* return buf */
return (AC | ttix_buf[ln]); /* return buf */
case 5: /* KIE */
if (AC & 1)
@@ -231,9 +211,8 @@ switch (pulse) { /* case IR<9:11> */
case 6: /* KRB */
dev_done = dev_done & ~itti; /* clear flag */
int_req = int_req & ~itti;
itti_data = ttix_buf[ln]; /* return buf */
sim_activate_abs (&ttix_unit, ttix_unit.wait); /* check soon for more input */
return itti_data;
return ttix_buf[ln]; /* return buf */
default:
return (stop_inst << IOT_V_REASON) + AC;