SIMH FAQ, 31-Mar-2004

1 General

1.1 What is SIMH?
1.2 Why was SIMH written?
1.3 What is the history of SIMH?
1.4 Who writes and maintains SIMH?
1.5 How is SIMH licensed?
1.6 How is SIMH distributed?
1.7 Which computer systems can SIMH simulate?
1.8 Which host systems does SIMH run on?
1.9 What software packages are available for use with the SIMH simulators?
1.10 Where can I get more information about SIMH?

--------------------------------------------------------------------------------

2 Operational

2.1 How do I install SIMH on Windows?
2.2 How do I install SIMH with Ethernet support on Windows?
2.3 How do I install SIMH on Unix?
2.4 How do I install SIMH on VMS?
2.5 How do I transcribe a real CD for use with SIMH?
2.6 How do I transcribe other archival media for use with SIMH?
2.7 How can I get text files in and out of SIMH?
2.8 How can I get binary files in and out of SIMH?
2.9 Can I connect real devices on the host computer to SIMH?
2.10 My Windows host can't communicate with the PDP-11 or VAX over Ethernet; why?

--------------------------------------------------------------------------------

3 Writing and Debugging New Code

3.1 What resources are available for writing new simulators?
3.2 What debugging facilities are available in SIMH?
3.3 When do I need to use the host debugger for debugging a simulator?
3.4 What is the release process for SIMH?

--------------------------------------------------------------------------------

4 VAX

4.1 Where can I get software and hobbyist licenses for the VAX?
4.2 How do I install VMS?
4.3 How do I install NetBSD?
4.4 How do I install Ultrix?
4.5 What's the CPU serial number for my hobbyist license PAK?
4.6 How do I change the simulator from a VAXserver 3900 to a
    MicroVAX 3900?
4.7 Is there an example of the simulator running VMS?
4.8 How can I import files into a simulated VMS environment?
4.9 How can I export files from a simulated VMS environment?

--------------------------------------------------------------------------------

5 PDP-11

5.1 When installing RSTS/E from simulated magtape, the installation process
    hangs with no error message; why?

================================================================================
1. General Questions
================================================================================

1.1 What is SIMH?

SIMH is the Computer History Simulation system.  It consists of simulators
for approximately 20 different computers, all written around a common user
interface package and set of supporting libraries.  SIMH can be used to
simulate any computer system for which sufficient detail is available, but
the focus to date has been on simulating computer systems of historic interest.

--------------------------------------------------------------------------------

1.2 Why was SIMH written?

Significant portions of the computing past are being irretrievably lost, as
old systems are scrapped, documentation and software is thrown out, media
become obsolete or unreadable, and inventors and pioneers die.  SIMH was
written as a vehicle to allow the computing past to be made accessible to
a wider audience, for recreational and educational purposes.  SIMH preserves
historic computers as portable software, that can be run on any modern
system.  SIMH also preserves representative software packages for these
systems.  With SIMH, anyone with a desktop computer can call up and run
significant samples from the computing past, at any time.

--------------------------------------------------------------------------------

1.3 What is the history of SIMH?

The SIMH project started in 1993, at the suggestion of Larry Stewart of DEC.
Its immediate purpose was to preserve the fading hardware and software
record of early minicomputers.  Since then, the project has been expanded
to include other important systems, spanning the history of computing from
the late 50's to the late 80's.

SIMH's core design is based on an earlier simulation system called MIMIC.
MIMIC was written in the late 1960's at Applied Data Research, by Mike
McCarthy, Len Feshkens, and Bob Supnik.  MIMIC was a mini-computer simulator
that ran on the PDP-10.  Its purpose was to facilitate the development and
debugging of real-time embedded systems by using the the PDP-10 timesharing
environment for program development, instead of the limited facilities of
the native minicomputer environments.  Ironically, given SIMH's mission to
preserve the computing record, all machine-readable copies of MIMIC have
been lost.

--------------------------------------------------------------------------------

1.4 Who writes and maintains SIMH?

Many people have contributed, and continue to contribute, to SIMH.  The full
list of contributors can be found on the SIMH web site.  Bob Supnik coordinates
SIMH development.

--------------------------------------------------------------------------------

1.5 How is SIMH licensed?

SIMH is licensed under a modified X-Windows license.  This license allows more
or less unrestricted use of the sources and binaries.  The license is included
with the documentation and is also included in every source module.  The
software packages are available under various terms and conditions; see the
documentation included with each software package.

--------------------------------------------------------------------------------

1.6 How is SIMH distributed?

SIMH is distributed in source form from the SIMH web site, in the form of a
Zip archive.  For Windows users, pre-compiled binaries are also available.

--------------------------------------------------------------------------------

1.7 Which computer systems does SIMH simulate?

SIMH simulates the following computer systems:

	Manufacturer			Model

	Digital Equipment Corporation	PDP-1, PDP-4, PDP-7, PDP-8, PDP-9,
					PDP-10, PDP-11, PDP-15, VAX
	Data General Corporation	Nova, Eclipse
	IBM Corporation			1130, 1401, 1620, System 3
	GRI Corporation			GRI-909
	Honeywell Corporation		H316/516
	Hewlett Packard Corporation	HP2116, HP2100, HP21MX
	Interdata Corporation		16b systems, 7/32, 8/32
	Scientific Data Systems		SDS-940
	MITS				Altair 8080, Altair Z80
	Royal-Mcbee			LGP-30, LGP-21

The documentation contains more details on supported models and peripherals.

--------------------------------------------------------------------------------

1.8 Which host systems does SIMH run on?

	Host System	Compiler		comments

	OpenVMS/VAX	DEC C		no 64b support; no Ethernet support
	OpenVMS/Alpha	DEC C		Ethernet support provided in pcap-vms

	Windows 9x or	Mingw/gcc or	requires WinPcap for Ethernet support
	Windows 2000 or	Visual C++ or
	Windows XP	Borland C++

	Mac OS/X			requires libpcap for Ethernet support

	Linux		gcc		requires libpcap for Ethernet support
	Tru64 UNIX	DEC C		no Ethernet support
	AIX				no Ethernet support
	Solaris				requires libpcap for Ethernet support
	HP/UX				no Ethernet support
	NetBSD		gcc		requires libpcap for Ethernet support
	OpenBSD		gcc		requires libpcap for Ethernet support
	FreeBSD		gcc		requires libpcap for Ethernet support

	OS/2		EMX		no Ethernet support

--------------------------------------------------------------------------------

1.9 What software packages are available to run on SIMH?

The list of available software packages can be found on the SIMH web site.

--------------------------------------------------------------------------------

1.10 Where can I get more information on SIMH?

The SIMH web site is http://simh.trailing-edge.com.

================================================================================
2 Operational Questions
================================================================================

2.1 How do I install SIMH on Windows?

The simplest way is to download the pre-compiled binaries.  Unzip these into the
directory where you want to run SIMH. You can then run whichever binary that you
want.

If you want to run the VAX emulator, you will also need files ka655.bin and
ka655x.bin from the source kit.

--------------------------------------------------------------------------------

2.2 How do I install SIMH with Ethernet support on Windows?

Separate pre-compiled binaries contain Ethernet support.  Before running these
binaries, you must download download and install the WinPCAP AutoInstaller from

  http://winpcap.polito.it

This creates a network packet driver in Windows for SIMH to attach to.

To use network support, you must either be an administrator on the Windows
machine (implied in Windows 9X), or you must set the windows packet driver to
autostart when the system boots; see the WinPCAP FAQ page for detailed
information on how to do this.

--------------------------------------------------------------------------------

2.3 How do I install SIMH on Unix?

- Unzip the archive of sources to a new directory.  You must specify the
  -a switch to unzip for proper conversion of Windows cr-lf sequences
  to UNIX newline sequences.

- If your system supports gmake, you can compile the simulators with
  the command:

	% gmake all

- If you want Ethernet support in the PDP-11 and VAX, you should compile
  the simulators with the command:

	% gmake USE_NETWORK=1 all

  Note that Ethernet support is available ONLY on Linux, NetBSD, and
  OpenBSD.

--------------------------------------------------------------------------------

2.4 How do I install SIMH on VMS?

Download the SIMH source kit, and UNZIP it using the /TEXT=AUTO qualifier to
the directory that you want SIMH to reside in.  Use MMK or MMS and the
descrip.mms file to build the binaries.

On a VAX use:

$ MMx

On a Alpha use:
$ MMx/MACRO=("__ALPHA__=1")              !Without ethernet support
$ MMx/MACRO=("__ALPHA__=1","__PCAP__=1") !With    ethernet support

UNZIP can be found on the VMS freeware CDs, or from www.info-zip.org
MMK   can be found on the VMS freeware CDs, or from www.madgoat.com
MMS   can be licensed from HP/Compaq/Digital.

Note that the PDP-10 emulator cannot be built and used on VAX/VMS, because
the DEC C compiler for VAX/VMS does not support 64-bit integers.  DEC C on
on Alpha VMS has the required 64-bit capability to build and run all of the
emulators. Ethernet support is only available on Alpha VMS 7.3-1 and above.

--------------------------------------------------------------------------------

2.5 How do I transcribe a real CD for use with SIMH?

- On UNIX, you can copy a CD to an ISO file with the dd command:

	% dd /if=/dev/raw_cd_device /out=/path/cdimage.iso

  Linux, and many Unix variants, support direct access to the CD ROM
  from SIMH:

	sim> set rq1 cdrom
	sim> att rq1 /dev/cdrom_drive

- On Windows, there are quite a few products that can do this. The two most
  common products are detailed below.  Make sure to disable any antivirus
  software before proceeding. Antivirus software tends to interfere with
  the smooth flow of data from the CD and will occasionally transform the
  data in strange and unexpected ways to 'protect' you.

  1) Roxio EZ-CD Creator 5.x
     Go to the the Disc menu and select Disc Info (there will be a delay).
     Select the track shown, then click the Read Track button.
     Enter the Save file name, then OK.

  2) Nero 5.5
     Select Recorder|Save Track
     Select the track, set the output filename
     In Options, you may need to set the Read Speed down;
      the VMS Hobbyist CD didn't work after a 52x read, but worked fine at 8x
     Click GO

--------------------------------------------------------------------------------

2.6 How do I transcribe other archival media for use with SIMH?

You must have access to a real system that can read the media to be
transcribed (e.g., a system with a working DECtape drive to read a
DECtape).  Most systems have utilities to copy raw data to a disk
file; that file can then be transferred over the console serial
line to a system with an Internet link.  Utility programs are
available to convert raw data streams to SIMH format.

--------------------------------------------------------------------------------

2.7 How can I get text files in and out of SIMH?

Since SIMH supports the universal serial interface using TELNET, text can
be transferred using one of the serial line transfer protocols (X/Y/Zmodem,
Kermit) or using standard cut and paste techniques, if the host's TELNET
program supports it.

To use the TELNET feature, connect to the SIMH machine using TELNET, and
set the target environment into a 'receive' mode.  This is usually something
like running a text editor. Then tell the TELNET program to 'send', 'transfer',
or 'paste' the text that you want sent into the SIMH system.

To get text out of the system, have the TELNET program either log the output,
or if the TELNET program supports a backscroll region you can use that.  Tell
the SIMH system to 'type' or 'cat' the text file, sending the output to the
TELNET device, where you can edit it into a text file.

Many TELNET programs also support transferring large files via X/Y/ZModem or
Kermit, which you can use as long as the SIMH system has the appropriate
matching program.

C-Kermit from Columbia University (http://www.columbia.edu/kermit) is probably
the most universal way to transfer files in and out of SIMH systems.

If the SIMH system supports Ethernet connectivity (PDP-11, VAX), you can also
use the various network copy programs (FTP, DECNET) to transfer files.

Finally, you can "print" text files to the simulated line printer.  Printer
output is automatically formatted as an ASCII text file.

--------------------------------------------------------------------------------

2.8 How can I get binary files in and out of SIMH?

Since SIMH supports the universal serial interface using TELNET, binary
files can be transferred using one of the serial line transfer protocols
(X/Y/ZModem, Kermit) or by converting the binary to a text-encoded file
(HEXify, UUENCODE, VMShare, etc.) and transferred in text mode (see section
2.7).

Many TELNET programs also support transferring large files via X/Y/ZModem or
Kermit, which you can use as long as the SIMH system has the appropriate
matching program.

C-Kermit from Columbia University (http://www.columbia.edu/kermit) is probably
the most universal way to transfer files in and out of SIMH systems.

If the SIMH system supports Ethernet connectivity (PDP-11, VAX), you can also
use the various network copy programs (FTP, DECNET) to transfer files.

--------------------------------------------------------------------------------

2.9 Can I connect real devices on the host computer to SIMH?

At the moment, Ethernet is the only supported real device.

--------------------------------------------------------------------------------

2.10 My Windows host can't communicate with the PDP-11 or VAX over Ethernet; why?

Due to the inherent limitations of WinPCAP, the SIMH system _CANNOT_ communicate
with the host on the primary interface.  To establish communications between SIMH
and a PC host, add a second Ethernet controller, attach both controllers to the
same hub, and attach SIMH to the second controller.  The host and SIMH will now
be able to communicate across the physical network connection.

================================================================================
3 Writing and Debugging New Code
================================================================================

3.1 What resources are available for writing new simulators?

The SIMH web site contains documentation on the internals of SIMH, as well
as specific help for writing new peripherals for several of the popular
simulators.

--------------------------------------------------------------------------------

3.2 What debugging facilities are available in SIMH?

Most simulators provide the following debugging capabilities:

- Symbolic assembly and disassembly of memory contents.
- Numeric examination and modification of the data store of any simulated
  device.
- Numeric search on both memory and device data.
- Visibility to simulator internal structures, such as the event queue.
- An unlimited number of instruction breakpoints.
- Proceed counts on breakpoints.
- Automatic execution of simulator commands on a breakpoint.
- Stepped execution (from single step to 'n' steps).
- A PC change queue, usually 64 instructions deep.

Specific simulators may provide additional features, such as an instruction
history buffer, CPU and/or device logging, and breakpoints on memory reads
and writes.

--------------------------------------------------------------------------------

3.3 When do I need to use the host debugger for debugging a simulator?

While a simulator is being debugged, its execution of instructions
or debugging support code may be unreliable.  During this process,
the programmer may need to use the host debugger to stop in the
middle of an instruction execution, or to trap an error condition.
Host debugger breakpoints should be invisible to the simulator; with
the exception of clock calibration, all simulator events are driven
off the event queue rather than real-world events.

If the programmer needs to force a simulator stop from the host
debugger, most simulators provide an "address stop" global variable.
Setting this variable to 1 will cause the simulator to stop after
completing the current instruction.

--------------------------------------------------------------------------------

3.4 What is the release process for SIMH?

SIMH is released whenever a significant number of new features, or
important bug fixes, has accumulated.  This has averaged every 4-8
weeks.  The major version number only changes when there is a major
restructuring of SIMH's internal structures.  The minor version number
is changed when the format of the save/restore file must be updated.

================================================================================
4 VAX
================================================================================

4.1 Where can I get software and hobbyist licenses for the VAX?

HP (formerly Compaq formerly DEC) provides licenses to OpenVMS for
hobbyist use.  A description of the hobbyist license program can be
found on http://www.montagar.com/hobbyist/.

--------------------------------------------------------------------------------

4.2 How do I install VMS?

To install VMS, you will need a distribution CD ROM.  Any version
after VMS 5.5-2 should run on the simulator.

- Transcribe the distribution CD ROM to an ISO-format CD image file.
  (See question 2.5 for information on how to do this.)
- Set drive RQ1 to be a CD ROM.
- Attach the CD ROM image file to simulated drive RQ1.
- Set drive RQ0 to be the type of disk you want.  Be sure that the
  disk is large enough to hold VMS.
- Attach a blank disk image file to simulated drive RQ0.
- Boot the CPU.
- When the self-test code completes, boot the CD ROM.
- Use standalone backup to restore the CD ROM contents to the simulated
  disk.

	sim> set rq0 rd54
	sim> set rq1 cdrom
	sim> att rq0 new_vms.dsk
	sim> att rq1 cd_rom_image.iso
	sim> boot cpu
	:
	>>> boot rq1

	$ (prompt from standalone backup)

A writeup on the procedure can be found on the VMS hobbyist site.

--------------------------------------------------------------------------------

4.3 How do I install NetBSD?

Directions for installing NetBSD on the NetBSD web site, at
http://www.netbsd.org/Ports/vax/emulator-howto.html.

--------------------------------------------------------------------------------

4.4 How do I install Ultrix?

Ultrix is not presently licensed for hobbyist use.  If you have a
valid license for Ultrix, and distribution tapes for a version that
supports the MicroVAX 3900 series (V4 or later), then you should
be able to install Ultrix on the simulator.

- Transcribe the distribution tapes to SIMH-format tape image files.
  (See question 2.6 for information on how to do this.)
- Mount the installation tape image on simulated drive TQ0.
- Set drive RQ0 to be the type of disk you want.  Be sure that the
  disk is large enough to hold Ultrix.
- Mount a blank disk image file on simulated drive RQ0.
- Boot the CPU.
- When the self-test code completes, boot the installation tape.
- The installation tape will guide you through the installation of
  Ultrix.

	sim> set rq0 rd54
	sim> att rq0 new_vms.dsk
	sim> att tq0 ultrix_install.tap
	sim> boot cpu
	:
	>>> boot mua0

	(Ultrix installation dialog)

---------------------------------------------------------------------------------

4.5 What's the CPU serial number for my hobbyist license PAK?

On a MicroVAX 3900, the CPU serial number is not readable and can
be an arbitrary value.  12345 will work fine.

---------------------------------------------------------------------------------

4.6 How do I change the simulator from a VAXserver 3900 to a MicroVAX 3900?

The system type is controlled by a "magic byte" in the CPU's boot ROM.
By default, the system type is a VAXserver 3900.  To change the type
to a MicroVAX 3900, patch the boot ROM as follows:

	sim> set ptr ena
	sim> att ptr ka655.bin
	sim> ie ptr 4
	4:	2	1
	sim> det ptr

and reboot the simulated VAX.

---------------------------------------------------------------------------------

4.7 Is there an example of the simulator running VMS?

This example assumes you are trying to emulate a MicroVAX 3900 with 64MB of
memory, with a single 1GB disk drive, a CDROM, and an Ethernet controller.

The host OS is Windows NT/2000/XP, and you have previously dumped the contents
of the VMS Hobbyist CD to a disk file as detailed in 2.5, and have loaded
WinPCAP on the system for Ethernet support.  Other host OS's will look
similar but will have different file name syntax.

c:\simh> vax                         ; run VAX emulator
sim> set cpu 64m                     ; set memory size to 64MB
sim> load -r vax\ka655.bin           ; load the MicroVAX 3900 console ROM
sim> attach NVR vax\ka655.nvr        ; create/load a Non-Volatile RAM file
sim> set LPT disable                 ; disable devices we don't want/need
sim> set TQ disable                  ;   "
sim> set rq0 ra90                    ; set disk 0 to 1GB (RA90 size)
sim> attach rq0 vax\vaxsys.dsk       ; create/use disk file
sim> set rq1 rrd40                   ; set disk 1 as a cdrom
sim> attach -r rq1 vax\hobbyist.dsk  ; attach cdrom dump file as read-only
sim> set rq2 offline                 ; turn off disk rq2
sim> set rq3 offline                 ; turn off disk rq3
sim> attach xq eth0                  ; attach to host ethernet controller
sim> b cpu                           ; start (boot) VAX console

KA655-B V5.3, VMB 2.7
 1) Dansk                            ; will not appear if the controlling
    ..                               ; keyboard doesn't support multi-
15) Svenska                          ; national characters!
 (1..15): 5
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..30..29..28..27..26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..9..
8..7..6..5..4..3..
Tests completed.
>>> show device                      ; tell console to show all devices
UQSSP Disk Controller 0 (772150)
-DUA0 (RA90)
-DUA1 (RRD40)

Ethernet Adapter 0 (774440)
-XQA0 (08-00-2B-AA-BB-CC)
>>> b dua1                           ; tell console to boot cdrom
(BOOT/R5:1 DUA1)

2..1..0

---------------------------------------------------------------------------------

4.8 How can I import files to a simulated VMS environment?

- Use a CD burner program, like Easy CD Creator or Nero, to create an ISO 9660
  CD image containing the files you want to import.  Note that file names are
  limite to DOS '8.3' conventions.
- Attach the simulated CD image to a simulated CD drive.
- Mount the simulated CD as an ISO 9660 file system under VMS.
- Copy the files you need from the simulated CD to the simulated disk.

(Thanks to Tim Stark for this suggestion.)

---------------------------------------------------------------------------------

4.9 How can I export files from a simulated VMS environment?

- Utility ODS2 (available on the Web) can read an ODS-2 disk image and copy files
  from that image to the host file system.
- Text files can be printed to the simulated line printer, as described above.

================================================================================
5 PDP-11
================================================================================

5.1 When installing RSTS/E from simulated magtape, the installation process
    hangs with no error message; why?

- RSTS/E installation from magnetic tape requires that the tape be write locked.
