This site will look much better in a browser that supports web standards, but is accessible to any browser or Internet device.

PilotFORTH Code

Neal Bridges has written an ANS Forth implementation for the USR Pilot called PilotFORTH. Since I program in Forth and own a PalmPilot, I decided to try it out.

These are some of the files I have created for PilotFORTH.

Standard Word Sets
core-ext.4th More words from the Core Extension word set 10/04/97
tools.4th A few words from the Tools word set 11/27/97
string.4th A complete implementation of the String extension word set 10/29/97
exceptn.4th The Exception and Exception Extension word sets. 10/04/97
Forth Utilities
basics.4th Some basic words I find useful. Most of the following files will depend on this one. 10/18/97
systrapu.4th These words were useful in creating SysTrap-based words. 10/18/97
cstrings.4th Words for dealing with counted strings.
Although for most of the nine years I have worked in Forth, people have been saying that counted strings are going out of style, I still find them useful.
10/18/97
strbuf.4th A string buffer based on words in LMI Forth.
Just the buffer support, no advanced string-handling (yet).
9/26/97
debug.4th Some debugging words my coworkers and I have found useful. 10/18/97
redefine.4th Generate a warning when a word is redefined. 10/18/97
pairs.4th Control structure defining words. 9/28/97
group.4th A non-standard exception-handling module which is more flexible than CATCH/THROW. 10/18/97
asciiz.4th Support for C-style nul-terminated strings. 10/18/97
cpairs.4th Compile-time extensions to the pairs module. 10/04/97
groupext.4th Extensions to the group module. 10/04/97
grpcatch.4th CATCH/THROW implemented on top of group. 10/04/97
gpairs.4th Group-aware extensions to the pairs module. 10/04/97
list.4th Support for dictionary-based linked lists. 10/18/97
time.4th Support for access to some of the Palm OS time functions. 10/17/97
profiler.4th Support for profiling Forth words. 10/18/97
PilotFORTH Serial Interface
serial.4th Forth words to interface with the PalmOS Serial API. 10/18/97
serconst.4th Constants for use with the PalmOS Serial API. 1/03/98
serialhi.4th Higher level interface to the PalmOS Serial API. 11/16/97
Archive files
wade4th.zip By popular demand, (one person requested it) I am providing all of the above files in a single zip file for those with slow FTP connections. 1/03/98
4thStdWS.zip My implementations of various standard word sets. See Standard Word Sets above. 11/27/97
4thUtils.zip Files containing utilities and extensions written by myself and my coworkers. See Forth Utilities above 10/18/97
P4Serial.zip All of the serial interface routines. 1/03/98

Wade's PilotFORTH file history

  • 1/03/98 Corrected more mistakes in serconst.4th. Thanks again to Marcio Marchini for correcting my errors and donating the word 2or.
  • 12/03/97 Corrected some errors in serconst.4th. Thanks to Marcio Marchini for spotting my typos.
  • 11/27/97 Added functionality to standard wordsets
    • Added non-standard case-insensitive version of COMPARE to string.4th. ICOMPARE is needed for new words in tools.4th
    • Added [if] [else] and [then] to tools.4th. Tools.4th is now dependent on string.4th.
  • 11/16/97 Finally completed the high-level serial interface in serialhi.4th.
  • 10/29/97 Correction to cmove and cmove>. They did not clean up properly. Thanks to Robert Patten for the correction.
  • 10/18/97 Comments, reorganization, minor improvements, and a profiler.
    • Added new utility words to systrapu.4th, including some moved from serial.4th.
    • Updated the comments in list.4th, serial.4th, group.4th, and cstrings.4th.
    • Improved the zconstant and $zconstant definitions in asciiz.4th.
    • Modified redefine.4th to add support for 2constant and 2variable.
    • Added profiler.4th which supports profiling Forth words.
  • 10/17/97
    • Cleaned up the output of %s and %w
    • Created the SysTrap utilities to simplify my life using SysTrap.
    • The file time.4th supports access to some of the Palm OS time functions.
    • Completed testing the low-level serial routines.
  • 10/11/97
    • Completed SEARCH and rewrote COMPARE. String.4th now gives a full implementation of the String extension word set.
    • Corrected %s and %w, They should display the stack before waiting for an enter. (I knew they didn't look right.)
  • 10/05/97 Corrected bug in zconstant and $zconstant in asciiz.4th.
  • 10/04/97
    • Added list.4th moving @! and link, from basics to list.4th and adding other words.
    • Added key.regroup and friends to groupext.4th.
    • Added perform, +constant, and require to basics.4th.
    • Cleaned up dependencies between my files. I wasn't consistent in the way files depended on each other. Now the dependencies are explicit.
  • 10/03/97 Added new words
    • Added COMPARE to string.4th.
    • Added constants to asciiz.4th.
    • Added REQUIRE to basics.4th. (stolen from Perl)
  • 9/30/97 Cleanup and new files
    • Inlined some words in core-ext.4th which cleaned up the double return stack words some more.
    • Added completed versions of the files group.4th, groupext.4th, grpcatch.4th, and gpairs.4th.
  • 9/29/97 Bug fix and new files
    • Fixed a major bug in core-ext.4th. The words 2>r, 2r>, and 2r@ were horribly flawed. (Major brain cramp. Hope no one was injured using them.)
    • Added the files asciiz.4th, pairs.4th, and cpairs.4th.
    • Working on some other utility words which will appear here when I get the bugs ironed out.
  • 9/26/97 Cleanup and additions
    • Cleanup of tools.4th, string.4th, cstrings.4th, strbuf.4th to use char+ and chars where appropriate.
    • Added perform to basics.4th.
    • Added the file redefine.4th which redefines the defining words to detect the redefinition of words.
  • 9/21/97 Minor cleanup of exceptn.4th (thanks, Neal!) and temporary removal of systrap.4th
  • 9/20/97 Modified exceptn.4th after input from Neal Bridges.
  • 9/20/97 Corrected a bug in :noname in core-ext.4th and added exceptn.4th, debug.4th, and alpha version of systrap.4th.
  • 9/18/97 Original implementations.
Valid XHTML 1.0!