The program files used by Free42 are compatible with several other
HP calculator emulators, including Emu42 and V41. These files usually have
names ending in ".raw". However, note that not all programs will actually
work in all emulators, since those emulators don't all support the same
instruction set; e.g. the HP-41 (and V41) does not have named variables, so
instructions like STO "Q" will not work, and Emu42 does not provide printer
and Time Module support, so instructions like PRX or DATE will not work.
Generally speaking, programs that stick to the basic HP-41C instruction set and that do not depend on the 24-character ALPHA register length nor any plug-in modules or peripherals, will work on the HP-42S, and in Emu42 and Free42, and of course on all the HP-41 series calculators and V41. Programs that stick to the basic HP-42S instruction set, and do not rely on any of the Free42 extensions, will work on the HP-42S, in Emu42 and, of course, in Free42.
Programs also usually include one or more "global labels", that is, LBL
instructions like LBL "HELLO". There are also "local labels",
LBL 00 through LBL 99, LBL A through LBL J, and
LBL a through LBL e; these are different in that they can
only be called from within the same program.
The global labels and the END instructions are shown in the PGM catalog. You can see the PGM catalog by pressing CATALOG (Shift +) and then pressing the PGM menu key. You will also see the PGM catalog when you press XEQ.
Note that the PGM catalog will not show any END (or .END.) instructions for programs that contain one or more global labels. Also note that the order in which the global labels and END instructions appear in the PGM catalog is the reverse of the order in which they appear in program memory.
When you tell Free42 to export a program, by selecting its END or any of
its global labels, it will always export the entire program, from just after
the previous program's END (or, in the case of the first program, from the
start of program memory) until its own END.
If you select multiple programs for export, they will all be written to one file, in the same order that they are in in program memory; when you import that file later, all those programs will be imported, still in the same order, and they will appear at the end of program memory, after any programs that were already there.
A dialog box will appear that shows all the programs that currently exist in Free42's program memory. There will be exactly one line per program; if a program contains multiple global labels, they will all appear together on one line. If a program contains no global labels, you will see an END (or .END.). You can tell a global label named "END" or ".END." from an END or .END. instruction because label names are always in double quotes, while END and .END. instructions are not.
You can select multiple programs; the exact way in which to do this depends
on which version you're using. In the Windows version, you can use dragging,
shift-clicking, or control-clicking, for example, which is the usual
behavior of list boxes on that platform; in the Mac version, you will see
check boxes, which you select or deselect by clicking, etc.
When you've selected the programs you want to export, click OK. A standard file selection dialog will then appear:
Select the name and location where you want the file to be saved, and click Save... and you're done.
To import: select "Import Programs" from the "File" menu. A standard file
selection dialog will appear; select the *.raw file you want to import, and
click Open... and you're done.
(Sorry, no illustrations -- this is just like opening a file in any other application. You know how to do this.)
Free42 does this with a built-in web server. When the server is running, you can connect to it using a web browser on your Mac or PC, and upload and download programs just like you would in any other web site. To start the server, tap in the top part of the screen, just below the status bar:
This brings up the main menu. Tap "Program Import & Export":
This brings up the Import & Export menu. Tap "HTTP Server":
This starts the web server; your screen should now look like this:
NOTE: While the web server is active, the idle timer, which normally turns off your iPhone after some period of inactivity, is disabled. Be sure to stop the web server by pressing Done when you no longer need it, to prevent accidentally running down the battery.
Next, point a web browser on your PC or Mac at the URL shown in the HTTP Server screen (see above):
You will see the top-level directory of Free42's private file area. It
contains three directories: config, where the emulator stores its
persistent state; memory, where you can see the emulator's program
memory; and skins, where Free42 looks for additional skins.
You can upload files into the currently selected directory by clicking Browse, selecting the file, and then clicking Upload, and you can download files simply by clicking on them.
When you select memory, you will see a view like this:
The file listing shows one line per program. You may notice that the program sizes shown in this listing are always 3 bytes larger than the sizes shown in Free42 itself; the reason for this is that I wanted the program size shown in the web server to match the sizes of the files that are created when you download programs; the byte count shown in Free42 (and the HP-42S) does not include the 3 bytes for the END instruction, but since that instruction is included in *.raw files, they are always 3 bytes larger.
Note that memory isn't really a directory, it just looks like one. Free42 fakes it to allow you to load programs directly from program memory to files on your PC and vice versa, without needing the intermediate step of creating files on the iPhone first.
To import and export programs to local files on the iPhone, you use
the Import Programs and Export Programs commands in the Import &
Export Menu. Read the instructions for the other versions
to learn how this works.
You will still need to use to use the HTTP Server to get the local files onto or off the device, but having programs in local files can be useful if you want to be able to have local backups that you can restore after CLALL, or when you have made modifications to a program and want to roll them back.