PDP 8 OpenCores Build - douggilliland/Retro-Computers GitHub Wiki

Table of Contents

Background

The PDP-8 was one of the earliest minicomputers and was in use from the mid 1960s into the 1980s.

Because the PDP-8 was relatively inexpensive and was available in various forms for many years, the PDP-8 is remembered fondly by many programmers and engineers.

These PDP-8 builds run OS-8.

Builds

Hardware

Specific Builds

PDP-8 Core Features

This project implements a complete PDP-8 system. The system includes the many of the basic PDP-8 peripherals including:

  • Configurable PDP-8 CPU
  • MS8C 32K-word memory
  • KC8E Front Panel
  • KE8 Extended Arithmetic Element
  • KM8E Extended Memory
  • KM8E Time Sharing
  • DK8EA/DK8EC/DK8EP Real Time Clock
  • KL8E Asynchronous Serial Interface (x2)
  • LS8E Printer Interface
  • PR8E Paper Tape Reader
  • KL8E Disk Controller with 4 RK05 Disks Attached

Features

PDP-8 CPU

In this FPGA implementation, the PDP-8 CPU can be configured to emulate the instruction execution of a PDP-8 (Straight-8), PDP-8/S, PDP-8/S, PDP-8/I, PDP-8/L, PDP-8/E/F/M, PDP-8/A, HD-6100, or a HD-6120.

The CPU does not attempt to emulate the execution of any particular PDP-8 implementation. The clock rate is different, the number of clock cycles per instruction is different, and the bus implementation is different.

Just for fun, the CPU incorporates a single cycle multiplier and a single cycle barrel shifter (currently disabled).

CPU Types

swPDP8   --! Straight Eight
swPDP8S  --! PDP-8/S
swPDP8I  --! PDP-8/I
swPDP8L  --! PDP-8/L
swPDP8E  --! PDP-8/E/F/M
swPDP8F  --! PDP-8/E/F/M
swPDP8M  --! PDP-8/E/F/M
swPDP8A  --! PDP-8/A
swHD6100 --! HD6100
swHD6120 --! HD6120

MS8C 32K-Word Memory

The system includes 32K-Words of memory. Unlike normal RAM memory, the FPGA memory can be initialized at power-up. The memory is in this system initialized with the RK8E Bootstrap program at location 0023, the BIN Loader at location 7626 and the RIM Loader at 7756.

You can initialize the memory to all zeros if you are old-school and feel the need to use the front panel to toggle-in the boot loaders.

KC8E Front Panel

This device provides an interface to the front panel switches and LEDs that were present on the PDP-8/E front panel.

KE8 Extended Arithmetic Element

The PDP-8 Extended Arithmetic Element (EAE) provides optional advanced mathematics capabilities. The EAE is used to perform 23-bit floating-point and 24-bit integer operations. The EAE provides 24-bit add, subtract, load, store, multiply, divide, normalize, increment, complement, shift, and rotate instructions.

The KE8 EAE can be disabled.

KM8E Extended Memory

The basic PDP-8 architecture provided a 4K-word address space. The KM8E provides a memory extension mechanism that allows the PDP-8 address 32K-words of memory.

The KM8E Extended Memory can be disabled.

KM8E Time Sharing

The KM8E time-sharing mechanism allows the CPU to operate in either Executive Mode or User Mode. In User Mode, instructions that could effect the operation of another program generate a User Mode Interrupt so that the operating system can handle the instruction correctly.

The KM8E Time Sharing can be disabled.

DK8EA/DK8EA/DK8EP Real Time Clock

The Real Time Clock (RTC) is used to create periodic interrupts to the processor. The RTC can be configured to operate in the following modes:

  • 1 Hz (DK8-EC)
  • 50 Hz (DK8-EC)
  • 100 Hz (DK8-EA as if 50 Hz primary power is applied)
  • 120 Hz (DK8-EA as if 60 Hz primary power is applied)
  • 500 Hz (DK8-EC)
  • 5 KHz (DK8-EC)
  • Var (DK8-EP)
  • Var (DK8-ES)
All timing is generated from the on-board crystal oscillator

KL8E Asynchronous Serial Interface

The system provides two serial interfaces.

Some of my builds include an ANSI Terminal. Jumper J3-1/2 select Serial or VDU (Installed=Serial, Removed=VDU).

Serial Port Baud rates

uartBR1200   --! 1200 Baud
uartBR2400   --! 2400 Baud
uartBR4800   --! 4800 Baud
uartBR9600   --! 9600 Baud
uartBR19200  --! 19200 Baud
uartBR38400  --! 38400 Baud
uartBR57600  --! 57600 Baud
uartBR115200 --! 115200 Baud

LS8E Printer Interface

The LS8E device provides an interface to a serial printer. The device can provide hardware handshaking or XON/XOFF handshaking with the printer without software support.

PR8E Paper Tape Reader

The PR8E device provides an interface to a serial paper tape reader such as the Decitek 760. The device can provide hardware handshaking or XON/XOFF handshaking with the paper tape reader without software support.

KL8E Disk Controller

The Disk Controller is designed to 'front end' a Secure Digital disk chip which behaves as if it were four RK05 Disk Drives. The disk format is the same as SIMH so all of the SIMH disk images may be reused without change.

Status

The system passes all relevant diagnostics (MAINDECs) with the exception of the RK8E Disk Controller.

The system boots OS/8 and runs all applications.

Other Builds

⚠️ **GitHub.com Fallback** ⚠️