Post Reply 
1,024 additional Registers on the CL
08-13-2016, 04:04 PM
Post: #41
RE: 1,024 additional Registers on the CL
So here's a challenge.

Fastest sort routine to handle 1000 random values.

Wonder how S3 from the PPC rom would do modified to use these new functions? It was awfully quick for a focal routine.
Find all posts by this user
Quote this message in a reply
08-14-2016, 07:03 AM (This post was last modified: 08-14-2016 07:13 AM by Ángel Martin.)
Post: #42
RE: 1,024 additional Registers on the CL
(08-13-2016 04:04 PM)Gene Wrote:  So here's a challenge.
Fastest sort routine to handle 1000 random values.

Wonder how S3 from the PPC rom would do modified to use these new functions? It was awfully quick for a focal routine.

Not much of a challenge anymore, it was very easy to modify the S2/S3 routines in those steps involving IND registers manipulation; piece of cake.

The only precaution was that register P(8) is also used by the functions, so I replaced that in the S2 routine with the (standard) R00 register.

The execution times are amazing, even for large sets: In TURBO 50 and with a frozen ALPHA message (to avoid the goose) it cruised thru a 102 register set in 7.5 seconds , and did the 1,000 register block in a little more than 32 sec. I had previously populated the set with random values using the YRAN program above.

So i declare the module complete, and ready for prime time!
Find all posts by this user
Quote this message in a reply
08-14-2016, 08:51 PM
Post: #43
RE: 1,024 additional Registers on the CL
Excellent!
Find all posts by this user
Quote this message in a reply
08-14-2016, 09:50 PM
Post: #44
RE: 1,024 additional Registers on the CL
(08-14-2016 08:51 PM)Gene Wrote:  Excellent!

Astoundingly Excellent!
Find all posts by this user
Quote this message in a reply
08-15-2016, 05:36 AM (This post was last modified: 08-19-2016 09:13 AM by Ángel Martin.)
Post: #45
RE: 1,024 additional Registers on the CL
And here's the new kid on the block. Updated manual will follow.

Remember: CL only , functions won't do any action on non-CL (but there's no risk of ML if you tried).

and there's no such thing as bug-free software, so pls. report issues and we'll get them corrected as soon as possible.
Find all posts by this user
Quote this message in a reply
08-16-2016, 09:14 PM
Post: #46
RE: 1,024 additional Registers on the CL
Typo in manual: 1,2024 should be 1,024. :-)

Program below will clear a selective block of Y registers rather than all of them as CLYRG would do.

It is simply the BC routine from the PPC rom changed to use the Y registers. Input is a control word bbb.eee.ii, where ii is the increment used to clear registers 1, 2, 3, etc. apart. Default of 01 (which would be left off the control word completely) would clear all Y registers between bbb and eee inclusive. A value of 02 for ii would clear every OTHER register. A value of 05 would clear every fifth register, etc.

Code:
LBL YBC
SIGN
CLX
LBL 01
YSTO IND L
ISG L
GTO 01
RTN

Think that should work. NOTE: The actual code would put a four digit number after the YSTO instruction which I have left out.

Of course, the same modifications can be made to BI, BE, BM, etc., from the PPC rom.
Find all posts by this user
Quote this message in a reply
08-17-2016, 10:10 AM
Post: #47
RE: 1,024 additional Registers on the CL
Maske sure Monte"'s new wiki is updated It should remain the authoritative resource.
Find all posts by this user
Quote this message in a reply
08-17-2016, 12:28 PM
Post: #48
RE: 1,024 additional Registers on the CL
1) PWRX was updated. What was changed or added? :-)

2) Angel, I'm sure the answer is "No", but I might as well ask.

Is there room in XPMM for some of these Y register routines? I know the FAT appears full, but is there room in the rom at all for things like

-- S2 (at least) or
-- YBC (posted previously)
-- YBM or YBE (similar)

or is life short and rom full ?

:-) Great work as always, but I might as well ask. It's one of my missions in life it seems.

speaking of asking...

3) Think on this for a bit. Now that you have conquered the 41C data register limit, what is the best/easiest way to overcome the 319 register program limits?

I know PRWX/OSX3 have ways to execute programs in extended memory subject to some conditions, but what's the best way for a vanilla 41CL and a relatively novice 41CL user to save programs of their own into an enlarged space and execute them more or less at will? I have these ideas already:

a) The Extended memory approach above.
b) Hepax - create programs in Hepax ram and then save the Hepax page to a ram page then copy to a rom page. Plug the Hepax page in and execute your programs.

c) Some better way Angel may think about...

:-)
Find all posts by this user
Quote this message in a reply
08-17-2016, 07:51 PM (This post was last modified: 08-17-2016 07:52 PM by Ángel Martin.)
Post: #49
RE: 1,024 additional Registers on the CL
(08-17-2016 12:28 PM)Gene Wrote:  1) PWRX was updated. What was changed or added? :-)

2) Angel, I'm sure the answer is "No", but I might as well ask.

Is there room in XPMM for some of these Y register routines? I know the FAT appears full, but is there room in the rom at all for things like

-- S2 (at least) or
-- YBC (posted previously)
-- YBM or YBE (similar)

or is life short and rom full ?

I'll address the easy parts first...

1. the new PWRX has an updated module list under CLLIB and ROMLIB. It was seriously out of date, and besides some addresses have changed since.

2. Rather than wedging a routine or two, how about putting together a module with Y-versions of all your favorite routines? You can use the HEPAX to compile then, after modification and testing - then shoot the hepax RAM image over to me and I'll padd the header/FAT.etc...

Deal?
Find all posts by this user
Quote this message in a reply
08-18-2016, 10:49 AM
Post: #50
RE: 1,024 additional Registers on the CL
(08-17-2016 12:28 PM)Gene Wrote:  3) Think on this for a bit. Now that you have conquered the 41C data register limit, what is the best/easiest way to overcome the 319 register program limits?

I know PRWX/OSX3 have ways to execute programs in extended memory subject to some conditions, but what's the best way for a vanilla 41CL and a relatively novice 41CL user to save programs of their own into an enlarged space and execute them more or less at will? I have these ideas already:

a) The Extended memory approach above.
b) Hepax - create programs in Hepax ram and then save the Hepax page to a ram page then copy to a rom page. Plug the Hepax page in and execute your programs.

c) Some better way Angel may think about...

I'll definitely go for "b)" above. First, running stuff in X-Mem is very limited to the individual chunks of X-Mem - not across divides. Second, the OS is very picky about where X-Mem can be located, and the locations are hard-coded, so forget about using the upper RAM blocks...

HEPAX is your best friend here!
Find all posts by this user
Quote this message in a reply
08-18-2016, 01:13 PM
Post: #51
RE: 1,024 additional Registers on the CL
And that's what I thought. Perhaps if I can, I'll write a guide on how to create your own "pretend" roms aka Hepax ram pages with programs.

Just wish you could create a hepax page of programs and be able to run them *without* the space the Hepax rom itself takes up.
Find all posts by this user
Quote this message in a reply
08-18-2016, 01:55 PM (This post was last modified: 08-18-2016 01:56 PM by Ángel Martin.)
Post: #52
RE: 1,024 additional Registers on the CL
(08-18-2016 01:13 PM)Gene Wrote:  And that's what I thought. Perhaps if I can, I'll write a guide on how to create your own "pretend" roms aka Hepax ram pages with programs.

Just wish you could create a hepax page of programs and be able to run them *without* the space the Hepax rom itself takes up.

It's not too bad, only 4k footprint that you can tuck away in page#6 or #7...

BTW on the "other" subject - I'm modifying the CLXPREGS module to include Y-versions of the X-Functions trio: REGMOVE, REGSWAP, and CLRGX...

but you're not off the hook for the "Y-applications" module with all your favorite routines converted from the PPC ROM and others... ;-)
Find all posts by this user
Quote this message in a reply
08-18-2016, 02:34 PM
Post: #53
RE: 1,024 additional Registers on the CL
Haha. Good.

What about a YSORT routine? Even if not S2. A short bubble sort even in the module would be useful.

I'll work on the routines. :-)
Find all posts by this user
Quote this message in a reply
08-19-2016, 03:00 PM (This post was last modified: 08-23-2016 05:42 AM by Ángel Martin.)
Post: #54
RE: 1,024 additional Registers on the CL
Newsflash update - two more Y-Regs functions made it to the CLXMEM module: A<>YRG and ST<>YRG for a block-exchange of Y-registers with ALPHA or the Stack.

With these the module is complete, and all the Page Management functions are now gone (they were duplicates of the same functions in the PowerCL so not a big deal).

I've started to prepare the Y-applications ROM, mostly with Y-versions of all the block register functions from the PPC. So far the count is up to 30 of those...
It's easy to modify them, and the "data" is now in the expanded registers. But the choice of where to use the control registers from has two possibilities:

1. use the standard registers, as in the original routines. The advantage of this choice is you have 1,024 registers for the "data', all available.

2. use also expanded registers for the control. Here the advantage is you can run the routines with SIZE 000, at the cost of a few expanded registers for control parameters.

Preferences, anyone?
Find all posts by this user
Quote this message in a reply
08-23-2016, 05:33 AM (This post was last modified: 08-26-2016 05:29 AM by Ángel Martin.)
Post: #55
RE: 1,024 additional Registers on the CL
Bug report: Stack lift was performed by the RCL Math functions - which of course it shouldn't. Duly corrected, new version is attached.

Besides fixing that glitch the following new functions have been included:

YARC _ _ _ = Expanded Reg ARCL; supports IND, IND_ST, and IND_RG
YAST _ _ _ = Expanded Reg ASTO; supports IND, IND_ST and IND_RG
YRGMOV = Expanded Regs RGMOVE; takes cnt'l word from X
YRGSWP = Expanded Regs RGSWAP; takes the cnt'l word from X
CLYRGX = Expanded Regs CLRGX; takes the cnt'l word from X
A<>YRG _ _ _ = exchanghes ALPHA and Expanded Regs; in prompt or X
ST<>YRG _ _ _ = exchanges Stack and Expanded Regs; in prompt or X

Now the set is really complete to the full extent of the word.

But there's more: putting the finishing touches to the "YRGS_APPS" ROM, a module with Y-versions of sorting and array programs from the PPC ROM and JM Baillard's Matrix collection. Real-life examples of the new functions sets put to work full speed ahead; getting the juice out of those 1,024 registers at last!

And going the extra-extra mile, this ROM includes three MCODE functions for Matrix Product, Matrix Trace and Matrix Norm (from Jean-Marc's web site) adapted to the Expanded Registers range - nice icing on the cake if you ask me...

Exciting times for CL owners, you're the lucky bunch :-)
Find all posts by this user
Quote this message in a reply
08-23-2016, 02:49 PM
Post: #56
RE: 1,024 additional Registers on the CL
Great news! Looking forward to seeing these.
Find all posts by this user
Quote this message in a reply
08-24-2016, 09:36 AM (This post was last modified: 08-24-2016 10:44 AM by Ángel Martin.)
Post: #57
RE: 1,024 additional Registers on the CL
(08-23-2016 02:49 PM)Gene Wrote:  Great news! Looking forward to seeing these.

Here is a teaser:- you should be familiar with the PPC routines which have the "Y" prefix in their names below. For JMB Matrix refer to the links in the previous post. Testing is pretty much done, will post the ROM shortly...

Code:

#    Function    Description        Dependency    Type    Author
021.00    -Y-RGS_1B    Section Header        Lib#4        MCode    n/a
021.01    STVIEW        Stack View        Lib#4        MCode    Ángel Martin
021.02    YCRYPT        Encrypts Page        CL, OSX        Hybrid    Ángel Martin
021.03    "YDUMP        Dumps Standard Regs     CLXPRGS, OSX    UCode    Ángel Martin
021.04    "YINP        Inputs Y-Regs        CLXPRGS, OSX    UCode    Ángel Martin
021.05    "YOUT        Outputs Y-Regs        CLXPRGS, OSX    UCode    Ángel Martin
021.06    "YRAN        Enters Random values    CLXPRGS, OSX    UCode    Ángel Martin
021.07    "YSHFT        Selective Std, Reg copy    CLXPRGS, OSX    UCode    Ángel Martin
021.08    "YSORT        Sorts Y-Regs        CLXPRGS        UCode    JM Baillard
021.09    YRALL        Reads from Flash    CL, YFNX    Hybrid    Ángel Martin
021.10    YWALL        Writes to Flash        CL, YFNX    Hybrid    Ángel Martin
021.11    -YPPC_MTRX    Section Header        n/a        MCode    n/a
021.12    "QR        Quotient / Remainder    none        UCode    PPC
021.13    "YMIO        Matrix I/O        CLXPRGS        UCode    PPC
021.14    "YRRM        Row Reduction Matrix    CLXPRGS        UCode    PPC
021.15    "YM1        Interchange two rows    CLXPRGS        UCode    PPC
021.16    "YM2        Multiply row by const.    CLXPRGS        UCode    PPC
021.17    "YM3        Add multiple of row     CLXPRGS        UCode    PPC
021.18    "YM4        Register addr to (i,j)    CLXPRGS        UCode    PPC
021.19    "YM5        (i,j) to Register addr    CLXPRGS        UCode    PPC
021.20    "YS1        Stack Sort        CLXPRGS        UCode    PPC
021.21    "YS2        Small Register Sort    CLXPRGS        UCode    PPC
021.22    "YS3        Large Register Sort    CLXPRGS        UCode    PPC
021.23    -YPPC_BLCK    Section Header        n/a        MCode    PPC
021.24    "YBC        Block Clear        CLXPRGS        UCode    PPC
021.25    "YBE        Block Exchange        CLXPRGS        UCode    PPC
021.26    "YBI        Block Increment        CLXPRGS        UCode    PPC
021.27    "YBM        Block Move        CLXPRGS        UCode    PPC
021.28    "YBR        Block Rotate        CLXPRGS        UCode    PPC
021.29    "YBV        Block View        CLXPRGS        UCode    PPC
021.30    "YBX        Block Extrema        CLXPRGS        UCode    PPC
021.31    "YB?        Block Statistics    CLXPRGS        UCode    PPC
021.32    "YDR        Delete Record        CLXPRGS        UCode    PPC
021.33    "YIR        Insert Record        CLXPRGS        UCode    PPC
021.34    "YMS        Memory to Stack        CLXPRGS        UCode    PPC
021.35    "YPR        Pack Registers        CLXPRGS        UCode    PPC
021.36    "YSM        Stack to Memory        CLXPRGS        UCode    PPC
021.37    "YUR        Unpack Registers    CLXPRGS        UCode    PPC
021.38    -YJMB_MTRX    Section Header        n/a        MCode    n/a
021.39    "CRYMAT        Create Matrix from f(x)    CLXPRGS        UCode    JM Baillard
021.40    M*M        Matrix Product        CL, Lib#4    MCode    JM Baillard
021.41    MNORM        Matrix Norm        CL, Lib#4    MCode    JM Baillard
021.42    TRACE        Matrix Trace        CL, Lib#4    MCode    JM Baillard
021.43    "YDET        Determinant        CLXPPGS        UCode    JM Baillard
021.44    "YLS        Linear Systems        CLXPRGS        UCode    JM Baillard
021.45    "YLS1        Linear Systems variant    CLXPRGS        UCode    JM Baillard
021.46    "YM-        Matrix Subtraction    CLXPRGS        UCode    JM Baillard
021.47    "YM+        Matrix Addition        CLXPRGS        UCode    JM Baillard
021.48    "YM*        Matrix Product        CLXPRGS        UCode    JM Baillard
021.49    "YMCO        Matrix Copy        CLXPRGS        UCode    JM Baillard
021.50    "YMINV        Inverse Matrix        CLXPRGS        UCode    JM Baillard
021.51    "YMNORM        Matrix Norm        CLXPRGS        UCode    JM Baillard
021.52    "YMPL        Matrix Polynomial    CLXPRGS        UCode    JM Baillard
021.53    "YMSTO        Store Matrix        CLXPRGS        UCode    JM Baillard
021.54    "YRANM        Random integers Matrix    CLXPRGS, TIMER    UCode    JM Baillard
021.55    "YRNSYM        Symmetric RANM        CLXREGS, TIMER    UCode    JM Baillard
021.56    "YTRACE        Matrix Trace        CLXREGS        UCode    JM Baillard
021.57    "YTRN        Transpose Matrix    CLXREGS        UCode    JM Baillard
021.58    "YTRN2        Symmetric TRN        CLXREGS        UCode    JM Baillard

PS. what a mess of listing, wouldn't it be nice if the [code] feature supported copy-paste from EXCEL???
Find all posts by this user
Quote this message in a reply
08-26-2016, 05:34 AM (This post was last modified: 08-26-2016 08:34 AM by Ángel Martin.)
Post: #58
RE: 1,024 additional Registers on the CL
It's all done folks, two ROM images and updated manual can be downloaded from Monte's web site:

http://systemyde.com/pdf/CL_Expanded_Mem...lities.pdf
http://systemyde.com/hp41/files.html (select 2016)

Last minute addition includes Matrix conversions between Expanded Region and standard registers (using HP41 Advantage's convention), as well as Y-Matrix editors YMSTO and YMRCL.

Thanks again to Jean-Marc Baillard for his Matrix programs.

Enjoy,
'AM
Find all posts by this user
Quote this message in a reply
08-26-2016, 04:22 PM
Post: #59
RE: 1,024 additional Registers on the CL
(08-26-2016 05:34 AM)Ángel Martin Wrote:  It's all done folks, two ROM images and updated manual can be downloaded from Monte's web site:

Angel - Do you ever sleep or have a job? Thanks for another beautiful and useful CL ROM and manual!

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
08-26-2016, 05:10 PM
Post: #60
RE: 1,024 additional Registers on the CL
Great! I'm glad to have helped prod you with an idea or two that you so expertly turned into a complete applications rom.

Bravo.

Now, about those HP 67 games solution packs and books...

:-)
Find all posts by this user
Quote this message in a reply
Post Reply 




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