• Please review our updated Terms and Rules here

8272 FDC to 8" drive connections

Well...... through experiment I found that the SDS does not issue an interrupt. I wrote some code to do specify and then a SDS and report the ST3 results. I can read the current drive, the head address, two sides, track 00, ready, write protect and fault. I tested the drive number to change from 00 to 11, the ready and not ready, write protect and track 00. The 2 side, and head address do not mean a lot because of the disks I'm using. I can't figure out how to test the fault bit. Not 100% sure what fault means exactly. More reading. Anyway, seems some of this stuff is working. Mike
 
That "Fault" bit isn't used by most drives--the idea was that the drive could indicate a fault condition during a read or write, but not a seek--the fault signal is supposed to be multiplexed wtih the track 0 signal. Turned out ot be completely superfluous. Later versions of the 765 just assumed that the bit is 0 and unused.
 
This brings up another question regarding 'errors'. As I was writing the routines for Recalibrate and Seek, I noticed again that the status registers have a lot of error information. To this point I do not have a error handling routine. All that I've done is to monitor any error that then set a FDCERROR flag, doing nothing after that. CP/M talks about BDOS errors, BAD SECTOR, SELECT and READ ONLY. How does the error information get from the FDC Status registers to the CP/M operating system? Thanks Mike
 
Generally, it doesn't. You get to return an error in the (A) register for the READ and WRITE routines and that's it--and it's go-no go type. 0 if no error, 1 if error . Details are left up to the CBIOS.

All detailed in the "System Alteration Guide".
 
Thanks, More reading. Tried my recalibrate and it didn't work first try, no surprise. Got something wrong. The program runs through and an interrupt is issued, but the head doesn't move. Oh well...... Mike.
 
No, I'm not. I think I have a different problem. The 8272 is issuing pulses on the step line when a recalibrate command is done. I can see them on my scope. But all I see on the pin 36 to the FDD is noise. I think the problem is that I have tooooo much ribbon cable between the FDC board and the drives. I have eleven feet. Probably should cut that down a lot. AND, I only have pin 1 grounded at the FDC board. I'm thinking that all the odd lines should be grounded on both ends of the cable. Do you think I could be by with 4 feet of ribbon? What do you think about the grounds? Thanks Mike
 
Believe it or not, you should still be able to get action out of your drive with a 3 m cable. The pulses are slow-speed. But yes, you should ground all odd pins, if for no other reason to diminish crosstalk, which on long cables can be considerable. I assume that you're driving the line with an open-collector driver (e.g. 7438 ) and the drive end is terminated with 150 ohms to +5.
 
Mike_Z said:
... I only have pin 1 grounded at the FDC board...

Think of the grounds as stopping cross-talk noise between the signals. Yeah you should ground those and then, maybe, 11 feet might work.

...is issuing pulses on the step line...I...see them on my scope...But all I see on...pin 36...FDD is noise....

Power down and check for continuity with an ohm meter. While you're there make sure the pull-up resistor is on the signals... the bus is open-collector which means a signal only tugs a line voltage to ground... if there is no pull-up resistor on the signal, it won't propagate the signal. Pull-ups are usually done at the opposite end of the cable from the signal source.

Step is pin 20 on a 5.25 inch drive and pin 36 on a 8 inch drive.
Make sure DIRECTION has a valid signal too. Pins 18 and 34 respectively.

...Do you think..4 feet of ribbon?...

4 feet would be more common. I think you mentioned using 8 inch drives, let's assume double density, and you're moving the fastest data signals possible... So a shorter cable might be more reliable in the long run but it should not stop a slow step pulse from getting though.

Generally when you're checking out an unproven design, you want to minimize chaos. If you didn't use an 11 foot cable until after the system is proven, you'd know when adding the longer cable if it alone changed the dynamic.

When you're debugging code and FDCs, you don't need that variable in the equation. Simplify the system and you'll make faster progress.

Check your drives spec for minimum step pulse duration and whether it can buffer up step pulses. You might just be sending pulse width too short or are not allowing enough time between step pulses.
 
Last edited:
Well..... I toke some time to take the drives and enclosure apart to inspect the jumpers. I also toke some time to make a few improvements to the enclosure to make working on it a little easier. Anyway, the jumpers are in place for the terminator resistors to be on the inputs. I cut the ribbon in half so it's about 5 feet long now and I checked at the connections at both ends, all seems to be OK. I also grounded all the odd pins, that toke some time. Put it all together and I still do not get a response to recal. I looked at pin 36 and most of the noise is gone and I see the step pulses here. So that is a "step" in the right direction. One thing that I noticed and am wondering about is the 'In Use' light on the front of the drive is partially lit. I looked at pin 26, DS0 and there are pulses on it that are a few us wide and occur every one millisec. Is the 8272 polling the drive? On a recal (by the way I don't see any step pulses after a reset) shouldn't the DS0 go low for most of the recal command?

The step pulses I see are low for 8 us separated by 12 ms. I mis interpreted SRT in specify. I thought that if the number was set to 12 (1100) it would be 12 ms, but it must be a divider. If I set it to 2 (0010) then I get 12 ms separation of the pulses.

Confused Mike
 
What is the amplitude of the step pulses? Should be between close to +5V high and about 1.0V low. DS0 low should be coincident with STEP/ low. While we're at it, how's the +24 to your drive? You're using an SA-801? A way to check the +24 is to ground "HEAD LOAD" and see if the solenoid fires.

Yes, the 8272 does poll automatically.
 
Yes, I was just reading about drive status polling. The step pulses are about 4.8 volts high and 0.2 volts low, should be fine. I have a SA800 drive. I have tested the SA800 on a DOS machine using Dave Dunfields program and the drive preforms fine there. I'll check the 24 volt tomorrow, but if the drive works on the DOS machine I would think the 24 is OK.

Are you saying that when the step pulse occurs the DS0 should also pulse for the same time? I did see the activity light brighten a little during the step pulses (higher duty cycle). It is a little hard to see the extra DS0 pulses in between the polling. Maybe if I trigger on the step pulse and look for the DS0 pulse on the other channel. I can try that tomorrow. As I said earlier the pulse width is about 8us, is that wide enough? Don't know how to make it wider thou. Mike
 
The SA800 OEM says that the minimum step width is 1 usec, so you should be okay. You can also disconnect the drive, and set DS0 low and manually ground (intermittently) STEP--the positioner should audibly respond. This part of the drive is very straightforward.

You were saying that you had the drive hooked up to a PC. That normally uses DS1 instead of DS0--are you sure that you changed the jumpers when you went to your own setup?
 
Last edited:
Well... this morning I tried a few things and made some progress. First, I looked over the wiring of the DS decoder. I had an error between the 8272 and the 71139. That didn't change anything. I manually selected DS0 and the step pulses of the recal command worked, the head moved to track 00. So I set up the scope to look at the step and DS0 pulses. I had to trigger on the step pulse, because of the drive polling. After a little time seting up the scope I saw that the DS0 was not going low enough (only for the step, the drive polling pulses are OK). I tried to increase the pull up resistor value from 150 ohms to 370 ohms. I also tried a different 7438 chip. The wave form now showed that the low was better. Yet it still didn't work. The waveform showed that the timing looks OK. The DS0 pulse is about 75 us wide and the step pulse is 8-10 us wide and occurs within the DS0 low pulse. I'm going to try an even larger pull up resistor, 1k and see what happens. Mike
 
Well, I pretty sure there is something wrong with the device select lines. I looked at the DS0 & DS1 lines from the 8272. They are mostly high all the time. Then every millisecond the DS0 has two short low pulses and DS1 has one short (twice as long) pulse. These pulses go to the 2 to 4 decoder, which produces a 8 us pulse Drive 1, 2, 3. Drive 4 is selected a lot, because the 8272 DS0 & DS1 lines are mostly high. I'm not sure I understand why this is. The decoder outputs go to 7404 inverters and then 7438 OC NAND gates to drive the ribbon cable. These are the drive status polling pulses. When a RECAL command is done, extra drive select pulses (maybe 75 us) come out, with step pulses. The step pulse is about 8 us wide and works fine to step the motor when DS00 is manually grounded, but not when the DS00 8 us pulse occurs. The step rate is 12 ms, so how can the 8us select pulse actually do anything? I'm stuck right now and have to stop to think about this. If you have any ideas I'd appreciate the input. Thanks Mike
 
Chuck, No, I was unaware of that document. I'll read it during the football game today, thanks.
Dallas, I 'll try those things. My intent today is to look over the Shagart diagram and check the signals from the input terminals to the stepper motor. At first glance it looks very simple, yet there are a boat load of jumpers that I'm going to re verify. I'm mystified as to why manually grounding pin 26 makes the drive work but the DS0 pulse will not. So I'm going to poke around in the drive circuits today and tomorrow. Let you know what I find or probably ask a few more questions. Thanks for the help Mike.
 
Or, to put it a different way, can you pull DS0 (or any pin) low from the FDC side of the cable? If you pull out the 7404 driving the 7438, do all of the corresponding driven lines on the SA800 go low?
 
Back
Top