
                                 PARCP v3.24
                               ~~~~~~~~~~~~~~~

                          written by Petr Stehlik

                              (c) 1996-1998

Last Update: 31st May 1998
-------------------------------------------------------------------------------

                            TABLE OF CONTENTS

                0. Changes in this Document

                1. Introduction
                    1.1 What is PARCP
                    1.2 Advantages of PARCP
                    1.3 Features
                         1.3.1 Supported computer platforms
                         1.3.2 Parallel (=printer) port type (IBM only)
                         1.3.3 Operating systems
                         1.3.4 Multitasking
                         1.3.5 User interface
                         1.3.6 Internals
                         1.3.7 New features since last release
                         1.3.8 Summary
                    1.4 Future Plans
                    1.5 How much does it cost?

                2. Additional required hardware
                    2.1 PARCP cable
                    2.2 PARCP UNI-BI adapter (IBM only)

                3. Installation
                    3.1 Requirements
                    3.2 PARCP Concept
                         3.2.1 Server and Client
                         3.2.2 Running Server
                         3.2.3 Running Client
                         3.2.4 CLI commands
                         3.2.5 ParShell
                    3.3 State of parallel port
                    3.4 Before running it...
                    3.5 PAR_IN, PARCPCFG (IBM only)

                4. Configuration
                    4.1 CFG directives reference
                         4.1.1 Hardware specific Section (IBM only)
                         4.1.2 General Section
                         4.1.3 Debug Section
                         4.1.4 ParShell Section
                         4.1.5 PARCP.CFG example
                    4.2 Command line parameters
                    4.3 Configuration under Client
                    4.4 PARCP Script file

                5. Miscellaneous
                    5.1 DISCLAIMER
                    5.2 Hints
                    5.3 Troubleshooting

                6. Resources & Acknowledgments
                    6.1 Related programs
                    6.2 Resources
                    6.3 Getting the PARCP cable
                    6.4 Greetings
                    6.5 Contacting the author


-------------------------------------------------------------------------------

0. Changes in this Document
===========================

PARCP 3.24 comes in two binary files: PARCP (full PARCP Client and Server)
and PARSERVE ("light" version of PARCP, that runs as Server only). PARSERVE
does not need the "-s" parameter on commandline.


1. Introduction
===============

This is the second try of an useful documentation, I'm not good at that...
Please read it if you can. If you're too impatient and can't read whole
documentation before first start of PARCP, please read the "Quick, Five
lines guide to PARCP installation and use" in the QUICK.TXT file.


 1.1 What is PARCP?
 ------------------

PARCP stands for PARallel CoPier. It does copy files between two computers.
It acts as a file network running over parallel (=printer) ports of those
computers. This allows you to copy many and large files very quickly from
one machine to another.


 1.2 Advantages of PARCP
 -----------------------

 It's cheap, it's fast, it's available everywhere, and it's easy.

[cheap and easy]

  The PARCP cable is all that's needed to connect two computers, and it can
  be build for very few bucks. You can even look around and if you find
  parallel LapLink cable, you need nothing but PARCP!

[fast and available everywhere]

  Connecting two computers takes only a seconds decision and a few minutes
  work, no need to search for a netcard. This might even be especially
  important in the case of notebooks, where netcard are not easily
  available.

[easy]

  Not requiring a netcard also means that apart from connecting the cables,
  everything else is software configuration (which in principle could be
  made very easy).

[available everywhere]

  PARCP can connect two computers running different operating systems. No
  need to search for a common network protocol, PARCP itself is a 'common
  protocol'.

[easy and fast]

  PARCP needs not to be 'installed' in the way you know it from Microsoft
  operating systems - complicated procedure, several reboots, no ability to
  uninstall. No! PARCP can be just unpacked and started - and it works!
  Without reboots, without conflicts with other hardware or software
  components, without headaches...

[available everywhere and easy]

  PARCP can even connect two different platforms, like is IBM PC or clone
  and Atari ST (or compatible). For Atari computers it's even more
  important, because there are nearly no network cards.

[fast and easy]

  Sometimes a ZIP disk is used to transfer files from one computer to
  another - first copy files from one computer to ZIP, then copy files from
  ZIP to another computer.

  Is that easy? Fast? No!

  PARCP easily outperforms parallel ZIP in reading - so if you connect
  those two computers with a PARCP cable, it's more than two times faster
  to copy the same amount of data from one computer to another.


 1.3 Features
 ------------

   1.3.1 Supported computer platforms
   ----------------------------------

PARCP has been designed to work on two different computer platforms:

  o Atari ST/STE/TT/Falcon and compatible computers (Medusa/Hades).
    PARCP is also compatible with all sorts of accelerator cards such
    as AfterBurner040 for Falcon etc.

  o IBM PC 386 and compatible clones (i.e. machines with 32-bit x86 CPU).
    PARCP has been tested on AMD 386, Intel 486, Intel Pentium
    and Cyrix 6x86 processors.

(I will use the word Atari as a reference for any of the former computers
 and the word IBM for any of the latter ones in the rest of this document)

The main feature of PARCP is the ability of connecting of any two supported
computers:

  o Atari <-----> Atari
  o Atari <-----> IBM
  o IBM   <-----> IBM


   1.3.2 Parallel (=printer) port type (IBM only)
   ----------------------------------------------

Parallel ports of IBM computers are basically of two different types:

  o unidirectional
  o bidirectional

  In addition, enhanced parallel ports (EPP and ECP) are supported as well
and are programmed as bidirectional ones.

The unidirectional parallel port is not able to read bytes on data lines
but has got five additional input lines for various purposes. Nearly all
known programs use these additional input lines for reading 4-bit nibbles.
They use so called 'LapLink' cable and 'LapLink' method of transferring data.

On the contrary, PARCP together with UNI-BI interface can read data
by full 8-bit at once just like on bidirectional parallel port.
Simply said PARCP UNI-BI interface makes you bidirectional parallel port from
your old unidirectional one.
That's why PARCP is usually about two times faster than its competitors!

If you have got an ECP or a EPP parallel port, then PARCP should work
at the full speed and no hardware interface is needed.

Of course PARCP supports all standard parallel ports of IBM - you can
choose which one you will use for PARCP transfers in the process of
configuration with PARCPCFG.


   1.3.3 Operating systems
   -----------------------

PARCP comes in three different binary files compiled for three main
operating systems (OS):

  o TOS on Atari (every version from 1.0 up to 4.04)
    Patched TOS (e.g. Kaos) and multitasking OS running on top of TOS
    (e.g. MultiGEM, Geneva) should be OK for PARCP as well.

  o DOS on IBM (perhaps from version 3.3?)
    FreeDOS and multitasking OS running on top of DOS (DESQview,
    Windows 3.x) should be OK as well.

  o Linux-ix86 on IBM (ELF, from v1.2.13?)
    I don't mean DOSemu for Linux, PARCP comes as native Linux application!

All three binary versions of PARCP look and behave exactly the same way,
which is handy for user learning its capabilities.


   1.3.4 Multitasking
   ------------------

PARCP runs well under following pre-emptive multitasking OS:

  Atari computers:

    o MiNT
    o MagiC

  IBM computers:

    o Windows95
    o OS/2
    o Linux-ix86

    Please note PARCP can't run under WindowsNT, because this operating
    system doesn't allow user programs to program hardware of parallel port
    directly.

Main PARCP features under these enhanced OS:

  o non-blocking waiting for user action
    PARCP doesn't hog OS nor CPU while waiting for user - the average load
    is close to zero when PARCP is idle. Therefore other applications
    continue working at full speed when PARCP is waiting...

  o support of long file names
    PARCP allows you to copy files from one operating system to another
    with original long file names preserved. Some rather unusual combinations
    of possible transfers of long file names between different environments
    are listed here:

    o Windows95's V-FAT <-----> MiNT's minix-fs
    o Linux's ext2-fs   <-----> MagiC's V-FAT
    o MiNT's ISO9660    <-----> OS/2's HPFS



   1.3.5 User Interface
   --------------------

PARCP 3.x comes with two different users interfaces. Historically first is
the FTP-like, command line interface (CLI). Now the preferred interface is
the new, fullscreen, easy to use, arrow and function keys driven
(ParShell). If you've ever seen programs like Norton Commander, Volkov
Commander, Midnight Commander or alike, the ParShell will be familiar to
you.

The working environment can be utilized to your personal needs by many
switches and parameters (please look into section 3.2.4).

PARCP can also be used in non-interactive way, without any user interface.
This includes sending files by simple drag&drop onto PARCP's icon on
desktop (TOS 2.x, MultiTOS, MagiC, Windows95) and also script files
processing (see section 4.4).


   1.3.6 Internals
   ---------------

PARCP is fully written in C. Additional assembler routines for both
Motorola and Intel&co processors have been written for the highest possible
transfer speed. The source code is 100% portable between all platforms and
is compiled by GNU C 2.7.2 for all three destination operating systems -
the result is very efficient full 32-bit code.

The support of special features of various operating systems is a matter
of well written GNU C libraries (MiNTlibs on Atari and DJGPP libs on DOS).

It should be very easy to port PARCP to another platform with GNU C compiler
and a little knowledge of the parallel port programming (hi Amiga freaks! :)


   1.3.7 New features since last release
   -------------------------------------

The list of most important changes and features of new PARCP version compared
to previously released PARCP v2.70:

  o ParShell (fullscreen user interface, implemented using curses library)
  o true 32-bit CRC for 100% safety of copied files
  o removed some directives (CheckSum, Filebuffer, BlockLength) and added
    new ones (PortType, CableType, CRC, Filebuffers, BlockSize, Autoexec,
    Shell)
  o new sorting method (by Extension of filenames)
  o autolocator in ParShell

Special new features for IBM PARCP:

  o support for ECP parallel ports
  o support for LapLink cable (no need to get the special PARCP cable now)
  o automatic configuration tool (PARCPCFG)
  o fast assembler routines (for the highest transfer speed)

For more detailed informations please read the file HISTORY.TXT.


   1.3.8 Summary
   -------------

PARCP runs on Atari as well as on IBM computers and clones, under all well
known operating systems. PARCP uses the best of any combination of
hardware and OS.

Of course there are programs for connecting computers via parallel ports,
but only PARCP can connect any two computers thus you need not to learn how
to use many different programs. PARCP is also much faster than its competitors,
supports more operating systems, it's simpler to use and likes multitasking.


 1.4 Future Plans
 ----------------

There are some things left to do, as well as a few things to fix.
The "to do" list is as follows, in no particular order.

  o faster filelist sorting
  o better timeout and errors handling (still needs improving!)
  o possibility of Rename in the 'Overwrite?' question

Write me if you want another feature...

Other neat features would be:

  o a port of PARCP to Amiga computers
  o a native GUI for Atari GEM, 32-bit Windows and X-Windows

But I haven't got enough docs (nor encourage!) at this time.


 1.5 How much does it cost?
 --------------------------

PARCP is shareware. Everyone can distribute PARCP providing the
distribution archive remains unchanged and is distributed free of charge.

If you find the program useful and intend to continue using it you have to
pay the Shareware fee to the author. Please refer to the REGISTER.TXT file
for informations how to register PARCP.

Since I have to earn my living and there is so much other things to do, you
should contribute if you would like to see newer and better versions of PARCP.
I have been working on this project for more than one year so I would be
really glad to receive a reward for it. Sending me a small amount of money
would be very kind and would encourage me to continue working on this project.

A list of already registered users is in the REGISTER.TXT file - please
read there how many people already found PARCP worth registering.


2. Additional hardware
======================

Please note that when connecting two IBM computers together, you can use
the well known LapLink cable (ask for Parallel LapLink cable in your
nearest computer shop).

Though for connecting an Atari computer to another computer (IBM or Atari,
doesn't matter) you have to use PARCP cable.


 2.1 PARCP cable
 ---------------

*****************************************************************
* Note: you need not to build the cable, you can simply buy it! *
*                                                               *
*  Please refer to the section 6.3 of this document.            *
*****************************************************************

The following diagram shows you how to build your own parallel cable for
use with my PARCP (PARallel CoPy). This cable allows you to connect your
computer with any other computer if both machines have either bidirectional
parallel ports or UNI-BI adapter fitted.

The easiest way how to build the cable is to buy a cable for dataswitch.
It's usually marked as 25M-25M. That means there are MALE Canon-25
connectors on both ends of that cable. The cable has either 18 or 25 wires
in itself. The 18-wires one is sufficient for our needs, because PARCP uses
just 18 wires. When you buy that cable, you just need to exchange wires on
pins 1 an 11 at one ends of cable (and to cut the wires on unused pins such
as pin 10,12,13..17).

The PARCP cable should consist of just 18 wires. The wiring diagram is as
follows:

Canon-25 MALE                      Canon-25 MALE
-------------                      -------------
pin         connection             pin
 1 ............................... 11  (Strobe -> Busy)
 2 ...............................  2  (Data 0)
 3 ...............................  3  (Data 1)
 4 ...............................  4  (Data 2)
 5 ...............................  5  (Data 3)
 6 ...............................  6  (Data 4)
 7 ...............................  7  (Data 5)
 8 ...............................  8  (Data 6)
 9 ...............................  9  (Data 7)
11 ...............................  1  (Busy <- Strobe)
18 ................................25  (GND <-> GND of Data 0)
19 ................................25  (GND <-> GND of Data 1)
20 ................................25  (GND <-> GND of Data 2)
21 ................................25  (GND <-> GND of Data 3)
22 ................................25  (GND <-> GND of Data 4)
23 ................................25  (GND <-> GND of Data 5)
24 ................................25  (GND <-> GND of Data 6)
25 ................................25  (GND <-> GND of Data 7 or common GND)

The 'schematics' above wanted to say that all 8 data bits are straight
wires, while the Strobe and Busy signals are crossed in one connector. The
GND is connected in both connectors as well, of course (please note that
some cables do not have enough wires for connecting pins 18-24. In this
case it should be OK to connect just the 25th pin).

This cable also works with ST-Trans (c) Atari 1992, with plip protocol of
MiNT-Net (c) Kay Roemer and with HDD_DMN3 by MC Soft&Hard.

Warning: if the cable length should exceed 5 meters, please get a cable
with proper metal shielding, otherwise random errors during transfer may
occur.


 2.2 PARCP UNI-BI adapter (IBM only)
 -----------------------------------

The UNI-BI HW adapter for PARCP is my own invention. It allows software to
use originally unidirectional parallel port of old IBM PC's as new, fast
bidirectional one. PARCP can't use unidirectional port without this simple
hardware interface. In other words: if PARTEST.EXE detects your parallel
port as unidirectional, you must plug this interface into that port and let
PARCP know that the interface is plugged by line UNI-BI = TRUE in your
PARCP configuration file.

The UNI-BI adapter again is not sold anywhere, but when you know where the
iron gets hot you should be able to build one yourself.

You need to buy/find_at_home:

  o 1x connector Canon-25 MALE
  o 1x connector Canon-25 FEMALE
  o 1x IC 74HC257
  o 1x IC 74HC574
  o 1x plastic cover of Canon-25 - Canon-25 reduction
  o some thin wire and solder iron (yes, you have to solder :-)

The plastic cover looks like this:

        +--+                 +--+
        |C |_________________| C|
 this   |A         a          FA|  this
 side   |NM  I   bunch   I    EN|  side
 plug   |NA  C    of     C    MN|  ready
  to    |OL  1   wires   2    AO|   for
 IBMPC  |NE                   LN|  PARCP
printer |2  _________________ E2|  cable
 port   |5 |                 | 5|
        +--+                 +--+


  The wiring diagram of UNI-BI HW adapter is as follows:

UNI (PC port)                      BI (PARCP cable)
Canon-25 MALE                      Canon-25 FEMALE
 1 ..............................  1
 2 -> IC1.2              IC1.19 <- 2
 3 -> IC1.3              IC1.18 <- 3      The IC's are also wired together:
 4 -> IC1.4              IC1.17 <- 4
 5 -> IC1.5              IC1.16 <- 5      IC1.10 ..... IC2.8 + IC2.15
 6 -> IC1.6              IC1.15 <- 6      IC1.11 ..... IC2.1
 7 -> IC1.7              IC1.14 <- 7      IC1.12 ..... IC2.10
 8 -> IC1.8              IC1.13 <- 8      IC1.13 ..... IC2.6
 9 -> IC1.9              IC1.12 <- 9      IC1.14 ..... IC2.13
10 -> IC2.9                               IC1.15 ..... IC2.3
11 .............................. 11      IC1.16 ..... IC2.11
12 -> IC2.7                               IC1.17 ..... IC2.5
13 -> IC2.12                              IC1.18 ..... IC2.14
14 -> IC1.1                               IC1.19 ..... IC2.2
15 -> IC2.4                               IC1.20 ..... IC2.16
16 -> IC1.20 + IC2.16
17 -> IC1.11 + IC2.1
25 -> IC1.10 + IC2.8 + IC2.15 ... 25

IC1 = 74HC574
IC2 = 74HC257

I think the *HC* is important, because both IC's eat current from PC's
parallel port and the maximum draw from it can be about 10 mA only IIRC.

If you didn't understand the diagram above, drop me a note and I'll try to
explain it better.


3. Installation
===============

 3.1 Requirements
 ----------------

   Atari PARCP:
   ------------

TOS PARCP comes in two versions (PARCP.TTP and PARCP030.TTP).
PARCP.TTP is compiled for MC68000 and therefore will run on every TOS
compatible machine.
PARCP030.TTP is compiled for MC68030, so it will not run on plain ST or STE,
including Mega ST/STE. It however will run on ST equipped with PAK68/3,
and of course on a TT030, Falcon030, Medusa T40/T60, Hades40/60 and all
other clones with processors MC68030/40/60.
Note: FPU is not required to run PARCP030.TTP.

Atari PARCP requires one ST compatible parallel port (driven by Yamaha YM-2149
and by MFP 68901). The Atari compatible parallel port is bidirectional
by nature, so for Atari you don't need any hardware interface...


   Common requirements for IBM PARCP:
   ----------------------------------

PARCP is full 32-bit application thus it requires an Intel 80386 or compatible
CPU (386SX will do, as well as AMD, TI or other equivalents). PARCP can't
run on 80286 or lower CPU, unfortunately (should not be a real drawback
nowadays, I think :-)
PARCP runs fine on all 486SX/DX, Pentium, 6x86 and other compatible
processors, of course.
Note: FPU is not required to run PARCP.EXE.

PARCP requires one IBM PC compatible parallel (= printer) port, naturally.
You must specify parallel port's base address and the port's type to let
PARCP know which port it should work with. Don't be afraid, PARCPCFG will
do this job for you.

   IBM parallel ports:
   -------------------

Several types of parallel ports exist on IBM computers and clones. You can
find out what kind of ports are in your machine by running PARCPCFG.
Generally the better is to use PARCP Cable and a bidirectional, EPP or ECP
parallel port. But if you're going to use LapLink cable only, you need not
to change the type of your parallel port - LapLink cable works with any
parallel port type. In other words, skip this section if you want to use
LapLink cable.

In most modern IBM and compatible machines you can use the Bios setup
(entered right after reboot by pressing the Del key, usually)
for selecting the type of your parallel port. For example on my machine
(Soyo 5VA motherboard) I can choose between SPP, EPP, ECP and ECP with DMA
modes. For PARCP the best is the EPP parallel port mode, though the others
work OK as well. But that again maybe a special facility of my Bios, so
please always select the EPP mode, if possible.

On some older additional ISA cards with parallel port you can usually select
the type of parallel port by setting up some jumpers on the board (see manual
of your motherboard/parallel ports card).

Both parallel port's base address and parallel port type as well as the
possible use of UNI-BI adapter are specified in PARCP configuration file
(see detailed description of that configuration file elsewhere in this
document).

   DOS specific requirements:
   --------------------------

PARCP is designed to be run in a DOS environment. It also works very well
under Windows95 and OS/2 in a DOS session. PARCP is a 32-bit application,
so it needs DPMI services to run in DOS environment. DPMI services are provided
by QEMM, 386MAX, Windows 3.11 and Windows95 (don't know about OS/2).
If you don't have one of these programs you can use CSWDPMI.EXE (it's enclosed
in PARCP distribution archive). All you need is to place CSWDPMI.EXE into
the %PATH% (e.g. C:\DOS) where the PARCP can find it and run automatically.

   Linux-ix86 specific requirements:
   ---------------------------------

PARCP is compiled under Linux-ix86 2.0.27 (Debian Linux 1.2 distribution).
Though I expect PARCP will work with any current Linux distribution (if
not, simply let me know).

In order to get permissions to access the hardware directly it must be run
with root privileges (i.e. run it when you are logged as 'root' - otherwise
it will ends immediately with a core file).


 3.2 PARCP Concepts
 ---------------------

This section explains some concepts you must understand to figure out how to
run it and how to configure the PARCP options.


   3.2.1 Server and Client
   -----------------------

When both computers are connected by the parallel cable, one must become
the PARCP Server and the other is then PARCP Client. The Server serves the
Client (it receives or sends files and does other things Client may want).
The Client is that machine you are sitting in front of, usually. Since
Atari computers' text output is a bit slower compared to IBM computers, I
would suggest to use an IBM computer as Client and Atari as Server, in this
constellation of computers.

As you may see, it's up to you which machine will be the Server and which one
will be the Client - it's not important at all, since PARCP behaves always
exactly the same on all supported platforms. The only thing you should do
is to run PARCP Server before PARCP Client.

Please note: if you run PARCP as Server on both computers by a mistake,
nothing happens. But do not try to run PARCP Clients on both computers,
that *might* be dangerous.


   3.2.2 Running Server
   --------------------

In order to run the PARCP as Server you have to put the -s on the command line
of PARCP (please have a look at the command line parameters section in this
documentation). You can also start PARSERVE program, it will run as PARCP
Server automatically (without any command line parameter).

 Example:
 --------

  Atari users will double click on PARCP.TTP and write the -s parameter into
  the command line window then press Enter. They also can double click on
  PARSERVE.TOS.

  IBM users will use a command line interpreter (either standard COMMAND.COM
  in DOS or Linux's shell or in Windows 'Run program') and type at the line

  parcp -s

  then press Enter. They could also type just

  parserve

  and press Enter.

After starting Server reads the configuration file and waits for connection
with Client. It will wait until a connection occurs or until you press the
Abort Key (it's the combination of Ctrl-leftShift-Alternate in all
operating systems except of the Linux, where it is Control-C).

Running PARCP Server simply waits for Client's commands. If it gets a command,
it does what Client wants and then it waits again for another command.
Server quits when it receives the QUIT command from Client.

You can abort the Server anytime by pressing the Abort Key, however
it's not recommended, since the Client couldn't know then that Server
is down already.

When the Server runs under a singletasking OS (TOS/DOS), the whole computer
is blocked until the Server exits. If you don't like this, then simply run
PARCP Server under a multitasking OS (MiNT, MagiC, Linux, Windows95, OS/2)
where it could run in the background. This way you can continue working with
your Server computer while it copies files in background, though the
transfer speed is slightly lower than under a singletasking OS (this is not
always true, I've been told that under Windows95 the performance sometimes
is even higher than under plain DOS...)


   3.2.3 Running Client
   --------------------

By default, when you run PARCP without any command line parameter it
runs as the PARCP Client. After reading the configuration file and
initialization the Client tries to connect with the Server for 10 seconds.
If it is not successful it exits back to desktop or shell.

After successful connection the PARCP Client:

  o Sends its actual parameters to Server

    Client sends the actual state of ProcessSubDir, CaseSensitive,
    ShowHidden, KeepTimeStamp, KeepAttribs, CRC, OverOlder and OverNewer
    switches as well as BlockSize, DirectoryLines and DirSort values.
    The Server's original values are overriden by Client's ones. That means
    you need to change these values on Client's computer only and they will
    be transferred to Server automatically.

  o Checks the actual size of screen and other computer parameters

    PARCP is smart - it tries to get the number of lines by
    ioctl(TIOCGWINSZ) and if it fails (or is not supported), environment
    variables "LINES" and "COLUMNS" are read. If the variables are not
    defined, PARCP counts on 25 lines with 80 columns (standard TOS/DOS
    screen size).

    Then PARCP finds out the type of computer it currently runs on and
    also the type of operating system by calling uname() function.

  o Executes possible script file

    If a script file was defined (by -B command line parameter or by
    Autoexec directive in PARCP configuration file) and the file exists,
    it's opened and the commands in it are executed line by line. More
    details in section 4.4.

  o Sends possible drag&dropped files

    If there are other command line parameters than -F and -B, they're
    considered as names of files destined for sending to the Server. So
    they're sent and then Client ends. If QuitAfterDrop directive of Client
    is set to Yes, the PARCP Server quits as well, otherwise it will wait
    for another connection.

    This quick and easy way of copying files I call Drag&drop mode, because
    I expect users will use this feature in GUI (such as Atari's desktop or
    Windows95 Explorer) and will copy files by simple dragging them over
    PARCP icon and dropping the files onto it.

  o Starts user interface

    If the Shell directive is set to Yes, ParShell (fullscreen user
    interface) is started, otherwise the CLI (FTP-like) is ready with a
    prompt line.


   3.2.4 CLI commands
   ------------------

PARCP CLI user interface is very similar to a ftp client's interface. If you
are familiar with FTP'ing you may need not to continue reading :-) Anyway,
read the next lines, for sure.

Client's commands are either without any parameter or allow/require one
parameter. There are three types of parameters:

  o filename - that is a 'template' or a 'dir'
    'template' is basically a filename which can contain the wildcards
    'dir' is name of a directory or generally a path to a directory

  o boolean value: you must put there ON or OFF (or Yes and No, if you
    prefer it).

  o a number - that's just the PGLEN command's parameter

 If the parameter is in brackets ("[parameter]"), it can be omitted.
 If you omit the parameter of DIR and LDIR commands they simply display
 all files. If you however omit the parameters of the other commands (HASH,
 CASE, HIDDEN, SUBD, KEEP, ATTRIB, CRC) they simply negate its value (from
 Yes to No and vice-versa) and display its new state.


 About wildcards in 'template':
 ------------------------------

 The wildcards recognized by PARCP in the 'template' parameter are
 compatible with Unix's grep command and allows such specifications as
 *75.zip or * (equivelant to *.* in DOS lingo). Expressions such as [a-e]*t
 would fit the name "apple.crt" or "catspaw.bat" or "elegant".  This allows
 considerably wider flexibility in file specification.

 In the specified template string:
     `*' matches any sequence of characters (zero or more)
     `?' matches any character
     `\' suppresses syntactic significance of a special character
     [SET] matches any character in the specified set,
     [!SET] or [^SET] matches any character not in the specified set.

 A set is composed of characters or ranges; a range looks like 'character
 hyphen character' (as in 0-9 or A-Z).  [0-9a-zA-Z_] is the minimal set of
 characters allowed in the [..] template construct. Other characters are
 allowed (ie. 8 bit characters) if your system will support them (it almost
 certainly will).

 To suppress the special syntactic significance of any of `[]*?!^-\', and
 match the character exactly, precede it with a `\'.


 General rules for all commands:
 -------------------------------

 o If the commands begins with the 'L' letter, it's for the Local machine,
   i.e. for Client. Simple example is the DIR command - DIR lists files
   from remote machine (i.e. Server), LDIR lists files from local machine
   (i.e. Client).

 o Nearly all commands (GET, PUT, DIR, DEL, MD) act in the current working
   directory (CWD). The CWD can be changed by the CD command and enquired
   by the PWD command.

 o The path separator in Unix is forward slash ('/') while in TOS/DOS it's
   the backward slash ('\'). PARCP works with forward slashes internally,
   but understands the back slashes, too.

 o Unix mounts drives under normal directories while TOS/DOS uses the form
   drive:\path. If you want to change CWD on Server, please remember which
   operating system runs on it and use the appropriate form of CD parameter.

 o The resulting CWD is displayed in unified form /drive/path, which simulates
   Unix behaviour and is compatible with MiNT/MagiC way of mounting TOS drives
   under universal drive U:\.

   If you don't understand it, never mind. When PWD says "/d/tools" and Server
   runs on TOS/MiNT/MagiC, you know the working directory is on drive d: in
   path \tools\.


 The list of Client's commands is as follows:
 --------------------------------------------

  QUIT                 quit both Client and Server. Since PARCP Client
                       wants to be similar to FTP, you can use command
                       Bye as an alias for QUIT.

  LQUIT                quit only Client. Server will wait for another
                       Client session.

  EXIT                 exit back to ParShell, if we came to CLI from it.

  PUT     template     send files matching template from Client to Server.
                       If SUBD is OFF, PUT sends just files matching
                       template, subdirectories are skipped. If SUBD is ON,
                       PUT sends all files and directories matching

  GET     template     receive files matching template from Server to
                       Client. See the PUT command details for SUBD
                       description.

  PUTDEL and GETDEL    commands do the same as PUT and DEL command
                       respectively, but successfuly copied files are
                       deleted afterwards. It is similar to MOVE function
                       in ParShell (and MOVE command in DOS, or mv in Linux)

  DIR     [template]   display list of files matching the template in current
                       directory on Server. If you omit the template DIR will
                       list all files. The alias for DIR is ls.

  LDIR    [template]   display list of files matching the template in current
                       directory on Client. If you omit the template LDIR
                       will list all files. Alias for LDIR is lls.

  DEL     template     delete files matching template on Server. If SUBD is
                       OFF DEL deletes just files matching template. If
                       SUBD is ON DEL deletes also directories. Alias is
                       rm.

  LDEL    template     delete files matching template on Client. See the
                       DEL command above for SUBD description. Alias is
                       lrm.

  REN     filename     rename file on Server. REN prompts for new filename.

  LREN    filename     rename file on Client. Similar to REN.

  CD      dir          change directory on Server

  LCD     dir          change directory on Client

  MD      dir          make directory on Server (alias is mkdir)

  LMD     dir          make directory on Client (alias is lmkdir)

  PWD                  prints current working directory on Server

  LPWD                 prints current local working directory on Client

  DRV                  display logical drives on Server

  LDRV                 display logical drives on Client

  HASH    [ON/OFF]     When HASH is On, PARCP displays hash marks (dots :)
                       by every transferred block.
                       When HASH if Off, the transfer progress is displayed
                       by percentage of the length of transferred file.

  CASE    [ON/OFF]     When CASE is On, only files matching the template
                       exactly are processed by PUT, GET, DIR and DEL commands.
                       When CASE is Off, the files on DOS filesystem are
                       listed all in uppercase and upper and lower case in
                       templates are ignored (e.g. "AhOj" matches "Ahoj*").

  HIDDEN  [ON/OFF]     When HIDDEN is On, PARCP displays and process also
                       files with attributes HIDDEN and SYSTEM. This
                       applies to files on MS-DOS filesystem only.
                       HIDDEN is Off by default, i.e. hidden files are not
                       listed nor processed.

  SUBD    [ON/OFF]     SUBD switch affects PUT, GET, DEL and LDEL commands.
                       When SUBD is On, PUT and GET transfers also all
                       matching directories and its files. DEL and LDEL
                       deletes also matching directories. When SUBD is OFF,
                       the commands will transfer or delete just files and
                       not directories.

  KEEP    [ON/OFF]     KEEP On means that timestamp of copied files (date and
                       time of file creation) will be preserved. When KEEP
                       is OFF, the timestamp of copied files are set to the
                       actual time of copying of those files.

  ATTRIB  [ON/OFF]     ATTRIB On will cause the copied files to have
                       preserved the file attributes (on TOS and DOS
                       filesystem there are five attributes: READ ONLY,
                       HIDDEN, SYSTEM, VOLUME and ARCHIVE) and also
                       access rights (on Minix and ext2 filesystems
                       the user, group and other have different read,
                       write and execute rights).
                       ATTRIB is Off by default.

  CRC     [ON/OFF]     When the CRC is ON, PARCP computes a 32-bit Cyclic
                       Redundant Checksum of every copied block for 100%
                       safety of the data transfer. It's disabled by
                       default, since it slows the transfer down a little
                       and generally the transfer goes well without any
                       communication errors. But it's theoretically
                       possible to get a damaged file after copying (if the
                       data are lost in the parallel cable), so the CRC
                       directive is here for the absolute safety - when
                       enabled, it will force resending any damaged block
                       up to three times. If a block is sent four times and
                       is always damaged, the transfer is aborted.

  PGLEN   [number]     PGLEN sets the length of view page for DIR command.
                       PARCP is very smart in determining the size of screen
                       (it checks the TIOCGWINSZ and environment variable
                       "LINES") so you shouldn't need the PGLEN command.
                       If you would like to change the length of view page,
                       anyway, do it anytime by PGLEN. With PGLEN 0 the DIR
                       listing never stops.

  SORT    [NnSsDdU]    SORT changes the attribute the dir listing is sorted
                       by. You always specify only one character from the
                       listed. Possible values are

                       N ..... file name (alphabetically from 'a' to 'z')
                       E ..... file extension (the part after the last dot
                               in filename, alphabetically)
                       D ..... date and time stamp of file (newer to older)
                       S ..... file size (from smaller to bigger)
                       U ..... unsorted (i.e. the physical directory order)

                       If you use the lower case of the values above (i.e.
                       n, e, d or s), you get the sorting reversed (i.e.
                       from 'z' to 'a', or from older files to newer, or
                       from bigger to smaller ones).

                       Please note that SORT is one of commands which are
                       available in registered PARCP only.

  OVEROLD [SRA]        this switch (together with OVERNEW) supersedes the
                       old OVER switch. If PARCP while copying a file
                       detects that a file with same name already exists in
                       the destination dir, it checks if the existing file
                       is older or newer than the file being copied. If
                       both files have the same time and date stamp, the
                       shorter is considered to be older (helps when a file
                       was not copied completely).

                       OVEROLD can hold three different values:
                       S ..... Skip the copied file
                       R ..... Replace the existing file
                       A ..... Ask for user's decision

  OVERNEW [SRA]        similar to OVEROLD, but for situation where the
                       destination file is newer than the copied file.

  STAT                 just diplays current settings of switches

  SAVE                 saves current settings into PARCP configuration
                       file. Please note that comments on updated lines
                       will be deleted.


   3.2.5 ParShell
   --------------

ParShell is the new, fullscreen user interface of PARCP 3. It was created
for people not familiar with CLI and FTP commands. You need not to learn
anything in order to use ParShell - first, there are many programs very
similar or identical in ParShell look, and second, the ParShell is very
intuitive even for somebody who never seen Norton Commander in action. Just
press arrow keys, maybe F1 for a short help and that's all. The main
functions are mapped on function keys and are listed at bottom of screen -
so what else you need to know?

Basically, ParShell opens two windows on the screen: left window with
Client's and right window with Server's directory listing. You can browse
through the files with Up and Down arrow keys (for faster movement the
PageUp, PageDown, Home and End keys are also supported). You can also
switch between Client and Server window by pressing the TAB key.

You can also select some files by pressing the Insert key (unselecting is
done by Insert key as well, there are also the plus, minus and asterix keys
on the numeric keypad for faster selecting all files).

When you start a function by F-key press, it acts on the actual file - i.e.
on the file under the cursor. However Copying (F5), Moving (F6) and
Deleting (F7) act differently - if there are some files selected, they are
all copied, moved or deleted. Though if there are no selected files, F5, F6
and F8 affect the actual file (under cursor) as expected.

Complete list of ParShell recognized keypresses:

  Navigation:
  -----------
  Enter    if cursor is on a directory (see the <DIR>), change the current
           directory (listed at top of window) to that. If the name of
           directory is '..' (usually the very first item in file list),
           this is the parent directory and pressign Enter on it will bring
           you one step up in the directory tree.

  ArrowUp    move one line up
  ArrowDown  move one line down
  ArrowLeft  goes up in directory tree
  ArowRight  goes into a folder (just like Enter)

  PageUp   move one page up (on Atari press Shift+ArrowUp)
  PageDn   move one page down (on Atari press Shift+ArrowDown)
  Home     move to the top of file list (on Atari press ClrHome)
  End      move to the bottom of file list
  PadSlash the '/' key on numeric keypad: show list of logical disks

  Autolocator: simply type characters (lowercase!). You can delete the
               autolocator mask by pressing Space or Backspace.

  Selecting of items:
  -------------------
  Insert   select current file (if already selected then unselect)
  PadPlus  the '+' key on numeric keypad: select all files
  PadMinus the '-' key on numeric keypad: unselect all files
  PadStar  the '*' key on numeric keypad: toggle un/selected files

  Autoselector: start typing characters (first one must be uppercase).
                For deleting the autolocator mask press Space or Backspace.

  Functions:
  ----------
  F1       shows brief help
  F2       switch to PARCP CLI (you can get back by the EXIT command)
  F3       view a text file
  F4       edit a text file
  F5       copy actual file (or all selected files) to the other window
  F6       move actual file (or all selected files) - move means first
           copy, then delete
  F7       create directory (it asks for the name of new directory)
  F8       delete actual file (or all selected)
  F9       invokes pop-up menu with other options
  F10      does LQUIT, i.e. quits PARCP Client, but not Server
  F20      does QUIT, i.e. both Client and Server end (F20 = Shift+F10)
  Delete   delete files, just like F8
  Ctrl-R   rereads file list
  Esc key  rereads file list

ParShell also uses two standard user interaction dialog boxes: MessageBox
and EditBox.

  In MessageBox you are presented with a text and several (one to three)
  buttons - you can navigate with Arrow keys (Left and Right) and Tab key
  between them. After choosing the right button you end the MessageBox by
  pressing Enter (or Return) key. You can also directly press a key with
  the first letter of button (for example press 'Y' key for the 'Yes'
  button). If there's a Cancel button, you can use the Esc key for choosing
  that.

  In EditBox you get some text and an edit line with blinking cursor: you
  can navigate in the edit line with Arrow keys (Left and Right) as well as
  with Home and End keys. You can also press Ctrl-Y (or Ctrl-X) for
  deleting whole edit line. You end the editting with Enter (or Return)
  key. If you want to discard changes, press Esc or Undo keys. At any time
  you can also press the F1 key for brief help.


 3.3 State of parallel port
 --------------------------

 Please note: you can easily skip the following section if you're going to
              use LapLink cable with PARCP.

 Standard parallel port is set to output state (all data lines are set for
 output) by default. It's dangerous to connect two parallel ports together
 with the PARCP cable when both ports are in output states. That's why I
 included the program PAR_IN into the PARCP distribution.

 When you run PAR_IN, it reads PARCP configuration file (to find out which
 parallel port you're going to use) and sets the parallel port into INput
 state. When one or both ports are in input states, it's OK to connect them
 by PARCP cable (even when the computers are turned on).

 When PARCP quits it lets the parallel port in input state (that's
 a must, otherwise your ports might be damaged). So after running PAR_IN
 or PARCP itself the port is in input state and everything is fine (you can
 disconnect/reconnect PARCP cable, or just let it be).

 However after rebooting of your computer (by reset, shutdown or power
 off/on) the parallel port is set to output state again. That means: if you
 will use PARCP regularly and have the PARCP cable connected all the time,
 you should put the PAR_IN program into auto start sequence of your
 operating system to ensure that the parallel port is switched to safe
 INput state as soon as possible after power on (or reset).

 I.e.: on ATARI put the PAR_IN.PRG into your \AUTO folder on boot drive. On
 MS-DOS, put a line "PAR_IN.EXE" into your AUTOEXEC.BAT file. In Windows95
 put the PAR_IN.EXE into the StartUp folder.

 If you decide to stop PARCPing and start printing, you should:

 1) remove PARCP cable
 2) turn off computer
 3) connect printer cable
 4) turn on computer

 This is the only suggested method of cables reconnecting (because it is
 strongly prohibited to connect printer cable to running computer).


 3.4 Before running it...
 ------------------------

   Hardware
   --------

Please note that on Atari computers there is no hardware configuration of
PARCP. Atari users can skip this section.

On IBM you must configure PARCP for the actual hardware setup. Start
PARCPCFG, it will show you how many parallel ports you have installed.
Choose on of them by pressing number 1, 2 or 3. PARCPCFG automatically
checks the type of chosen parallel port and then asks you for the parallel
cable type - you can choose between PARCP cable and LapLink cable. At last
PARCPCFG asks you if it can update PARCP configuration file - Yes is the
right answer.

If the parallel port was detected as unidirectional, and you would like to
connect your IBM with Atari computer, you would have to build and use
UNI-BI adapter - though if you are going to connect your computer with
other IBM machines only, you can use LapLink cable thus need not to
build the UNI-BI adapter.

Generally speaking it's better to use PARCP cable for its higher troughput.
LapLink cables are, on the other hand, absolutely safe (you need not to use
PAR_IN). Anyway, if your port is detected as unidirectional and you have
more parallel ports, try another one, it might be bidirectional. If not,
you can always get a cheap (probably second-hand) ISA card with additional,
hopefully bidirectional parallel port.

Before connecting the cable please make sure the computers are on the same
electrical ground otherwise you will get a nice fire in cable and parallel
ports (You have been warned!). Putting both computers' power cables to the
same power outlet is always a good idea.

   Software
   --------

PARCP is configured through a normal ASCII file named "PARCP.CFG" by
default. You can edit it with any plain text editor to change the values
written there.

If PARCP is started and there's no PARCP.CFG file, it's created with the
default values. The default values are mostly OK, however on IBM you are
strongly encouraged to start PARCPCFG first in order to generate (or
update) PARCP.CFG for the current hardware setup (look at the Hardware
specific section in chapter 4.1.1).


 3.5 PAR_IN, PARCPCFG (IBM only)
 -------------------------------

Both programs in IBM version read the PARCP configuration file at startup
in order to find out which parallel port you use for PARCP and how to
program it.

All three programs will accept one command line parameter - a filename of
alternate PARCP configuration file. If there is no command line parameter,
PARCP.CFG is searched (according all those rules - first PARCPDIR, then
home dir and at last actual dir).

Please note that in PARCP you set the alternate config file with '-f'
switch, though PAR_IN and PARCPCFG take directly the first parameter as the
alternate config file.

Example:

PARCPCFG c:\port2.cfg     ... it creates or updates configuration file
                              named port2.cfg

PAR_IN c:\port2.cfg       ... this turns the parallel port to input
                              state

PARCP -f c:\port2.cfg     ... and this finally starts the PARCP with the
                              right config file


4. Configuration
================

The configuration of PARCP is done by editing PARCP.CFG file (it's a plain
ASCII text file). PARCP reads it at startup. It searchs for the PARCP.CFG
at several places:

  o if there's '-f' parameter followed by a filename on command line of
    PARCP, the filename is used as the configuration file for PARCP. There
    are no restrictions on the filename of configuration file - so you can
    have several favourite configurations predefined and choose between
    them when starting PARCP (example: PARCP -f C:\PARCP\config\port2.cfg)

  o PARCP looks for PARCP.CFG where the environment variable PARCPDIR
    points to (example: "PARCPDIR=C:\PARCP\config", PARCP searchs for
    C:\PARCP\config\parcp.cfg)

  o if it fails, PARCP searches for PARCP.CFG in the directory it was run
    from

  o at last it searchs in actual folder

When it finds a valid PARCP.CFG, it will load it. If, however, it doesn't
find the PARCP.CFG file, it will create one in current directory and save
there the default values (handy in case you need to start editing the
PARCP.CFG from scratch).


 4.1 PARCP.CFG directives reference
 ----------------------------------

all tabs, spaces and texts after ';' and '#' up to end of line are ignored.
For boolean variables use either TRUE|FALSE or YES|NO - both answers are
permitted.

    4.1.1 IBM Hardware specific Section
    -----------------------------------

    Please do not edit this section by hand unless you know what you're
    doing. PARCPCFG is able to fill these values for you in comfortable way
    - you just answer two questions, the rest PARCPCFG figures out itself.

 Port           = <addr>    base address of parallel port (in hex!).
                            The default address is 378 (LPT1), other usual
                            addresses are 278 (LPT2) and 3bc (LPT3).

 UNI-BI         = [yes|no]  if YES, PARCP will use routines for UNI-BI HW
                            adapter. Default is NO.

 PortType       = <number>  0 = unidirectional port
                            1 = bidirectional or EPP port (default)
                            2 = ECP port, needs reprogramming to EPP

 CableType      = <number>  1 = PARCP cable. 0 = LapLink cable. Default
                            is PARCP cable.


    4.1.2 General Section
    ---------------------

    This section contains state of several switches (namely SUBD, CASE,
    HIDDEN, OVEROLD, OVERNEW, KEEP, ATTRIB, HASH and CRC). Please look at
    detailed description of these switches to the section 3.2.4).

    Please note that several commands are not available in Shareware
    version - namely FastRoutines (for IBM), DirectoryLines, DirSort and
    Autoexec. Please register, you get full PARCP version.


 FastRoutines   = [yes|no]  if YES, PARCP will use fast assembler routines
                            for communication. The default is YES. Use NO
                            only if you have encountered problems with PARCP
                            communication.

 ProcessSubDir  = [yes|no]  indicates whether to send also subdirectories.
                            Default is YES.

 CaseSensitive  = [yes|no]  if NO, upper and lower cases in filenames are
                            considered to be the same. Default is NO.

 ShowHidden     = [yes|no]  if NO, hidden and other system files on MS-DOS
                            filesystems are not listed and thus not copied
                            nor deleted.

 OverOlder      = [SRA]     what to do if a file with same name already
                            exists. [S]kip, [R]eplace or [A]sk user?
                            For details please look at the OVEROLD CLI
                            command discussion in section 3.2.4

 OverNewer      = [SRA]     similar to OverOlder above. Again please see
                            the section 3.2.4

 KeepTimeStamp  = [yes|no]  if YES, copied files will have the same date
                            and time of creation as have the original files.
                            Default is YES.

 KeepAttribs    = [yes|no]  if YES, copied files will have the same MS-DOS
                            attributes (ReadOnly, Hidden, System, Volume
                            and Archive) or Unix user/group/other
                            read/write/exec permissions (depends on
                            Client's and Server's filesystem).

 HashMark       = [yes|no]  if YES, PARCP will display a hash mark ('.')
                            every transferred block.
                            if NO, PARCP will display the progress
                            in percentage of length of transferred file.

 QuitAfterDrop  = [yes|no]  if YES, Server will exit after receiving
                            drag&dropped files. That's handy for single
                            file copying - just run the Server (usually by
                            a hotkey) and drop a file onto Client's icon...

 CRC            = [yes|no]  if YES, PARCP will copy files with 105% safety

 BlockSize      = <number>  length of transferred block in Kilobytes - the
                            longer block, the faster transfer but the less
                            often the screen gets updated with progress
                            info etc.

 DirectoryLines = <number>  number of lines for directory buffer
                            one line in directory buffer takes 128 bytes of
                            memory. If a directory has more items than is
                            the number of DirectoryLines, the rest of items
                            will not be shown! So put here a good number
                            (default is 256).

                            Please note that in Shareware version the
                            DirectoryLines is limited to number 16 and
                            cannot be changed.

 FileBuffers    = <number>  the number of buffers (one buffer is BlockSize
                            big) for additional file buffering. Default
                            value is 1 (one file buffer). Try to increase
                            this value for better performance.

 Timeout        = <number>  the timeout value in seconds. The default value
                            (10 seconds) should be enough, but increasing
                            this value might help when the response time
                            from Server is too long and Client quits with
                            "Timeout" during DIR or GET commands.

 DirSort        = <char>    sorting rule. See the SORT command discussion
                            in section 3.2.4, please.

 UserName       = Name      here you enter your full name

 KeyCode        = ABCD      and this is the key you get when you register

 Autoexec       = <file>    name of script file (file with PARCP CLI
                            commands). If the file is found, all commands
                            are executed before the PARCP user interface is
                            started (details in section 4.4).

 Shell          = [yes|no]  if yes, ParShell is started - otherwise use the
                            PARCP CLI.


    4.1.3 Debug Section
    -------------------

This is only useful for beta-testers and those who want to examine PARCP's
behaviour, trace internal routines, remember transferred files...
You need to have a "debug" distribution of PARCP for this.

 Debug          = <n>       debug level

 LogFile        = <file>    name of logfile, where all the informations
                            are written into.

 NoLog          = <string>  string of characters

 NoDisplay      = <string>  string of characters



    4.1.4 ParShell Section
    ----------------------

 Please note that this section got its own header in PARCP.CFG: [PARSHELL]


 ANSIfont       = [yes|no]  Atari specific directive - it enables the ANSI
                            semigraphics characters for drawing ParShell
                            interface. It looks better than the '+-|#',
                            though an ANSI font has to be loaded first.
                            For IBM it's not needed, the IBM character set
                            contains semigraphics characters by default
                            thus are always used in IBM PARCP..
                            This directive is set to No by default.

 UseColors      = [yes|no]  PARCP's native colors are white on blue, just
                            like Norton Commander. Though you can have it
                            white on black (or black on white :-), just say
                            UseColors = No

 UseMarks       = [yes|no]  the selected files are highlighted or have
                            different color. ParShell can also put '*' in
                            front of selected files - when UseMarks is Yes.
                            UseMarks is enabled automatically when the
                            current screen does not support colors nor bold
                            mode.

 SmoothScroll   = [yes|no]  just type of scrolling - smooth or jumping. Try
                            to set SmoothScroll to No when the scrolling is
                            too slow for you (most probably for Atari or
                            terminal users).

 ShowSize       = [yes|no]  if yes, size of file is listed

 ShowDate       = [yes|no]  if yes, datestamp of file is listed

 ShowTime       = [yes|no]  if yes, timestamp of file is listed

 Viewer         = <file>    if set, should point to a file viewer. If
                            unset, ParShell will utilize its own internal
                            text viewer.

 Editor         = <file>    if set, should point to a file editor. If
                            unset, you can't edit files.

 TempDir        = <folder>  should point to a place for temporary files -
                            ParShell has to make a copy of file for Viewing
                            or Editting. If unset, you can't view nor edit
                            files.


    4.1.5 PARCP.CFG example
    -----------------------

# configuration file for PARCP 3.20
[PARCP]
FastRoutines = Yes      # Yes => use fast assembler routines
ProcessSubDir = Yes     # Yes => send also files in directories
CaseSensitive = Yes     # Yes => distinguish between upper and lower case in filenames
ShowHidden = Yes        # Yes => list and process files with Hidden attribute set (DOS fs)
KeepTimeStamp = Yes     # Yes => keep the time-stamp of copied file
KeepAttribs = Yes       # Yes => keep the file attributes (ReadOnly, Hidden, System, Volume)
HashMark = Yes          # Yes => print hash-mark every transferred block
QuitAfterDrop = Yes     # Yes => quit the Server after receiving drag&dropped files
CRC = No                # Yes => use control checksum for absolute safety of file transfer
OverOlder = R           # Existing older files: Replace
OverNewer = A           # Existing newer files: Ask user what to do
BlockSize = 50          # number = size of block in kilobytes
DirectoryLines = 200    # number of items in directory listing
FileBuffers = 1         # number of file buffers (1 filebuffer is BlockSize long)
Timeout = 10            # number = timeout in seconds
DirSort = N             # N = directory listing sorted by Names
UserName = User         # your first and last name
KeyCode = key           # your personal keycode
Autoexec = auto.txt     # filename = batch file executed after start of PARCP
Shell = Yes             # Yes => start with fullscreen user interface

[PARSHELL]
UseColors = Yes         # Yes => use colors (white on blue, like Norton Commander)
UseMarks = No           # Yes => mark selected files with asterix
SmoothScroll = Yes      # Yes => scroll contents by lines (might be slow on Atari)
ShowSize = Yes          # Yes => show size of files in directory listing
ShowDate = Yes          # Yes => show datestamp of files in directory listing
ShowTime = No           # Yes => show timestamp of files in directory listing
Viewer =                # filename = external text viewer (empty => use internal viewer)
Editor =                # filename = external text editor
TempDir =               # filepath = path to directory for temporary files


 4.2 Command line parameters
 ---------------------------

Many command line parameters known from previous versions of PARCP have
been eliminated thanks to configuration file. The only valid options are:

        -s                     run PARCP as Server

        -f <configfile>        path to alternate configuration file

        -b <batchfile>

The alternate configuration file can be used for different configuration
sets. When the entered filename of configuration file is valid, the
configuration file will have the highest priority and will be used
instead of other configuration files found elsewhere.

PARCP Server ignores any other parameters on command line.

PARCP Client takes all other words (without the '-' sign) on its command
line as names of files or directories to be sent to the Server. If your
environment supports so called `drag & drop', simply put the files or
directories onto PARCP icon and they will be copied to Server (into the
current working directory of Server). The Client will exit after sending
those files. Whether the Server will quit as well or will wait for another
PARCP session is defined by the directive QuitAfterDrop (see 4.1.2).


 4.3 Configuration under Client
 -------------------------------

Under PARCP Client CLI you can change values of ProcessSubDir (SUBD),
CaseSensitive (CASE), Overwritting (OVER), KeepTimeStamp (KEEP), HashMark
(HASH) and CRC (CRC). All these changes are valid only in the current PARCP
session, after quitting it the values stay as they are in PARCP.CFG.
If you would like to keep the current settings, use the SAVE command to
store your settings into PARCP configuration file.

In ParShell you can change in addition the SmoothScroll option and enter
paths to External file Viewer, Editor and to Temporary directory. Similarly
to the CLI case above - if you want to keep the settings, you must Save
Settings (it's an option in the Pop-up menu - try pressing F9 key).


 4.4 PARCP Script file
 ---------------------

PARCP is able to execute script files. This is a very easy method for
automatizing file transfers and other tasks, without user interaction.
Script file is just a plain text file with PARCP CLI commands. You can
prepare several script files and choose the right one with the '-b' option
on PARCP command line, or with the Autoexec directive of PARCP
configuration file.

Valid PARCP Script may look like this, for example:

-------------start-of-script----------
OVER
DEL C:\WINDOWS\TEMP
MD C:\WINDOWS\TEMP
CD C:\WINDOWS\TEMP
LCD D:\BACKUP
PUT *.ZIP
QUIT
--------------end-of-script-----------

As you may see, script is just several Client CLI commands, line by line.
If it ends with QUIT or LQUIT, PARCP Client ends as well. However if
there's no [L]QUIT command, the PARCP Client finishes processing of script
file and continues with normal run up to ParShell (or CLI, depending
on setup). This way you can, for example, set up your favourite working
directories with simple script:

--script-for-setting-up-PWD-and-LPWD--
CD C:\SOURCE
LCD D:\PARCP\SOURCE
----------------end-------------------


5. Miscellaneous
================

 5.1 DISCLAIMER:
 ---------------

    The author accepts no liability for any damages to users or to third
parties, arising in any way out of the use of the PARCP, PARCP cable and
UNI-BI adapter. USE AT YOUR OWN RISK.
    Do not expect endless support if you are using an unregistered version.
I am always interested in bug reports, however, and any major ones will
probably get fixed.


 5.2 Hints
 ---------

  o you can create your own batch (DOS) or script (Linux) file called e.g.
    PARSERVER which will contain just the 'parcp -s' line. This way you
    could start the Server more easily.

  o if you use PARCP regularly you most probably won't disconnect the PARCP
    cable from computers. Then it's important to start PAR_IN on one or
    both computers after reboot as soon as possible (because every reboot
    of computer sets its parallel ports to output state which is dangerous
    for the other computer connected by PARCP cable). That's why I suggest
    you to put PAR_IN.PRG into your AUTO folder (Atari) or PAR_IN.EXE into
    AUTOEXEC.BAT (DOS) or StartUp folder (Windows95).

  o PARCP STOP key is defined: Control-LeftShift-Alternate (press and hold
    all three keys at once) in TOS/DOS or Control-C in Linux. This STOP key
    aborts PARCP Server (anytime) and in PARCP Client it stops the current
    transfer of files...


 5.3 Troubleshooting
 -------------------

 What to do if PARCP does not start properly and ends up with one of the
 following messages:

 on MS-DOS:
 ----------
 o "not COFF" - this basically means the file PARCP.EXE was corrupted. This
   is often caused by a virus. Solution is easy - delete PARCP.EXE, kill
   all viruses on your computer and then unzip the original PARCP.ZIP
   archive to get fresh and correct PARCP.EXE.

 o "OMPT: file not found" - your PATH environment variable is not set. Type
   "set PATH=C:\" on your command prompt and the problem should disappear
   (it's a bug in DJGPP start up code, and should be fixed when DJGPP 2.02
   gets out).

 on Linux:
 ---------
 o "Segmentation fault (core dumped)" - this message is from Linux and
   appears when you forget to start PARCP with root privileges. Since PARCP
   accesses PC hardware directly you must be logged as root under Linux to
   use PARCP.

 o "Error opening terminal:" - your TERMINFO variable is not set or
   terminfo database itself is missing. Please get one. On my Debian Linux
   terminfo database was installed, but I had to put
   "export TERMINFO=/etc/terminfo" into my /etc/profile script.


 After PARCP starts but before connects:
 ---------------------------------------
 Some people experience strange connecting problems when try to use PARCP
 first time. These problems usually resolve and then PARCP runs as they
 wish. If you get a proper cable and PARCP is configured properly (on IBM),
 you should be able to connect two machines by simple starting server on
 one machine and then client on the other computer. If an error report
 appears, please note down the "Debug info:" values and send them to me. I
 believe we'll solve your connecting problems quickly.

 Several common causes of connecting problems:
 1) wrong cable
 2) wrong configuration of IBM PARCP (wrong parallel port, wrong cable type)
 3) other resident driver of parallel port

 The last point is important - you should not have installed any special
 parallel port driver which would confuse PARCP. Very often you have
 installed drivers for parallel port harddrives, CD-ROMs, ZIP/JAZ or
 SyQuest removable medias or even network adapters. These drivers have to
 be disabled or uninstalled when PARCP should run, because they usually
 confuse PARCP by stealing data off parallel port.

 BTW, for MiNT users: please disable PLIP.XIF! :-)

 This is also a good reason to start trying PARCP from clean DOS or TOS and
 later (when you're sure cable and software is OK) you'll go into your
 favourite real operating system.

 If these general hints don't help and PARCP is still unable to connect,
 please note the values of "Debug info" on both machines and send it to me
 by e-mail.


 When PARCP runs, but not reliably:
 ----------------------------------
 If random errors occur in PARCP communications, first of all try to
 disable FastRoutines (use FastRoutines = No in your PARCP.CFG file).
 If communications errors persist please ask me for PARCP DEBUG (special
 version which documents all activities and problems into log file).
 Generally you should also use not very long cable (three metres is OK) and
 the cable should have proper shielding).


6. Resources & Acknowledgments
==============================

 6.1 Related programs
 --------------------

   o ST-Trans (c) Atari 1992 (Atari-Atari only)
     With simple GEM interface full of bugs and rock-solid but slow
     routines it's not a competitor for me. However I got inspired by the
     handshake method used there...

   o MiNT-Net (PLIP driver) (c) Kay Roemer (MiNT-MiNT only)
     PLIP driver is a modified SLIP driver for parallel port. Can connect
     two Atari computers running MiNT and MiNT-Net. It's interrupt driven,
     so it's slower than PARCP. It's a real NET, though.

   o HDD_DMN3 (c) MC Soft&Hard 1997 (Atari-PC only)
     HDD Daemon is a complete solution for people with Atari ST without
     harddisk and with an IBM computer. HDD_DMN will connect those
     computers so Atari is able to read IBM's harddisk.
     Interesting piece of software, but a bit complicated for me.

   o PC2Am (c) Michal Kara AKA Lemming (Amiga-PC only)
     PC <-> Amiga parallel network software. Powerful and fast (100%
     assembler). Helped me in the beginning with bidirectional parallel
     ports programming.


 6.2 Resources
 --------------

        PARCP Home Site:
        ===================

  http://cas3.zlin.vutbr.cz/~stehlik/

        Official PARCP site. Up-to-date versions, on-line history file.

  http://users.zln.cz/~pstehlik/

        Backup mirror WWW site. Often much faster than the PARCP Home site.

  RST BBS in Pilsen, Czech Republic, tel. +420-19-227944   NeST 90:1200/7

        Official PARCP BBS.

  Kockens BBS in Sweden, tel. +4646250256

        Another great Atari BBS supporting PARCP.


        PARCP Support Site in UK:
        =========================

  http://www.cyberstrider.org

        CyberSTrider site with latest releases of the shareware and demo
        software.


 6.3 Getting the PARCP cable
 ---------------------------

 The PARCP cable is built and sold by Titan Designs. You can order it at

 Titan Designs Ltd
 6 Witherford Way, Selly Oak
 Birmingham B29 4AX. U.K.

 Tel.: 0121-693 6669
 Fax : 0121-414 1630

 e-mail: TITANWEB@compuserve.com
 http://ourworld.compuserve.com/homepages/TITANWEB

 Alternatively you can get the PARCP cable directly from me. Just send me
 10 DM, 8 US$ or 5 UKP in a (registered) letter and I'll send you the 2
 metres (6 feets) long PARCP cable back.


 6.4 GREETINGS
 -------------

I wish to thank the following persons:

Michal Kara        For the informations about IBM parallel port programing
                   and for complete source code - great inspiration!

Ian D. Gay         For the idea of PARCP Server and Client similar to PARCP
                   and source code of basic CLIENT/SERVER program

J. Kercheval       For his REGEX Globber

Jeffry J.Brickley  For the idea of configuration file stuff
                   and source code rev. 1.1.0 (now fixed to rev. 1.6.3 :-)

Raymond T. Kaya    For the CRC algorithm

Lukas Macura       For his HDD_DMN - it used to be a great competitor :-)

Mike De.Petris     For betatesting and useful suggestions

Koos Kuil          For betatesting, bug reporting and for the 1st registration

Ivan Dimbleby      For betatesting and good idea about selling the cable

People behind GNU  For the great GNU C compiler

Frank Naumann      For his GNU C 2.7.2 MiNT port

DJ Delorie         For his DJGPP (GNU C 2.7.2 DOS port)

Frederic Gidouin   For his PaCifiST doc file I got an inspiration for
                   this documentation from.

Titan Designs      For making and selling the PARCP cable



 6.5 CONTACTING THE AUTHOR
 -------------------------

Feel free to send any bugreports, suggestions, remarks, registrations...

e-mail:      stehlik@cas3.zlin.vutbr.cz
netmail:     90:1200/2@nest.ftn
snail mail:
             Petr Stehlik
             Pod Tlustou 5083
             76001 Zlin
             Czech Republic

