1
0
mirror of https://github.com/open-simh/simh.git synced 2026-03-14 14:24:23 +00:00
Commit Graph

292 Commits

Author SHA1 Message Date
John Dundas
02bcdc82cd PDP11, VAXen: Fix to VH device to properly reference the line number
- Correct RBUF_GETLINE & RBUF_PUTLINE: these are both sensitive to
  modeling DHU vs. DHV; the correct bit mask was not generated for DHU.
- Make certain the device presents 16 lines when modeling a DHU.
- In vh_reset(), make certain the number of lines makes sense in the
  context of the current bus and adjust if not appropriate; mark each
  unit correctly for DHU vs. DHV; mark each unit enabled or disabled as
  appropriate; reset the vector length; reset the number of units.
- Retrofit updates from V4 SIMH: (Mark Pizzolato)
  - VH_LINES must be  set according to the bus type (Unibus: 16,
    Qbus: 8).
  - Define VH_LINES_ALLOC at 16 lines/unit to reserve the maximum space
    for lines.
  - SET VH LINES=n is now sensitive to mode; appropriate values are
    DHV: 8, 16, 24, 32; DHU: 16, 32, 48, 64
  - In fifo_get(), sense immediately when the FIFO empties, rather
    than the next time through.
  - In vh_setnl(), call vh_reset () to adjust the state of the units
    and lines, and invoke auto_config().
2022-07-24 17:07:05 -07:00
Ken Rector
0eb28d601e sigma: DP device SEEK(I), RECAL(I) must be coded as fast operations. 2022-07-23 16:55:21 -07:00
Ken Rector
fc18eaa047 sigma: UEND flag in the wrong bit position in channel status word. 2022-07-23 16:54:19 -07:00
Ken Rector
7953088407 sigma: Fix MT tape mark error handling
revised error handling failed to set tape mark status on space file
forward/reverse.
2022-07-23 16:52:50 -07:00
Bob Supnik
6ca5a58043 sigma: Made CHANA chan_ctl_time accessible as a register 2022-07-23 16:46:55 -07:00
Bob Supnik
6f5b5c3387 sigma: Added IO numeric channel numbers to SET/SHOW 2022-07-23 16:45:43 -07:00
Ken Rector
d6544e09b9 sigma: Fix breakpoint state restore 2022-07-12 13:54:58 -07:00
Ken Rector
8dc14a4b52 sigma: Fix dangling else in IO read/write direct 2022-07-12 13:53:32 -07:00
Bob Supnik
801a3be07d ID16, ID32: Fixed Duplicate register names 2022-07-12 11:11:59 -07:00
Bob Supnik
6ea9c58b8b sigma: Fix error handling in MT device channel errors
Ken's last note led me to look at magtape error handling, and it was
not right. This has resulted in a lot of code changes in sigma_mt.c, but
the changes are mostly mechanical. Instead of trying to be clever and
do channel handling in mt_map_err or at the bottom of the mt_svc
routine, every magtape command now does its own error handling.
This makes the code repetitive, but I hope it is much clearer as a result.
2022-07-07 05:46:32 -10:00
Bob Supnik
93acb96dd8 sigma: Use 2 digit years in dates more consistently in top comments 2022-07-07 05:42:33 -10:00
Bob Supnik
a28585d265 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
Ken Rector
29404358d7 sigma: DP device fixes
- TIO status routine always returns DVS_AUTO instead of proper status.
- DP_SEEK definition is off by 1.
- reset does not properly initialize controller, seek threads.
2022-06-29 08:07:10 -10:00
Bob Supnik
622dc28bc8 sigma: Cleanup comment 2022-06-29 08:02:59 -10:00
Bob Supnik
14dccaa4e7 simh v3.12-2 v3.12-2 2022-06-17 09:03:47 -07:00
Bob Supnik
b0568dc2cb SCP: Fixed bug in byte deposits if aincr > 1
The PDP11 and VAX have length switches - B, W, and (VAX) L - to
override the default parsing of numberic display or input as words
(PDP11) or longwords (VAX CPU) or bytes (VAX byte devices).
This worked fine if every value is filled in. On the PDP11:

sim> ideposit -b 0-3
0:    1
1:    2
2:    3
3:    4
sim>

But if the user skips an input, IDEPOSIT advances by 2, not 1:

sim> ideposit -b 0-3
0:    1
1:    (cr)
3:    4
sim>

This change now produces the correct behavior.

PDP-11 simulator V3.12-2
sim> id -b 0-3
0:      1
1:
2:      3
3:      4
sim>
2022-06-17 08:40:34 -07:00
J. David Bryan
f7ccf334a2 TIMER, TMXR: Add casts for down-conversion potential compiler warnings 2022-06-16 21:06:46 -07:00
J. David Bryan
13c9ca5bec TAPE: Added extended SIMH format support
- Improved tape_erase_fwd corrupt image error checking
- Added sim_tape_erase global, tape_erase internal functions
2022-06-16 21:05:23 -07:00
Bob Supnik
980c21e50f I1401, I1620: Define max memory address values 2022-05-16 07:51:22 -07:00
Bob Supnik
80ed10e9a2 PDP11, VAX, VAX780: Cleanup format of conflict error messages 2022-05-16 05:21:42 -07:00
Bob Supnik
c744b3ee06 PDP11: Add MMU as settable option to 11/23, 11/40, 11/45 2022-05-16 05:20:31 -07:00
Bob Supnik
4a94125810 PDP11: Fix XQ Register declarations 2022-05-16 05:11:35 -07:00
Reindert Voorhorst
13562ba65a PDP11: Fix bug in KG device continuous computation 2022-05-16 05:09:18 -07:00
Bob Supnik
6e61f64fa5 PDP8: Zeroed result exponent in double precision (COVERITY) 2022-05-16 05:01:07 -07:00
Bob Supnik
e2d3a2ae70 All LP and CD devices: Removed use of ftell for pipe compatibility 2022-05-16 04:57:30 -07:00
Bob Supnik
5d04198757 All Tape DEVICES: Added extra case points for new MTSE definitions 2022-05-16 03:36:09 -07:00
Mark Pizzolato
9b2899cfef ETHER, CARD, SOCK: Include shared components from V4 codebase 2022-05-16 03:10:18 -07:00
Bob Supnik
8c31bb08e3 alpha: Correct register declarations 2022-05-16 03:03:28 -07:00
Bob Supnik
d29c6f43e3 S3: Restore original S3 code to branch 2022-05-16 03:01:45 -07:00
Rick Murphy
adf023bf86 PDP8: Fix crash when using EP multiply
When performing floating point multiplication, the prior code overwrote
an additional word of the floating point fraction with zeros. This is
harmless with standard FP, as the floating variables always have space
for EP-length vars. When doing an EP multiply, this causes a word on
the stack to be zeroed. For the latest Raspbian release, this causes a
segfault as there's no padding past that var on the stack.

This fix, which has been tested against the original crashing code plus
validated using the FPP-8 diagnostics, avoids the overwrite.
2022-01-07 10:39:14 -08:00
Bob Supnik
fa113143d0 PDP8: Fix device conflict warnings to report problems correctly
As reported in #1084
2021-10-23 14:40:34 -07:00
Bob Supnik
a39b50ff63 PDP8: Update clock options in documentation 2021-06-08 02:00:05 -07:00
Ken Rector
dadb00eb19 SDS: Added C register implementation for various devices 2021-06-08 01:55:07 -07:00
Mark Pizzolato
21c70a82f8 I7094: Replaced MT device dynamic buffers with static ones 2021-06-08 01:51:06 -07:00
Bob Supnik
e44586a917 PDP8: Fixed RF/DF and LP decoding 2021-06-08 01:44:25 -07:00
Bob Supnik
6edc4994eb PDP8, PDP18b: Fixed RF, DF, DT device bug if read overwrites WC memory location 2021-06-08 01:43:32 -07:00
Bob Supnik
e039527a34 PDP8: Added diagnostic mode for TSS/8 2021-06-07 20:40:35 -07:00
Mark Pizzolato
53fa9e5cb1 PDP8: Fixed bug in binary loader 2021-06-07 20:38:23 -07:00
Mark Pizzolato
7ed7d38ff4 CARD: Latest from 4.x master branch 2021-01-17 11:20:15 -08:00
Mark Pizzolato
c263d60a86 ETHER: Latest from 4.x master branch 2021-01-17 11:19:53 -08:00
Ken Rector
79878eb6ed SDS: Add Card Reader and Card Punch devices 2020-12-27 13:51:07 -08:00
Bob Supnik
541d1c3c90 SCP: Update to Bob Supnik's latest source candidate v3.11.2 2020-12-27 13:25:10 -08:00
Mark Pizzolato
507be1f2e2 CARD: Backport sim_card functionality to Supnik-Current branch 2020-12-18 04:19:17 -08:00
Bob Supnik
e76f5d7fae PDP11: Update doc to include SET CPU BEVENT option 2020-12-18 04:04:33 -08:00
Mark Pizzolato
344fafcc1b sigma: Compiler warning fixups 2020-12-18 04:03:27 -08:00
Mark Pizzolato
f9dd01d8a8 H316, I1401, I1620, I7094, PDP1, PDP11, PDP18B, PDP8: Compiler warning fixups 2020-12-18 04:03:02 -08:00
Mark Pizzolato
dc6d05e9f5 S3: Removed legacy version of IBM System 3 not maintained by Bob Supnik 2020-12-18 03:56:15 -08:00
Bob Supnik
71e2a37ec1 VAX780: Silence bogus gcc warnings 2020-10-07 15:33:11 -07:00
Bob Supnik
c8270f7865 SCP: Update to Bob Supnik's latest source 2020-10-04 05:56:32 -07:00
Samuel Deutsch
adf1a4c1dc NOVA: Fix carry display in CPU instruction history
Problem: Currently when viewing the Nova CPU history the carry flag is always
displayed as 0 regardless of it's actual value at the time.

Cause: The carry bit is stored in bit 17 and is lost when stored into the
int16 carry member of struct Hist_entry

Solution: Shift carry into bit 0 before storing it in the CPU history.
Improve code for displaying carry bit.
2020-10-04 05:51:04 -07:00