Post Reply 
What does HP-41 <<"FFD" XROM "HN" STO b>> do?
09-28-2024, 10:01 PM
Post: #1
What does HP-41 <<"FFD" XROM "HN" STO b>> do?
In my copy of The HP-41 Synthetic Quick Reference Guide by Jeremy Smith, the following cryptic note is hand-written in the margin:

hFFD, XROM "HN", STO b, SST

The PPC ROM User's Manual gave me a hint: The above means: Key the three characters "FFD" into the HP-41's ALPHA register, then execute the PPC ROM routine "HN" (Hex to NNN), then execute STO b, then press SST.

This would SEEM TO ME to force the program pointer to jump to address FFD (or DFF?) and then SST, but I don't know what the purpose of doing that might be. Repeated attempts to do this either land inside ROM space (PRGM mode says PRIVATE) or at the .END. of program memory.

Can anybody decipher this cryptic marginal note for me? Thanks in advance!

<0|ɸ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
09-29-2024, 09:12 AM (This post was last modified: 09-29-2024 09:50 AM by J-F Garnier.)
Post: #2
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
I seem to remember that it was a way to identify the HP-41 system ROM revision, using only synthetic means.

Trying on V41 with a 41CV "HFF" ROM image:
press SST and keep it down --> LBL 07 is displayed --> ROM word is 008 --> revision 'H'

Same can be done at 1FFD and 2FFD to read the revision of the two other system ROMs.

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
09-29-2024, 12:23 PM
Post: #3
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
Excellent! Reading this thread feels just like being at a PPC meeting back in the day. So much satisfaction from such a simple Q&A is rare, thanks for the flashback! Smile

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
09-29-2024, 03:40 PM
Post: #4
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
(09-29-2024 09:12 AM)J-F Garnier Wrote:  Trying on V41 with a 41CV "HFF" ROM image:
press SST and keep it down --> LBL 07 is displayed --> ROM word is 008 --> revision 'H'

Hi J-F!

This looks like a great tip, something I missed or have forgotten since those days ... Wink

But, sorry to be a party spoiler ....

I'm trying to understand how this works and I think something is missing in the description.
I tried it on a CV, but all I get is "01" for several seconds, then "01 STO 00" and finally "NULL" if I keep pressing.
The same result on a CX, but on a C I got "03 ############" (#=blockstar).

xFFE (i.e. FFD+1) is indeed the ROM address stating the revision, but SST will not work on a 10 bit address, it will take the PC as a FOCAL address (brrr where b is the byte in RAM register rrr), and try to look it up, and PC goes down in memory, i.e. decrementing the PC.

I traced the execution when pressing SST after the STO b, and indeed the address goes from 0FFD -> CFFC -> AFFC etc down in memory until it finds something.

In my case this happens in X-Memory at register address 301 (masked out from F01):

Code:
   4828>0000|0000000000CF01 *x 29BD (Q10:1BD) 270 - RAM SLCT  <-- Next address to check (0F01)
   4829>0000|0000000000CF01 *x 29BE (Q10:1BE) 07C - RCR 4
   482A>0000|0000000000CF01 *x 29BF (Q10:1BF) 130 - LDI S&X
   482B>0000|CF010000000000  x 29C0 (Q10:1C0) 221 - CON: 221 (1041)
   482C>0000|CF010000000000 *x 29C1 (Q10:1C1) 0FC - RCR 10
   482D>0000|FFFF0000000221 *x 29C2 (Q10:1C2) 1E0 - GOTO ADR
   482E>0000|0000000221CF01 *x 221C (Q 8:21C) 038 - READ DATA
   482F>0000|30130100000301 *x 221D (Q 8:21D) 37C - RCR 12  <-- Now we found something!
   4830>0000|00130100000301 *x 221E (Q 8:21E) 3E0 - RTN

And my X-Memory at register 301 contains the found data:
Code:
Reg 301: 30130100000301
That is the first data we read from RAM, until here, we just have read zero (0).

Somehow we must fool the calculator to think it is ROM execution mode (NUT flag 10), otherwise I don't think we are able ro read the ROM - by just executing FFD XEQ 'HN STO b SST the calculator will just read RAM ...

So, lets dig deeper and see if we can help Joe with his cryptic marginal note ... Wink

Cheers,
Thomas

[35/45/55/65/67/97/80 21/25/29C 31E/32E/33E|C/34C/38E 41C|CV|CX 71B 10C/11C/12C/15C|CE/16C 32S|SII/42S 28C|S 48GX/49G/50G 35S 41X]
Find all posts by this user
Quote this message in a reply
09-29-2024, 03:59 PM (This post was last modified: 09-29-2024 04:22 PM by J-F Garnier.)
Post: #5
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
(09-29-2024 03:40 PM)ThomasF Wrote:  I'm trying to understand how this works and I think something is missing in the description.
I tried it on a CV, but all I get is "01" for several seconds, then "01 STO 00" and finally "NULL" if I keep pressing.
The same result on a CX, but on a C I got "03 ############" (#=blockstar).

Ah, ah, indeed, there is an additional trick here Smile

It works if we use the PPC ROM "HN" immediately before the STO b (this is what I did in my test).

Edit:
The PPC ROM is not mandatory. I used this way to identify the ROM revision of my 41CV back at the time without it, using a synthetic HEX->NN conversion program, a synthetic STO b key assignment, and a ROM module.
Here is a receipe using the Math module:
- convert "FFD" to a binary NNN,
- GTO "MATRIX", RTN (the RTN is mandatory) to put the PC pointer into ROM,
- STO b
- hold SST down to view the next instruction until NULL.

It works for me.

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
09-29-2024, 04:24 PM
Post: #6
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
(09-29-2024 03:59 PM)J-F Garnier Wrote:  Ah, ah, indeed, there is an additional trick here Smile

It works if we use the PPC ROM "HN" immediately before the STO b (this is what I did in my test).

J-F

Ah! Thanks J-F

That makes sense!
I thought I was smart and used the MCode routine CODE to get the NNN, which changed the prerequisites!
Calling the original sequence I also was successful!

Code:
   E335>0000|00000000000FFD *x 29B2 (Q10:1B2) 0AE - A<>C     ALL
   E336>0000|00000000000FFD *x 29B3 (Q10:1B3) 10E - A=C      ALL
   E337>0000|0000052C040FFE *x 29B4 (Q10:1B4) 1BC - RCR 11
   E338>0000|0000052C040FFE *x 29B5 (Q10:1B5) 330 - FETCH S&X
   E339>0000|0052C040FFE000  x 0FFE (Q 3:3FE) 00E   > @0FFE --> 00E (0016) <-- Here we go!
   E33A>0000|0052C040FFE000 *x 29B6 (Q10:1B6) 3E0 - RTN

Now the trace show that we really read from xFFE - which is the revision - and on my CX I got "01 LBL 13" - rev "E".

Cheers,
Thomas

[35/45/55/65/67/97/80 21/25/29C 31E/32E/33E|C/34C/38E 41C|CV|CX 71B 10C/11C/12C/15C|CE/16C 32S|SII/42S 28C|S 48GX/49G/50G 35S 41X]
Find all posts by this user
Quote this message in a reply
09-30-2024, 03:05 AM
Post: #7
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
Many thanks, J-F and Thomas! Mystery solved! Smile

<0|ɸ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
09-30-2024, 12:06 PM
Post: #8
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
@Joe - Now that it's clear what this little note is for, does it appear on a page/location in the SQRG that corresponds with the ROM version topic? It's unlikely you would have written that on just some random place in the booklet, but OTOH, it is so densely packed with details, that there is not a whole lot of free whitespace for notes. Just curious...

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
10-01-2024, 03:12 AM
Post: #9
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
(09-30-2024 12:06 PM)rprosperi Wrote:  @Joe - Now that it's clear what this little note is for, does it appear on a page/location in the SQRG that corresponds with the ROM version topic? It's unlikely you would have written that on just some random place in the booklet, but OTOH, it is so densely packed with details, that there is not a whole lot of free whitespace for notes. Just curious...

Yes, it turns out (in hindsight) to be in a logical place. It's written on page 2, just above the top line of the "HP-41C QUICK REFERENCE CARD FOR SYNTHETIC PROGRAMMING" reproduced there. I see now why it was written there: the ROM version can be easily deduced from the "0" row of the table, with LBL 00 corresponding to ROM version A, through LBL 14 corresponding to ROM version O (Oh, not Zero). Those version letters have now been added to the cryptic note. Smile

<0|ɸ|0>
-Joe-
Visit this user's website Find all posts by this user
Quote this message in a reply
10-01-2024, 04:45 PM (This post was last modified: 10-01-2024 04:47 PM by J-F Garnier.)
Post: #10
RE: What does HP-41 <<"FFD" XROM "HN" STO b>> do?
(10-01-2024 03:12 AM)Joe Horn Wrote:  the ROM version can be easily deduced from the "0" row of the table, with LBL 00 corresponding to ROM version A, through LBL 14 corresponding to ROM version O (Oh, not Zero).

Fortunately, there is no system ROM revision higher than 'O'.
The latest CX ROM revisions are "NFL" for the mainframe ROMs.

The revision of the internal CX Time and X-Function ROMs can be read in the same way using the 3FFA and 5FFA addresses, but it's much easier to get the revisions from the CAT 2 headers.

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)