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.
