1
0
mirror of https://github.com/open-simh/simh.git synced 2026-01-13 23:37:13 +00:00
Bob Supnik 9258e25c0d sigma: Fixed bugs in multi-unit operation
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.
2022-07-03 13:56:46 -07:00
2020-12-11 10:38:07 +01:00
2022-03-17 16:04:43 -07:00
2022-03-13 11:47:08 -07:00
2022-06-21 19:32:53 -04:00
2022-06-11 12:43:22 +02:00
2022-06-09 14:28:04 -07:00
2022-03-18 16:47:33 -07:00
2022-06-09 14:28:04 -07:00
2022-02-28 07:44:39 -08:00
2022-03-06 02:11:57 -08:00
2022-03-14 15:28:39 -07:00
2022-03-14 15:28:39 -07:00
2022-03-06 02:11:57 -08:00

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.

Description
The Open SIMH simulators package
Readme 140 MiB
Languages
C 96.9%
Assembly 1%
CMake 0.5%
Batchfile 0.4%
Makefile 0.4%
Other 0.5%