CDC 1700 Simulator | |
================== | |
1. Overview. | |
The CDC 1700 was a 16-bit mini-computer produced by the Control Data | |
Corporation with deliveries beginning in May 1966. | |
2. Hardware | |
This simulator provides support for a subset of available peripherals, | |
mostly from the early period of its release: | |
device name Hardware | |
CPU 1714 CPU with 4KW, 8KW, 16KW or 32KW of memory | |
1705 Multi-Level Interrupt and Direct Storage Access | |
Bus | |
Optional extensions: | |
64KW of memory with indirect addressing changes | |
Character addressing option | |
RTC 10336-1 Real-time clock | |
Default tick interval is 10mSec, can be changed with | |
"set rtc rate=<rate>" command, where <rate> is | |
{1usec|10usec|100usec|1msec|10msec|100msec|1second}. | |
[ Equipment address: 0xD] | |
DCA Data channels providing DMA access to non-DMA | |
DCB peripherals. The configuration is currently fixed | |
DCC with DCA providing access to the magtape controller | |
if it is configured as a 1732-A. | |
TTI 1711-A Half-duplex console terminal. | |
TTO [Equipment address: 0x1, Station address: 1] | |
PTR 1721-A Paper tape reader | |
[Equipment address: 0x1, Station address: 2] | |
PTP 1723-A Paper tape punch | |
[Equipment address: 0x1, Station address: 4] | |
MT 1732-A or 1732-3 Magtape controller, 3 9-track drives | |
(MT0 - MT2) and 1 7-track drive (MT3). The type of | |
the controller may be changed using the command | |
"set mt type={1732-A|1732-3}". The 1732-A controller | |
supports 200, 556 and 800 BPI on the 9 track drives | |
and allows DMA access via a 1706 Buffered Data | |
Channel (device DCA). The 1733-3 controller supports | |
556, 800 and 1600 BPI on the 9 track drives and | |
includes DSA (DMA) access built into the controller. | |
Access via a 1706 Buffered Data Channel is not | |
available. | |
[Equipment address: 0x7] | |
LP 1740 or 1742-30 Line printer (Upper case only). The | |
type of the printer may be changed with the command | |
"set lp type={1740|1742}; The 1742-30 is compatible | |
with the 1742-120 but not allow the print train | |
configuration to be loaded by software. | |
[Equipment address: 0x4] | |
DP 1738-B Disk pack controller. Supports up to 2 | |
disk pack drives: | |
853 drive - 3072000 bytes | |
854 drive - 6236160 bytes | |
[Equipment address: 0x3] | |
CDD 1733-2 Cartridge disk pack controller. Supports up to | |
4 cartridge disk drives. Each drive supports a fixed | |
and a removeable disk: | |
856-2 drive - 2260608 bytes | |
856-4 drive - 4543488 bytes | |
[Equipment address: 0x3] | |
DRM 1752 Drum memory controller with 64 - 1024 tracks of | |
drum memory (each track is 3072 words). | |
[Equipment address: 0x2] | |
Notes: | |
DP and CDD use the same equipment address so only 1 of them may be | |
enabled (default is for CDD to be enabled). | |
Both controllers use checkwords (CRC) for validating the consistency | |
of the data stored on disk. The DP controller exports a single status | |
bit indicating whether the checkword is valid or not (the simulator | |
always sets this to valid). The CDD controller also exports a single | |
status bit which is handled in the same way as the DP controller. | |
It also makes the actual checkword value available. The simulator | |
always returns a checkword value of 0 so any attempt to verify the | |
checkword (such as some diagnostics) will fail. | |
3. Loading Software | |
The simulator implements 2 mechanisms for loading software which | |
follow the hardware mechanisms provided by the real hardware: | |
- Magtape bootstraps toggled in through the front panel | |
- Autoload mechanism for disk drives | |
3.1 Magtape bootstraps | |
Software may be loaded from a magtape drive by using the SIMH command | |
"boot mtx" (currently only drive 0 is supported) which loads an appropriate | |
bootstrap into memory. This bootstrap loads the next record from the tape and | |
starts execution of the loaded code. | |
3.1.1 Default bootstrap | |
The default bootstrap is used for loading operating system distribution | |
tapes and is loaded at location 0. Register A is set according to the amount | |
os memory installed in the system: | |
- 0x5000 if 32KW or greater is installed | |
- 0x4000 if 24KW or 28KW is installed | |
- 0x2000 if less than 24KW is installed | |
3.1.2 SMM17 bootstrap | |
SMM17 is the System Maintenance Monitor and uses a tailored bootstrap | |
which is loaded into the highest addressed 4KW module installed in the system. | |
The following switches may be used with the "boot" command for special | |
handling: | |
-S load the SMM17 bootstrap rather than the default bootstrap | |
-D configure the SMM17 bootstrap to use Buffered Data Channel #1 | |
to access the magtape controller | |
3.2 Disk autoload | |
The autoload mechanism loads track 0 from logical drive 0 of a disk or | |
drum controller to memory location 0, it does not start execution of the loaded | |
code (some of the diagnostics code relies on this). DP, CDD and DRM controllers | |
support the autoload command ("autoload dp", "autoload cdd" or "autoload drm") | |
which is normally followed by a "run 0" command to start execution of the | |
loaded code. | |
4. Operating The Simulator | |
4.1 CPU | |
The control panel of a physical CDC 1700 system has a number of | |
switches which control the operation of the CPU. In the simulator, these | |
switches can be turned on and off with the commands "set cpu xxx" and | |
"set cpu noxxx". By default, all the switches are off. | |
4.1.1 Selective Stop (set cpu sstop/nosstop) | |
The Selective Stop switch controls how the "Selective Stop (SLS)" | |
instruction executes. If the switch is Off, SLS executes as a no-operation. | |
If the switch is On, SLS executes as a halt instruction. Continuing after | |
the halt causes the CPU to execute the instruction following SLS. | |
4.1.2 Selective Skip (set cpu sskip/nosskip) | |
The Selective Skip switch controls how the SWS and SWN skip | |
instruction execute. SWS will skip if the switch is set and SWN will skip if | |
the switch is not set. Both the Selective Stop and Selective Skip switches | |
are used extensively to control execution of the System Maintenance Monitor. | |
4.1.3 Protect (set cpu protect/noprotect) | |
Each word of memory on the CDC 1700 series consists of 18-bits; 16-bits | |
of data/instructions, a parity bit (which is not implemented in the simulator) | |
and a program protect bit. If the Protect switch is Off, any program may | |
reference any word of memory. If the Protect switch is On, there are a set of | |
rules which control how memory accesses work and when to generate a program | |
protect violation - see one of the 1700 reference manuals on bitsavers.org for | |
exact details. | |
The simulator fully implements CPU protect mode allowing protected | |
operating systems such as MSOS 5 to execute. It does not support peripheral | |
protect operation which allows unprotected programs to directly access | |
some unprotected peripherals. | |
Operating systems and other programs which run with the Protect | |
switch on usually start up with the Protect switch off, manipulate the | |
protect bits in memory (using the CPB/SPB instructions) and then ask the | |
operator to set the Protect switch on. | |
4.2 Teletype | |
The console teletype on some of the earlier models of the CDC 1700 | |
series had a "Manual Interrupt" button so that the operator could get the | |
attention of the operating system. Later models used a display terminal and | |
used the "Control+G" key conbination to generate a Manual Interrupt. The | |
Simulator follows this convention of using the "Control+G" key combination. | |
The actual key combination may be changed by issuing the command | |
"deposit tti intrkey xx" where xx is desired key code in hex. | |
5. Software | |
There is some software available at bitsavers.org in the | |
bits/CDC/1700_Cyber18 directory, see CDC1700-Diagnostics.txt and | |
CDC1700-MSOS.txt for more details. | |
6. Cyber-18 | |
The CDC 1700 later morphed into the Cyber-18 series. This series | |
included an enhanced instruction set using unused bits from the 1700 | |
instruction encoding. The simulator can detect these instructions and can be | |
configured to stop if it tries to execute such an instruction | |
(set cpu debug=enhanced). Due to a lack of detailed documentation it it | |
unlikely that the enhanced instruction set will ever be completely implemented. |