TRS80 Model 1 Fixup - Part 3

So with a power supply, working power switch, restored Expansion Interface and a suitable case, things were looking good for a quick test of the Model 1 / FreHD adaptor and move on to the next project.

As they say on the billboard advertisements for Tui beer in New Zealand.....

I do however now have a lot better understanding of the WD1771 floppy disk controller and how it is integrated with the Model 1 EI.

For those that like to jump to the end of the book.... the problem was C62 (a 33uf electrolytic capacitor) in the "later revision" EI (not sure how EI's are actually named and probably a different component reference in the early version). Replacing this cured all the boot problems.

The path to discovering this is the interesting bit.

The behavior of the machine was that it would boot "sometimes".... perhaps 10% of the time. It didn't make any difference if it was a boot from power on or pressing reset.  If the boot failed it would just hang with a blank screen.  If it did boot then LDOS would run perfectly but a reset or power recycle and it was back to the "will it boot" problem.

Went through all the basic problem solving steps by changing the following:
1. Floppy drive (both 3.5" and 5.25")
2. Drive cable
3. Keyboard to EI cable
4. WD1771 controller
5. Added a Percom Data Seperator

None of these improved the situation to any extent.

One interesting difference that pushed me down an incorrect path was that sometimes when the boot failed the disk heads would step inwards to the center of the disk and stop when the drive hit the stops.  This made me suspect the 7416 driver that controls the direction and step lines.  I replaced this with a 7406 but it didn't fix the boot problem.  I discovered afterwards that this behavior would only occur with certain WD1771 chips. I have two different types... an original RS part that I got from Ian and some later "1982" NOS WD1771's that I got on eBay.  Only the "1982" versions exhibited the stepping behavior.

Spent some time writing some simple basic programs to test the FDC.  It was with these that I discovered that I could cause a similar problem.  Some requests to the FDC to move to different tracks would not complete and the WD1771 status register would report "busy" until it eventually timed out and the busy flag was cleared.  Further digging with the logic analyzer showed that the WD1771 "Ready" line was being deasserted before the command completed.

In the WD1771 datasheet it says that "Ready" is how the drive tells the controller that it is ready for the next command (such as stepping commands when seeking a track).

In the Model 1 (and possibly the Model 3/4) "Ready" doesn't come from the drive (because mini-floppy drives don't seem to have a concept of "ready") and is generated in the EI.  When a drive is selected by writing to 0x37E0 drive select latch this is loaded into Z47 (a 74LS175 flip flop).  The DS outputs are OR'ed to generate the "Ready" so this will high if any drive is selected.

Because "mini floppy" drives are not intended to run continually Z33 is used to clear Z47 and deselect all drives approximately 2-3 seconds after the drive is selected. Z33 is a 74LS123 and uses R25 and C62 to generate a "delay" during which the drive select is active.  If the drive is not re-selected this will timeout and "Ready" will clear.

As C62 had aged it's value has changed (reduced) so Z33 was timing out early and as far as the WD1771 was concerned the drive had gone off line.

This caused problems at boot because the bootstrap code is pretty simple and didn't expect that it needed to reselect the drives during the process because the C62 would keep the drive selected.  The reason it worked sometimes was just luck and where the heads happened to be from the last failed attempt.

Replacing C62 with a new 33uf Tantalum capacitor ($2.50 at Jaycar in New Zealand) fixed the problem and all disks I have now boot.


The offending C62....

... and it's replacement.


Powered by Easytagcloud v2.1

Contact Andrew Quinn