mirror of
https://github.com/simh/simh.git
synced 2026-01-25 19:56:25 +00:00
Merge of Bob's simh-v3.9-0-rc3
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/* id_defs.h: Interdata 16b/32b simulator definitions
|
||||
|
||||
Copyright (c) 2000-2010, Robert M. Supnik
|
||||
Copyright (c) 2000-2012, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -26,6 +26,7 @@
|
||||
The author gratefully acknowledges the help of Carl Friend and Al Kossow,
|
||||
who provided key documents about the Interdata product line.
|
||||
|
||||
18-Apr-12 RMS Added clock coschedule prototype
|
||||
22-May-10 RMS Added check for 64b definitions
|
||||
09-Mar-06 RMS Increased register sets to architectural limit
|
||||
25-Jan-04 RMS Removed local logging support
|
||||
@@ -483,4 +484,6 @@ t_stat set_dev (UNIT *uptr, int32 val, char *cptr, void *desc);
|
||||
t_stat show_sch (FILE *st, UNIT *uptr, int32 val, void *desc);
|
||||
t_stat show_dev (FILE *st, UNIT *uptr, int32 val, void *desc);
|
||||
|
||||
int32 lfc_cosched (int32 wait);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
pas Programmable asynchronous line adapter(s)
|
||||
|
||||
18-Apr-12 RMS Revised to use clock coscheduling
|
||||
21-Mar-12 RMS Fixed TT_GET_MODE test to use TTUF_MODE_x (Michael Bloom)
|
||||
19-Nov-08 RMS Revised for common TMXR show routines
|
||||
18-Jun-07 RMS Added UNIT_IDLE flag
|
||||
@@ -319,7 +320,7 @@ int32 ln, c, out;
|
||||
|
||||
if ((uptr->flags & UNIT_ATT) == 0) /* attached? */
|
||||
return SCPE_OK;
|
||||
sim_activate (uptr, lfc_poll); /* continue poll */
|
||||
sim_activate (uptr, lfc_cosched (lfc_poll)); /* continue poll */
|
||||
ln = tmxr_poll_conn (&pas_desc); /* look for connect */
|
||||
if (ln >= 0) { /* got one? */
|
||||
if ((pasl_unit[ln].flags & UNIT_MDM) && /* modem control */
|
||||
@@ -468,7 +469,7 @@ else {
|
||||
pasl_dev.flags = pasl_dev.flags & ~DEV_DIS;
|
||||
}
|
||||
if (pas_unit.flags & UNIT_ATT) /* master att? */
|
||||
sim_activate_abs (&pas_unit, lfc_poll); /* cosched with clock */
|
||||
sim_activate (&pas_unit, lfc_poll);
|
||||
else sim_cancel (&pas_unit); /* else stop */
|
||||
for (i = 0; i < PAS_LINES; i++)
|
||||
pas_reset_ln (i);
|
||||
@@ -484,7 +485,7 @@ t_stat r;
|
||||
r = tmxr_attach (&pas_desc, uptr, cptr); /* attach */
|
||||
if (r != SCPE_OK) /* error */
|
||||
return r;
|
||||
sim_activate_abs (uptr, 100); /* quick poll */
|
||||
sim_activate (uptr, 100); /* quick poll */
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* id_tt.c: Interdata teletype
|
||||
|
||||
Copyright (c) 2000-2008, Robert M. Supnik
|
||||
Copyright (c) 2000-2012, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
tt console
|
||||
|
||||
18-Apr-12 RMS Revised to use clock coscheduling
|
||||
18-Jun-07 RMS Added UNIT_IDLE flag to console input
|
||||
18-Oct-06 RMS Sync keyboard to LFC clock
|
||||
30-Sep-06 RMS Fixed handling of non-printable characters in KSR mode
|
||||
@@ -183,7 +184,8 @@ t_stat tti_svc (UNIT *uptr)
|
||||
{
|
||||
int32 out, temp;
|
||||
|
||||
sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_poll)); /* continue poll */
|
||||
sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_cosched (lfc_poll)));
|
||||
/* continue poll */
|
||||
tt_sta = tt_sta & ~STA_BRK; /* clear break */
|
||||
if ((temp = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */
|
||||
return temp;
|
||||
@@ -239,7 +241,7 @@ t_stat tt_reset (DEVICE *dptr)
|
||||
{
|
||||
if (dptr->flags & DEV_DIS) /* dis? cancel poll */
|
||||
sim_cancel (&tt_unit[TTI]);
|
||||
else sim_activate_abs (&tt_unit[TTI], KBD_WAIT (tt_unit[TTI].wait, lfc_poll));
|
||||
else sim_activate (&tt_unit[TTI], KBD_WAIT (tt_unit[TTI].wait, lfc_poll));
|
||||
sim_cancel (&tt_unit[TTO]); /* cancel output */
|
||||
tt_rd = tt_fdpx = 1; /* read, full duplex */
|
||||
tt_chp = 0; /* no char */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* id_ttp.c: Interdata PASLA console interface
|
||||
|
||||
Copyright (c) 2000-2008, Robert M. Supnik
|
||||
Copyright (c) 2000-2012, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
ttp console (on PAS)
|
||||
|
||||
18-Apr-12 RMS Revised to use clock coscheduling
|
||||
18-Jun-07 RMS Added UNIT_IDLE flag to console input
|
||||
18-Oct-06 RMS Sync keyboard to LFC clock
|
||||
22-Nov-05 RMS Revised for new terminal processing routines
|
||||
@@ -179,7 +180,8 @@ t_stat ttpi_svc (UNIT *uptr)
|
||||
{
|
||||
int32 c, out;
|
||||
|
||||
sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_poll)); /* continue poll */
|
||||
sim_activate (uptr, KBD_WAIT (uptr->wait, lfc_cosched (lfc_poll)));
|
||||
/* continue poll */
|
||||
ttp_sta = ttp_sta & ~STA_FR; /* clear break */
|
||||
if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */
|
||||
return c;
|
||||
@@ -237,7 +239,7 @@ t_stat ttp_reset (DEVICE *dptr)
|
||||
{
|
||||
if (dptr->flags & DEV_DIS)
|
||||
sim_cancel (&ttp_unit[TTI]);
|
||||
else sim_activate_abs (&ttp_unit[TTI], KBD_WAIT (ttp_unit[TTI].wait, lfc_poll));
|
||||
else sim_activate (&ttp_unit[TTI], KBD_WAIT (ttp_unit[TTI].wait, lfc_poll));
|
||||
sim_cancel (&ttp_unit[TTO]);
|
||||
CLR_INT (v_TTP); /* clear int */
|
||||
CLR_ENB (v_TTP);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* id_uvc.c: Interdata universal clock
|
||||
|
||||
Copyright (c) 2001-2008, Robert M. Supnik
|
||||
Copyright (c) 2001-2012, Robert M. Supnik
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -26,6 +26,7 @@
|
||||
pic precision incremental clock
|
||||
lfc line frequency clock
|
||||
|
||||
18-Apr-12 RMS Added lfc_cosched routine
|
||||
18-Jun-07 RMS Added UNIT_IDLE flag
|
||||
18-Oct-06 RMS Changed LFC to be free running, export tmr_poll
|
||||
23-Jul-05 RMS Fixed {} error in OC
|
||||
@@ -351,12 +352,22 @@ if (lfc_arm) { /* armed? */
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Clock coscheduling routine */
|
||||
|
||||
int32 lfc_cosched (int32 wait)
|
||||
{
|
||||
int32 t;
|
||||
|
||||
t = sim_is_active (&lfc_unit);
|
||||
return (t? t - 1: wait);
|
||||
}
|
||||
|
||||
/* Reset routine */
|
||||
|
||||
t_stat lfc_reset (DEVICE *dptr)
|
||||
{
|
||||
lfc_poll = sim_rtcn_init (lfc_unit.wait, TMR_LFC);
|
||||
sim_activate_abs (&lfc_unit, lfc_poll); /* init clock */
|
||||
sim_activate (&lfc_unit, lfc_poll); /* init clock */
|
||||
CLR_INT (v_LFC); /* clear int */
|
||||
CLR_ENB (v_LFC); /* disable int */
|
||||
lfc_arm = 0; /* disarm int */
|
||||
|
||||
Reference in New Issue
Block a user