Pilot VT100, PH patch

Original homepage for the upstream version of this PalmOS application is http://vt100.tarunz.org/.

I had attempted to contact the Pilot VT100 maintainer, Vassilii Khachaturov, on 2002 Apr 11, and never received a response nor acknowledgement since. E-mail didn't bounce, and his web page has been updated since, so he's still alive. I may reattempt contact later, but in the meantime, I provide this page as a way to disseminate my extensions to Pilot VT100, and as a source of some documentation for said extensions.

In a nutshell, Pilot VT100 is a VT100 terminal emulator (variant "vt100-nam"), using the PDA's built-in serial port. As the name hints, this is a very old application, created back when the PalmOS PDA was known as "Palm Pilot" (prior to a trademark litigation). When I searched for a PalmOS terminal emulator oh so many winters ago, Pilot VT100 was the only one I could find that came with source.

Diffs I created against the upstream maintainer's 1.0 release provides:

Jindra Fucik provided additional updates for Palm OS 5. I haven't the time to review these and have just uploaded the working directory snapshot mailed to me: vt100-1.2-JF.tgz

PalmOS SDK 4.0

Shifting to SDK 4.0 was something of a necessity for me. The only PalmOS SDK I could find was 4.0. In order to get Pilot VT100 compiled at all, I had to adapt the app to SDK 4.0.

This wasn't a very arduous task, however, compiling this patched Pilto VT100 from source requires installing PalmOS SDK 4.0.

Part of porting to SDK 4.0 meant using the PalmOS Glue library for backwards compatibility (I use a Palm IIIxe with PalmOS 3.5.2). If you're modifying the source, you may need to edit the Makefile for the paths to the SDK header files, libraries, and libPalmOSGlue.a (these should all be packaged together in the PalmOS 4.0 SDK archives).

For compilation, I used prc-tools 2.0.92 and pilrc 2.8.

Preferences DB

Saved Preferences (can be backed up and restored by HotSync):

Unsaved Preferences (usually not transferred by HotSync):

Higher baud rates

These baud rates have been added:

Most consumer modems and PCs are unable to drive their serial ports beyond 115200.

The Palm serial port can theoretically be driven up to 1Mbps (baud 1_000_000, give or take a few K). Whether the other end can drive this fast, and whether the cable used is high enough in quality, are separate matters.

I added a checkbox for XON/XOFF, but both the source comments and PalmOS docs hint that software flow control is not at all supported at any level. Oh well.

TODO/WIBNI: special list item for editfield entry of baud rate (i.e. user-defined baud rate).

Session persistance

The screen content and Line status are stored into the (Unsaved) Preferences database. If you exit (the patched) Pilot VT100 while still online, then rerun the same, the screen content and online state is restored (after the serial port has been properly reinitialized with the saved communications settings). While this maintains the illusion of task-switching on PalmOS, Pilot VT100 cannot handle anything coming over the serial line if it is not the running application (i.e. when it quits) -- incoming data is not buffered anywhere, and outgoing data (if any) are dropped on the floor.

Otherwise, if the Line status is off when Pilot VT100 ends, the screen content is not saved (but the communication and keymap settings still are!). The next running of Pilot VT100 starts offline with an empty screen.

This is a useful feature if you use your Palm PDA like I use mine: as the controlling terminal for a headless PC. The shell often spends most of its time just waiting, even after I detach my Palm for a few days, so the saved screen content still winds up consistent with the PC upon reconnecting.

TODO/WIBNI: LispMe-style multiple sessions, for shelling to multiple machines.

TODO/WIBNI: menu item to explicitly clear screen (current workaround is to go offline, exit Pilot VT100, and rerun it).

Buttons Remapping

The dialog box for buttons remapping has been there for as long as I remember, and I finally got annoyed that the dialog has remained impotent the entire time.

The following PalmOS hardware keys are remappable, with their default bindings listed.

The silkscreen buttons are not remappable (otherwise there would be no means of ending Pilot VT100).

Erasing an entry restores its default binding. (kinda sucks this probably-very-useful information is a one-liner in the middle of everything here...) Bindings are not committed until the OK button is pressed.

Escape sequences are provided to indicate characters that cannot be typed in literally. Notation is borrowed from *nix shells/terminals and ANSI C.

A caret (^) introduces a control character. For example, "^A" means Control-A, or ASCII 1. Other significant control sequences (in a shell context):

A backslash (\) introduces a backwhack sequence. This notation is borrowed from ANSI C. All the ANSI C sequences are supported (\a, \b, \n, \\, \22, etc.). These extensions are provided:

The meta prefix is currently unimplemented. The goal is to provide a means to type in meta characters, character codes above 127 (i.e. with the meta bit turned on). The idea is to flag the following character for "metaizing", to flip on its highest ("meta") bit. Although the backwhack-octal sequence can generate any of the 256 character codes, this meta notation provides a more human-friendly mnemonic. Most programs wanting a meta character usually accept an ESC prefix instead (e.g. a program wanting Meta-A would want "\301" (or "\#A"), but usually also accepts "\eA").

TODO/WIBNI: completely disable a button.

TODO/WIBNI: meta characters.

TODO/WIBNI: allow more characters for remapping entries.

Downloads

The original 1.0 source tarball is mirrored locally: vt100-1.0.tar.gz (43278 B).

Patch against original source tree: vt100-PH1.diff.gz (7901 B).

Precompiled patched vt100 prc: vt100-PH1.zip (7446 B) or vt100-PH1.prc.gz (7320 B)

Jindra Fucik's modifications working directory snapshot (includes compiled PRC): vt100-12-JF.tgz


-- PhaethonH (phaethon at linux.ucla.edu)