Tuesday, June 11, 2024

Digging into the VCF 1130 and identifying issues to resolve

CHECK CONDITION OF ALL RANGES OF MEMORY ADDRESSES

The machine was storing and loading memory just fine at the very low addresses I used to toggle in instructions, but I wanted to make sure that all sections were working. The 8K of IBM memory is divided into two 4K segments with independent addressing and read/write drivers. Furthermore, within each 4K, it is divided into two 2K ranges for sense circuits. 

I therefore wanted to make sure that each of the four 2K segments of memory were able to be written to and read back successfully. I wasn't ready to exhaustively address every word, but I wrote something into each block of memory to see that it worked well. 

IMPROVED GROUND FOR 3819 CARD AND REPLACED FORM CHECK BULB

I noticed that the bulbs were too dim, which suggests that the wire wrap connections I used to restore the ground traces to the 3819 pins D04 and D05 couldn't handle the current requirements for the bulbs and solenoids, developing enough resistance to lower the power delivered to the target device. 

I built a dual pin connector to fit on the D04 and D05 pins at card slot D5, with 20 gauge wire running down to the ground terminals of the terminal block on the A gate. This should support bright lamp operation. 

I mentioned earlier that the Forms Check lamp should have been lit since the typewriter had no paper installed. Pulling the bulb and testing it, I found it burned out. A replacement bulb was installed and it shines brightly now. 

I also set up an XIO instruction to do a keyboard select, which did light the KB Select lamp brightly. There are still issues with that 3819 card, as the Run lamp won't light at all, the Parity error lamp is quite dim, and the keyboard restore magnet was not firing to unlock and reset the keyboard. I don't know if the File Ready light would glow properly as the drive is not ready to power up. 

PARITY ERRORS FOR ANY ADDRESS WITH BIT 9 (MODULO 128) SET

Doing my testing of memory operation at different addresses, I happened upon an address where the machine took a parity error. The lamp illuminated, but dimly, and the machine locked requiring a reset. By the process of trial and error I realized that the parity error occurs with any address where the 128s bit is on (bit 9 of the address) will get all zeroes back include zero from the parity cores, triggering a parity error. 

Since this happens in both the upper and lower 4K ranges of memory, it is not a failed driver or wire within the core stack as these are duplicated. Instead, it is in the addressing logic either in the memory compartment or the CPU itself. I have faced these kinds of errors before with 1130 systems and the diagnosis and repair has been relatively easy. 

INTERRUPT HANDLERS WORK FINE

I pushed the Prog Stop button, which generates an interrupt on level 5. The machine should execute a BSI instruction to store the IAR address where we were interrupted in the first word of the interrupt handler and then branch to execute the second word of the handler. 

I had set up the handler with a wait instruction (0344) that I would recognize, coded an MDX branch instruction at location 0000 that branched to itself, and pushed start. The machine sat in a tight loop at location 0000 until I pushed the Prog Stop button, when it executed the wait instruction I had placed in the interrupt handler. 

TRIED MULTIPLE INSTRUCTIONS

I experimented with various instructions to see if I spotted any anomalies. Instructions such as Load Status properly set the Carry and Overflow flags, for example. I had tried short and long format instructions, indirect addressing and moved on to check an indexed form of an instruction.\

The IBM 1130 uses core memory locations 0001, 0002 and 0003 as the index registers IX1, IX2 and IX3. There is an instruction cycle IX that will read those low storage locations when the associated index register is referenced. 

INDEXED ADDRESSING ISSUE - MACHINE DOES NOT TAKE AN IX CYCLE

However, whenever I coded an instruction with an index register specified, the machine moved directly from instruction cycle I1 or I2 to the execution (E) stage, skipping an IX cycle. The state machine that advances through the instruction cycle stages from I1 to the E stages is pretty simple. There is a set of four signal conditions that are required to be high in order for the machine to move to IX instead of skipping over that stage. 

There are all inverted logic signals, so that high means the condition in the name is not true. Thus, the signal -Index Instruction is low when it is an instruction loading or storing the index registers, otherwise high. The signal -Tag 00 is low if there is no index register specified otherwise it is high. In the same way, a -IA cycle is high if we are not in an indirect addressing instruction cycle, and the -E Cycles signal is high if we are not in the E1, E2 or E3 execution stage. 

SLT treats an open circuit as a logic high, so this cannot be a broken connection causing the IX to be skipped. In many cases, the inverted logic signal is generated by a NOT gate whose input would cause a failure if it were not connected as that would force the gate output low and block our IX cycle. 

A bit of work with the oscilloscope will flag the bad signal, then I can find the root cause and repair it. This is the usual kind of failure I encounter during a restoration. 

FORMS SWITCH ON 1053 TOO OXIDIZED TO WORK

When I push down on the roller on the typewriter, simulating the pressure of paper that is fed into the printer, it should close the circuit and turn off the Forms Check light. However, this switch has been oxidized so badly on every 1130 I restored that I am pretty confident I just need to deoxidize it to clear this issue. 

XIO TO KEYBOARD WORKS GREAT

I toggled in a short routine from the CE Handbook that loops with the keyboard selected, waiting for a key to be pressed. It reads the character code of the key, leaves that in the ACC and resets and selects the keyboard for the next entry. 

 The machine handled XIO instructions properly, such as Control, Read and Sense DSW, recognizing commands sent to its device address (area code in 1130 parlance). However, the keyboard itself was not restoring so that I could only type in one character.

The way the physical keyboard works is that it has to be unlocked, either by the KB Restore pushbutton or the XIO to select the keyboard. If a key is pressed, it locks down and blocks any other keys from being pressed. This also selects the character code using a complex matrix of contacts, with the presence of a nonzero character code triggering an interrupt condition from the keyboard The software has to read the value of the character code which remains active all the time the key is down. The interrupting condition is reset via a form of a Sense DSW XIO command. 

Since the program wishes to read as many keys as the operator presses, it issues another XIO Control to select the keyboard. Part of that selection process is to restore the keyboard, by energizing a solenoid inside the keyboard that pushes all keys up and clears the contacts. 

OXIDIZED CONTACTS IN KEYBOARD

I had pushed the H key, which should encode into a Hollerith code 12-8 which shows up in the ACC as bits 0 and 10 but what we got was only bit 7. This tells me that the contacts in the keyboard are oxidized and not properly generating the character code. Across the rear of the keyboard are a number of bails that rotate to activate contacts on the left and right side. 

Each keystem has protrusions to move the bails whose contacts are associated with that key. In addition to the bail contacts, there are contacts on the bottom of the keyboard below each keystem. Finally, the Numeric button, which pressed, changes the wiring of the bails keystem switches.

Each physical key has two meanings, alphabetic or numeric; a better way to talk about it is that the numeric key selects the upper symbol on the keycap since some keys have two special characters, neither of them alphabetic or numeric. 

Deoxidizer and a contact burnisher will remove the hard oxide that forms on the open air contacts. I use an ohmmeter to judge when each contact is sufficiently clean. Once done, the keyboard is likely to produce perfect Hollerith codes for every keypress. 

KEYBOARD RESTORE MAGNET NOT BEING ENERGIZED

The restore magnet is powered by our suspect 3819 card, but the failure can be somewhere in the keyboard controller logic. We see that the logic correctly sees the XIO and sets the KB Select condition, as well as triggering interrupts and passing along the character code. However, a one shot should have fired to activate the keyboard restore solenoid. We don't yet know where this broke down - controller logic, 3819 card or elsewhere, but it won't be hard to track down and fix. 

STILL WORKING ON DISPLAY LAMPS - BULB LEADS CORRODED AND BREAKING OFF

I got the Interrupt levels 2, 3, 4 and 5 lamps to light, as well as a few of the status bulbs like I1, but in the process the lights for levels 0 and 1 stopped working. The bulbs used with the 1130 are wire lead incandescent bulbs, with the leads threaded down into a nylon bulb holder and held between a pin and the hole in the holder that the pin presses into. 

These nylon holders are then forced into a plastic honeycomb structure behind the front panel that holds each bulb behind the position it illuminates. The bulbs are mounted on wide PCBs that mount up to 16 bulbs from left to right, thus the entire board and all its bulbs have to be pushed in and pulled out anytime a single bulb needs replacement. 



The wire used on these bulbs tarnishes with age, particularly when exposed to corrosive environments such as rodent urine vapors. At the point where the wire enters the sealed glass envelope of the bulb, it is susceptible to cracking off due to the corrosion. 

In the case of the board that holds the interrupt level lamps plus some system state lamps, when I first removed the board a number of the glass envelops remained in the honeycomb as the wires were not attached at all. Interestingly, this is the same level as the SBR register whose 16 lamps also had a very high rate of falling apart. Lamps on the other five levels fared better. 

At the current rate, about a quarter of all the bulbs were either dead or had broken off wire leads. I was able to lend the machine some bulbs from my 1130 system's old light panel circuitry but before this is returned I have to source replacement bulbs. The world supply of incandescent lamps is dwindling, particularly of wire lead low voltage types. 

No comments:

Post a Comment