RE: PCCOM

Jeff Lee (shipbrk@gate.net)
Wed, 30 Aug 1995 10:21:30 -0400

The first attempt apparently didn't make it out (or at least, it didn't
come back to me), so I'm resending. Apologies if this is a duplicate.

>>... Does anyone know if the com protocol for PCCOM or "File Linking"
>>is available to the general public.
>
>This information, as well as development tools and documentation for
>Geos development is available from Geoworks. 1-800-GEOS-SDK or
>dev-info@geoworks.com.

It's also nicely encapsulated in the xtoc source, available on the ftp
site (ftp.biostat.washington.edu). It's a surprisingly simple protocol,
and whoever designed it was definitely a unix weenie (there are commands
like LS, MV, CP, etc.)

Most of the commands are two-character strings preceded by an escape
character. If filenames are required with the command, they are simply
appended to the string and terminated with an exclamation point (which
means that filenames containing an exclamation point cannot be transferred
with PCCOM). The <return> key is not necessary. Any extraneous text is
simply echoed to the Zoomer's screen (unless it begins with <ESC>), so it's
possible to send the string "\033clWaiting for command..." to clear the
screen and display a message so that the user doesn't simply unhook the
machine and forget to turn it off (since while PCCOM is active, it won't
shut off due to inactivity -- and the power switch doesn't work in DOS
mode).

The basic commands themselves are:

<ESC>CD[path]! Change directory, or print it if no new path
<ESC>cl Clear unit's screen
<ESC>CPsource!dest! Copy file
<ESC>EX Tell unit to exit PCCOM
<ESC>LS Show listing of unit's current directory
<ESC>MDpath! Make directory
<ESC>MVsource!dest! Move file
<ESC>RDpath! Remove directory
<ESC>RFfilename! Remove file
<ESC>XF<SOH>path Send a file to the unit
<ESC>XF<SEL>path Get a file from the unit

The returning data streams for most of the commands use semicolons as line
terminators. The send/get file functions use a somewhat more complex scheme,
including a CRC check on the data (which is transmitted in packets).

Most of the commands (except for XF) can be tested using any communications
program -- like Kermit or even Windoze Terminal -- although if it doesn't
provide the ability to remap incoming characters, the screen will be rather
cluttered due to the fact that the data doesn't contain <CR><LF> pairs.

If the LS command causes the data to hit the bottom of the screen, the
Zoomer will *not* scroll the screen. This is good, since otherwise the
comm program on the PC would probably assume a timeout condition. Other
commands, however, *will* scroll the screen if any output occurs at the
bottom of the screen, so I've found it works well to append a "cl" command
immediately after each command (eg, "\033LS\033clReady...") to avoid timeouts
on subsequent commands.

If anybody really wants to see the code for the XF command, I can post
what I've written for a Windows file transfer utility (though I'd need to
clean it up and comment it), or check out the source to xtoc.

------------------------------------------------------------------------------
Jeff Lee SCA: Lord Godfrey de Shipbrook (Wyvernwood, Trimaris)
shipbrk@gate.net jlee@smylex.tscs.com http://www.gate.net/~shipbrk/

Version 3.1:
GCS/MU/FA/PA d- s:-- a28 C++++ UA-- P? L E- W++ o N++ K+++ w+++(---)$ O+
M V+ !PS PE Y+ PGP- t(++) 5(+) X R@ tv+ b+++ DI++ D++ G++ e>++ h+ r- y++