Saturday, August 23, 2014

Diagnosing the 1131 memory problems and progress on other restoration tasks

When I use Storage Load to put in any bit pattern then use Storage Display, locations 0040 to 004F come up with all zeros and parity errors. Same for manually doing a Load and a Disp from the console - regardless of what I load, the display of the location returns zeroes for all 18 bits (word plus two parity bits).

The core memory error I was seeing consistently was a failure at locations 0040 to 004F where I received all zero bits and got parity errors. That is because I was also receiving zero for the P1 and P2 parity bits, yet this is an odd parity machine where the sum of the on bits in a halfword plus the associated P bit must be an odd number. If zeroes were stored in a location, it would have P1 and P2 set to one. Since they are wrong, it means I am not really reading the locations.

Going through the ALDs and theory of operations for the SJ-4 core storage showed me that there is one unique path that would create these symptoms. Bits 9, 10 and 11 of a memory address are used to select a line that feeds a group of sixteen cores. Bits 12 to 15 select which of the 16 lines in a group are active from the other side of the core module.

Thus, if you select one of eight groups of sixteen from the bottom and one of sixteen lines on the top that feed to all the eight groups, you complete exactly one circuit - this is the Y addressing of a two dimensional core plane. A similar scheme selects exactly one circuit going left to right, the X address. Send only half the current needed to magnetize a core in each circuit. The bottom to top circuit passes through 64 cores, but only one of those cores also has the energized left to right circuit contributing another half the needed current. Two halves make a magnetized bit.,

Reading works like writing, but the current flows in the opposite direction to set a core to zero only where the left-right and bottom-top circuits cross, all other cores get half current or no current at all. Another wire snakes through the plane and will detect the flipping of the magnetic field if we set a core to zero that previously was magnetized in the one direction. If it had already been in the zero direction, no change so no impulse on the sense wire.

You can't sense a bit going to zero from one if you don't send the read current through the circuit. To cause our failure only when bits 9, 10 and 11 have the values 1, 0, 0, means that we are selecting the fifth of eight groups of sixteen from the bottom of the core stack. That group is not getting its current, resulting in a sense of all zeroes for any read of cores in that group of sixteen.

To test this, I had to try all the X addresses that cross this bad Y address of 100 and xxxx for bits 12-15. On the machine, I tried not only 0040 but 00c0, 0140, 01c0, 0240 etc and all those got the same parity error with zeroes. This confirmed my theory that a read current was not issued for Y addresses of 100 xxxx.

A final implication is that it would NOT fail in the upper 8K of memory, because each 8K of memory is in its own compartment on gate D using its own core stack and SLT logic cards. I tried the address 2040 since anything from 2000 to 2FFF is in the second 8K range - the failure did not occur, which is consistent with my diagnosis.

The SLT card responsible for driving that particular bottom to top circuit is a 5803467 type card sitting in the same compartment as the core stack - just above it - and the card supports multiple circuits so it is defective only on a part of the card, the remainder working properly.

I have to swap some 5803467 cards around to confirm that the problem follows the card, then try to repair or get a replacement for the card. I do have an SLT testing platform and power supplies I can use to check out the card. If I can isolate it to a part on the card that I can replace, I will be in good shape, otherwise I have to be a bit more creative or seek out someone with a spare 3467 card.

Lots of storage worked fine. However, when I put in a short diagnostic program beginning up in high core FFFA, the first word I loaded was a LD *+6 (C006) but displaying or executing the location came up with C406 and parity error. That implies it was stored correctly with proper parity but the extra bit was recognized on the read. Not sure what this is, but once I fix the major issue of the 3467 card, I can do more testing to see what is happening here.

Both of the memory behaviors above were consistent - not good, but consistent which should make finding the cause easier.

In addition I noticed a few times that the machine went into a reset condition (IAR back to 0000, error conditions reset) sporadically. I didn't notice any specific causes such as shaking of the machine that would account for it, but more investigation tomorrow is warranted on this as well. Sporadic errors are harder to chase down.

Since my machine has some local user modifications, including a set of cables hooked to the main keyboard buttons (including reset!) but the other end was chopped off and dangle. It was possible these are inducing the spurious reset, although just one possibility. That local modification had to go. I disconnected these and removed the cabling from the 1130. The change did not touch the reset switch, which means it probably wasn't the source of the flaky reset I observed.

While I had buttons on the main keyboard open, I replaced the holder for the Load IAR button, which had allowed the button pop up out of the holder after it was released, using a spare holder from the 1132 printer panel. Now the button works fine. While doing that, I found the other part of the local modification and understand what it did. It is kind of a clever hack, but I didn't like the quality of the implementation. At some later point I may implement this in a more solid way.

The modification added a "Program Start" button on the 1132 which was effectively pushing the Program Start button on the 1131 console. This way, if an operator were setting up a form or dealing with some other printer adjustment, they could push this to resume the program, saving them a walk back to the 1131 console. IBM's 1401 system worked this way - Start buttons on card readers and printers were handy for the operator.

On another topic, I looked at the air filters I pulled out of the machine and see they are aluminum frames made by Universal Air Filter, their FF-5 series which is .43 inches thick, but they were customized for IBM as far as the width and lengths. I believe I can insert new filtering material into these existing frames to put them back into service Waiting to find just the right material to insert in the frame.

I found a perfect neoprene sponge rubber with adhesive backing to use for the sound deadening roles in the disk drive, console printer and over large parts of the interior of my card reader/punch and printer. It should arrive later today when I can begin installation.

The local modification to the machine for a power on/off switch for the typewriter motor has its uses, although esthetically the switch and light chosen clash totally with the look and type of components used with 1130 and S/360. I will replace the switch with an authentic switch from 360 equipment, but haven't decided yet how to deal with the light and the hole into which it was set. There is also a buzzer placed on the first side of the typewriter panel, I suspect to alert an operator to some issue like end of forms. I need to investigate, disconnect and decide what to do about the faceplate. Waiting for my muse before I do all these, I guess.

Tried to replace lamp bulbs in the display panel, but discovered the spare parts I had were not these particular bulbs. I have some sourcing of replacements to accomplish in order to get all the positions lighting again. I know they are 4.5V 140ma lamps and can measure the size and shape, which may get me close enough to find a modern part number. I am also pinging other owners of running 1130s to see if they have already found a useful part number.

No comments:

Post a Comment