Skip to the content
PCBKitNew board
2 layers99.9 × 127.5 mmMsxdoc proto, the printed circuit board in 3D

A diagnostic cartridge for MSX computers. Very much a work in progress. This is at proof-of-concept stage. It boots, it reads the bus, it tells you things, but it's a long way from a finished product.

Size
99.9 × 127.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
71
Nets
133
Pads
405
Tracks, vias
1,043, 199
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
5 Jun 2026
Updated
6 Jun 2026

Overview

Msxdoc proto is an open-source printed circuit board by tarinaroope, from the tarinaroope/msx-pulse repository on GitHub, published under the MIT licence. It is a 2-layer board of 99.9 × 127.5 mm with 71 parts on 133 nets, routed with 1,043 tracks and 199 vias.

It is built around the RP2350B, SN74LVC245APW and AP2112K-3.3, with the K2-1102AQ-C4CW-01, AOTA-B201610S3R3-101-T and BAT54C among its other parts. Its parts include 24 resistors, 23 capacitors, 6 ICs, 5 diodes and 4 connectors. It belongs with the RP2350 boards of this library.

Main components

8

README

README.md

msx-pulse

A diagnostic cartridge for MSX computers. Very much a work in progress. This is at proof-of-concept stage. It boots, it reads the bus, it tells you things, but it's a long way from a finished product. I'm building it partly because I wanted an "is this MSX dead, and if so why" tool, and partly to learn, so expect rough edges.

What it does today

Plug it into the cartridge slot and it sits there passively. It doesn't drive the bus, so it's safe to leave in while the MSX powers up on its own. While it watches, it reports on a small OLED:

  • the +5V, +12V and −12V rails
  • whether the 3.58 MHz clock is alive and roughly the right frequency
  • the state of /RESET
  • what the address and data lines are doing, including bits that look stuck or are never driven

It can also pulse /RESET and follow the early boot sequence to see how far the machine gets. There's a USB serial log too if you want the detail on a host.

That's already enough to tell, say, a dead clock apart from dead RAM without pulling the machine apart. I'm still working out the full list of faults it can sensibly diagnose and a lot of that will come from pointing it at actually-broken machines and seeing what shows up.

What's next

The next goal is to have the cartridge serve a diagnostic ROM to the MSX and act as the boot ROM itself and run Z80 test code on the machine's own CPU, the way the Dead Test cart does. The firmware already has the groundwork for this (it can emulate a ROM on the bus), but turning that into a proper guided test sequence is the next chunk of work. The passive monitoring above is the part that somewhat works.

Hardware

Fair warning: I'm a software person, not a hardware engineer, and this board is one of the first things I've designed. It's a quick first cut to get something I could test firmware against, and it shows. There's a KiCad project in hardware/ (schematics, PCB, gerbers) and a parts list in docs/BOM.csv — read them as "what I actually had made", not "the right way to do this".

The brain is a bare RP2354B (the QFN-80 part, 48 GPIO, 2 MB internal flash) wired onto the cartridge edge connector and powered from the slot. The current board puts 74LVC245 level shifters on just about every bus line. Having lived with it, I think that's overkill... the address and control inputs could most likely get by with plain series resistors and no shifters. The data lines are the exception: those are bidirectional and actually get driven, so keeping real level shifting there still makes sense, mostly for protection.

Things I'd like to change in the next board revision:

  • drop the level shifters on the address/control inputs, keep them on D0–D7
  • shrink the PCB to fit an actual MSX cartridge shell (it's oversized right now)
  • swap the ADC protection diodes as I miscalculated the zeners, seems it works even better without.
  • a bigger power-on-reset cap for a more reliable cold boot
  • a normal 2.54 mm SWD header (plus a UART header which I omitted) instead of the fine-pitch one I used

Building

You'll need the Arm GNU toolchain (arm-none-eabi), the Raspberry Pi Pico SDK, and sjasmplus for the Z80 side.

sh
export PICO_SDK_PATH=/path/to/pico-sdk
cmake -S . -B build -DPICO_TOOLCHAIN_PATH=/path/to/arm-none-eabi/bin
cmake --build build -j

Out comes:

  • build/src/firmware/msxdoc.uf2 — the firmware
  • build/diag.rom — the Z80 test ROM, assembled and baked into the firmware for you (not served)

Flashing

Hold BOOTSEL, plug into USB, and drop the .uf2 onto the drive that appears. Or, with picotool:

sh
picotool load -x build/src/firmware/msxdoc.uf2

Or via swd.

Layout

text
src/rom/        Z80 test ROM (sjasmplus)
src/firmware/   RP2354B firmware (pico-sdk, C + PIO)
hardware/       KiCad schematics, PCB, gerbers
docs/           bill of materials

License

MIT — see LICENSE.

Parts

71
QtyValueFootprintReferences
12100nFCapacitor_SMD:C_0402_1005MetricC7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C21, C23
51kRResistor_SMD:R_0603_1608MetricR9, R15, R18, R19, R21
410kRResistor_SMD:R_0603_1608MetricR10, R11, R13, R16
44.7uFCapacitor_SMD:C_0402_1005MetricC18, C19, C20, C22
4K2-1102AQ-C4CW-01LCSC:SW-TH_K2-1102AQ-C4CW-01SW1, SW2, SW3, SW4
4SN74LVC245APWPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU3, U4, U5, U6
3BZX84CxxPackage_TO_SOT_SMD:SOT-23D2, D3, D4
2100nfCapacitor_SMD:C_0603_1608MetricC3, C6
210kResistor_SMD:R_0603_1608MetricR1, R2
215pfCapacitor_SMD:C_0603_1608MetricC4, C5
227RResistor_SMD:R_0603_1608MetricR20, R22
2330RResistor_SMD:R_0603_1608MetricR4, R23
233RResistor_SMD:R_0603_1608MetricR14, R24
24.7kRResistor_SMD:R_0603_1608MetricR5, R6
25.1kRResistor_SMD:R_0603_1608MetricR7, R8
110ufCapacitor_SMD:C_0603_1608MetricC2
112MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
11uFCapacitor_SMD:C_0402_1005MetricC24
11ufCapacitor_SMD:C_0603_1608MetricC1
12N7002Package_TO_SOT_SMD:SOT-23Q1
13.3uLCSC:IND-SMD_L2.0-W1.6_AOTA-B201610S3R3-101-TL1
133Resistor_SMD:R_0603_1608MetricR3
133kRResistor_SMD:R_0603_1608MetricR12
182kRResistor_SMD:R_0603_1608MetricR17
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U1
1BAT54CPackage_TO_SOT_SMD:SOT-23D1
1Conn_01x03_PinConnector_PinHeader_1.27mm:PinHeader_1x03_P1.27mm_Vertical_SMD_Pin1RightJ4
1Conn_01x50OwnLib:MSX-EDGEJ1
1GT-USB-7010ASVLCSC:USB-C-SMD_G-SWITCH_GT-USB-7010ASVJ3
1HS96L03W2C03LCSC:OLED-TH_L27.8-W27.2-P2.54_C9900033791J2
1LEDLED_SMD:LED_0603_1608MetricLED1
1RP2350BRP235x:QFN-80-1EP_10x10mm_P0.4mm_EP3.4x3.4mm_ThermalViasU2

The 69 most common of 71 parts.

Questions

How big is the Msxdoc proto PCB?

It measures 99.9 × 127.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Msxdoc proto use?

71 parts, built around the RP2350B, SN74LVC245APW, AP2112K-3.3 and K2-1102AQ-C4CW-01. 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 Msxdoc proto KiCad files?

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

Can I use the Msxdoc proto design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers49.3 × 51.8 mmMega, the printed circuit board in 3D

    Mega

    1vers1on/Mega

    A microcontroller based on the RP2350B with a dedicated dac and adc, plus wifi and bluetooth.

    52 parts
  • 4 layers85 × 85 mmTinytapeout demo, the printed circuit board in 3D

    Tinytapeout demo

    TinyTapeout/tt-demo-pcb

    Demo board for TT04 and beyond

    330 parts37Apache-2.0
  • 4 layers89 × 61 mmBlocky breakout pcb, the printed circuit board in 3D

    Blocky breakout pcb

    o7-machinehum/RTShield

    Breakout board for a RPi.

    95 parts13
  • 2 layers90 × 100 mmHost shell, the printed circuit board in 3D

    Host shell

    shapoco/wildcardboy

    Handheld Game Console with Replaceable MCU

    241 parts5
  • 4 layers50 × 70 mmRp569, the printed circuit board in 3D

    Rp569

    kelu124/rp569

    RP569 - PIOs to usb3 ( rp2350 x ch569 )

    146 parts3
  • 4 layers100 × 100 mmFarmMesh Node, the printed circuit board in 3D

    FarmMesh Node

    chinawrj/FarmMesh-Node

    Developing an integrated hardware and software solution for farm-wide Mesh networking: RP2350B/ESP32-C5 nodes, firmware, network protocols, and Wi-Fi/BLE sensor access.

    164 parts
  • 4 layers68.6 × 56 mmCartridge, the printed circuit board in 3D

    Cartridge

    coco-chameleon/chameleon-hardware

    TRS-80 Color Computer cartridge emulator

    95 partsCERN-OHL-W-2.0