• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Floppy drive obliterating track 0?

outZider

Member
This has been bugging me all day, appreciate a few other eyes before I claw mine out. :)

I have a Macintosh IIcx. Had some decent capacitor damage with no perceptible battery damage. Washed the board well, recapped with tantalums, had to create a bridge to complete the startup circuit. It's otherwise acting pretty darn great.

Except for the floppy drive.

When a floppy is first inserted, things work great, and then it quickly goes into a state where the Mac is unresponsive or pausing until it's ejected. Booting off a freshly created disk will boot, and then will never boot from that disk again. Running Disk First Aid on the disk says that the contents of the disk can't be read when reading the catalog b-tree. So, replaced that drive with another drive I cleaned -- same symptoms. Swapped the floppy cable -- same symptoms. I guess that means either both drives have the same problem, or something's wrong on the IIcx. So, here's the fun part. If I flip the write protect switch on the disk itself, the floppy will continue to work indefinitely. No issues at all.

I created an image of the floppy disk after the IIcx ate it, and it looks like it obliterates track 0. Can anyone think of a reason why a machine would do that if it's not the floppy drive that failed. Or, alternately, maybe the same thing busted on two of my floppy drives?

Any ideas are welcome. Thank you. :)
 

outZider

Member
Tinkering a little last night, I realized I had an external floppy drive connected to a IIgs, so plugged that in. Exact same symptoms -- blows away part of the disk when not in write protect mode, does fine in write protect mode. At least it's consistent across both interfaces...
 

outZider

Member
This might be turning into a little blog.

Just to double verify, I popped the disk drive into another Mac, and it's working splendidly. Since the SWIM sits under the power supply, I'm waiting on a better solution for wiring up test probes, but since most of the signals float through to the external floppy port, I hooked up a logic analyzer to the external port and watched a boot from the floppy while it wrecked track 0.

For a brief moment, _WRREQ is asserted low, very early on, while RD and WR are both high. During most of that period, PH0 goes high, PH1 is low, 2 is high, and 3 is low. My guess is that this is asking the floppy to just start writing nothing where it's at, which is what is knocking out track 0. I still have to figure out if that happens on any other machine, but my only other Macs don't have an external floppy port.

If that is something that's unusual, then I need to figure out how WRREQ goes low. That equation isn't published anywhere... but according to the Disk II schematic, for WRREQ to go low:

First state: {
_RES -> (9334 p15 _C) low
_DEV -> (9334 p14 _E) low
AD0 -> (9334 p13 D) high
AD1 -> (9334 p1 A0) high
AD2 -> (9334 p2 A1) high
AD3 -> (9334 p3 A2) high
} = 9334 p12 Q7 high
or Second state: {
_RES -> (9334 p15 _C) high
_DEV -> (9334 p14 _E) low
AD0 -> (9334 p13 D) high
AD1 -> (9334 p1 A0) high
AD2 -> (9334 p2 A1) high
AD3 -> (9334 p3 A2) high
} = 9334 p12 Q7 high
then, 74LS05 inverts the high signal on 3 to low on 4

Hoping this might ring bells for someone, but otherwise, I think the next steps are to see if WRREQ is asserted on a normal machine to make sure I am not down a rabbit trail, and then to analyze the address inputs to the SWIM and see what might be happening.
 

cheesestraws

Well-known member
Just so you feel less like you're soliloquising, I am reading with interest. I have nothing to add but I will be interested to see what you find!
 

halkyardo

Well-known member
Yeah, this is fascinating.

Somewhat beside the point, but many many years ago, I had an old 486 PC that would do something similar when booting from a floppy disk. It would boot successfully, but corrupt the disk in the process, even if the write-protect tab was set.

If it'd help, I can take a look at what I see on my IIfx and/or SE/30's floppy port at the start of a boot. Might be a couple of days before I get the chance to do so, but if I haven't come back with an update by the end of the weekend, feel free to bug me about it.
 

outZider

Member
Thank you for the offer! My other two floppy-equipped Macs are the IIfx and the Centris 650, neither of which have a floppy port. Your comment reminded me, though, that the IIfx has an additional internal floppy connector, and that did in a pinch.

Bad news is, the IIfx also asserts _WRREQ when initially reading, so that in and of itself wasn't the problem. However, on the IIfx, WR/WRDATA remains low during that period, in fact, WR is just pegged high on this IIcx for most, but not all, of the boot process. That seems to be the problem, and that's what I'll trace through tonight.
 
Top