Skip to the content
PCBKitNew board
2 layers95.3 × 50.8 mmTinyDiskII, the printed circuit board in 3D

Homemade floppy disk emulator for Apple II series computers

Size
95.3 × 50.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
52
Nets
81
Pads
270
Tracks, vias
462, 58
Pours
3
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
1 Oct 2022
Updated
6 May 2026

Overview

TinyDiskII is an open-source printed circuit board by GLGPrograms, from the GLGPrograms/tinyDiskII repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 95.3 × 50.8 mm with 52 parts on 81 nets, routed with 462 tracks and 58 vias.

It is built around the ATXMEGA16A4U-AU, 74AHCT125D and CH340C, with the SN74LVC244AN among its other parts. Its parts include 15 resistors, 6 ICs, 4 diodes, 4 connectors and 3 capacitors. It belongs with the retro computing and games boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

tinyDiskII

Homemade floppy disk emulator for Apple II series computers

:warning: Work in progress: read carefully the README before trying to reproduce this project!

tinyDiskII

tinyDiskII is able to simulate an Apple Disk II both in reading and writing. Disk images are stored into a FAT16 formatted SD Card. Each disk image must be a DOS 3.3 floppy image, saved as .NIC. A cross platform .NIC <-> .DSK conversion tool will be available soon on this repository. Floppy formatting is currently not supported, but it is currently under developement.

BOM

Reference(s)DescriptionNotes
C1, C2, C3, C4, C5, C6, C8, C9, C10, C11, C120805 100n Capacitor
D1, D20805 Red LED
J12x3 male jumperICSP connector
J2SMD SD Card slot
J3THT USB B Mini connectorMount for USB debug
J42x10 male connectorDiskII connector
R5, R6330
R2, R3, R4, R7, R8, R9, R10, R11, R12, R1510k
R13, R140Replaced with a bridge
SW1RotaryEncoder with switch
U2SN74LVC2445V tolerant buffer
U3CH340CMount for USB debug
U4ATxmega16A4U-AMCU
U574AHCT125Level shifter
U70.96" OLED I2C7-pin model
U10AP1117-333v3 linear regulator

Do Not Place, reserved for future implementations

Reference(s)Feature
U1Flash/EEPROM interface
C12"
R1"
C13, C14USB ESD
R13, R14"
D3, D4"
C7USB self reset
J5Debugging connector

Schematics and PCB

:warning: Schematics and PCB layout can be found in /schematics folder. Please note that I had physically implemented only rev1.0, which requires some hardware patches. The issues were fixed in rev1.1, but I never put it into production. Build it at your own risk.

Firmware

Firmware source code is in /firmware folder. Code can be compiled on a linux/wsl machine through make command. Make sure you have make and avr-gcc toolchanin installed. Output binary will be generated as /firmware/output/tinyDiskII.hex.

In /firmware/tests there are some unit tests that can run on host system. They can be compiled and executed with:

bash
cd firmware/tests
cmake -B build .
cd build
cmake --build .
./tinyDiskII-tests

Command line linterface

The serial interface is mainly used for application logging. If no OLED display is detected, the serial interface is enabled for receiving commands. If the OLED is connected, the command interpreter is disabled to avoid conflicts.

The following table resumes the available commands.

CommandArgumentsDescription
INITnoneInitialize the SD Card (1)
CWDdirnameChange woring directory to dirname
UPnoneChange working director to the parent directory
LSTnoneList files and directory in the current working directory
SETfilenameSelect filename, in current working directory, as currently inserted disk (2)
REMnoneRemove currently inserted disk
FATuptoPrints FAT entries of selected file up to index upto (debug)
INFOt sPrints .NIC file informations about sector s in track t (debug)
  1. If OLED is not connected, the SD Card must be manually initialized.
  2. At startup, no disk is inserted.

Changelog

  • rev1.0: first version

  • rev1.1: fixes the issues present in rev1.0:

    • LV_DISK_READ connected to U4 pin 21;
    • SD_WP connected to U4 pin 22;
    • SD_DETECT connected to U4 pin 23;
    • Added 10K pull-up resistor to DISK_WRITE_EN;
    • Pin 4 and 16 of U3 are shorted together.

Contributors and references

  • The whole projects borns as a custom implementation of Koichi Nishida's SdiskII [1] [2], which I used as a starting point for firmware developement.
  • Jörg Hagedorn made a replica of the tinyDiskII hardware rev1.1 and he found a bug in the SD sector's addressing, now fixed.
  • Kamen Angelov made a replica of the tinyDiskII hardware rev1.1, he found a bug with SDHC card and he sent some fix proposal.

Parts

52
QtyValueFootprintReferences
11100nCapacitor_SMD:C_0805_2012MetricC?, C1, C3, C4, C5, C6, C8, C9, C10, C11, C12
1010kResistor_SMD:R_0805_2012MetricR2, R3, R4, R7, R8, R9, R10, R11, R12, R15
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
3CCapacitor_SMD:C_0805_2012MetricC7, C13, C14
2-Diode_SMD:D_SOD-323D3, D4
210Resistor_SMD:R_0805_2012MetricR13, R14
2330Resistor_SMD:R_0805_2012MetricR5, R6
2LEDLED_SMD:LED_0805_2012MetricD1, D2
174AHCT125Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU5
1AP1117-33Package_TO_SOT_SMD:SOT-223-3_TabPin2U10
1APPLEII_DISK_CONNECTORConnector_IDC_SMDTHT:IDC-Header_2x10_P2.54mmJ4
1ATxmega16A4U-APackage_QFP:TQFP-44_10x10mm_P0.8mmU?
1AVR-PDI-6Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ?
1CH340CPackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU3
1ExtConnector_PinHeader_2.00mm:PinHeader_2x04_P2.00mm_VerticalJ5
1GraphicSymbolVintage:Apple_LogoSYM1
1Logo_Open_Hardware_SmallSymbol:OSHW-Symbol_6.7x6mm_SilkScreenSYM2
1MX25R3235FM1xx0Package_SO:SOP-8_3.9x4.9mm_P1.27mmU1
1OLED_MULTIModuleEnhanced:OLED_MULTIU7
1RResistor_SMD:R_0805_2012MetricR1
1RotaryEncoder_SwitchDeviceEnhanced:RotaryEncoder_SwitchSW1
1SD_CardConnector_Card_Enhanced:SDCardJ2
1SN74LVC244Package_SO:SOIC-20W_7.5x12.8mm_P1.27mmU2
1USB_B_MiniConnector_USB_Enhanced:USB_Mini-B_THT_genericJ3

Questions

How big is the TinyDiskII PCB?

It measures 95.3 × 50.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the TinyDiskII use?

52 parts, built around the ATXMEGA16A4U-AU, 74AHCT125D, CH340C and SN74LVC244AN. 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 TinyDiskII KiCad files?

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

Can I use the TinyDiskII design in my own project?

Its repository publishes it under the GPL-3.0 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

  • 2 layers33.2 × 34.6 mmTinylab proto1, the printed circuit board in 3D

    Tinylab proto1

    EspoTek/Labrador_backup

    Backup of the Labrador repo, pre-cleanup.

    59 parts1
  • 4 layers140 × 155 mmAutko, the printed circuit board in 3D

    Autko

    KamilRosinski/autko

    131 parts
  • 2 layersLicznik, the printed circuit board in 3D

    Licznik

    WojciechNowakowski/PCB-designs

    Container for PCB designs created by me (in KiCad software mostly)

    46 parts
  • 2 layers33 × 36.8 mmAtxmega16a4u, the printed circuit board in 3D

    Atxmega16a4u

    guanix/boards

    Various PCB designs in KiCad

    19 parts73
  • 6 layers144.8 × 106.7 mmLoriques, the printed circuit board in 3D

    Loriques

    skot/Loriques

    A solar powered Meshtastic LoRa gateway

    122 parts17CERN-OHL-S-2.0
  • 6 layers158 × 124 mmBP16, the printed circuit board in 3D

    BP16

    auselia/adc_test_board

    ADS7057 test board: perfboard SMA -> filters -> ADC + wake comparator -> ZedBoard PMOD (KiCad 10, JLCPCB-ready)

    174 parts
  • 2 layers53.6 × 72.4 mmGlyphblaster, the printed circuit board in 3D

    Glyphblaster

    dbalsom/GlyphBlasterPCB

    The KiCad PCB project files for the GlyphBlaster

    25 parts
  • 4 layers160 × 135 mmZ80 romless sbc, the printed circuit board in 3D

    Z80 romless sbc

    gloveboxes/pcb-z80

    pcb-z80 is a container-only, repeatable build of the four-layer Z80 ROMless SBC PCB engineering design. It regenerates the KiCad schematic, places the four-layer board, routes a fresh Specctra session, imports and fills…

    55 partsMIT