Programmers Corner: The New and Improved HP Palmtop Developers Guide

Programming is fun and can be lucrative If you're thinking about writing software for the HP Palmtop, this book has the information you need to know.

By Ed Keefe

The HP 100/200LX Developers Guide is a book packed with information about the inner secrets of the HP Palmtops. It is intended for software and hardware developers who want to create products for the HP Palmtop computers. The original edition was available only to those who had been accepted into the HP developers program. The original guide, along with a computer disk containing proprietary software, was provided gratis by HP. The Revised Edition of the Developers Guide, out since October 1994 and still referred to as a preliminary copy, supersedes the initial release and is available to the general public. It comes with a disk full of software and costs $75.00.

 This article presents an outline of the Revised Edition with as much detail as space allows and indicates which parts of the Guide are new or improved. No attempt has been made to assess the accuracy of the information in the Guide.

Overview of the Palmtop from a programmers perspective

For those thinking of developing software for the HP Palmtops for the first time, here is an overview of the machine from a programmers perspective.

Think of the HP 100/200LX as a miniature PC XT computer that uses an Intel 80186 microprocessor and comes with MS-DOS 5.0 built into the Palmtops ROM memory. 5.0 is the last version of MS-DOS that will be able to be built into ROM memory.

The non-backlit, LCD screen has a pixel count of 640 X 200 and emulates a CGA screen with four gray scales. The keyboard uses extended keycodes and is software driven rather than driven by a dedicated controller. The machine does not support EMS/XMS memory. It comes with either 1MB or 2MB of RAM which may be partitioned between working RAM and an Edisk, designated as the C drive. The Palmtops have one PCMCIA Type 2 card slot, a standard serial port (COM1:), and an infra-red transmitter-receiver, but no parallel port.

The HP Palmtops feature an extension to MS-DOS: Lotus System Manager, which lets a user task-swap between various built-in programs at the touch of a hot-key.

Three levels of programming

Three levels of programming may be employed for the HP Palmtops.

At the first level you can leverage the fact that the HP 100/200LX emulates an Intel 8086, DOS machine. So if your programs run on a PC XT computer, they'll most likely run on the 100/200LX. Even some TSR programs and device drivers will run. However, TSRs that write to a text-mode screen can't pop-up over the built in software which uses a graphics-mode screen.

At this level of programming, you can use any computer language. C and Assembler programmers may write programs that use any of the memory models common to Intel-based machines. Many people have written generic DOS programs for the 100/200LX without referring to the Developers Guide.

The second level of programming involves writing programs that have the look and feel of the built-in applications. Such programs will have a .COM or .EXE extension but will emulate the graphical user interface of the Palmtops. Here too, almost any computer language will work as long as it supports CGA graphics. As of this writing several C programmers are working on function libraries that emulate those provided by HP. (For more information on this, see the PAL article.) So for this level of programming the Developers Guide would be optional.

The third level involves creating programs that rely on the Lotus System Manager Application Programming Interface (API) and the Lotus Handheld API (LHAPI). For this level of programming, you will need the Developers Guide. HP also recommends using Microsoft C 6.00 AX and/or MASM 5.1 as programming languages. Other compilers may get the job done, but none of them have been tested by HP or Lotus and the Developers Guide doesn't support them.

At this level of programming you can access code that is built into the Palmtop, making your job a little easier. Your programs will be able to task-swap with the built-in applications and may even have some of the features of the built-in database engine.

The restrictions are that neither your code or your data segment may exceed 64K. And you can't use the standard argv, argc, or env variables.

In this type of programming you develop a working .EXE program using C. When you've completely debugged the code, you run a program called E2M.EXE to convert an .EXE program to one that ends with .EXM. This will make your program System Manager compliant.

Programmers who are familiar with event-driven programming like that used in Windows, will be at a distinct advantage. Procedurally oriented programmers will have a moderately steep learning curve. Object oriented programmers will probably experience confusion and disappointment.

The Developers Guide refers to objects, classes, and messages. However the terms are used in a non-standard fashion, certainly not the same meanings given to these terms in modern C++.

What's in it for you?

The Developers Guide is strictly a reference manual. It does contain some computer code, but in no sense is it a how to manual. It assumes familiarity with the C programming language and/or PC Assembler. The hardware section of the manual assumes that you're able to read block diagrams and can interpret electronic specification charts.

A partial list of the Developers Guide Table of Contents is found in the sidebar below.

How new is new?

To evaluate the Revised Developers Guide, I put it along side the initial version and spent the better part of three days comparing them.

The first thing that caught my attention was the improved appearance of the revised document. Gone are the smudged pages, the barely legible handwritten notes, the rubber-stamped dates, the upside down pages, and the DeskJet printer font.

The new edition uses a LaserJet (or typeset) font that produces more white-space per page. There's a new Table of Contents and a relatively complete index. All the pages are numbered in a single sequence rather than in chapter-page format.

The next thing that raised an eyebrow was that some of the text material in the BIOS interrupt chapters is missing from the Revised Edition of the Guide. Its hard to tell if this is an oversight or if it was done intentionally. Much of the missing text was superfluous anyway.

Also gone are all allusions to Cougar and Jaguar, and there is only a brief mention of the Lotus Resource Editor (REDITOR).

The first new material in the Guide starts on page 152. For the next forty or so pages there is a wealth of material dealing with System Manager Task Control Blocks (TCBs) and Intertask Communication (ITC). There is also a large amount of text devoted to writing normal TSR programs as well as function calls for writing special TSRs that will be started by System Manager or by a third-party application. Such TSRs have the extension .TSR and are usually put in the C:\_DAT directory.

This new section ends with some tips on developing a System Manager compliant application, and a page of time-sequenced memory maps of System Manager in action.

Another new section of the Guide (pages 239 to 245) deals with System Manager Event Management Services.

The section on Database formats (beginning on page 376) also appears to be new. However, much of this material has been made available in electronic form. Some of it even made it onto last years HP Palmtop Paper Subscribers Power-Disk.

The section on DOS is new to the Revised Edition, as is the section on PCMCIA cards.

Who needs the Developers Guide?

If you're a developer new to the HP 100/200LX you may be wondering if you need the Developers Guide. On the other hand, if you're experienced at Palmtop programming, perhaps even a member of the HP ISV club, you may be wondering if you should spring for the new revised version of the Guide. Here are some guidelines that may help you with these decisions.

If you're a chips and dips kind of person who wants to develop a hardware add-on for the HP 100/200LX then you'll absolutely need the Developers Guide. Its the only known source of information about the pin-outs and power requirements of HP Palmtops.

If your job or the fulfillment of a software contract depends on your designing System Manager compliant software for the HP Palmtop, then by all means get the Developers Guide. You can probably get your company to pay for it or you can charge it back to the contractee.

Or if you're a semi-professional programmer who has an application that may sell hundreds or thousands of copies, you will probably find the Guide useful indeed. The more your application adheres to the look and feel of the Palmtops built-in software, the more likely it will appeal to the typical Palmtop user.

However, if you just want to try your hand at programming something for the HP 100/200LX, you might want to take a less expensive route and use one of the shareware/freeware C function libraries such as PAL (available in the HP Handhelds forum on CompuServe). Remember, a single DOS application can be made to swap back and forth with the built-in applications. You may not need full System Manager compliancy.

And finally, if you're not a C programmer, forget about the Developers Guide. By the time you learn C and master the art of event-driven programming, the HP 200LX will have been superseded by the next generation of Palmtops, and will have gone the inevitable route of the out of date computer.

What's in the Revised HP Palmtop Developer's Guide

Files on the Developer's Disk

HP Palmtop Developers Guide Ordering Information