# Additional Function

Since this is a simulation of an Elliott 803, not a real computer, it is possible to provide some additional useful function, that can help show the working of the computer, help with programming and help with debugging.

The following extra function is provided:

- Hardware Visualisation
- Core Dump Facility
- Instruction Trace Facility
- Simulator Control Device
- Random Number Generator Device

## Hardware Visualisation

The simulator's interactive interface has a number of windows that show the state of the various hardware components. This includes a view of the state of the CPU and Core Store components, as well as the more obvious items such as the output teletype.

In addition the PC sound interface is used to produce authentic sounds from the console speaker.

### Performance Notes

The constant updates that need to be made to the visualisation as processing proceeds do impose a significant performance penalty. This is particularly true of the CPU and Core Store views, since these must be updated after the execution of every single machine instruction.

Performance of the simulation, when not running in real time mode, can be greatly improved if the CPU and/or the Core Store windows are minimized.

In addition a fairly fast PC is needed to produce good quality accurate sounds. On a slower PC, if the sound is poor, it is best to disable it by setting the Operator Console volume control to zero or starting the program with the`-volume 0` option.

## Debug Functions

The simulator is able to produce a core dump (which includes the current CPU register values) and an instruction trace.

### Core Dump

The core dump is a snapshot image containing the current CPU registers and flags and the complete 8K words of store.

Core dumps can be produced using the special control device instructions (from within a running program), by pressing the Dump button on the CPU display window or by command parameters on some execution commands.

Core dump files are named something like `elliott‑yyyyMMdd‑HHmmss‑SSS.core` and are in an internal and compressed format. The files can be formatted using the Core File Formatter utility.

### Instruction Trace

The instruction trace contains a log of each (pair) of instructions executed by the CPU together with the accumulator and some other important CPU status values.

Instruction trace can be enabled and disabled using the special control device instructions (from within a running program), by selecting the Trace setting on the CPU display window or by command parameters on some execution commands.

Instruction trace files are named something like `elliott‑yyyyMMdd‑HHmmss‑SSS.trace` and are in an internal and compressed format. The files can be formatted using the Instruction Trace Formatter utility.

Note: instructions traces can be large, especially if you end up tracing a tight spin-loop!

## Additional Devices

The 803 architecture and instruction set enable additional devices to be attached to the machine fairly easily. These can be handled using the 72 and 75 instructions for what I call the Control devices and the additional 76 and 77 instructions for the Block devices.

In the simulator I have included two additional control devices that respond to 72 or 75 instructions with specific addresses. These are a simulator control device and a random number generator device.

### Simulator Control Device

The simulator control device allows 803 programs to control some of the simulator function by executing special 72 instructions. The instructions provided are:

72 8191 | Stop CPU and exit or return to "Step by step" mode.
72 8190 | Produce a core dump.
72 8189 | Enable instruction trace.
72 8188 | Disable instruction trace.

### Random Number Generator Device

The random number generator device will write a random positive integer to the accumulator by executing a special 75 instruction.

75 8000 | Write random 38 bit (positive) integer to the accumulator.

Tim Baldwin December 2013 tjb803@tinymail.co.uk | Return to index © Tim Baldwin 2009,2013