PDP-8-E Simulator



I am creating a replica of the DEC PDP-8/e architecture in an FPGA fromschematics of the original hardware. So how did I end up with a project likethis?

The story begins with me wanting to have a computer with one of those frontpanels that have many, many lights where you can really see, in real time, whatthe computer is doing while it is executing code. Not because I am nostalgicfor a prior experience with any of those — I was born a bit too late for thatand my first computer as a kid was a Commodore 64.

PDP-8-E Simulator

Pdp-8/e emulator. Contribute to wvdmark/pdp8 development by creating an account on GitHub. 1 Background Info (Ripped from Wikipedia) 1.1 Description 1.2 Input/Output 1.3 Software 2 Getting Started 2.1 Setting Up Your (Virtual) PDP 2.2 Getting Software 2.3 Starting Up 3 Exploring Your PDP-8 Environment 4 Further Reading The PDP-8 was the first successful commercial minicomputer, produced by Digital Equipment Corporation (DEC) in the 1960s. It was introduced on March 22, 1965 1.

Now, the front panel era ended around 40 years ago with the advent ofmicroprocessors and computers of that age and older that are complete andworking are hard to find and not cheap. And even if you do, there’s the issueof weight, size (complete systems with peripherals fill at least a rack) andpower consumption. So what to do — build myself a small one with moderntechnology of course.

While there’s many computer architectures of that era to choose from, thevarious PDP machines by DEC are significant and well known (and documented) dueto their large numbers. The most important are probably the 12 bit PDP-8, the 16bit PDP-11 and the 36 bit PDP-10. While the PDP-11 is enticing because of thepossibility to run UNIX I wanted to start with something simpler, so I chose thePDP-8.

The Original

DEC started the PDP-8 line of computers programmed data processors designedas low cost machines in 1965. It is a quite minimalist 12 bit architecture basedon the earlier PDP-5, and by minimalist I mean seriously minimal. If you arefamiliar with early 8 bit microprocessors like the 6502 or 8080 you will findthem luxuriously equipped in comparison.

Pdp 8 Simulator

The PDP-8 base architecture has a program counter (PC) and an accumulator(AC)1. That’s it. There are no pointer or index registers2.There is no stack. It has addition and AND instructions but subtractions and ORoperations have to be manually coded. The optional Extended Arithmetic Elementadds the MQ register but that’s really it for visible registers. The Wikipediapage on the PDP-8 has a good detaileddescription.

Regarding technology, the PDP-8 series has been in production long enough to getthe whole range of implementations from discrete transistor logic tomicroprocessors. The 8/e which I target was right in the middle, implementedin TTL logic where each IC contains multiple logic elements. This allowed theCPU itself (including timing generator) to fit on three large circuit boardsplugged into a backplane. Complete systems would have at least another board forthe front panel and multiple boards for the core memory, then additional boardsfor whatever options and peripherals were desired.

Design Choices and Comparisons

I’m not the only one who had the idea to build something like that, of course.Among the other modern PDP-8 implementations with a front panel, probably themost prominent project is the Spare Time GizmosSBC6120 which is aPDP-8 single board computer built around the Harris/Intersil HD-6120microprocessor, which implementes the PDP-8 architecture, combined with a nicefront panel. Another is thePiDP-8/I, which isanother nice front panel (modeled after the 8/i which has even more lights)driven by the simh simulator running underLinux on a Raspberry Pi.

My goal is to get front panel lights that appear exactly like the real ones inoperation. This necessitates driving the lights at full speed as they changewith every instruction or even within instructions for some display selections.For example, if you run a tight loop that does nothing but increment AC whiledisplaying that register, it would appear that all lights are lit at equal butless than full brightness. The reason is that the loop runs at such a high speedthat even the most significant bit, which is blinking the slowest, is too fastto see flicker. Hence they are all effectively 50% on, just at differentfrequencies, and appear to be constantly light at the same brightness.

This is where the other projects lack what I am looking for. The PiDP-8/I is amultiplexed display which updates at something like 30 Hz or 60 Hz, takingwhatever value is current in the simulation software at the time. All thestates the lights took inbetween are lost and consequently there is flickeringwhere there shouldn’t be. On the SBC6120 at least the address lines appear toupdate at full speed as these are the actual RAM address lines. However theused 6120 microprocessor does not have required data for the indicator displayexternally available. Instead, the SBC6120 runs an interrupt at 30 Hz to trapinto its firmware/monitor program which then reads the current state and writesit to the front panel display, which is essentially just another peripheral. Adifferent considerable problem with the SBC6120 is its use of the 6100microprocessor family ICs, which are themselves long out of production and nottrivial (or cheaply) to come by.

Given that the way to go is to drive all lights in step with everycycle3, this can be done by a software running on a dedicatedmicrocontroller — which is how I started — or by implementing a real CPU withall the needed outputs in an FPGA — which is the project I am writing about.

In the next post I give an overview of thehardware I built so far and some of the features that are yet to beimplemented.

  1. With an associated link bit which is a little different from a carry bit in that it is treated as a thirteenth bit, i.e. it will be flipped rather than set when a carry occurs. ↩︎

  2. Although there are 8 specially treated memory addresses that will pre-increment when used in indirect addressing. ↩︎

  3. Basic cycles on the PDP-8/e are 1.4 µs for memory modifying cycles and fast cycles of 1.2 µs for everything else. Instructions can be one to three cycles long. ↩︎

Other Software

for Macintosh Plus and Mini vMac

Create self-reading documents by printing from any application.

Standalone document maker.

For creating simple standalone slide shows of images or text.

Simulator

A “simple little text-based flashcard application.”

MacFlow (link)

Create flowcharts, organization charts, and more.

A collection of mini-applications.

Suite of desk accessories, for text editing, printing text files, terminal emulation, and charting.

For “generating soundex codes appropriate for looking up surnames in the US Census record etc.”

Scan folders for text files, and selectively change their creators.

“Makes any text file dropped on it into a BBedit text file.”

“A simple typing tutor” for Dvorak.

A “simple program which lets you password protect any file.”

Create “simple adventure games with graphics, buttons, and text.”

Compiles “Inform language into Infocom format story files” (Z-code).

“Interpreter for Z-code text adventures.”

“Interpreter for TADs text adventures.”

Interpreter for Glulx text adventures.

Set the file type of IF (interactive fiction) files.

Interpreter for Hugo interactive fiction adventures.

List upcoming interesting anniversaries of given date.

Log your time on your various projects.

A “countdown timer to keep track of ongoing tasks”.

A “metric / Internet time clock in your menu bar”

A “New Earth Time clock in your menu bar”

Chimes on the hour and half hour

A “simulation of a mechanical metronome”.

“Will compute loan payment, declining balance, and equity schedules”.

Apple DocViewer (link)

“Provides a standard way for Apple to distribute documentation to developers”.

HTML editor, which simultaneously displays source and result.

Converts text or RTF files into HTML format.

Pdp-8/e Simulator

“offline reader for Usenet newsgroups and Internet e-mail”

Construct and simulate logic circuits.

Simulates ‘visable computer’ with simple CPU and memory.

Animated Turing Machine simulation.

Illustrates “geometric transformation, hierarchical computer graphics modeling, and animation.”

Animated illustration of five sorting algorithms.

Animations that illustrate various computer algorithms, such as sorting methods.

Three Dimensional Modeler

Searches “for text in multiple files.”

a few common email text processing operations

“Converts the end-of-line code of text files”

“A drag-and-drop utility for converting text files” end-of-line code.

Search in files for a character and replace

Translate TeX or LaTeX files between 7 bit standard and 8 bit Macintosh.

Concatenates files.

Performs 'a ROT-13 conversion on whatever is in the Clipboard'.

Encrypts one file using a second file as the key.

A simple encryption program.

“calculate the checksum and CRC32 of any file”.

Checksum of a text file, stored in the file itself.

Allows you to “play, display, analyze, modify and save sound samples.”

“convert batches of sounds from one format to another”.

Collects information about sounds into a TEXT file.

Collects information about sounds. Superseeded by SndCataloguer.

Converts “Pict file into EPS file.”

“Simple version of Hyper Card”.

Assists in “creating an index for a book”.

Database “of family history and other genealogical information.”

A “GEDCOM-to-HTML conversion program”.

creating or solving crossword puzzles

Helps in solving crosswords.

Calculates the chance of winning Lotto.

A “recipe management tool”.

DYOH Architecture (link)

Drawing program customized for designing homes.

DYOH Landscape (link)

Drawing program customized for designing home landscapes.

Sprout! (link)

Drawing program customized for designing vegetable gardens.

“Drifts snowflakes down the screen”

“Program to scramble text”.

Determines whether the glider you design will fly

“Routines for the Handling of Space Group Symmetry”

“an artificial life simulator”

“Unix-like command line interface.”

MacMinix (link)

A simple unix like operating system for teaching.

“Models a microprogrammed processor”

An “emulator for the Digital Equipment PDP-8/E minicomputer”.

www.gryphel.com/c/sw/other - feedback
copyright (c) 2017 Paul C. Pratt - last update 9/6/2017