HP Forums

Full Version: Woodstock ACT Instruction Set
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

I've been delving into my new HP-21. I'm looking at the instructions coming from the ROM and it's clear that there are new instructions, not present in the older 2-chip microprocessor used in the older machines.

Has anyone worked out the instruction set for these machines? I'd like to do a ROM dump someday (some year?) but there seems to be very little information on the internals of Woodstock and Spice calculators. The earlier machines are well-documented due to the patent disclosures (the HP-45 patent and code listing is my favorite bedtime reading these days) and the HP-41 and later machines seem to be well-understood too.

Any solid information, or pointers to same, would be appreciated.

- Michael

Michael,
I have no additional information, but can you describe your procedure, setup and instruments for delving into the HP-21 ? If I can, I will try to do it myself.

Renato

You can learn quite a bit about the woodstock architecture from the HP97 service manual on the HPMUSEUM CDROMs.

Hi David,

Thanks for the tip. I just read the manual. I did get some good info from it, like some signal names, but alas, no information about the ACT instruction set itself. Oh well.

I did also find some good info in some lecture notes for a talk given by Tony Duell.

I'm still looking.

Hi Renato,

First, let me describe how I've spent the last three weeks.

I bought an HP-21 on eBay and received it May 10. I spent a couple of days playing with it and charging up some batteries. I then took it all apart and hooked it up to my test equipment. It's been that way ever since.

I have the HP-21 schematic that's been floating around here for a while. I've been using an oscillscope to look at the various signals coming off the chips and I've produced a detailed timing diagram (similar to what's in the HP-97 servide manual but more detailed).

The most interesting signal is the one that carries addresses and data to and from the ROM. I can look at the signals and read some of the bits but the instructions don't match up well to the Classic instructions, as far as I can tell. In particular, addresses have been widened to 10 bits from 8 and some instructions, branches at least, take two words in memory.

My 'scope has analog storage and delayed sweep, so I can sometimes trigger on a repetitive instruction sequence and read off all the addresses and data; it's pretty tedious though. Here's an example of what I have: the idle loop (waiting for a key to be pressed) is apparently a single instruction, two words long:

Addr  Data       My Interpretation
---- ---- -----------------
254 1111011100 (Probably: If no key pressed, goto...)
255 0011111110 (254)

SYNC is asserted during the data read-in at location 254 but not at 255, as we'd expect from a two-word instruction. (By the way, the bits are presented on the bus LSB first; I've reversed the back to their "right" order in the example.)

I'll throw in the other piece of code I have information for: the other part of the idle loop, which runs after your function has been executed but while your finger is still holding down the button. (In other words, it's waiting for you to lift your finger so that it can resume the scan listed above.)

Addr  Data       My Interpretation
---- ---- -----------------
246 1111001100 (Old CPU: 15->p)
247 0010111100 ???
248 0110010000 (Old CPU: Select ROM 3)
249 1011101100 (Old CPU: If p # 11)
250 0011111000 (248)
251 1111010100 (Probably: If key still down, goto...)
252 0011110110 (246)

The instructions listed as "Old CPU" are probably wrong for the ACT. What actually happens is that the instructions at 246 and 247 initialize a loop, probably a debounce delay. The instructions from 248 to 250 are executed 7 times in the loop. (The delay would be about 7 ms.) After the loop, there is probably a test that says, if the key is still being held down, then jump back up to 246 and do another delay. If the key was lifted, the CPU presumably executes a one-word instruction at location 253 (I haven't seen that one yet), then waits in the one-instruction loop at 254 and 255.

I've stopped looking at the moment because this is about as far as I can get get with the equipment and knowledge I have. I could build a special piece of hardware to automatically grab the addresses and data on the bus but without better information on the instruction set and opcodes, there's not much point.

If any of the HP engineers who worked on these chips or calculators are lurking on this Forum, now would be a good time to speak out!

Comments, etc. always welcome.

- Michael

Michael,
HP designers spoke out in HP Journal, November 1975. I´ve quoted a part of one article below. There is a full article describing woddstock architeture and design. I´ve got a PDF of the HPJ issue on the PPC CD ROM set.

Best regards,

Renato


Quote:
Design Details

Several improvements in the instruction set of the HP-21-family microprocessor made life much easier for the microprogrammer. Three of the most useful improvements were 12-bit subroutine addresses, the digits-to-ROM-address instruction and the data register instructions.

In the HP-35 microprocessor, the microinstruction address was only 8 bits long. Each 256-word ROM would turn itself on or off as ROM-select instructions dictated. There was only one level of subroutine and the return address had only eight bits. The HP-21 microprocessor uses a twelve-bit address. A given ROM responds only when it sees an address it contains. Subroutines can be located in different ROMs and easily return to the correct next instruction. The new processor can save two twelve-bit subroutine return address. Two levels make it possible for one subroutine to call another.


That article is also available here online:

http://www.hpmuseum.org/journals/wooda.htm

Also another article from the same year about Woodstocks:

http://www.hpmuseum.org/journals/woodb.htm

This article is mostly about the hardware design and has some paragraphs about each chip.

Renato, Ellis,

Thanks for the pointers to the articles. Interesting stuff!

- Michael

Mike Sebastion's (Calculator Forensics) website has a page of links to calculator patents. This description is among them:

4055757 HP-22 Financial calculator with annuity begin/end period switch.

Maybe it contains some details you are looking for. He has cleverly hidden the addresses of the individual pages of his site, but if you go to:

http://calcinfo.com/

and click on "Calculator Related Patents", you will see the list. He doesn't have the patents, just links to the United States Patent and Trademark Office.

I just noticed another item in Mike's list of HP patents:

3987290 Engineering notation

According to the HP Journal articles that Renato found, engineering notation was an innovation on the HP25.

Hi Ellis,

The patents were interesting; they even included small bits of source code. I've printed them up and will read them tomorrow.

Some of the other patents were interesting, especially 3955074, which is four pages long and covers just the gold key! I wonder how much money was spent doing that!

Thanks.

- Michael

A a damn fine innovation at that... once you use it, you never go back to SCI.