mirror of
https://github.com/open-simh/simh.git
synced 2026-05-05 15:43:58 +00:00
Asynchronous Support
scp.c, scp.h
- added sim_uname (Unit Name) API to simplify places which might want to display it (mostly debug messages).
- added support for clock co-scheduling
- added debugging to trace event queue activities
sim_defs.h
- added support for clock co-scheduling
- added support for sim_uname (Thread local storage macro)
- added support for debugging to trace event queue activities
- simplified debug code by using sim_uname
- fixed support macro for sim_is_active when asynch timers are in use
sim_rev.h
- fixed nested comments
sim_tmxr.c, sim_tmxr.h
- added support for clock co-scheduling
- simplified debug code by using sim_uname
- added support for devices which poll for output on different units
sim_timer.c, sim_timer.h
- added support for clock co-scheduling
- fixed asynchronous clock calibration to smooth out calibration adjustments
- simplified debug code by using sim_uname
- added ability (when running with asynchronous support) to explicitly disable or enable asynchronous timer support.
- changed sim_timer_inst_per_sec to return a double value since the result is always used in a double expression and integer overflow could occur under strange timing conditions
vax/vax_stddev.c
- converted from simulator specific clock co-scheduling to generic clock co-scheduling.
vax/vax_cpu.c
- added EVENT and ACTIVATE debug flag (SET CPU DEBUG=EVENT;ACTIVATE) support
pdp11/pdp11_dz.c
- converted from simulator specific clock co-scheduling to generic clock co-scheduling.
pdp11/pdp11_vh.c
- converted from simulator specific clock co-scheduling to generic clock co-scheduling.
pdp11/pdp11_xq.c
- converted from simulator specific clock co-scheduling to generic clock co-scheduling.
This commit is contained in:
@@ -491,6 +491,8 @@ DEBTAB cpu_deb[] = {
|
||||
{ "INTEXC", LOG_CPU_I },
|
||||
{ "REI", LOG_CPU_R },
|
||||
{ "CONTEXT", LOG_CPU_P },
|
||||
{ "EVENT", SIM_DBG_EVENT },
|
||||
{ "ACTIVATE", SIM_DBG_ACTIVATE },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@ t_stat tti_svc (UNIT *uptr)
|
||||
{
|
||||
int32 c;
|
||||
|
||||
sim_activate (uptr, KBD_WAIT (uptr->wait, clk_cosched (tmr_poll)));
|
||||
sim_clock_coschedule (uptr, KBD_WAIT (uptr->wait, tmr_poll));
|
||||
/* continue poll */
|
||||
if ((c = sim_poll_kbd ()) < SCPE_KFLAG) /* no char or error? */
|
||||
return c;
|
||||
@@ -405,16 +405,6 @@ if (!todr_blow && todr_reg) /* if running? */
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
/* Clock coscheduling routine */
|
||||
|
||||
int32 clk_cosched (int32 wait)
|
||||
{
|
||||
int32 t;
|
||||
|
||||
t = sim_is_active (&clk_unit);
|
||||
return (t? t - 1: wait);
|
||||
}
|
||||
|
||||
int32 todr_rd (void)
|
||||
{
|
||||
TOY *toy = (TOY *)clk_unit.filebuf;
|
||||
@@ -498,6 +488,7 @@ t_stat clk_reset (DEVICE *dptr)
|
||||
{
|
||||
int32 t;
|
||||
|
||||
sim_register_clock_unit (&clk_unit);
|
||||
clk_csr = 0;
|
||||
CLR_INT (CLK);
|
||||
if (!sim_is_running) { /* RESET (not IORESET)? */
|
||||
|
||||
Reference in New Issue
Block a user