RE: CBM900 hard disk timeout

From: Martin Hoffmann-Vetter <>
Date: Mon, 13 Oct 2014 23:01:15 +0200
Message-ID: <001b01cfe728$d4a90af0$>
Hello Michal,

> After further examination I found that a broken 74LS14 driver was
> responsible for that. I replaced it with a 74LS04.

The 74LS14 has a schmitt trigger input. So it would be better to replace it with a real 74LS14 instead a 74LS04!

> The controller operation improved significantly. The 0x74 error was
> gone. The controller stopped hanging on the first disk access when the
> disk was attached.

--- snip ---

> Moreover, all the disk commands from the BIOS menu (such as "park
> heads") are now working.
> So I have now a working controller

Congratulation! This is the first step.

> It still, however, hung on the second
> initialization command (after first disk read fails).
> This led me to thinking that the controller hardware may be OK, and
> maybe it's the firmware that is acting badly. Specifically, maybe the
> controller does not accept the initialization command sent to it for
> the second time.
> The BIOS disassembly shows that the controller is being re-initialized
> after the first disk read fails. This would mean that the BIOS will
> make controller stop working after any read error, be it "disk not
> present" or "disk not formatted". So that would imply that most
> probably my MiniScribe disk is not formatted or otherwise faulty, so
> the controller cannot read from it.

So it's possible the pcb from the MiniScribe disk isn't okay. You have checked the stepping logic. At this time you miss the pulses at the INDEX line. Is this signal present with the working disk? If you see the pulses, you can analyse where the signal are generated. This signal must be pulse once at one rotation!

Seagate write for the index sensors:

--- snip ---
The Index sensor provides an index pulse to the recalibration circuit and to the interface of the ST-506 drive. Once each revolution (16.67 ms), the Index sensor outputs a pulse that is typically 200 microseconds in width.
The Index sensor used in the ST-506 drive is of the reluctance transducer type. Thee cylindrical sensor incorporates a built-in preamplifier. The case of the sensor is grounded electrically which ties the drive DC returns to the drive casting.
The hub of the spindle motor has two metal tabs attached; one is of a ferrous composition and the other is non-magnetic. Each reevolution of the spindle motor causes the ferrous tab to pass within close proximity of the Index sensor, therefor inducing the pulse output.
Note: The dimension between the spindle motor tab and the Index sensor is set to 30 mils (.030")  at factory.
--- snip ---

The MiniScribe 3650 and 3675 ( has an error code 4 for the case "Index pulse not detected during spinup". And the code 4 means:

0.5 sec. flashing red,      \ Bit 3 = 0
0.5 sec. off,               /
0.5 sec. red on,            \ Bit 2 = 1
0.5 sec. off,               /
0.5 sec. flashing red,      \ Bit 1 = 0
0.5 sec. off,               /
0.5 sec. flashing red and   \ Bit 0 = 0
1.0 sec. off.               /

The 3053 as this error code, too. But is flashes one time more at the beginning, because the error code is 5 bits.

It's possible the drives see the Index pulse but don't drive the bus, if you don't see a flashing code!

So have a look ... or try to change the pcb!


       Message was sent through the cbm-hackers mailing list
Received on 2014-10-13 22:00:02

Archive generated by hypermail 2.2.0.