RPN2PDB, version 1.0 for Windows 95 and Windows NT
Copyright(c) 1997, Marvin E. Wilborne III, all rights reserved.

This is a tool for Developers of RPN function sets for Russ Webb's RPN.  I
don't make any attempts to explain how to program RPN using the scripting
language since that is left up to the reader to read the RPN documentation
available at Russ' web site.

RPN2PDB creates a PDB file from a text file that has RPN byte codes that can
then can be HotSynced to the PalmPilot and extend the capabilities of
Russ Webb's RPN calculator (which is seperately registered shareware
available from:  http://kale.ee/cornell.edu/pilot/)

Why would you need this program?  Well, first of all, the current
implementation of RPN, version 2.32, uses the clip board to import byte codes
using cut and paste.  The cut and paste operation on the PalmPilot is limited
to 1024 characters.  So the maximum function set size is 1k.

The problem with the 1k limit is that it limits your ability to comment your
code.  The functions I've written for Sun Rise and Sun Set times have no
comments because the code barely fits in 1k.  This program is a result of not
being able to completely develop the functions as desired due to the 1k limit.

If Russ extends the capabilities of RPN so that it works with a full record
in the memo database, then you still have a limit of 4k.  Here again, comments
in your code will take away from useable byte code space.

This program removes that limitation completely by allowing you to compile
large text files of byte codes into PDB files that can be hotsynced directly
into the PalmPilot, extending RPN.


Operation
---------
Operation of the program is fairly straight forward.  The file is distributed
as a single EXE.  You can put this anywhere you like on your hard drive, and
you can create a short cut on your Start Menu for it, if you like, or you can
invoke it from the DOS prompt, using:  START RPN2PDB <ENTER>

The program requires 4 fields to be populated to convert an RPN text file to
a PDB file.  The first field is the Input File, which is the RPN text file you
want to convert.

The second field is the Output File name, which is the PDB you want to create.
You can type in the name, or use the Save button to select an existing file
you want to overwrite.  Please note that no warning is given that you're going
to overwrite an existing file.

The third field, going along with Russ Webb's standard for distributed PDB's
is for your initials.  3 are required.  If you only have two or one, make up
something.

The forth field is for the PDB file name.  You get to put an additional 23
characters here for the file name.  You have to have at least 1 character
in this field.  The goal is that your initials and the 23 additional
characters here will create a unique PDB file.  However, it is your function
set title in your RPN byte codes that really needs to be unique when you
hotsync the PDB to your PalmPilot.  The PDB file name is only critical if
you're hotsyncing several PDBs at the same time.  Once the file is hotsynced
it becomes part of the principle RPN file that is saved in the backup database
directory of your computer.

When you're done converting RPN files to PDB files, press the Exit button to
exit the program.

A limited amount of on-line help is available by moving the mouse over the
button, field or label on the RPN2PDB form.


Known Limitations
-----------------
The first line of the RPN text file has to be the RPN identifier.

For example:

        RPN.2.g \ everything past backslash is a comment

The #2 says that this RPN script is a version 2 script, and g is the number
of local variables used by the function set, i.e. 7 in this example.

This version of RPN2PDB doesn't allow you to change the size of the Button
Palette using the -8 to +8 settings on the first line of the RPN code.

The program doesn't generate a warning when you're about to create a PDB file
overtop of an existing PDB.  This will be fixed in a later release.

The shareware version of this code, i.e. if you haven't paid for it, doesn't
work with output files that are larger than 512 bytes.  However, it does work
with large input files where most of the largeness is caused by comments.
Comments are removed from the output and don't count against the output size.


Furture Enhancements
--------------------
Support for changing Button Palette size

Support for running this program from the command line.  This will allow
other uses of the program, such as the tail end of a compiler that takes the
compiled bytecodes and generates the PDB file.  I am working on an HP RPL
to RPN byte code compiler that will make use of this program in just that
way.  Other stack oriented languages, such as Forth, could be ported in this
way.

Byte code optimization.  I have prototyped this application and there are
several ways to minimize the number of byte codes used by an application.  So
this would allow you to optimize size over speed.


Registering
-----------
Why should I register?  There are several reasons.  Most significantly is the
removal of the byte code limitation of 512 bytes.

With the registered version, I also have a PDB to RPN disassembler or byte
code extractor that creates a file that can be converted to a PDB, or you
may want to see how other functions are written.

The registered version includes all of the registered function sets that I've
developed for RPN.

What does it cost to register?  The cost is $15.00 US.  You can register by
sending a check drawn on a US bank to:

        Marvin E. Wilborne III
        124 Matthew Circle
        Danville, VA 24540

or, you can register on-line using your credit card at PilotGear by going to
this web site:

        http://www2.viaweb.com/pilotgearsw/allap1.html

or you can call PilotGear at:  1-800-741-9070


Legal Information
-----------------
This program is copyright  (c) 1997 by Marvin E. Wilborne III and
is distributed AS IS and without warranties of any kind, expressed or implied.
Use it at your own risk.

This program RPN2PDB.EXE and the accompanying documentation, RPN2PDB.TXT may
be distributed only in it's original unmodified form.

All rights are reserved.
