Monday, August 31, 2026

Testing my new seek logic for the Virtual 2315 Cartridge Facility - 16 and now works correctly in real mode

TESTED LOGIC REFINEMENT FOR SEEK SHADOWING IN REAL MODE

The Virtual 2315 Cartridge Facility (V2315CF) monitors the seek commands sent from the IBM 1130 system to the 2310 internal disk drive. It has to shadow the position of the disk arm on the 2310 so that it always knows where the heads are positioned. This allows the V2315CF to emit the proper data stream when the 1130 reads from the disk. 

The 2310 records four sectors on the top read/write head at each cylinder, with another four sectors on the bottom head. With 203 cylinders available on the 2315 disk cartridge that is inserted in the drive, it holds 1,624 sectors in total. Each sector holds up to 321 words of data - a word being 16 bits in the 1130. Thus the capacity is about 512K words (1 Mbyte) for each 2315 cartridge. 

The V2315CF has to know which cylinder is under the 2310 disk heads, so that when the 1130 selects the top or bottom head and turns on a read as it reaches one of the four sectors on a cylinder, the appropriate data from the virtual 2315 cartridge image is delivered to the 1130. The V2315CF sees which head by receiving the -Head 1/+Head 2 signal plus keeps track of the -Sector Marker and -Index Marker pulses to know when it is beginning a given sector. Combining this with the shadowed cylinder number allows the V2315CF to retrieve the appropriate sector data from the RAM inside the V2315CF and deliver it to the 1130. 

I made a number of changes to the logic in the V2315CF which monitors the seek commands that flow between the 1130 system and the 2310 disk. Because we see what is sent to the disk drive, as long as the drive correctly moves the arm we should be able to keep our shadow cylinder number in sync. Various glitches were causing the shadow and real cylinder locations to diverge. My changes were intended to eliminate these situations so that the shadow cylinder always matches the actual cylinder of the disk arm. 

SHORT PROGRAM CYCLES THE ARM BETWEEN TWO CYLINDERS

A program will move the disk arm forward by some number of cylinders, then when the drive reports successful completion, it will move the disk arm in reverse by the same number. It then repeats, so the arm should be zooming back and forth between two set cylinder locations. At any time, stopping the program should leave the arm at one of the two positions. 

The IBM 1130 allows the program to request a forward or reverse seek of any number of cylinders up to the maximum  possible movement of 202. The 2310 disk drive only supports moving one or two cylinders in a step. Thus, the 1130 iterates stepping the arm until the full count requested by the program has been accomplished. Moving one cylinder is only done as the first step of a seek and only when the count from the program is an odd number; all other steps are two cylinders at a time. 

The direction and size of each step is controlled by -Rev/+Fwd Direction and -10 Mil/+20 Mil Step signals. The actual request to take a step is sent with -Access Go from the 1130 with the 2310 providing feedback using the +Access Ready signal. Our shadowing of the arm movements will observe each falling edge of -Access Go to begin, change the shadow cylinder number based on direction and step size, then end the step after a complete down and up cycle of +Access Ready

Short glitches on these signals are ignored by the 1130 and the 2310 logic circuits, but have tricked the FPGA logic into falsely triggering a step or ending one prematurely. I improved the debouncing functions and added safeguards that should eliminate the impact of short term glitches. 

OBSERVING THE PROGRAM CYCLING BETWEEN CYLINDERS

The V2315CF and the disk arm agreed perfectly. I ran fast and slow patterns, always getting agreement between V2315CF and the disk arm. I seem to have developed a solid approach now. I will do a check for virtual mode when I next get to the shop, followed by running the IBM disk diagnostic program (309) which will validate every aspect of the disk drive. When that runs clean in both real and virtual mode, I move on to wrapping up the project.

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.

Sunday, August 16, 2026

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

RESTORED 1130 POWER RAIL LEVEL LEADING TO NEW SYMPTOMS

When working on the disk drive attempting to make the adjustments for seek behavior, I checked the voltage at a pin that the Field Engineeering Maintenance Manual (FEMM) suggested be tested. The expected level was 8V but I found it at 6.2V. I verified the incoming power rails - +3V, -3V and +6V - only to find that the last was only at 5V. 

I adjusted the linear voltage regulator in the 1130 to get the rail back to +6V. Once that was done, I powered up while watching the same pin on the disk drive. I saw the voltage start near 8V and slowly decline to just over 6V. I had made quite a few changes to two potentiometers on the disk drive circuitry trying to follow the adjustment procedure in the FEMM, so that might be the cause.

I spun up the drive, with the cable from the 1130 logic disconnected, so that I could use the manual movement switches on the rear of the drive. However, when the drive went ready, the arm stayed at cylinder 0 and it would not move when I used the manual movement switches. 

I manually released the detent that holds the arm in position. These are solenoid operated chisel shaped teeth that fit into V shaped notches in a rack that moves with the disk arm. There is a detent for even cylinder numbers and another for odd cylinder numbers. The rack has notches for each cylinder - spaced 10 mil (.01") apart. 

Holding the even detent out of the notch for cylinder zero, I tried to slide the arm outward but I felt that the voice coil magnet was strongly energized pulling the arm back to the home or cylinder 0 position. That should not be. The voice coil should only energize to move the arm during a seek operation, taking either one (10 mil) or two steps (20 mil distance). 

One of the adjustments I had previously tried to adjust is called the dead band - it determines how much of a drive signal level is needed to start the arm accelerating or decelerating. Set too low and the circuit could oscillate with small random fluctuations in drive current. I set it much higher just to be safe, but the coil remained pulled at full force to the rear. 

The other adjustment is the dynamic balance of the tachometer amplifier. A tachometer attached to the arm produces pulses as the arm moves - the faster they arrive the higher the output from the amplifier. However, it should be set so that a net zero voltage is produced when the arm is not moving. Nothing I did to the pot for this setting would move the net voltage off of zero, however, that doesn't make sense. It is possible that the amplifier is producing a strong movement signal. 

Still, the movement signal should be gated by the logic circuitry on the disk drive so that it only attempts to move in two cases - either it gets a movement signal from the 1130/manual switches, or it is doing its initial power-on reversal to ensure the arm is always at the home cylinder as it powers up. 

The two sides of the voice coil are driven by a power amplifier which gets its drive signals from the card where I was adjusting potentiometers. It is designed to put 48V across the coil in one of two directions, depending on whether we want to move to higher cylinder numbers or back towards 0. A quick check of the voltages on two of the drive control signals showed them at about 2V and about 5V. That is not a valid combination of voltages so I have some debugging to do. The drive previously worked until I began with the adjustments, but some part may have failed. 

I ran out of the short window I had at the shop, since I had somewhere to be. I will be collecting information and building a debugging strategy to figure out what is failing to cause the arm to be retracting strongly. 

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

ASSEMBLED NEW VERSION OF 2310 INTERFACE BOARD

The Virtual 2315 Cartridge Facility (V2315CF) has a component that is a board that interconnects the cables from the IBM 1130 disk controller logic, the internal disk drive, and the main V2315CF unit, as well as a few other functions. I adjusted the design to include electronic switches that connected the signals between the internal disk and the disk controller logic when the V2315CF is in real mode, the norm. The alternate virtual mode does not use the internal disk thus all signals flow only between the disk controller logic and the V2315CF. 

ADJUSTING THE DISK DRIVE SEEK SETTINGS

I sat down with the maintenance manual, a scope, a voltmeter and tools in order to make all the adjustments to the internal disk drive. Simply unplugging the cable from the V2315CF from the disk drive electronics put it in Customer Engineer (CE) mode where I could operate it without using software on the 1130. There are CE switches to move the arm in and out, in both 10 mil (1 cylinder) and 20 mil (2 cylinder) steps, either once per switch press or continually while the switch is held on. 

The first step is to perform a dynamic balance of the tachometer amplifier output, setting it so that there is zero output voltage while the arm is not moving. The next adjustment is for the voltage at which the mechanism stops accelerating the arm and turns off the go latch. This drops the +Access Ready signal, flips the voice coil polarity to begin slowing the arm and starts to engage the appropriate odd or even detent to lock the arm in at the target cylinder position. 

There are different target voltages for 10 mil and 20 mil, since the arm has to move farther for a 2 cylinder step and that requires a faster speed. The target voltage is compared to the voltage on a capacitor which is (dis)charged by the tachometer output, e.g. by the speed. 

A third adjustment sets the dead band, the level below which the servo does not attempt to move the arm. This is done to avoid oscillation while still providing enough oomph to properly accelerate and decelerate the arm. 

The last of the electrical adjustments is for the timer which keeps the +Access Ready signal low from when the trigger voltage stops arm acceleration until the detent should be fully engaged and the arm not moving. The target is 10 milliseconds. 

STARTED TO CHECK DISK DRIVE SETTINGS AND DISCOVERED VOLTAGE ISSUE

When I began to adjust some of the potentiometers in the disk drive I saw weird behavior. The balance was always zero, no setting of the pot would produce anything else. The oscillations never occurred when changing the dead band. These settings are all on the Amplifier card at slot F2 and F3 of the disk drive card cage. The manual suggested voltage checks at certain pins, one of which should be 8V but came up at only 6.2V. 

A QUICK CHECK OF THE INCOMING POWER RAILS TO THE DISK DRIVE FOUND ISSUE

The 1130 generates the DC voltages for the disk drive, the three main power rails as well as 48VDC. The power rails for Solid Logic Technology (SLT) are +3V, -3V and +6V. The 6V rail was only generating 5V, which is way too low for good operation. I checked back at the main logic gates of the 1130 and found that the voltage was low at that point as well. This is a definite problem for the entire system.

ADJUSTED LINEAR VOLTAGE REGULATOR TO RESTORE RAIL TO +6V

I adjusted the potentiometer on the regulator to restore the voltage to the correct level. I have no idea how this got so far out of spec. It might explain some of the odd results or intermittent issues I observed in the past month or so. 

The 1130 has a circuit that verifies the presence of all three primary voltage rails, shutting down the machine or blocking power-up if they aren't good. However, it isn't highly precise, since 5V was high enough to pass the check while still being far too low for proper operation. It is intended more to detect the lack of one of the rails, not that they are correct. 

Monday, August 10, 2026

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

TRYING OUT A TERMINATOR AT THE 1130 BACKPLANE TO IMPROVE SIGNAL

The +Access Ready signal that is generated by the disk drive in real mode of the Virtual 2315 Cartridge Facility (V2315CF) or by the V2315CF in virtual mode. It is feedback to the disk controller logic in the 1130 as it moves the disk arm to seek to different cylinder locations. There was some ringing and glitches on the signal which did cause issues for the disk controller and for the V2315CF which needs to monitor the disk movement to keep track of the current cylinder. 

I have tried multiple things to improve the signal as received at the pin on the 1130 in gate A, compartment C1 where the disk driver logic resides. I changed the impedance of the terminator installed in the V2315CF, which is on the sending end of the signal to the 1130 and receiving end for the signal from the disk drive. I removed the terminating resistors entirely. I shorted the +Access Ready signals from the 1130 and the disk drive together on the 2310 Interface Board so that the V2315CF is electrically uninvolved other than additional cable lengths. 

All of these changes made some improvement. The last one gave me excellent agreement between the disk drive arm and the intent of the XIO Seek commands I issued. However, the V2315CF failed to completely shadow the movements, missing a couple of cylinders on longer seeks. 

I therefore decided to add termination right at the destination pin on the 1130 backplane. The IBM design did not have terminators there, other than whatever pullup resistor they used on the backplane after the signal arrived. I couldn't find any resistor or source for a pullup. The signal is generated by a single shot timer in the disk drive itself. 

I have no component level circuit schematic for that gate so I can't tell if it has pullup or not. In any case, having the pullup on the source side which is typical for the 1130 logic would not protect the input pin from ringing caused by inductance and capacitance in the cabling over to the SLT backplane. 

I therefore decided to mount termination resistors right at slot L4 of the backplane, where the +Access Ready signal is connected at pin D04. I used a 330 ohm pullup to +3V which is available on pin D02 of the slot and a 470 ohm pulldown to ground which is available on pin D08 of the slot. 

I had to find a good way to install this in that area. I chose to solder the two resistors together with very short leads at the connection. I then installed wirewrap wires to pins D02, D04 and D08, with their other ends loose. Once I find a way to mechanically secure the resistors in place between the rows of pins on the backplane, I will cut the wires and tack solder them to the common point and other ends of the resistors. For the time being, I did a quick and dirty installation.

OBSERVATION OF SIGNALS AND BEHAVIOR WITH TERMINATOR RESISTORS IN PLACE

The signal looked almost exactly like the signal leaving the disk drive at the backplane pin of its electronics, thus I was not getting any distortions based on the run of the signal through various cables, boards and traces on its way to the 1130 backplane pin. 

The drive would still fail to seek properly on some longer seeks, stopping a few cylinders short of its intended destination. It would also lock up and buzz at a point short of cylinder 202 but well along in its travel. Something is still wrong with the drive that I have to resolve. I need to go through the entire sequence of settings per the manual.

Below is the image I took of a seek of 193 cylinders.


Yellow is the +Access Ready signal as it is delivered to the 1130 disk controller backplane pin. Green is the -Access Go command from the 1130 disk controller that triggers each step. Purple is the -10/+20 Mil signal which makes the first step 10 mil and the remainder be 2 cylinders. Blue is the source +Access Ready signal at the disk drive electronics backplane pin. 

The expected waveforms and timing are shown in one of the maintenance manuals, which I will be checking while the drive performs some steps. 

There are four adjustments I will check and change if necessary that control the timings shown above.

  1. Tachometer amplifier static balance - no output when carriage is not moving
  2. Dead band of servo - adjust to eliminate oscillation but achieve proper movement
  3. 10 mil and 20 mil stop voltages - duration of acceleration for each step size
  4. 10 millisecond timer duration - time that +Access Ready stays low
I will also verify the 2.6 ms single shot is the proper duration to allow the detents to retract before arm movement starts. Watching voltages and timing of other signals above help identify if any components are out of spec and causing issues.

The FE maintenance manual has multiple methods of adjusting the drive values above, including a very promising method that observes the continuous movement of the arm for erratic detent operation and a means to tweak the adjustments for the most reliable and consistent stepping. 

Tuesday, August 4, 2026

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

STILL FOCUSING ON SIGNAL INTEGRITY FOR V2315CF SEEK

I was not happen with the glitching and malformed signals going into the 1130 for the +Access Ready feedback signal. I am determined to clean this up and not just hope that the Virtual 2315 Cartridge System (V2315CF) works in spite of the signal distortion. The first thing I did was to remove the terminator resistors for that signal, to see what the signal looked like. It was still distorted.

The new version of the 2310 Interface Board, fabricated and current being shipped to me, adds electronic switches to short the signals between the disk and the 1130 while in real mode, rather than trying to generate the signal as a copy of the incoming one. I installed a short bit of twisted pair to bridge the B07 pin from the disk drive to the B07 pin heading into the 1130 disk controller circuitry. The result was considerably better.


The blue trace on the bottom is the +Access Ready signal generated by the disk drive and the yellow trace is the same signal at the entry to the disk controller SLT cards inside the 1130. The green trace is the -Access Go signal that goes from the 1130 to the disk to start a seek. Finally, the purple trace is the -10 Mil Step signal, which initially requested a single track move and then rose so that the additional steps are two tracks each. 

The temporary bridge connecting the signal straight through


Above is a trace of a seven cylinder seek. The -10 Mil Step signal is low for the first step and high for the next three. It does look good, although with a time scale of 5 milliseconds per division any glitches wouldn't be visible there. 

V2315CF AND 1130 IN PERFECT SYNC, DISK SOMETIMES IS OFF

I pounded away at the disk trying small, medium and long seeks in both directions. I was pleased that the disk arm position is now exactly in agreement. The only issue is that the V2315CF shadowing of the arm position sometimes drops a few cylinders from the count. 

I am hopeful that the new PCB with its electronic switches will further improve the fidelity, as it will manage seven signals that run between the disk and the 1130 controller circuitry. By the end of the week I should have built the new version of the board and installed it. I can troubleshoot further if the issue is still present with the new board version. 

VERIFIED THE POWER FAIL PROTECTION

I wired together the elements that give the V2315CF the ability to detect a power failure in the 1130 and conduct a full writeback of the RAM contents into the mini cartridge leveraging a 12V motorcycle battery. 


The power distribution unit board, in the center of the photo above, routes power between the 1130 12V rails, the motorcycle battery, a smart trickle charter, a timer module, the power supply for the V2315CF and then the V2315CF unit itself in the lower left. At the top is a bench power supply that stood in for the 1130, allowing me to flip it off to verify that the timer powers the unit during a 40 second interval, and that the V2315CF properly detected that the 1130 12V power dropped. It is ready to be wired into the 1130 system. 

WILL MAKE ADJUSTMENTS OF THE INTERNAL DISK DRIVE SETTINGS

The internal disk drive has a set of six adjustments that are important to proper behavior. These include the thresholds for the 10 and 20 mil seeks, the timers for the various actions during a seek, and the sensitivity of the seek movement circuitry. Those, coupled with the mechanical stops at cylinders 0 and 202, will ensure the most reliable operation. 

Monday, August 3, 2026

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

NEW TERMINATOR BOARD IMPROVES BUT DOES NOT FIX V2315CF SEEK TRACKING

The Virtual 2315 Cartridge Facility (V2315CF) watches the control signals between the 1130's internal disk controller and the internal disk drive (named 2310 or 13SD or RAMKIT). It shadows the position of the disk arm as commanded by programs issuing XIO Seek commands, since the data to be returned when the software reads from the disk depends on which of the 203 cylinders the read/write heads are positioned over. The V2315CF generates the data signals instead of the disk heads. 

The current situation is that requests to move the arm are obeyed correctly by the disk drive. The physical arm is in the correct location after every move. However, the location as shadowed by the V2315CF is off, short by 1 or 2 cylinders from the actual final position. The error is cumulative.

The programmer requests a movement of some number of cylinders relative to the current arm position. The disk controller implements that as a series of steps of 1 or 2 cylinders at a time, the first being 1 cylinder only if the requested movement count is an odd number; all others are 2 cylinders at a time. 

Glitches on the signals between the 1130 and the disk drive do not appear to affect the disk drive's operation but confuse the V2315CF logic. I can work on two fronts here - eliminating the glitches entirely and/or ensuring that V2315CF is invulnerable to the glitches. 

OSCILLOSCOPE OBSERVATION OF SIGNAL ISSUES USING NEW TERMINATOR BOARD

I set up the oscilloscope to watch +Access Ready inside the 1130 at gate A, compartment C1, where the signal enters the logic card. A second probe was connected to the V2315CF main box where the +Access Ready signal is emitted. A third probe was attached at the pin on the 2310 Interface Board where the cable is attached running to the 1130 logic where our first probe is placed. The final probe monitors the signal as it is produced by the disk drive. 

I triggered on the falling edge of +Access Ready, using my test code in the 1130 to issue an XIO Seek of 3 cylinders forward which is one that we have seen malfunction consistently. I captured the waveforms and looked to see what was happening to the signal at several points in its routing and hoping to understand what is producing the glitchy behavior. 

I can see a very strong drive from the output chip on the V2315CF and then substantial ringing of the signal where it enters the 1130 logic circuits. Part of the problem is ground bounce between the 2310 Interface Board, the V2315CF, the 1130 and the disk drive. I will add some wire braid for high frequency ground paths, although that is not the issue here. 

NEW LOGIC IN FPGA TESTED TO SEE IF IT MATCHES DISK ARM POSITION

I modified the seek shadowing logic in the V2315CF and installed it to the flash memory that initializes the FPGA. I ran some seeks of various sizes, noting for each whether the arm position matched the intent of the seek and whether the V2315CF reported cylinder matched the other two. 

We were down to one issue with the shadowing. The V2315CF seemed to miss the first seek, that error in positioning remained for all subsequent seeks. I tracked that down to an error in my Verilog, where I look at the state of the Home signal and don't bump the cylinder when it is on in real drive mode. That means we don't count the first step away from cylinder 0.

I updated the logic and tested again. The disk drive and V2315CF are in complete agreement with the seek amounts I executed. I ran a series of forward seeks in a small program, issuing the next seek as soon as the previous one caused an operation complete interrupt. I moved 40, 20, 10, 7, 6, 3 and 1 cylinders with the short program. It completed in a fraction of a second with the disk arm and V2315CF showing the current cylinder location as 87. 

Testing my new seek logic for the Virtual 2315 Cartridge Facility - part 9 - Fixed cylinder 202 issue

ADJUSTING THE FORWARD CRASH STOP ON THE INTERNAL DISK DRIVE

Crash stop when arm is not at 202

Arm against crash stop just past 202

In order to be safe, I changed the stop to a gap of .008", giving the maximum margin for acceleration while still blocking the ability of the arm to move to cylinder 203. With an attempt to move 20 mil, the arm should stop and the detent should still fall back into the notch for cylinder 202. 

Just as importantly, it should not do anything bad if it gets a 10 mil step thus engaging the odd detent instead of the even detent. Looking closely at the positioning rack, I can see there is a notch at the 203 location which the odd detent can enter. 

The way you read the location is to look where the right detent is pointing. The numbers are etched every 40 tracks, with a large vertical bar at the 20 track intermediate point. The fine vertical lines on the positioning rack mark each 4 track step, with a notch in between at the 2 track point. The left detent (odd) will fall in to indicate that the location is the number you read from the right detent plus 1. 


The picture is of the arm when I had a .006" feeler gage between the crash stop and the arm, the arm not quite far enough along to let the even detent fall into 202. However, you can imagine the rack slightly to the right so the right (even) detent enters the 202 notch. This is where the arm stops at the last legitimate location. 

If we attempt a 1 track (10 mil) step forward, the drive flips which detent is used to stop, now engaging the odd (left) detent. Since there is a notch there that the odd detent can enter, it will try to hold the arm there. That means the drive is trying to be at 203 but the mechanical stop is trying to keep it from moving past 202. 

It may be slightly mispositioned to read or write on the cylinder but it is a reasonable state to stop in. As long as the circuitry in the disk drive turns off the acceleration of the arm so it doesn't lock up buzzing, this is a decent outcome. It will back up correctly. A step of 10 mil will bring it back to 202 with the even detent engaged, a 20 mil step will move it to 201 still using the odd detent. 

The IBM maintenance manual blithely instructs the field/customer engineer (CE) to run the drive, use the CE switches to move the arm out to cylinder 202, then adjust the crash stop to a specific gap. The stop is a bolt that is threaded into a big block holding the arm mechanism together, with a nut that locks it in position. 

The issue is that the slot in the bolt that one turns to adjust the crash stop is directly against the 2315 cartridge case that is in the machine. There is no room to fit a tool in there to turn that once the nut is loosened. If I remove the cartridge, the drive will not spin up nor load the heads, thus it wouldn't allow arm movement or perform seeks. 

However, I can manually push the microswitch that detects a cartridge is inserted, to allow the drive to spin up and load the heads. They won't really load for two reasons - no platter to ride on, but more importantly my modifications have stopped the heads from being pushed down so they will remain safely apart 

I did find a way to use pliers to turn the threads of the bolt after loosening the nut, thus could adjust this with the arm actively sitting at 202. The gap was much too small, so I adjusted it out to a suitable amount that would stop the seek action but not move past 202. 

TRYING TO MOVE THE ARM PAST 202 AFTER MY ADJUSTMENT

The disk drive is designed so that if the cable that plugs into the drive from the controller (or from the 2310 Interface Board in our case) is removed, the Customer Engineer (CE) switches and buttons can control arm movement without having to issue XIO commands or involve the 1130 disk controller logic. 

I moved the arm to cylinder 201 from zero by setting the Step switch to 20 Mil and held the switch at Continuous movement until it got close. I then set the Step switch to 10 Mil and advanced one step at a time until I verified that the arm reached that point successfully. This would have the odd detent in the rack.

I then moved the arm 1 track, with Step set to 10 Mil and using a single advance, which should put the arm at 202. That was verified by looking at the arm . The even detent should be engaged.

Now, the moment of truth. I issued a seek of 2 tracks farther, with Step at 20 Mil and a single movement request, which should leave the the arm at 202 and the drive should recover from the attempt to move past. The even detent should remain engaged. Worked great.

I cycled the drive to get the arm at the home cylinder and used 20 Mil steps to advance the arm to 202. I moved 1 more track, with Step set to 10Mil, wanting to see what happens with the detents and the arm. I looked at the detent and the arm position, as well as the V2315CF. If the odd detent is now engaged, a reverse step of 10 mil would actually stop the arm at cylinder 200 instead of 201, which is not desirable. If the even detent remains engaged, I need to understand the mechanism.

After testing and observation, it does engage the odd detent, but has bounced back to 201. I hooked up the system and did plenty of seeks, with the pathological behavior gone. This problem is now resolved. 


Sunday, August 2, 2026

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

FINISHED MODIFYING TERMINATOR BOARD WITH NEW RESISTOR VALUES

The terminator board that fits into the Virtual 2315 Cartridge Facility (V2315CF) main unit is the same one used successfully with the unit in its original role as George Wiley's RK-05 Emulator connecting to a DEC computer to emulate a disk drive that is a derivative of the IBM drive. The terminator implemented the same resistance values as the M903 terminator board built by DEC. 

The impedance of the terminator connections is just over 122 ohms, which may match the impedance of the cabling in the DEC computers. The RK-05 emulator kit offers an option A1 RK-05 to RK8-E that has two IDC 40 pin ribbon cables to make the connections to the controller card, since the RK-05 drive needs 36 signal lines for the interface between disk and controller, deploying ground lines between each signal line on the ribbon cables. 

Ribbon cable characteristic impedance for single ended signals (not differential pairs) is 80 to 100 ohms with interspersed ground wires. Using the DEC terminator board yields a big mismatch in impedance, which will lead to reflections of about 20% of the signal level. If the rise time of signals is faster than 6 nanoseconds the signal will ring and appear to have spurious transitions. 

I determined resistor values to drop the terminator impedance to about 100 ohms, which would minimize the issues even with the current sharp rise times. The Lattice FPGA does not support the means to slow the signal transitions to 7ns or slower instead typically rising at 1 to 1.5 ns.

I removed all the original resistors - a mix of 1206 size and 0603 size for the pullup to 5V and the pulldown to ground respectively - and cleaned up the board.

The original terminator board has a few unpopulated resistor locations - the crude circles show you were to concentrate to see them. 

I installed my 179 ohm pullup and 249 ohm pulldown resistors onto all the positions where I have signals connected to the ribbon cables. The new terminator board was tested and then plugged into the V2315CF to do more testing. 

DETAILED VIEW OF EFFECT OF SIGNAL GLITCHES ON SEEK BEHAVIOR

A glitch on the +Access Ready signal causes the 1130 disk controller logic to malfunction, thus not forming correct step requests to the drive. The disk drive responds to brief glitches in -Access Go that are induced by the +Access Ready glitch, so it does move to the requested cylinder. The V2315CF fails to recognize the malformed sequences thus it does not reach the same cylinder number as either the drive or the intent of the XIO Seek commands. 

The dance of signals we should see is the controller drop -Access Go with -10 Mil Step low, holding it until the drive drops +Access Ready about 5 milliseconds later. When +Access Ready drops, the signal -10 Mil Step will rise from low to high since only the first seek should be a 10 mil step. 

Also at the time when +Access Ready drops, if the count register (Bits 7 to 14 plus the -10 Mil Step which is bit 15) has all bits on, the -Full Word Count signal is dropped which terminates the seek in the 1130 disk controller logic.

The disk drive, meanwhile, moves the arm for another 9-10 milliseconds then raises +Access Ready to indicate the seek step is complete. If the count register is not all ones yet, another cycle of -Access Go dropping with its +Access Ready responses will occur, iterating until -Full Word Count drops. 

Above, we will examine a successful seek of 1 cylinder. We can see the signals conforming exactly to the protocol. After -Access Go is dropped with -10 Mil Step low, we see +Access Ready drop 5 milliseconds later. At that time, the controller changes -10 Mil Step to high, which turns on -Full Word Count, stopping the controller from trying any more steps. At 15 ms from the start of the step, +Access Ready returns to high indicating the move is complete. 

When I did a move of 3 cylinders, however, the glitches arrived and the process breaks down. The arm moved three cylinders but the V2315CF only saw a single cylinder step. Lets look in detail below, zooming in to the time when the glitch first arrives:

At the 5 ms point, when +Access Ready should drop for 10 ms, we see a very short blip downward, circled in red. This turns off the -Access Go and makes -10 Mil Step go high as pointed by the green arrow.

We see another -Access Go, but very brief, indicated by the blue arrow. Since -10 Mil Step is now high, this asks for a 20 mil step. The short drop of +Access Ready just to the left of the blue arrow causes the disk controller to add 2 to the count register, making it reach the all-ones state and turning on -Full Word Count pointed to by the pink arrow. The seek is over so no further step requests. 

The drive did respond to the additional -Access Go, in spite of the prior seek not being finished. It is only a 20 nanosecond pulse, borderline for the Solid Logic Technology (SLT) edge detectors to see but obviously long enough. Somehow the drive managed to do the second step correctly, as the arm did end at the proper spot. 

Since the V2315CF logic is generating the correct protocol dance - keeping +Access Ready low for 10 ms starting 5ms after the falling edge of -Access Go. It doesn't watch for the next -Access Go falling edge until after the 5ms and it misses the defective short mistimed pulse that the disk drive responded to. 

The drive even responded to a 5 cylinder seek with a correct movement. The signal pathology is even uglier, as seen below:

We see that a single step is observed as far as the V2315CF, based on the 15 ms dance expected. Zooming in on the glitch area, we can see how it managed to move 10 mil, 20 mil and 20 mil to achieve the 5 cylinder goal. 

The glitchy +Access Ready is see to the left of the green arrow, resulting in the -10 Mil Step signal going high where the green arrow points. The first step we began is 1 track, but the subsequent moves will be 2 tracks each. A glitch from the controller shown with the first red arrow drives the arm another 2 tracks. Later we see the -Access Go drop for a longer interval, driving the last 2 track move. This adds 2 to the count register, completing the count of 5 and turning on -Full Word Count to complete the XIO Seek.