Skip to content
PDP-11 emulation
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
maindec
tvcon
11.h
1105.c
1120.c
LICENSE
Makefile
README.md
args.h
eae.c
ka11.c
ka11.h
kd11b.c
kd11b.h
kl11.c
kl11.h
kw11.c
kw11.h
mem.c
tv.c
tv.h
tv11.c
u_kb11a.c
ucode.inc
ucode.txt
ucode_bits.txt
ucode_notes.txt
util.c

README.md

This repo contains the source code for my PDP-11 emulation endeavours.

Contents

  • a PDP-11/05 cpu (KD11B) implemented from the microcode listing, but not emulating the actual microcode. Passing ZKAAA-ZKAMA. This is based on the code I wrote for the Knight TV emulation
  • a PDP-11/20 cpu (KA11) as a modified KD11B. Not implemented from the schematics (yet?). Passing ZKAAA-ZKAMA.
  • the beginnings of a PDP-11/45 (KB11A) cpu. Implemented from the schematics and running the microcode. This machine is a beast so it doesn't do a whole lot at all yet.
  • KL11 console
  • KW11 line clock
  • KE11 extended arithmetic unit implemented from the algorithm explanation in the manual. Not tested terribly well.
  • simple memory

Plan

What I'd like is accurate emulation of the early PDP-11 cpus, i.e. 11/05, 11/20, 11/40, 11/45, 11/70, and at least the most important peripherals. For the 11/45 and /70 (KB11 based) I want microcode emulation to drive a PiDP-11 panel super duper accurately. For the other machines microcode emulation would be interesting as well but it's not quite as important to me.

Another goal is to have these work on an actual Unibus with Jörg Hoppe's Unibone. In fact, the 11/20 was made to work in a couple of hours when we noticed we had implemented almost the same unibus interface and could just hook up my code as a unibone device.

Notes

The style in which I've written the KA11 and KD11B is a bit idiosyncratic. The idea was to try and see how compact the code could be. I have to say I like it but apologize if you don't.

To-do

  • implement DATIP for the Unibone
  • introduce #ifdef UNIBONE so we can maintain the code in one repo
You can’t perform that action at this time.