Skip to the content
2 layers131.7 × 80 mmKm1105, the printed circuit board in 3D

PDP-11 KM11 maintenance module, using an LCD screen

Size
131.7 × 80 mm
Copper layers
2
Thickness
1.6 mm
Parts
46
Nets
114
Pads
354
Tracks, vias
2,135, 215
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
28 Jul 2026
Updated
17 Oct 2026

Overview

Km1105 is an open-source printed circuit board by fjalvingh, from the fjalvingh/km11 repository on GitHub. It is a 2-layer board of 131.7 × 80 mm with 46 parts on 114 nets, routed with 2,135 tracks and 215 vias.

It is built around the ATTINY1616-SN, SN74LVC245APW and PCF8574T, with the 74ACT00SC and BC547 among its other parts. Its parts include 12 capacitors, 10 resistors, 10 ICs, 5 connectors and 2 diodes. It belongs with the lEDs and displays boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

5

README

README.md

Pdp-11 KM11 Maintenance Module with LCD screen

This is supposed to become a KM11 maintenance module. It is a 2 slot card which should be placed in both KM11 slots of a PDP 11/05 or 11/10. It uses an ATTINY1616 (or 3216 if I cannot make the code fit) and a set of i2c I/O adapters (PCF8574T) to read the data from both slots for the KM11, and writes those to an LCD screen, offset on a cable.

The main PCB must be placed in the PDP 11/05. The LCD display and the switches sit on a second, small PCB (kicad/kmdisp) at the end of a 20-way ribbon cable, so they can be outside the pdp/11 in the 3D-printed console from 3d/.

The final version, in its 3d printed housing

Hardware

The board uses:

  • An ATTINY1616 (or ATTINY3216) as the controller
  • Six PCF8574T I2C extenders to connect to both KM11 slots
  • A 1.8" 160x128 LCD display to show the data

Schematic and PCB views, version 1.1

The first version had some small issues which were repaired in this version.

schematic

Display and switches board

The schematic for the display and switches board which resides in the housing

The PCB for the display and switches board

Code

The code was partially created by Claude, and does not use the usual libraries to save space in the Flash memory of the ATTINY1616 as it only has 16K. The code directly accesses registers to control both the ST7735 LCD controller and the I2C extenders, and contains three fonts (5x7, 8x14 and 8x16).

At the time of writing the code takes about 9.3KB of the 16KB Flash available.

The code is a loop that reads all six extenders about ten times a second and repaints only what changed. The screen looks as follows:

The screen, on a PDP 11/05 halting on the console

What the screen shows

text
CUR 301 H-1
AMUX 000000
SPAD R7  PC  spwr
ALU SF M c A
EALU butir msyn
auxc butjj ssyn
cnst butun bbsy
E OK        dati=0
MPC 302 H-2
  • CUR – the microstep whose signals are on the rest of the screen (octal), with DEC's name for it as used in the microprogram flow charts. No lamp shows this: the firmware learns it from the MPC before a single step, so it reads -- until it has seen one, and again while the clock runs.
  • AMUX – the 16-bit data path (octal).
  • SPAD – the scratchpad register being addressed, numbered as DEC does (R0–R17), with its use: SP, PC, SRC (R10), DST (R11), VEC (R12) or LAD (R17). Then SPWR, the scratchpad write.
  • ALU – S, the raw S3–S0 function select (hex), then M (mode) and C (carry in), then the 74181 function they select (for example A+B+1). The function is grey when EALU is off, because then the ALU result does not reach the AMUX.
  • Flags, in three columns: ALU/data path (EALU, AUXC, CNST), the microprogram branch tests (BUTIR, BUTJJ, BUTUN), and the Unibus (MSYN, SSYN, BBSY). Below the Unibus column is the bus cycle from C1/C0 with its code: DATI=0, DATIP=1, DATO=2, DATOB=3. The cycle name is lit while MSYN is asserted.
  • MPC – the microprogram counter (octal), with its name. This is the next microstep, not the one whose signals are on the rest of the screen (KD11-B manual EK-KD11B-MM-001, 5.9).
  • Status (below the first flag column) – the microcode revision and the result of the microcode check (see below). A red I2C: followed by U numbers replaces it when an extender does not answer; the values that extender supplies are then not real.

Signals that are active low on the backplane (and shown dim on the original KM11, like the MPC and ALU S) are inverted first, so everything on the screen is the logical value. Single signals are yellow and upper case when asserted, red and lower case when negated.

Colours that mark a value:

  • dark blue background – changed since the machine last moved. When single stepping, this shows what the last step did, and it stays until the next step.
  • white on red – does not match the microcode listing (see below).

Microcode check

While the processor is single stepped (M CLK ENABLE on, M CLK PULSE to step), the firmware compares the lamps with DEC's microcode listing for the microword that just executed. It checks ALU S/M/C, the scratchpad address, the four BUT lamps and AUXC. The status shows:

StatusMeaning
E OK / F OKthe lamps match the listing
E BADsome lamps do not match; they are drawn white on red
SEQ?the MPC moved to an address the previous microword cannot branch to; the MPC turns red
--nothing to check: no step seen yet, or the clock is running

The first letter is the microcode revision of the M7261: E (1973) or F (1976), or ? until it is known. The card finds out by itself. The two revisions differ only in 14 microwords, and the first time a step passes one of them, the AUXC lamp shows which revision is installed. Unary instructions (CLR, INC, COM…) pass them. The revision is kept in the ATtiny's EEPROM. make REV=E eeprom, make REV=F eeprom or make REV=AUTO eeprom sets or forgets it. Uploading new firmware erases it, and it is learnt again.

The four switches are BUS SSYN, AC LO, M CLK PULSE (STEP) and M CLK ENABLE. The AC LO one sits on the KM11 pin the 11/20 used for NO TIMEOUT, and the net is still called TIMEOUT_H for that reason; on the 11/05 throwing it asserts BUS AC LO and starts the power-fail sequence.

review.md records the September 2026 check of the design and firmware against DEC's own documentation, with the sources.

Help with microcode debugging

The PDP 11/05 microcode for Rev.E and Rev.F can be browsed easily using the microcode browser for the PDP 11/05.

Programming

To program the ATTINY1616 please follow the setup and instructions from my 8bit bus display tool. The source code is under src/. Two steps to do for a build:

  • Use make to build the code, then
  • Use make upload to upload the code to the board (with the programmer connected, obviously).

The prototype

I made a small test setup to test driving the display:

test setup

The initial idea was to use a fancy 2.25 landscape mode LCD to show the info, but after almost 4 hours of testing and messing around with the code I gave up, I assume the display I got was defective. I was not helped by the fact that the second display tested, now the 1.8" display, was ALSO found to be defective, wasting another few hours. In the end I proved that of the 5 1.8" displays I have 1 was defective, and I had to pick that one for the test, obviously. Murphy in full working order.

The first version in an actual PDP 11/10 (same as 11/05)

The V1 version in a PDP 11/10. This does not yet have its housing.

More closeup:

The old style display. On the side you can see the M7261 board on an extender The microcode PC is at 302oct, which is H-2, part of the HALT instruction.

Errata

The KM11 schematic in the 1973 manual shows V1 for M CLK L, the single step clock pulse. But this should be U1. The reproduction by Tony Duell properly names U1 in the ascii art schematic for S4, but misnames it as J1 in the text.

In addition the S4 remark in the same thing seems to be wrong: the clock switch should be connected the other way around (i.e. latched upward in that schematic).

Parts

46
QtyValueFootprintReferences
9100nFCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C5, C6, C7, C9, C12
81KResistor_SMD:R_0805_2012MetricR4, R5, R6, R7, R8, R9, R10, R11
6PCF8574TPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmU2, U3, U4, U5, U6, U7
4~MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
210uFCapacitor_SMD:CP_Elec_4x4.5C10, C11
24.7kResistor_SMD:R_0805_2012MetricR1, R2
1+3V_LEDLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderD2
1100uFCapacitor_SMD:CP_Elec_6.3x7.7C8
174ACT00SCPackage_SO:SO-14_3.9x8.65mm_P1.27mmU8
1ATtiny1616-SPackage_SO:SOIC-20W_7.5x12.8mm_P1.27mmU1
1BC547Package_TO_SOT_THT:TO-92_InlineQ1
1CONN-DEC-DOUBLEDEC-FLIP-CHIP:CONN-DEC-DOUBLEJ1
1Jumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1
1LD1117S33TR_SOT223Package_TO_SOT_SMD:SOT-223-3_TabPin2U9
1LOGOLOGOG***
1PWRLEDLED_SMD:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolderD1
1SN74LVC245APWPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU10
1display_switches_hdrConnector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_VerticalJ2
1la_01Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ4
1la_02Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_VerticalJ5
1pgm_hdrConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3

More from fjalvingh/km11

1
  • 2 layers59.4 × 35.8 mmKmdisp, the printed circuit board in 3D

    Kmdisp

    fjalvingh/km11

    PDP-11 KM11 maintenance module, using an LCD screen

    9 parts

Similar boards

  • 2 layers66 × 80.3 mmProg TPSI controller, the printed circuit board in 3D

    Prog TPSI controller

    alan05code/Distributore

    Distributore Smart | Progetto Scolastico 2023/2024 | Client (PCB) + Server(RaspBerry) + SitoWeb(HTML/CSS/JavaScript) + Simulazione(Python)

    49 parts
  • 2 layers110 × 62.5 mmTimer, the printed circuit board in 3D

    Timer

    crisap94/Timer-PCB

    Timer board Using Attiny85 as brain.

    36 parts
  • 2 layersMACH THUC, the printed circuit board in 3D

    MACH THUC

    VM-Thuan-2003/do_an_1

    66 parts
  • 2 layers50.8 × 50.8 mmDC2026 LASIR, the printed circuit board in 3D

    DC2026 LASIR

    CmdrZin/chips_avr_examples

    AVR assembly and C code for robotics and other projects.

    38 parts6MIT
  • 4 layers174 × 29 mmOneWheelBMS, the printed circuit board in 3D

    OneWheelBMS

    ocornu/OneWheelBMS

    Open source BMS for OneWheel v1/plus

    98 parts3MIT
  • 2 layers25.4 × 28.8 mmKicad linear, the printed circuit board in 3D

    Kicad linear

    fjalvingh/8bit-busdisplay

    PCB for showing an 8 bit hex number from a 5V bus on a 7-segment display using an ATTINY1616

    7 parts1
  • 2 layers85.6 × 54 mmPersonalPCB BC, the printed circuit board in 3D

    PersonalPCB BC

    Bumb1eris/PCB_Business_Card

    A coin cell powered PCB business card that can play snake

    73 partsMIT

Questions

How big is the Km1105 PCB?

It measures 131.7 × 80 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Km1105 use?

46 parts, built around the ATTINY1616-SN, SN74LVC245APW, PCF8574T and 74ACT00SC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Km1105 KiCad files?

From the fjalvingh/km11 repository on GitHub, at the commit this page was made from: the board is kicad/km1105/km1105.kicad_pcb and its schematic kicad/km1105/km1105.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Km1105 design in my own project?

Its repository states no licence, so its author keeps all rights: ask fjalvingh before reusing the design.