Last updated August 26th, 1999. See the Parens Information web page for the latest version and registration info, the Parens Plugin Info Page to download the latest Parens plugin modules and get info on writing your own, or send email to rhuebner@probe.net.
This is the calculator that should have come with your PalmPilot. Parens is a complete general-purpose calculator which provides proper order of operations (1+2*3=7, not 9), any number of parentheses, and 14 significant digits of precision displayed in floating point, fixed point, scientific notation, or engineering notation format. It includes a complete set of basic math keys such as exponents, roots, logarithms, and trigonometry in degrees, radians, or grads. It has simple statistics such as mean and standard deviation, with convenient data list editing. Parens also provides date & time calculations, and supports mixed-units calculation and conversion of weight, length, volume, or any other user-defined units. There are 10 memory registers, plus a user-definable list of mathematical constants. And if all that isn't enough, it also supports a plugin module interface to allow you to add in custom buttons created by yourself and others.
There are two separate versions of the Parens application program provided: ParensSA.prc (Stand-Alone) and ParensML.prc (MathLib). You should only install one of them; which one will depend on which PalmPilot OS version you're running, and how much memory you have available.
Once you've decided, just use the Install Tool of your PalmPilot Desktop software package to install either ParensSA.prc or ParensML.prc (and possibly MathLib.prc) onto your PalmPilot.
Don't forget to update the currency conversion values before using the Currency mode. The default values provided are those that were in effect when the program was released, which may have been months ago by the time you read this. If the currencies you need are included in the default set provided (and you're using Palm OS 2.0+), you can delete the outdated Currency mode that was provided and download an up to date Currency mode plugin module to replace it. This plugin is updated every business day using official US Federal Reserve Bank rates, so you can download a current copy at any time. If your needed currencies aren't included, or you need to use a different rate table, you can modify the default Currency table yourself. Use the Export a Mode command in the Program menu to export the Currency table to the Memo Pad, edit the currencies and/or conversion factors in the Parens Currency memo, and then Import the Currency definition memo back into Parens to update the settings. See the Programming & Customization section below for more details.
For OS 1.0 users I also recommend SilkHack by Jeremy Laurenson, which allows you to launch your choice of up to 16 different applications from the 4 silkscreened buttons. OS 2.0+ users can use the built-in PalmOS Preferences settings to make the Calculator button launch Parens.
MathLib is a free shared library that can be used by any OS 2.0+ PalmPilot program that needs IEEE 754 double precision math functions. It's distributed under the terms of the GNU Library General Public License, and is freely available with full source code and documentation at the MathLib Information web page. It's not a part of the Parens program, and you're not paying anything for its use; a copy is simply included in this archive for your convenience.
If you decide to uninstall Parens, just use the standard Memory application built into the ROM to delete it and any Parens plugin modules you've installed. All of Parens' associated data such as memory registers and statistical data will be automatically deleted when Parens is deleted.
Please (re-)read the Installation section above. You should only install one of the provided Parens program files, either ParensSA.prc or ParensML.prc, not both. If you're using ParensSA.prc, there are no trig functions, and they will always be grayed out. If you're using ParensML.prc but the trig functions are grayed out anyway, you don't have MathLib installed (or it's broken somehow). To get the trig functions, you must use ParensML.prc and MathLib; to use MathLib, you must have OS 2.0+.
You probably already know how to use Parens, without even bothering to read any of this. It works just like any other standard non-RPN scientific calculator you've used before, and will hopefully be intuitively obvious to you. Rather than exhaustively describing every button and feature, I'm just going to mention those items which are somewhat unique or unobvious.
The bottom four rows of buttons on Parens' keypad are the primary keys which always need to be available, no matter what you're doing. The top two rows of keys change according to the currently selected operating mode (see list at left), which you can select using the leftmost dropdown list just below the display. You can also cycle through the different operating modes by pressing the page up and page down buttons on the bottom of your PalmPilot. Any functions which are unavailable due to lack of MathLib or whatever (see Installation) are grayed out and disabled.
Parens uses the proper decimal mark character as defined in your PalmPilot's Preferences number format setting. It'll display numbers in either "1,234.56" or "1.234,56" format as appropriate, and will provide a comma key instead of a point key if needed. Unfortunately, Palm didn't include any blank or apostrophe character in the large number font used for the display, so I can't provide the "1 234,56" and "1'234.56" formats. Instead, Parens will use the most closely matching of the two supported formats.
Also, the decimal mark key does double duty as the EEx (Enter Exponent) key for entering scientific notation values such as 1.23e+45. When you press it the first time, it enters the decimal mark into the display and then magically changes into an EEx key. This was done to help me cram all the primary keys into the bottom four rows of buttons.
Along with the keypad, Parens also recognizes the following Graffiti characters: 0 through 9, "," or "." as appropriate, e or E, +, -, *, /, =, (, ), s or S for change Sign (since - is used for minus), and c or C for Clear. You can also copy & paste numbers directly to or from the display using the Edit menu.
Parens can also set a temporary constant for repeated operations using the same value. This can be used with any mathematical operation that operates on a pair of values, including +, -, *, /, x^y, y root of x, and modulo. To use this mode, enter the number to set as a constant and press the desired operation key twice. The traditional "K" will light up under the lower left corner of the display to indicate that a constant has been set. Now enter any value and press equals, and Parens will calculate the answer as if you had pressed the repeated operation key and reentered the stored constant value before pressing equals. For instance, if you press "2**", whenever you enter a number and press equals, Parens will calculate "x*2=". If you press "4[x^y][x^y]", entering a number and pressing equals will compute "x^4=". Temporary constant mode is canceled whenever any other mathematical operation key or Clear is pressed.
Doing anything silly or illegal such as dividing by zero will make Parens lock up in error mode. "-e-" will be displayed, and all keys except Clear will be disabled. This is to make sure you notice the error and start your calculation over again instead of possibly missing the error message and plunging on ahead to reach an incorrect result.
Parens provides a complete selection of display formats. While doing normal floating-point math, the middle drop-down list allows you to select between Float, Fixed, Scientific, and Engineering formats. The Float format automatically adjusts to display the maximum possible number of significant digits without any extra zeros. The other formats display however many digits you tell them to, as indicated by the (x) suffix (e.g. Fixed(x)). To select the number of digits to be displayed, just enter the number before selecting the desired format. For example, press 2 and select Fixed(x) to display all values in Fixed format with 2 decimal places. If you don't enter a number of digits before changing the display format, Parens keeps using the last specified number of digits.
While in the Logic mode, the display format list selects the number base (radix) to use. See the Logic section below.
TVM is the standard financial jargon acronym for Time-Value of Money, and is used for computing the effects of compound interest in loans, savings accounts, mortgages, pension funds, annuities, etc. To use the TVM function, you must set the values of 4 out of the 5 TVM variables: PV (present value), FV (future value), Pmt (payment per period), APR (annual percentage rate of interest), and N (number of payments). The number of payment periods per year must be set in the P/Yr variable. Once you've entered these values, you can tell Parens to solve for the remaining variable. To set a value for a variable, enter the number and tap the appropriate variable key. To solve for a variable once the others have been entered, tap the Graffiti area once to put the PalmPilot into Punctuation Shift mode (a big dot will appear in the upper left part of the display) and then tap the variable key to solve. Once you've entered and/or solved for all the variables, you can easily play around with different loan parameters by changing one or more values and then re-solving.
For example, to compute the payment required for a loan of $1000 dollars at 7% annual interest paid in 12 monthly payments, enter 1000[PV] 0[FV] 7[APR] 12[N] 12[P/Yr], tap for Punctuation Shift mode, [Pmt]. The result is -86.53. Negative numbers indicate payments you make, while positive numbers indicate money you receive. Now to see how much the same loan would cost if repaid over 18 months, just enter 18[N] dot-shift[Pmt] to see the result of -58.68.
You can also recall the current value of a variable without solving for it by drawing a slash from the upper left to the lower right corners of the Graffiti alpha area to put the PalmPilot into Extended Shift mode (a slash will appear in the display) before tapping the variable key to recall. Finally, you can tap the Edit key to bring up a text display of all the TVM variables at one time, where you can edit them using Graffiti instead of using the calculator keypad. You can solve for a variable in this display by erasing the value in one of the number fields and then tapping the Solve button. There's also an option on this page to select "Begin" or "End" mode for all TVM calculations. Normal loans are computed in "End" mode, meaning that a payment is made at the end of each payment period. Some kinds of annuities and other strange beasts are paid in "Begin" mode, where a payment is made at the beginning of each payment period; this selection allows Parens to swing both ways.
Once you've filled in and solved all the TVM variables, you can tap the Amrt (amortization) key to display a nifty amortization schedule showing how much of each payment will go towards paying off the loan (principal), how much will go towards interest, and what the remaining balance will be after each payment. Check the box at the bottom to see how much total principal and interest will have been paid so far after each payment. Note: Parens uses a full-precision idealized computation for the amortization schedule, rather than rounding the payments to whole cents. The listed values may vary by a few cents from a given loan's actual payment schedule over time, due to the various ways that different lenders handle rounding the amounts. Also, due to the extremely tight space requirements on this display, Parens will always display this list in Fixed(2) format regardless of your main display settings. I recommend that users who work in Lire, Yen, or other "integer" currencies divide their monetary input variables by 100 to cram as many digits as possible into the display.
The "%" key computes what a given percentage of a value is, e.g. "5[%]20[=]1", or "5 percent of 20 is? 1."
The "%?" key computes what percentage one value is of another, e.g. "1[%?]20[=]5", or "1 is what percent of 20? 5."
The "delta%" key computes what happens when a value is changed by a given percentage, e.g. "10[delta%]20[=]12", or "10 increased by 20% is? 12." This is sometimes known as a "markup" key. You can also specify a negative percentage to act as a "discount" key, e.g. "10[delta%]20[+/-][=]8", or "10 decreased by 20% is? 8."
The "delta%?" key computes what percentage change was required to get to one value from another, e.g. "12[delta%?]10[=]20", or "12 results from changing 10 by? 20%." This tells you what markup or discount was applied.
This mode is used for performing computer-style integer arithmetic and bit manipulation functions. Select the current number base (radix) from the center drop-down menu, and select the current integer size from the right drop-down menu. "Bin" is binary (base 2), "Oct" is octal (base 8), "SDec" is signed decimal (base 10, 2's complement format, most significant bit is the sign bit), "UDec" is unsigned decimal (base 10, no sign bit), and "Hex" is hexadecimal (base 16). Parens disables any digit keys which aren't valid in the current number base, and will prevent you from entering a value which is too large for the current integer size. You can switch back and forth between different number bases and integer sizes to see what the current value would be in those formats without altering the actual value stored in the calculator, but if you press an operator key to make use of the value, it'll be truncated to fit the current size before being used.
Since the LCD font that Parens normally uses doesn't have any letters, Parens will switch to the Large text font while in Hex mode. Also, if you select Binary DWord mode, Parens will switch to the Standard font in order to cram as many digits into the display as possible. Note that there's a small problem in this mode; there's only enough room in the display for the least significant 31 bits of the DWord. I didn't want to go to all the trouble of adding a scroll bar (and making room for it) just for this one weird case, so if you really have to use Binary DWord mode, you'll have to switch back and forth between number bases to see the leftmost bit. If I really thought people would use this, I'd worry more about it, but I can't imagine why anyone would want a tiny display crammed full of bits when you've got octal and hex modes available.
And, Or, Not, and Xor are all pretty obvious. "LSL" is Logical Shift Left (shift and fill with zeros) and "LSR" is Logical Shift Right. These are 2-argument operators, not one-key functions; enter "5[LSL]4[=]" to shift the value 5 leftwards by 4 bits. Note that when you select signed decimal format, the "LSR" key changes into an "ASR" (Arithmetic Shift Right) key to indicate that the sign bit will be propagated rightwards in signed mode.
The "+/-" (change sign) key performs 2's complement negation while in Logic mode. For example, "1" would change to "FFFFFFFF" hex, which is the proper value for -1 in the standard 2's complement signed integer format used by the great majority of modern computers. This is the same as doing "1[Not][+]1[=]".
The Store, Recall, and Constant keys all display their values using the current number base and integer size, so you can see what value you'd get if you Recalled a memory register while in Logic mode. The actual value in the memory register is not modified by viewing or Recalling it, only by Storing, so when you switch back to floating-point mode you'll see that the original contents of the memory registers are still there. Displaying the memories and constants in the current number base is useful for storing some kinds of constants, such as hexadecimal bit masks. Generally, it's best to use a memory register or constant only while in the same mode (integer or floating-point) as when it was stored or defined, but if you want to see what the speed of light is in hex, go for it.
Parens stores up to 200 values in its statistics memory. You add new values to the end of the list by entering them on the keypad and pressing the "E+" key (please pretend the E is a sigma; I don't want to mess with fonts here). To change or delete a value from the list, or simply to review the current list contents, use the "Edit" key. You can clear the entire statistics memory in one step by using the Clear Statistics menu command. The sum, average, and standard deviation keys are disabled when the statistics memory list is empty.
The Rand key calls the OS function SysRandom(0) to provide a random integer from 0-32767, which Parens then divides by 32768 to generate a random fraction between 0 and .99997. This is good enough for casual use, but doesn't give enough random significant digits to provide fine granularity over large ranges. Also, no provision has been made for entering a specific seed to allow reproducible sequences.
The "x!" key can calculate the factorial of any integer value from 0 to 170. Any values outside this range, or those with a fractional part, will cause an error. Since the "Comb" (combination) and "Perm" (permutation) keys use factorials, they also have the same limitation.
The "Now" key returns the current date and time in the format YYYYMMDD.HHMMSS (year, month, day, hour, minute, second). The "Days" key translates a date and time in that format into a number of days since January 1, 1904. This is useful for doing date arithmetic, such as calculating the difference between two dates. The "Date" key translates a number of days since 1-1-1904 back into the readable YYYYMMDD.HHMMSS format. The "Wkd" (weekday) key computes the day of the week that a number of days since 1-1-1904 would fall on, with 0 = Sunday through 6 = Saturday. The "Hrs" (hours) key translates a time in HH.MMSS format into a fractional number of hours, for doing time arithmetic. This is also useful for converting a number from degrees, minutes, seconds format into fractional degrees. The "Hms" key translates fractional hours (or degrees) into readable HH.MMSS format.
Parens can easily convert time, weight, length, and other values from one unit to another. Just enter the value to be converted, press the key for whichever units the value is currently measured in, and then press any other units key to convert to those units instead. The last selected units key remains grayed to show what units are being used by the displayed value.
Parens can also perform many kinds of simple mixed-units arithmetic. It doesn't handle compound units such as meters-per-second of velocity, but it will let you solve simple problems involving multiple units of the same type, such as adding different numbers of feet, inches, and meters together into a total length. Parens does this by converting all the values in the current calculation which have been entered so far into whatever units have been most recently selected, on the fly as you enter the calculation. For example, you can enter: "3[m]-6[ft]+2[in]=" to get an answer of 48.11 (which is in inches since that's the most recently selected units; tap any other unit to convert this result). This calculation started out in meters, but when the "ft" key was pressed, the intermediate results up to that point were converted to feet before subtracting 6. When the "in" key was pressed, the intermediate result was converted to inches before adding 2. This allows the calculation to always work in comparable units, even though you're changing units as you go.
In the Date & Time mode, the "Days" key automatically selects the "d" (days) units key to allow easy mixed-units date calculations. For instance, to find out what the exact date and time will be one thousand minutes from now, you could enter: "[Now][Days]+1000[min]=[d][Date]". Note the conversion from minutes back into days after pressing the equals key; this is necessary because the Date key expects its input to be in days.
There are two ways you can extend or customize Parens to suit your needs. You can install one or more Parens plugin modules into your PalmPilot, each of which will add one new Parens mode to the built-in default modes. Or you can write Parens mode definition memos in MemoPad and import them into Parens to add or update Parens modes.
The great thing about plugin modules is that they allow all kinds of specialized niche buttons to be made available to those who need them, without bloating the program size for those who don't. I've received a lot of suggestions and requests in the past for options that I just didn't think would be popular or widely used enough to justify their added code; now they're feasible. Over time I hope to build up a good collection of custom modes for you to select from.
Please see the Parens Plugin Info Page for the complete collection of all publicly available Parens plugins currently known to me. There's not much (if anything) there yet, but I expect the list to grow quickly. Download any of them that interest you, and install them into your PalmPilot using the Install tool as for a regular Palm OS program. Parens will automatically add the new mode(s) to its list. You can use the About Plugins menu command in the Parens Options menu to see what plugin modules are currently installed, and to read any About text provided by each plugin. Plugin modules can be deleted using the same built-in Palm OS tools as you would use to delete a regular program (Memory app for Palm OS 2 or Applications menu for Palm OS 3+). They can also be beamed to other Parens users, again using the same commands as for regular programs. Palm OS 1 users: Unfortunately, Palm OS 1 doesn't allow shared libraries to use double precision math, so Parens plugins are ignored under OS 1.
Parens plugin modules can be easily created by anyone with a PalmOS C compiler, often in just a few minutes. Full source code is available at the info page for a simple example plugin that demonstrates the Parens plugin interface. Depending on what you want your new keys to do, they may require as little as three or four lines of C code each. For more complex needs, your keys can also pop up full-blown Palm OS forms and use the complete Palm graphical user interface. You can draw your own artwork bitmap for the keys, or supply text label strings and let Parens draw them for you. If possible, I'd appreciate a copy (or a URL address) of any new plugins you write, for inclusion in my plugin archive for use by other Parens users.
If you don't have the tools or background to create a plugin module yourself, but you know exactly what you want it to do, you can submit an RFP (Request For Plugin) to me by email and I'll see if I can create it for you. Requests will be handled when and if I have the free time available, with the easiest and most completely described requests being handled first. Any math formulas, logic or algorithms your keys will require should be completely and totally spelled out; don't assume that I know anything about the subject in question, no matter how simple you think it is. Easy and/or completely detailed requests should be handled within a few days. Requests that are not fully and completely detailed will tend to get put off until I have lots of free time to think about them and correspond with you (i.e.: don't hold your breath). A request that just says "please add linear regression" will go to the bottom of the pile, but one that says "Button 1, "sqrt": x=sqrt(x). Button 2..." will be implemented quickly. Also, requests from registered users will naturally take precedence over those from unregistered users.
I'm writing these custom plugins as a free service to my users (and to help expand the plugin collection), but unfortunately I have too much stuff to work on and lots of email to answer, and not enough free time to spend on it, so please be patient.
Currently, only units conversion modes can be defined or modified using definition memos. Anything else will need to be implemented as a plugin module (see above). However, I do intend to expand this feature in the future to include more powerful customization options, so I'll try to keep this discussion general.
Parens is programmed through the use of its Program menu, which contains four commands:
This command translates a user-defined Parens mode into a definition text memo in the built-in Memo Pad application, so that you can edit and re-import it, file it, email it, or beam it to another Parens user. The memo will be put into the "Parens" category if one exists (or can be created); otherwise, it will be "Unfiled". If a definition for this Parens mode already exists in the Memo Pad, you'll be given the option of replacing it or adding another definition as a separate memo.
The first line of the memo will be "Parens <mode>", where <mode> is the name of the Parens mode which was exported (e.g. "Parens Weight"). This is followed by 12 lines of text, one for each of the 12 available mode-specific Parens keys. Each line of text describes a single Parens key in the following format, with each field separated from the next by tabs or spaces:
Label KeyType KeyInfo
Label is the 1 to 4 character label to be shown on top of the key, and can use the entire 7-bit lower-128 ASCII character set, plus ¥ (yen), £ (pounds), (euros), ° (degrees), µ (micro), ² (squared), ³ (cubed), pi, sigma, delta, left arrow, and right arrow. The yen and pound characters can be entered using the PalmPilot's popup keyboard window. The other special characters are entered using a two-letter escape code: \e for euros, \d for degrees, \m for micro, \2 for squared, \3 for cubed, \p for pi, \s for sigma, \t for delta ("triangle"; \d was taken), \l for left arrow, or \r for right arrow.
If the first word on the line is "Unused" instead of a key label, that key is left blank and disabled by Parens, and the rest of the line is ignored. Also, if you don't specify all 12 keys, the remaining keys will default to Unused.
KeyType tells Parens what kind of key you're defining. Currently, this can only be "Conv", for units conversion.
KeyInfo provides the information required to define the KeyType you've declared:
KeyType | KeyInfo for that Type |
Conv | UnitCategory ScaleFactor Offset InverseOf UnitCategory is an integer from 0-255 which groups the conversion keys together by compatible units. For example, if you had both weight and length units defined together in the same Parens mode, you wouldn't want to be able to convert from miles to kilograms. By assigning all the weight-related keys to category 0, and all the length-related keys to category 1, Parens will know which keys can be used with each other. If you aren't mixing incompatible unit types, just set this value to 0 for every key. ScaleFactor defines the relationships between compatible units. For each UnitCategory, pick a standard quantity. For each key within that UnitCategory, set the ScaleFactor to the number of those units in the standard quantity you've chosen. For example, for a set of weight units keys, you might decide to use a standard quantity of 1 kilogram. For each weight unit key, you would then specify the number of those units in 1 kilogram, e.g. 1000 grams or 0.001 metric tons. Note that the actual values used aren't important; only the ratio between the values. It doesn't matter if you say 1000 grams = 1 kilogram, or 1.234 grams = 0.001234 kilograms, so long as the ScaleFactor for grams is 1000 times larger than the ScaleFactor for kilograms. Normally, you'll set one of the keys in each UnitCategory to 1.0 and define the other keys relative to that one. Careful choice of the "standard quantity" can be important; it's more accurate (and easier) to define 1 inch = 2.54 cm than to say 1 cm = 0.393700787402 inches. Finally, remember that Parens can Copy the displayed value to the clipboard; it's often convenient to compute ScaleFactors using Parens, and then cut & paste the result into your memo. Offset is an optional field which always defaults to 0 if not specified. It's used when defining units whose scales have some absolute offset from each other in addition to (or instead of) the normal relative ratio defined by the ScaleFactor. The only example I know of right now is temperature conversions; Fahrenheit = 1.8 * Celsius + 32, and Kelvin = 1.0 * Celsius + 273.15. In all other cases I can think of, you can leave this value out and let it default to 0. The actual formula used by Parens to convert quantity X from unit A to unit B is: (X - OffsetA) / ScaleFactorA * ScaleFactorB + OffsetB InverseOf is a rarely used optional field which links two separate but complementary UnitCategories together, by providing a link from a unit in one UnitCategory to a unit in another UnitCategory which is its exact inverse. For example, in the US we measure car fuel efficiency in terms of Miles Per Gallon (mpg), but in Europe it's measured in terms of Liters Per Kilometer. You can't put both units into the same UnitCategory, since one is based on "distance per volume" and the other is in "volume per distance", so they're inversely proportional (when one goes up, the other must go down). But you can create one UnitCategory which includes Miles per Gallon and Kilometers per Liter, a second UnitCategory which contains Gallons per Mile and Liters per Kilometer, and then link the two categories together so that Parens will know how to convert anything in either UnitCategory interchangeably. The link is established by choosing a unit in one UnitCategory which has an inverse in the other category, and specifying the name of that inverse unit key in the InverseOf field. You must be screaming for an example by now, so: mpg Conv 0 1 0 gpm kpg Conv 0 1.609344 kpl Conv 0 0.42514370743 gpm Conv 1 1 0 mpg gpk Conv 1 0.621371192237 lpk Conv 1 2.35214583333 Notice how mpg links to gpm, and gpm links back to mpg. You don't really need to specify both links; either is sufficient, and it doesn't matter which you choose. You could also link the kpg and gpk units, and/or the kpl and lpk units. You can enter as many links as you want, so long as the units in each linked pair are inverses of each other. Also notice that when specifying the InverseOf field, you must also specify the Offset field, even if it's 0. |
For detailed examples of how all this comes together, export one or two of the default Parens modes that are built into the program, and examine the resulting memos. It's not as hard as my verbosity might make you think; I'm just trying to head off as many questions as possible (not that anyone ever reads this stuff, anyway).
This command is the opposite of the one above; it reads a Parens mode definition from the Memo Pad program and updates or adds the corresponding mode in Parens. You can name your custom Parens modes anything you like up 15 characters long, but practically speaking, the real limit is usually more like 7 or 8 characters due to the restricted space available for displaying the name in the Parens display. If a Parens mode with the same name as in the definition memo already exists, you're given the option of replacing it or adding another mode with that name. See the section above for details on the content and format of the definition memos.
This command deletes a user-defined mode from Parens. Be careful with this; there's no Undo command. It does not delete any associated definition memo in the Memo Pad program; you have to delete those yourself.
Despite the warning above, the default modes that are provided the first time you run Parens are never really forgotten; their definitions are built into the program. This command will check the list of modes which are currently defined in Parens, and replace any of the standard defaults (Weight, Length, Temp/Area, Volume, PwrEngyPrs, and Currency) which have been deleted. Modes which have been modified instead of deleted will not be changed.
Parens keeps most of its information in your PalmPilot's user preferences database, where it's automatically backed up whenever you do a Hotsync. This data includes Parens' memory registers, constants list, TVM variables, statistical data, and current display settings.
User-defined Parens mode information is stored in the file ParensDB.pdb, which is marked for automatic backup by Hotsync into your C:\Palm\<username>\Backup directory or equivalent.
Should your PalmPilot require a hard reset or suffer battery failure, it could lose its memory. If this happens, just do a Hotsync after fixing the problem, and all of Parens' data will be automatically reinstalled, along with any other data in your C:\Palm\<username>\Backup directory. What many don't realize is that you can stick application .PRC files into this directory yourself, and they'll be automatically reinstalled after the reset as well. The only problem is that the apps you put there are deleted after the restore, so you'll need to recopy them back into the backup directory again afterwards.
What I've done on my system is create a C:\Palm\Huebner\Apps directory, and whenever I find a new app that I want to keep around, I copy it into this directory and into the Backup directory. If my PalmPilot loses its memory, I do a Hotsync and everything is automatically reinstalled. Then I just copy the contents of the App directory back into the Backup directory so that it'll be ready again for the next time.
If your PalmPilot loses its memory and you haven't prepared like this, it's not a disaster; it just means you have to go back and re-install all the .PRC files you had before using the Install Tool. It's a drag, but no real loss. Either way, all of Parens' data will have been automatically backed up and then restored, giving you one less thing to worry about.
As you'd probably expect after reading this far through this nice manual I went to the trouble of writing, Parens is shareware. It's not, however, crippleware or constantly-in-your-face-ware or even plead&whineware. I don't like those sorts of programs when I download them, so I won't distribute one myself. The only "persuasion" Parens applies is that it will remind you to pay for what you've gotten every couple of weeks. Starting with the 5th such biweekly reminder, these reminders will insist on sticking around for a few seconds before you can dismiss them, and this delay will increase slightly with each subsequent biweekly reminder. This will allow plenty of time for a lengthy evaluation, while still providing some motivation to eventually get around to registering if you keep it for more than a few months.
If you like Parens enough to give it a permanent home in your PalmPilot, you may register it for the entirely reasonable low price of $10 to $12 US (depending on processing surcharge). Registered users will receive a code to turn off the registration reminders (which will work with all future updates), and are automatically notified by email when new versions are available. They also enjoy the smug satisfaction of knowing that they're helping to encourage the production of fine software like this for their PalmPilot, and (more to the point) that they're helping to encourage me to continue supporting and improving it instead of giving up on the whole thing in disgust.
In an attempt to make it as painless as possible for you to give me your money, I've set up 3 ways to register Parens. The cost of registration varies somewhat depending on the method used. I'm charging such a low price for my software that I can't just absorb the stiff fees some payment processing companies impose, but rather than raise my prices across the board, I've decided to pass on my cost of using each payment system and let you choose for yourself.
Rick Huebner
5932 Lomita Verde Circle
Austin, TX 78749-4203If you send cash, use an opaque security-printed or brown paper envelope so you won't tempt the mail handlers into theft. Specify which of my programs you're registering, the name you wish to register it under, and please include an email address so I can send you your registration code and update notices. Your email address will never be given to anyone else, nor used for any other purpose.
Parens is protected by copyright law, and is licensed, not sold. You're allowed and encouraged to use and redistribute Parens in its original form, as officially distributed by me, but not to distribute registered or modified copies. You're allowed to use but not distribute one registered copy per registration fee paid. Parens is guaranteed to work pretty much as described in this documentation, with no seriously impairing bugs, or I'll fix the bug or return your money. No other warranties or remedies are applicable.
SOFTWARE PRODUCT LICENSE. This software is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. It is licensed for use, not sold. You are allowed to use and distribute the software in its original, unmodified form as desired. You are limited to one registered copy of the software per registration fee paid, installed on a single PalmPilot organizer at any one time. You may not reverse engineer, decompile, disassemble, or modify the software. LIMITED WARRANTY. I warrant that the software will perform substantially in accordance with these accompanying written materials when installed on a PalmPilot organizer running OS versions 1.0 through 3.2. CUSTOMER REMEDIES. My entire liability and your exclusive remedy shall be, at my option, either (a) return of the price paid, or (b) repair or replacement of the software that does not meet this Limited Warranty. This Limited Warranty is void if failure of the software has resulted from accident, abuse, or misapplication. NO OTHER WARRANTIES. To the maximum extent permitted by applicable law, I disclaim all other warranties, either express or implied. NO LIABILITY FOR CONSEQUENTIAL DAMAGES. To the maximum extent permitted by applicable law, in no event shall I be liable for any damages whatsoever arising out of the use of or inability to use this product. My entire liability under any provision of this agreement shall be limited to the amount actually paid by you for the software.
Version 1.4, August 26th, 1999: Added support for plugin module files so you can download and install fancy new Parens modes (as soon as someone writes a few); added inversely-proportional conversions support; extended the key label font to include all printable lower-128 ASCII characters plus a few extras; corrected the trig keys to handle boundary conditions better (sin(180 degrees) = 0 now); widened mode list to allow longer mode names; fixed a few small problems with Import and Export.
Version 1.3, January 1st, 1999: Just in time for the euro! A new currency conversion mode (with a nice hand-crafted euro key), which is just part of a new user-definable units programming capability. Add your own conversion modes, or modify or delete the standard ones. Need to measure things in cords, furlongs, or barrels? No problem, add them in. Is a Roratongan Gallon equal to 3.1415 Imperial Gallons? Redefine the button! This is the first step in a long-term project to add user programmability to Parens.
Version 1.2, July 12th, 1998: Fixed a problem which sometimes displayed a box instead of -e- after an error. Fixed a problem which previously required pressing = after a number before converting it to another number base. Fixed the UK miles units definition. Fixed a problem which sometimes caused a key in the upper-right corner to disappear. Improved the way results are rounded to solve certain repeating decimal problems (9.2 - 9 now equals .2, not .1999999999). Changed the root key to use MathLib's cube root function when appropriate, so that the cube root of a negative number can be calculated (but only if you use ParensML and MathLib). Updated the docs to address a couple of common questions.
Version 1.1, March 5th, 1998: Added a TVM loan solver with amortization, percent keys, and a Logic mode with bit-twiddling operations in various number bases and word sizes. Added Temperatures, Area, Power, Energy, and Pressure conversions. If your Preferences Formats page specifies United Kingdom, the definitions of ton, mile, fluid ounce, pint, quart, and gallon are adjusted to UK standards; if it specifies Canada, gallons are adjusted. When changing display formats, the number of decimal places to display is remembered and carried over unless you explicitly change it. The Memory Store list now allows exchanging a memory with the display. Entries in the Statistics list are now numbered.
Version 1.01, February 17th, 1998: Fixed a problem with the temporary "K" constant being activated when it shouldn't, which screwed up certain repetitive operations such as "1+(1+1)+1=" and "1[yd]+1[ft]+1[in]=". The "E+" (add to stats list) key now displays the incremented count of items in the stats memory.
Version 1.0, February 12th, 1998: Original release.