PDP 8 OpenCores Build - douggilliland/Retro-Computers GitHub Wiki
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.
- Details of this build on Hackaday page
- Reference design PDP-8 from OpenCores
- Runs on Cyclone IV, CYCLONE V FPGA cards on RETRO-EP4CE15 board
- PDP-8 Front Panel
- PDP-8 on Cyclone IV - with Front Panel, Serial I/O
- PDP-8 on Cyclone IV - with Front Panel, VDU, Serial I/O
- PDP-8 on Cyclone V - with Front Panel, Serial I/O
- Front Panel Test code on Cyclone IV - Not a PDP-8 core, used to verify Front Panel Wiring
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
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).
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
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.
This device provides an interface to the front panel switches and LEDs that were present on the PDP-8/E front panel.
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.
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.
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.
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)
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).
uartBR1200 --! 1200 Baud uartBR2400 --! 2400 Baud uartBR4800 --! 4800 Baud uartBR9600 --! 9600 Baud uartBR19200 --! 19200 Baud uartBR38400 --! 38400 Baud uartBR57600 --! 57600 Baud uartBR115200 --! 115200 Baud
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.
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.
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.
The system passes all relevant diagnostics (MAINDECs) with the exception of the RK8E Disk Controller.
The system boots OS/8 and runs all applications.
- Pito's build and debug - Helpful
- DEC Tape Images