Drum Computers (Was Cleaning things (was Cleaning RK05 packs (Was: LGP-30 Memory Drum Update)))
rickb at bensene.com
Fri Jan 6 20:46:38 CST 2017
>I envy the chance to restore a LGP-30 or for that fact play with one.
>Many of the things I remember
>mid sixties on are now gone or were rare then. Like small desk sized drum computers using transistors or first generation IC (RTL and RDTL).
I so regret not having rescued an old computer that I played with through all four years of high school.
The machine was made by Minnesota Mining and Manufacturing (aka 3M Corporation). Today, there seems to be no record that 3M ever was in the computer business. But...it was. The system was designed expressly for process control. Kind of makes sense for 3M to develop a system like this, since most of the manufacturing they did needed process controls, and at the time, computers were getting to into that role in place of electromechanical systems.
The system was given to our high school by the local Natural Gas public utility that used the system from the mid-1960's through the early-1970's for monitoring and controlling gas flow in pipelines. It was replaced by more modern computer, a PDP-11 of some variety, IIRC.
This 3M machine was a dual processor system, with two identical CPUs that could communicate to each other through a common register located in an I/O rack. The original process control software was designed so that both CPUs would operate in tandem, each doing a different part of the job. One CPU mainly did all of the I/O interfacing and data normalization, and the other CPU did the number crunching and processing for the process control, feeding results back to the I/O CPU to control the physical stuff, and generating reports on an IBM typebar-type output typewriter. Operator interaction with the process control system was through a Teletype 33-ASR terminal.
The CPUs were transistorized. I recall that the cards were arranged in a U fashion looking at the CPU chassis from the top, some power supply circuitry and relays at the top of the U, the circuit cards making up the sides and bottom of the U, and the drum memory module in the middle.. Each CPU was something like 12RU height, and were in a small desk-high standard 19" equipment rack, with the CPUs stacked one above the other.
The CPUs were 24-bit word machines, with an 8K-word magnetic drum as main memory. Instructions had five bits for the opcode, and two address fields, one for operand location (drum address in block/track/sector format) or in the case of some instructions a short constant number), and also a next instruction address (again in block/track/sector format).
The I/O rack had the interprocessor communication register, along with registers for reading the time from a transistorized Parabam real-time clock (HH:MM:SS) in 24-hour time (The clock had those wonderful projection-type incandescent displays to show the current time), a Teletype current-loop interface at 110 baud, an interface for communication the IBM wide-carriage output typewriter (which we never we able to get working), and a whole slew of relay outputs, contact closure inputs, digital to analog converters with line drivers, and comparators with counters connected that could act as software-driven analog to digital converters, event counters, etc. One last output interface was a register that was write-only that could enable or disable an old Mallory Sonalert that would generate an ear-splitting shriek when turned on. There were also two banks of decimal thumbwheel switches, one with three digits, and another with 8 digits, that could be read from the CPU 4-bits at a time through an I/O register.
When I got to high school in 1974, the drum in one of the CPUs had suffered a bearing failure and crashed hard. The instructor of the computing curriculum looked into seeing if the drum could be repaired, but it would have been prohibitively expensive, so the drum was removed from this CPU and used as a prop for illustrating different types of memory technology to his students.
The other CPU ran fine through my years of high school, and I learned a great deal about programming at the machine level from the old 3M (I for the life of me can't remember the model number of the machine).
I fondly remember writing an "alarm clock" program where a time in HHMMSS form could be wheeled into the low six digits of the eight-digit thumbwheel register, and when the time there matched the time on the Parabam clock, it'd fire off the Sonalert, and print an arbitrary message on the teletype repeatedly until the program was halted by dialing a stop code read from the three digit thumbwheel switch bank when the program was started. Once the program was started, I'd scramble the three digit thumbwheels, so no one but me would know the code to stop the program. You might think that you could just press the "STOP" button on the console...but there was a Plexiglas cover with a small padlock lock on it that covered the console controls...and I had a key).
So, I'd set a time during one of the 1st year computer classes, start the program, and lock the cover over the console. In the middle of the class, the Sonalert would go off, and the teletype would rattle out "HELP, HELP!! I'M TRAPPED IN HERE!!! LET ME OUT!!!" with Control-G (ring the Teletype bell) interspersed amongst the characters). It would cause just a bit of a fuss. After watching the chaos for a few moments, I would calmly walk in and dial the code to stop the program.
Needless to say, after I did this a few times, I was kindly asked by the computer instructor not to do that anymore. It was great fun while it lasted.
The machine had no index registers. So, indexing meant writing self-modifying code. Never was bounds checking more important than when you were writing self-modifying code.
The machine had a hardware loader, which would accept block/track/sector addresses followed by a space, then the 8-digit octal representation of the word to be placed at that drum address. The loader was initiated by pressing a "LOAD" button on the console when the CPU was stopped. The loader was fast enough to be able to take in programs from the tape reader on the 33-ASR Teletype hooked up to the machine. There were four other controls on the console not counting the main power switch. "STOP" (halted the machine), "CLEAR" (initialized the program counter and two accumulators (A & B) to zero), and "START", which started the CPU executing at the current program counter location, which most of the time was 0/0/0 because you'd press CLEAR before START, and have a jump at 0/0/0 to branch to your program. The STOP and START buttons were lighted, so you could tell if the machine was running or halted. The last control was a momentary toggle switch, that would single-step one instruction when the machine was in STOP state. There were five neon lamp indicators on the console that showed the current instruction opcode to be executed. With such minimalistic controls, debugging was interesting, to say the least.
When powered up, the machine would have both the START and STOP lights turned off until the drum got up to speed and everything was synchronized, and then the lamp in the stop key would light up to tell you the machine was ready.
The machine was completely bit-serial in nature, minimizing the number of flip flops. I recall that the circuit boards in the machine were something like 5x7 inches (give or take), and were not densely packed with components. They were fiberglass boards, with traces only on one side, and jumper wires on the component side. I remember date codes on the transistors as being from the 1963 - 1964 timeframe. I recollect that there were something around 48 circuit boards in each CPU. We occasionally had to scrounge boards out of the decommissioned second CPU to fix faults that developed in the running machine...it was musical board swapping to troubleshoot because we didn't have any schematics or service documentation for the machine. The machine was quite slow, even if you wrote the code to use instruction timing to optimize placement of instructions and operands on the drum to minimize latency. I recall writing a program that I optimized as best as I possibly could, and the machine couldn't output to the Teletype at its full rated speed when typing out text from an arbitrarily located text buffer. It'd do about 9 characters per second. The machine had interrupt capability, but most of the interrupt processing logic was in the I/O rack, and something was amiss with the logic, and we were never able to get it to work properly. So, alll I/O was CPU polling, which explains part of why the I/O was slow.
I managed to write a minimal DEC FOCAL interpreter for the machine. IIt was really slow, but it worked. The floating point math routines were the most difficult. I had learned FOCAL on a DEC PDP 8 (straight 8) in a class I took when I was in 8th grade, and it seemed simple enough that I could make it work on the 3M machine. I had thought about trying to do BASIC for the machine, but I decided on FOCAL because it was a lot less complex. Glad I chose FOCAL, because It barely fit, even in somewhat minimalized form, on the 8K drum. It was very slow having to pack/unpack three ASCII characters into 24-bit words, but to make everything fit, I had to do it. And, with only two registers (accumulator A and B), and the interprocessor communication 24-bit register that was accessible through I/O instructions, it was quite a challenge.
Anyway, I graduated in 1977. I went back during the 1979 school year to visit, and the whole place had changed. The amazing computer curriculum teacher was gone, promoted to somewhere in the district administration, and some younger new guy was there whom I took a pretty immediate dislike to. This was his first year teaching at the school, and the first thing he did was call a scrap dealer to come take away the 3M machine, along with another old machine that was donated to the school...hardly a computer, more like an accounting machine, made by SCM, called a 7816 Typetronic. They were both gone, and I was really angry that they had gone off to scrap. Also, the IMSAI 8080 microcomputer that a small group of students including myself had built from kit form as a high school project during the end of Junior and first part of Senior year in high school was nowhere to be seen. In their place were a number of shiny new Apple II computers. These, to me, seemed mere toys compared to the "real" computer that had gone off to scrap. Had I known this was going to happen, I would have somehow come up with a way to rescue the 3M machine (it wasn't small, nor lightweight) to some kind of safe storage until I would have the resources to restore them. Fortunately, through pure luck, I did manage to find that old IMSAI that we built....and it is in my collection today, and works great. A story for another time.
So, even though I was born a bit late to have been "in the prime time" of the earlier computers, I did get the rare experience for a person my age of working with a machine that used magnetic drum memory as primary memory, and I wouldn't trade what I learned from that old beast for anything.
More information about the cctalk