Going around the CXD1013

/ UniDisk 3.5 controller / updated 2026-10-07 unidisk a2m2053 smartport rp2350 floppy apple-iie planning

I have two UniDisk 3.5 drives (A2M2053) with dead controller boards and one that works. The mechanisms in the dead ones are fine. I ran both on the working board a few months ago, and one of them is refurbished and regreased. On an Apple IIe the UniDisk is the only way to get 3.5" disks, and the one spare controller board on eBay has been sitting at $150 for about seven months. So I’m building a replacement board.

The UniDisk 3.5 controller board (IF-83) out of the drive, with the Sony mechanism behind it.
The UniDisk 3.5 controller board (IF-83) out of the drive, with the Sony mechanism behind it.

Nobody has anything on the Sony CXD1013

Underside of the IF-83 with the Sony CXD1013 gate array, date code 8517.
Underside of the IF-83 with the Sony CXD1013 gate array, date code 8517.

The controller board (IF-83, service part 661-0307) is a 65C02, a mask ROM, 2K of RAM, an IWM, and a Sony CXD1013 gate array on the bottom. The gate array is the problem. I emailed Sony and they said they have nothing on it. The Computer History Museum never answered. Without a known-good spare chip there’s nothing to reverse engineer against.

RefPartJob
IC101GTE G65SC02P-2CPU, 2 MHz
IC102Toshiba TC5365P, “A2M2053-V1.0”8K ROM at $E000
IC103AMI 344-0041-BIWM
IC104Sony CXK5816PN-12L2K SRAM at $0000
bottomSony CXD1013gate array, no datasheet

The drive ROM already explains the gate array

Byte Hamr’s repo has Eric Smith’s 2018 disassembly of the drive’s own 65C02 firmware (liron.asm, next to the Liron card ROM). It maps the gate array as two registers at $0800 and $0801, with bits named LASTONE, BUSEN, WRREQ, HDSEL, SENSE, BLATCH, IWMDIR, PH3EN, ENBUS and DRIVE1/2. One IWM gets switched between the SmartPort side and the mechanism by the IWMDIR bit. The ROM sets the IWM mode to $1F (fast, 2 us cells) for the mechanism and $17 for SmartPort.

That means I don’t need the CXD1013 at all. I need to drive the mechanism connector myself and use the ROM as an oracle for sequences and timing: seek, recal, eject retries, and the SmartPort command and status tables.

The mechanism is a Mac 800K drive on a 20-pin header

Bitsavers has Apple’s engineering spec for the 800K double-sided drive (699-0321, August 1985). It has the 20-pin connector pinout, and the silkscreen next to CN104 on the controller board matches it: CA0, CA1, CA2, LSTRB, SEL, /ENBL, RD, WR. The mechanism handles its own speed in five zones, so the controller never has to drive PWM.

If you’re trying to drive a UniDisk 3.5 mechanism without its controller: CN104 is the Mac 800K drive’s 20-pin interface, status comes back on RD selected by CA0-2 and SEL, and pin 20 (/PWM) is tied straight to +5V on the original board. I checked pin 20 with the meter.

TracksRPMSectors per track
0-1539412
16-3142911
32-4747210
48-635259
64-795908

Data rate is 489.6 kbit/s. The OCR’d spec is unreadable at the 472 RPM entry, so that one is the standard Mac 800K value. The mechanism board has its own Sony chips: a CX23077A dated 8515 and a CX20185, which is the read/write head amp. The power pins are +5 V and +12 V only, so the bench needs two rails.

Rear port continuity off a dead board

The daisy-chain port on the back mostly passes straight through to the host header CN102. Three pins go into the CXD1013 instead.

Rear DB-19Goes toWhat it is
9CN102 pin 17HDSEL, pass-through
10CN102 pin 20WRPROT/ACK, pass-through (pin 20, not 19)
14CXD1013 pin 4PH3 to the next drive, gated
16resistor to CXD1013 pin 5LASTONE sense
17CXD1013 pins 12 and 13/ENBL to the next drive, gated

The pin 16 trick is in an Apple handwritten pin table from 1985 that’s bundled with the Apple 3.5 Drive schematic on bitsavers: “GND on input port, +5V 2k on output port.” A drive plugged in behind you grounds it, so the drive knows whether it’s last in the chain.

The plan

An RP2350 on a Pico 2 does everything. One PIO block runs SmartPort, ported from the PicoPort code that already boots ProDOS on the Byte Hamr side. The other PIO block times flux on the mechanism’s RD line and writes GCR. Level shifting is five of my SN74LVC8T245 boards. Each one has a single DIR and /OE, so signals get grouped by direction and by when they need to be enabled. The pin count comes out at 25 of 26 GPIO with daisy chain included.

Scope is the Apple IIe and 800K ProDOS disks. The UniDisk docs talk about Mac disks and 400K, and the ROM still has single-sided format code, but the IIe never used either.

Firmware gets done one milestone at a time with a bench stop after each: M0 rig and boot safety, M1 status bits, M2 motor, seek and eject, M3 raw flux capture and a full disk read compared byte for byte against an image made on the working drive. Writing comes later at M5. The M0 scaffold firmware builds and its host tests pass. It sets every mechanism line to its idle level and holds the shifter’s /OE high before USB comes up. I also grabbed Raspberry Pi’s prebuilt OpenOCD, because the one I had only knew the RP2040.

Cable breakouts

The first hardware is two adapters that take the 20-pin cables down to header pins for the breadboard, one for the disk cable and one for the Apple side. Both are 30x70 mm perfboard wired with 32AWG. Soldering 32AWG is tedious and this took a lot longer than I wanted. All the beep checks passed.

Notebook page from 2026-10-07 with the two cable adapters sketched out, next to the finished ones.
Notebook page from 2026-10-07 with the two cable adapters sketched out, next to the finished ones.
First half of the 32AWG runs from the 2x10 header out to the breakout row.
First half of the 32AWG runs from the 2x10 header out to the breakout row.
Both adapters on breadboards with the 20-pin ribbon plugged in, during the beep checks.
Both adapters on breadboards with the 20-pin ribbon plugged in, during the beep checks.

Open threads

Sources: bitsavers Sony/Apple drive docs, tashnotes for the GCR checksum and MCI tables, and Eric Smith’s disassembly in the project_byte_hamr repo.