From 722302c45bd18b4f17343c654cedc4691721602a Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 16 Apr 2026 06:38:22 -1000 Subject: [PATCH] TIMER: Add facility to restore memory to 0 after pre-calibration PDP8, PDP11, PDP10, VAX and SDS simulators have memory restored to zero after pre-calibration is performed. --- PDP10/pdp10_cpu.c | 5 +++++ PDP11/pdp11_cpu.c | 5 +++++ PDP8/pdp8_cpu.c | 5 +++++ SDS/sds_cpu.c | 5 +++++ VAX/vax_cpu.c | 5 +++++ doc/simh.doc | Bin 303104 -> 303104 bytes scp.c | 1 + scp.h | 1 + sim_timer.c | 4 ++++ 9 files changed, 31 insertions(+) diff --git a/PDP10/pdp10_cpu.c b/PDP10/pdp10_cpu.c index 34dd92d1..af508f79 100644 --- a/PDP10/pdp10_cpu.c +++ b/PDP10/pdp10_cpu.c @@ -2358,6 +2358,10 @@ static const char *pdp10_clock_precalibrate_commands[] = { "PC 100", NULL}; +static const char *pdp10_clock_precalibrate_cleanup_commands[] = { + "0-120 0", + NULL}; + /* Reset routine */ t_stat cpu_reset (DEVICE *dptr) @@ -2380,6 +2384,7 @@ if (M == NULL) sim_vm_pc_value = &pdp10_pc_value; sim_vm_is_subroutine_call = &cpu_is_pc_a_subroutine_call; sim_clock_precalibrate_commands = pdp10_clock_precalibrate_commands; +sim_clock_precalibrate_cleanup_commands = pdp10_clock_precalibrate_cleanup_commands; sim_vm_initial_ips = 2 * SIM_INITIAL_IPS; pcq_r = find_reg ("PCQ", NULL, dptr); if (pcq_r) diff --git a/PDP11/pdp11_cpu.c b/PDP11/pdp11_cpu.c index 63359927..3cb280c1 100644 --- a/PDP11/pdp11_cpu.c +++ b/PDP11/pdp11_cpu.c @@ -3413,6 +3413,10 @@ static const char *pdp11_clock_precalibrate_commands[] = { "PC 100", NULL}; +static const char *pdp11_clock_precalibrate_cleanup_commands[] = { + "100-200 0", + NULL}; + /* Special boot command - linked into SCP by initial reset Syntax: BOOT {CPU} @@ -3480,6 +3484,7 @@ if (M == NULL) { /* First time init */ sim_brk_type_desc = cpu_breakpoints; sim_vm_is_subroutine_call = &cpu_is_pc_a_subroutine_call; sim_clock_precalibrate_commands = pdp11_clock_precalibrate_commands; + sim_clock_precalibrate_cleanup_commands = pdp11_clock_precalibrate_cleanup_commands; auto_config(NULL, 0); /* do an initial auto configure */ } pcq_r = find_reg ("PCQ", NULL, dptr); diff --git a/PDP8/pdp8_cpu.c b/PDP8/pdp8_cpu.c index 35ab239b..3abf4c26 100644 --- a/PDP8/pdp8_cpu.c +++ b/PDP8/pdp8_cpu.c @@ -1387,6 +1387,10 @@ static const char *pdp8_clock_precalibrate_commands[] = { "PC 100", NULL}; +static const char *pdp8_clock_precalibrate_cleanup_commands[] = { + "100-112 0", + NULL}; + /* Reset routine */ t_stat cpu_reset (DEVICE *dptr) @@ -1401,6 +1405,7 @@ if (pcq_r) else return SCPE_IERR; sim_clock_precalibrate_commands = pdp8_clock_precalibrate_commands; +sim_clock_precalibrate_cleanup_commands = pdp8_clock_precalibrate_cleanup_commands; sim_vm_initial_ips = 10 * SIM_INITIAL_IPS; sim_brk_types = SWMASK ('E') | SWMASK('I'); sim_brk_dflt = SWMASK ('E'); diff --git a/SDS/sds_cpu.c b/SDS/sds_cpu.c index 103691cd..8d525dda 100644 --- a/SDS/sds_cpu.c +++ b/SDS/sds_cpu.c @@ -1806,12 +1806,17 @@ static const char *sds_clock_precalibrate_commands[] = { "111 BRU 100", NULL}; +static const char *sds_clock_precalibrate_cleanup_commands[] = { + "100-120 0", + NULL}; + /* Clock reset */ t_stat rtc_reset (DEVICE *dptr) { sim_clock_precalibrate_commands = sds_clock_precalibrate_commands; +sim_clock_precalibrate_cleanup_commands = sds_clock_precalibrate_cleanup_commands; rtc_pie = 0; /* disable pulse */ rtc_unit.wait = sim_rtcn_init (rtc_unit.wait, TMR_RTC); /* initialize clock calibration */ sim_activate (&rtc_unit, rtc_unit.wait); /* activate unit */ diff --git a/VAX/vax_cpu.c b/VAX/vax_cpu.c index b9a2a49b..37ddc2f3 100644 --- a/VAX/vax_cpu.c +++ b/VAX/vax_cpu.c @@ -3324,6 +3324,10 @@ static const char *vax_clock_precalibrate_commands[] = { "PC 100", NULL}; +static const char *vax_clock_precalibrate_cleanup_commands[] = { + "100-140 0", + NULL}; + /* Reset */ t_stat cpu_reset (DEVICE *dptr) @@ -3341,6 +3345,7 @@ if (M == NULL) { /* first time init? */ sim_brk_types = sim_brk_dflt = SWMASK ('E'); sim_vm_is_subroutine_call = cpu_is_pc_a_subroutine_call; sim_clock_precalibrate_commands = vax_clock_precalibrate_commands; + sim_clock_precalibrate_cleanup_commands = vax_clock_precalibrate_cleanup_commands; sim_vm_initial_ips = SIM_INITIAL_IPS; pcq_r = find_reg ("PCQ", NULL, dptr); if (pcq_r == NULL) diff --git a/doc/simh.doc b/doc/simh.doc index 9f6dd638d6cda94975b6cec1ed47825f42560cea..244ddc2a1d0f2bd98e21510f2240094b8634a491 100644 GIT binary patch delta 52333 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 delta 52231 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 diff --git a/scp.c b/scp.c index 168b7829..70595633 100644 --- a/scp.c +++ b/scp.c @@ -483,6 +483,7 @@ t_bool (*sim_vm_fprint_stopped) (FILE *st, t_stat reason) = NULL; const char *sim_vm_release = NULL; const char *sim_vm_release_message = NULL; const char **sim_clock_precalibrate_commands = NULL; +const char **sim_clock_precalibrate_cleanup_commands = NULL; /* Prototypes */ diff --git a/scp.h b/scp.h index b7ee0b5f..52a8be39 100644 --- a/scp.h +++ b/scp.h @@ -391,6 +391,7 @@ extern t_value (*sim_vm_pc_value) (void); extern t_bool (*sim_vm_is_subroutine_call) (t_addr **ret_addrs); extern void (*sim_vm_reg_update) (REG *rptr, uint32 idx, t_value prev_val, t_value new_val); extern const char **sim_clock_precalibrate_commands; +extern const char **sim_clock_precalibrate_cleanup_commands; extern uint32 sim_vm_initial_ips; /* base estimate of simulated instructions per second */ extern const char *sim_vm_interval_units; /* Simulator can change this - default "instructions" */ extern const char *sim_vm_step_unit; /* Simulator can change this - default "instruction" */ diff --git a/sim_timer.c b/sim_timer.c index 5676dde9..a5aa0e70 100644 --- a/sim_timer.c +++ b/sim_timer.c @@ -3820,6 +3820,10 @@ for (tmr=0; tmr<=SIM_NTIMERS; tmr++) { if (rtc->hz) rtc->initd = rtc->currd = (int32)(((double)sim_precalibrate_ips) / rtc->hz); } +if ((cmd = sim_clock_precalibrate_cleanup_commands)) { + while (*cmd) + exdep_cmd (EX_D, *(cmd++)); + } reset_all_p (0); sim_run_boot_prep (RU_GO); for (tmr=0; tmr<=SIM_NTIMERS; tmr++) {