This is intended as a guide to using PHEM once the initial installation and configuration is complete. If you haven't yet, you may want to check out the Quick Start for basic directions on getting PHEM set up and running.
If you've never used a Palm PDA before, you might want to check out the Palm Concepts page for a little newbie guidance to the "Zen of Palm".
Many other questions are addressed in the PHEM FAQ.
If you prefer, the key information is covered in this video:
Anyway, assuming you're set up with a ROM image or two, maybe even a skin, using PHEM is pretty straightforward. There are really only three main elements to worry about: the Emulation Screen, the Button Bar, and the Menu/Action Items.
This where the display of the emulated Palm is shown, along with any skin you may have installed. Touch the screen to interact with the Palm. Touching the display area acts like tapping a Palm with the stylus. You can enter Graffiti in the Graffiti area, or tap the icons next to the Graffiti area to launch specific applications and operations (say, invoke menus or initiate a search of the Palm's contents).
These buttons emulate the hardware buttons that all Palm PDAs had.
Datebook- Launches the Datebook application.
Address Book- Launches the Address Book application.
- Navigation buttons. Scrolls the screen up and down, or changes the focus among fields on the screen.
To Do List- Launches the To Do List application.
Memo- Launches the Memo application.
Many Palm apps can use these buttons for other purposes. In particular, many games use these buttons as controls.
Note: the Button Bar supports multi-touch - that is to say, more than one button can be pressed at a time - but only on Honeycomb (Android 3.0) and above. On Gingerbread (2.3) and Froyo (2.2), the Button Bar can only support one button press at a time.
To invoke other PHEM operations, use the items on the action bar or application menus, depending on your Android device. The available options are:
As you might imagine, this turns the emulated Palm on and off, just like the power button on a real Palm PDA.
This starts up the session manager. As you might expect, this is where you create, load, and save sessions.
- Create Session: This allows you to create a session. You choose from the available ROM files, then choose the specific device to emulate and how much RAM to allocate for it. (The default is the maximum supported RAM, and there is seldom any reason to change this.)
- Load Session: This brings up a file manager that allows you to choose from previous saved sessions. Sessions are files saved with the extension ".PSF". (Note that if you don't explicitly save a session, when you close PHEM it is saved as 'autosave.psf'. Note that this will overwrite any previous autosave, so if you want to maintain multiple sessions you must save them yourself.)
- Save Session: This only appears if you are actually running an emulation session. You can use the suggested default name (the Palm device name and the date) or choose a name that you find more suitable. Tap the "Save" button to actually save the session. Once a session file has been set, PHEM will automatically save updates to this file when PHEM closes.
This allows you to install Palm apps and databases into the emulated device. Simply navigate to the directory where the file is stored and touch it to start loading.
This will kick off the "HotSync" app on the Palm, but note: you do not have to actually start a HotSync yourself. Once the "Loading" dialog finishes, just hit the "Launcher" button next to the Graffiti area and you should see the new app available to run. (However, you can do an actual HotSync with a PC if you choose; see here for details.)
Note also that PHEM insists the files have the correct extensions. If a file doesn't have one of the following extensions, PHEM won't display it as available for loading:
- .PRC: A "Palm resource file" - i.e. a Palm application.
- .PDB: A "Palm database" - i.e. a Palm data file. Contacts, Datebook entries, Memos, and so forth are stored in PDB files.
- .PQA: A "Palm Query Application" (also called "Palm Web Clipping") - these are pretty rare. They are specialized applications that queried the Internet for much of their content. The early cell networks that these were designed for were almost amusingly slow by modern standards - think 14.4 KB/sec at best. PQAs were designed to use as little bandwidth as possible. The "Web Clipping" service was shut off in August, 2004 so I can't imagine they'd actually do anything useful now, but if you want to try, you can.
Some Palm software can manipulate other types of files, but they require a memory card to do so. See the discussion of Card Emulation below.
This allows you to bring up (or dismiss) your default Android input method. Usually this is a software keyboard, but you can also use Swype and more exotic alternatives. This way, you don't have to use Palm's Graffiti system for entering text into the emulated Palm. (Though you could install Graffiti for Android if you want to get meta...)
It's sometimes necessary to 'reset' (reboot) the emulated Palm. (For example, if you install and use hack managers.) There are three possible ways to reboot a Palm:
- Soft Reset: This is the 'typical' Palm reboot, what you'd get by sticking a pin or a paperclip in the 'Reset' hole in the back of the Palm.
- No-Extension Reset: This reboots the Palm, but skips loading exensions and notifying applications of a reboot. This is generally only needed if you've installed system software that is malfunctioning.
- Hard Reset: This is the 'factory reset' of the Palm world. It erases the storage heap, wiping out all user data and installed applications. In practice, it's probably simpler to just use PHEM to create a new emulation session, but if a hard reset is what you want, the option's available.
This menu only appears when PHEM is running a session with a ROM that supports memory cards. (For the technically curious, PHEM checks for "VFS Support".) There are two steps to enabling memory-card emulation:
First, a special library must be installed into the virtual Palm, that provides "Host Filesystem" support. If this library has not been installed into the emulated Palm, you will be presented with a screen that explains this and the option to install the library. If you choose "Install HostFS", then the library will be loaded in the Palm and the virtual device will be rebooted to enable it.
Once the reboot completes, return to the "Card Emulation" menu. This will display the directory which appears inside the Palm as a memory card, and allows you to 'mount' and 'unmount' the card (essentially like inserting and removing an SD card from a real Palm PDA).
Special notes about storage emulation:
- Most importantly, the emulation of memory cards is not quite complete. In particular, Palm applications like the "Card Info" utility that appears on the Palm m505/m515 will not detect that a card is present. However, any Palm application that uses the Palm VFS API (in practice, every Palm app that uses storage, including Palm file managers like FileZ or GentleMan) will have no problem using the emulated storage.
- The Palm operating system is a older 32-bit operating system, and does not properly handle storage that's greater than 2GB in size. So PHEM lies to the emulated Palm about how much storage is available. If your device has more than 2GB of storage free (as most Android devices do) it will show as having about 2GB free. However, if your device actually does have less than 2GB available, the Palm will detect an accurate count of how much free space is available. In short: the Palm will never see more than 2GB available, but you can actually store as much as will fit on your device.
Full details about card emulation here.
Generally speaking, there shouldn't be much reason to mess with these. The defaults are pretty solid. But if you want to experiment, feel free.
Note: Changes won't be applied until you hit the "Apply" button. The "Apply" button only appears if you've made a change to the current settings.
- HotSync Name: Default is "PHEM". Many commercial Palm apps used keys based on the HotSync name, though, so it's sometimes desirable to change this even if you don't ever intend to actually sync an emulated Palm. Note that this change only affects the current emulation session. If you have already created multiple sessions, you may need to change the HotSync name for each individually.
- High Resolution Skins: Default is enabled. Emulator skins have two scales - 'normal' and 'double'. The 'double-scaled' skins are higher resolution and look nicer. However, 'double scale' quadruples the amount of screen data that gets shuffled around, compared to 'normal scale'. On faster devices this isn't a big deal, but on an older device like my original Droid, unchecking this produces a noticeable speed bump. The Palm screen itself doesn't change, so the only cost is a somewhat fuzzier Graffiti area and so forth.
- Enable Sound: Default is enabled. This allows you to hear the fabulous boops and beeps that Palms were capable of!
- Enable Network: Default is enabled. Older Palms (i.e. those that PHEM emulates) needed to use a modem or serial cable to talk to the Internet. If this setting is enabled, the emulated Palm can use your Android's Wifi or cell connection to communicate with the Internet. If you've ever wanted to see what Facebook looks like with a text mode browser, now's your chance!
- Use Vol Up/Down To Scroll: Default is unchecked. If this is enabled, and your Android device has physical volume up/down buttons, you can use them as Palm up/down buttons.
- Touch Smoothing: PHEM is based on POSE, which was a desktop program for Windows, Macintosh, and Linux PCs. It was written with a mouse and keyboard in mind. And the Palm OS itself was designed around a resistive touchscreen with a stylus. Modern Android touchscreens are much higher-resolution, usually physically larger, and are designed to be used with fingers. There's a decent amount of 'jitter' when a touch is reported to an Android application - even if you think your finger is perfectly still, the application gets a stream of events that 'wobble around' by several pixels.
This is kind of a problem when you, say, tap on a Palm scrollbar. If the events weren't 'smoothed out', you would generally not be able to scroll just one page. So PHEM limits the number and type of events that make it through to the emulated Palm. There are two parameters that govern this behavior.
- First off, if two touch events are too close together - measured in pixels of the Android device, not the Palm - then the later events are suppressed and not passed on to the emulated Palm. The first slider governs how many pixels a new event must differ from the last accepted event to be accepted as an actual movement and be passed on to the emulated Palm. The default is four pixels, and this seems to work well on the devices PHEM has been tested with. On a large, very-high-density device you might consider increasing this value a bit. If you want to disable all smoothing, you can set the value to one pixel.
- Sometimes, however, you do want your 'virtual stylus' to 'hover' somewhere on screen. So there is a timeout - if you keep touching the screen for long enough, even if you haven't moved out of the 'pixel window' above, PHEM will pass on a new event to the virtual Palm. The second slider controls this timeout. The default of 250 milliseconds has proven useful in practice. Palm drawing programs like Diddlebug are still perfectly usable with the default settings. But if you like, you can experiment with lowering or raising this value.
- Refresh Rate: PHEM, being based on POSE, uses the same design as POSE for screen management. PHEM 'polls' the virtual Palm's screen several times per second, and, if it has changed, updates the visible screen with those changes. By default, it does this polling ten times per second, which is quite suitable in practice, even on an original Motorola Droid. Faster devices can poll at a higher rate, but the benefits in practice are marginal. Still, if want to experiment with cranking up the refresh rate, you can.
- Serial Port: This is experimental for now, but it is possible to connect RS-232 devices to the emulated Palm. For example, using a USB-OTG cable, and a USB-to-RS232 adapter, you can use your Palm to talk to a serial modem or other peripheral. It should be possible to HotSync over the serial port to a PC with the proper cables and ports, though this is not officially supported at present. The "Device File" field needs to point to the Unix-level device file that represents the serial port, for example "/dev/ttyUSB0". (If you don't know what a device file is, you probably don't want to be messing with serial port adapters.)
You may need to experiment with the Palm settings to try to find the correct serial port to use. For example, using the program pTelnet in an emulated TRGPro, the correct port to use is called "Serial". On an emulated m505, the correct port is "UART2 HotSync".
Adding serial port support allows for another interesting option. There's a standard way to communicate with GPS devices over serial links, NMEA-0183. Essentially all Palm GPS software supports it. If you check the "Send GPS data to Palm" checkbox, and click the "Apply" button that appears, PHEM will collect GPS data from the Android device and pass NMEA-0183 data to the emulated Palm. Again, this experimental for now. Palm software such as Mapopolis or SoarPilot may be able to work with this setting, though again this not yet officially supported.
Note that when GPS forwarding is activated, the 'Device File' field is set to the special value "/@". Also, on the Palm side, the serial settings are not important. If GPS forwarding is turned on, then baud, parity, stop bits and so forth are bypassed. Any program accessing the serial port will see the NMEA data no matter what serial settings they use.
Basic information about PHEM, along with links to this manual.
PHEM has a few features to make using a Palm more convenient on an Android device.
- Clipboard Exchange: You can copy and paste text between the Palm clipboard and the Android clipboard. (Note: Just text. Not bitmaps or anything like that.) If you copy some text on the Palm, you can paste it into an Android app, and vice versa.
- Hardware Keyboard Support: If your Android device has a hardware keyboard, you can type and the keystrokes will be sent on to the Palm as if they were entered in the Graffiti area.
Copyright © 2014 Perpendox Software LLC