Welcome to my Pilot programming FAQ. This page is intended to help new Pilot programmers or wanna-be Pilot programmers get up to speed and producing Pilot apps as quickly as possible. It essentially collects a bunch of information that's spread around the net into one place and adds some editorial content to give you at least one opinion that can help you choose your development platform. This page is also available in German.
Note that I define Programming fairly loosely here. I try to cover everything you can use to set up your Pilot to do customized actions including databases and spreadsheets.
The Pilot community is growing rapidly, and there are lots of great tools available. Many of these tools are free, and all are pretty low cost. You don't need a huge budget (or any budget for that matter) to program the Pilot. Don't let the price fool you. The free tools are generally of high quality.
You should be aware that I'm a Windows programmer and user, so the comments on Windows tools are backed up with some direct experience. The comments on Mac and Un*x systems is information pulled from various places on the net as well as the authors. When I say Un*x this means various flavors of Unix as well as Linux, all of which are supported. Also note that I'm a relative newbie as far as Pilot programming is concerned so I don't know everything.
This page will be updated periodically, hopefully as a result of other members of the Pilot community sending me Questions and Answers for it. If you've visited before, you may want to check out the History page to see what's changed and the credits for outside contributions.
I would appreciate feedback, good or bad as well as corrections, comments, additions or editorials on my editorials. Send them to me at email@example.com.
I would especially appreciate new questions and answers. If you don't know the answer, try posting your question to one of the Pilot Programming Newsgroups. If you do that, I'll see it and if it seems like a common question I'll add the response after someone in the newsgroup answers it.
General Pilot Programming Questions
OK, enough already. How do I get started!
Oops, wrong page. Where are the non-programming FAQs?
There are several Pilot FAQs you may want to check out:
Where are the other programming FAQs?
This was the first programming FAQ and it's now linked to by the official 3COM PalmPilot site. The list of other FAQs is pretty skimpy now, but I hope it will grow as time goes on. Subscribe to my Auto-Notification service and you'll find out about new pages as soon as I do.
Most of these FAQs are volunteer efforts like mine that will require other Pilot developers to submit questions and answers. Please do your part for them when you can.
The other definitive place to get Pilot programming information is at the NewsgroupsPilot Programming Newsgroups.
How can I program the Pilot with Windows?
There are several Pilot development systems for Windows ranging in price from free to a couple hundred bucks. Do not let the price of the tools be the deciding factor because in many cases the free tools are better than the most expensive ones. There are more tools written for Windows than any other platform so you have a lot of choices. The available tools fall into these categories:
- C Language: Most Pilot programs are written in C. All of the built in programs were written with the Macintosh version of CodeWarrior. In fact you can get the source for the built in applications and change them if you like. Programming in C or Assembly is the most flexible and powerful method for programming the Pilot, but the learning curve is fairly steep; especially if you aren't already a C programmer. You can get both commercial and free C compilers. The free tools are of very high quality (perhaps, better than the commercial system) so you don't need to spend a bundle to get going.
- The GCC-Pilot system is a port of the GNU C compiler to the Pilot. If you aren't familiar with GNU, it's a set of compilers and other tools managed by the Free Software Foundation that are created by volunteers and are usually distributed for free. Basically, the source for all GNU programs is available to anyone, and anyone can modify the source as long as they make their modifications freely available.
The Pilot port includes the Pilot GCC C compiler, a resource editor (PilRC), and the Pilot header files, as well as a linker that can put it all together into a Pilot program.
The version 0.5.0 package comes with the 'gdb' source level debugger, the CoPilot emulator integrated with the gdb source level debugger, the GNU Emacs editor & IDE integrated with the debugger. For Win95, an install wizard makes it painless, but there are currently some problems with NT 4.0.
The package is developed solely on UN*X and Win32 is a port done after the UN*X versions are considered stable. Thus the Win32 version is always behind the UN*X version by at least a little. If you haven't guessed, this is the version I use and I like it.
To start with GCC, go to Getting Started with GCC.
- Metrowerks software's CodeWarrior is the "official" Palm sanctioned development platform. It is a commercial system that includes an Integrated Development Environment complete with resource generator, symbolic debugger and other tools. At the current time, this product is shipping with a resource editor that is unusable for bitmaps. It works for text only applications, but it can't effectively be used for graphic intensive programs.
It's more costly than GCC, but it with the source to all the built in apps, which you can modify and distribute if you like.
To start CodeWarrior, go to Getting Started with CodeWarrior.
- Database & Spreadsheet Programs: If you just want to collect some simple data without designing custom forms and learning the Pilot API, there are a few DBMS and Spreadsheet programs available for $15-60. They don't give you the flexibility that the programming languages do, but you can be up and running in a matter of hours. For most people, this is probably the best way to get your feet wet and may well be all you ever need.
- Pilot Forms from Pendragon Software is an commercial database system that allows you to define a Microsoft Access database and a Pilot program that work together to allow users to collect data on the Pilot that is automatically synchronized with the PC database. All the data that is collected on the Pilot magically appears in the Access database, and any changes made to the data on the Pilot or on the PC are automatically synchronized.The only downside is that you don't have much control over the look and feel of the data collection forms on the Pilot, and you can't distrubute your application unless every user buys a runtime license. This is OK for your own apps, but can get expensive if you want to collect data for a bunch of Pilot users.
If you're going to collect data with the Pilot, you should consider getting this even if you eventually want to code the application in C as it's a good way to prototype your app, think about it's program flow and test out the data model without doing a lot of work. It's not very expensive so check it out.
To start with Pilot Forms, go to Getting Started with Pilot Forms.
- Satellite Forms from SoftMagic is a commercial Database / Forms Designer with enough functionality to be a direct replacement to full blown C development for database applications. The SDK comes with a PC based Application Designer, which will help you create the tables and forms that the application will use. The first big difference between PilotForms and Satellite Forms come out at this point. Satellite Forms can create multi-form applications with interaction and data exchange between forms.
Using these controls, it is possible to create forms with flexible positioning using the WYSIWYG forms designer. This is the second big difference compared to PilotForms which only allows either one control per page or a list view of the controls. Another big feature is the availability of "actions" on the 'Tap" event for any control. When tapped, controls can trigger one of several actions, including launching other programs. These actions coupled with the powerfull "Filters" allow the creation of full-fledged database applications in allmost no time. The filters are defined and activated on the controls and are the applications way of communicating between the forms.
The PC based Application Designer creates DBase 5 files to act as the PC side of the database that is placed on the Pilot. There is no auto-synchronization built into the product. An ActiveX control is supplied for PC developers to tie their apps into the database application running on the Pilot. This allows far greater control over the HotSynch process compared to the PilotForms but if the requirement is just a simple auto-synchronization, adds a bit to the development time.
At $600, this is the most expensive development environment available for the Pilot, but it's also considered by many to be the easiest to use and the most flexible. It's definitely worth a look.
To start with Satellite Forms, go to Getting Started with Satellite Forms.
- JFile, is an even less expensive shareware simple database system. It works with comma delimited files instead of Access files, which most other database systems can import and export. It also allows you to define the database fields on the Pilot, where Pilot Forms requires you to do it on the PC side. You can even use it effectively without any desktop software at all.
This is a handy thing to keep on the Pilot for times when you want to test out an idea, or you need to create a simple database definition and collect some data quickly. This is absolutely the fastest way for you to collect data on the Pilot if you don't need a fancy form and just want a plain flat file as the result. You can find Calvin's review of it here.
To start with JFile, go to Getting Started with JFile.
- Simpledb is a freeware database application for the PalmPilot, which allows the user to create customized databases. Simpledb creates records with a heading and 5 fields and gives users the ability to add free-form notes to each record. The unregistered version only allows 5 records per database. I haven't tried this.
- QuickSheet from Cutting Edge Software is a spreadsheet program much like the ones most users are familiar with from the desktop. This can be used for quick data collection as well as data modeling on the fly. Business users should be particularly interested in this as this uses a model that's familiar to most computer users.
It's product blurb reads "QuickSheet is the handheld spreadsheet for the US Robotics(R) PalmPilot(TM). Combined with the included PC conduit software and Microsoft(R) Excel(TM) Add-In, QuickSheet is useful for a wide variety of data analysis and collecting applications."
To start with QuickSheet, go to Getting Started with QuickSheet.
- TinySheet is a small spreadsheet that can link with Excel much like QuickSheet. However QuickSheet is a commercial product that's relatively expensive while TinySheet is inexpensive shareware. I haven't used either product so I can't really do a meaningful comparison but you should investigate both products if this appeals to you. You can find this and some support programs at Ray's Pilot Archive. Do a quick search for "TinySheet".
- Java: It seems like everybody's talking about Java these days. Java is an easy to learn and very portable language that's springing up everywhere. It's a lot like C++ but with the most blatant problem areas for C++ removed and improved security added.
- Jump Java converts Java programs that follow certain guidelines to Pilot programs. This is not a full Java implementation and it is not a Java Virtual Machine. Since this is a hybrid product, it isn't quite as flexible as either programming in Pilot C or using a full Java Virtual Machine. It is a good way to go if you are already a Java programmer and you don't need to get to specialized parts of the Pilot API; or if you think you might want to port your finished program to other platforms later.
The current version of Jump requires the Java 1.1JDK from Sun or Microsoft.
To start with Jump Java, go to Getting Started with Jump Java.
- In a perfect world, we could have a Java Virtual Machine for the Pilot and you could then run any 100% pure Java program. Unfortunately, JVMs are usually huge and there may not be enough room on the Pilot for one. There is at least one attempt under way to create a JVM and I'll notify the list if I hear of any successful ones. One ongoing project can be found here.
- Waba is a Java-Like programming language that uses a strict subset of the Java programming language to allow users to develop code using a subset of the Sun or Microsoft Java Development Kit and run the resulting programs on both Pilot and Windows CE machines. It's not Java, but it is similar. Read about it at http://www.wabasoft.com/overview.html.
- Ghost is a Java VM for Palm-OS. It supports AWT under the JDK 1.0.2 model and attempts to implement a complete Java Virtual Machine using standard Java APIs. This is work in progress. Find out more here.
- Other High Level Languages: There are a couple of languages that fit in somewhere between the Database Programs and the C Language systems. These give you more control over the application than the database programs, but less control than using C. They take a little more time to learn than the Database programs, but considerably less time than learning C. They are also more appropriate for general non-database applications than the Database programs.
- CASLSoft's CASL is a high level cross platform language. It allows you to write programs that run unmodified on the Pilot and the OmniGo, and more platforms are planned in the future. It also runs under Win32 so you can test programs right on your PC.
The current version of CASL is much like early versions of BASIC. It's easy to learn and use but has a lot of limitations. There is a new version that will be available soon that addresses many of the limitations of the early version and it should be a good contender. The cool thing about CASL is that you can buy it and have a working program in a few hours, where even experienced programmers will spend days or weeks before making any real progress with C. The one thing to watch for with CASL is that like several other development systems it has a pretty big runtime. CASL's is about 30k. Your programs are smaller than equivelant C programs, so if you had a bunch of them you would eventually wind up ahead. This isn't the end of the world, and isn't even a real issue on most new PalmPilots, it's just something to be aware of.
To start with CASL, go to Getting Started with CASL.
- Ron Nicholson's CBasPad is a tiny BASIC interpreter for the Pilot. It isn't a full programming language as it doesn't support all of the Pilot user interface. It's a lot like the GW Basic you that came with DOS. It's text mode only, and doesn't support forms.
This is a good tool for making quick little programs on the fly to do calculations or get simple user input and process it. It's small and free so everyone should at least download the zip file and read the documentation.
To start with CBasPad, go to Getting Started with CBasPad.
- Assembler: Assembly language programming is certainly not for everyone. It's the most difficult way to program the Pilot (or any other computer for that matter), but the method that gives you the most control over the execution and operation of your program. If you're talented at it you can make programs that are smaller and faster than using any other method, but you'll pay the price in development time.
- The ASDK is a Pilot assembler (Pila) and resource compiler (PilRC). I recommend this system only for advanced users. If you're just starting, get GCC and learn to use it and then move to Pila as you feel the need.
To start with ASDK, go to Getting Started with ASDK.
How can I program the Pilot with the Macintosh?
Pilot programming for the Mac is a good news/bad news situation. The bad news is there is only one choice available and that's the Metrowerks CodeWarrior. The good news is that this is the oldest and most stable development system available. It was used to create all the built in apps that came with your Pilot and all the documentation Pilot API documentation was created for the Mac.
It is possible to port the free GCC compiler mentioned in the Windows section over to the Mac but to my knowledge this hasn't been done and nobody is currently working on it.
To start CodeWarrior, go to Getting Started with CodeWarrior.
How can I program the Pilot with the Unix or Linux?
The free GCC system mentioned above under Windows GCC is actually done in Un*x and then ported over to Windows. This is a free tool of very high quality. There are also a bunch of Pilot and/or Unix programs written using this system to provide services for Unix system including mail, news, etc.
Pila has also been ported to Unix so you can do assembly programming under Unix/Linux or you can use Jump Java mentioned above in the Windows section to do Java programming.
For Linux and some Unix systems, you can download the binaries for the development tools and immediately go to town. For other systems, you may need to download the source and build the tools yourself using your systems compilers.
To start with GCC, go to Getting Started with GCC.
To start with Jump Java, go to Getting Started with Jump Java.
To start with ASDK, go to Getting Started with ASDK.
How can I write programs for my Pilot On my Pilot?
There are a couple of ways you can program your Pilot without any host computer.
- CBasPad is a Tiny Basic interpreter that allows you to write small programs in something like notepad or on your PC using GCM.
- There are two Forth interpreters for the Pilot that are both in the early beta stage. Forth is a language that everyone either loves or hates. It's a stack based language which makes Forth programs look wierd to non-Forth programmers. However, it makes very small, very fast programs, and it's an inherantly extensible language. You can find out more about Forth at www.forth.org. The two available Forth implimentations are Neal Bridges' PilotFORTH, and Blake Winton's B-Forth! Forth for the Pilot.
I'm not a Forth programmer so I can't really give an opinion on either of these. However, G. Wade Johnson (yet another Wade, how many can there be?) is a FORTH programmer and prefers PilotFORTH. PilotFORTH follows the ANSI Forth standard which is fairly close to the Forth 83 standard. (At least at the application programming level.) B-Forth, on the other hand, renames some of the basic commands of the language and is, therefore, not immediately understandable by a Forth programmer. He has several support files for PilotFORTH system at Wade's PilotFORTH Files.
- JFile is a simple database program that allows you to define the fields on the Pilot, or on a PC using GCM.
- QuickSheet is a simple spreadsheet program that allows many types of quick data modeling or data collection to be done.
- RPN Calc is a programmable RPN calculator. It's like having a programmable HP calculator in your pilot. It comes with an impressive list of calculator functions including Trig, Financial, conversions, currency, etc. You can also program it to extend it to do any kind of numeric calculation you want. In fact, most of the above mentioned functionality consists of programmed functions using the calculator.
If your programming need is to collect some data in the field and do some kind of processing on the collected data, this could be just the ticket. There are also quite a few programs for the calculator on the net, so you may find you don't need to program to meet your goals anyway.
- LispMe is a Lisp/Scheme compiler and runtime system. It is not intended to develop applications for the Pilot and has therefore no support of UI functions. Its purpose is rather to have a tool for quickly trying ideas and algorithms in a high-level language while sitting in a train, plane or any place your Pilot goes with you!
- Pilot Programmer's Calculator is a programmer's calculator with a C-like interpreted language you can use for creating complex calculations.
- Pocket-C is a small C compiler for the Pilot. Like CbasPad, the programs are written in Memo-Pad or imported from your PC and compiled with the compiler. The compiled code than can be executed from within PocketC. This isn't a a native code compiler. Much like Java the compiler compiles the code to a condensed byte code that is interpreted at run-time. The code can be shared with others in either it's original source form or in compiled form. It can use the MathLib shared library for IEEE floating point math. Unlike CbasPad which hasn't been updated in a long time this is a very active language that already has quite a bit of support floating around the net. I haven't done much with it but think it's well worth checking out. The program costs a very reasonable $18.50.
- Pocket Smalltalk is an implementation of the popular programming language Smalltalk for the PalmPilot. It consists of a development environment which runs on Windows 95/NT along with a cross-compiler which can generate "executable" .PRC files from Smalltalk source code. Programs written with Pocket Smalltalk can run in very little memory space---just 5k for a minimal "hello world" program, plus a 20k virtual machine which can be shared between different programs. This system will be freely available for noncommercial uses. A $40 "registration" fee is required if you want to write commercial or shareware programs in Pocket Smalltalk.
Which Pilot do I need to do Pilot programming?
As with all computer systems, you always want to get the best system you can because as you use it your needs will grow. I recommend that you get a PalmPilot Professional if you can afford it. However, if the Personal is all you can afford, it's fine for Pilot development. In fact, a Pilot 1000 or 5000 is fine for any Pilot programming that doesn't require the new OS 2.0 services. Almost all the actual work involved in Pilot development is done on your host computer so the requirements on the Pilot side are pretty minimal.
You can even do development without having a Pilot at all by using Copilot but I don't really recommend it as this doesn't give you a true feel for how your app will work in practice.
Can I Program in C++?
Both CodeWarrior and GCC claim to have full support for C++. I haven't tried C++ with either tool so can't really report on how well they work. There are a couple of projects in place for developing a set of class libraries for these platforms. If these work out they should greatly simplify Pilot programming. The projects I'm aware of are:
Can I test my Pilot programs on my host computer?
- Under Windows, you can run your program using Copilot. This is a Pilot emulator program that looks and acts just about like the Pilot. You download your actual Pilot ROM from your pilot and you're good to go. This also has a debugger that is fully integrated with the GCC development system to do source level debugging. It is an essential tool for any Windows Pilot developer no matter which programming system you are using. If you get the GCC system (recommended) this will come with it.
- If you're running on the Macintosh, the CodeWarrior package has a Pilot emulator that runs your Pilot program in a small Mac window. Also on the Mac is Zilot, which is like copilot, but different. (I don't know how. I don't own a mac.)
- If you're running Unix/Linux you can use XCopilot. Some of the most recent changes to Copilot for Windows, have been back-ported from xcopilot. You can find a link to it and other Unix stuff at the Pilot stuff from the ISAAC Group or from the Pilot Unix Project.
Where can I get sample code for the Pilot?
There are several web sites that do a good job of pointing to available source code so I won't try to duplicate them here, I'll just point you to my sources and any other good sites I find.
- Ray's PalmPilot Software Archive, (my favorite archive site) has a section just for sample code. You can probably find everything I've listed here and more at Ray's Development Source Sample Page.
- All the source for the built in applications comes with CodeWarrior, so if you buy the package you get the rights to modify them to your hearts content and distribute the results. If you want to make an application that's very much like the built in apps, it may be worth purchase of the package just to get this source. Even if you are using GCC or ASDK, you will want to try to get these files just to get coding examples.
- Darrin Massena's home page is the ultimate source on ASDK and GCC Pilot programming. This is a must read page that should be bookmarked. It contains links to several sample code pages.
- Andrew Howlett's Source Page contains a bunch of source for the free tools (ASDK & GCC), in both Assembler and C.
- Road Coders contains an excellent set of links to all things related to Pilot programming including sample source. If you want more information than this FAQ provides that is an excellent place to start. You should bookmark this page as you'll be coming back to it often.
- The Handheld Systems Journal contains articles about various handheld systems including the Pilot. They have various technical articles that include source code. You can find their back issues and subscription information at their web site. Their web site also contains back issue articles, as well as a cumulative table of contents.
- Ray's Software Archive's Development Source Samples contains links to several sample programs in assembly and C.
- Matthew's Pilot Programming Page has the code for a simple "Hello, World" application (in GCC-C). It also has links to a number of other Pilot programming resources on the Net. This is a good place to get a simple boiler-plate place to start a project with. It also contains several Unix related Pilot links.
- T.J.'s Palm-Pilot Download Page has some source for one or two programs in ASM, including a graphic effects program. If you're going to commence with Pila, check it out. You can also find the source in the "Graphics" section of PilotGear.
- Arcosoft sells the source for four of their applications for $79.00. The source is all written in CodeWarrior C in Windows. You may want to take a look at the applications. If one of these is close to what you want, the price is pretty reasonable. You can distribute applications created with modified versions of the code any way you like.
- Pilot Mines is another minesweeper clone. This one has highscores and is played on a 16x14 field board. Included in the zip file are the program sources in GCC C, and the program as german and english version. It's published by Thomas Pundt.
- CASLsoft Sample Programs is a page containing a bunch of sample code for the CASL development Environment.
- Dave McLeod's Fret Board Map Source is the source to a GCC program that This app displays a schematic of the guitar neck, and maps out notes, scales and chords. It includes samples of popup lists and various other techniques that come up often in the newsgroups.
- Valavan Manohararajah's Ataxx is a strategy game similar to Othello or Riversi. The game originated in an old arcade machine of the same name. The source in GCC-C can be found on his home page.
- Tatsuya Aoyagi's System Sound Hack is a HackMaster extension that changes the system sound of your pilot, such as alarm, click, warning etc. The source code is available from the home page. This is the first source I've seen demonstrating making HackMaster extensions with GCC. This page includes some tools that do the necessary relocations to make it work. The tools are in PERL and unfortunately they are undocumented. If someone wants to write up a HOW-TO for using these, please mail it to me and I'll publish it.
- The Windward Group has sample code for an inventory control system. The sample includes the code for the Pilot Program, a PC compainion program, and the conduit DLL. This is the first complete system sample I've seen anywhere. It's the project referenced in Extending Your Desktop with the Pilot in the Handheld Systems Journal.
- Wade's PilotFORTH Files (Another Wade, go figure) has several support files for Neil Bridges' PilotFORTH.
- I'm starting an archive of Pilot code snippets at Wade's Pilot Code Snippets. There isn't much if anything there yet but I plan to add small self contained code fragments on a regular basis so bookmark the page and check back periodically. I'm really hoping that other developers will start sending snippets to me as soon as I get the ball rolling so I can post them there too.
Where can I get support libraries for the Pilot?
- MathLib is a PalmPilot shared library which makes a complete set of IEEE-754 double-precision math functions available to other PalmPilot applications. These functions include all the standard routines normally accessed by including "math.h" on other systems, including trigonometry (with inverse and hyperbolic), logarithms, exponentiation, and miscellaneous helper functions. These routines have been ported from the GCC 188.8.131.52 source code for libm.a, so this library is free software covered by the GNU General Public License.
Where can I get the file formats for the built in Apps?
There are couple of ways to find this information. If you have Metrowerks software's CodeWarrior the source for all the apps is included, and you can read the record structure from the header files. This gives you the structure of the records as far as a Pilot App is concerned.
If you want the binary format for the files so you can modify them directly you can find it at Nico Seessle's home page.
Note that if you want to read/write the files directly, you have to interact with Pilot Desktop to keep from arguing with it about who gets to write the file (otherwise it wins). See Interacting with Pilot Desktop to see how to do this.
How can I extract bitmaps or other info from existing .PRC files?
There are a couple of hackers tools that can extract various information from existing Pilot apps. Naturally, you shouldn't use these to steal someone else's stuff, but you can legitimately use it to learn things about existing files or see how things are done. All of the following tools can be found at Darrin Massena's home page and in fact most of these descriptions were shamelessly pirated directly from there.
- Prc2Bmp - Scott Ludwig's tool for extracting icons from PRC files. Comes with PC source code for reading a PRC file and extracting a desired resource.
- Prc2Bin - A utility to break a resource database (PRC) file down to its constituent resources. Each resource is written as a separate file. You can use this to break down a .PRC file into it's seperate parts, change some of them and then use Pila to put them back together.
- PilDis - Bill Hunt's Pilot disassembler. PilDis runs under Windows and allows you to disassemble PRC code resources. PilDis is PalmOS smart and labels API trap calls with the name of the API -- a big time saver!
- PTools - Hoshi Takanori's resource and data database viewer written in Java. It can open .prc/.pdb/.bin files and display the contents graphically (forms and bitmaps only), in pilrc source format, or hex dump. It can also handle compressed bitmaps. As it is written in Java, it can work on Mac, UNIX, Windows, etc. It's free and full source code is included. This is a cool way to poke around in your program or database files to see what's there and get a look at how things are done. It can be obtained from Hoshi's home page.
What's a Conduit, how do you make them and do I need to make one?
A conduit is a program that resides on your desktop and synchronizes the data in your Pilot with data on the Desktop. The data on your desktop can refer to Pilot Desktop or any other program that should be synchronized with the Pilot. Out of the box, a Pilot comes with conduits for synchronizing the built in apps (Datebook, etc) with Pilot Desktop. Several companies produce conduits for synchronizing the Pilot to other applications such as PIMs, Quicken and others.
If you want to make a Pilot app that either interacts with an existing program on your desktop, or you want to make a program that has both a Pilot and a desktop component, you will need to either use the Generic Conduit Manager or you will have to make a conduit.
Palm computing supports making conduits for Windows and Macintosh through the Conduit SDK. This is a set of C++ classes and a framework that allow you to make the conduit using Microsoft Visual C++ 4.1 or 5.0. This kit comes with Metrowerks software's CodeWarrior.
You can find a tutorial on making Pilot conduits published in PDA Developer Magazine by Stu Slack of the Windward Group. I haven't tried the code in it yet but the tutorial is well worth reading.
Conduits have been created for Unix/Linux systems but I don't know how it's done right now, so I'm hoping one of the Unix guys will alleviate my ignorance. I also suspect that someone is working on a GCC conduit manager but don't know any details about it.
Is there an easier way to make a simple conduit?
Yes, there is. Pat Beirne decided that requiring users to learn 2 more APIs (Windows DLL and Mac) in addition to learning how to program the Pilot was too much to ask if all you want to do is sync up a simple database. He created the Generic Conduit Manager to take care of this problem.
The assumption is that in most cases, the translation between the desktop system and the Pilot system won't require any hard core tweaking, so you should be able to make one conduit that will work for any number of registered applications. Several shareware programs make use of this to update their files, including JFile.and CBasPad.
You can get GCM from Ray's Software Archive. Use the quick search field and search for "GCM".
How do I read/write Pilot Desktop files without conflicting with Desktop?
This section clearly needs some work.
What's a Creator ID, do I need one and how do I get it?
Every Pilot application needs to have a unique Creator ID. This is a four byte number that's usually shown as a series of 4 characters. This is what the Pilot uses to determine which app is which. It ignores the name of the application, so if two applications have the same Creator ID then hot-synch will just delete one when the second is installed.
To make sure that there are no conflicts, Palm computing maintains an online list of creator IDs. It's your responsibility to check this list and add a unique ID for any Pilot Program you produce. I recommend that you do this for any Pilot program, even if you don't plan to release it to the rest of the world.
Reserving a creator ID is quick and painless. Just go to the Application Creator ID List site and find a unique ID for yourself and then to the Creator ID Registration Form to enter your registration. If you don't you deserve what you get.
How do I edit the icon for my Pilot apps?
The icon for a Pilot app is a bitmap that ignores the bottom 10 rows of pixels. These pixels are replaced with the name of the App in the Apps menu.
- All of the development systems except CodeWarrior use ordinary monochrome Windows bitmaps for Icons and all other graphic images. If you are running Windows you can just edit the files using PaintBrush in a pinch. You can edit them more easily using a better editor such as Developer Studio that comes with Microsoft Visual C++, or Borland's Resource Workshop. If you don't have any of these, you can find lots of bitmap editors at windows95.com. Whatever tool you use, you need to make sure that you make monochrome bitmaps.
- Metrowerks software's CodeWarrior has it's own resource editor that must be used to create your icon and there is no way presently to use a better tool for the job.
- If you're running under Unix/Linux you can get the Pilot Icon Editor from Darrin Massena's Pilot Development Tools and Articles page. GCC also comes with txt2bitm, which takes a file containing a 32x32 square of -s and #s, and makes a Pilot Bitmap out of it. You can also get PPM2BMP which converts PPM bitmaps to Pilot bitmaps and back. You can find a link to it and other Unix stuff at the Pilot stuff from the ISAAC Groupor from the Pilot Unix Project.
How can I find out what hardware's inside my Pilot?
If you feel compelled to void your warranty, or you're just curious about what's inside the Pilot you should check out Luiz Coutinho's Pilot Hardware Page. It has pictures and disassembly instructions.
Where are the Pilot programming newsgroups?
Darrin Massena maintains a set of newsgroups on his server that are dedicated to Pilot programming only. Since they're aren't part of UseNet you may need to do some tricks to get your newsreader to find them. If you're using the Netscape or Microsoft newsreaders (not recommended) you can just click on one of the links below.
If you're using a decent news reader you will probably have to set it up for multiple servers. The methods required for this vary from program to program but basically, you need to substitute or add the news server "news.massena.com" to your newsreader, which is probably now pointed at your Internet Service Provider's news server.
If you don't have a news reader you're happy with I recommend Forte's Agent (My favorite) or Anawave's Gravity. You can get trial copies of both at windows95.com (great site). If you're running something other than Windows, I can't help you.
For Forte's Agent, the newsgroup setting is under Options/User and System Profile/System/News Server. If you want to avoid switching this setting back and forth to access both Usenet and Pilot newsgroups, you'll have to create creating a second instance of Agent in a separate working directory. The Agent help file contains directions for creating this check Help | Search for Help On |Multi-server setup. Once you get the second instance of Agent setup with the new news server input, do a refresh groups so that you can get the list of Pilot newsgroups.
The newsgroups you want are all located on Darrin Massena's server and include:
Your normal Usenet server also has several newsgroups that might apply to the Pilot. I pretty much just follow the first two in the list but the others may have something for you.
Note that the alt.comp.sys.palmtops.pilot newsgroup has been around for a long time, and it was the first one dedicated to the Pilot in the Usenet heirarchy. This caused problems with some users because many servers block the alt... set of newsgroups because most of the stuff there is junk. The new group comp.sys.palmtops.pilot went on-line in 9/97 and should become the preferred newsgroup. The old alt.comp.sys.palmtops.pilot should die out soon.
Where is the best place to find more detailed Pilot programming info?
Every Pilot programmer needs the Palm OS documentation produced by Palm Computing. They can be found at http://palmpilot.3com.com/5024.html These require the horrible Acrobat reader to use them but that's better than no docs at all.
I could give you a long list of links to follow, but the job has already been done better than I could do it. If you go to the Pilot Page at RoadCoders.com and follow it you'll find links to all the best sites along with tons of other information. If you're serious about Pilot programming, you should follow every link and look at what's there.
If you're short on time, you MUST go to Darrin Massena's Pilot Software Development Page. This will give you all the information you can stand about ASDK and GCC.
It's also mandatory that you visit Andrew Howlett's Home Page on which you'll find the GCC tutorial as well as links to the rest of the GCC documentation. (Note: If you get GCC 0.5.0 it comes with the tutorial, but doesn't have all the other docs on Andrew's page).
Are there any classes or seminars on programming the Pilot?
The USR Pilot Developer's Zone page contains links to a few seminars and conferences.
Ziff Davis (publisher of PCMag) has an upcoming Developing for the PalmPilot online class.
Ok, so I know how to develop applications. How do I know what users want?
There are a few people on the net who have volunteered to keep wishlists for the Pilot. I recommend the one at RoadCoders as it's the only one that I know of that is automatic and readily available. You'll find a link to it at RoadCoders.
P.S. other list-keepers, please send me mail and I'll add your list here.
How do I extend the Palm OS? What's a Hack? What's HackMaster?
The Palm OS has a System Trap system that works much like Interrupts on MS-DOS systems. These are system services that process all the OS events, such as user entered a Graffiti character, system timer, power-off/on, etc. They also made a way so that an application can change how these system traps operate by changing the vector for the traps to point to user code that can modify or replace the default system behavoior. These extensions are generally knows as 'Hacks'.
For instance, one could code up a Hack to replace the standard Keyboard dialog with a new input method, or insert a procedure into the event-handling code in order to perform special actions at the entry of a certain Graffiti character, or even patch the text field routines to allow hyperlinking between applications. The potential uses are even wider than the system software itself.
Unfortunately, there are some problems with implementation. Where in memory does one put the routine? How does one install it into the trap? How do you deal with multiple patches on the same trap, especially if they install and remove themselves in different orders? How do you gracefully recover from a system reset?
There are a bunch of ways to do all these things, but if every developer does it their own way it is inevitable that some hacks will conflict with others in an ugly way. Enter HackMaster. This is a program that any developer can use to manage a system hack. The user must buy HackMaster for the trivial sum of $5.00 which includes a couple of useful hacks. Most Pilot users that download anything at all wind up with HackMaster on their machines.
You can write your own system hacks to interface with HackMaster using the HackMaster API. Then HackMaster will take care of all the nasty details of installing your App, making sure it works after a reset and all the other things that can get in the way.
You can make a HackMaster extension using the old CodeWarrior DR1 for the Macintosh (the original HackMaster instructions cover this), using PILA (You can find a sample) and using GCC. The GCC use of hackmaster is brand new and I haven't tried it yet. Take a look at Tatsuya Aoyagi's System Sound Hack. If you're interested in making hacks using GCC, Subscribe to the auto notify feature at the top of the page, and you'll know anything new as asoon as I do.
Can I get printed copies of the OS Development Manuals?
Are there any C development systems with printed manuals?
Can I see the manuals before I commit to a development system?
Neither of the C development systems have printed documentation. They both rely on Palm Computings manuals. If you purchase the CD or download the system you will get all these manuals. There are four manuals. Three of them are very generic manuals about the Palm OS and the fourth is a tutorial walking you through using the CodeWarrior package. The GCC system has a different tutorial that walks you through using GCC.
All of the Palm Computing documents are available from Palm Computing's web site.They're all in .PDF format so you'll need Acrobat reader to read them :-( Go to the Palm Computing Developer's Resources page to download individual pages and/or other documentation.
Who are the Gurus responsible for the great Pilot development systems?
The free Pilot development systems have been created by the tireless and selfless efforts of several people in the community. I suspect most of them never made a dime on Pilot development tools and did it just for the thrill of the challange or to provide a service to the community. There are a lot of people that have made big contributions to Pilot development. I'm sure I'll miss a few due to my ignorance, but the following people stand out:
- Darrin Massena was the first to break Pilot programming out of Macintosh purgatory when he wrote Pila, the Pilot Assembler. He also hosts the Pilot programming news server and an excellent page that's a must read for all Piloteers.
- Wes Cherry wrote PilRC which is the resource editor used by nearly all Pilot development systems. He also addes some coolness to Pila
- Wes Cherry, Andy Sackheim, Kresten Krab Thorup, Ian Goldberg, and D. Jeff Dionne and the US Robotics technical staff are responsible for the GCC development system.
- Greg Hewgill wrote Copilot, the Pilot emulator for Windows as Jump Java.
- Heath Hunnicutt has made improvements to Copilot while Greg had to actually work for a living.
- Nico Seessle hacked out the file formats of the built in apps files as they exist on the desktop to make modifying them with non-conduit tools easier.
- Pat Beirne wrote the Generic Conduit Manager which allows developers to skip an unpleasant learning experience when all they want to do is have their applications hot-synch.
- Luiz Coutinho voided his warranty to find out what's inside the Pilot and shared nice photos so the rest of us don't have to.
- John Lehett wrote JFile and did some of the work on GCC.
- Kenneth Albanowski wrote a stellar article for Handheld Developers Magazine, detailling how to work with memory and databases and stuff on the Pilot. He's also responsible for Pilot-Link, the util that lets you move your programs to the pilot under Unix. And, he's added in bindings for the standard programs (like memopad and calendar), for Tcl, Perl, and Java
- Logivox provides custom software and hardware development services for companies and individuals worldwide. We have experience in Palm/OS, Windows conduit and Windows UI development to provide a full, end-to-end solution. In addition, Logivox can provide hardware peripheral development. Logivox has and is developing several hardware solutions and associated software drivers for the PalmPilot device. Contact firstname.lastname@example.org.
Are there companies or contractors available to write Pilot software?
There are some. I don't know anything about any of them except that I'll list everyone who sends me an email. Send mail to email@example.com if you want to be listed. Please include contact information, preferably a home page or email address. If you have a _SHORT_ blurb, I'll include it here.
- Mobile Generation Software was founded on the principle that the next generation of hardware and software will be the "Mobile Generation." MGS is committed to serving this new generation by providing end-to-end mobile computing solutions utilizing the 3Com PalmPilot including: Custom PalmPilot Software Development;PalmPilot Software and Accessory Integration; PalmPilot sales, installation, and support; PalmPilot Productivity Classes.
- J.J. Lehett of Land-J Technologies is the author several excellent shareware programs including JFile a good simple database and JShopper, one of my favorite Pilot programs. He is also available for contract work and does vertical market applications.
- Electric Fish, Inc. is a small software consultancy based in Seattle, WA. We specialize in Macintosh software development, and have experience in a wide variety of target audiences, including TCP/IP communication, multimedia, client-server and signal processing applications. We have also recently diversified into the Java and Pilot platforms.
- Technology Resource Group, Inc.(TRG) does Pilot hardware and software development. We developed the SuperPilot board, a 3M memory board for the Pilot and PalmPilot, and associated software. We are presently in various stages of development on a number of hardware and software products for future release. In general TRG is a six-year-old contract-engineering design firm. We have 15 degreed engineers with various specialties within electrical and computer engineering. For more information please visit our web site or call (Doug DeVries) at (515) 252-7522.
- TekLab is a Pilot developer -- we're currently building some custom apps for the Pilot for a number of clients, ranging from field data entry to workflow management. More info can be found at the web site or by contacting Jay Vaughn, President
- Cyclos is a software development company specializing in Pilot and Macintosh software design. For examples of our products see our web site. For more information, contact Bill Goodman or call 415-821-1448 (U.S).
- The Windward Group is a software development services company. Windward works with technology-based firms to deliver consumer software to the marketplace, on time and on budget. Windward is Palm Computing's development partner for Pilot Desktop and the Pilot Synchronization Manager (HotSync). In addition, Windward has integrated the PalmPilot device with several other desktop offerings. Notable among these are Starfish Software (Sidekick 97), Franklin Covey (Ascend 97), Now Software (Now Synchronize for Windows and for the Macintosh), and Symantec (ACT!). Windward has developed a number of applications for the PalmPilot device itself, including Franklin Covey's Tasks application for the PalmPilot. Windward has created developer tools and games for the PalmPilot. Our RTAccess(tm) developer toolkit allows developers of database-based applications to quickly and easily integrate those applications with the Pilot, including full data synchronization support. And our BlackJack and Blocks games are among the most popular on the Pilot today.
- Dominique Hugo is a developer in Belgum. He has written a program to count the points for the tennis players (with visual court) and is now working on a C interpreter running on the Pilot and DOS. He has also made an Help File (in .HLP format) with hyperlinks containing all the functions of the operating system linked with Borland C++.
- David Haupert of D.H. Software has written Thesaurus/Spellcheck, Translate, Hangman, Wheel of Treasure, WPM and Eliza for the Pilot and is also available for contract work.
- HGL is a specialist electronic hardware and software design services company of about 20 people specializing in Pilot development, Windows apps development and electronic hardware development. We particularly specializes in mobile workforce solutions using the Pilot and CDPD and have over a dozen Pilot apps under our belt. HGL is certified to ISO9001, is a Microsoft Solution Provider and is the leading company in this field in Australia. We have clients in New Zealand, Australia and USA. Contact Phil Holliday by email, or call +64-3-365-4120 or FAX +64-3-365-4121.
- Pen Computer Solutions, Inc. does custom programming for the PalmPilot, Palm III and IBM WorkPad for companies and government agencies that want to put their own form(s) on the PalmPilot for field data collection. This means that the applications are the property of the client and not for resale, i.e., not shrink wrapped software. Contact Tom Teates or call (301) 929-1151.
- Incisoft ® International develops software for mainly Win95, Unix platforms, and now also *Palm Pilot*. Many of them have found their place in the industrial engineering scene, mainly in the Netherlands, Belgium, Switzerland and US. In cooperation with some industrial hardware developers, we can provide full industrial automation systems, but we remain to be a software engineering business with interest in desktop automation, internet software, web design and graphic design. Send e-mail to F.Inci@twi.tudelft.nl for more info.
- Green Mountain Software is a small "boutique" custom development shop located on the Shores of Lake Champlain in Vermont specializing in developing vertical market applications for handheld computers - specifically for Palm Pilot, Windows CE and Newton platforms (and corresponding Windows 95/NT applications). Specific strengths include user interface design, communications (serial, dial-up, IrDA, RF and Internet TCP/IP, SLIP/PPP and LAN), systems integration and custom hardware interfaces. Contact Ann Pettyjohn via email or with voice at (802) 865-2728 or Fax at (802) 865-2468.
- Bachmann Software and Services, develops commercial-quality software for the Palm Pilot and Windows CE platforms, as well as MS Windows, the Internet and handheld/mobile computing platforms in general. Since 1985, we've developed the software that runs businesses on thousands of desktops worldwide. We also offer services in project planning, internet/web applications, Windows SDK development, relational database design, and training. Contact us at firstname.lastname@example.org or call us directly at (973) 729-8628.
- Gery Engineering (HA) Ltd. Is a small development business (5 programmers / Engineers) in Isreal. Contact: Nahariya Hertzl str. 93 22100 ISRAEL.PO.B 363 TelFAX +972 4 9926517.
- Intrepid Software Solutions, Inc. has several pilot titles on the market, including PalmJournal, AreaCodes, and PeriodicTable. We do contract development for PalmOS and Windows (95, NT), Unix (Solaris, Linux, SCO, AT&T, etc.), OS/2, DOS. Email to email@example.com
- Common Sense are the authors of the shareware program WorldMate. A great program for the world traveler. We emphasize on the best user interface you can imagine. We are committed to the palm computers as we see the our and the world's future in it. Contact Ramel Levin.
- HandTop Software performs Palm-OS development, and the Windows 95 components to compliment the Palm-OS. We are looking for contract projects in several industries. We have people working on a solution for insurance pricing, TopQuote(released), another group working on a real estate listing program, HomeFinder(pending), and a warehouse/grocery store inventory system, TopPick(pending). HomeFinder and TopPick include graphical mapping capabilities. TopPick is based on the SPT-1500 barcode unit from Symbol. HandTop specializes in mobile sales force applications, but we have diverse people with Oracle, IBM, and Allen-Bradley experience. Contact Sam Huelsdonk(president) at 877-HANDTOP or Sam@HandTop.com.
- Noblestar was formed in 1987, and is comprised of over 400 experienced professionals who have successfully implemented and delivered information technology solutions to Fortune 500 companies, Big 6 firms, financial institutions, Federal, state, and local governments, universities and national associations. Our Mobile Computing practice specializes in custom PalmPilot applications, as well as integrating enterprise data onto the PalmPilot through our Scout technology. Scout is a server-based synchronization system for the PalmPilot. With Scout, you can synchronize the PalmPilot with various collections of enterprise data, such as Lotus Notes and Microsoft SQL Server, using a network connection (TCP/IP). With Scout's open architecture, enterprises can leverage the current programming skills of in-house developers by creating custom conduits to synchronize custom enterprise data between the PalmPilot and the server. Contact firstname.lastname@example.org
- WHITEHORSE DEVELOPMENT LLC is a Silicon Valley-based consultancy focused solely on Palm-OS application development. The founder is a Stanford MBA and Caltech engineer with a dozen titles shipped on various platforms. We are in active development of Palm apps for a major publisher, and seek further whole-application projects with serious publishers and vertical clients. Call (650) 562-1900 or email Bill Mitchell at email@example.com for further information.
Getting Started with GCC
For Windows users, you need to download the GCC installation wizard which has everything you need. It's a big download (15MB) so don't do it when you're in a hurry. You can download the files you need from Ray's Software Archive. Use the Quick search feature to search for GCC. This will point you to a directory where you need to download nine files. Expand each of these files into it's own subdirectory in a temp directory (e.g. C:\TEMP\DISK1, C:\TEMP\DISK2, etc) and then run SETUP.EXE from DISK1. When you get done, you'll have a complete setup. Check GCC Setup for things to be aware of.
For Un*x users (or anybody else interested in GCC), you need to download the appropriate sources from ftp://ryeham.ee.ryerson.ca/pub/PalmOS. This is the official GCC-Pilot archive. There are several other mirror sites around the world as well. I haven't set up the Un*x version myself so I don't know if any changes are needed but you should at least read GCC Setup to see if anything applies.
If you're planning to use this product, you should check out Visual Forms Designer. This is a visual tool that combines a forms designer and IDE for the GCC compiler into one easy to use package. I haven't tried this out, but it looks very cool. It's shareware, so give it a try.
There's another IDE in progress that you should also consider at http://home.sol.no/~chrfalch/palmpilot.htm.
There is also a CD in beta now that will be a little easier to install (same code). The CD can be ordered from The Silver Hammer Group.
You must also check out Andrew Howlett's Home Page. This is the definitive source for all GCC related documentation.
Getting Started with CodeWarrior
Metrowerks software's CodeWarrior is a commercial product so you buy a CD and install it and let fly. The new version that's probably available by the time you read this should have good installation instructions and an appropriate tutorial. You can check out the CodeWarrior FAQ for more information.
If you don't have a Pilot yet, check out the PalmPilot bundle that combines a PalmPilot professional and CodeWarrior into one discounted package. The price on the PalmPilot is nothing to write home about, but the whole package may come out to a better price than getting the best price you can get on the PalmPilot and then buying CodeWarrior.
You can call MetroWerks at 800.377.5416, or FAX at 512.873.4901 or send Mail.
If you want to save some money, CodeWarrior is available for less than the list price of $369 from distributers. Two that come to mind are PDA Direct and ProVantage. Both have it for less than $300.
Once you have the CodeWarrior CD, go to my Setting Up CodeWarrior page for some additional setup tips.
Getting Started with JFile
Download JFile from one of the usual download sites. My favorites are Ray's USR Pilot Software Archive, PilotGear, or Stingersoft Pilot Software Archive.
JFile works in standalone mode if all you want to do is collect the data and use it on your Pilot. If you want to link the data with a PC database or view the data on a PC, you'll also need the Generic Conduit Manager which you can get from the same place. Once you have those, all the instructions are in the JFile zip.
Once you start using these, be sure to register them to keep the developers going.
Getting Started with QuickSheet
QuickSheet is commercial so you'll need to purchase it from the web site or by phone at 972.378.1300 or 800.991.7360 (US Only) or by FAX at 972.403.1040 or mail.
Getting Started with Pilot Forms
You can download a demo version of PilotForms from the usual download sites that has a sample database. This will give you an idea of what the product does but only a thin idea because it doesn't have anything but the Pilot side of things.
Once you're ready to move on, go to the PilotForms Home Page to get more ordering information or call them at (847) 816-9660, FAX at (847) 816-9710 or send mail.
Getting Started with Satellite Forms
Satellite Forms is a commercial product. You can find information about it and ordering information at the Satelite Forms Info Page, or by phone at 561.995.8920 or FAX at 561.995.8921 or you can send mail.
Getting Started with Jump Java
Download Jump from Greg Hewgill's Pilot Development Tools home page or from the usual download sites. You'll need to read the installation instructions that accompany the installation as it currently requires the Java JDK 1.0 but I expect this to change very soon so anything I write will be out of date immediately.
If you are using the Microsoft Visual J++ environment, you may want to check out the Jump wizard by Nico Seessle. I haven't tried this but it looks like an easy way to set up your MSJ++ project.
Getting Started with ASDK
Download the ASDK zip file from Darrin Massena's Pilot Software Development page and read the references. It lists a bunch of references that you will also want to download but I don't see any point in repeating them here.
Getting Started with CASL
You can download a cripple-ware version of CASL from one of the usual download sites. My favorites are Ray's USR Pilot Software Archive, PilotGear, or Stingersoft Pilot Software Archive.
Check out their home page at CASL Home page and in particular read the FAQ.
Once you decide you like you'll need to purchase it from theCASL Home page, or you can call them at (215) 362-8109, FAX at (215) 361-3523 or Mail.
Getting Started with CBasPad
Download CBasPad from one of the usual download sites. My favorites are Stingersoft Pilot Software Archive, Ray's USR Pilot Software Archive, or PilotGear.
You'll also need the Generic Conduit Manager which you can get from the same place. Once you have those, all the instructions are in the zip file.
Go Back To Wademan's Home Page