3.10 is mostly an attempt to get aligned with the current head of the
GitHub 4.0 sources. While the core libraries and SCP have diverged too
far for real forward and backward compatibility, enough 4.0 workalikes
have been added to allow much closer convergence of the two streams.
3.10 will provide the basis for my future simulation work.
The major change is the implementation of deferred IO - a more
accurate implementation of the 1620's "stop in its tracks" IO model.
When a device uses deferred IO, instruction execution is suspended
until the IO completes successfully. Operator interruptions, errors,
and so on do not return to instruction execution; this only occurs if
the IO completes successfully or the command SET CPU RELEASE is given
(equivalent of pressing the RELEASE button). Otherwise, the current IO
operation continues to execute.
Only the console typewriter and paper tape reader/punch currently
implement deferred IO; there are operational issues with those devices
that require more accurate modeling. The card reader/punch, line
printer, and disk still execute IO "instantaneously". It's not all
that hard to convert an instantaneous device to deferred operation,
but there's no point in doing so (and possibly introducing new bugs)
unless there's an actual operational issue. The 1620 doesn't have
overlapped IO, so programs can't tell the difference, by and large.
A number of other issues have been addressed as well, including the
bizarre "treat RM as 0 in the Q field" required by MI-015; the
treatment of non-existent indicators as always off; and various other
tweaks.
I've run CU01 (again), which at least gives typewriter and paper-tape
IO a basic workout; and it works. I leave more detailed testing to
people who know the machine better than I do.
The documentation has been updated to include Tom's detailed breakdown
of IO handling for all IO operations on the typewriter, paper-tape
reader/punch, card reader/punch, and line printer.
simh.doc Writing a Simulator for the SIMH System
sim_breakpoints.doc The SIMH Breakpoint Subsystem
sim_vmio.doc Adding An I/O Device To A SIMH Virtual Machine
1. Added RP03 support and supporting "SET" commands.
2. Fixed implementation of DPCF (it's a full reset and not blocked by BUSY).
3. Fixed handling of JOB DONE flag (not touched by NOP, SEEK, or RECAL).
- Added unix v0 terminal support
- Added 3-cycle databreak set/show entries
- Revised for dynamically allocated memory
- Added support for -u modifier (UC15 and Unix v0)
These changes are to support the Unix v0 bringup and to implement a
"Unix input" mode on the console terminal. In Unix mode, CR and LF are
swapped (so that a modern terminal can use 'enter' instead of CTRK-J to
create the newline Unix expects), escape is mapped to altmode (175),
upper and lower case are enabled and the parity bit is forced to 1. This
most closely matches the characteristics of the KSR-37, but there is no
definitive evidence of the terminal that was actually used.
If the nested indirect/execute limit (INDMAX, XCTMAX) is set to 0, the simulator will loop indefinitely in an indirect address or execute loop, testing for interrupts before each memory reference. Thus, on an infinite loop, the simulator will never complete the instruction, but the instruction is interruptible. So for example, under TOPS-10:
.r ddt
1/ 0 jrstf @1
1$g
^C
^C
.
The JRSTF will never finish, but it can be interrupted by any device, and double ^C will return control to the command line.
If INDMAX or XCTMAX is non-zero, the previous behavior of limiting loops to a specific depth is retained. However, the default value is now 0.
This closes issue #218.
We're not absolutely sure that all of the changes are correct - in particular the treatment of record marks in add/compare - but they do make the diagnostics pass, which they didn't before.
Bob asked for variable tab stops on the typewriter, and those are implemented as well. The routines were general enough that I put the SET/SHOW processors in sim_console.c, so I'm enclosing that and its header file.
After a frantic week of file exchanges, here is RC2. A lot has changed.
1. HP2100 updates completed, with new features and peripherals.
2. Many, many small file updates for nits found by compilers and static checkers.
3. A few genuine bugs fixed.
4. New makefile and MMS file.
A note on the makefile. It has almost doubled in size and attempts to ferret out PCAP locales properly, as well as do serious optimizations if gcc is used. It needs to be tested in more environments. If you run into issues, please report them to Mark Pizzolato as well as me.
The old makefile, updated for the extra files in the HP2100, is included as makefile_old. You can use that if the new makefile causes problems in your environment.
I'm still targeting a May Day release, with a final RC around Tax Day (April 15). That leaves times for one more interim RC, if needed.
At this point, I regard the release as feature-complete. Bug fixes are still fine.
The actual release will have all incomplete and beta simulators in a separate zip file, including Alpha, Sigma, Sage (the microcomputers, not the 50s anti-aircraft computer), and SC1, the SiCortex MIPS simulator.
There will be new releases of all the simulation tools as well.
/Bob
The makefile now works for Linux and most Unix's. However, for Solaris
and MacOS, you must first export the OSTYPE environment variable:
> export OSTYPE
> make
Otherwise, you will get build errors.
1. New Features
1.1 3.9-0
1.1.1 SCP and libraries
- added *nix READLINE support (Mark Pizzolato)
- added "SHOW SHOW" and "SHOW <dev> SHOW" commands (Mark Pizzolato)
- added support for BREAK key on Windows (Mark Pizzolato)
1.1.2 PDP-8
- floating point processor is now enabled
2. Bugs Fixed
Please see the revision history on http://simh.trailing-edge.com or
in the source module sim_rev.h.
3. Status Report
This is the last release of SimH for which I will be sole editor. After this
release, the source is moving to a public repository:
under the general editorship of Dave Hittner and Mark Pizzolato. The status
of the individual simulators is as follows:
3.1 PDP-1
Stable and working; runs available software.
3.2 PDP-4/7/9/15
Stable and working; runs available software.
3.3 PDP-8
Stable and working; runs available software.
3.4 PDP-10 [KS-10 only]
Stable and working; runs available software.
3.5 PDP-11
Stable and working; runs available system software. The emulation of individual
models has numerous errors of detail, which prevents many diagnostics from
running correctly.
3.6 VAX-11/780
Stable and working; runs available software.
3.7 MicroVAX 3900 (VAX)
Stable and working; runs available software. Thanks to the kind generosity of
Camiel Vanderhoeven, this simulator has been verified with AXE, the VAX
architectural exerciser.
3.8 Nova
Stable and working; runs available software.
3.9 Eclipse
Stable and working, but not really supported. There is no Eclipse-specific
software available under a hobbyist license.
3.10 Interdata 16b
Stable and working, but no software for it has been found, other than
diagnostics.
3.11 Interdata 32b
Stable and working; runs 32b UNIX and diagnostics.
3.12 IBM 1401
Stable and working; runs available software.
3.13 IBM 1620
Hand debug only. No software for it has been found or tested.
3.14 IBM 7094
Stable and working as a stock system; runs IBSYS. The CTSS extensions
have not been debugged.
3.15 IBM S/3
Stable and working, but not really supported. Runs available software.
3.16 IBM 1130
Stable and working; runs available software. Supported and edited by
Brian Knittel.
3.17 HP 2100/1000
Stable and working; runs available software. Supported and edited by
Dave Bryan.
3.18 Honeywell 316/516
Stable and working; runs available software.
3.19 GRI-909/99
Hand debug only. No software for it has been found or tested.
3.20 SDS-940
Hand debug only, and a few diagnostics.
3.21 LGP-30
Unfinished; hand debug only. Does not run available software, probably
due to my misunderstanding of the LGP-30 operational procedures.
3.22 Altair (original 8080 version)
Stable and working, but not really supported. Runs available software.
3.23 AltairZ80 (Z80 version)
Stable and working; runs available software. Supported and edited by
Peter Schorn.
3.24 SWTP 6800
Stable and working; runs available software. Supported and edited by
Bill Beech
3.25 Sigma 32b
Incomplete; more work is needed on the peripherals for accuracy.
3.26 Alpha
Incomplete; essentially just an EV-5 (21164) chip emulator.
4. Suggestions for Future Work
4.1 General Structure
- Multi-threading, to allow true concurrency between SCP and the simulator
- Graphics device support, particularly for the PDP-1 and PDP-11
4.2 Current Simulators
- PDP-1 graphics, to run Space War
- PDP-11 GT40 graphics, to run Lunar Lander
- PDP-15 MUMPS-15
- Interdata native OS debug, both 16b and 32b
- SDS 940 timesharing operating system debug
- IBM 7094 CTSS feature debug and operating system debug
- IBM 1620 debug and software
- GRI-909 software
- Sigma 32b completion and debug
- LGP-30 debug
4.3 Possible Future Simulators
- Data General MV8000 (if a hobbyist license can be obtained for AOS)
- Alpha simulator
- HP 3000 (16b) simulator with MPE