Sunday, August 30, 2026

Testing my new seek logic for the Virtual 2315 Cartridge Facility - 15

FPGA IN V2315CF UPDATED TO WORK WITH ELECTRONIC SWITCH VERSION

The FPGA inside the main box of the Virtual 2315 Cartridge Facility (V2315CF) was loaded with the updated logic that renders the output drivers of the box inert for signals that are directly connected in real mode between the 1130 and the 2310. This resolved a problem seen in the last test session, where I two sources were driving signals in opposite directions. I also added in the version of the seek shadowing logic that was hoped would be impervious to glitches. The terminator resistors were installed only on the signals that require them. 

TESTING WITH HAND ENTERED ACCESS PROGRAM

I ran the hand entered code that will repeatedly drive the arm between cylinder 0 and cylinder 200 as long as the 1130 is in run mode. The disk performed exactly as requested, stopping each time at 0 or 200, but the V2315CF got out of sync a bit. It recorded the lowest cylinder location as 2 and the top location as 202. Once it was out of position, it never locked in to cylinder 0. 

OBSERVATIONS OF SHADOWING IN THE V2315CF AS THE ARM MOVES

The logic in the V2315CF can observe the microswitch that turns on the -Home signal to logic low when the arm is at cylinder 0. Based on that, I can reset the current cylinder to 0 when we are beginning a seek when -Home is asserted low. That would have solved this particular issue, but if I had a program that zoomed back and forth between two cylinders that did not include 0 - say cylinder 10 and cylinder 190 - then if it got out of sync the microswitch fix won't help. 

DEVELOPED MODIFICATIONS TO SEEK SHADOWING LOGIC IN FPGA

I put in the logic to reset the cylinder whenever the arm is sitting at cylinder zero. I also made changes to hopefully address whatever issue caused it to get out of sync with the actual disk arm. When I get back to the shop I can test this to see if I resolved the vulnerability or not. I will also have the logic analyzer collecting data as I test this out, to see if I can spot any other situations that cause the FPGA logic to misbehave. 

Friday, August 28, 2026

Checking signals and termination resistors on the Virtual 2315 Cartridge Facility - part 1

REVIEWING TERMINATOR CARD FOR SIGNALS ENTERING THE V2315CF MAIN BOX

The Virtual 2315 Cartridge Facility (V2315CF) sits in between the IBM 1130 disk controller logic and the internal 2310 disk drive inside the 1130, routing signals into the main box of the V2315CF. Some signals are directly connected between disk and 1130, but a tap sends the same data into the V2315CF, while others are either generated in the main box or received there and then rebroadcast on another line.

The main box has a plug-in board with terminator resistors. One pulls the signal line up to +5V while the other pulls it down to ground. This sets the signal, when no other element drives it, at about 3V and yields an impedance of 104 ohms which is close to the ribbon cables that carry the signals between the main box and the 2310 Interface Board that routes signals to the 1130 and 2310 cables. 

The 1130 or 2310, depending on the direction of the signal, also provide a pullup resistor to +3V for most signals. This can interfere with the impedance and voltage levels of signals. I wanted to observe each signal to see what when they need the termination resistors installed and when they are better off without them. 

WORKING ON SEEK SIGNALS FIRST

The signals involved in a disk arm movement (seek) are -Access Go, emitted by the 1130 disk controller logic to request a movement, along with -10/+20 Mil Step and -Rev/Fwd Direction  signals that the 1130 sets prior to the falling edge of the first signal. The 2310 disk controls the +Access Ready feedback signal, which provides a handshake to the 1130 indicating when the arm has finished moving. 

+Access Ready will drop low about 5 milliseconds after the 2310 has seen a falling edge on -Access Go. The 1130 will respond to the drop of +Access Ready by returning -Access Go to logic high. After a further 10 milliseconds, +Access Ready returns to logic high indicating that the arm movement has completed. All four signals involved in the seek are directly connected by the electronic switch chips while the V2315CF is in real mode, so the output of the 1130 is directly connected to the 2310 and the output of the feedback from the 2310 is directly conneccted to the 1130. 

The FPGA in the V2315CF snoops on those signals so that it can shadow the position of the disk arm, knowing exactly where the drive arm is sitting at any time. I had hammered out some logic that I believed would be unaffected by the kinds of glitches I saw on the signal lines when I observed them using my logic analyzer. 

TRYING TO MOVE THE ARM RESULTED IN HARD SWING TO 202 OR 0

Initially, even when I tried to move just one cylinder, the arm shot all the way to the extreme and kept trying to move. The oscilloscope showed me that the +Access Ready signal was not dropping close enough to ground to be reliably detected by the 1130 controller logic, so it kept asserting -Access Go causing incorrect movement. 

I removed the termination resistors for that signal line and the system cooperated. The arm moved correctly and the signal didn't look too bad. No significant ringing on the timescale that can cause problems for the Solid Logic Technology (SLT) circuitry in the 1130 and 2310. 

CHECKING THE SHADOWING LOGIC OF V2315CF

I ran a program that repeatedly moved the arm from cylinder 0 (home cylinder) to cylinder 200 and back to 0. The disk arm faithfully moved between the two positions, however after a minute of operation, when I stopped the program, I found that the V2315CF shadowing was off by a few cylinders, showing the arm at a low non-zero cylinder when the actual arm was at 0. 

Drat - I am going to need to do even more to ensure that the glitches don't get my logic out of sync. I will work on that over the next day or two. I really want to see the shadowing fully working before I move on to checking the other signals and their need for termination. 

ADDED ERROR MESSAGE ON V2315CF FOR WHAT I EXPECT IS A COMMON ERROR

The physical 2310 disk locks the handle so that a cartridge cannot be inserted or removed until the UNLOCK lamp is lit on the 1130 main console. As soon as the motor begins spinning a cartridge in the 2310, the UNLOCK lamp is turned off and will not turn back on until the platter is stationary again. 

When the user tries to load a virtual 2315 cartridge, they insert it into the V2315CF and flip the switch on that box to LOAD. However, if the UNLOCK lamp is not on, then it silently ignored the attempt to load the virtual cartridge. This reflects real life behavior of the 2310, but the user may not realize what is happening if they start spinning up the 2310 then try to load the virtual cartridge. 

To make this clear, I now display an error message on the LED screen of the V2315CF "Must be unlocked". This is a reminder of the correct operational sequence - load virtual cartridge first, then start up the 2310 drive. 

ISSUE WITH THE CE SWITCHES ON THE BACK OF THE 2310 DRIVE

The 2310 disk drive has four switches on the back that are used by the Customer Engineer (CE) to test the drive. The let the CE move the arm forward or backward in steps of 10 or 20 mils, either one time per press or continuously while the switch is held. These are supposed to be inactive when the 2310 is cabled to the 1130 system, but work if the cable is disconnected from the disk drive. 

The ciruitry for these is hidden across five pages of logic diagrams in two different binders (1130 and 2310) but not completely. The rest of the diagram is shown in the manual Field Engineering Theory Of Operations for the 2310 drive. 

The 1130 side of the cable is connected to the +3V power rail. Inside the 2310, a pulldown resistor to the -3V rail keeps the switches negative unless the cable is connected so that the +3V is present instead on the line +CE Interlock. I previously identified a defect in my design, where I was grounding +CE Interlock which still permitted the CE swtiches to operate. I modified the 2310 Interface Board to connect the incoming +CE Interlock line from the 1130 to the 2310, which should deliver +3V and inactivate the switches. 

I measured the voltage at the 2310 and +CE Interlock was negative. I pulled the cable from the 1130 and checked the signal coming in, which was about 2.4V not 3V. I moved back into the 1130 where the wire originates. The voltage on pin D07 of A-C1 slot N7, the connector end inside the 1130 logic gate, was 2.4V. That pin should be directly connected to the adjacent slot (A-C1 M7) pin D03 which is the pin where the +3V rail enters SLT cards. The pin on M7 D03 was 3V. 

The issue was a failure in a trace that should connect A-C1 M7 D03 to A-C1 N7 D07. I added a wire wrap connection and did have +3V delivered on the 1130 cable where +CE Interlock enters the 2310 Interface Board. That restored the intended lockout of the CE switches. 

REWORKED THE POWER WIRING OF V2315CF

The power to the V2315CF is connected through a power PCB but with wiring to external parts - a timer module, a smart trickle charger, a 12V motorcycle battery, the incoming +12V rail of the 1130 and the power supply board that comes with the RK-05 Emulator kit upon which the V2315CF is built. 

It had included diodes to isolate the battery and +12V inputs, a circuit to detect when the 1130 12V supply dropped, and connections among the other external parts. The diodes caused an unacceptable voltage drop in the supply to the emulator power supply, so I redesigned to eliminate them.

The timer is always powered by the 12V battery now. Its sense line to turn it on for 40 seconds is connected to the incoming 1130 +12V rail. Its SPDT switch is connected with the emulator power supply + input hooked to the armature, the 1130's 12V rail connected to the N/C terminal and the 12V battery + terminal connected to the N/O terminal. This switches the emulator power supply from the 1130 system over to the battery for 40 seconds when the 1130's power drops.

A smart trickle charger maintains the voltage of the 12V motorcycle battery as long as the 1130 system is plugged into the building power, even when the 1130 system is otherwise powered down. Thus the battery is topped off and always ready to support the 40 seconds of power necessary to rewrite the current cartridge contents back to the microSD card in the mini 2315 cartridge. 

I can pull the diodes from the existing PCB and make a few minor changes to utilize it under the new design. I rewired everything and gave it a test on the bench to be sure that it works as intended. 

Tuesday, August 25, 2026

Working hard on making seek shadowing state machine impervious to glitches for Virtual 2315 Cartridge Facility

LOGIC ANALYZER SHOWS SHORT GLITCHES THAT CAN AFFECT STATE MACHINE

When looking at the logic analyzer traces I collected while doing seeks with the Virtual 2315 Cartridge Facility (V2315CF), where the internal 2310 disk drive of the IBM 1130 was used in concert with the virtual disk cartridge contents, I saw brief glitches. These were 10 nanoseconds or less in duration, thus completely ignored by the Solid Logic Technology (SLT) of the IBM 1130 and the disk drive. However, they are enough to cause problems in the FPGA logic due to the high speed electronics.

The 1130 requests a movement of the disk arm to move one or two cylinders at a time either towards the home cylinder 0 or out towards cylinder 203 which is the highest location where data is stored on a 2315 disk cartridge. A seek command issued by a program specifies a relative number of cylinders to move; the disk controller converts this into a set of 1 or 2 cylinder steps until the desired total movement is achieved. 

The -Access Go signal drops low to request a step, with the drive responding with a feedback signal +Access Ready that goes low 5 milliseconds after the seek request and remains low for another 10 milliseconds before returning to high to indicate that the movement is complete. The originating -Access Go line is returned to high when the 1130 sees the +Access Ready line drop low 5 ms into the seek. 

I captured a seek command where the program requested a movement of 40 cylinders, which the 1130 drive controller electronics converts into 20 movements of two cylinders each. The seek shadowing function in the FPGA only counted 38 cylinders while the 2310 disk itself moved the full 40 cylinders. There are two glitches on the -Access Go line that were the cause of the state machine in the FPGA going awry. 

top is -Access Go, next is +Access Ready

When I zoom in on the glitches, they are all shown as 10 nanoseconds long, which is the sampling interval so the actual glitch is likely even shorter. None of the cabling in the 1130 is designed to eliminate very short glitches like this because the logic family, called 30 ns SLT, is impervious to short duration perturbations. If I were to try to eliminate all of that, it would involve considerable work to change parts of the 1130 such as altering the type of cable used in the machine. Instead, making the FPGA ignore these is the better direction to take.

WORKING ON FPGA LOGIC THAT IS IMPERVIOUS TO SHORT DURATION GLITCHES

I worked on the state machine that shadows the seek movement by watching the signals between the 1130 and the 2310 disk drive, working to ensure that it produces the correct results with brief glitches in the signals. In order to test that, I had to develop a good testbench for simulation that would introduce glitches of every type so that I could watch the behavior of my logic. Building the testbench was more work than the state machine itself, but it did help me achieve the performance I need from the seek shadowing. 

I introduced glitches of several types and in different places during a sequence of simulated movements. Glitches of 100 nanoseconds, far longer than I was observing with the V2315CF, were introduced. First was a brief drop of -Access Go when the 1130 was not actually trying to move the arm. Next was a brief return of -Access Go to high before the drive has responded with a low level on +Access Ready. Third was a brief drop of -Access Go during the final 10 ms of a step, when +Access Ready is low. I also sprinkled a short glitch in between successsful step movements. 

This had to work in both modes of the V2315CF - real and virtual. Virtual mode is when the 2310 disk drive is not switched on. The FPGA simulates the sector and index marker pulses that indicate the rotation of the drive and it simulates the feedback signals such as +Access Ready. In real mode, the drive itself generates the marker pulses and responds to the step requests with feedback signals. 

OUT OF ROOM ON FPGA CHIP WAS NEXT SNAG

With the functionality validated using simulation, I moved to the Lattice IceCube2 tool to generate the bitstream to load onto the V2315CF. Unfortunately, the changes I made expanded the required number of elements like Look Up Tables (LUTs) and D Flip Flops (DFFs) beyond the capacity of the chip installed in the V2315CF. 

I have to find ways of trimming this down without impacting the functionality I just tightened up. I suspect that the big issue was the need to add a second 19 bit register to hold the value of a timer so that I could continue a countdown across a glitch - that register and all the comparisons to certain values that will be contained in it require a lot of DFFs and combinatorial LUT logic. 

I looked over the logic to see if I could find clever optimizations that might reduce the count of DFFs and LUTs while maintaining the working logic. I had to go back to simulation to be certain that these changes had no adverse impact. I also had to hope that I could trim it enough to fit. I have had issues trying to fit in the past, requiring me to strip out what I could from the FPGA code. 

SUCCESSFULLY REMOVED NEED FOR SECOND REGISTER AND ALL THE COMPARISONS

The code was tightened further and works just as well. The result fits in the existing FPGA chip! The final counts of parts are:

  • 1,209 Look Up Tables
  • 622 D Flip Flops
  • 181 Carrys
  • 1 Global Buffer
  • 3 Global Buffer I/O blocks
  • 86 Input Output buffers
The chip is an iCE40 HX1K in a quad flat pack TQ144 package. The FPGA runs under a 40MHz clock. It shares the main board of the V2315CF with a Raspberry Pi PICO processor. The two communicate over an SPI link.  A 32Mbit SPI flash ram holds the FPGA bitstream and initializes it on powerup. The FPGA also controls a 256Mbit DRAM that is used to hold the contents of the virtual 2315 disk cartridge when it is being used by the 1130. A 2315 cartridge holds 512K 16 bit words,  far less than the size of the RAM chip. 

IMPLEMENTED THE CARTRIDGE ICON TO DISPLAY ON V2315CF MAIN PANEL

I converted the image of the 2315 cartridge into a pixel array that is written to the LED panel of the V2315CF main box when a virtual cartridge has been loaded into the RAM and is ready to use with the 1130 system. 


The refresh rate of the LED conflicted with the iPhone camera a bit, so the image doesn't look as good as it does in person. 

Monday, August 24, 2026

Switching over to electronic switch version of 2310 Interface Board for Virtual 2315 Cartridge Facility

ELECTRONIC SWITCH ADDED FOR IMPORTANT SIGNALS RELATED TO SEEK

The Virtual 2315 Cartridge Facility (V2315CF) makes use of a PCB that sits between the signals that normally run between the IBM 1130 disk controller logic and the internal disk drive (2310). It routes those through ribbon cables to the main box of the V2315CF, plus it supports functions such as managing the Unlock lamp on the 1130 console and setting real or virtual mode. This is the 2310 Interface Board.

In past incarnations, the 2310 Interface Board would route a signal from the 1130 to the V2315CF main box, the FPGA would pass the signal through a four stage chain of flipflops to avoid metastability issues, then simply drive the same value out on the signal that would run to the internal disk drive. This introduced some delays in signals and added signal quality issues due to the very fast edges driven by the FPGA. 

This caused problems for commands to seek the disk arm to one of the 203 cylinders on the disk platter inside the 2315 disk cartridge. The signals between 1130 and 2310 involved feedback and responses that could fail due to the delay introduced by signals passing through the FPGA. I decided to directly connect the 1130 and 2310 for those signals, eliminating the FPGA's role and cutting out the delays. 

This posed two small challenges. First, when the V2315CF is switched to virtual mode, the 2310 is not powered on and does not generate the feedback signals that go to the 1130. Instead the FPGA produces thos in a pure emulation of the 2310. Secondly, the V2315CF creates the data stream that would have flowed from 2310 to the 1130, but instead comes from the virtual 2315 image inside the main box; it captures writes from the 1130 to update the virtual image as well. To send the data associated with the current cylinder location that the program has moved the disk arm, the main unit must know which cylinder is current. 

To keep track of the cylinder that the disk arm is current flying over (or emulate it in virtual mode), the main unit must see the signals between the 1130 and the 2310 that constitute a seek - moving the arm. Thus, even when I have directly connected those signals between the 1130 and the 2310, they must also be routed into the FPGA so that it can shadow the movement of the 2310 disk arm (or emulate it in virtual mode). 

To accomplish this, I installed electronic switch chips on the 2310 Interface Board which connect the pin for certain signals between the 1130 and the 2310 cable connections, but only when the V2315CF is in real mode. In virtual mode, the switch is turned off so that the signals to the 1130 originate from within the FPGA and not the 2310. These TMUX1112 chips support four signals each. I applied these to the signals related to disk arm movement (seek commands). I also direct connected the sector and index marker pulses that reflect the current position of the disk platter rotating under the heads. 

TERMINATOR CHANGED TO OPTIMIZE SIGNAL QUALITY

The IBM 1130 technology - Solid Logic Technology (SLT) - is a diode-transistor logic type of circuitry with voltages that (mostly) swing between 0 and 3V for logic 0 and 1. The cables in the 1130 are designed around a nominal impedance of 92 ohms. The main box of the V2315CF does the voltage shifting to accomodate the logic levels.

Generally in SLT, a pullup resistor keeps a gate input high unless it is actively pulled down to ground to drive a logic 0. Without a current flow down to ground, the gate input is considered logic high regardless of the voltage or absence of voltage on that pin. The pull-up resistors are in the 1130 or 2310 circuitry depending on the direction of the signal. Thus for the signals that are switched directly together, nothing is needed in the main V2315CF box. 

However, when in virtual mode, there is no 2310 providing the pullup and the source of the signal is the V2315CF. The FPGA drives 0 or 3V on those lines, rather than using a pullup resistor. Thus, for most signals, since the ribbon cables and the V2315CF main box are relatively close to the 1130 nominal 92 ohm impedance, I decided that terminator resistor pairs are not needed for most signals. However, for a few signals I still needed terminator pairs, especially for the ones that will be generated by the FPGA - when in virtual mode or for disk data streams that always flow between FPGA and 1130. 

I made these decisions based on signal quality observed while I tested the V2315CF. I can easily tweak these over time as necessary. I made the changes to both terminator boards since I am building two V2315CF systems, one for the Vintage Computer Federation's InfoAge museum in New Jersey and the System Source Museum in Maryland. 

FPGA LOGIC CHANGES NEEDED TO AVOID DOUBLE DRIVING OF CIRCUITS

Since the FPGA must drive a logic 1 or 0 for signals when in virtual mode, but we want to use the electronic switch to short 2310 to 1130 when in real mode, I needed to change the FPGA so that it emitted a logic 1 on those signals when in real mode. The interface chips in the main unit of the V2315CF are essentially an open collector gate, thus only active when driving a logic zero. 

By setting them to 1, they are not conducting and thus not acting on the line other than through the pullup resistor in the main box. The pullup resistor function is provided by the terminator board resistors - with 179 ohms connected to +5V and 249 ohms connected to ground. This should be overpowered by the open collector interface chip pulling the line to ground, producing a voltage low enough to register as a logic 0 by the SLT circuits to which it connects. 

FIRST TEST WITH NEW BOARD BUT FORGOT TO UPDATE THE FPGA

I fired up the system with the new 2310 Interface Board and the newly modified terminator board installed. The V2315CF reacted to the seek commands but the disk drive did not move. When I looked at the signal levels seek at the 2310 (and at the 1130 for the blue signal below), the logic swing was insufficient to get down below about 1V. That is too high to register as a logic 0 for the SLT gate input, thus the disk controller commanded the first step of the seek (yellow signal dropped to 0) but the feedback signal (green and blue) did not drop far enough to register. 


I realized that I had not updated the FPGA with the version of the logic that would emit a logic 1 to the interface chips for those signals that are switched together on the 2310 Interface Board when in real mode. In addition, I didn't have a good signal ground on the scope thus the noise showing up on the traces. 

I updated the FGPA logic and will install it onto the V2315CF main box when I next get to the shop. If the signal still doesn't get down to 0 adequately, I will remove the resistor pairs for those signals. That will mean that in virtual mode I won't see a logic high on the scope due to lack of a pullup resistor, but the SLT gate should still respond properly. I will add a high resistance pullup to 3V somewhere to make diagnosis easier in the future. 

PRODUCED 2315 CARTRIDGE IMAGE FOR LED PANEL OF MAIN V2315CF BOX

The main box of the V2315CF has an LED panel that displays the four hex character ID of the virtual 2315 disk cartridge along the bottom of the screen and had been showing a larger drive number on the remainder of the area. The RK-05 disk drive that the box was originally designed for supports multiple drives on a cable string, thus it displayed the address of which disk the box was emulating. This has no meaning for the 2310 which does not share an interface cable with other drives. 

I took an image of the top view of a 2315 disk cartridge and converted it to the 80 x 40 pixel footprint of the original drive numbers being displayed on the screen. I modifed the code in the Raspberry Pi PICO that is in the main V2315CF box so that it displays this image when a virtual 2315 disk image is loaded into the system. 

Friday, August 21, 2026

Testing my new seek logic for the Virtual 2315 Cartridge Facility - part 14

ADJUSTING THE DISK DRIVE SEEK SETTINGS

I wired up a number of disk drive signals to the oscilloscope. The amplifier balance and dead band adjustments were previously completed. The operation of the trigger that stops the acceleration of the disk arm so that it comes to a stop .01 or .02 inches from its prior position has to be adjusted. Each of the two step sizes, 10 mil and 20 mil, have their own trigger voltage. The level needed to move farther is higher than for the short step. 

The trigger voltage for the steps - 10 mil or 20 mil - are set to correspond to a velocity of the arm at which the logic stops accelerating and flips over to decelerating the arm to a stop. Later adjustments will tweak this to achieve the most reliable stepping operation, but the initial adjustment voltages get us close. They were pretty close already.

A 10 millisecond timer is adjusted to ensure that the feedback from the disk drive to the controller logic in the 1130 is correct. When a step is requested by dropping the -Access Go signal low, a timer waits 2.6 milliseconds while the detent, a tooth that fits in a rack to hold the arm at a specific cylinder, is retracted allowing free arm movement. After th 2.6 ms, the feedback signal +Access Ready drops low and the arm begins its acceleration. The 10 ms timer determines when the +Access Ready signal returns to high signaling completion of the step.

At the end of these settings, I verified several timings, voltage levels and waveforms. There is a 2.6 millisecond single shot timer that must be correct to give the detents time to disengage from the rack teeth before the arm begins accelerating, for example. I also checked the detent voltages and timing. 

DYNAMIC METHOD OF FINE TUNING THE 10 AND 20 MIL STEP THRESHOLDS

Putting a voltmeter on the threshold potentiometers for the 20 mil step size, I moved the arm continuously in 20 mil steps while rotating the pot. The method involves visually detecting when the detents no longer smoothly engage the rack, perhaps skipping teeth to misposition. The observation has to be over the entire range of cylinders, in both directions.  Recording the low and high voltages where the misbehavior begins, I then set the pot to the 2/3 point between those extremes. 

The idea is that this is going to be the most reliable setting. It is similar to how magnetic core memory is adjusted - finding the extremes where failure begins and then selecting the point in between that is known to work best. For memory, a diagram called a Shmoo Plot is drawn to record the extremes and select the ideal operating point. 

Moving over to the 10 mil step potentiometer and the drive step size to 10 mil, I again continuously move the arm back and forth over the entire range of cylinders while changing the pot until I see misbehavior. Using the low and high voltages discovered by this process gives me the 2/3 point voltage between the extremes and that will be the sweet spot for the mechanism. 

RECONNECTING DRIVE AND USING SOFTWARE TO DRIVE THE ARM BACK AND FORTH

I used a simple hand loop to move the arm rapidly back and forth between two cylinder targets, observing the drive to ensure that it does not stop at the wrong cylinder or otherwise misbehave. I changed the forward and backward seek counts to various numbers, having first moved the arm to a desired starting point. This involved several ranges of seek and performed them across various portions of the rack (ranges of cylinder addresses). The most extreme being 202 cylinders forward and back, the extremes of the legitimate cylinder addresses for this drive. 

RESULTS OF THE HAND LOOP TESTING

The drive is seeking very smoothly and accurately. It always reached the intended cylinder regardless of the size of the movement. I am ready to move on to running the IBM disk diagnostic program to validate that the Virtual 2315 Cartridge Facility (V2315CF) is working as intended and ready to have the system installation completed. 

TWEAKING THE ENCLOSURE THAT WILL HOLD THE V2315CF INSIDE THE IBM 1130

I made some changes to the size of the enclosure that will be mounted on top of the internal disk drive, underneath the 1130 top cover that pivots up. Barry Ward is finalizing his printed drive mechanism and mini 2315 cartridges. I did a test fit of his working version of the drive and the main V2315CF unit installed in the front plate of the enclosure. 

The enclosure is assembled with 1/8" thick black plexiglas and mostly glued together, relying on 1/4" square rods to bolster the joints.


The disk drive fits in the right side of the front panel, but I don't have the current outlines for the holes since Barry is working on that part, so my CAD files for testing the assembly are missing that portion of the design. It was enough to feel confident in cutting the acrylic. 


Wednesday, August 19, 2026

Work on the internal disk drive of IBM 1130 - part 3

CHECKING 257 TRANSISTOR FROM DONOR SLT CARD

I put the transistor that I pulled off a spare card and tested it with my curve tracer. I compared it to the two transistors on the M2/M3 card which made the weak/failing transistor obvious. Apparently Germanium power transistors can fail gradually with the gain increasing until there is a complete failure. The base junction is thinned out by tin whiskers or holes punched by voltage spikes, causing the current to increase through the base which drives up the beta. 

SWAPPING THE TRANSISTOR AND TESTING THE DRIVE

I removed the failing transistor and installed the donor transistor. The M2/M3 card is now working properly, with no current through the voice coil during idle times. I used the opportunity to adjust the dead band level up until the voice coil began oscillating and then backed if off which is the the procedure for the adjustment. 

I started up the drive and ran a program to seek back and forth 200 cylinders at a time. However, while the drive grunted with the detent cycling 100 times, it didn't move forward from cylinder 0. The second seek in the program, moving backwards 200 cylinders, ends immediately because the drive knows it is already at cylinder 0, the home cylinder. 

DRIVE MOVES FORWARD AND BACK WITH CE SWITCHES BUT NOT BY PROGRAMMING

I had previously moved the arm back and forth using the CE switches - In/Out, 10/20 Step and Single/Continuous movement. When I hooked up the cable from the Virtual 2315 Cartridge Facility (V2315CF) it should disable the CE switches and obey only the signals from the IBM 1130. The arm was not moving forward, yet the signals from the 1130 were correct for forward movement. 

The logic that responds to the -Access Go signal as well as the -Reverse and the -10 Mil control signals does merge the CE switch signals with the signals from the 1130 before activating the disk drive movement. I probed around and realized that the Out/In switch was set to the Out position, which means reversing towards cylinder 0. I noticed that this overrides the signals from the 1130 when the +CE Interlock signal is low. 

MY ERROR - MY HANDLING OF CE INTERLOCK IS BACKWARDS

The intent of the +CE Interlock signal is that when the cable from the 1130 is plugged into the disk drive, the CE switches should not have any effect. Pulling the cable out enables the switches. As I looked closer at the logic diagrams, I realized that I had things backwards. The 1130 delivers +3V on the +CE Interlock wire and the disk drive has a pull down resistor to -3V on the same pin. Thus, when the cable is pulled, the line is logically low and when the cable is attached it is logic high.

I designed for the inverse. I set up the cable to pull the +CE Interlock signal to ground (logic low) thus the signal is always low as far as the disk drive is concerned. Since the Out/In switch was set to Out, it forced the drive into reverse. 

Somehow, every time I tested the V2315CF before this, the Out/In switch was set to In and had no impact. It only overrides the direction when it is set to Out due to the way that Solid Logic Technology gates work. 

REWORKING THE 2310 INTERFACE BOARD TO FIX CE INTERLOCK

The cable from the V2315CF to the disk drive has the wire for +CE Interlock on pin D07 that is hooked to the ground of the 2310 Interface Board. The wire coming from the IBM 1130 to the 2310 Interface Board does does nothing with the incoming signal on pin D07. 

My fix was simple. I removed the disk bound cable wire from D07 and added a bodge wire to tie it to D07 of the cable bound for the IBM 1130. That ensures that the 1130 is driving +3V through the cables which will block the CE switches from working when the cable is attached to the disk drive. Pulling the cable lets the internal pulldown resistor to -3V drive the signal to logic low. 

Grounding signal at board

incoming +CE Interlock

PROGRAM SEEKING BACK AND FORTH 200 CYLINDERS CORRECTLY

With the fix, the program worked properly. The arm moved smoothly back and forth. I will continue with the fine tuning adjustments but everything is very promising. 



FINALIZING THE ENCLOSURE FOR THE V2315CF 

I designed an enclosure for the V2315CF that is bolted to the top plate of the internal disk drive, so that it is hidden under the top cover of the IBM 1130 but accessible by opening that lid. The main unit and most of the power supply and power fail ridethrough equipment is installed inside this enclosure. There is a smart battery trickle charger, a 12V motorcycle battery, and the 2310 Interface Board that are mounted externally, the rest is inside this enclosure.

A friend is building a much more realistic looking mini cartridge mechanism that will also be in this enclosure. This mechanism looks like a miniature version of the internal disk drive as viewed from the front of the IBM 1130. The blue handle will operate to allow a mini cartridge to be inserted, then closing the handle inserts the mini cartridge into the V2315CF circuit. 

design visualization

The mini cartridge is now 2.25" in diameter, a slight increase over my original version but one that permits the cartridge to look much more realistic. I will provide a lot more detail and pictures of this as he completes the work. 

I finalized the laser cutter files to trim the acrylic sheets to make the enclosure. It will be 4 1/4" tall, 13 1/16" wide and 11 5/16" deep, with the main V2315CF unit and the disk drive mounted on the front face. Once I have the acrylic cut, I will glue it up and begin mounting the equipment in it pending only the mini disk drive completion. 

Work on the internal disk drive of IBM 1130 - part 2

INVESTIGATING THE REASON THE VOICE COIL IS ENERGIZED AT ALL TIMES

The internal disk drive of the 1130 has a disk arm that is moved by a linear voice coil, much like an audio speaker. It should only be active when the drive is attempting to move .01 or .02" at a time. The circuit will energize it in the movement direction, then switch the current direction to decelerate it after a tachometer shows it having reached a target velocity. 

This should be turned on with the falling edge of -Access Go or when the drive is first powered up. At power-up, it energizes the reverse direction movement causing the arm to move back towards the home cylinder (0) and that is turned off when the Home microswitch is activated by the arm reaching cylinder 0. Activation during regular operation is by -Access Go which is returned to high when the disk controller sees that the feedback from the disk drive, signal +Access Ready, drops to low. 

Inside the drive, the drop of -Access Go turns on the Go Latch which remains active until the tachometer driven trigger determines that the target velocity was reached. That turns off the Go Latch and allows the tachometer to slow the arm down to zero speed which will complete its movement of .01 or .02 inches (10 or 20 mil). 

I studied the circuit diagrams until I understood how they work and what levels I should see at all the observation points offered by the disk drive circuitry. I annotated the Solid Logic Technology (SLT) card pins that correspond to each observation point, which I used to investigate the reason that the drive was pulling hard in the reverse direction at all times. 

Example - diagram of reverse acceleration

Capacitor C1 in the diagram above is initially charged to +6V and should remain there while the arm is not moving. Once we are in the acceleration phase of a movement, the current from the tachometer amplifier lowers the voltage on the capacitor. When that voltage decreases to a trigger level that is set by circuits below, it turns off the Go Latch and the drive is in the deceleration phase.

During deceleration, the tachometer output drives the power amplifier to energize the voice coil in the opposite direction of which it was powered during acceleration, thus slowing the arm. When the tachometer voltage gets low enough, the voice coil is shut off and the arm comes to rest. The trigger levels were set to move the arm 10 or 20 mils between the acceleration and then slowdown actions. 

These circuits are almost all on card F2/F3, pictured below. The final four transistors are on card M2/M3. Most adjustments for the disk drive are made with potentiometers on F2/F3 and any circuit failure is likely to be on that card.

card in F2/F3

OBSERVATIONS

The tachometer amplifier was driving the voice coil to the rear because it hadn't been properly balanced to zero out when idle. I suspect that the dead band adjustment was also not correct. That sets the minimum differential from the tachometer amplifier before the voice coil is driven in either direction. 

CAUSE AND RESOLUTION

The potentiometers on the card are fine pitched - they have many turns to adjust from one end of the setting to the other - but they no longer have stops to indicate when you have reached an end. I had to take the card out and adjust the pots to get them at their halfway point in resistance. Since one of them had fixed resistors across it as well, I unsoldered it first then adjusted it. 

Once I had the circuit behaving well, producing the same low voltage on both the forward and reverse outputs of the card, the arm shouldn't be trying to move either way. These outputs are routed to card M2/M3 which have the four bridge transistors that switch current to the voice coil based on the outputs coming from card F2/F3. 

However, when I tested, card M2/M3 was driving the voice coil strongly to the reverse direction. With the inputs at the same level, it shouldn't be. That was the next candidate for debugging. Meanwhile, I don't have a good setting for the dead band yet because I need to arm to not try to move while I adjust it so that I can see if/when it begins to oscillate and back off the setting. That will come later. 

INVESTIGATING THE DRIVER CARD M2/M3

I pulled the card, which only has five large germanium transistors on it. One of them is used to select which read/write head is active, so I can ignore that. Each side of the circuit (forward or reverse) has an NPN transistor and a PNP transistor that switch +48V and ground to the voice coil, but the pairs are wired to inverse to each other so that a pair either drives the coil one way, 48 to ground, or the other way. 

I hooked the transistors up to my curve tracer to see if one of them was bad. The two PNP transistors performed identically and had good looking traces. However, one of the NPN was quite different from the other. I suspect that one, although the curve shape wasn't definitive. This is an IBM type 257 transistor

FOUND DONOR CARD IN MY STOCKPILE WITH THE TRANSISTOR ON IT

I did find an SLT card in my pile of spare and ebay auction cards that has the 257 transistor on it. I will pull it off, test to make sure it matches the presumed good one on the M2/M3 board, then replace the bad NPN transistor to repair the card. When that is done, during my next shop visit, I should have a drive whose arm is not activated when not attempting a seek. I can make the dead band adjustment and then resume testing of the drive.