Reverse-engineering WD1000, WD1001 hard disk controllers

dwight dkelvey at
Sat Nov 19 18:25:16 CST 2016

Do they have operations based on the address that the 8x300 is executing, like a typical bit slice?

I used a WD1000 based controller on my Olivetti M20. It is actually a controller for a TRS-80 but it was a WD1000 in disguise. The M20 had what looked to be a wd1000 in the schematic I'd found.

I was able to use a ST251 with it but needed to modify the step to be autovstep. The original Olivetti hard drive was a 10 ms and the ST251

doesn't go that fast but is actually faster with the auto stepping.

It was a good thing the M20 software was very modular.


From: cctalk <cctalk-bounces at> on behalf of Eric Smith <spacewar at>
Sent: Saturday, November 19, 2016 4:06:31 PM
To: General Discussion: On-Topic and Off-Topic Posts
Subject: Reverse-engineering WD1000, WD1001 hard disk controllers

I've been working a little bit off-and-on for years on reverse-engineering
the WD1000 and WD1001 disk controllers (8X300/8X305-based), and their
clones. I've only made any significant progress within the last few days,
after hacking together my own disassesmbler which deals with the Fast I/O
Select PROM. I do NOT recommend using this disassembler yet, for reasons
that are explained in the README, but I've put it on github:

I've made some progress interpreting the firmware of an early WD1000, which
only had 512 words of firmware, and didn't support run-time configurable
sector size selection. So far I've figured out how they handle the host
reading and writing the task file, dispatching the commands, and much of
the sector ID search.

More information about the cctech mailing list