See also my floppy test program
I had been having some problems with the floppy drives being intermittent but it was infrequent enough that I hadn't put much effort in fixing them. At the February VCF workshop at System Source I had brought my machine to help others working on their OSI's. This time the B drive wouldn't copy a disk. Wiggling cables etc didn't help. This page documents what I did to try to fix the drive. My machine has non-standard switches to swap A and B drive so I can boot off of B. Not sure why the previous owner made that modification. I tried booting off B and it seeked to track 0 and loaded the head but hung at that point.
My drives are Shugart SA800 with the on-drive data separator enabled. From online pictures these seem reasonably common but other drives were also used. Most of this information should be general enough to be useful for any drive.
When I first got the system the drives were very noisy so I re-lubricated the spindle and I think the drive motor bearings. Don't remember if I had to do anything with the disk clamp bearing. I don't have a writeup on this work available. Most of the bearings I have found are standard bearings such as the spindle bearings are SR4-ZZ (double shielded) and SR4-ZZ with flange. The re-lubricated bearings are pretty good but not as quiet as if they were replaced.
First I pulled apart slightly the A12 to 505 CPU board connector so I could attach scope probes to look at the signals. For my board drive A is normally selected so the signals from the drive are active. Without the heads loaded it picks up the signals shown but the data is noisy. To see good data either push down on the head load mechanism or try to boot from the drive and capture while the head is loaded. What the data looks like will vary with the data on the disk. 1/Yellow = Index, 2/cyan = Ready, 3/Magenta = read data clock, 4/blue = read data.
Click on pictures for full size.
Zooming in with the head loaded I captured this data pattern.
The OS-65D writes serial data to the drive with 1 start bit, 8 data bits, even parity and 1 stop bit. Idle is one, start is zero, and stop is one, OS-65U uses even parity on first track and for track identifier on other tracks. Rest of track is written with no parity.
Without knowing what data was written it's hard to tell if it's good but nothing is obviously wrong. For OS-65D track 1 and above starts with hex ($) $43, $57, track number in BCD, $58. For OS-65U track 1 and above start with $80, track number low byte, track high. Track 0 doesn't have fixed header bytes for either operating system. For the OS-65D and OS-65U disks I have start track zero with $22, $00.
I then switched to the B drive and got this with head loaded.
That's obviously no good. Poking at the drive it appeared the cause was a bad connection on a socketed chip on the drive. I cleaned the IC leads and put some contact cleaner on the sockets and reinstalled all the chips and the drive now showed good data and would boot from B drive.
I then tried to copy some of my disks to floppies someone gave me to send them some known good disks. The writes always failed. I found some gunk on the head and cleaned it but that didn't help.
Since I couldn't find any OSI floppy test programs I wrote one. It showed my drives were fine using my disks but the disks I was given are bad. They were new old stock disks but the coating seems to be deteriorating. One of my disks I got occasional data errors during my testing. I'm using a 505A with schematics here
I found that one of the one shots was out of adjustment which caused incorrect reception of the data if the bit was early. For receive there are two one shots. The clock one shot is supposed to be 1 microsecond (us). It needs to be larger than the 900 nanoseconds (ns) minimum clock pulse for the 6850 UART. The second one stretches the zero data pulses so they can be clocked in by the clock. From what I was able to find that should be 3 us for 8" and 6 us for 5.25". The 505 schematic has timing written on it but not very legible. The Sams C4P service manual from OSIweb only gives 5.25" timing. The two one shots for transmit are supposed to be 400 ns. The DRAGON BYTE technical manual on this page has a good description of configuring OSI systems for floppy drives. It says 6 us for 5.25 but 2.5 us for 8". I think 3 us may still be better but find what works well for you.
My test program said that it received a $F7 instead of the $E7 pattern I wrote. Looking at the plot you can see the two zero data bits between the clock slightly to the right center in the light blue so that looks good. On the logic analyzer traces at the bottom you can see the data pulse on U4-12 for the second 0 goes back high slightly before the clock pulse on U4-13. Pulse is marked by red dot. Since serial data is sent LSB first the second zero that is received as a 1 converted the E7 to F7. Adjusting R57 to 3 us made it read the disk without error.
This is the closeup showing the one shot was generating a 2.66us pulse. One shots and associated components tend to drift with time so this is to be expected. Checking the timing of all the one shots is a good idea if you are having floppy problems.
And this shows the real problem. The disk has a bad spot in the coating that causes a dropout in the signal strength. It's likely that the dropout will cause data errors in the future so best not to use this disk for anything important. There is no way for my diagnostic program to determine if dropouts exist unless they are bad enough to cause data errors. You would need to manually check with a scope. Use SA800 test points 3 and 4 for checking the signal amplitude. With my scope if I probed test points 1 & 2 I would get read errors.
And the full track. The dropout is just visible. Some variation in amplitude is normal.
For the SA800 drive there are also one shots in the data separator. The nominal timing is in the theory of operation manual in this directory on bitsavers. The manual also has a good description of how a floppy drive works. The track format is not applicable to the OSI. It uses a non-standard track format. The manual says one output should be 2.9 us and the other 3.1us. On my A drive they were both 2.9 us.