TESTING NEW SHADOWING MECHANISM
I loaded the FPGA and PICO of the Virtual 2315 Cartridge Facility (V2315CF) with the updated functionality and repeated the tests from before - using the disk in real mode, issuing seeks of various distances. I wanted to check that the V2315CF reported the ending cylinder number that is expected from the distance of the seek, that the disk arm moved to the correct ending cylinder number, and that the program seeks a successful completion.
The arm appears to be reaching exactly the cylinder it should based on the XIO Seek commands issued. The V2315CF is still missing some counts which is still symptomatic of the glitches from +Access Ready as it appears at the 1130 backplane. This is a combination of the disk controller logic being tripped up by the glitches and the V2315CF misbehaving.
Interestingly, the disk drive still sees the correct number of steps, even if it is a short glitch on -Access Go that was triggered by the glitch on +Access Ready. While I could probably develop logic in the V2315CF that would be insensitive to the glitches and mistakes of the disk controller, the right thing to do is to fix the glitches themselves.
The top signal is -Access Go as emitted from the 1130 backplane. The second signal is +Access Ready as it comes back from the V2315CF. This is produced from a timer based logic chain thus the signal going out of the FPGA pin is unglitched but it sure isn't when it arrives at the 1130. The third signal is the -10 Mil Step signal, being advanced to a 20 mil step because the glitch appears to be the drive dropping +Access Ready as it is in the midst of the 10 mil first step.
SIGNAL INTEGRITY WORK PLANNED TO ELIMINATE THE GLITCHES
I had already ordered new terminator resistors to improve the impedance matching. The parts arrived today and I carefully removed the 113 resistors on one of the terminator boards and clean up all the pads. It is ready for me to solder on my 1206 size 179 ohm and 0603 size 249 ohm resistors, when I get back to the shop.
The new version of the 2310 Interface Board is still in fabrication in China, but I have the parts to put it together if I believe that the signals will be improved by connecting source to destination directly for all the important seek related signals, eliminating the FPGA in the signal path other than to monitor some of them.
I am going to work on the twisted wire shielding for the cable I made to run from the 2310 Interface Board to the disk drive. I may be picking up induced signals that are leading to the glitches.
I need to put the oscilloscope on +Access Ready both at the 1130 backplane at as close to the V2315CF circuitry driving it as I can. I want to see exactly what these signals look like that are causing the issue.
ORDERED THINNER CARTRIDGE BOTTOMS FOR MINI CARTRIDGES
The mini 2315 cartridges used with the V2315CF are built with a circular white PCB marked to look like the top of a 2315 cartridge, mounting the micro SD card socket and other parts underneath, and placed on a 3D printed bottom cover to make it look more like a tiny version of the physical disk cartridges.
I thinned out the bottom cover a bit. I can't make the depth proportional to a full sized 2315 cartridge because that doesn't allow enough room for the sd card socket and the header pins that connect the mini cartridge to the V2315CF. However, I had excess material on the bottom which I cut back to improve the esthetics a bit.
 |
| Actual color is white |
I ordered a batch of 25 from CraftCloud3D.com in white PLA. These will be glued to the bottom of the PCB to make up the mini cartridge. Proportionally, the walls would need to be about 1/4 of the height in order to look like a tiny 2315.
I could get closer by notching out the space where the right angle 2x4 header is installed (the opening in the front of the image above) so that it hangs down below the bottom of the mini cartridge. The plastic and copper of the header would be visible below the mini cartridge yet the rear portions look like the 2315 in miniature.
INVESTIGATING THE MECHANICAL STOP AND THE CYLINDER 202 ISSUE
I had observed an issue when the disk controller attempted to move the arm past the physical limit of the disk drive. The disk implements 203 cylinders, thus can move from cylinder 0 (home) to cylinder 202. Seeks are relative operations, requesting a movement of a number of cylinders from the current position. Thus, it is possible to request a movement that would naively move the arm past cylinder 202 (or backwards past the home cylinder).
The disk does not directly support a relative movement of an arbitrary number of cylinders. Instead, it can move exactly 1 or 2 cylinders, a step size of 10 mil or 20 mil. The disk controller converts the count of relative movement given by the 1130 XIO Seek instruction into a series of 1 or 2 track steps to move the arm to the final destination.
The drive has two mechanical stops that block the arm from moving past the two limits. In addition, there is a microswitch that turns on when the arm is at the home cylinder, which the disk controller uses to block any further reverse movements. There is, however, no microswitch to indicate that we are at cylinder 202, so the disk controller will try to move forward to complete its count and the disk drive will try to move 1 or 2 cylinders per step until the controller stops requesting steps.
 |
| Cyl 202 crash stop in red, home crash stop nut in green |
Moving a step in the drive involves releasing a detent, a tooth that fits into a notch in a rack to hold the arm at its current position. It then accelerates the disk arm using a voice coil magnet up to a set velocity, then decelerates to bring the arm to a stop. The detent is also released to fall into the appropriate notch for the new cylinder location.
If the mechanical stop blocks the arm from moving, it can't accelerate to the trigger velocity. The circuitry to stop the voice coil acceleration depends upon that trigger being reached. Thus, one of three conditions can occur. First, the velocity reaches the trigger level and the movement stops. Second, some backup method stops the movement of the arm even though it doesn't reach the trigger speed. Third, it doesn't reach the trigger speed and the backup method fails to work, resulting in the circuit perpetually driving the voice coil to accelerate the arm.
In the third case, the drive makes a continual buzzing sound and even a system reset of the 1130 will not stop it. Only by turning off the run switch can we break the drive of that pathological state. This is exactly what we are experiencing when we try to move past 202.
There is a vague mention of the backup method - stating that "a resistor" causes the trigger to be turned off in about 40 milliseconds because it charges the integrator that is otherwise only charged by the tachometer sensing the speed of the arm. Normally the acceleration reaches the trigger level in less than 4 ms, so this would definitely be a safety net for the drive when it is blocked from actually moving.
However, nothing in the manuals defines where this path is or how it works. I suspect I understand the mechanism and the way it might fail - only a very few components could still allow normal arm movement but fail to trigger when the arm is blocked from moving.
My first check will be the setting of the mechanical stop that blocks the arm from passing 202. It must have a gap between the arm and the stop, when the arm is at 202, of .003 to .009 inches according to the manual. This must be wide enough that the tachometer can charge up to the velocity trigger before the arm stops moving, otherwise we reach condition 3 that is the pathology observed.
A single track is 10 mil wide, .01 inches, thus the outer range of the setting has to be less than this to ensure we don't actually move to cylinder 203. Thus, the max gap is .009" for the stop setting. However, we don't know how close the minimum gap can be and still block a 20 mil step. It depends on how long it takes to accelerate the voice coil to its target velocity for that step size - the velocity needed for 10 mils being lower than that for 20 mils.
Ideally the design of the drive provides some safety margin so that even with the minimum gap of .003" the target velocity can be attained, but I have no data to see the speed we could reach in that case nor the trigger level needed to shut down the acceleration.
The gap did appear to be too tight- with a .006" feeler gage in place, the arm did not get the even detent tooth fully to the notch for 202.
Something occurred to me as I thought about the condition when we are already at cylinder 202 and attempt to move beyond it. If we try to move 10 mil, the disk drive circuits alternate between odd and even detents to achieve a 1 track movement. If we step past 202 with a 10 mil step, the detent will flip from even to odd.
The tooth can't fall into the notch for 202 - that is a notch on the rack under the even detent. It must fall into a notch under the odd detent, which might put the arm back at 201 or let it set at 203. There is no circuitry to stop the alternation of detents, thus no way to block this if we are at 202 and try a 10 mil step. This does not sound like a useful behavior for the drive, but I can't see how it will detent properly back at 202 in this scenario.
TESTING THE SEEK PAST 202
I did some testing using the small test program I put into memory. My first seek from cylinder 0 was to reach 201, which it did successfully. I verified the arm position and that the odd detent was the one engaged in the rack.
I then issued a move of 1 cylinder forward, which caused the drive to successfully stop at 202 with the even detent engaged. Now I was ready to attempt to move past 202 to see what would occur.
I did a seek of 1 cylinder again, which switched to the odd detent and tried to move past 202. It entered the pathological condition, buzzing with the voice coil steadily energized trying to move the arm forward. This did confirm however that the design of the disk drive does not recover to a good state if the advance past 202 is done with a 10 mil step.
I believe I tried again, getting the arm to 202 but this time I moved 2 cylinders so that the even detent will remain engaged. This time it attempted the move, ended the seek normally and was sitting at 202 afterwards. My conclusion is that the drive should be shut down and restarted if the program ever tries to move beyond 202, since in the best case it is on 202 but it could slip back to 201, try to hold position without a detent in a notch, or enter the pathological case.