Palm OS / Zodiac Dev FAQ
Copyright Codejedi 2004
This is a work in progress and only a very limited work so far :)
Enjoy at own risk ;)
- Required background reading
- Development models and tools for each
- Pure 68k development - All Palm OS devices, good for newbies
- 68k with "pnolet" (little ARM code pieces for speed) - Good for
general development on all devices (many modern OS5 games use
- 68k loader with full app as "pnolet" (68k loader is needed until
OS6, but in this context the entire app is in pnolet except the
loader) - This is a very powerful approach but can be very
- Tapwave Native App (TNA) - Requires CodeWarrior but is an easy
way to do powerful applications on Zodiac's
- Non 'C' based development (NSBasic etc)
- Sneaky tricks
- Forum links
- Rudimentary dev kit
- Sample code and downloads
- Resources, other toolkits, links
Don't even try to read any of this page unless you've already
read some of the background information. Some of it I've written,
other parts are by others or by first parties. I'm not interested
in re-answerign the same question for the 100th time :)
Development models and tools for each
For Palm OS in general, and Zodiac in specific, there are a
number of development models due to the history of the platform.
Its not an option.. you'll have to pick the one that best fits
your needs and go with it.
You can do pretty much everythign in 68k that you can in
ARM code. Fullscreen on Zodiac is same as fullscreen on every other
Palm OS device.
Zodiac is NOT AN ISLAND UNTO ITSELF.
Models of development:
- Pure 68k development - All Palm OS devices, good for newbies - FREE
Original Palm OS handhelds (years ago) were some of the first
handhelds and thus were lower power units carefully designed to be
handhelds and not game machines; they ran on powerful but battery
efficient variations of the Motorola 68000 processor. This
platform essentially lasted through to the end of Palm OS 4, with
Palm OS 5 being ARM based as we see things today. OS5 and OS6
include PACE, which is a 'layer' of emulation that allows these
'68k' applications to run on the ARM based operating system.
(OS6 also allows easy native ARM applications.)
Due to this long history, many tools and samples exist for
68k applications, and to this day every Palm OS application starts
life as a 68k application, and most are 100% 68k still. A few have
ARM routines embedded within for speeding up time critical
functions, while others use the 68k only as a loader to get to
a 100% ARM based application. See below for those.
As such, the most information and help available is available
for prue 68k applications, and thus they are easiest to dive
Implications of a pure 68k application:
- Full device cross compatability; ie: Your application can
run on every Palm OS device out there.
- I wouldn't say slow since most 68k applications *blaze*
under OS5, but an application with ARM snippets within can vastly
outperform a pure 68k application while on OS5.
- Cost: Zero. Free. Nada. Squat.
Tools you'll need:
- 68k with "pnolet" subroutines - FREE
In this model, you develop what is essentially a pure 68k
based application but embed one or more ARM mini applications
within it to do grunt work quickly. A little ARM function used
to be called an "ARMlet" but is now called a "PNOlet" (for
Palm Native Object".
This is a powerful technique since you can leverage the vast
68k resources, and yet harvest the raw ARM speed as you need it.
Many games use this technique to various degrees...
- Full game with graphics blitting or rendering functions in
- Full game with "logic" in 68k, with all the "do it" functions
in ARM code
- Game frontend in 68k (menus, options, loading stuff) while
the entire game engine resides in ARM code (see below for that
- Can run very fast!
- Can be easy to develop, with little special knowledge needed
- COST: Free!
Tools you will need:
In this model you will develop several separate applications
that link together in the resources, with the 68k code managing
the pnolets. More to point, you will write a 68k application that
can call specific PNO functions. The 68k application is built with
and linked into a .prc with PRC Tools. The PNO subroutines are
built with Pnolet tools gcc and linked into the final prc by
- 68k loader with full app as "pnolet" - Harder with gcc OR Easy with Cost CocdeWarrior
- Tapwave Native App (TNA) - Cost: Requires CodeWarrior
- Non 'C' based development (NSBasic etc)
Rudimentary dev kit
Sample code and downloads
Resources, other toolkits, links