I have a home made 8080 CPM 2.2 machine, with 2 eight inch floppy disk drives. All the circuits and boards are of my own design and manufacture. I started making this machine in the late 1970's and have been using it off and on since then. Since I retired about 10 years ago, I started to use this machine much more. The Forum has helped me greatly in getting installing CPM 2.2. Anyway, I ran into a problem that is rather frustrating. Occasionally, I will get CPM disk errors. That doesn't tell you much. Sometimes I'd get a few errors and then everything would be OK again. I blamed it on old media. During the past week or so, the errors came back. This time they were so constant that CPM would not load at all. I checked the disk drives. I have an interface to a DOS machine that allows my testing the drives and the media. I could not find anything wrong with drives or media or the 50 pin cable between the drives and the 8080 machine. With this eliminated, I looked at the 8080. First I verified that all my EEPROM memory was OK. I have a hot patch set up and sometimes I screw up the memory accidentally, but this was not the case. I added some logic traps to see what was happening. I found that my boot was working, it was selecting the A: drive and reading a few sectors to memory, but not always the same amount of sectors. Sometimes 5 sometimes 20, but never the total 49 sectors to completely load CPM. The traps told me that the machine was hanging up in a MSR polling loop, during the Command Phase of the FDC. For some reason, the loop was looking to see if the FDC was ready to received, but the FDC was ready to send. I was puzzled, so I figured I needed to look at the signals between the FDC(8272), DMA controller(8237) and the CPU (8080A). I have an old HP logic analyzer that is very handy for this. I decided to look at the DREQ, DACK, EOP/TC and the interrupt line. My FDC card was fitted onto the extender card and the LA was connected. I started with a short sampling period. I found 3.6 uSec DREQ pulse followed by a 1.4 uSec DACK pulse. This repeated after 31.6 uSec. Then after 128 bytes of transfer, I saw a 575 nSec EOP/TC pulse followed by an interrupt pulse 125 uSec later. The short sampling time only allowed me to see the transfer of one sector. I increased the sample time, which lengthened the observable period. I found that there was 173 mSec between sector transfers, which seems correct considering the RPM of the drive. I had to increase the sample time to 7 uSec to see the entire spread. 173 mSec x 49 sectors = 8.48 seconds. Then I realized, to be able to see this, CPM must be loading. I turned on the monitor and sure enough, there it was! I'm glad it is working, but what is the problem, how did it fix itself?
Here is what I think
1. Did the Logic analyzer loading on the monitored lines change something. I do not have any pull up resistors on any of these lines except the EOP of the DMA controller. I removed one LA line at a time and CPM loaded every time.
2. Could the extender card have caused an intermittent connection to change? The ribbon cable from the FDC card to the back of the computer box is in a different position. Maybe some different stress on it caused a better connection?
3. Could the extender card made a better connection to the motherboard?
4. Could the extender card cause a different stress pattern on the FDC card causing an intermittent connection change on the FDC card? In the past I have had a problem with some wire wrap connections where the insulation of the wire did not come right up to the pin and made connect with something else. I have stared at all the connections for a long time and have found nothing that looked like this. I also reseated all the IC's and changed the 8272 chip.
5. I don't think that there is a thermo problem. I have had the cover off the machine while it was failing to work and then again when it was. I have a heat sensor gun that I pointed at each chip and connection, but did not find any spots that were hotter than anything else.
These problems that are on again and off again are frustrating. I'd rather have something catch fire and burn up. Does anyone have any other ideas that may help? Thanks
Mike
Bookmarks