fox@zbrka.alphacdc.com (David Fox) (02/23/90)
I finally have my Segate ST251-1 disk drive working with my Tandy 6000. I want to thank everyone who responded to my earlier posting, especially those I was not able to reach by mail. Although no one was able to pinpoint the cause of the failure I did receive a lot of valuable information. The symptom was that any attempt to format or access the drive resulted in a complaint that the drive was not ready, or a hung system. A little probing revealed that at some time during boot up the drive got into a state with -Seek Complete high and stayed that way. The source of the problem turned out to be series of step pulses with out of spec timing. (Too fast for track at a time seek and too slow for buffered seek.) Shortly after that discovery, Monty Schmidt (monty@larry.sal.wisc.edu) kindly sent me a copy of his disassembly of the 6000's Z80 boot ROM, which was a great help in locating the exact cause of the problem. Here is the relevant bit of code: address Z80 code 104 ld a,05h ; set up for seek to track 5 106 out (cch),a ; write to WD1010's LSB cylinder register 108 ld a,73h ; seek command with 1.5 ms between step pulses 10a out (cfh),a ; write to WD1010's command register The 1.5 ms step pulse timing is out of spec for the ST251-1, the ST251, and even the original equipment TM503. Nevertheless many drives seem to tolerate it. My bad luck that I bought one that did not. In any case, the fix is easy (if you have access to an EPROM burner). The boot ROM is a 2716 (U54) on the main board and is accessible by removing the back panel containing the fan from the 6000. Change the byte at 109h from 73h to 70h so that the code reads 108 ld a,70h ; 3e 70 10a out (cfh),a ; d3 cf This will use the fastest (~35 us) step rate. Possible gotchas: There may be different versions of the ROM so the above addresses may differ between systems. My ROM had no version number or date either programmed in it or attached to the package. The 6000 service manual says that one of the self tests done at boot up is a checksum on the ROM code. If this were true the checksum would have to be patched to avoid a nasty boot error. My ROM did not do this test. I have been up and running for about a week with the patched ROM. The only possible problem is that I occasionally see a message like the following on the console: Bugchk: UnkInt Code ....4... Bugchk: HdTimeOut Hard disk 0: hard error 005A while Writing Cylinder xxx Head y Sector zz The values xxx y and zz are always different and I have not been able to detect any corruption of data or damage to the file system. I would like to understand what is causing this message to know if it is safe to ignore it. I have not been able to find any mention of anything like it in the FM. There remains the question of which drives work with an unmodified 6000 and which ones don't. Unless the manufacturer says the 1.5 ms between step pulses is OK there seems to be no easy way to predict. My experience is that Tandon TM502 and TM503 (original) drives work while a TM262 and the ST251-1 do not. I received several reports that the ST225 works and Jay Rouman (jsr@sharkey.cc.umich.edu) had experience with a couple of other Segate drives: Anyhow, although attempts to get the ST251-1 to work were totally unsuccessful, I have had good results with an ST125 (3.5" 20Meg) as primary and an ST251-0 (the slow version) as secondary drive. I have also used the ST125 as a secondary (and the old internal Tandon as primary). I have never tried to make the ST251-0 into the boot drive (the ST125 is a lot faster so I thought it should be providing root and swap). --- David Fox fox@zbrka.alphacdc.com {isis|ncar|boulder}!scicom!zbrka!fox