Post Reply 
HP-15C expanded memory firmware: problems with matrix larger than 8x8
01-11-2023, 08:03 AM (This post was last modified: 01-11-2023 08:07 AM by brouhaha.)
Post: #1
HP-15C expanded memory firmware: problems with matrix larger than 8x8
Alternate firmware for the 15C to provide more user memory has existed since 2005. I did early work on this, and Hrast Programmer and J-F Garnier found additional necessary code changes that I missed. J-F Garnier posted the latest version of our mod, supporting 192 registers (plus registers 0, 1, and I) in the forum back in July. These patches have been used in simulation (e.g., Nonpareil), as well as on the 15C Limited Edition. Also, Swissmicros has versions of firmware for their DM15 and DM15L calculators that probably contain similar patches.

A 15C with extended memory can handle matrices with more than 64 elements, including square matrices larger than order 8. Unfortunately the 15C cannot properly do matrix division, inversion, or compute the determinant of matrices larger than order 8. Attempting these operations can yield incorrect results, or even hang the calculator. J. Fossy Weinzinger determined (as quoted in the Swissmicros Voyager User Manual, Appendix B) that this is due to the way the 15C firmware computes the LU decomposition of the matrix. In the process, the firmware may interchange rows of the matrix, and it records the row interchanges in three extra bits in the diagonal elements of the matrix. Unfortunately there are only three such bits available, so the calculator can only indicate an interchanged row offset for up to eight rows.

Fixing this problem would be rather difficult, and although I have an idea for where to store additional bits, I haven't analyzed enough of the code to even begin to code it. It's also not certain that there aren't other problems with the LU decomposition of order 9 and larger matrices waiting to be discovered even if the row interchange problem is fixed. However, I could change the code that tests for square matrices, which generates an Error 11 if the matrix is non-square, to also generate the Error 11 if the matrix is square but larger than order 8.

If I generate 15C firmware for extended memory with 192 registers (plus R0, R1, and I), that has the patch described, would anyone care to test it? I would provide the patched firmware as a text file as used with Nonpareil. People have used the Nonpareil files with other simulators, or on the HP-15C LE, but I am not able to provide the instructions for doing that, or support for doing it, therefore this is only recommended for people already experienced with dealing with 15C firmware on their platform.

The main things that need to be tested are:
* whether the patch interferes with any matrix operations that DO NOT involve dividing, inverting, or computing the determinant of a matrix larger than order 8
* whether the patch interferes with any other 15C functionality (unlikely)
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
HP-15C expanded memory firmware: problems with matrix larger than 8x8 - brouhaha - 01-11-2023 08:03 AM



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