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:
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user