Processor is crazy, console works
When I first powered on my 11/44, I was pleased to see the prompt of the console processor. Well there’s a prompt, so the imcportant stuff will work. Not necessarily: the 11/44 has an autonomous console processor, running the main KD11-Z Central Processor is a different thing.
Can’t add, doesn’t even try
Soon I tried to enter and execute a little assembler program: it did not run. I changed and ran the program through MACRO-11 a few times, and entered it by hand into the console (lots of “D xxx yyy” deposit commands). I did not get any success: the program HALTed at the proper address, but register and memory content was never as expected.
After the first hour working with my PDP-11/44, I was were very glad NOT to have a classic “blinkenlight” console. Operating the ASCII-console was hard enough, I just could not image working with switches and binary lights. Yes, the 11/44 console is a great achievement!
Then I used SimH, and there my programs behaved as expected. I executed the console selftest command “T/A” several times .. no error.
Very soon I got tired “depositing” and reading back code, instead the idea for PDP11GUI manifested. A first version was ready several weeks later, it could examine memory and CPU registers, assemble and load code, and run, stop and single step through a program.
A Very Reduced Instruction Set Computer
Equipped with that tool, I started new test series. The 11/44 processor executed its code in a very strange manner: I could load a register with a constant, but INC, ADD, and SUB opcodes were without any effect. A CMP behaved like a SUB, conditional branches were ignored, but BRA and HALT worked well. Definitively not Turing-complete anymore! Strangely enough, the console self test still displayed “OK”.
I dived into this microcode-thing: I scanned the PDP-11/44 micro code listings, put them in a database, PDP11GUI was extended, and I single-stepped through an ADD: the micro PC was 0010, 0015, 0000, 0010 ... like a NOP. The same with other opcodes.
There the old joke about the IBM 1620, called “CADET”, came into my mind: It had no adder, just number tables, and “CADET” was expanded to "Can't Add, Doesn't Even Try”. Well, I had my own CADET now.
Try swapping parts
It was quite clear now that the processor was damaged. The CPU core is distributed on two hex modules: Data Path M7094 and Control M7095. I bought new (old) ones from an U.S. trader and had to wait three weeks. As I unpacked the modules, there were two M7095, not M7094+M7095, an error of the sender. Well, I swapped in the first M7095: still more opcode were NOPs! I swapped in the second M7095: the CPU was now completely dead, the console processor just said “?22 CPU hung”. So now I had swapped in three different M7095 modules and got three different errors: I did not believed that the Controle Module was defect in any way. Another three weeks later finally the replacement M7094 arrived. What would you guess: Changing M7094 made no difference at all!
At this point I got into wildest theories: maybe the backplane was defect? A strange UNIBUS error? Maybe the power supply is not good? Maybe another CPU module is defect? Maybe M7094 and M7095 and the other boards were selected to work with each other and can not be changed individually? Maybe there’s a problem in my own brain? Perhaps I should sell my 11/44 and search another hobby?
Around this time I learned that there’s a computer-collector-club in my home town Göttingen: the CCG. One member, Manfred, organizes the museum at the local Scientific Computer Center GWDG. I finally called him, and told him my problem, and he said: “Why, I have a box full of 11/44 modules here, come and take them!”.
So I plugged in the 4th Control module and the 3rd Data Path module and the machine was running now! I really had three M7095 with different failures. I played with them a bit and could “repair” at least one: my original board had a broken 82S101 chip (on place “115” in the picture), but I could pick it from one of the other boards (which I called “JTB”).
82S101 is an Programmable Logic Array which is part of the instruction decoder ... and indeed, my instructions weren’t decoded very good. Since these chips need good cooling, I’m having an eye (or: ear) on my cooling fans since then.
I learned this:
- Normally, its an exception if a part fails, and replacement parts usually are working. If somebody detects a broken part, it is discarded.
With vintage parts, this is a complete other story. - Good parts remain in collections, bad parts remain on the market. This is possible, because everything is sold as “untested”, and even broken parts are not discarded, because they still maybe valuable.
- Parts may degrade, if they rest in magazines for decades.
- Heat is bad.
- You can trust a self test only on a working machine!
- You need friends!