Commit graph

4291 commits

Author SHA1 Message Date
Ken Rector
6b544073ae 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
debde9a0a3 sigma: Made CHANA chan_ctl_time accessible as a register 2022-07-23 16:46:55 -07:00
Bob Supnik
4846006b41 sigma: Added IO numeric channel numbers to SET/SHOW 2022-07-23 16:45:43 -07:00
Ken Rector
59ddf72b52 sigma: Clean compiler warning 2022-07-23 06:43:20 -10:00
Ken Rector
677e89bab0 sigma: Fix breakpoint state restore 2022-07-12 13:54:58 -07:00
Ken Rector
2a69f1bdfa sigma: Fix dangling else in IO read/write direct 2022-07-12 13:53:32 -07:00
Bob Supnik
6dc50c564b doc: Update Interdata doc to properly list changed register names 2022-07-12 11:49:20 -07:00
Richard Cornwell
aec04ef956 KA10: Removed duplicate register. 2022-07-08 17:48:04 -04:00
Bob Supnik
adfcff49b7 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
fa0c561c28 sigma: Use 2 digit years in dates more consistently in top comments 2022-07-07 05:42:33 -10: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
Ken Rector
bef5b821f0 SCP: Fix parenthesis to avoid potential compiler warnings 2022-07-01 07:23:35 -10:00
Ken Rector
755cb9ccff SCP: Add parenthesis to avoid potential compiler warnings 2022-07-01 07:13:22 -10:00
Ken Rector
254057289f 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
0caa2e7ed5 sigma: Cleanup comment 2022-06-29 08:02:59 -10:00
J. David Bryan
4dde5a69a4 SCP: Updated REG macros and manipulation APIs
- Rewrote get_rval, put_rval to support fields within arrays of structures
- REG "size" field now determines access size
- REG "maxval" field now determines maximum allowed value

Merge from v3.12
2022-06-24 15:39:45 -07:00
Richard Cornwell
8bbec61483 KA10: Removed REG_UNIT. 2022-06-21 19:32:53 -04:00
Richard Cornwell
38cd649a9f KA10: Removed duplicate file in Visual Studio build of KA10. 2022-06-21 13:50:46 -04:00
Richard Cornwell
60d2eaf42b Updated Makefile and Visual Studio project to include extra devices on KL10. 2022-06-21 09:51:19 -04:00
Richard Cornwell
d88aab9ae2 KA10: Updated documentation for PDP10 simulators. 2022-06-21 09:50:43 -04:00
Richard Cornwell
46a5532404 KA10: Added default disable for devices that could be on KL10. 2022-06-21 09:50:05 -04:00
Richard Cornwell
264ca2ef6b KA10: IMP Code support for Tenex. 2022-06-21 09:48:47 -04:00
Richard Cornwell
bad0394323 KA10: Code cleanup for Dectape device. Needed for Tenex support. 2022-06-21 09:47:52 -04:00
Richard Cornwell
d216297a06 KA10: Fixed DK10 to properly interrupt. 2022-06-21 09:47:02 -04:00
Richard Cornwell
25f053e45d KA10: Added switch for DF10 vs DF10C.
Fix bug in interrupt handling in KI when EPT not at 0.
      Fix bug with handling of CCW_COMP flag on DF10 devices.
2022-06-21 09:43:17 -04:00
Bob Supnik
cc6f8ee8ee 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:23:29 -07:00
Bob Supnik
5543e137f8 I1620, I1401: Add max value to address registers 2022-06-16 16:13:46 -07:00
Bob Supnik
07ea411d3e PDP8: Zeroed result exponent in double precision (COVERITY) 2022-06-16 16:13:46 -07:00
Bob Supnik
28fd79ef06 All LP and CD devices: Removed use of ftell for pipe compatibility
Merge changes from v3.12-2
2022-06-16 16:13:46 -07:00
Bob Supnik
8d49d8c297 All Tape DEVICES: Added extra case points for new MTSE definitions
Merge changes from v3.12-2
2022-06-16 16:13:46 -07:00
Anthony Lawrence
bcaed7d0b0 SCP: Fix incorrect disk size reporting when t_addr is 32 bits 2022-06-14 20:21:21 -07:00
Trevor Warwick
2a38dd802b QBus VAX and PDP11: Add support for DPV11 in DDCMP mode
This commit extends the existing DUP11 support to add simulation for a DPV11 in DDCMP mode.

It has been tested with DECnet-VAX Phase V, which has the only host driver I know of. Note
that you may see a few CRC errors logged with high traffic levels, these are due to a couple of
bugs in the VMS driver, for which I'm looking at developing a patch.

Regression testing has been done on the DUP11 on VMS, RSX and TOPS20, which all seemed to work
as well as previously.
2022-06-14 18:32:12 +01:00
Paul Koning
88ce8f7072 Merge remote-tracking branch 'origin/pr/5' 2022-06-11 15:30:52 -04:00
Lars Brinkhoff
2faf59733f Sample stub simulator. 2022-06-11 12:43:22 +02:00
Bill Beech
44428e53b6 SWTP6800: Update to simulators
- General cleanup of codebase
- Fixed condition codes m6800.c  from Roberto Sancho Villa
- Add additional FDC lfd-400 from Roberto Sancho Villa
- Add additional OS's (FLEX 1.0, FDOS 1.0, DOS68, MiniDOS, and MiniDOS-MPX)
  to software support
- Add additional disk formats to software support dc-4.c  from Roberto
  Sancho Villa
- Add CPU history
- Fix LOAD/DUMP to support binary and hex
- Fix fprintf_sym to disassemble 6800 code correctly
- Add EXAMINE/DEPOSIT to CPU Memory
- Fixed disasm to space the register
- Add SET_FLAG(IF) to IRQ – fixed error in handling IRQ from
  Roberto Sancho Villa
2022-06-09 14:28:04 -07:00
Bill Beech
087e0c7bc8 SWTP: Rename boot rom to reflect the ROM version in the filename 2022-06-09 14:10:33 -07:00
Trevor Warwick
6e0e5a714d PDP11 & Unibus VAX, PDP10: Fix DUP device support for use by internal KMC for TOPS-20
This fixes a regression caused by commit b41acb3
2022-06-07 17:16:21 +01:00
rms47
78f56b24f5
Update sigma_dp.c
Found by Ken Rector; TDV hangs because loop is missing its increment.
2022-06-06 15:45:33 -04:00
Paul Koning
2e894a95c3
Merge pull request #1 from simh/open-simh-master
Open simh master
2022-06-05 17:11:01 -04:00
Mark Pizzolato
910bbc2d7e Unibus and Qbus VAXen: Add DUP-11/DPV-11 device
These devices start disabled and will be that way in essentially all
working systems, but there apparently was a DECnet Phase V
support for this device, so it is added to all systems. The DPV
should now be readily testable.

As mentioned in #1152.  That PR will fix the DUP device.

This commit is explicitly released from any license restriction
mentioned in the LICENSE.txt of the github.com/simh/simh
master branch changes.
2022-06-05 13:06:04 -07:00
Paul Koning
5a7a4c778e Fix links in status document; also comment out some parts for which we
don't have support yet.
2022-05-31 09:47:16 -04:00
Paul Koning
5aefb7db88 Initial descriptive files for Open SIMH 2022-05-30 14:38:25 -04:00
Paul Koning
ce19761878 Rename README.md to allow it to be replaced by a short summary. 2022-05-30 14:37:34 -04:00
Trevor Warwick
775e2f1f79 PDP11, Qbus & Unibus VAX: Fix DUP device loopback on device reset
- When the DUP TXCSR DEVICE_RESET bit is set, which clears the MAISEL bits, any
existing tmxr loopback must also be removed.
2022-05-18 16:38:10 +01:00
Trevor Warwick
b41acb30c1 PDP11, Qbus & Unibus VAX: Extend DUP device for DECnet Phase V support
- This involves adding some trailing characters to received DDCMP frames
  to meet host driver expectations (simulation then behaves more like a
  real synchronous device). 1 SYN is enough for VMS, but RSX needs a few
  when there is no abutting frame.
- The VMS driver implements the CRC performance option in section 5.1.2
  of the DDCMP spec., and thus relies on receiving a valid character after
  the CRC on a received frame.
2022-05-16 18:18:26 +01:00
Tony Nicholson
e1ce9f4f70 sim_imd: Check for EOF when reading IMD track headers
The recent change to check that the IMD file track header record is 5
bytes introduced a problem with the end-of-file triggering an open file
error - instead of the previous behaviour where the number of bytes in
the track header was ignored and end-of-file was checked.

I noticed this after fetching and compiling the latest simh altairz80 - it
was refusing to my mount floppy disk IMD image files (which I had made
from 8-inch floppies back in 2006).

```
maxi:s100 tony$ altairz80 cpm3bk.ini

Altair 8800 (Z80) simulator V4.0-0 Current        simh git commit id: d3f1ee09
Console escape is CTRL-\
I8272: IMD disk corrupt.
/Users/tony/s100/cpm3bk.ini-58> att disk1a0 /Users/tony/s100/C3BKSIMH.IMD
File open error
```

Looking at the commit history, I saw the change by Howard Harte to
sim_imd.c to "Resolve CID 1502448, 1502460" - presumably to fix the
call to sim_fread() that was not checking the returned result.
Howard's "fix" broke the parsing of the IMD file sector headers by
not checking for an end-of-file condition (at the end of file it
would read 0 bytes and this was now treated as a fatal error - whereas
the old code had a check for end-of-file after the call to sim_fread()).

This commit now detects end-of-file correctly, as well as verifying
the track header is 5 bytes.
2022-05-01 08:01:18 +10:00
Mark Pizzolato
d3f1ee0998 CONSOLE: Set console input WAIT time to reflect console speed 2022-04-05 08:37:03 -07:00
Mark Pizzolato
b8015349e2 DISK: Add progress indications for ZAP -Z 2022-04-01 12:37:11 -07:00
Mark Pizzolato
a15c6407bd SCSI: Add clean SCSI command debugging support 2022-03-25 17:32:57 -07:00
Mark Pizzolato
6cac5c9eae DISK: Force Read Only for all ISO container attach operations
ISO files and real CDs exist which don't have ISO 9660 file structure.
These do contain ODS2 file systems since they were produced before
ISO 9660 was standardized and certainly before OS support for ISO
9660 was added.  As such, any file named .iso or .ISO will always be
attached read-only since CDs are never naturally writable devices.
2022-03-25 16:25:28 -07:00