|Re: Install Program in HP49G|
Message #4 Posted by James M. Prange (Michigan) on 22 May 2005, 1:58 p.m.,
in response to message #3 by NA
Yes, a program is normally simply stored in a variable and is
usually invoked by calling the variable's name. Alternatively, you
can put the program on the stack and EVAL it.
So the only way you could invoke a program from port memory is if you some how put it in a library.
That's not so. You can invoke a program stored in port memory just
fine; it's automatically copied to temporary memory for execution,
so you do have to have enough free memory available to do so.
That said, making a library isn't that difficult. On the 49
series, the tools to do so are even built-in to the calculator, so
there's no need to use an application on a computer to make a
For an external library to be used, it has to be stored in a port,
the calculator has to be warmstarted so that the addresses of the
library objects are known, and the library has to be attached to a
directory. The HOME directory can have an indefinite number of
libraries attached, but a subdirectory can have only one directory
For the "Try To Recover Memory?" routine to work correctly, it's
best not to leave external libraries in user memory.
Move, rather than copy, libraries to ports.
Most external libraries include a $CONFIG object that
automatically attaches the library to the HOME directory, which
might make a little sense in the 48, but in the 49 series, it
would be much better to let the user arrange for any "automatic"
attaching by using the STARTUP reserved variable.
But note that you can't run a library from an SD card on the 49g+;
it has to be in a port with memory organized according to the
calculator's conventions, that is, port 0, 1, or 2. Objects on the
SD card are stored as binary transferred files in a FAT16 or FAT32
file system instead. But of course you can store a library object
on the SD card.
What you can't do is overwrite any object stored in any port. The
best you can do if you want to modify a port object is to purge
the existing object from the port and then store a new object with
the same name in the port.
I should mention that this Museum Forum is heavily orientated
toward the older "True RPN" models. For RPL models, you'd do
better asking on the USENET group comp.sys.hp48; do some searches
from http://groups-beta.google.com/group/comp.sys.hp48 and
lurk a bit before posting though. Other resources include
http://m.webring.com/hub?ring=hp48. Note that some SysRPL
programs and libraries use unsupported entry points, so some of
those designed for ROM revision 1.23 don't work correctly on ROM