Skip to the content
2 layers219 × 88 mmInternal sdcard interface, the printed circuit board in 3D

Internal sdcard interface

ifilot/p2000t-sdcard3

SD-card cartridge for the P2000T

Size
219 × 88 mm
Copper layers
2
Thickness
1.6 mm
Parts
79
Nets
156
Pads
644
Tracks, vias
3,708, 177
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
17 Mar 2024
Updated
5 Jun 2026

Overview

Internal sdcard interface is an open-source printed circuit board by ifilot, from the ifilot/p2000t-sdcard repository on GitHub. It is a 2-layer board of 219 × 88 mm with 79 parts on 156 nets, routed with 3,708 tracks and 177 vias.

It is built around the 74HC245D, 74HC00D and 74HC32D, with the 74HC138, 74HC273D and 74HC74D among its other parts. Its parts include 32 capacitors, 28 ICs, 7 resistors, 5 diodes and 4 connectors. It belongs with the retro computing and games and interfaces and adapters boards of this library.

Main components

12

README

README.md

P2000T SD-CARD cartridge

GitHub tag (latest SemVer) build License: GPL v3 License: CC-BY-SA v4 discord

Table of contents

[!TIP] Have questions or comments about the P2000T SD-card cartridge? Join the conversation and chat with the developers on our Discord server.

YouTube

Check out the YouTube video below for a detailed review of the SD-card cartridge.

YouTube

Purpose

Perhaps the most elegant solution for loading CAS files into your P2000T or making backups of your tapes is via a cartridge that hosts an SD-card slot. Even the smallest SD-cards have enough capacity to store the complete P2000T tape archive. Reading from such an SD-card is non-trivial and requires both a hardware solution to interface with the I/O port of the P2000T as well as a software solution to navigate through the files hosted on a FAT32 partition. This repository contains the PCB for interfacing a P2000T with an SD-card and the necessary software routines to grab .CAS files from said SD card and load them into memory.

[!TIP] Documentation

  • Detailed documentation included how-to procedures can be found here
  • There is also a manual in Dutch Dutch flag available.

Downloads

Read the section "How it functions" to understand what each download file does.

[!WARNING] The files shown here cater specifically to PCB version 6 or later where the SD-card listens to I/O port 0x4X. Earlier version of the PCB are no longer actively maintained.

[!TIP]

  • Precompiled SD-card images, including flashing instructions, can be found here
  • A list of PRG programs, specifically designed to operate with the SD-card cartridge, can be found here

How it functions

To interface with the SD-card, an SD-card slot is connected to the I/O port of the P2000T. Interfacing with the SD-card proceeds via the SPI protocol which is encoded in hardware (in contrast to bit-banging the protocol in software). From the perspective of the P2000T, simple 1-byte instructions can be sent and retrieved from the SD-card. By sending specific commands, data is sent or retrieved from the SD-card.

While the SLOT2 cartridge (which hooks up to the I/O port of the P2000T) hosts the circuitry to interface with the SD-card, a SLOT1 cartridge is required that hosts the software. In order to run BASIC programs that are stored on the SD-card as .CAS files, the regular BASIC environment and the required routines to interface with the SD-card need to be present in memory. For this reason, a modified version of the BASIC environment is used which upon boot will load a launcher application from the ROM chip on the SLOT2 cartridge into main memory. This launcher application allows the user to navigate the SD-card and load BASIC programs into memory and run these. Detailed instructions on this process are found here.

The launcher application needs to be placed on the ROM chip by means of a flasher program. The flasher program is a different SLOT1 cartridge which can be downloaded from the download section. The flasher program will copy a LAUNCHER.BIN file from the root folder of the SD-card to the ROM chip on the SLOT2 cartridge. This procedure is also used to update the launcher application. Details on this process can be found here.

It is also possible to make copies of existing tapes to the SD-card. For this purpose, a CASDUMP.PRG program is written. These special types of programs can be loaded from the SD-card and executes via the launcher application. After completion, one automatically returns to the launcher, allowing one to load one of the freshly copied programs.

Images

SLOT2 cartridge enclosure and populated PCB. Image of cartridge and PCB

Screenshots of navigation and execution of .CAS files. Image of cartridge and PCB

Commands

Upon booting into the LAUNCHER application, the user interfaces with the SD-card using a set of short commands. Below, the list of commands is provided

CommandDescription
lsList contents of current folder
lscasList contents of current folder, listing contents of CAS files
cd <number>Change directory
run <number>Run .CAS file
hexdump <number>Performs a 120-byte hexdump of a file
fileinfo <number>Provides location details of a file
ledtestPerforms a quick test on the read/write LEDs
stackShow current position of the stack pointer
dump<XXXX>Perform a 120-byte hexdump of main memory starting at 0xXXXX
romdump<XXXX>Perform a 120-byte hexdump of cartridge ROM starting at 0xXXXX
ramdump<XXXX>Perform a 120-byte hexdump of cartridge RAM starting at 0xXXXX

Note that <number> needs to replaced with the specific number of a file. Users who are familiar with command line interfaces are probably used to specifying filenames rather than numbers. This reason this approach was chosen is mainly because it is simpler to program and furthermore a bit quicker to type.

Compilation instructions

Compilation is done using the z88dk Docker by means of compile.sh. To compile the launcher, run

bash
cd src
./compile launcher

and for the flasher utility

bash
cd src
./compile flasher

Repository contents

Building the hardware

Gerber files

To create your own SLOT2 cartridge, download the GERBER files from here, put them in a .ZIP file and send them to your favorite PCB print farm. The author of this repository mainly uses JLCPCB, but plenty of alternatives are available. The SLOT2 PCB has four layers. It is recommended to apply an ENIG (gold) coating and chamfer the edge connector for facile insertion into the P2000T. After ordering, one needs to either hand-solder the components (which can be tricky for the SMD chips) or alternatively make use of an assembly service by which the PCB print farm will solder these components for you.

PCB assembly service

The folder pcb/port2-sdcard-interface contains port2-sdcard-interface_bom_bot.csv and port2-sdcard-interface-bottom-pos.csv which can be used for the JLCPCB assembly service. An example of the part placement can be found in the image below. At the time of writing, two components were unavailable, being the memory chip 62128 and a 0 ohm resistor, which is the reason that these two parts are missing. Note that all through-hole parts, e.g. LEDs, oscillator and PLCC32 socket, have to be hand-soldered in.

img PCB assembly

Ordering a cartridge

It is also possible to order a cartridge (typically there are always a few of them in stock). If you are interested, feel free to contact the author of this repository at ivo at ivofilot dot nl to discuss pricing and shipping.

Internal SD-card board

This project also includes an internal SD-card board designed to mount on top of the main baseboard inside the P2000T. In addition to the SD-card reader functionality, the board also provides 64 KiB of additional memory, making it an all-in-one solution.

To install this board, you will need two custom brackets. You can find the necessary bracket files here.

internal SD-card board

Formatting SD-card

The way that the SD-card is formatted is critical. The SD-card needs be formatted using a MBR/FAT32 partition. Often, directly formatting the SD-card via Windows Explorer or similar works well, but sometimes a more rigorous procedure is needed, which is explained below.

  1. Type WINDOWS + R and run CMD.
  2. Run diskpart.
  3. Type list disk followed by select disk <NR> where <NR> corresponds to your SD-card.
  4. Type clean. You get a response with DiskPart succeeded in cleaning the disk..
  5. Type list volume, followed by select volume <ID> where <ID> corresponds to your SD-card drive.
  6. Type convert mbr. You should get the response DiskPart successfully converted the selected disk to MBR format..
  7. Type create partition primary. The response should be DiskPart succeeded in creating the specified partition..
  8. Finally, type format fs=fat32 quick label="P2000T", after which the response is DiskPart successfully formatted the volume..

Your SD-card should now be ready to work in the SD-cartridge. Of course, you still need to copy files to it in order to load something of it.

License

License facts

Parts

79
QtyValueFootprintReferences
290.1uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C10, C11, C12, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27, C28 +13
474HC00Package_DIP:DIP-14_W7.62mm_SocketU3, U18, U19, U27
374HC32Package_DIP:DIP-14_W7.62mm_SocketU7, U9, U26
210kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR9, R10
222pFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC37, C38
2560Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR6, R7
274HC138Package_DIP:DIP-16_W7.62mm_SocketU24, U25
274HC273Package_DIP:DIP-20_W7.62mm_SocketU31, U32
274HC74Package_DIP:DIP-14_W7.62mm_SocketU5, U6
2CY62256-70PCPackage_DIP:DIP-28_W15.24mm_SocketU2, U4
1 CY62128ELL-45SXIPackage_SO:SSOP-32_11.305x20.495mm_P1.27mmU34
10Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR8
116MHzOscillator:Oscillator_DIP-14X1
1180Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR5
11kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR11
1220uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC3
174HC02Package_DIP:DIP-14_W7.62mm_SocketU20
174HC04Package_DIP:DIP-14_W7.62mm_SocketU1
174HC123Package_DIP:DIP-16_W7.62mm_SocketU21
174HC157Package_DIP:DIP-16_W7.62mm_SocketU12
174HC163Package_DIP:DIP-16_W7.62mm_SocketU23
174HC165Package_DIP:DIP-16_W7.62mm_SocketU29
174HC173Package_DIP:DIP-16_W7.62mm_SocketU10
174HC245Package_DIP:DIP-20_W7.62mm_SocketU11
174HC595Package_DIP:DIP-16_W7.62mm_SocketU30
174HC688Package_DIP:DIP-20_W7.62mm_SocketU8
174HC85Package_DIP:DIP-16_W7.62mm_SocketU17
1ACTLED_THT:LED_D5.0mmD4
1DIODEDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1
1EXPANSION BOARDConnector_IDC:IDC-Header_2x20_P2.54mm_VerticalJ1
1LOGOcomponents:hcm_logoG001
1POWERConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1READLED_THT:LED_D5.0mmD5
1SDCARDsdcard-holder:sdcard-socketJ5
1SELLED_THT:LED_D5.0mmD3
1SST39SF010Package_LCC:PLCC-32_THT-SocketU33
1TERMINALTerminalBlock:TerminalBlock_bornier-2_P5.08mmJ3
1WRITELED_THT:LED_D5.0mmD6

The 78 most common of 79 parts.

More from ifilot/p2000t-sdcard

2
  • 2 layers82.6 × 67.3 mmSdcard prototype, the printed circuit board in 3D

    Sdcard prototype

    ifilot/p2000t-sdcard

    SD-card cartridge for the P2000T

    43 parts3

Similar boards

  • 2 layers177.8 × 130.8 mmDurango, the printed circuit board in 3D

    Durango

    zuiko21/minimOS

    Scalable OS for 6502/65816

    159 parts23MIT
  • 2 layers200 × 150 mmMicro, the printed circuit board in 3D

    Micro

    jurendono/VMC

    A Versitile 6502 Based Microcomputer

    235 parts
  • 2 layers297 × 210 mmCpu, the printed circuit board in 3D

    Cpu

    tetrix450/masic-cpu

    MASIC CPU schematics and PCB

    197 partsMIT
  • 4 layers188 × 128.3 mmZAK180, the printed circuit board in 3D

    ZAK180

    agkaminski/ZAK180

    DIY all-in-keyboard computer featuring Z180 and floppy drive

    140 parts
  • 2 layers178 × 711 mmMSAP-2 rev.A SMD, the printed circuit board in 3D

    MSAP-2 rev.A SMD

    mehrantsi/MSAP-2

    An 8-bit computer. Successor to MSAP-1

    658 parts13MIT
  • 2 layers299.7 × 198.1 mmCisc-8, the printed circuit board in 3D

    Cisc-8

    nailed-barnacle/Cisc-8-ttl-processor

    A cut-down version of the 8080 processor using HCTTL and including a discrete ALU and instruction decoder

    319 parts1MIT
  • 2 layers208 × 110 mm8 16 computer 2, the printed circuit board in 3D

    8 16 computer 2

    halfburnttoast/TCPU816-v1

    Version 1.1 of my 8-bit, TTL computer.

    120 parts21
  • 2 layers234 × 100 mmV2b, the printed circuit board in 3D

    V2b

    KITTY-6502/hardware

    the KITTY is a 65c02 homebrew kit microcomputer designed around text mode graphics and cartridge media. It is fully open source, and uses exclusively in-production parts.

    147 parts

Questions

How big is the Internal sdcard interface PCB?

It measures 219 × 88 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Internal sdcard interface use?

79 parts, built around the 74HC245D, 74HC00D, 74HC32D and 74HC138. 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 Internal sdcard interface KiCad files?

From the ifilot/p2000t-sdcard repository on GitHub, at the commit this page was made from: the board is pcb/internal-sdcard-interface/internal-sdcard-interface.kicad_pcb and its schematic pcb/internal-sdcard-interface/internal-sdcard-interface.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Internal sdcard interface design in my own project?

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