PalmDAML Implementation Details
This document contains the software development history
and plans for the C++ implementation of PalmDAML.
PalmDAML currently consists of 2 programs
- daml2pdb.java runs under Windows or Unix, reads
and generates a
file suitable for loading into the Palm.
- PalmDAML.prc is an application that runs on the Palm itself
A single Java program providing similar desired functionality
on Windows and Unix platforms is
Development Resources and Tools
I used CodeWarrior for Palm Computing Platform Release 6,
the primary professional tool for developing Palm applications,
- Interactive Development Environment (IDE),
similar to Microsoft Visual C++
- Constructor for Palm OS, which allows the creation
of GUI forms and other resources
- Palm Emulator
- documentation. Suggested reading order:
- PalmOS Tutorial
- PalmOS Programmer's Companion
- PalmOS Reference
As the use of CodeWarrior suggests,
PalmOS is quite like the Macintosh OS.
I initially created an empty Starter application in Code Warrior,
copied the files, and started editing.
My normal edit/compile/debug cycle is
- edit and save PalmDAML.cpp or other files
- CodeWarrier IDE
- use the "Synchronize Modification Dates" and "Build" buttons
within the PalmDAML.mcp window to build PalmDAML.prc
- Palm Emulator
- Use "Install Application/Database" to load the updated PalmDAML.prc file.
- Use "Install Application/Database" to load the .pdb file (if it hasn't been loaded already).
- Click Home.
- Click PalmDAML to launch the application.
Compared to an actual Palm device,
provides better debugging support and a better display,
and doesn't run down batteries or risk stored data.
I used Palm Emulator 3.0a7,
(you have to join the
Solution Provider Program
to download ROM images).
Source code is stored in CVS, in the palm module under CVSROOT
This (unfortunately) includes some binary files such as
The design drivers in developing for the Palm are
- the small screen (160 x
160 monochrome pixels)
- the small dynamic heap (32K - 128K,
for this and other details -- most of the 1M - 8M memory is used for database storage).
Less constraining issues are
- the limited CPU (16-20 MHz Motorola 68000 series
- the limited bandwidth of the serial and IR interfaces
Originally, we stored individual DAML statements directly in the Palm DB,
and had the PalmDAML application reconstruct the graph strucuture
at application startup.
This consumed too much memory and slowed down application startup.
daml2pdb.java now creates the graph structure and stores a database record
for each node (Resource, Statement, or Literal).
The exact database strucuture is described in comments at the head of
PalmDAML starts with a NodesView (note plural) listing the URIs of all
Resource nodes found in its single database.
When the user selects one of these URIs,
he gets a NodeView (note singular) showing all of the statements
involving that node.
We have officially registered the Creator ID "DAML" for use with PalmDAML.
$Id: details.html,v 1.6 2000/11/24 06:10:47 mdean Exp $
- investigate the use of a Table rather than a List for displaying statements on the Node screen
- modifications to the Node screen
- ensure that the full URIs and content can be viewed on the Node screen.
This screen might be split into a top pane listing statements and a bottom pane showing the full information for 1 selected statement.
- ensure that the user can navigate to any of the predicate, object, or reifications for a given statement.
- implement the Back button (and maybe a Forward button)
- modify the GUI to be compatible with the User Interface Guidelines
- investigate modifying the NodesView List to dynamically
fetch choices directly from the database entries based on the current
scroll bar settings
rather than requiring that a static list of choices be computed initially
- link the scroll bars to the Palm scroll keys
- supply About ... information for the application, e.g. "PalmDAML 1.1 (or 2000-11-21) developed by Mike Dean and Jack Margerison of BBN Technologies"
- support use of the standard Palm Find interface to search DAML records
- consider replacing daml2pdb with a Conduit that allows incremental transfer of new DAML statements.
- investigate wireless and/or IR transfer of statements
(Windows NT doesn't generally support IR devices, but Windows 2000 does)