|
|
|
|
|
|
|
|
HANDHELD CONNECTIONS
How to generate Doc files for handheld devices from Notes
By Mark Lawson
If you've ever used a Palm Computing device, you're probably familiar with Doc files. Files saved in this format can be easily downloaded and viewed on your Palm device using one of many popular Doc viewer applications. Users of Windows CE devices can also view Doc files using the DOCview application.
This article shows you how to easily create uncompressed Doc e-text databases using just LotusScript. For many users this well-supported format, derived from the original program by Rick Bram, is their first choice for storing reference information, articles and even whole books on the Palm device. Once installed, Doc databases can be read by a variety of programs such as AportisDoc or TealDoc and can include formatting, bookmarks and even pictures depending on the chosen reader. Now there is even an editor called QED. A word of warning however, Palm devices have small amount of memory (1-4Mb) and little 160x160 screens; you may have to be inventive.
Doc database structure A Doc database is actually a format-within-a-format, wrapped up inside a standard Palm device PDBPDB database. To keep this article short we've omitted a detailed account of the PDBPDB and Doc header fields but we've included a more detailed description in the accompanying example. After the PDB header and the offset list (easy in this case as the records are all defined lengths) the first record in the database is the Doc header. This simply holds the version; 1 for uncompressed in our case, and the number of 4096-byte records which then follow in successive records.
A simplified view of the Doc-PDB format as shown in Table A. An interesting feature to note is the 2-byte padding. Although not actually part of the format, the 2-byte pad is necessary for the file to install properly.
| Pdb Section |
Bytes |
| Pdb Title |
32 |
| Pdb Header |
48 |
| Record Offset 1 |
8 |
| Record Offset 2 |
8 |
| Record Offset N |
8 |
| Padding |
2 |
| Record 1 Doc Header |
16 |
| Record 2 Doc Data 1 |
4096 |
| Record N Doc Data N-1 |
4096 |
LotusScript and Palm device idiosyncrasies There are a couple of hurdles to overcome before writing the file:
- The DragonBall processor in any Palm unit expects data to be presented in a byte-swapped (MSB) format, so on Intel PC's you need to do a reversal (e.g. B2-EB-77-F4 is reversed to become F4-77-EB-B2). I've written Back4() and Back2() to handle this for 4 and 2 byte values using the simple Hex$() and CLng() functions rather than binary math. If you own a Mac, you'll have to change the code for Back4() and Back2() in the script library since the Mac's processors (also Motorola devices like in the Palm device) don't need the reversal.
|
|
|
|
|
|
|
|
|
|
|