HP Forums

Full Version: HP-41 ROM Module wishlist from PPC V9N4P35-36
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Eh, this could have gone into the General Forum, but put it here.

The note on the bottom right of the first page of the attached PDF was a wish list for microcoded functions for the PPC ROM II which never materialized.

I thought... what if any of these do we still not have ?

Item 1: math functions. Check. Those are all in either Sandmath or Extended Stats roms.

Item 2: In various ROMs now so check.

Item 3: Utility routines --- a) Reverse order catalogs - Nope.

Item 4: Extended functions --- a) Store and Recall relative - Don't think so.

Item 5: Extended memory functions --- c) POPX - inverse of SAVEX. No ?

Item 6: Synthetic programming aids ---- all in various roms.

Item 7: Misc. Functions ----- b) and c) Store and Recall a single byte --- ?


Of these, POPX is the most interesting to me. Allows use of an extended memory data file as a LIFO stack. SAVEX and the POPX. Does a POPX for that exist ?

All the rest of pretty much there or don't generate much excitement from me... except for POPX :-)


And it is certainly possible these ARE here and I have forgotten! Oops.
Hakan Thorngren's Boost module implements something similar to Item 5 but I don't think it uses extended memory for the stack.
(04-16-2021 08:36 PM)twoweims Wrote: [ -> ]Hakan Thorngren's Boost module implements something similar to Item 5 but I don't think it uses extended memory for the stack.

Ohhh.... I like the new Avatar Dan, and am officially jealous. You creative guys have all the tricks. I wonder if id 2CDCC is taken in NY...?
Not exactly the same as an inverse to GETX, but quite worth looking into:

Doug Wilder's POP/PUSH function set use a LIFO file in X-Mem, and are all included in the WARP Module ;-)

I added a couple more options and a launcher that groups the different options as follows:

PUSH I:A:F:X:Z:T:R <- [SHIFT] -> POP I:A:F:X:Z:T:R

with:

I: Initialization
A: ALPHA
F: Flags
X: X-Reg
Z: Complex value (X & Y)
T: Stack {Y,Y,Z,T}
R: RTN Stack

See attached the relevant pages from the WARP manual with the description.

Cheers,
ÁM
Very nice wish-list, especially considering it pre-dates the CX.

Here's a few random comments on other entries:

1. Store/Recall Relative.- I like this one, and it's quite easy to implement. But still, wouldn't that be the same as STO IND / RCL IND on the s-Reg location? Thus: STOR = sREG?, X<>Y, STO IND Y; and: RCLR = sREG? , RCL IND X would do the job.

2. COMPILE - in the AMC_OS/X
3. View Program - See CSST in WARP et al.
4. Save/Get Keyboard - See SAVEKA / GETKA in AMC_OS/X
5. MCODE Version of LoadBytes - See LOADB and LOADB+ in the WARP module
6. Reverse CATs - a curious idea but IMHO it's superseded by the XEQ+ concept
7. POPX (again) - not quite the same but in the Equation Solver ROM I added a couple of file pointer functions that facilitate this.: REC+ and REC- move the record pointer by one up and down (and a third function ADVREC moves it by the number of bytes in X).. This: POPX = REC- , GETX
But if the goal of said POPX was to use it combined with GETX, wouldn't it be better to use a PUSHX that saves the X-value but doesn't move the file record pointer instead?

Ruminating in the background... ;-)
FWIW, here's the code for STOR and RCLR in case you're interested:

Code:
092    "R"    
00C    "L"    RCL Relative
003    "C"    uses IND SREG
012    "R"    
378    READ 13(c)    get .END. Location
10E    A=C S&X    put in A.X for compares
1BC    RCR 11    location of SREG
306    ?A<C  S&X    off limits?
0B3    JNC +22d    yes, show "NONEXISTENT"
270    RAMSLCT    select SREG
038    READATA    read value
0EE    C<>B ALL    done.
18C    ?FSET  11    
3B5    ?C XQ    
051    ->14ED    [R^SUB]
046    C=0 S&X    
270    RAMSLCT    
0CE    C=B ALL    
0E8    WRIT 3(X)    
3E0    RTN    
092    "R"    
00F    "O"    STO Relative
014    "T"    uses IND SREG
013    "S"    
0F8    READ 3(X)    read value
070    N=C ALL    put in in N
378    READ 13(c)    get .END. Location
10E    A=C S&X    put in A.X for compares
1BC    RCR 11    location of SREG
306    ?A<C  S&X    off limits?
381    ?NC GO    yes, show "NONEXISTENT"
00A    ->02E0    [ERRNE]
270    RAMSLCT    select SREG
0B0    C=N ALL    recall value
2F0    WRTDATA    put in SREG
3C1    ?NC GO    terminate
002    ->00F0    [NFRPU]
Reference URL's