Proper initialization of the ADCS6 unit data structure depended on the
ADCS6 device being enabled. In cases where the ADCS6 unit was not
enabled, non-debug builds may crash on some host platforms depending on
compiler/memory layout.
- uncalibrated clock mode executes at a precisely specified instruction
rate relative to pseudo wall clock time independent of the host
computer's speed or other loads on the host system.
- Provide additional failure state if/when diagnostics fail.
Experimentation with the SDS 9 Series Algol compiler found a problem in
the card reader.
The Algol card input function reads a complete card with the usual EOM
and WIM loop followed by a disconnect EOM.
A final service is requested after the last column is read to signal
that the card has passed through the reader. If the disconnect EOM
occurs before this service, it cancels it and shuts down the request
as it ought to. However, the disconnect EOM does not reset the status
READING flag and a subsequent Reader Ready Test fails and loops waiting
for the disconnected reader to become ready.
This change fixes the disconnect EOM case to reset the uptr->STATUS and
end of record flag, cr_eor.
- Run simulator with clock calibration disabled so that execution rate
is 1 Mips which the vax ROM diags (the Power up self test) expects
when running from ROM.
- Record test information in the debug file when debugging.
- Add separate mutex serializing debug writes
- Change panel destructor to clear panel on successful destruction.
- Debug status info during shutdown/destruction.
- Request number tracking provided in request and response debug output.
- All relevant thread ids recorded to help debug deadlocks.
- Add debug abort interface to close debug file.
- Reliably detect transitions to HALT state
- When in the middle of a transition to HALT state, avoid calling any
display callback to avoid deadlocks which can occur if the callback
invokes a subsequent dialog with the simulator.
- More robustly capture the reason for the simulator HALTing.
- Avoid register list updates in the callback thread unless in the HALT state.
- Fix potential buffer overrun while pending remote command actions
- Add debug abort interface to close debug file
- Flush partially read command line on EOF
- Flush partially read command line when WRU HALTs execution and switches
to multi-command mode.
- Disable any pending repeat when WRU HALTs execution
- Also abort simulation if idle delay is crazy big which indicates a
problem that has already happened.
- Extend calibration initialization debug output to record optional ticks.
Start of support for PiDP10 front panel.
Moved interrupt checking from check_irq_level to clear_interrupt.
Pending interrupts now saved in IOB_PI.
Cleanup of KL10 Timer interrupts.
Minor code cleanup.
Asynchronous MUX functionality was added long ago and never completely
tested and thus never completed and never actually used.
All of what it was supposed to achieve was independently achieved when
bit rate speed functionality was added.
Forgot to attribute this commit to Seth Morabito <web@loomcom.com>
as author.
When the 3B2 simulator was set to allow idling, there was significant
clock drift related to the primary timer unit. It turns out that the
simulator was using `AIO_SET_INTERRUPT_LATENCY` and `sim_rtcn_tick_ack`
incorrectly. They are not needed with the structure of system timers in
the 3B2 architecture.
When the 3B2 simulator was set to allow idling, there was significant
clock drift related to the primary timer unit. It turns out that the
simulator was using `AIO_SET_INTERRUPT_LATENCY` and `sim_rtcn_tick_ack`
incorrectly. They are not needed with the structure of system timers in
the 3B2 architecture.
- Allow NULL switches argument in sim_panel_mount()
- Add thread names to help identify threads while debugging
- Make mutexes PTHREAD_MUTEX_ERRORCHECK while debugging
NOCALIBRATE mode allows all activity of a simulator run to occur with
precisely consistent event timing. In this mode, every clock tick takes
precisely the same number of instructions/cycles. Likewise, the polling
activities for MUX or other poll oriented devices occurs after precisely
the same number of instructions/cycles executed. As a consequence of
this mode, no effort to align simulated clock ticks (and simulated access
to wall clock time) is made.
This mode might be useful for running diagnostics which expect a
particular relationship between perceived wall clock and instruction
times. It might also be useful for running test scripts which may want
to compare output of previous executions to to current execution or
to compare execution on arbitrarily different host computers.
In NOCALIBRATE mode, the operator gets to specify the pseudo
execution rate along with the base wall clock time that access to
pseudo wall clock accesses returns.
strtotv was extended long ago to allow radix prefixes (0x, 0X, 0b, 0B
and 0) for input when 0 was specified as the parsing radix. The uses
from calls to get_uint() need to specify a 0 radix to leverage this
which wasn't done at that time.
The simh v3 UNIT structure only provided UNIT fields wait, u3, u4, u5 and u6
available for static initialization beyond what is provided by the UDATA
macro. This change assures that here as well.
If a simulator developer needs to initialize UNIT fields beyond what is
available here and via the UDATA macro, then explicit code usually in
the DEVICE reset routine should be used to initialize those fields.
Fix the CDC1700 simulator which statically initialized additional UNIT fields.