National Semiconductor Cops Pocket Assistant
Datasheet legend
Ab/c:
Fractions calculation
AC: Alternating current BaseN: Number base calculations Card: Magnetic card storage Cmem: Continuous memory Cond: Conditional execution Const: Scientific constants Cplx: Complex number arithmetic DC: Direct current Eqlib: Equation library Exp: Exponential/logarithmic functions Fin: Financial functions Grph: Graphing capability Hyp: Hyperbolic functions Ind: Indirect addressing Intg: Numerical integration Jump: Unconditional jump (GOTO) Lbl: Program labels LCD: Liquid Crystal Display LED: Light-Emitting Diode Li-ion: Lithium-ion rechargeable battery Lreg: Linear regression (2-variable statistics) mA: Milliamperes of current Mtrx: Matrix support NiCd: Nickel-Cadmium rechargeable battery NiMH: Nickel-metal-hydrite rechargeable battery Prnt: Printer RTC: Real-time clock Sdev: Standard deviation (1-variable statistics) Solv: Equation solver Subr: Subroutine call capability Symb: Symbolic computing Tape: Magnetic tape storage Trig: Trigonometric functions Units: Unit conversions VAC: Volts AC VDC: Volts DC |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*Microcontroller emulator
National Semiconductor Cops Pocket Assistant
National Semiconductor's Cops Pocket Assistant (or the "Green Dick", as it was colloquially called according to Jim Murray, a former NS customer; the origin of this informal name remains obscure) easily qualifies as the weirdest beast in my calculator collection.
To begin with, I'm not even sure whether this machine belongs to my collection in the first place. Appearances can be deceiving: the CPA may look like a calculator, but a calculator it most decidedly isn't (although, as you'll see below, it is actually possible to add or subtract decimal numbers on this beast without having to write programs.)
So what the devil is it? The keyboard labels offer a hint: they look suspiciously like mnemonics of an unknown assembler language. The back label (left, enlarged) offers further clues: in cryptic shorthand, it tells you how to edit the contents of RAM, processor registers, or program code.
But what assembler? A quick search at the National Semiconductor Web site reveals that they indeed have a product line named COPS™: a series of microcontrollers, single-chip microcomputers used mainly in embedded systems. Opening the machine reveals a further hint: the single chip inside is marked COP444.
As it turns out, this calculator-like device is actually a hand-held emulator for the older, 4-bit COPS microcontroller family. (Yes, that means that an emulator for the COP4 series of processors is actually implemented using a COP4 processor.) You can enter small program fragments in COPS assembler and test them for validity (presumably, before burning faulty code into an expensive, one-time programmable device.) Nowadays, emulator software is used for this purpose; although my CPA has no date on it anywhere, it obviously predates the widespread use of personal computers for software simulation.
Some Internet references suggest that the COP4 family was used in handheld calculators. So perhaps this machine belongs in my collection after all; it looks like a calculator, it can actually perform calculations (with some difficulty), and it is an emulator device for hardware used in calculators.
So how do you use this beast? The keyboard mnemonics plus the back label offer enough clues to decipher many of the machine's features. For instance, the back label suggests that a "subroutine 2C" may produce a tone; let's give it a try! Hmmm, we want to execute a single instruction, so perphaps we start by hitting the EXEC key. Then we want to call a subroutine: JSR 2 C. The mnemonic for this instruction appeared on the display but nothing else really happened... so why don't I press SS, which presumably stands for single-step, to execute this instruction? Bingo! A beep is heard.
The same method can also be used to add two numbers. The first number is entered into RAM bank 0; the second, into RAM bank one. Then subroutine 21 is called to execute a BCD (binary-coded decimal) addition. In other words:
- Press MODIFY 4 to prepare for entering the first number
- Enter 8 digits, such as 00000123
- Press MODIFY 5 to prepare for entering the second number
- Enter 8 digits, such as 00000456
- Execute subroutine 21 by keying EXEC JSR 2 1 SS; the result (00000579) should be displayed.
So how do you enter programs into this machine? Why, using the PROG button of course. Hit PROG, enter the program step and any optional arguments, and then make sure you hit PROG or SS again otherwise the step you just entered won't be stored in memory. (This can get a bit confusing.) So here's a small assembly-language program that beeps six times:
00 CLRA ; Initialize 01 AISC A ; Start count from 10 (up to 16) 02 JSR 2C ; Beep 03 LBI 01 ; Address 1 is the high-order counter nibble 04 X 0 ; Exchange counter hi with beep counter 05 LBI 00 ; Address 0 is the low-order counter nibble 06 X 0 ; Exchange counter hi with counter lo 07 AISC 1 ; Increment counter lo 08 JP 07 ; Loop 09 X 0 ; Exchange counter hi with counter lo 0A AISC 1 ; Increment counter hi 0B JP 06 ; Loop 0C LBI 01 ; Address of counter hi 0D X 0 ; Exchange counter hi with beep counter 0E AISC 1 ; Increment beep counter 0F JP 02 ; Loop 10 JP 10 ; Halt
This program not just beeps, it also executes a considerable pause between beeps. To run it, hit RUN. Hitting RESET stops the program. The pause is implemented using a counter in memory, which you can actually watch while the program executes; to do so, hit DISP 4 before starting the program, this'll keep the lower half of RAM bank 0 on the display.
Was this machine ever sold in stores? Was it given away as a promotion? Was it sold along with large-quantity orders of COPS microcontrollers? It does seem to have a few bugs in the implementation (in the absence of any documentation, I cannot be sure); perhaps it was never sold at all? (Jim Murray suggests that it was given away to large volume customers to help them understand COP programming.)
Here's one more curious feature of this machine: one display mode allows the user to control all 64 display segments (8 times 7 segments plus 8 decimal points) individually. This, in fact, is what allowed me to put the digits if π on the calculator's display before scanning (not that the digits are very legible in the JPG image shown here, but trust me, it's the value of π there.) Here's how to do it:
- Press MODIFY 0 to modify the upper half of RAM bank 0
- Enter FC606660
- Press MODIFY 4 to modify the lower half of RAM bank 0
- Enter D6F6B570
- Press DISP 6 to display "register 0"
That's it. Now if you don't think it's fun, you're not a true geek!