The problems all stem from a single root cause: when an interrupt is requested - via any one of dozens of mechanisms (uend, normal end, special request, error, etc), the interrupt routine must be presented with the full device address, including the unit, which is stored in the channel data structures. This is so that AIO (acknowledge interrupt) can retrieve the unit number from the channel data structures and give it back to the invoking program. Unfortunately, service routines, error routines, etc were simply using the base device address, which is good enough for all channel operations EXCEPT AIO. So the four multi-unit device (RAD, DK, DP, MT) have had changes to reconstruct the full device address, with unit number, before any calls into the channel are made. DP, funnily enough, required the fewest changes. Ken was exactly right about the need to OR the unit number into dva at the start of the unit service routine. That had to be done in a few more places where my code was being lazy. RAD, DK, MT required many more changes, but they were mostly mechanical. All references to xx_dib.dva had to be examined and replaced with a full device address. The full device address had to be reconstructed from the UNIT pointer and the base device address, through the magic of pointer arithmetic. Another sore spot was HIO. HIO stops all the active unit in its tracks and does a channel UEND on it. The calculation of the unit number in the UEND was not correct in a few places, notably if DP did a controller reset. Fixes for the four modules; an updated bug history; and an expanded design document; are attached.
Open SIMH machine simulator
This is the codebase of SIMH, a framework and collection of computer system simulators.
SIMH was created by Bob Supnik, originally at Digital Equipment Corporation, and extended by contributions of many other people. It is now an open source project, licensed under an MIT open source license (see LICENSE.txt for the specific wording). The project gatekeepers are the members of the SIMH Steering Group. We welcome and encourage contributions from all. Contributions will be covered by the project license.
The Open SIMH code base was taken from a code base maintained by Mark Pizzolato as of 12 May 2022. From that point onward there is no connection between that source and the Open SIMH code base. A detailed listing of features as of that point may be found in SIMH-V4-status.