blob: 21cc5db500233e59e1c8c6b609c44a716da5d974 [file] [log] [blame]
###############################################################################
#
# Copyright (c) 1999-2000 Palm, Inc. or its subsidiaries.
# All rights reserved.
#
# File: Multi-Segment Read Me.txt
#
###############################################################################
This is a stationery project for a multi-segment application that
runs on Palm OS devices. Even though you can create applications
with multiple segments, you must follow the example used in this
project. See the "Targetting Palm OS" manual in the CodeWarrior
Documentation folder for more information on working with multi-
segment applications.
Segments are numbered from 0. Segment 0 contains information for
the segment loader and is created by the linker. Segment 1 contains
your application code and the startup code. This segment __must__
contain "MSL Runtime Palm OS (xx).lib", PilotMain(), and any code that
is executed when PilotMain() receives a launch command other than
sysAppLaunchCmdNormalLaunch. This stipulation is caused by the fact
that A5-relative data is not relocated when the application is called
with any other launch code, thus all global variable addresses will be
wrong and cause a crash.
The best way to determine what files can go into segments other
than 1 is to comment out the code in PilotMain() that handles the
sysAppLaunchCmdNormalLaunch command, select the "Link Map" option
from the 68K Linker preferences, and rebuild. Any file that shows
up in the link map on a line beginning with "Code:" must be in the
first segment.
If you follow the coding style used by the Palm OS examples, form
handlers and the static functions called by the form handlers are
good candidates to be placed in secondary segments.