This chapter provides conceptual information that will help you learn about Palm OS® Simulator.
This chapter contains the following sections:
- "What Is Palm OS Simulator?"
- "How Does Palm OS Simulator Compare to Palm Simulator for Macintosh?"
- "Prerequisites"
What Is Palm OS Simulator?
Palm OS Simulator is Palm OS recompiled for a desktop machine processor. Palm OS Simulator combines the following into a single execution environment:
- Palm OS applications
- Palm Application Compatibility Environment (PACE)
- Palm OS system code
- An implementation of the Device Abstraction Layer (DAL)
Figure 1.1 Palm OS Simulator Components

Palm OS Applications
Palm OS Simulator includes all of the built-in Palm OS applications, such as Address Book, Date Book, Memo Pad, and To Do List. The built-in Palm OS applications are included in the Simulator ROM file.
You can add other Palm OS applications to a Simulator session as well. For more information, see "Installing Applications."
Palm OS System Code
Palm OS Simulator includes all of the Palm OS 5 system code, compiled to run on Windows.
Palm OS Runtime Services
Palm OS Simulator implements the Palm OS 5 runtime services by using desktop system library files (DLLs). These DLLs are located in the Palm OS Simulator directory, and are loaded when the code that they contain needs to be executed.
Communication Stacks
Palm OS Simulator uses the communication stacks for NetLib and Telephony components. Palm OS Simulator can optionally redirect NetLib calls to the host machine TCP/IP stack.
Palm Application Compatibility Environment
When you use Simulator to test your existing 68K application, the application is run in the Palm Application Compatibility Environment (PACE). PACE provides a 68K application environment that is equivalent to Palm OS 4.1.
PACE handles the data translation required for a 68K application to run on Palm OS 5. For example, 68K applications read and write data in big-endian mode, but Palm OS 5 views data in little-endian mode. When a 68K application calls a Palm OS function, PACE handles the translation of the parameters, objects, and structure layouts so that existing applications do not have to be updated to handle the change of endianness. PACE creates "shadow structures" for the 68K application's data that allow the 68K application to run under Palm OS 5.
Device Abstraction Layer
The Device Abstraction Layer (DAL) is responsible for insulating Palm OS from the underlying system and hardware. By running Palm OS on top of the DAL for the desktop machine, Palm OS Simulator recreates the Palm OS program execution environment in the desktop machine.
Applications that run in this environment see the same functionality provided by the Palm OS managers, libraries, and applications as on a Palm Powered handheld.
Because Palm OS Simulator runs on a desktop machine, it can be integrated with the desktop tools for Palm OS development. This integration allows full source level debugging of the code that is targeted for Palm Powered handhelds.
How Does Palm OS Simulator Compare to Palm Simulator for Macintosh?
Palm OS Simulator has significant advantages over the Macintosh simulator in use with Palm OS 4.0:
- All of the applications and shared libraries that can be loaded onto a handheld can be loaded in Palm OS Simulator at the same time. This allows analyzing the interactions between the applications, shared libraries, and Palm OS with a much better accuracy than before.
- Palm OS Simulator supports multi-threading.
- Palm OS Simulator runs exactly the same Palm OS code that runs on a Palm Powered handheld. The only difference between Palm OS running on a handheld and Palm OS Simulator is the DAL.
- The Macintosh simulator required that components be statically linked together. Because Palm OS Simulator does not have this requirement, the simulation reproduces accurately the Palm OS runtime architecture on top of the desktop machine system.
Prerequisites
Palm OS Simulator runs on Windows NT 4 x86, Windows 2000, Windows XP, Windows 98, and Windows ME.
Palm OS Simulator is flexible enough to be used with most C/C++ development chains, with or without an associated integrated development environment (IDEs such as Visual C++).