

D32 disk controller
Recreation of DragonDos disc controller cartridge
- Size
- 107.5 × 80.3 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 29
- Nets
- 106
- Pads
- 284
- Tracks, vias
- 1,011, 279
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 5 Jul 2023
- Updated
- 23 Mar 2026
Overview
D32 disk controller is an open-source printed circuit board by jimbro1000, from the jimbro1000/DragonDiscController repository on GitHub, published under the MIT licence. It is a 2-layer board of 107.5 × 80.3 mm with 29 parts on 106 nets, routed with 1,011 tracks and 279 vias.
It is built around the 74HCT00D, 74HCT04D and 74HCT139D, with the 74HCT174D and 74HCT74D among its other parts. Its parts include 9 ICs, 6 resistors, 4 capacitors, 4 connectors and 1 diode.
Main components
574HCT00D
SO-14-40℃~+125℃ 100mV、400mV 12ns@4.5V,50pF 2 2V 3.7V、4.4V 4 4.5V~5.5V 40uA 4mA 4mA 74HCT Series 800mV NAND Gate Overvoltage-tolerant input TTL Compatible CMOS SO-14 Logic Gates ROHSNexperiaLogic Gates74HCT04D
SO-14-40℃~+125℃ 1 19ns@4.5V,50pF 2V 2uA 3.7V 4.5V~5.5V 400mV 4mA 4mA 6 74HCT 800mV SO-14 Inverters ROHSNexperiaInverters74HCT139D
SO-16-40℃~+125℃ 160uA 16ns@4.5V,50pF 4.5V~5.5V 4/8 4mA 4mA 74HCT Decoder Single Supply SO-16 Signal Switches, Multiplexers, Decoders ROHSNexperiaSignal Switches, Multiplexers, Decoders74HCT174D
SO-16-40℃~+125℃ 1 3.5pF 35ns@4.5V,50pF 4.5V~5.5V 4mA 5.2mA 6 69MHz 74HCT Series 8uA D-Type Reset Rising Edge SO-16 Flip Flops ROHSNexperiaFlip Flops74HCT74D
SOIC-14-40℃~+125℃ 1 2 3.5pF 3ns 4.5V~5.5V 40uA 44ns@4.5V,50pF 4mA 4mA 59MHz 5ns 74HCT Series Asynchronous Complementary D-Type Rising Edge Set and Reset SO-14 Flip Flops ROHSNexperia74 Series
README
README.mdDragon 32/64 Disk Controller Card
This project contains the design and build
documents for a recreation of the DragonDos
disc controller

Design
The schematics use a WDC WD2797 disc controller IC as the core of the board, this is consistent with the original DragonData design. Other 2797 ICs from different manufacturers should still work
Other than the rom and controller the discrete logic chips are surface mount to help with the availability of components. In all cases the surface mount parts are of the largest versions available to try and make the assembly of the board feasible for hand soldering
Progress
In the current state the board is untested
The PCB layout is (very) generous on dimensions and needs work to shrink it down. Iterating on this won't change the functionality and should significantly reduce the size of the board, and hence the cost of fabrication
Assembly and BoM
Until the board progresses to a point where it can be tested the assembly instructions and the proven bill of materials are left unpublished
Calibration
-
Adjust the RPW timing - measure the pulse width of the TG43 signal from pin 29 on U2. Use R10 to fix the pulse at 600ns
-
Adjust the WPW timing - measure the pulse width of the signal from pin 3 of U6, pin 31 of U2, or pin 22 of the IDC connector (the IDC pin is inverted). Use R9 to fix the pulse at 300ns
-
Adjust VC0 timing - measure the frequency of the DIRC signal from pin 1 of U6, pin 16 of U2, or pin 18 of the IDC connector (the IDC pin is inverted). Use C3 to set the signal at 250KHz
Complete Adjustment Procedure
The official documentation identifies a more complex and thorough adjustment procedure. Where !TEST is referenced you can use the test point on the board at J1. Pin 1 is connected to !TEST on U2 (pin 22)
Write Precompensation
- Set !TEST to high (1)
- Strobe !MR on U2 Pin 19
- Set !TEST to low (0)
- Measure pulse width on U2 Pin 31
- Adjust R9 until pulse width is 300ns
- Set !TEST to high (1)
Data Separator
- Set !Test to high (1)
- Strobe !MR on U2 pin 19
- Check that !5/8 and !DDEN are set properly. U2 pin 17 and 37
- Set !TEST to low (0)
- Measure pulse width on U2 Pin 29
- Adjust R10 until pulse width is 600ns
- Measure frequency on U2 pin 16
- Adjust C3 until frequency is 250KHz
- Set !TEST to high (1)
Parts
29| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 1K | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R3, R8 |
| 2 | 10K | Potentiometer_THT:Potentiometer_Bourns_3296Y_Vertical | R9, R10 |
| 1 | 10nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C8 |
| 1 | 1N4148 | Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D1 |
| 1 | 220R | Resistor_THT:R_Array_SIP6 | RN1 |
| 1 | 220nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2 |
| 1 | 22pF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1 |
| 1 | 27C64 | Package_DIP:DIP-28_W15.24mm | U1 |
| 1 | 4MHz | Crystal:Crystal_HC18-U_Vertical | Y1 |
| 1 | 5.5-65pf | d32_cart:Trimmer-10mm | C3 |
| 1 | 74HCT00 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U5 |
| 1 | 74HCT04 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U9 |
| 1 | 74HCT139 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U4 |
| 1 | 74HCT174 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U3 |
| 1 | 74HCT74 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U8 |
| 1 | 74LS06 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U6 |
| 1 | 74LS07 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U7 |
| 1 | EDGE | d32_cart:D32_Edge | J3 |
| 1 | IDC_Floppy | Connector_IDC:IDC-Header_2x17_P2.54mm_Latch_Horizontal | J2 |
| 1 | TestPoint_Probe | TestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm | TP3 |
| 1 | TestPoint_TG43 | TestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm | TP2 |
| 1 | TestPoint_WD | TestPoint:TestPoint_Loop_D2.50mm_Drill1.0mm | TP1 |
| 1 | WD2797 | Package_DIP:DIP-40_W15.24mm | U2 |
| 1 | ~{MR} | TestPoint:TestPoint_2Pads_Pitch2.54mm_Drill0.8mm | J4 |
| 1 | ~{TEST} | TestPoint:TestPoint_2Pads_Pitch2.54mm_Drill0.8mm | J1 |
Similar boards
- 2 layers368.3 × 215.9 mm

- 2 layers200 × 150 mm

- 2 layers133.3 × 85.2 mm

- 2 layers

LM80C R6
leomil72/LM80C
A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO
153 parts123GPL-3.0 - 4 layers296 × 220 mm

Interposer
AlexColello/discrete-nes
A discrete logic implementation of the Nintendo Entertainment System where EVERY single gate output and EVERY memory bit is visible via LED. Watch a complete NES flip every bit in real-time.
107 parts - 2 layers100 × 100 mm

NESPICO RevB
spaghetti-computer/lasagna
Status: schematic ERC 0 violations. PCB 100x100 mm, 2 layers, parts placed, NOT ROUTED (499 unconnected items). Freerouting 2.1.0 left about 271 nets unrouted after 4 passes. Do not order from fab/ yet.
106 parts - 2 layers297.2 × 180.3 mm

- 4 layers244.5 × 393.4 mm

Questions
How big is the D32 disk controller PCB?
It measures 107.5 × 80.3 mm and has 2 copper layers, 1.6 mm thick.
What parts does the D32 disk controller use?
29 parts, built around the 74HCT00D, 74HCT04D, 74HCT139D and 74HCT174D. 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 D32 disk controller KiCad files?
From the jimbro1000/DragonDiscController repository on GitHub, at the commit this page was made from: the board is d32_disk_controller.kicad_pcb and its schematic d32_disk_controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the D32 disk controller 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).