Skip to the content
PCBKitNew board
2 layersClassicsController, the printed circuit board in 3D

Breathe new life into your classic Williams pinball machine

Copper layers
2
Thickness
1.6 mm
Parts
43
Nets
308
Pads
521
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 6 (file 20211014)
Created
12 Dec 2022
Updated
21 Dec 2022

Overview

ClassicsController is an open-source printed circuit board by LegacyPinball, from the LegacyPinball/ClassicsController repository on GitHub. It is a 2-layer board with 43 parts on 308 nets.

It is built around the RP2040, W25Q128JVSIQ and SN74CBT16233DGGR, with the SN74CBT16245CDLR among its other parts. Its parts include 18 capacitors, 10 ICs, 6 resistors, 2 connectors and 2 switches. It belongs with the RP2040 boards of this library.

Main components

4

README

README.md

Legacy Pinball Classics Controller

Specifications:

  • Enables communication between Mission Pinball Frameworks (MPF) and 6808/6802 based Williams MPU Boards. Designed for System 6, with System 3-7 support coming soon.
  • Compatible with existing original or aftermarket MPU and Driver boards
  • Drop in replacement for MC6808 CPU IC1
  • USB Interface makes MPF computer connection easy, with a high retention USB-B connector

Planned:

  • Onboard 6808 socket enables true original code execution, switchable via Mission Pinball control
  • Enhanced hardware debugging via Classics Controller helps identify bad ROMs, RAM, PIAs, and more

Future:

  • MPU/Driver Emulation mode enables virtual memory space for 6808 which can be modified in real time, via the Bus Interconnect Matrix
  • 6808 Emulation mode eliminates the need for a real 6808 CPU

Hardware overview:

  • Classics Controller is comprised of a custom PCB hosting an onboard RP2040 with 2+MB flash, socketed 6808 with crystal, and bus interfacing ICs.
  • Optional USB isolation IC ADUM3160 and 5V-5V isolated module adds $20-$25 to BOM.
  • RP2040 communicates with the MPU bus using 2 Microchip MCP23S17 SPI GPIO expanders, adding an additional 32 pins for bus data, addressing, and bus logic (such as VMA, IRQ, NMI, Reset monitoring, and Φ2).
  • RP2040 interfaces with MCP23S17 via an 8 channel 3.3V to 5V bidirectional logic level translating buffer.
  • The RP2040 expander bus is 2:1 multiplexed with the real 6808 bus using 2 Texas Instruments SN74CBT16233DGGR, 16 channel bidirectional general purpose bus multiplexer (mux), providing a total of 32 channels of bus control.
  • The output of the 2:1 bus multiplexer is connected to 2 Texas Instruments SN74CBT16245C, a 16 channel bidirectional 1:1 bus switch, enabling the disconnect of the Classics Controller from the MPU bus. In conjunction with the "Test" inputs of the 2:1 bus mux, this allows the RP2040 to communicate directly with the 6808 without any interference from devices on MPU or Driver board. In the future, this can allow the RP2040 to emulate the MPU board and control the state of a live 6808 CPU.
  • Classics Controller connects to System 6 MPU via ribbon cable and 40 position 0.600" DIP IDC connector. The Classics Controller hosts a keyed, standard 2x20 2.54mm male header connector.

Simplified Hardware Diagrams

Overview:
mermaid
graph LR
PC([Computer Running MPF]) <--> |USB Cable| CC[Classics Controller]
CC --> MPU[System 6 MPU Board]
MPU --> DRV[Driver Board]
Address and Data Flow:
mermaid
graph TB
USB(USB) --> RP[RP2040]
RP --> BLT[Bidirectional Level Translator]
BLT --> MCP1[SPI GPIO Expander, Addr0x20]
BLT --> MCP2[SPI GPIO Expander, Addr0x22]
MCP1 --> MUX1[2:1 Multiplexer, 16CH]
6808 -->|Address 0:15| MUX1
6808 -->|Data 0:7 + Bus Control| MUX2
MCP2 --> MUX2[2:1 Multiplexer, 16CH]
MUX1 --> SW1[Bus Switch, 16CH]
MUX2 --> SW2[Bus Switch, 16CH]
SW1 --> RC[Ribbon Cable to MPU Board]
SW2 --> RC
Buffer Control:
mermaid
graph TB
RP2040 --> BLT[Bidirectional Level Translator]
BLT -->|A/B Switch + 'test'| MUX1[2:1 Multiplexer, 16CH]
BLT -->|En| SW1[Bus Switch, 16CH]
BLT -->|HALT| 6808
BLT -->|En| SW2[Bus Switch, 16CH]
BLT -->|A/B Switch + 'test'| MUX2[2:1 Multiplexer, 16CH]

Firmware Overview

The Firmware for the Legacy Pinball Classics Controller is written in MicroPython.

Both cores of the RP2040 are utilized:

Core 0:

  • Initializes USB Serial and SPI Component
  • Waits for a connection with MPF
  • Disables 6808
  • Implements serial protocol to communicate with MPU board
  • Manages locks and mailboxes
  • Schedules core 1

Core 1:

  • Abstracts address translation layer
  • Polls and writes to PIA on MPU and Driver Board
  • Handles bus control

Parts

43
QtyValueFootprintReferences
90.1uFCapacitor_SMD:C_0805_2012MetricC4, C5, C6, C7, C8, C9, C10, C11, C12
5CCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C15, C16
21uFCapacitor_SMD:C_0805_2012MetricC13, C14
227.4Resistor_SMD:R_0603_1608MetricR5, R6
227pFCapacitor_SMD:C_0805_2012MetricC17, C18
2MCP23S17_MLPackage_DFN_QFN:QFN-28-1EP_6x6mm_P0.65mm_EP4.25x4.25mmU5, U6
2SN74CBT16233DGGRPackage_SO:TSSOP-56_6.1x14mm_P0.5mmU7, U8
2SN74CBT16245CDLPackage_SO:SSOP-48_7.5x15.9mm_P0.635mmU9, U10
2SW_SPSTButton_Switch_SMD:SW_SPST_CK_RS282G05A3SW1, SW2
11kResistor_SMD:R_0603_1608MetricR2
13.3kResistor_SMD:R_0603_1608MetricR3
13.58MhzCrystal:Crystal_HC52-U_VerticalY1
1330Resistor_SMD:R_0603_1608MetricR4
1Conn_02x20_Counter_ClockwiseConnector_IDC:IDC-Header_2x20_P2.54mm_VerticalJ2
1DNPResistor_SMD:R_0603_1608MetricR1
1D_SchottkyDiode_SMD:D_1206_3216MetricD1
1FerriteBeadInductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolderFB1
1Jumper_2_OpenConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1MC6802Package_DIP:DIP-40_W15.24mmU1
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU2
1SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP2
1TXB0108PWRPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU4
1USB_BConnector_USB:USB_B_OST_USB-B1HSxx_HorizontalJ1
1W25Q128JVSPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU3

Questions

What parts does the ClassicsController use?

43 parts, built around the RP2040, W25Q128JVSIQ, SN74CBT16233DGGR and SN74CBT16245CDLR. 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 ClassicsController KiCad files?

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

Can I use the ClassicsController design in my own project?

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

Similar boards

  • 2 layers199.4 × 106.2 mmAlu, the printed circuit board in 3D

    Alu

    joshop/risc16asm

    194 parts2
  • 2 layers42 × 67 mmLalboard, the printed circuit board in 3D

    Lalboard

    JesusFreke/lalboard

    A 3D-printed keyboard inspired by the DataHand

    65 parts993
  • 2 layers181 × 97 mmOpenDeck r3.1.2, the printed circuit board in 3D

    OpenDeck r3.1.2

    shanteacontrols/OpenDeck

    A platform for building interactive control and sensing devices using MIDI and OSC built with Zephyr RTOS.

    262 parts960Apache-2.0
  • 4 layers82.6 × 82.5 mmJumperless2, the printed circuit board in 3D

    Jumperless2

    Architeuthis-Flux/Jumperless

    A jumperless breadboard

    208 parts914
  • 4 layers102.9 × 96.7 mmPicoGUS chipdown, the printed circuit board in 3D

    PicoGUS chipdown

    polpo/picogus

    Emulation of ISA sound cards and CD-ROM on Raspberry Pi Pico (GUS, SB/Adlib, MPU-401, Tandy, CMS, Panasonic CD-ROM) with USB mouse/joystick support

    99 parts805
  • 4 layers180.8 × 300.3 mmDilemma, the printed circuit board in 3D

    Dilemma

    Bastardkb/Dilemma

    The Dilemma is a vertical stagger low-profile keyboard with mods.

    383 parts590
  • 2 layers130.4 × 76.6 mmGb stream cart, the printed circuit board in 3D

    Gb stream cart

    Staacks/gbinterceptor

    Capture or stream Game Boy gameplay footage via USB without modifying the Game Boy.

    80 parts542
  • 2 layers78 × 60 mmIce viz, the printed circuit board in 3D

    Ice viz

    muni-works/vcad

    BRep CAD kernel in Rust/WASM

    44 parts442Apache-2.0