simh-testsetgenerator/sigma
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
..
Design Notes on the Sigma 7.doc sigma: Fixed bugs in multi-unit operation 2022-07-03 13:56:46 -07:00
sigma_bugs.txt sigma: Fixed bugs in multi-unit operation 2022-07-03 13:56:46 -07:00
sigma_cis.c sigma: Compiler warning cleanup 2020-10-19 12:29:39 -07:00
sigma_coc.c BESM6, NOVA, ECLIPSE, SIGMA: Set DEVICE type to DEV_MUX in MUX devices 2020-03-31 08:59:50 -07:00
sigma_cpu.c sigma: Compiler warning cleanup 2020-10-19 12:29:39 -07:00
sigma_defs.h sigma: New simulator (from beta) 2018-06-03 17:37:24 -07:00
sigma_disks.txt SIGMA: Merge updates from Bob Supnik 2015-04-04 09:26:23 -07:00
sigma_dk.c sigma: Fixed bugs in multi-unit operation 2022-07-03 13:56:46 -07:00
sigma_dp.c sigma: Fixed bugs in multi-unit operation 2022-07-03 13:56:46 -07:00
sigma_fp.c Merge changes from v3.9-0 rc1 2012-03-19 16:05:24 -07:00
sigma_io.c SIGMA: Fixed unspecified return value in HIO 2017-03-09 08:30:37 -08:00
sigma_io_defs.h NOVA, PDP1,, sigma: Various cosmetic/typo changes 2017-03-20 08:01:58 -07:00
sigma_lp.c All LP and CD devices: Removed use of ftell for pipe compatibility 2022-06-16 16:13:46 -07:00
sigma_map.c sigma: New simulator (from beta) 2018-06-03 17:37:24 -07:00
sigma_mt.c sigma: Fixed bugs in multi-unit operation 2022-07-03 13:56:46 -07:00
sigma_pt.c sigma: New simulator (from beta) 2018-06-03 17:37:24 -07:00
sigma_rad.c sigma: Fixed bugs in multi-unit operation 2022-07-03 13:56:46 -07:00
sigma_rtc.c sigma: Fix Coverity identified problems 2017-03-14 04:46:42 -07:00
sigma_sys.c sigma: Compiler warning cleanup 2020-10-19 12:29:39 -07:00
sigma_tt.c sigma: New simulator (from beta) 2018-06-03 17:37:24 -07:00