Post Reply 
HP71 prototype ROM (0AAAA) - some observations
10-30-2016, 09:05 AM
Post: #1
HP71 prototype ROM (0AAAA) - some observations
As reported recently, Matthias made his HP71 and HPIL prototype ROMs available at the Allschwil meeting 2016.

Getting the ROM:
It was not possible to dump the ROM content through HPIL using a standard (production) HPIL module, as Matthias experimented and as Sylvain and I confirmed it at Allschwil. Most attempts to use the HPIL were producing various errors, not even related to the HPIL.
I suspected that the production HPIL module was not compatible with this early HP71 ROM, due to the different HP71 internal function entry addresses (the HPIL ROM makes a lot of calls to the HP71 OS, using absolute addresses - the so-called supported entry points).
Fortunately, Matthias also owns a HPIL prototype, so we were able to try it and it worked !
The rest was easy.

Versions and date:
VER$ returns TI%RM4-HP71:0AAAA HPIL:H4
TI%RM4 stands for Titan Release 4
The production HP71:1BBBB is TI%RM6 (see loader listing in the HP71 IDS - 71idsv3.pdf, p9)

The HPIL:H4 version may be an indication of the HPIL Release 4.
The production HPIL:1B is TI%HP7 (see loader listing in the HPIL IDS - 71ilids2.pdf, p8) and is using the file TI%R6S (Titan Release 6 Symbol file)

There is no visible date in the HP71 ROM (contrary to production HP71), but the HPIL ROM provides us an indication, since CAT HPILROM gives:
HPILROM LEX 16183 04/27/83 16:43
We can assume this release 4 was done on April 1983.

Prototype special developement keywords:

A quick scan of the ROM content shows that the HP71 prototype ROM holds an extra keyword (not found in production HP71): DEBUG (token #015C)
The code of DEBUG is:
1A3B9 GOSUBVL #C0000
DEBUG just branches to #C0000. We can suppose that HP used a hard-configured debug ROM or debug tool at this address.

The HPIL prototype ROM also holds a special keyword: RECONF (token #FF27), and the DEVID$ function is missing.
RECONF was used to reconfigure the HPIL module at address F0000, whatever was its address set by the HP71 configuration code.
Note that the source code listing in the HPIL IDS uses F0000 too, as the absolute address of the HPIL ROM.
It may have been used to make the debugging easier.
Here is the code of the RECONF command:
E6E06 GOSUB #E6E0A
E6E0A C=RSTK
E6E0C B=C A
E6E0E P= 0
E6E10 LC(5) #001D3
E6E17 RSTK=C
E6E19 P= 4
E6E1B LCHEX #F
E6E1E BCEX A
E6E20 UNCNFG

The code after UNCNFG is irrevelant, because the HPIL ROM itself is unconfigured after this point.
I let you find out where the code goes on (quite easy to figure out, actually).

HPIL messages:
Some HPIL error messages are slightly different, for instance
255001 Buffer Not Found (ASSIGN IO Needed)
255036 Frame Error (Message Error)

There are three HPIL messages that are not found in the production HPIL module:
255021 Low Battery
255027 End Of File
255029 Medium Protect

The interesting point is that these three HPIL messages are mentionned in the latest edition of the HPIL manual (3rd edition, 1985), even if there are not present in the HPIL module version A or B. In the past, I thought it could be an indication of an hypothetic, never released version C, but it seems to be actually the opposite: these messages were in the pre-release versions and have been removed for production for some reason, and are still present (by mistake?) in the user documentation.

Note: to display the error messages without a LEX with the MSG$ function - that probably wouldn't work with the prototype ROM due to the entry point issue - you can use this trick, e.g. for message 255021: POKE "2F7E4","51FF" @ ERRM$

Thanks again to Matthias for sharing these prototype ROMs with the community!

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)