This emulator supports two different console interfaces. One uses X-windows to draw a fair imitation of the front panel of a PDP-8/E computer; the other uses the console terminal for all front panel functions. Both versions use standard UNIX low-level I/O to access the console terminal, they are likely to be a bit difficult to port to non-UNIX systems. They run well enough on the UNIX boxes I've tried it on (a SPARC, an IBM RT and an IBM RS 6000).
Reports from Tom Karlsson
The console "front panel" interface to this emulator is teletype based,
using a small subset of ODT. The following commands work:
When the machine halts, it will print "ppppp (aaaa", the current
program counter and accumulator contents.
A 630x300 window will appear on the screen, with artwork resembling the
front panel of a PDP-8/E. (known bug: If the artwork fails to appear,
iconify the window and then de-iconify it, or drag another window over it,
anything to force an expose event).
Along the bottom of the window are the switches of the PDP-8/E front panel
(click the mouse on one to toggle or press it). In the center are the
address and data display lights, and on top is a bar that toggles between
an approximation of DEC's original artwork and a menu of emulator control
functions. Clicking the mouse in this area allows you to see and change
what files are mounted on what emulated devices, to change the rate at
which the console light display is updated, and and to exit the emulator.
In general, the left mouse button (button 1) is used for emulator actions,
and clicking any other mouse button is interpreted as a help request. The
help features of the front panel should be sufficient to explain how to
use the front panel controls.
As a rule, while the emulator is running, the command window from which
the pdp8e command was entered will be used to emulate the console teletype,
but you can also shift the input focus to the front panel window, and
anything you type there will also be interpreted as console teletype input.
This is useful on systems which insist on mapping CR to LF no matter what.
Paper-tape files are 8 bit wide byte streams. It is up to the software
running on the emulator to interpret them as ASCII, BIN, RIM or any other
format.
RX01 diskette files must begin with the 4 letters "rx01" and they must
contain at least 256 characters. The next 251 bytes following the "rx01"
header are used for the bit-vector indicating which sectors are marked as
deleted (not that this is used anywhere). The last of the 256 header
bytes is reserved for the hardware interleave factor (and it is currently
ignored). The 128 byte sectors of the file follow this header, in
ascending order, starting with track 0, sector 1, then track 0 sector 2
and so on up to track 76 sector 26. Format-time interleaving (which can't
be done on the RX01 drive), if it is ever supported, will not change the
layout of the sectors, only the access times.
If, on a real machine, you would select an option by plugging in or
unplugging a board on the OMNIBUS backplane, you'd do it on the emulator by
editing the Makefile. The most important option this gives you is the
option of using the KC8E X-windows front panel or the KC8M teletype based
front panel emulator. Removing peripherals won't change the speed of the
emulator, but removing the KM8E memory management unit will make emulation
just a bit faster.
Any options you would have to change by fiddling with jumpers on a device
interface board on the real machine are selected in this emulator by editing
the source code. Specifically, the emulated baud rate of the console
terminal can be changed this way.
This emulator is unkind to timesharing systems! It runs as an infinite loop,
with no provision for reducing its load on the CPU while it waits for I/O
operations to finish. Other users will slow the emulator down, and you'll
bother them by taking every bit of CPU time you can get for as long as you
run it.
You can adjust the effective speed of all IO devices by tweeking the fudge
factor in the makefile. As distributed, the console terminal is set to
run at 110 baud, and you should tweek this fudge factor to make it run at
about 10 characters per second before you tweek any other device timings.
This will make all devices run at an apparent speed close to their real
speeds on DEC's hardware. Having done this, feel free to up the baud rate
on the console terminal to 9600 baud.
The makefile includes a debugging option. With this selected, a new
front panel command is exposed that will force the printing of a histogram
showing which instructions have been executed since the last such report
and which memory locations have been fetched from.
A Painfully Brief User's Manual -- Dumb terminal version
To run the emulator, type pdp8e (the default name for the emulator),
followed, optionally, by the name of the core image file to be used.
Alternately, mark a core-image file as executable, and then run that
file; it should automatically pull in the emulator.
When the emulator is running, it will not return to the "front panel"
until either the emulator hits a halt instruction or a sequence of 5
or so consecutive control C keys are typed (at any speed, but with no
intervening characters of any other kind). Single control C keys go
to whatever software is running on the emulator at the time.
The core is considered to be a device, and files may be mounted on it
the same way as on any other device.
A Painfully Brief User's Manual -- X-Windows version
To run the emulator, type pdp8e (the default name for the emulator),
followed, optionally, by the name of the core image file to be used.
Alternately, mark a core-image file as executable, and then run that
file; it should automatically pull in the emulator.
File Formats
Core files are in a simple variant of Charles Lasner's .IPL file format.
See the comments in the file utility.c for details.
A Painfully Brief Installation Manual
Once you have unpacked the shell archive, on a UNIX system, all you should
have to do is type make and the emulator will be compiled and linked under
the name pdp8e.