PDA

View Full Version : Information on wd1002-wx2 8-bit hard disk controller?



SomeGuy
January 12th, 2014, 08:25 PM
16807
Does anyone have any information about this specific model of hard disk controller?

From the shreds I have found, it looks like this may have been specifically intended for system builder OEMs (rather than general retail). The ROM does not permit use of any random configuration, requiring that the disk parameters be burned in to the EPROM.

Some places say this is similar to the smaller wd1002S-wx2 card, but the jumpers are different. Actually, this didn't even have jumpers originally, only solder points with cutable traces. At one point a loooong time ago I added jumpers and programmed my own BIOS for use with another drive. But now I don't remember what those solder points/jumpers were for!

The hard drive that came with this (a 10mb MFM drive) is actually still humming away in another machine with a better controller.

Chuck(G)
January 12th, 2014, 10:32 PM
I have the data sheet for the WD1002A-WX1, which you'd think would be earlier, but it's a half-length card. How about a dump of the BIOS on the card?

alecv
January 13th, 2014, 12:26 PM
It may be from the Columbia Data Products MPC 1600 or similar. They started to use WD controllers before IBM (IBM used Xebec).

AFAIC, early XT WD BIOS not allowed to use user-defined geometry, BIOS contained a fixed geometry table selectable by jumpers.
Leter, WD added a new format utulity (at c800:5) asking C/H/S from user, so called WD SuperBIOS.

Chuck(G)
January 13th, 2014, 02:24 PM
I think it varied from controller to controller. Some WD XT-style controllers can record the disk geometry on the first track; others can use DIP switch or jumpers to adjust geometry. WD made a bewildering variety of 8-bit ST412 controllers.

SomeGuy
January 13th, 2014, 08:27 PM
alecv, what makes you mention the MPC 1600? :)


I have the data sheet for the WD1002A-WX1, which you'd think would be earlier, but it's a half-length card. How about a dump of the BIOS on the card?

I actually used to have a WD1002A-WX1. Small, surface mounted parts, much newer. WTF version numbering?

Here is the original BIOS from the card (didn't know you could put zip files in the attachment manager here):

16839

This specific card was used with a Tandon TM502 10mb hard drive that was re-branded by "IDEA Associates". This BIOS indeed does not support formatting any random configuration. You can execute g=c800:5, but its formatter does not accept any parameters except the drive number and interleave. (And you have to put those in the AH/AL registers with debug. Very friendly). The drive parameters are stored in a table near the beginning of the ROM. If you want to use a different model of drive, you have to change the ROM. I suspect whoever IDEA Associates were, probably customized this ROM with their parameters.

Chuck(G)
January 13th, 2014, 08:44 PM
Hmm, I've got a 4K WD BIOS ROM here; probably from an WX2 as well. I'll have to check to see it.

But, notice that at about 40H offset from the start, there are 4 16-byte entries. They're varying device types. The last two are null, but the first and second appear to be:

306 cylinders, 4 heads,
615 cylinders, 4 heads.

beckenrandschwimmer
February 12th, 2015, 11:45 PM
Hello, I am new here as member, but I head read a lot in this Forum. Sorry for my English, hope it is good enough for this excellent forum.

I have exact the same controller WD1002-WX2. With the ROM limitation of 10MB Type 1 hard disks (Version 62-000042-011). Same as shown above.
I am on the way to change the ROM to control Type 2 hard disks.
In the Computerbase-Forum (German http://www.computerbase.de/forum/showthread.php?t=1446629 (Link)) I got some support, but before I will kill some Hardware, I want to ask here if someone has done it jet?

Also I read in some guidelines that the Controller can deal with the ROM Version 62-000043-10 where I can put the Cyl/Head/ect. see therefor the attachment. Same ROM Version should be on the WX1 Controller.

My question(s):
Does anyone have the ROM Version 62-000043-10 for virtual BIOS?

WD # Sorbus # description BOARD TYPES
62-000042-011 HD971011 XT HD BIOS WX1,WX2
62-000042-012 HD970012 XT HD BIOS WX1,WX2
62-000042-013 XT HD BIOS WX1,WX2
62-000043-10 HD971010 HD VIRTUAL BIOS WX1,WX2
62-000089-030 RLL BIOS WX1,WX2,27XX

*** Compatible Controllers ***

WD1002-WX2 Original board introduced in 1983 ROM location U36
WD1002A-WX2 Same as WD1002S-WX2 (long board) ROM location U14
U10 in early versions
The BIOS ROMs are interchangeable between boards.

Or has anyone modified the old ROM Version 62-000042-011 which I have?

Please find also attached the ROM Version 62-000042-011 I read out from my Controller.

Thanks & Regards

Beckenrandschwimmer

archeocomp
February 13th, 2015, 11:29 AM
There are some WD Roms here. It is possible that Chuck personally had uploaded them many years ago. Did someone try one of them?
http://www.retroarchive.org/maslin/roms/index.html

beckenrandschwimmer
February 13th, 2015, 12:29 PM
Dear archeocomp,

thanks for your reply. I will try this one:
wdhdbios.rom 5040 ROM HDC BIOS for WD1002S-WX2
I have a 24 pin 8k ROM where I can copy it. This ROM seems very simila to my, but with the option to set the parameters manually. But it will take 2 weeks because of full load with familie :)

Or has someone else a better Idea?

Regards

Beckenrandschwimmer

modem7
February 13th, 2015, 04:20 PM
Welcome to these forums.


Please find also attached the ROM Version 62-000042-011 I read out from my Controller.
I have a 62-000042-011 BIOS ROM on my WD1002S-WX2 (although labelled 62-000042-11, not 62-000042-011).
Unlike with your 62-000042-011 ROM, the drive table in my ROM matches what is in the documentation that you attached.
Some information on the drive table within my 62-000042-011 ROM is [here (http://www.minuszerodegrees.net/hdd/Western%20Digital%20-%20Drive%20table%20in%2062-000042-11%20BIOS%20ROM.jpg)].
An image of my ROM is at [here (http://www.minuszerodegrees.net/rom/rom.htm)].


I am on the way to change the ROM to control Type 2 hard disks.
None of the drive entries in my ROM exactly matches a type 2, because a type 2 has a WFC of 300.
But my opinion is that in a hobby environment, WPC (http://www.minuszerodegrees.net/hdd/wpc.htm) is not important.

If you decide to modify the drive entries in the 62-000042-011 ROM, note that after you have done that, you need to change the last byte in the ROM so that the 8-bit checksum is 00. Also, if your WD1002-WX2 does not have jumpers to select which drive entry is used, note that the WD1002-WX2 may use the fourth entry, not the first.

beckenrandschwimmer
February 17th, 2015, 01:08 AM
Thanks,

I have worked further on this "problem". and I think I have solved it in theories.
I have found an description of the ROM BIOS for the controller and the disk parameters. So I was able to check where the parameters are stored. See attached picture.
44h to 47h: Device 0 Cyl (2byte) Hd(1byte) Reduced write current (2byte) and WPC (2byte)
54h to 57h: Device 1 Cyl (2byte) Hd(1byte) Reduced write current (2byte) and WPC (2byte)
64h to 67h: Device 2 Cyl (2byte) Hd(1byte) Reduced write current (2byte) and WPC (2byte)
74h to 77h: Device 3 Cyl (2byte) Hd(1byte) Reduced write current (2byte) and WPC (2byte)

Modem7, you are right. I have no jumpers and so the last drive is used.
Than I created a table for my drive: (see attached table)

So I will use this change in the first step. Only thing I can not find is the Land zone. How it is made? Can Park.com handle land zone 670?

beckenrandschwimmer
February 17th, 2015, 05:29 AM
Another Reply, because I cannot edit my previous post --> still under examination of an moderator.

In the documentation of the WD controllers (named "Storage Management Products Handbook") on Page 471 of 614 the Table is printed (I have made a picture of this table in previous post). Maybe I cannot attache the file because of 22MB.
So I think, what you named land zone is the reduced write cylinder. The LZ is still missing.

Regards

Beckenradschwimmer

EDIT: how can I park this hard disk? ST-225 has no auto park function. How park.com knows the park position if not set in the drive parameters?

modem7
February 18th, 2015, 12:58 AM
So I think, what you named land zone is the reduced write cylinder. The LZ is still missing.
Yes, I think you are right.


EDIT: how can I park this hard disk? ST-225 has no auto park function. How park.com knows the park position if not set in the drive parameters?
There has been discussion before in these forums about what the generic head parking programs do on XT-class computers. I think the outcome was that they do something simple like moving the heads to the last cylinder.

beckenrandschwimmer
February 18th, 2015, 11:34 PM
Yes, I found the thread:
http://www.vintage-computer.com/vcforum/archive/index.php/t-22341.html (Link)
So I will try the park.com and the new parameters if the virtual BIOS will not work with my controller.
Attached updated excel tool for some hdd I will test - with automatic HEX -> DEZ and DEZ -> HEX translation :)

nollkolltroll
February 19th, 2015, 11:24 AM
So, has any of you tried to make a customized ROM with parameters of your own?
I ask since I have just got a Toshiba with this HD controller and a Seagate ST-251 which is a 42mb drive, but it is formatted at 10mb right now.

beckenrandschwimmer
February 19th, 2015, 10:12 PM
Hi nollkolltroll,

no, but I will try next week. I have a ST225, a ST251 (not my) and a Tandon-703AT. I will give feedback.
Based on the documentation the max. capacity is: 1024 cyl & 8 heads with 17 sectors = 70MB
But I also see an RLL BIOS in the documentation for this controller, but I have not the binary file.

modem7
February 20th, 2015, 12:59 PM
So, has any of you tried to make a customized ROM with parameters of your own?
Quite a few readers here will have done that.


I ask since I have just got a Toshiba with this HD controller and a Seagate ST-251 which is a 42mb drive, but it is formatted at 10mb right now.
If you want to pursue that, create a new thread (rather than hijacking this one). Be sure to include make/model information on the "Toshiba", and the HDD controller.

nollkolltroll
February 20th, 2015, 10:19 PM
It was not my intention to hijack the thread, more of a background to my question.
I'd still want to hear of success stories for this card, so I don't spend too much time on a wild goose chase.
So, pertinent to this thread:
- any success stories changing ROM-parameters, including what drive was used.
- any limitations regarding size of drive etc?

I did find some relevant info regarding the WD1002-range:
http://bitsavers.trailing-edge.com/pdf/westernDigital/WD100x/

modem7
February 21st, 2015, 05:43 PM
I'd still want to hear of success stories for this card, so I don't spend too much time on a wild goose chase.
So, pertinent to this thread:
- any success stories changing ROM-parameters, including what drive was used.
- any limitations regarding size of drive etc?
If you search these forums, you will find examples of success. But reading such examples will not bring to your attention everything you need to know.

Some considerations:

Is the new drive compatible with the particular XT-class controller?
Eg. Interface (eg. ST506/412 versus ESDI)
Eg. Head step pulse compatibility
Eg. Maximum head count (eg. some controllers are limited to 4 heads, some 8, some 16)(see [here (http://www.minuszerodegrees.net/hdd/st506_st412_interface.pdf)])

Where is the drive table in the controller's BIOS expansion ROM? There is no standard. If you find it, what is its structure? There is no international standard.
SpeedStor, used with the ROMLIST switch, can usually help in that regard, but cannot if an unknown (unknown to SpeedStor) structure is used.

After altering the drive table, which byte in the BIOS is adjusted so that the 8-bit checksum is 00. It is not always the last byte in the BIOS (because sometimes, only a portion of the BIOS is checksummed).

nollkolltroll
February 21st, 2015, 09:46 PM
Modem7, I believe the info in this thread is enough to modify the drive geometry parameters, and fix the checksum. Have EPROM-programmer, will travel ;)
The drive in question is already in use with this card, but uses the wrong parameters and thus yielding only 10mb of the 42mb available. My hope is that the card and Dos will accept the changed parameters without problems. As you say, there may be limits on some of the parameters. I'll just have to try it.
Now I'll need to get some floppies so I can create boot-disks to restore the system afterwards.

beckenrandschwimmer
February 25th, 2015, 10:01 PM
Dear All,

tomorrow I can test the modified BIOS with parameter of ST-225 and ST-251. But I have on problem. You told me that I have to modify the last byte to have the checksum "0".
How can I create the checksum of this binary? The binary editor I use (XVI32) has a function called "CRC" with this result:

CRC32 (PKZIP) of file: B51FD88D
CRC16 (Standard) of file: 8D71
Someone wrote 8 bit checksum. Is this CRC8? Could someone explain me how I can check the checksum (8/16/32 bit?). And how to modify last bit without trial & error?

Attached BIOS for the three hdd parameters with wrong checksum.

Thanks

nollkolltroll
February 28th, 2015, 07:06 AM
I have now modified a copy of my ROM for the WD1002-WX2 that works perfectly well with my Seagate ST-251.
To try to answer beckenrandschwimmer... I changed 3 bytes to fix my heads and cylinders at address 0x70:
from 04 32 01
to 06 34 03
These changes added 2 for each byte, so a total of 6 for the whole change. Subtract that from the last byte of the ROM (checksum) 0x21 to get 0x1b.
Or: add up all the bytes in the ROM, and look at the least significant 8 bits of the sum. It should be 0 to be correct. Mine was 6, so I had to subtract that from the last byte to be OK.

nollkolltroll
March 1st, 2015, 08:44 PM
It seems my answer to this thread fell into the digital void, so here goes again...

Hopefully this answer will help beckenrandschwimmer, or anyone else trying to do something similar.

I ripped my WD1002-WX2 2732 EPROM, changed the 4th table (at 0x70) to read 6 heads and 819 cylinders, to use my ST-251 drive. The three bytes added a total of 6 to the sum, so I subtracted 6 from the last byte (0x21->01b). Burned this to an empty 2764 EPROM and booted. Success!
After a long session of low-level formatting, fdisk partitioning and dos-formatting I now have 10Mb and 32Mb partitions, completely filling the harddrive.
The check-sum is precisely that, a sum of all bytes. This particular implementation uses the least significant 8 bits of the total sum, and after modifying the last byte, the 8-bit sum should be 0.

beckenrandschwimmer
March 1st, 2015, 10:16 PM
Success!

After a lot of searching for a tool which can calculate the check sum, we were calculating it manually. It seems that it is an INTEL HEX check sum.
http://en.wikipedia.org/wiki/Intel_HEX
But in English the check sum is missing, in German it is available:
http://de.wikipedia.org/wiki/Intel_HEX#Berechnung_der_Pr.C3.BCfsumme
The tool for programming via Programmer summarized all bytes of the binary file. That was the basic of check sum calculating :)

But there is one difference! We had to add 2 instead of 1 described in the German Wikipedia. No Idea why, but it runs with 2.

Attached the BIOS ROM for an ST-225 drive. The ST-225 is working well. Also the park.com does park the drive well.
Because of time issues I have not checked the ST-251 and TM703AT. But with the correct check sum they should work fine, too.

Thanks for your support!

modem7
March 3rd, 2015, 12:37 AM
It seems my answer to this thread fell into the digital void, so here goes again...

You are still on probabation, and therefore, your posts need to be approved of by a moderator beore they appear.


After a lot of searching for a tool which can calculate the check sum, we were calculating it manually. It seems that it is an INTEL HEX check sum.
http://en.wikipedia.org/wiki/Intel_HEX
But in English the check sum is missing, in German it is available:
http://de.wikipedia.org/wiki/Intel_HEX#Berechnung_der_Pr.C3.BCfsumme
The tool for programming via Programmer summarized all bytes of the binary file. That was the basic of check sum calculating :)

But there is one difference! We had to add 2 instead of 1 described in the German Wikipedia. No Idea why, but it runs with 2.
In Intel Hex, a two's complement of the checksum is used. In the BIOS expansion ROMs within PC family cards, a two's complement is not done on the checksum.
It is just normal checksumming.

Example:

5F + A3 + 11 + CE + 8E + FF + FF + FF = 56C

The 8-bit checksum of the bytes is 6C (the least significant 8 bits of 56C)
(The 16-bit checksum is 056C)
(The 24-bit checksum is 00056C)

In BIOS expansion ROMs within PC family cards, a particular byte is altered so that the 8-bit checksum is 00.
Is is usually the last byte, but not always.
Using the earlier example:

5F + A3 + 11 + CE + 8E + FF + FF + 9B = 500

Krille
March 3rd, 2015, 04:01 PM
Option ROM checksums are calculated by adding all bytes except the actual checksum byte (usually the last byte) and then negating the least significant byte of the result (yes, it's a two's complement).

Example (?? is the last byte where the checksum will be stored);
5Fh + A3h + 11h + CEh + 8Eh + FFh + FFh + ?? = 46Dh

Now we negate the least significant byte;
0 - 6Dh = 93h

Now let's see if the checksum is correct (the least significant byte of the sum of *all* bytes must be 0);
5Fh + A3h + 11h + CEh + 8Eh + FFh + FFh + 93h = 500h

It appears to be correct. :)

modem7
March 3rd, 2015, 09:54 PM
(yes, it's a two's complement).
Yes, I got it wrong.

One's complement of 6D (01101101) = 92 (10010010)
Two's complement of 6D (01101101) = 93 (10010010 + 1)

I was looking at it only from the viewpoint of the motherboard BIOS.

beckenrandschwimmer
March 9th, 2015, 06:05 AM
I am still at probation. Sometimes it is not very nice because of long time (sometimes 36h) to be approved by one Moderator. So I could not see nollkolltrolls message before I had invested several of hours because of the check sum. But ok, it is better than having a lot of spam.


Perfect! I am enthusiastic because of making this old, unusable hardware flexible.

EDIT: not longer under probation, thanks! Now I can edit my messages!

modem7
March 14th, 2015, 10:00 PM
I have added the WD1002-WX2 to [here (http://www.minuszerodegrees.net/manuals.htm#Western_Digital)].
Your browser may need to refresh the page.