blob: 5cc75841f492ce6c988b4b668ef1395e19e9a6b4 [file] [log] [blame] [raw]
SIMH/HP 3000 RELEASE NOTES
==========================
Last update: 2016-03-06
This file documents the release history of the Hewlett-Packard 3000 simulator.
The SIMH project does not issue discrete releases. Instead, the current
simulator code base is available at:
https://github.com/simh/simh
...and may be downloaded at any time. A code snapshot is identified by the "git
commit ID" that is displayed by the simulator welcome banner.
Therefore, HP 3000 releases are simply documentation checkpoints that describe
the changes that have occurred since the last checkpoint. Generally, a release
is written when one or more major changes have been incorporated. Minor bug
fixes will be available immediately but only noted as part of the next release
document.
===================
General Information
===================
The simulator passes the HP 32230 offline diagnostic suite with some expected
failures due to unimplemented features. For example, the disc diagnostic
error-correction logic tests and the tape diagnostic CRCC and LRCC tests fail,
as these features are not supported. However, all features that are required
for MPE operation pass their respective diagnostic tests.
The simulator has been tested with MPE-V/R version E.01.00. Specifically:
- MPE can be RELOADed to generate a new disc-based system from a FOS tape.
- MPE can be COOLSTARTed to run from a previously generated disc.
- The MPE system console operates (by default) through the simulation console,
and additional sessions may be connected to the ATC via Telnet or host
serial ports.
- MPE FOS programs (EDITOR, QUERY) and SUBSYS programs (SPL, BASIC, BASICOMP)
run properly.
- The SYSDUMP program produces a valid tape image, and the system may be
COLDSTARTED from it.
- The operator and system manager can be logged in and out, and MPE can be
SHUTDOWN through to a HALT 17.
The user's manual for the simulator is provided in Microsoft Word format in the
"doc" subdirectory of the code base snapshot downloaded from the github site. A
PDF version of the same manual is available at:
http://alum.mit.edu/www/jdbryan/hp3000_doc.pdf
A preconfigured MPE-V/R disc image containing the Fundamental Operating Software
(FOS), selected SUBSYS language processors (BASIC, BASICOMP, COBOL, COBOLII,
FORTRAN, PASCAL, RPG, and SPL), and example programs is available from Bitsavers
at:
http://www.bitsavers.org/bits/HP/HP_3000/
The archive contains instructions and simulator command files that allow
ready-to-run operation.
Manuals describing MPE operation are also available from Bitsavers at:
http://www.bitsavers.org/pdf/hp/3000/
HP created MPE-V/R-specific manuals. However, very few of them survive. In
general, the MPE-IV manuals will describe a subset of MPE-V/R commands, whereas
the MPE-V/E manuals describe a superset. Relying on the MPE-IV manuals and the
online help available within MPE for those commands that do not appear in the
manuals is perhaps the best compromise.
-----------------------
Bugs in MPE V/R E.01.00
-----------------------
Testing during simulator development revealed the presence of several bugs in
the MPE version used:
- After a cold load from tape (COLDSTART/RELOAD/UPDATE), if a non-HP terminal
such as the simulation console is used as the system console, MPE prints DATE
(M/D/Y)? and then WED, NOV 1, 1972, 12:00 AM, as though RETURN had been
entered, but it wasn't. If an HP terminal emulator is used instead, MPE
waits for the user to enter the date before proceeding.
The problem is incorrect coding in the SPEEDSENSE procedure in module
INITIAL. As a result, the console baud rate is set to an invalid value, so
console reads fail. The resulting zero-length read is interpreted as though
RETURN had been entered.
This is MPE V/R SSB KPR Number 5000187104, "Foreign devices as SIII system
consoles do not work correctly on V/R." HP issued a patch for this, but it
does not seem to have survived. A simple workaround is to set local ENQ/ACK
processing on ATC channel 0 (SET ATCD0 LOCALACK) when the system console is
not an HP terminal. This is the default setting, so the bug only manifests
itself when SET ATCD0 REMOTEACK is done before booting. An alternate
workaround that does not depend on the ATC setting is to set memory location
01.112247 to octal value 021360. This changes the "LOAD P+22,I,X"
instruction at that location to "LDI 360" to set the detected speed to 2400
baud unconditionally.
- If a SHUTDOWN is performed while a logon read is pending on the system
console, e.g., by pressing RETURN to obtain the colon prompt after logging
OPERATOR.SYS off, the expected "ALL JOBS LOGGED OFF" message does not print.
Instead, the first few characters of the message (which begins with the
current time) are printed, followed as expected by SHUT and a HALT %17. If
no read is pending, either because RETURN was not pressed before entering the
SHUTDOWN command or because the read timed out, the message is printed
normally.
The problem is that while the message is being send to the ATC character-by-
character, the I/O abort issued to cancel the logon read also cancels the
message write. The timing is such that only the first few characters of the
message are printed before the rest of the output is cancelled.
No SSB KPR has been located, but a later MPE version inserts an ABORTIO call
for the system console immediately before logging all sessions off. This
clears any logon read that might exist, and therefore an abort will not be
performed after the "ALL JOBS LOGGED OFF" message is output. It is
impossible to patch memory to add this call, so the only workarounds when
shutting down are to avoid requesting the logon prompt, wait until the logon
timeout expires (nominally two minutes), log on and then back off again,
enter "=ABORTIO 20" to abort the read before entering SHUTDOWN, or accept
that the message will be truncated. The only consequence of this bug is the
partial message; MPE shuts down properly otherwise, so it may be safely
ignored.
- After a RELOAD, running DPAN4.PUB.SYS produces a "CODE SEGMENT TOO LARGE
(LOAD ERR 33)" error. This is because MPE defaults to an 8K code segment
size limit, and DPAN4 has three segments between 8K and 12K in size. If the
limit is subsequently raised via a SYSDUMP and COLDSTART reconfiguration,
running DPAN4 produces a "FILE IS NOT A VALID PROGRAM FILE" error. However,
if the reconfiguration is done before running DPAN4, it will run properly
thereafter.
The problem is that MPE incorrectly modifies the executable file's Segment
Transfer Tables when it encounters a code segment that is larger than the
configured limit. This leaves the file in an inconsistent state, leading to
the "NOT A VALID PROGRAM FILE" message after reconfiguration to raise the
segment size limit. If the limit is raised before running DPAN4, the file is
internally consistent when the STTs are patched, and each segment's load
succeeds, allowing the program to run.
No SSB KPR has been located, but a later MPE version ensures that code
segment size aborts occur before any of the STTs are modified, so the program
file remains internally consistent. A memory patch is impossible, but
workarounds are to increase the code segment limit before running DPAN4 and
to restore DPAN4.PUB.SYS from the FOS tape if it has been damaged.
=====================
Release 1, 2016-03-07
=====================
This is the initial release of the HP 3000 simulator. The following devices are
currently simulated:
- 30003B Series III computer with up to 1024 KW of memory
- 30003B I/O Processor
- 30036B Multiplexer Channel
- 30030C Selector Channel
- 30033A Selector Channel Maintenance Board
- 30032B Asynchronous Terminal Controller data interface
- 30061B Asynchronous Terminal Controller control interface
- 30135A System Clock/Fault Logging Interface
- 30215A Tape Controller with four 7970B/E drives
- 30229B Disc Controller with eight 7905/7906/7920/7925 drives
The "HP 3000 Simulator User's Guide" manual describes the configuration and
operation of each of these devices in detail.
--------------------
Implementation Notes
--------------------
- IMPORTANT: There is no line printer simulation. MPE cannot be configured to
run without a printer; attempting to delete LDEV 6 produces "ERROR #115
UNDEFINED CLASS LP USED AS OUTPUT DEVICE", and class LP cannot be deleted.
With LDEV 6 present, MPE will boot and run, but doing, e.g., :STOPSPOOL 6
causes "NON-RESPONDING DRT #14" and "SYSTEM FAILURE #201" when the printer
doesn't respond. Entering :OUTFENCE 14 at the console operator's session
immediately after bootup is a workaround. The LP simulator should be present
in the next release.
- The CPU is a hybrid of the Series II instruction set microcode and the Series
III memory size and hardware behavior, because the Series III microcode is
not available.
- The CPU is currently missing a few "difficult" instructions (the CMD
instruction, the Series II LOCK and UNLK instructions, and the entire
Extended Instruction Set). Although the EIS is not present, MPE has a
software emulator for these instructions that is invoked transparently by the
Unimplemented Instruction traps that occur when attempted execution of EIS
instructions occurs.
- The main memory Fault Logging Interface section of the 30135A is currently
not simulated. Although fault-control memory was standard on the Series II
and later, the memory fault logger is smart enough to realize that the FLI is
not there, so MPE will run without it.
- Symbolic entry of CPU instructions, CPU status, and I/O instructions are not
currently supported.