1. New Features in 2.10-3 1.1 SCP and Libraries - Added dynamic extension of the breakpoint table. - Added breakpoint actions. - Added VMS support for ! (from Mark Pizzolato). 1.2 18b PDP's - Added RB09 fixed head disk for the PDP-9. - Added LP09 line printer for the PDP-9 and PDP-15. - Added variable size support and autosizing to the RF15/RF09. 1.3 PDP-8 - Added variable size support and autosizing to the DF32 and RF08. 1.4 Nova - Added variable size support and autosizing to the Novadisk. 2. Bugs Fixed in 2.10-3 - 18b PDP RF15/RF09: fixed IOT decoding and address wraparound logic (found by Hans Pufal). - 18b PDP RP15: fixed IOT decoding and command initiation. - HP2100 IPL: changed to full duplex (found by Mike Gemeny). - HP2100 CPU: fixed last cycle bug in DMA outpout (found by Mike Gemeny). - Interdata 16b CPU: fixed bug in SETM, SETMR (found by Mark Pizzolato). 3. New Features in 2.10 vs prior releases 3.1 SCP and Libraries - The VT emulation package has been replaced by the capability to remote the console to a Telnet session. Telnet clients typically have more complete and robust VT100 emulation. - Simulated devices may now have statically allocated buffers, in addition to dynamically allocated buffers or disk-based data stores. - The DO command now takes substitutable arguments (max 9). In command files, %n represents substitutable argument n. - The initial command line is now interpreted as the command name and substitutable arguments for a DO command. This is backward compatible to prior versions. - The initial command line parses switches. -Q is interpreted as quiet mode; informational messages are suppressed. - The HELP command now takes an optional argument. HELP <cmd> types help on the specified command. - Hooks have been added for implementing GUI-based consoles, as well as simulator-specific command extensions. A few internal data structures and definitions have changed. - Two new routines (tmxr_open_master, tmxr_close_master) have been added to sim_tmxr.c. The calling sequence for sim_accept_conn has been changed in sim_sock.c. - The calling sequence for the VM boot routine has been modified to add an additional parameter. - SAVE now saves, and GET now restores, controller and unit flags. - Library sim_ether.c has been added for Ethernet support. - The EVAL command will evaluate a symbolic type-in and display it in numeric form. - The ! command (with no arguments) will launch the host operating system command shell. The ! command (with an argument) executes the argument as a host operating system command. (Code from Mark Pizzolato) - Telnet sessions now recognize BREAK. How a BREAK is transmitted dependent on the particular Telnet client. (Code from Mark Pizzolato) - The sockets library includes code for active connections as well as listening connections. - The RESTORE command will restore saved memory size, if the simulator supports dynamic memory resizing. 3.2 VAX - Non-volatile RAM (NVR) can behave either like a memory or like a disk-based peripheral. If unattached, it behaves like memory and is saved and restored by SAVE and RESTORE, respectively. If attached, its contents are loaded from disk by ATTACH and written back to disk at DETACH and EXIT. - SHOW <device> VECTOR displays the device's interrupt vector. A few devices allow the vector to be changed with SET <device> VECTOR=nnn. - SHOW CPU IOSPACE displays the I/O space address map. - The TK50 (TMSCP tape) has been added. - The DEQNA/DELQA (Qbus Ethernet controllers) have been added. - Autoconfiguration support has been added. - The paper tape reader has been removed from vax_stddev.c and now references a common implementation file, dec_pt.h. - Examine and deposit switches now work on all devices, not just the CPU. - Device address conflicts are not detected until simulation starts. - If the VAX console is attached to a Telnet session, BREAK is interpreted as console halt. - The SET/SHOW HISTORY commands enable and display a history of the most recently executed instructions. (Code from Mark Pizzolato) 3.3 PDP-11 - SHOW <device> VECTOR displays the device's interrupt vector. Most devices allow the vector to be changed with SET <device> VECTOR=nnn. - SHOW CPU IOSPACE displays the I/O space address map. - The TK50 (TMSCP tape), RK611/RK06/RK07 (cartridge disk), RX211 (double density floppy), and KW11P programmable clock have been added. - The DEQNA/DELQA (Qbus Ethernet controllers) have been added. - Autoconfiguration support has been added. - The paper tape reader has been removed from pdp11_stddev.c and now references a common implementation file, dec_pt.h. - Device bootstraps now use the actual CSR specified by the SET ADDRESS command, rather than just the default CSR. Note that PDP-11 operating systems may NOT support booting with non-standard addresses. - Specifying more than 256KB of memory, or changing the bus configuration, causes all peripherals that are not compatible with the current bus configuration to be disabled. - Device address conflicts are not detected until simulation starts. - The PDP-11 implements a stub DEUNA/DELUA (XU). The real XU module will be included in a later release. 3.4 PDP-10 - SHOW <device> VECTOR displays the device's interrupt vector. A few devices allow the vector to be changed with SET <device> VECTOR=nnn. - SHOW CPU IOSPACE displays the I/O space address map. - The RX211 (double density floppy) has been added; it is off by default. - The paper tape now references a common implementation file, dec_pt.h. - Device address conflicts are not detected until simulation starts. - The PDP-10 implements a stub DEUNA/DELUA (XU). The real XU module will be included in a later release. 3.5 PDP-1 - DECtape (then known as MicroTape) support has been added. - The line printer and DECtape can be disabled and enabled. - The PDP-1 supports the Type 24 serial drum (based on recently discovered documents). 3.6 18b PDP's - The PDP-4 supports the Type 24 serial drum (based on recently discovered documents). 3.7 PDP-8 - The RX28 (double density floppy) has been added as an option to the existing RX8E controller. - SHOW <device> DEVNO displays the device's device number. Most devices allow the device number to be changed with SET <device> DEVNO=nnn. - Device number conflicts are not detected until simulation starts. 3.8 AltairZ80 - A hard drive has been added for increased storage. - Several bugs have been fixed. 3.9 HP 2100 - The 12845A has been added and made the default line printer (LPT). The 12653A has been renamed LPS and is off by default. It also supports the diagnostic functions needed to run the DCPC and DMS diagnostics. - The 12557A/13210A disk defaults to the 13210A (7900/7901). - The 12559A magtape is off by default. - New CPU options (EAU/NOEAU) enable/disable the extended arithmetic instructions for the 2116. These instructions are standard on the 2100 and 21MX. - New CPU options (MPR/NOMPR) enable/disable memory protect for the 2100 and 21MX. - New CPU options (DMS/NODMS) enable/disable the dynamic mapping instructions for the 21MX. - The 12539 timebase generator autocalibrates. - The IOP microinstruction set is supported for the 21MX as well as the 2100. - The HP2100 supports the Access Interprocessor Link (IPL). 3.10 Simulated Magtapes - Simulated magtapes recognize end of file and the marker 0xFFFFFFFF as end of medium. Only the TMSCP tape simulator can generate an end of medium marker. - The error handling in simulated magtapes was overhauled to be consistent through all simulators. 3.11 Simulated DECtapes - Added support for RT11 image file format (256 x 16b) to DECtapes. 3.12 Terminals Multiplexors - BREAK detection was added to the HP, DEC, and Interdata terminal multiplexors. 4. Bugs Fixed in 2.10 vs prior releases - TS11/TSV05 was not simulating the XS0_MOT bit, causing failures under VMS. In addition, two of the CTL options were coded interchanged. - IBM 1401 tape was not setting a word mark under group mark for load mode reads. This caused the diagnostics to crash. - SCP bugs in ssh_break and set_logon were fixed (found by Dave Hittner). - Numerous bugs in the HP 2100 extended arithmetic, floating point, 21MX, DMS, and IOP instructions were fixed. Bugs were also fixed in the memory protect and DMS functions. The moving head disks (DP, DQ) were revised to simulate the hardware more accurately. Missing functions in DQ (address skip, read address) were added. - PDP-10 tape wouldn't boot, and then wouldn't read (reported by Michael Thompson and Harris Newman, respectively) - PDP-1 typewriter is half duplex, with only one shift state for both input and output (found by Derek Peschel) - PDP-11 console must default to 7b for early UNIX compatibility. - PDP-11/VAX TMSCP emulator was using the wrong packet length for read/write end packets. - Telnet IAC+IAC processing was fixed, both for input and output (found by Mark Pizzolato). - PDP-11/VAX Ethernet setting flag bits wrong for chained descriptors (found by Mark Pizzolato). 5. General Notes WARNING: The build procedures have changed. There is only one UNIX makefile. To compile without Ethernet support, simply type gmake {target|all} To compile with Ethernet support, type gmake USE_NETWORK=1 {target|all} The Mingw batch files require Mingw release 2 and invoke the Unix makefile. There are still separate batch files for compilation with or without Ethernet support. WARNING: V2.10 has reorganized and renamed some of the definition files for the PDP-10, PDP-11, and VAX. Be sure to delete all previous source files before you unpack the Zip archive, or unpack it into a new directory structure. WARNING: V2.10 has a new, more comprehensive save file format. Restoring save files from previous releases will cause 'invalid register' errors and loss of CPU option flags, device enable/ disable flags, unit online/offline flags, and unit writelock flags. WARNING: If you are using Visual Studio .NET through the IDE, be sure to turn off the /Wp64 flag in the project settings, or dozens of spurious errors will be generated. WARNING: Compiling Ethernet support under Windows requires extra steps; see the Ethernet readme file. Ethernet support is currently available only for Windows, Linux, NetBSD, and OpenBSD.
1187 lines
45 KiB
Text
1187 lines
45 KiB
Text
To: Users
|
||
From: Bob Supnik
|
||
Subj: Simulator Usage, V2.10-3
|
||
Date: 15-Feb-2003
|
||
|
||
COPYRIGHT NOTICE
|
||
|
||
The following copyright notice applies to both the SIMH source and binary:
|
||
|
||
Original code published in 1993-2003, written by Robert M Supnik
|
||
Copyright (c) 1993-2003, Robert M Supnik
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a
|
||
copy of this software and associated documentation files (the "Software"),
|
||
to deal in the Software without restriction, including without limitation
|
||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||
and/or sell copies of the Software, and to permit persons to whom the
|
||
Software is furnished to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in
|
||
all copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||
ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
|
||
Except as contained in this notice, the name of Robert M Supnik shall not
|
||
be used in advertising or otherwise to promote the sale, use or other dealings
|
||
in this Software without prior written authorization from Robert M Supnik.
|
||
|
||
This memorandum documents SIMH simulators. These simulators are freeware;
|
||
refer to the license terms above for conditions of use. Support is not
|
||
available. The best way to fix problems or add features is to read and
|
||
modify the sources yourself. Alternately, you can send Internet mail to
|
||
bsupnik@us.inter.net, but a response is not guaranteed.
|
||
|
||
The simulators use a common command interface. This memorandum describes
|
||
the features of the command interface. The details of each simulator are
|
||
documented in separate, machine-specific memoranda.
|
||
|
||
|
||
1. Compiling And Running A Simulator
|
||
|
||
The simulators have been tested on VAX VMS, Alpha VMS, Alpha UNIX,
|
||
NetBSD, FreeBSD, OpenBSD, Linux, Solaris, Windows 9x/Me/NT/2000, MacOS
|
||
9 and X, and OS/2. Porting to other environments will require changes
|
||
to the operating system dependent code in scp_tty.c, scp_sock.c, and
|
||
sim_ether.c.
|
||
|
||
The simulator sources are provided in a zip archive and are organized
|
||
hierarchically. Source files for the simulator libraries are in the
|
||
top level directory; source files for each simulator are in individual
|
||
subdirectories. Note that the include files in the top level directory
|
||
are referenced from the subdirectories, without path identifiers. Your
|
||
build tool needs to search the top level directory for include files not
|
||
found in the simulator-specific directory, or you will have to copy all
|
||
files from the subdirectories into the master directory. File manifests
|
||
for each simulator are given in that simulator's documentation.
|
||
|
||
The simulators recognize or require a few compile-time #defines:
|
||
|
||
- The 18b simulators require that the model name be defined as part
|
||
of the compilation command line (i.e., PDP4 for the PDP-4, PDP7
|
||
for the PDP-7, PDP9 for the PDP-9, PDP15 for the PDP-15).
|
||
|
||
- The PDP-10 and VAX simulators use 64b integer variables, requiring
|
||
that USE_INT64 be defined as part of the compilation command line.
|
||
Since 64b integer declarations vary, sim_defs.h has conditional
|
||
declarations for Windows (_int64) and Digital UNIX (long). The
|
||
default is GNU C (long long). If your compiler uses a different
|
||
convention, you will have to modify sim_defs.h.
|
||
|
||
- The PDP-11 and VAX simulators optionally support Ethernet. To
|
||
include Ethernet emulation, USE_NETWORK must be defined as part
|
||
of the compilation command line. At present, Ethernet support is
|
||
available only on Windows, Linux, NetBSD, and OpenBSD.
|
||
|
||
To start the simulator, simply type its name. (On version of VMS
|
||
prior to 6.2, the simulators must then be defined as foreign commands
|
||
in order to be be started by name.) The simulator recognizes one
|
||
switch, -Q; if specified, certain informational messages are suppressed.
|
||
The simulator interprets the arguments on the command line, if any,
|
||
as the file name and arguments for a DO command. If a startup file
|
||
is specified, it should contain a series of non-interactive simulator
|
||
commands, one per line. These command can be used to set up standard
|
||
parameters, for example, disk sizes:
|
||
|
||
% pdp10 {<startup file> {arg,arg,...}}(cr)
|
||
|
||
The simulator types out its name and version, executes the commands
|
||
in the startup file, if any, and then prompts for input with
|
||
|
||
sim>
|
||
|
||
1.1 Compiling Under UNIX/Linux
|
||
|
||
The sources originate on a Windows system and have cr-lf at the end of
|
||
every line. For use on UNIX or Mac, the sources must be converted to
|
||
UNIX text conventions. This can be done with the UNIX UNZIP utility
|
||
(unzip -a).
|
||
|
||
The supplied makefile will compile the simulators for UNIX systems
|
||
which support the POSIX TERMIOS. The VAX and PDP-11 can be compiled
|
||
with or without Ethernet support. To compile without Ethernet support:
|
||
|
||
gmake {target|ALL}
|
||
|
||
To compile with Ethernet support:
|
||
|
||
gmake USE_NETWORK=1 {target|ALL}
|
||
|
||
Notes for hand compilation:
|
||
|
||
- The default UNIX terminal handling model is the POSIX TERMIOS
|
||
interface, which is supported by Linux, Mac OS/X, and Alpha UNIX.
|
||
If your UNIX only supports the BSD terminal interface, BSDTTY
|
||
must be defined as part of the compilation command line.
|
||
|
||
- The PDP-8, PDP-11, 18b PDP, PDP-10, and Nova simulators use the
|
||
math library. If your UNIX does not link the math library
|
||
automatically, you must add -lm to the compilation command line.
|
||
|
||
Examples:
|
||
|
||
- PDP-11 under TERMIOS UNIX:
|
||
|
||
% cc pdp11_*.c scp*.c sim_*.c -lm -o pdp11
|
||
|
||
- PDP-9 under TERMIOS UNIX:
|
||
|
||
% cc -DPDP9 pdp18b_*.c scp*.c sim_*.c -lm -o pdp9
|
||
|
||
- PDP-10 under BSD terminal UNIX:
|
||
|
||
% cc -DUSE_INT64 -DBSDTTY pdp10_*.c scp*.c sim_*.c -lm -o pdp10
|
||
|
||
1.2 Compiling Under Windows
|
||
|
||
1.2.1 Compiling PDP-11 and VAX with Ethernet Support
|
||
|
||
The Windows-specific Ethernet code uses the WinPCAP 3.0 package.
|
||
This package for windows simulates the libpcap package that is freely
|
||
available for Unix systems. Note that WinPCAP DOES NOT SUPPORT dual
|
||
CPU environments.
|
||
|
||
WinPCAP must be installed prior to building the PDP-11 and VAX
|
||
simulators with Ethernet support.
|
||
|
||
- Download V3.0 from http://winpcap.polito.it.
|
||
- Install the package as directed.
|
||
- Copy the required .h files (bittypes.h, devioctl.h, ip6_misc.h,
|
||
packet32.h, pcap.h, pcap-stdinc.h) from the WinPCAP 3.0 developer's
|
||
kit to the top level simulation directory.
|
||
- Get the required .lib files (packet.lib, wpcap.lib) from the WinPCAP
|
||
3.0 developer's kit. If you're using Borland C++, use COFF2OMF to
|
||
convert the .lib files into a format that can be used by the compiler.
|
||
Then move the libraries to the standard library directory.
|
||
- Add -DUSE_NETWORK to the compilation command lines for the PDP-11
|
||
and VAX.
|
||
|
||
1.2.2 Compiling Under MinGW
|
||
|
||
MinGW (Minimum GCC for Windows) is a free C compiler available from
|
||
http://www.mingw.org. The distribution includes a batch file
|
||
(build_mingw.bat) that will build all the simulators from source.
|
||
By default, the PDP-11 and VAX are built without Ethernet support. To
|
||
enable Ethernet support, install WinPCAP as described in the previous
|
||
section, and then use the alternative batch file (build_mingw_ether.bat).
|
||
|
||
1.2.3 Compiling Under Visual C++
|
||
|
||
Each simulator must be organized as a separate Visual C++ project.
|
||
Starting from an empty console application,
|
||
|
||
- Add all the files from the simulator file manifest to the project.
|
||
- Open the Project->Settings dialog box.
|
||
- On the C/C++ tab, Category: General, add any required preprocessor
|
||
definitions (for example, USE_INT64).
|
||
- On the C/C++ tab, Category: Preprocessor, add the top level
|
||
simulation directory to the Additional Include Directories. For
|
||
the VAX and PDP-10, you must also add the PDP-11 directory.
|
||
- On the Link tab, add wsock32.lib at the end of the list of
|
||
Object/Module Libraries.
|
||
- If you are building the PDP-11 and VAX with Ethernet support, you
|
||
must also add the WinPCAP libraries (packet.lib, wpcap.lib) to the
|
||
list of Object/Module libraries.
|
||
|
||
If you are using Visual C++ .NET, you must turn off /Wp (warn about
|
||
potential 64b incompatibilities); otherwise, the compilations will
|
||
generate a lot of spurious conversion warnings.
|
||
|
||
1.2.4 Compiling Under Borland C++
|
||
|
||
The Borland C++ compiler generates lots of spurious warnings about
|
||
missing function prototypes and conversions. All of these warnings
|
||
can be safely ignored.
|
||
|
||
1.3 Compiling Under OpenVMS
|
||
|
||
Compiling on OpenVMS requires DEC C. The simulators that require
|
||
64b (PDP-10 and VAX) will not compile on OpenVMS/VAX. The SIMH
|
||
distribution includes an MMS command file descrip.mms that will
|
||
build all the simulators from source. An example of hand compilation:
|
||
|
||
- PDP-8 under VMS:
|
||
|
||
$ cc scp*.c,sim_*.c,[.pdp8]pdp8*.c
|
||
$ link/exec=pdp8 scp*.obj,sim_*.obj,[.pdp8]pdp8*.obj
|
||
|
||
1.4 Compiling Under MacOS
|
||
|
||
The simulators have been tested on both MacOS 9 (with Codewarrior)
|
||
and MacOS/X (with Apple's tools).
|
||
|
||
1.5 Compiling Under OS/2
|
||
|
||
Socket support requires the EMX compiler.
|
||
|
||
2. Simulator Conventions
|
||
|
||
A simulator consists of a series of devices, the first of which is
|
||
always the CPU. A device consists of named registers and one or more
|
||
numbered units. Registers correspond to device state, units to device
|
||
address spaces. Thus, the CPU device might have registers like PC,
|
||
ION, etc, and a unit corresponding to main memory; a disk device might
|
||
have registers like BUSY, DONE, etc, and units corresponding to individual
|
||
disk drives. Except for main memory, device address spaces are simulated
|
||
as unstructured binary disk files in the host file system. The SHOW
|
||
CONFIG command displays the simulator configuration.
|
||
|
||
A simulator keeps time in terms of arbitrary units, usually one time unit
|
||
per instruction executed. Simulated events (such as completion of I/O)
|
||
are scheduled at some number of time units in the future. The simulator
|
||
executes synchronously, invoking event processors when simulated events
|
||
are scheduled to occur. Even asynchronous events, like keyboard input,
|
||
are handled by polling at synchronous intervals. The SHOW QUEUE command
|
||
displays the simulator event queue.
|
||
|
||
3. Commands
|
||
|
||
Simulator commands consist of a command verb, optional switches, and
|
||
optional arguments. Switches take the form:
|
||
|
||
-<letter>{<letter>...}
|
||
|
||
Multiple switches may be specified separately or together: -abcd or
|
||
-a -b -c -d are treated identically. Verbs, switches, and other
|
||
input (except for file names) are case insensitive.
|
||
|
||
Any command beginning with semicolon (;) is considered a comment and
|
||
ignored.
|
||
|
||
3.1 Loading and Saving Programs
|
||
|
||
The LOAD command (abbreviation LO) loads a file in binary paper-tape
|
||
loader format:
|
||
|
||
sim> load <filename> {implementation options}(cr)
|
||
|
||
The number of formats supported is implementation specific. Options
|
||
(such as load within range) are also implementation specific.
|
||
|
||
The DUMP command (abbreviation DU) dumps memory in binary paper-
|
||
tape loader format:
|
||
|
||
sim> dump <filename> {implementation options}(cr)
|
||
|
||
The number of formats supported is implementation specific. Options
|
||
(such as dump within range) are also implementation specific.
|
||
|
||
3.2 Saving and Restoring State
|
||
|
||
The SAVE command (abbreviation SA) save the complete state of the
|
||
simulator to a file. This includes the contents of main memory and
|
||
all registers, and the I/O connections of devices:
|
||
|
||
sim> save <filename>(cr)
|
||
|
||
The RESTORE command (abbreviation REST, alternately GET) restores a
|
||
previously saved simulator state:
|
||
|
||
sim> restore <filename>(cr)
|
||
|
||
Note: SAVE file format compresses zeroes to minimize file size.
|
||
|
||
3.3 Resetting Devices
|
||
|
||
The RESET command (abbreviation RE) resets a device or the entire
|
||
simulator to a predefined condition:
|
||
|
||
sim> RESET(cr) -- reset all devices
|
||
sim> RESET ALL(cr) -- reset all devices
|
||
sim> RESET <device>(cr) -- reset specified device
|
||
|
||
Typically, RESET stops any in-progress I/O operation, clears any
|
||
interrupt request, and returns the device to a quiescent state. It
|
||
does not clear main memory or affect I/O connections.
|
||
|
||
3.4 Connecting and Disconnecting Devices
|
||
|
||
Except for main memory, simulated unit address spaces are simulated
|
||
as unstructured binary disk files in the host file system. Before
|
||
using a simulated unit, the user must specify the file to be accessed
|
||
by that unit. The ATTACH (abbreviation AT) command associates a unit
|
||
and a file:
|
||
|
||
sim> ATTACH <unit> <filename>(cr)
|
||
|
||
If the file does not exist, and the -e switch was not specified, a
|
||
new file is created, and an appropriate message is printed. If the
|
||
-e switch was specified, a new file is not created, and an error
|
||
message is printed.
|
||
|
||
If the -r switch is specified, or the file is write protected, ATTACH
|
||
tries to open the file read only. If the file does not exist, or the
|
||
unit does not support read only operation, an error occurs. Input-
|
||
only devices, such as paper-tape readers, and devices with write lock
|
||
switches, such as disks and tapes, support read only operation; other
|
||
devices do not. If a file is ATTACHed read only, its contents can be
|
||
examined but not modified.
|
||
|
||
For Telnet-based terminal emulators, the ATTACH command associates the
|
||
master unit with a TCP/IP port:
|
||
|
||
sim> ATTACH <unit> <port>(cr)
|
||
|
||
The port is a decimal number between 1 and 65535 and should not used
|
||
by standard TCP/IP protocols.
|
||
|
||
The DETACH (abbreviation DET) command breaks the association between
|
||
a unit and a file, or between a unit and a port:
|
||
|
||
sim> DETACH ALL(cr) -- detach all units
|
||
sim> DETACH <unit>(cr) -- detach specified unit
|
||
|
||
The EXIT command performs an automatic DETACH ALL.
|
||
|
||
3.5 Examining and Changing State
|
||
|
||
There are four commands to examine and change state:
|
||
|
||
EXAMINE (abbreviated E) examines state
|
||
DEPOSIT (abbreviated D) changes state
|
||
IEXAMINE (interactive examine, abbreviated IE) examines state
|
||
and allows the user to interactively change it
|
||
IDEPOSIT (interactive deposit, abbreviated ID) allows the user
|
||
to interactively change state
|
||
|
||
All four commands take the form
|
||
|
||
command {modifiers} <state list>
|
||
|
||
Deposit must also include a deposit value at the end of the command.
|
||
|
||
There are four kinds of modifiers: switches, device/unit name, search
|
||
specifiers, and for EXAMINE, output file. Switches have been described
|
||
previously. A device/unit name identifies the device and unit whose
|
||
address space is to be examined or modified. If no device is specified,
|
||
the CPU (main memory)is selected; if a device but no unit is specified,
|
||
unit 0 of the device is selected.
|
||
|
||
Search specifiers provide criteria for testing addresses or registers
|
||
to see if they should be processed. A specifier consists of a logical
|
||
operator, a relational operator, or both, optionally separated by spaces.
|
||
|
||
{<logical op> <value>} <relational op> <value>
|
||
|
||
where the logical operator is & (and), | (or), or ^ (xor), and the
|
||
relational operator is = or == (equal), ! or != (not equal), >=
|
||
(greater than or equal), > (greater than), <= (less than or equal), or
|
||
< (less than). If a logical operator is specified without a relational
|
||
operator, it is ignored. If a relational operator is specified without
|
||
a logical operator, no logical operation is performed. All comparisons
|
||
are unsigned.
|
||
|
||
The output file modifier redirects command output to a file instead of
|
||
the console. An output file modifier consists of @ followed by a
|
||
valid file name.
|
||
|
||
Modifiers may be specified in any order. If multiple modifiers of the
|
||
same time are specified, later modifiers override earlier modifiers.
|
||
Note that if the device/unit name comes after the search specifier,
|
||
the values will interpreted in the radix of the CPU, rather than of the
|
||
device/unit.
|
||
|
||
The "state list" consists of one or more of the following, separated
|
||
by commas:
|
||
|
||
register the specified register
|
||
register[sub1-sub2] the specified register array locations,
|
||
start at location sub1 up to and including
|
||
location sub2
|
||
register[ALL] all locations in the specified register
|
||
array
|
||
register1-register2 all the registers starting at register1
|
||
up to and including register2
|
||
address the specified location
|
||
address1-address2 all locations starting at address1 up to
|
||
and including address2
|
||
address/length all location starting at address up to
|
||
but not including address+length
|
||
STATE all registers in the device
|
||
ALL all locations in the unit
|
||
|
||
Switches can be used to control the format of display information:
|
||
|
||
-a display as ASCII
|
||
-c display as character string
|
||
-m display as instruction mnemonics
|
||
-o display as octal
|
||
-d display as decimal
|
||
-h display as hexidecimal
|
||
|
||
The simulators typically accept symbolic input (see documentation with
|
||
each simulator).
|
||
|
||
Examples:
|
||
|
||
sim> ex 1000-1100 -- examine 1100:1100
|
||
sim> de PC 1040 -- set PC to 1040
|
||
sim> ie 40-50 -- interactively examine 40:50
|
||
sim> ie >1000 40-50 -- interactively examine the subset
|
||
of locations 40:50 that are >1000
|
||
sim> ex rx0 50060 -- examine 50060, RX unit 0
|
||
sim> ex rx sbuf[3-6] -- examine SBUF[3] to SBUF[6] in RX
|
||
sim> de all 0 -- set main memory to 0
|
||
sim> de &77>0 0 -- set all addresses whose low order
|
||
bits are non-zero to 0
|
||
sim> ex -m @memdump.txt 0-7777 -- dump memory to file
|
||
|
||
Note: to terminate an interactive command, simply type a bad value (eg,
|
||
XYZ) when input is requested.
|
||
|
||
3.6 Running Programs
|
||
|
||
The RUN command (abbreviated RU) resets all devices, deposits its argument
|
||
(if given) in the PC, and starts execution. If no argument is given,
|
||
execution starts at the current PC.
|
||
|
||
The GO command does NOT reset devices, deposits its argument (if given)
|
||
in the PC, and starts execution. If no argument is given, execution
|
||
starts at the current PC.
|
||
|
||
The CONT command (abbreviated CO) does NOT reset devices and resumes
|
||
execution at the current PC.
|
||
|
||
The STEP command (abbreviated S) resumes execution at the current PC
|
||
for the number of instructions given by its argument. If no argument
|
||
is supplied, one instruction is executed.
|
||
|
||
The BOOT command (abbreviated BO) bootstraps the device and unit given
|
||
by its argument. If no unit is supplied, unit 0 is bootstrapped. The
|
||
specified unit must be attached to a file.
|
||
|
||
3.7 Stopping Programs
|
||
|
||
Programs run until the simulator detects an error or stop condition, or
|
||
until the user forces a stop condition.
|
||
|
||
3.7.1 Simulator Detected Stop Conditions
|
||
|
||
These simulator-detected conditions stop simulation:
|
||
|
||
- HALT instruction. If a HALT instruction is decoded,
|
||
simulation stops.
|
||
|
||
- Breakpoint. The simulator may support breakpoints (see
|
||
below).
|
||
|
||
- I/O error. If an I/O error occurs during simulation of an
|
||
I/O operation, and the device stop-on-I/O-error flag is set,
|
||
simulation usually stops.
|
||
|
||
- Processor condition. Certain processor conditions can stop
|
||
simulation; these are described with the individual simulators.
|
||
|
||
3.7.2 User Specified Stop Conditions
|
||
|
||
Typing the interrupt character stops simulation. The interrupt character
|
||
is defined by the WRU (where are you) register and is initially set to
|
||
005 (^E).
|
||
|
||
3.7.3 Breakpoints
|
||
|
||
A simulator may offer breakpoint capability. A simulator may define
|
||
breakpoints of different types, identified by letter (for example, E
|
||
for execution, R for read, W for write, etc). At the moment, most
|
||
simulators support only E (execution) breakpoints.
|
||
|
||
Associated with a breakpoint is a count and, optionally, an action.
|
||
Each time the breakpoint is sprung, the associated count is decremented.
|
||
If the count is less than or equal to 0, the breakpoint occurs; otherwise,
|
||
it is deferred. When the breakpoint occurs, the optional action is
|
||
automatically executed
|
||
|
||
A breakpoint is set by the BREAK command:
|
||
|
||
sim> BREAK {-types} <addr range>{[count]},{addr range...}{;action}
|
||
|
||
If no type is specified, the simulator-specific default breakpoint
|
||
type (usually E for execution) is used. As with EXAMINE and DEPOSIT,
|
||
an address range may be a single address, a range of addresses low-high,
|
||
or a relative range of address/length. Examples of BREAK:
|
||
|
||
sim> break -e 200 -- set E break at 200
|
||
sim> break 2000/2[2] -- set E breaks at 2000,2001
|
||
with count = 2
|
||
sim> break 100;ex ac -- set E break at 100 with
|
||
action EX AC
|
||
sim> break 100; -- delete action on break at 100
|
||
|
||
Currently set breakpoints can be displayed with the SHOW BREAK command:
|
||
|
||
sim> SHOW {-types} BREAK {ALL|<addr range>{,<addr range>...}}
|
||
|
||
Locations with breakpoints of the specified type are displayed.
|
||
|
||
Finally, breakpoints can be cleared by the NOBREAK command.
|
||
|
||
3.8 Setting Device Parameters
|
||
|
||
The SET command (abbreviated SE) changes the status of a device parameter:
|
||
|
||
sim> SET <device> <parameter>{=<value}
|
||
|
||
or a unit parameter:
|
||
|
||
sim> SET <unit> <parameter>{=<value>}
|
||
|
||
Most parameters are simulator and device specific. Disk drives, for
|
||
example, can usually be set WRITEENABLED or write LOCKED; if a device
|
||
supports multiple drive types, the SET command can be used to specify
|
||
the drive type.
|
||
|
||
All devices recognize the following parameters:
|
||
|
||
OCT sets the data radix = 8
|
||
DEC sets the data radix = 10
|
||
HEX sets the data radix = 16
|
||
|
||
3.9 Displaying Parameters and Status
|
||
|
||
The SHOW CONFIGURATION command shows the simulator configuration and
|
||
the status of all simulated devices and units.
|
||
|
||
The SHOW DEVICES command shows the configuration of all simulated
|
||
devices.
|
||
|
||
The SHOW MODIFIERS command shows the modifiers available on all
|
||
simulated devices.
|
||
|
||
The SHOW QUEUE command shows the state of the simulator event queue.
|
||
Times are in "simulation units", typically one unit per instruction
|
||
execution, relative to the current simulation time.
|
||
|
||
The SHOW TIME command shows the number of time units elapsed since
|
||
the last RUN command.
|
||
|
||
The SHOW <device> command shows the status of the named simulated
|
||
device. SHOW <device> <parameter> shows the value of the named
|
||
parameter, if it can display a value.
|
||
|
||
The SHOW <unit> command shows the status of the named simulated unit.
|
||
SHOW <unit> <parameter> shows the value of the named parameter, if
|
||
it can display a value.
|
||
|
||
3.10 Altering the Simulated Configuration
|
||
|
||
In most simulators, the SET <device> DISABLED command removes the
|
||
specified device from the configuration. A DISABLED device is
|
||
invisible to running programs. The device can still be RESET but
|
||
it cannot be ATTAChed, DETACHed, or BOOTed. SET <device> ENABLED
|
||
restores a disabled device to a configuration.
|
||
|
||
Most multi-unit devices allow units to be placed online or offline:
|
||
|
||
sim> SET <unit> ONLINE
|
||
sim> SET <unit> OFFLINE
|
||
|
||
When a unit is offline, it will not be displayed by SHOW DEVICE.
|
||
|
||
The console terminal normally runs in the controlling window.
|
||
Optionally, the console terminal can be connected to a Telnet port.
|
||
This allows systems to emulate a VT100 using the built-in terminal
|
||
emulation of the Telnet client.
|
||
|
||
sim> SET TELNET <port> -- listen for console
|
||
Telnet connection on port
|
||
sim> SET NOTELNET -- disable console Telnet
|
||
sim> SHOW TELNET -- show console Telnet status
|
||
|
||
3.11 Logging Console Output
|
||
|
||
Output to the console can be logged simultaneously to a file. Logging
|
||
is enabled by the LOG command:
|
||
|
||
sim> SET LOG <filename> -- log console output to file
|
||
|
||
Logging is disabled by the NOLOG command:
|
||
|
||
sim> SET NOLOG -- disable logging
|
||
|
||
SHOW LOG displays whether logging is enabled or disabled.
|
||
|
||
3.12 Executing Command Files
|
||
|
||
The simulator can execute command files with the DO command:
|
||
|
||
sim> DO <filename> {arguments...} -- execute commands in file
|
||
|
||
The DO command allows command files to contain substitutable arguments.
|
||
The string %n is recognized as meaning argument n from the DO command
|
||
line. The character \ has the usual UNIX meaning of an escape character;
|
||
the next character is interpreted literally, even if it is % or \.
|
||
Arguments with spaces can be enclosed in matching single or double
|
||
quotation marks.
|
||
|
||
If the switch -V is specified, the commands in the file are echoed
|
||
before they are executed.
|
||
|
||
3.13 Executing System Commands
|
||
|
||
The simulator can execute operating system commands with the ! (spawn)
|
||
command:
|
||
|
||
sim> ! <host operating system command>
|
||
|
||
If no operating system command is provided, the simulator attempts to
|
||
launch the host operating system's command shell.
|
||
|
||
3.14 Getting Help
|
||
|
||
The HELP command prints out information about a command or about all
|
||
commands:
|
||
|
||
sim> HELP -- print all HELP messages
|
||
sim> HELP <command> -- print HELP for command
|
||
|
||
3.15 Exiting The Simulator
|
||
|
||
EXIT (synonyms QUIT and BYE) returns control to the operating system.
|
||
|
||
Appendix 1: File Representations
|
||
|
||
All file representations are little endian. On big endian hosts, the
|
||
simulator automatically performs any required byte swapping.
|
||
|
||
1. Hard Disks
|
||
|
||
Hard disks are represented as unstructured binary files of 16b data
|
||
items for the 12b and 16b simulators, of 32b data items for the 18b,
|
||
24b, and 32b simulators, and 64b for the 36b simulators.
|
||
|
||
2. Floppy Disks
|
||
|
||
PDP-8 and PDP-11 floppy disks are represented as unstructured binary
|
||
files of 8b data items. They are nearly identical to the floppy disk
|
||
images for Doug Jones' PDP-8 simulator but lack the initial 256 byte
|
||
header. A utility for converting between the two formats is easily
|
||
written.
|
||
|
||
3. Magnetic Tapes
|
||
|
||
Magnetic tapes are represented as unstructured binary files of 8b data
|
||
items. Each record consists of a 32b record header, in little endian
|
||
format. If the record header is not a special header, it is followed
|
||
by n 8b bytes of data, followed by a repeat of the 32b record header.
|
||
A 1 in the high order bit of the record header indicates an error in
|
||
the record. If the byte count is odd, the record is padded to even
|
||
length; the pad byte is undefined.
|
||
|
||
Special record headers occur only once and have no data. The currently
|
||
defined special headers are:
|
||
|
||
0x00000000 file mark (not repeated)
|
||
0xFFFFFFFF end of medium (not repeated)
|
||
|
||
Magnetic tapes are endian independent and consistent across simulator
|
||
families. A magtape produced by the Nova simulator will appear to
|
||
have its 16b words byte swapped if read by the PDP-11 simulator.
|
||
|
||
4. Line Printers
|
||
|
||
Line printer output is represented by an ASCII file of lines separated
|
||
by the newline character. Overprinting is represented by a line ending
|
||
in return rather than newline.
|
||
|
||
5. DECtapes
|
||
|
||
DECtapes are structured as fixed length blocks. PDP-1/4/7/9/15 DECtapes
|
||
use 578 blocks of 256 32b words. Each 32b word contains 18b (6 lines)
|
||
of data. PDP-11 DECtapes use 578 blocks of 256 16b words. Each 16b word
|
||
contains 6 lines of data, with 2b omitted. This is compatible with native
|
||
PDP-11 DECtape dump facilities, and with John Wilson's PUTR Program. PDP-8
|
||
DECtapes use 1474 blocks of 129 16b words. Each 16b word contains 12b
|
||
(4 lines) of data. PDP-8 OS/8 does not use the 129th word of each block,
|
||
and OS/8 DECtape dumps contain only 128 words per block. A utility,
|
||
DTOS8CVT.C, is provided to convert OS/8 DECtape dumps to simulator format.
|
||
|
||
A known problem in DECtape format is that when a block is recorded in
|
||
one direction and read in the other, the bits in a word are scrambled
|
||
(to the complement obverse). The PDP-11 deals with this problem by
|
||
performing an automatic complement obverse on reverse writes and reads.
|
||
The other systems leave this problem to software.
|
||
|
||
The simulator represents this difference as follows. On the PDP-11, all
|
||
data is represented in normal form. Data reads and writes are not direction
|
||
sensitive; read all and write all are direction sensitive. Real DECtapes
|
||
that are read forward will generate images with the correct representation
|
||
of the data.
|
||
|
||
On the other systems, forward write creates data in normal form, while
|
||
reverse write creates data in complement obverse form. Forward read (and
|
||
read all) performs no transformations, while reverse read (and read all)
|
||
changes data to the complement obverse. Real DECtapes that are read forward
|
||
will generate data in normal form for blocks written forward, and complement
|
||
obverse data for blocks written in reverse, corresponding to the simulator
|
||
format.
|
||
|
||
Appendix 2: Debug Status
|
||
|
||
The debug status of each simulated CPU and device is as follows:
|
||
|
||
system PDP-8 PDP-11 Nova PDP-1 18b PDP
|
||
device
|
||
CPU y y y y y
|
||
FPU - y - - -
|
||
EIS/CIS - h - - -
|
||
console y y y y y
|
||
paper tape y y y h y
|
||
card reader - - - - -
|
||
line printer y y y h y
|
||
clock y y y - y
|
||
extra terminal y y y - y
|
||
hard disk y y y - h
|
||
fixed disk y - h - h
|
||
floppy disk y y y - -
|
||
drum - - - - h
|
||
DECtape y y - h y
|
||
mag tape h y y - h
|
||
|
||
system 1401 2100 PDP-10 H316 VAX
|
||
device
|
||
CPU y y y h y
|
||
FPU - d y - y
|
||
EIS/CIS - d y - -
|
||
console h y y h y
|
||
paper tape - d h h y
|
||
card reader y - - - -
|
||
line printer y d y h y
|
||
clock - d y h y
|
||
extra terminal - h y - y
|
||
hard disk - d y - y
|
||
fixed disk - n - - -
|
||
floppy disk - - h - -
|
||
drum - n - - -
|
||
DECtape - - - - -
|
||
mag tape y d y - y
|
||
|
||
system GRI-909 1620 i16 i32 SDS940
|
||
device
|
||
CPU h h d d d
|
||
FPU - - d d -
|
||
CIS - - - - -
|
||
console h h d d h
|
||
paper tape h h d d h
|
||
card reader - h - - -
|
||
line printer - h d d h
|
||
clock h - d d n
|
||
extra terminal - - h h h
|
||
hard disk - h d d h
|
||
fixed disk - - - - h
|
||
floppy disk - - d d -
|
||
drum - - - - h
|
||
DECtape - - - - -
|
||
mag tape - - d d h
|
||
|
||
legend: y = runs operating system or sample program
|
||
d = runs diagnostics
|
||
h = runs hand-generated test cases
|
||
n = untested
|
||
- = not applicable
|
||
|
||
Revision History (covering Rev 2.0 to present)
|
||
|
||
Starting with Rev 2.7, detailed revision histories can be found
|
||
in file sim_rev.c.
|
||
|
||
Rev 2.10, Nov, 02
|
||
Added Telnet console capability, removed VT emulation
|
||
Added DO with substitutable arguments (from Brian Knittel)
|
||
Added quiet mode (from Brian Knittel)
|
||
Added ! command (from Mark Pizzolato)
|
||
Added Telnet BREAK support (from Mark Pizzolato)
|
||
Added device enable/disable support
|
||
Added optional simulator hooks for input, output, commands
|
||
Added PDP-11 KW11P programmable clock
|
||
Added PDP-11 RK611/RK06/RK07 disk
|
||
Added PDP-11/VAX TMSCP tape
|
||
Added PDP-11/VAX DELQA Ethernet support (from David Hittner)
|
||
Added PDP-11/PDP-10 RX211/RX02 floppy disk
|
||
Added PDP-11/VAX autoconfiguration support
|
||
Added PDP-10/PDP-11/VAX variable vector support
|
||
Added PDP-1 DECtape
|
||
Added PDP-1, PDP-4 Type 24 serial drum support
|
||
Added PDP-8 RX28 support
|
||
Added PDP-9 RB09 fixed head disk, LP09 line printer
|
||
Added HP2100 12845A line printer
|
||
Added HP2100 13183 magtape support
|
||
Added HP2100 boot ROM support
|
||
Added HP2100 interprocessor link support
|
||
Added IBM 1620
|
||
Added SDS 940
|
||
Added Interdata 16b and 32b systems
|
||
Added 16b DECtape file format support
|
||
Added support for statically buffered devices
|
||
Added magtape end of medium support
|
||
Added 7B/8B support to terminals and multiplexors
|
||
Added BREAK support to terminals and multiplexors
|
||
|
||
Rev 2.9, Jan, 02
|
||
Added circular register arrays
|
||
Replaced ENABLE/DISABLE with SET ENABLED/DISABLED
|
||
Replaced LOG/NOLOG with SET LOG/NOLOG
|
||
Generalized the timer calibration package
|
||
Added additional routines to the multiplexor library
|
||
Added SET DISCONNECT, SHOW STATISTICS commands to multiplexors
|
||
Reimplemented PDP-8 TTX as a unified multiplexor
|
||
Implemented a PC queue in most simulators
|
||
Added VAX simulator
|
||
Added GRI-909 simulator
|
||
Added Peter Schorn's MITS 8080/Z80 simulator
|
||
Added Brian Knittel's IBM 1130 simulator
|
||
Added HP2100 DQ, DR, MS, MUX devices
|
||
Added SET VT/NOVT commands
|
||
|
||
Rev 2.8, Dec, 01
|
||
Added DO command
|
||
Added general breakpoint facility
|
||
Added extended SET/SHOW capability
|
||
Replaced ADD/REMOVE with SET ONLINE/OFFLINE
|
||
Added global register name recognition
|
||
Added unit-based register arrays
|
||
Added Charles Owen's System 3 simulator
|
||
Added PDP-11 I/O bus map
|
||
Added PDP-11/VAX RQDX3
|
||
Added PDP-8 RL8A
|
||
Revised 18b PDP interrupt structure
|
||
Revised directory and documentation structure
|
||
Added support for MINGW environment
|
||
|
||
Rev 2.7, Sep, 01
|
||
Added DZ11 (from Thord Nilson and Art Krewat)
|
||
to PDP-11, PDP-10
|
||
Added additional terminals to PDP-8
|
||
Added TSS/8 packed character format to PDP-8
|
||
Added sim_sock and sim_tmxr libraries
|
||
Added sim_qcount and simulator exit detach all facilities
|
||
Added Macintosh sim_sock support (from Peter Schorn)
|
||
Added simulator revision level, SHOW version
|
||
Changed int64/uint64 to t_int64/t_uint64 for Windoze
|
||
Fixed bug in PDP-11 interrupt acknowledge
|
||
Fixed bugs in PDP-11 TS NXM check, boot code, error status;
|
||
added extended characteristics and status
|
||
Fixed bug in PDP-11 TC stop, stop all functions
|
||
Fixed receive interrupt while disconnected bug in DZ11
|
||
Fixed multi-unit operation bugs, interrupt bugs in
|
||
PDP-11 RP, PDP-10 RP, PDP-10 TU
|
||
Fixed carrier detect bug in PDP-11, PDP-10 DZ
|
||
Fixed bug in PDP-8 reset routine
|
||
Fixed conditional in PDP-18b CPU
|
||
Fixed SC = 0 bug in PDP-18b EAE
|
||
Fixed bug in PDP-7 LPT
|
||
Upgraded Nova second terminal to use sim_tmxr
|
||
Upgraded PDP-18b second terminal to use sim_tmxr
|
||
Upgraded PDP-11 LTC to full KW11-L
|
||
Removed hack multiple console support
|
||
|
||
Rev 2.6b, Aug, 01
|
||
Added H316/516 simulator
|
||
Added Macintosh support from Louis Chr<68>tien, Peter Schorn,
|
||
and Ben Supnik
|
||
Added bad block table option to PDP-11 RL, RP
|
||
Removed register in declarations
|
||
Fixed bugs found by Peter Schorn
|
||
-- endian error in PDP-10, PDP-11 RP
|
||
-- space reverse error in PDP-11 TS
|
||
-- symbolic input in 1401
|
||
Fixed bug in PDP-1 RIM loader found by Derek Peschel
|
||
Fixed bug in Nova fixed head disk
|
||
|
||
Rev 2.6a, Jun, 01
|
||
Added PDP-9, PDP-15 API option
|
||
Added PDP-9, PDP-15 second terminal
|
||
Added PDP-10 option for TOPS-20 V4.1 bug fix
|
||
Added PDP-10 FE CTRL-C option for Windoze
|
||
Added console logging
|
||
Added multiple console support
|
||
Added comment recognition
|
||
Increased size of string buffers for long path names
|
||
Fixed bug in big-endian I/O found by Dave Conroy
|
||
Fixed DECtape reset in PDP-8, PDP-11, PDP-9/15
|
||
Fixed RIM loader PC handling in PDP-9/15
|
||
Fixed indirect pointers in PDP-10 paging
|
||
Fixed SSC handling in PDP-10 TM02/TU45
|
||
Fixed JMS to non-existent memory in PDP-8
|
||
Fixed error handling on command file
|
||
|
||
Rev 2.6, May, 01
|
||
Added ENABLE/DISABLE devices
|
||
Added SHOW DEVICES
|
||
Added examination/modification of register arrays
|
||
Added PDP-10 simulator
|
||
Added clock autocalibration to SCP, Nova, PDP-8, PDP-11,
|
||
PDP-18b
|
||
Added PDP-8, PDP-11, PDP-9/15 DECtape
|
||
Added PDP-8 DF32
|
||
Added 4k Disk Monitor boot to PDP-8 RF08 and DF32
|
||
Added PDP-4/7 funny format loader support
|
||
Added extension handling to the PDP-8 and -9/15 loaders
|
||
Added PDP-11 TS11/TSV05
|
||
Added integer interval timer to SCP
|
||
Added filename argument to LOAD/DUMP
|
||
Revised magtape and DECtape bootstraps to rewind
|
||
before first instruction
|
||
Fixed 3 cycle data break sequence in PDP-8 RF
|
||
Fixed 3 cycle data break sequence in 18b PDP LP, MT, RF
|
||
Fixed CS1.TRE write, CS2.MXF,UPE write, and CS2.UAI in
|
||
PDP-11 RP
|
||
Fixed 4M memory size definition in PDP-11
|
||
Fixed attach bug in RESTORE
|
||
Fixed detach bug for buffered devices
|
||
Updated copyright notices, fixed comments
|
||
|
||
Rev 2.5a, Dec, 00
|
||
Added CMD flop to HP paper tape and line printer
|
||
Added status input for HP paper tape punch and TTY
|
||
Added Dutch Owens' 1401 mag tape boot routine
|
||
Added Bruce Ray's Nova plotter and second terminal modules
|
||
Added Charles Owen's Eclipse CPU support
|
||
Added PDP-9/PDP-15 RIM/BIN loader support
|
||
Added PDP-9/PDP-15 extend/bank initial state registers
|
||
Added PDP-9/PDP-15 half/full duplex support
|
||
Moved software documentation to a separate file
|
||
Fixed SCP handling of devices without units
|
||
Fixed FLG, FBF initialization in many HP peripherals
|
||
Fixed 1401 bugs found by Dutch Owens
|
||
-- 4, 7 char NOPs are legal
|
||
-- 1 char B is chained BCE
|
||
-- MCE moves whole character, not digit, after first
|
||
Fixed Nova bugs found by Bruce Ray
|
||
-- traps implemented on Nova 3 as well as Nova 4
|
||
-- DIV and DIVS 0/0 set carry
|
||
-- RETN sets SP from FP at outset
|
||
-- IORST does not clear carry
|
||
-- Nova 4 implements two undocumented instructions
|
||
Fixed bugs in 18b PDP's
|
||
-- XCT indirect address calculation
|
||
-- missing index instructions in PDP-15
|
||
-- bank mode handling in PDP-15
|
||
|
||
Rev 2.5, Nov, 00
|
||
Removed Digital and Compaq from copyrights, as
|
||
authorized by Compaq Sr VP Bill Strecker
|
||
Revised save/restore format for 64b simulators
|
||
Added examine to file
|
||
Added unsigned integer data types to sim_defs
|
||
Added Nova 3 and Nova 4 instructions to Nova CPU
|
||
Added HP2100
|
||
Added Interdata 4
|
||
Fixed indirect loop through autoinc/dec in Nova CPU
|
||
Fixed MDV enabled test in Nova CPU
|
||
|
||
Rev 2.4, Jan, 99
|
||
Placed all sources under X11-like open source license
|
||
Added DUMP command, revised sim_load interface
|
||
Added SHOW MODIFIERS command
|
||
Revised magtape format to include record error flag
|
||
Fixed 64b problems in SCP
|
||
Fixed big endian problem in PDP-11 bad block routine
|
||
Fixed interrupt on error bug in PDP-11 RP/RM disks
|
||
Fixed ROL/ROR inversion in PDP-11 symbolic routines
|
||
|
||
Rev 2.3d, Sep, 98
|
||
Added BeOS support
|
||
Added radix commands and switches
|
||
Added PDP-11 CIS support
|
||
Added RT11 V5.3 to distribution kits
|
||
Fixed "shift 32" bugs in SCP, PDP-11 floating point
|
||
Fixed bug in PDP-11 paper tape reader
|
||
Fixed bug in ^D handling
|
||
|
||
Rev 2.3c, May, 98
|
||
Fixed bug in PDP-11 DIV overflow check
|
||
Fixed bugs in PDP-11 magtape bootstrap
|
||
Fixed bug in PDP-11 magtape unit select
|
||
Replaced UNIX V7 disk images
|
||
|
||
Rev 2.3b, May, 98
|
||
Added switch recognition to all simulator commands
|
||
Added RIM loader to PDP-8 paper tape reader and loader
|
||
Added second block bootstrap to PDP-11 magtape
|
||
Fixed bug in PDP-8 RF bootstrap
|
||
Fixed bug in PDP-11 symbolic display
|
||
Fixed bugs in PDP-11 floating point (LDEXP, STEXP,
|
||
MODf, STCfi, overflow handling)
|
||
|
||
Rev 2.3a, Nov, 97
|
||
Added search capability
|
||
Added bad block table command to PDP-11 disks
|
||
Added bootstrap to PDP-11 magtape
|
||
Added additional Nova moving head disks
|
||
Added RT-11 sample software
|
||
Fixed bugs in PDP-11 RM/RP disks
|
||
Fixed bugs in Nova moving head disks
|
||
Fixed endian dependence in 18b PDP RIM loader
|
||
|
||
Rev 2.3, Mar, 97
|
||
Added PDP-11 RP
|
||
Added PDP-1
|
||
Changed UNIX terminal I/O to TERMIOS
|
||
Changed magtape format to double ended
|
||
Changed PDP-8 current page mnemonic from T to C
|
||
Added endian independent I/O routines
|
||
Added precise integer data types
|
||
Fixed bug in sim_poll_kbd
|
||
Fixed bug in PDP-8 binary loader
|
||
Fixed bugs in TM11 magtape
|
||
Fixed bug in RX11 bootstrap
|
||
Fixed bug in 18b PDP ADD
|
||
Fixed bug in 18b PDP paper tape reader
|
||
Fixed bug in PDP-4 console
|
||
Fixed bug in PDP-4,7 line printer
|
||
|
||
Rev 2.2d, Dec, 96
|
||
Added ADD/REMOVE commands
|
||
Added unit enable/disable support to device simulators
|
||
Added features for IBM 1401 project
|
||
Added switch recognition for symbolic input
|
||
Fixed bug in variable length IEXAMINE
|
||
Fixed LCD bug in RX8E
|
||
Initial changes for Win32
|
||
Added IBM 1401
|
||
|
||
Rev 2.2b, Apr, 96
|
||
Added PDP-11 dynamic memory size support
|
||
|
||
Rev 2.2a, Feb, 96
|
||
New endian independent magtape format
|
||
|
||
Rev 2.2 Jan, 96
|
||
Added register buffers for save/restore
|
||
Added 18b PDP's
|
||
Guaranteed TTI, CLK times are non-zero
|
||
Fixed breakpoint/RUN interaction bug
|
||
Fixed magnetic tape backspace to EOF bug
|
||
Fixed ISZ/DCA inversion in PDP-8 symbol table
|
||
Fixed sixbit conversion in PDP-8 examine/deposit
|
||
Fixed origin increment bug in PDP-11 binary loader
|
||
Fixed GCC longjmp optimization bug in PDP-11 CPU
|
||
Fixed unit number calculation bug in SCP and in
|
||
Nova, PDP-11, 18b PDP moving head disks
|
||
|
||
Rev 2.1 Dec, 95
|
||
Fixed PTR bug (setting done on EOF) in PDP-8, Nova
|
||
Fixed RX bug (setting error on INIT if drive 1 is
|
||
not attached) in PDP-8, PDP-11
|
||
Fixed RF treatment of photocell flag in PDP-8
|
||
Fixed autosize bug (always chose smallest disk if new
|
||
file) in PDP-11, Nova
|
||
Fixed not attached bug (reported as not attachable) in
|
||
most mass storage devices
|
||
Fixed Nova boot ROMs
|
||
Fixed bug in RESTORE (didn't requeue if delay = 0)
|
||
Fixed bug in RESTORE (clobbered device position)
|
||
Declared static constant arrays as static const
|
||
Added PDP-8, Nova magnetic tape simulators
|
||
Added Dasher mode to Nova terminal simulator
|
||
Added LINUX support
|
||
|
||
Rev 2.0 May, 95
|
||
Added symbolic assembly/disassembly
|
||
|
||
Acknowledgements
|
||
|
||
SIMH would not have been possible without help from around the world. I
|
||
would like to acknowledge the help of the following people, all of whom
|
||
donated their time and talent to this "computer archaeology" project:
|
||
|
||
Bill Ackerman PDP-1 consulting
|
||
Alan Bawden ITS consulting
|
||
Winfried Bergmann Linux port testing
|
||
Phil Budne Solaris port testing
|
||
Max Burnet PDP information, documentation, and software
|
||
Robert Alan Byer VMS socket support and testing
|
||
James Carpenter LINUX port testing
|
||
Chip Charlot PDP-11 RT-11, RSTS/E, RSX-11M legal permissions
|
||
Louis Chr<68>tien Macintosh porting
|
||
Dave Conroy HP 21xx documentation, PDP-10, PDP-18b debugging
|
||
L Peter Deutsch PDP-1 LISP software
|
||
Ethan Dicks PDP-11 2.9 BSD debugging
|
||
John Dundas PDP-11 CPU and clock debugging
|
||
Jonathan Engdahl PDP-11 device debugging
|
||
Carl Friend Nova and Interdata documentation, and RDOS software
|
||
Megan Gentry PDP-11 integer debugging, make file
|
||
Dave Gesswein PDP-8 and PDP-9.15 documentation, PDP-8 DECtape and
|
||
paper tape images, PDP-9/15 DECtape images
|
||
Dick Greeley PDP-8 OS/8 and PDP-10 TOPS-10/20 legal permissions
|
||
Gordon Greene PDP-1 LISP machine readable source
|
||
Lynne Grettum PDP-11 RT-11, RSTS/E, RSX-11M legal permissions
|
||
Franc Grootjen PDP-11 2.11 BSD debugging
|
||
Doug Gwyn Portability debugging
|
||
Kevin Handy TS11/TSV05 documentation, make file
|
||
Ken Harrenstein KLH PDP-10 simulator
|
||
Bill Haygood PDP-8 information, simulator, and software
|
||
Wolfgang Helbig DZ11 implementation
|
||
Mark Hittinger PDP-10 debugging
|
||
Dave Hittner SCP debugging, Ethernet emulation
|
||
Sellam Ismail GRI-909 documentation
|
||
Jay Jaeger IBM 1401 information
|
||
Doug Jones PDP-8 information, simulator, and software
|
||
Brian Knittel IBM 1130 simulator
|
||
Al Kossow HP 21xx, Varian 620, TI 990, Interdata, DEC
|
||
documentation and software
|
||
Arthur Krewat DZ11 update for the PDP-10
|
||
Mirian Crzig Lennox ITS and DZ11 debugging
|
||
Don Lewine Nova documentation and legal permissions
|
||
Tim Litt PDP-10 hardware documentation and schematics,
|
||
tape images, and software sources
|
||
Tim Markson DZ11 debugging
|
||
Bill McDermith HP 2100 debugging, 12565A simulator
|
||
Scott McGregor PDP-11 UNIX legal permissions
|
||
Jeff Moffatt HP 2100 information, documentation, and software
|
||
Alec Muffett Solaris port testing
|
||
Terry Newton HP 21MX debugging
|
||
Thord Nilson DZ11 implementation
|
||
Charles Owen Nova moving head disk debugging, Altair simulator,
|
||
Eclipse simulator, IBM System 3 simulator,
|
||
IBM 1401 diagnostics, debugging, and magtape boot
|
||
Sergio Pedraja MINGW environment debugging
|
||
Derek Peschel PDP-10 debugging
|
||
Paul Pierce IBM 1401 diagnostics, media recovery
|
||
Mark Pizzolato VAX simulator improvements
|
||
Hans Pufal PDP-10 debugging, PDP-15 bootstrap
|
||
Bruce Ray Software, documentation, bug fixes, and new devices
|
||
for the Nova, OS/2 porting
|
||
Craig St Clair DEC documentation
|
||
Richard Schedler Public repository maintenance
|
||
Peter Schorn Macintosh porting
|
||
Stephen Schultz PDP-11 2.11 BSD debugging
|
||
Olaf Seibert NetBSD port testing
|
||
Brian & Barry Silverman PDP-1 simulator and software
|
||
Tim Shoppa Nova documentation, RDOS software, PDP-10 and PDP-11
|
||
software archive, hosting for SIMH site
|
||
Van Snyder IBM 1401 bootstraps
|
||
Michael Somos PDP-1 debugging
|
||
Hans-Michael Stahl OS/2 port testing, TERMIOS implementation
|
||
Tim Stark TS10 PDP-10 simulator
|
||
Larry Stewart Initial suggestion for the project
|
||
Bill Strecker Permission to revert copyrights
|
||
Chris Suddick PDP-11 floating point debugging
|
||
Ben Supnik Macintosh timing routine
|
||
Ben Thomas VMS character-by-character I/O routines
|
||
Warren Toomey PDP-11 UNIX software
|
||
Deb Toivonen DEC documentation
|
||
Mike Umbricht DEC documentation, H316 documentation and schematics
|
||
Leendert Van Doorn PDP-11 UNIX V6 debugging, TERMIOS implementation
|
||
Holger Veit OS/2 socket support
|
||
David Waks PDP-8 ESI-X and PDP-7 SIM8 software
|
||
Tom West Nova documentation
|
||
Adrian Wise H316 simulator, documentation, and software
|
||
John Wilson PDP-11 simulator and software
|
||
Joe Young RP debugging on Ultrix-11 and BSD
|
||
|
||
In addition, the following companies have graciously licensed their
|
||
software at no cost for hobbyist use:
|
||
|
||
Data General Corporation
|
||
Digital Equipment Corporation
|
||
Compaq Computer Corporation
|
||
Mentec Corporation
|
||
The Santa Cruz Operation
|
||
Caldera Corporation
|
||
|