Post Reply 
HP-41 X-Mem (e)TWIN module
05-11-2022, 12:58 PM (This post was last modified: 05-13-2022 01:31 PM by Ángel Martin.)
Post: #1
HP-41 X-Mem (e)TWIN module
Greetings fellow enthusiasts,

If you ever had questions about the hp-41 X-Mem design and implementation, perhaps wishing that HP had done something *different* (and this is not implying that the actual model is a bad one), then you may enjoy the chance to travel "the path not taken", playing around with this new module/

Meet the XMem-(e)TWIN module, where the "e" in this case stands for both electronic and evil - Why evil, you ask? Because those void memory segments in-between X-Mem modules certainly deserve such a moniker; a real struggle to manage in the MCODE and a waste of available space (what were they thinking?) -- but let's not digress...

The XMEM_TWIN module provides a complete set of functions targeted to the X-Registers that make the Extended memory area. Within X-Mem there are 606 X-Registers that can now be accessed individually using X-versions of (A)RCL, (A)STO, X<>, ISG, DSE, VIEW, etc., fully supporting direct and indirect addressing, for the three ranges of data sources: Stack Registers, "regular" Data registers, and X-Registers.

Obviously once you get into this path there's no use for any of the "official" X-Mem functions, so this is an either/or choice. But it's totally "reversible" (for the lack of a better word), simply use CLXM to start over from a clean slate using the orthodox way.

Remember: X-Mem files will not survive the use of the X-Regs functions!

The module also includes a large set of application routines all based on the PPC classic programs for sorting, matrices and block handling. Basically they are the same routines, only using X-Registers instead of the "regular" ones (sic.)

Reasonable amount of testing has been done but this is never enough (remember those memory voids, always lurking in the dark?) - so be careful and DO NOT use it if you don't have a backup. Use it at your own risk, as they say.

Hope you enjoy playing with this evil twin, and as usual feedback is always welcome.

Cheers,
ÁM


P.S.- The Library#4 is required, also included in the attached ZIP container.

PSS. New version attached, it corrects a minor bug in the ST/RG U/I.

PPSS.- Function list:
Code:
--XROM----ADDR--FUNCTION --------------
 020.00   AF6F  -XMEM_TWIN  MCode XROM 20.00  "-XMEM TWIN"
 020.01   A784  TF#         MCode XROM 20.01  "TF#"
 020.02   A7BB  TF$         MCode XROM 20.02  "TF$"
 020.03   A9EE  A<>XRG      MCode XROM 20.03  "A<>XRG"
 020.04   A48B  CLXRG       MCode XROM 20.04  "CLXRG"
 020.05   A9A5  CLXRGX      MCode XROM 20.05  "CLXRGX"
 020.06   A874  CPYBNK      MCode XROM 20.06  "CPYBNK"
 020.07   A852  STKSWP      MCode XROM 20.07  "STKSWP"
 020.08   A9F7  ST<>XRG     MCode XROM 20.08  "ST<>XRG"
 020.09   A08A  XFINDX      MCode XROM 20.09  "XFINDX"
 020.10   A93D  XRGMOV      MCode XROM 20.10  "XRGMOV"
 020.11   A945  XRGSWP      MCode XROM 20.11  "XRGSWP"
 020.12   AF64  -X-REGS_FNS MCode XROM 20.12  "-X-REGS FNS"
 020.13   ABBA  XARC        MCode XROM 20.13  "XARC"
 020.14   ABC2  XAST        MCode XROM 20.14  "XAST"
 020.15   ABEF  XDSE        MCode XROM 20.15  "XDSE"
 020.16   ABF9  XISG        MCode XROM 20.16  "XISG"
 020.17   ABCA  XRCL        MCode XROM 20.17  "XRCL"
 020.18   AB82  XRC+        MCode XROM 20.18  "XRC+"
 020.19   AB89  XRC-        MCode XROM 20.19  "XRC-"
 020.20   AB90  XRC*        MCode XROM 20.20  "XRC*"
 020.21   AB97  XRC/        MCode XROM 20.21  "XRC/"
 020.22   ABD3  XSTO        MCode XROM 20.22  "XSTO"
 020.23   AB9E  XST+        MCode XROM 20.23  "XST+"
 020.24   ABA5  XST-        MCode XROM 20.24  "XST-"
 020.25   ABAC  XST*        MCode XROM 20.25  "XST*"
 020.26   ABB3  XST/        MCode XROM 20.26  "XST/"
 020.27   ABE5  XVEW        MCode XROM 20.27  "XVEW"
 020.28   ABDC  XX<>        MCode XROM 20.28  "XX<>"
 020.29   AEBC  -XREGS_APPS MCode XROM 20.29  "-XREGS APPS"
 020.30   A7D4  LSTF        MCode XROM 20.30  "LSTF"
 020.31   AE56  "XDUMP"     UCode XROM 20.31  "XDUMP"
 020.32   AE21  "XINP"      UCode XROM 20.32  "XINP"
 020.33   ADFF  "XOUT"      UCode XROM 20.33  "XOUT"
 020.34   ADE0  "XRAN"      UCode XROM 20.34  "XRAN"
 020.35   AE66  "XSHFT"     UCode XROM 20.35  "XSHFT"
 020.36   ADA6  "XSORT"     UCode XROM 20.36  "XSORT"
 020.37   AEA4  -XPPC_MTRX  MCode XROM 20.37  "-XPPC MTRX"
 020.38   A696  "QR"        UCode XROM 20.38  "QR"
 020.39   AD17  "XMIO"      UCode XROM 20.39  "XMIO"
 020.40   A356  "XRRM"      UCode XROM 20.40  "XRRM"
 020.41   A11A  "XM1"       UCode XROM 20.41  "XM1"
 020.42   A0D7  "XM2"       UCode XROM 20.42  "XM2"
 020.43   A0EE  "XM3"       UCode XROM 20.43  "XM3"
 020.44   A15C  "XM4"       UCode XROM 20.44  "XM4"
 020.45   A16F  "XM5"       UCode XROM 20.45  "XM5"
 020.46   A4E2  "XS1"       UCode XROM 20.46  "XS1"
 020.47   A5C0  "XS2"       UCode XROM 20.47  "XS2"
 020.48   A50F  "XS3"       UCode XROM 20.48  "XS3"
 020.49   AEAF  -XPPC_BLCK  MCode XROM 20.49  "-XPPC BLCK"
 020.50   A28A  "XBC"       UCode XROM 20.50  "XBC"
 020.51   A128  "XBE"       UCode XROM 20.51  "XBE"
 020.52   A2DA  "XBI"       UCode XROM 20.52  "XBI"
 020.53   A1B6  "XBM"       UCode XROM 20.53  "XBM"
 020.54   A1E6  "XBR"       UCode XROM 20.54  "XBR"
 020.55   A659  "XBV"       UCode XROM 20.55  "XBV"
 020.56   A26A  "XB?"       UCode XROM 20.56  "XB?"
 020.57   A223  "XBX"       UCode XROM 20.57  "XBX"
 020.58   A1A6  "XDR"       UCode XROM 20.58  "XDR"
 020.59   A194  "XIR"       UCode XROM 20.59  "XIR"
 020.60   A2F0  "XMS"       UCode XROM 20.60  "XMS"
 020.61   A2B9  "XPR"       UCode XROM 20.61  "XPR"
 020.62   A322  "XSM"       UCode XROM 20.62  "XSM"
 020.63   A29F  "XUR"       UCode XROM 20.63  "XUR"


Attached File(s)
.zip  XMTWIN.zip (Size: 19.44 KB / Downloads: 13)
.pdf  XMem-Twin Manual.pdf (Size: 1.12 MB / Downloads: 21)
Find all posts by this user
Quote this message in a reply
05-12-2022, 12:03 PM
Post: #2
RE: HP-41 X-Mem (e)TWIN module
(05-11-2022 12:58 PM)Ángel Martin Wrote:  The XMEM_TWIN module provides a complete set of functions targeted to the X-Registers that make the Extended memory area.

Obviously once you get into this path there's no use for any of the "official" X-Mem functions, so this is an either/or choice.

Remember: X-Mem files will not survive the use of the X-Regs functions!

The loss of the rest of the X-MEM file functions is a real limitation, especially the ability that I've been using a lot in the past to save/restore a program to X-MEM.
Maybe a possible mitigation would be to use a regular X-M DATA file with all your new functions accessing it. This would be much more flexible than the SEEKPT, GETX/SAVEX sequence, and the user would be able to dedicate part or all of the X-MEM for this purpose.

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
05-13-2022, 06:05 AM
Post: #3
RE: HP-41 X-Mem (e)TWIN module
(05-12-2022 12:03 PM)J-F Garnier Wrote:  
(05-11-2022 12:58 PM)Ángel Martin Wrote:  The XMEM_TWIN module provides a complete set of functions targeted to the X-Registers that make the Extended memory area.
Obviously once you get into this path there's no use for any of the "official" X-Mem functions, so this is an either/or choice.
Remember: X-Mem files will not survive the use of the X-Regs functions!

The loss of the rest of the X-MEM file functions is a real limitation, especially the ability that I've been using a lot in the past to save/restore a program to X-MEM.
Maybe a possible mitigation would be to use a regular X-M DATA file with all your new functions accessing it. This would be much more flexible than the SEEKPT, GETX/SAVEX sequence, and the user would be able to dedicate part or all of the X-MEM for this purpose.

Thanks for chiming in J-F.
I see what you're suggesting and it's a "compromise" for backwards compatibility; so I'll think about it. So far I wanted to have a separate environment, so to me it is not about mitigation since the goal was never to be compatible with the classic approach. I'll give it a thought, anyway.

Cheers,
ÁM
Find all posts by this user
Quote this message in a reply
Post Reply 




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