mirror of
https://github.com/simh/simh.git
synced 2026-01-13 23:35:57 +00:00
PDP11: Fix PCLK device to properly behave with a 0 value interval (65536)
Also migrate to usecs remaining API to simplify producing the remaining interval value.
This commit is contained in:
parent
d456bac8fc
commit
dbed84c370
@ -274,6 +274,8 @@ else {
|
||||
uint32 delay = DMASK & ((pclk_csr & CSR_UPDN) ? (DMASK + 1 - val) : val);
|
||||
int32 rv;
|
||||
|
||||
if (delay == 0)
|
||||
delay = DMASK + 1;
|
||||
rv = CSR_GETRATE (pclk_csr); /* get rate */
|
||||
sim_activate_after (&pclk_unit, xtim[rv] * delay); /* schedule interrupt */
|
||||
}
|
||||
@ -288,7 +290,7 @@ if (!sim_is_active (&pclk_unit))
|
||||
return pclk_ctr;
|
||||
|
||||
rv = CSR_GETRATE (pclk_csr); /* get rate */
|
||||
val = (uint32)((sim_activate_time (&pclk_unit) / sim_timer_inst_per_sec ()) * (1000000 / xtim[rv]));
|
||||
val = (uint32)((sim_activate_time_usecs (&pclk_unit) / xtim[rv]));
|
||||
val &= DMASK;
|
||||
if (pclk_csr & CSR_UPDN)
|
||||
val = DMASK + 1 - val;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user