12/24-bit CPUs, was Re: Oregon Software Pascal/2

Rick Bensene rickb at bensene.com
Sat Oct 14 21:39:05 CDT 2006


On Oct 13, 2006, at 2:32 PM, woodelf wrote:
> So how many people have a working 24 bit computer on *this* list
> at home or in storage? I may end up building a 24/12 bit design
> ( the PCB layout and hardware design is my problem ) but designing
> a schematic is not.

I unfortunately don't have it (I had a chance, but didn't have a place
to put it), but in high school, the school had a 24-bit computer.

Quite an interesting machine.  It used 8K-word magnetic drum memory.
There were two complete redundant CPUs, each with their own 8K drum.
There was a "shared register" between the two machines that could be
used for inter-CPU communication.  The machines also shared a very
interesting
I/O system that was housed in a large cabinet.  The I/O system consisted
of a Current Loop interface for an ASR-33 teletype (as well as paper
tape reader control), an interface for a wide-carriage IBM output
typewriter (individual typebars, not a Selectric-style device), and a
large number of digital input and output ports, a number of programmable
counters (to be used as interval timers), along with a bunch of A/D and
D/A channels.
There was also a BCD real-time clock which kept track of the time of day
in hours/minutes/seconds, and also toggled a bank of flip flops at
various rates which could be polled (no interrupts existed on the
machine) to track time in various increments (1/2, 1/4, 1/8 and 1/16-th
second intervals, if I remember correctly).  There was also a set of
thumbwheel numeric input switches which could be read, which, if I
recall correctly, was 6 digits long, BCD encoded.  The machine was all
transistorized.  No ICs anywhere.
The machine was made by 3M Corp. (Minnesota Mining & Manufacturing).  It
was a process control machine.  Its original use was as a natural gas
pipeline pressure monitoring and control system by Northwest Natural Gas
Co. in Portland, Oregon.  After it was retired, it was donated to our
high school.

When I started at the high school, one of the drums had failed, so one
CPU was inoperative.  But, the other worked well.  

It was a two address machine, with operand address, and next instruction
address.  Addresses were of the form block/track/sector as the drum was
organized.   The instruction set was pretty simple, there were five bits
in the opcode.  There was an accumulator (24 bits), and a "B" register
which could be used for temporary storage.  The accumulator and B
register were discrete registers, not located on the drum.  Master
timing for the machine was generated by a pre-written clock track on the
drum, so all operations of the machine were synchronized with the drum
rotation.  Some kind of phase locked loop or the like was used to keep
the drum rotating at a consistent speed (I think it was 3,600 RPM).  The
instruction set documentation had a "for optimum programming" section
for each instruction, which provided formulas for the operand address
and next instruction address to minimize the access time for the
instruction.  Typically, the operand address was the current address +
3, and the next instruction address was the current address + 6.  Using
these formulas would mean that the operand would be under the head after
the instruction was fetched and decoded, and the next instruction would
be under the head when the operation was completed.
There were no index registers or base registers or anything like that.
Addressing tables and such had to be performed by instruction
modification, e.g., load an instruction into the accumulator, increment
(or add 3 for optimum programming) to the operand address, store the
accumulator back over the top of the instruction, then execute the
modified instruction.  Made list processing, stacks, and the like rather
tedious.

Each CPU was in a "drawer" about 8 to 10 rack units high.  The drum was
located in the center of the chassis, with circuit boards (which, IIRC,
were about 7" long, and 5" wide) plugged into a backplane in the shape
of a "U" around the drum.  The two CPUs mounted in a small rack one atop
the other.
Controls for the CPU were simple.  STOP, START, CLEAR, and LOAD.  Clear
cleared all of the working registers, and set the program counter to
Block 0/Track 0/Sector 0, and halted the machine.  Stop halted the
computer after the execution of the current instruction was completed.
START began program execution.  LOAD put the machine into a hardwired
loader that would allow address/data pairs to be loaded into the drum
from the paper tape reader on the ASR-33.  The address and data were
expected in octal, with a space separating the address and the data.
These controls were momentary pushbuttons, with the START, STOP, and
LOAD buttons lit to indicate when the machine was running, halted, or in
LOAD mode.   Five indicators would show the opcode of the current
instruction.  I seem to recall that it was possible to
single-instruction step the machine by putting the machine into STOP
mode, then holding the STOP button down when pressing the RUN button at
the same time, but this memory could be incorrect.

There was a two-pass assembler called SOAP that could be loaded from
tape, then the source run through the paper tape reader twice, with the
resulting object code stored on the drum.  SOAP was pretty big, though,
about 4K resident, which meant that you couldn't write anything much
larger than about 4K in size with the assembler.

I had spent time at the Oregon Museum of Science and Industry (OMSI) on
their "Straight 8" PDP-8 System, and had learned FOCAL.  I decided to
try to write FOCAL on the 3M machine.  I actually got to it to the point
where small programs could be entered, edited, and executed.  It did
integer math only (24 bit), as floating point simply wouldn't have fit.
When a line of code was entered, and the RETURN key hit, it would take
about 1.5 seconds for the line to be parsed, error checked, and stored.
This machine was not very fast.  I wrote quite a few programs for this
machine, including a blackjack game, tic tac toe, an alarm clock (you'd
enter the time on the thumbwheel switches, and when the time came along,
the teletype would ring the bell).

Never got the IBM output typewriter working.  It had mechanical problems
(probably needed a thorough cleaning and lubrication).  After I
graduated from high school, the machine didn't get much attention.
Someone tried powering it up at one point, and the drum in the still
operating CPU failed..bearings went bad, and (fixed) heads crashed.  The
school eventually moved to a new building two years after I graduated,
and that's when I had the opportunity to take the machine, but I had no
place to put it, nor any way to move it.  It was rather large (and
heavy).

The cabinetry was all painted a dark blue color.  A white formica table
top sat on top of the two CPUs in their small rack, and on top was a
console with the real-time clock (using incandescent displays that had a
GE-47-style lamp that shined through a piece of film that had the digit
on it, which projected the digit on the a satin-finish plastic display
screen).  The clock was not made by 3M, but by someone else, was about 6
rack units high, and had pushbuttons to manually advance the hours,
minutes, and seconds. It was implemented with transistor logic,
connected as ring counters for each digit. Also on this panel was the
six-digit thumbwheel numeric entry device.
The IBM typewriter sat to the right of this panel.  The controls for the
CPUs were mounted on the front plate of each CPU drawer.  To the left of
the CPU drawers was the large cabinet that housed all of the I/O
circuitry.  It was crammed full of transistorized modules that plugged
into a massive backplane.

Each CPU had its own power supply, as well as the I/O cabinet, and the
realtime clock.  Each CPU needed a 20A 110V circuit.  The I/O cabinet
needed a 30A 110V circuit.  The clock, IBM typewriter, and Teletype had
their own 20A 110V circuit.

I've been unable to remember the model number of this machine.  I recall
that it was 4 digits long.  At one time, I had a big binder which
contained a bunch of documentation for the machine, including the
instruction set information, some information about the I/O subsystem
programming, and also complete schematics for the CPU.  I've searched
and searched for it, and can't find it -- so I think that it must have
been lost or accidentally tossed in one of many moves. 

I've searched high and low on the web looking for any references of any
computers made by 3M, and have found nothing.  My guess is that they
didn't made computers for a very long period of time.  My recollection
is that the date on the documentation was 1965, but not sure of this.

Anyway, probably a whole lot more here than anyone cares about, but it
is my hope that perhaps someone out there may recall a machine like this
made by 3M.

Sure had a lot of fun playing with that machine.  Learned a great deal
from it.  The mainstay computing at our highschool was an HP timeshare
system (initially, HP 2000C, advancing over the years to a 2000C',
2000F, then 2000/Access) which were accessed by dial-up ASR-33
teletypes.  A "closed" BASIC environment, which was great, but no
machine-level programming.  I learned a great deal about "how computers
work" from the old 3M machine.

Thanks for letting me spew out all these memories.

Rick Bensene
The Old Calculator Web Museum
http://oldcalculatormuseum.com 




More information about the cctech mailing list