Compucorp

Monroe (Compucorp) 326 Scientist

I'm thrilled to have this programmable calculator from 1974! Compucorp made them for sale under its own name, and also sold them to Monroe/Litton and Sumlock for rebranding.

Starting in 1972, Compucorp's 300-series provided a set of machines with varying levels of functionality for several disciplines (Science, Statistics, Surveying, Bond Trading). But at heart they were all the same: a computer that could be outfitted with different ROMs and keyboards to provide different functions. The 326 let the user program his own functions. Additionally, it sported an RS232 port to connect it to the Compucorp 392 cassette tape deck, to which the 326 could write both programs and data for later recall. Compucorp also released their own pre-recorded cassettes of programs to give the 326 the same abilities (and more) as any of the other 300-series machines.

Not only could programs and data be written-to and read-from tape, the programs themselves could do the writing/reading. As a result, it was capable of "virtual-memory". A program larger than the machines 160-step limit could be executed in "segments", and a database larger than would fit in memory could be managed on tape.

Programs are sequences of keystrokes, but "jump" and "branch" support decision logic. Programs can be easily edited with insert/remove and forward/backward functions. In programming mode (called "load" on the trinary switch, second from left in the top row) the display shows 3 steps at a time - the current step, the prior one and the next one. Each step is a 3-digit op-code. Many multi-key operations generate a single op-code, conserving program memory. A pull-out card identifies all the op-codes and key sequences.

All told, this was a really powerful device for its time. The calculator/computer, its AC power suppy, and the tape deck were sold together in a briefcase - a portable computer! (The computer also sports its own handle/kickstand, and can run on 4 D cells.)

My 326 runs perfectly, though it is somewhat dirty and is missing 3 keys. I've had it open already for service: 5 keys on the same line were initially dead, and I had to clean the connection between the keyboard and the ribbon cable to the keyscanner. I may have to open it again to replace the keys. I certainly plan to clean it up. Meanwhile, here are the "before" pictures. That's an HP-65 in one of the pictures, to give you an idea of the 326's size.

Compucorp 322G Scientist

These are such cool machines I've set out to get more of them. Here's a 322G Scientist from around 1972. It's a general purpose machine, most of whose advanced features deal with angular calculations. These include the usual trig functions, rectangular/polar conversion, and fractional degrees to/from D.MS. GRAD/DEG switch determines whether the calculator gives results in gradians or degrees.

Some keys perform two functions, but the expected "2ND FUNC" key is postfix not prefix. So if you want cos(90), for example, you enter 90 and press the SIN/COS key to initially see 1.000, which is sin(90), in the display. You then press 2ND-FUNC to see 0.000, or cos(90). It's nearly impossible to get used to after all these years of prefix function keys!

But the 2ND-FUNC key hides a surprise not documented in the manual or on any websites (though Victor Toth alludes to it in his site's description of the Compucorp 324G Scientist here). It actually toggles between two independent display registers. You can, for example, key in 5 2ND-FUNC 7 and now each press of 2ND-FUNC will toggle the display between 5 and 7. You can perform any single-function key operation on one of the registers without affecting the other. So the sequence 5 2ND-FUNC 7 + 1 = 2ND-FUNC + 1 = results in having 6 in one register and 8 in the other. Of course, pressing one of the double-function keys replaces the contents of both registers. However, RESET only zeroes the current display register - the one not being displayed is not reset, and neither are any of the memories.

The 322 can be limitedly programmed. Compucorp calls it "scratchpad" programming in the manual. Essentially it can record a sequence of up to 80 keystrokes entered immediately after you move the RUN/LOAD switch to the LOAD position. After you record a sequence you slide the switch back to RUN and press STOP/START to replay them. The trick is that if the recorded sequence includes a press of the STOP/START button, the replay will halt at that point and allow you to replace the contents of the display. If you then press STOP/START the replay will continue. Thus, as you record your "program" you can press STOP/START before you enter anything you consider a variable, and when you replay the program you can enter new values for the variables.

It's pretty rudimentary, and there's no provision for recording or editing programs. Every time you slide the switch to LOAD it clears the program and starts a new one from scratch. So if you make a mistake while entering your program, you have to start all over.

There is likewise no provision for any conditional branching per se, but there is a clever workaround due to two features. First, if the execution of a keystroke causes an error, the program halts with "E-----" in the display. You can press RESET to clear this, at which point you can recall the values of any of the 12 memories (keys 0 through 9, the decimal point, and CHG SIGN.) Second, when replay hits the last recorded keystroke it loops back to the beginning!

With this you can write a simple iterative operation terminated by the triggering of an error, like dividing by 0 or taking the square root of -1. The program can maintain its results in any of the memories, and when it stops you can just clear the error and recall them.

Here's how to set up a simple program to compute Fibonacci numbers, i.e. elements of the sequence 1, 1, 2, 3, 5, 8, 13,... where each successive number is the sum of the previous two.

This program has 17 keystrokes. Can anyone see a way to make it smaller?

To run the program, do the first 3 steps and then press RUN/STOP. For N enter any integer. Execution will end when the display shows "E------". Then press RESET, and then RCLn 2 to see the fib number N steps after the initial 1,1,... E.g. if you start the program by entering 1 STn 1 STn 2 5 RUN/STOP, mem 2 will hold 13 (and mem 1 will hold 8). The loop runs in about 0.45 seconds - 30 loops in 13.6 seconds.

Home Made Flat Flex Cable

This machine was not entirely working when I got it. I had to open it up and track down the problem. It turned out to be in the flat flex cable connecting the keyboard PCB to the key-scanner PCB - the connection at one or both ends was poor and intermittent. This was either due to the cable itself (which was starting to separate) or with the connection mechanism. The conductors in the cable are pressed to the connectors on the PCBs under plastic blocks that screw to the PCB. To focus the pressure, each block has a little raised rubber strip running down pressuring side. It presses upon the back of the cable right over the strip of exposed conductors, forcing the exposed parts into contact with the connectors on the PCB. But in time, those little rubber strips squish and lose their sponginess, permitting contact to be lost.

Unhappily, the flex cable began to fall seriously apart when I removed it to try to improve contact - a total loss. I unsuccessfully tried to find a replacement on the internet, even contacting the original manufacturer (Teledyne Kinetics.) What's needed is a 3" side flat flex cable (FFC) with 0.1" (2.54mm) pitch. The OEM part only has 28 conductors in two groups of 14 separated by a 2 conductor gap. So a 30 conductor cable would do just fine - the middle two are just not needed. (In fact 4 of the 28 also go nowhere, though they're not at any symmetrical places.)

I therefore resolved to build my own. I did it by starting with clear vinyl "shelf paper" with an adhesive backing. I pressed a sheet of aluminum foil to the adhesive side, and scored lines in the foil every 0.05". I then removed every other strip of foil to leave 0.05" strips to serve as the conductors. I then covered the foil side with another sheet of red adhesive backed vinyl, leaving 2 narrow strips of exposed conductor near either end. Using the plastic blocks recovered from the OEM flex, and after replacing the crushed rubber strips, I reassembled the machine and it now works fine!

This is the original cable. Below the crease you can see it has come apart.

Alum foil stuck to adhesive-backed vinyl, taped to page with lines spaced at 0.05".

After scoring the foil along the lines and removing the foil in the gaps between conductors.

After layering another sheet of vinyl on top and connecting to the PCBs.

Monroe 324 Scientist

The 324 is essentially the same as the 323, but it has an extra memory bank for programs.

Compucorp 340 Statistician

Compucorp (Gould) Batteries

My 322G had the original NiCad batteries in it. They are 4AH D-cells made by Gould of St. Paul, Minnesota. Compucorp wrapped their own label around them and called them part 3400017.