Hi Eric,
Your Disassembler sounds very interesting. When you have a stable version, please let me
know. I would be interested in seeing the disassembled source code for the WD1000 8-bit
card I modified years ago.
I had an MFM hard drive or two that I was trying to format, but the 4 sets of hard drive
parameters offered by the WD1000 didn't match one of my hard drives so I replaced one
of the sets of hard drive parameters by reading the eprom using my homebrew eprom burner
setup I built for my Color Computer 1 F Board version way back when I was in my 20s.
After getting the hex code into the Coco, I set out to figure out where that hard drive
parameter table was located. I picked one of the set of hard drive parameters I
didn't think I would ever need and replaced it with my own. I burnt the eprom,
installed it into the WD1000 8-bit card and booted my MSDOS system and the WD1000
didn't respond. I turned everything off and uninstalled the eprom again.
I looked through the entire eprom for some idea as to why the Hard drive controller was
not working. I found one 8-bit byte at the very end of the eprom. I started wondering if
that was a simple 8-bit summation of all the bytes in the eprom. I quickly wrote a basic
program to add up all the bytes in the eprom since the hex code was loaded in my Coco to
arrive at a new 8-bit sum.
The result of that calculation was put into that last byte of the eprom file and burnt
into the eprom. After reinstalling the WD1000 back into the computer, the WD1000 came
right up and asked for my choice to pick for the hard drive parameters to use to format
the hard drive with! It even included the set of hard drive parameters I had put into the
eprom! I was very proud of what I had accomplished!
All this was done at the hex level as I did not have a clue what the code was doing. I
just needed different parameters for my MFM hard drive so I could format it to use on my
system so I changed them. If I remember correctly, I was setting up a 20MB and 30MB hard
drive for an old MSDOS machine I had put together. I think the 20MB was in the table, but
the 30MB was not again if I am remembering this correctly. I probably still have that old
WD controller somewhere if I can find it. I thought you guys might be interested in my
experience modifying the WD1000 Eprom. I had a lot of fun figuring it all out. Now with
Eric's disassembler, I'll be able to finally see the disassembled source code for
it! It will be so cool to examine! Take care my friends.
Kip Koon
computerdoc at
sc.rr.com
http://www.cocopedia.com/wiki/index.php/Kip_Koon
-----Original Message-----
From: cctalk [mailto:cctalk-bounces at
classiccmp.org] On Behalf Of Eric Smith
Sent: Saturday, November 19, 2016 7:07 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:
https://github.com/brouhaha/s8x30x
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.