                                    - 43 -
(This is an extract from USER.DOC)

3.9. 8080/Z80 CP/M KERMIT

Implementations of Kermit-80 presently exist for the DEC VT180 (Robin), the DEC
Rainbow-100  and  DECmate  II, the Intertec Superbrain, the Heath/Zenith 89 and
Z100, the Apple II with the Z80 SoftCard, the Osborne 1,  the  TRS-80  II  with
CP/M,  the  Telcon Zorba, and the Vector Graphics CP/M system.  There is also a
"generic" CP/M version that should run any any 8080-compatible CP/M system, but
which may provide less performance.

Warning -- The Rainbow-100 implementation only works at speeds of  up  to  1200
baud!

Since  Kermit-80  runs  on  a  standalone micro, it is always in control of the
screen -- it is always local.  Thus, it always keeps the  screen  updated  with
the  file  name and the packet number, whether sending or receiving.  Kermit-80
can't time out, so if the transmission gets stuck (and you can tell  that  this
has  happened  if the screen fails to change for a while) you can type carriage
return to have the micro do what it  would  have  done  on  a  timeout,  namely
NAK  the  expected packet to cause to foreign host to send it again (or, if the
micro is sending, to retransmit the last packet).    If  the  foreign  host  is
capable  of  timeouts  (as  the  DEC-20  is) this action should not normally be
necessary, but micro/micro or micro/IBM-mainframe transfers could require  this
kind of manual intervention.

Most  CP/M  versions of Kermit only allow files to be received onto the default
disk, the disk you are connected to.  This means in order to receive files onto
your B: disk you must give the CP/M command B: and see  the  B>  prompt  before
running Kermit-80.

CP/M  file  specifications are of the form DEV:NAME.TYP.  DEV is a device, such
as disk A: or B:.  NAME may be up to 8 characters  in  length,  TYP  up  to  3.
NAME.TYP is sent in the Kermit file header packet.

Kermit-80 Commands:

CONNECT Establish  a "virtual terminal" connection to any host that may be con-
        nected to the serial port, i.e. pass all typein to the serial port  and
        display  all input from the serial port on the screen.  Also, emulate a
        DEC  VT52  to  allow  cursor  control,  screen   clearing,   etc.,   if
        VT52-EMULATION  is  ON  (see  below), in which case you should also set
        your terminal type on the remote host to VT52.  (Some versions  emulate
        other  terminals.)  The  escape  character differs from micro to micro.
        Here is a list of the present versions and their default escape charac-
        ters ("^" indicates that the following character is typed while holding
        down the CTRL key), and what terminals they emulate:

          - VT180 (Robin)        ^\ (CTRL-backslash) (VT100)
          - DECmate II           ^\ (CTRL-backslash) (VT100)
          - Rainbow-100          ^\  (CTRL-backslash)  (VT100,  1200b   or
            below)
          - Heath/Zenith 89      ^\ (CTRL-backslash) (VT52)
          - Heath/Zenith Z100    ^\ (CTRL-backslash) (VT52)
          - Apple II (with SoftCard)                  ^]
            (CTRL-rightbracket) (VT52)
          - Osborne 1            ^\ (CTRL-backslash) (ADM3A)
          - TRS-80 II            ^_ (CTRL-downarrow) (ADM3A)
                                    - 44 -


          - SuperBrain           ^] (CTRL-rightbracket) (VT52)
          - Vector Graphics       ~ (tilde) (VT52)
          - Ohio Scientific      ^] (CTRL-rightbracket) (dumb terminal)
          - Telcon Zorba         ^] (CTRL-rightbracket) (VT52)
          - Generic              ^\ (CTRL-backslash) (dumb terminal)

        The available arguments to the escape character are:

        B   Send  a BREAK signal.  No Kermit-80 currently implements this func-
            tion.
        C   Close Connection, return to Kermit-80> command level.
        S   Display Status of connection, but maintain remote connection.
        ?   List available arguments.
        ^]  (or whatever - a second copy of the escape character) Send the  es-
            cape character itself to the remote host.

SEND <filespec>
        Send  file(s)  specified  by  <filespec>  to  the  remote  Kermit.  The
        <filespec> may contain CP/M wildcards.

RECEIVE Receive file(s) from the remote Kermit.  Store  them  under  the  names
        provided in the file headers supplied by the remote host.  If the names
        aren't  legal,  use  as many legal characters from the name as possible
        (see the description of SET FILE-WARNING below).   If  there's  a  con-
        flict,  and FILE-WARNING is ON, warn the user and try to build a unique
        name for the file.  When Kermit-80 is talking to a Kermit Server on the
        host, you may include a filespec in order to request the server to send
        files to you, for example: receive hlp:k*.hlp

LOG <filespec>
        When CONNECTed to a foreign host as a terminal, log the  terminal  ses-
        sion to the specified diskette file.  This functionality depends on the
        remote host's ability to do XON/XOFF flow control.

BYE     When  talking  to  a  remote Kermit Server, this command shuts down the
        server and logs it out, and also exits from Kermit-80 to  CP/M  command
        level.

LOGOUT  Like BYE, but leaves you at Kermit-80 command level.

FINISH  Like  LOGOUT,  but shuts down the remote server without logging it out.
        Leaves you at Kermit-80 command level; subsequent CONNECT commands will
        put you back at host system command level.

SET <parameter> [<value>]
        Set the specified parameter to the specified value.  Possible settings:

        FILE-WARNING ON (or OFF)
                Warn user of  filename  conflicts  when  receiving  files  from
                remote host.  This is especially important when the remote host
                has  less  restrictive  (e.g.  longer) filenames than the local
                micro.  ON by default.

        VT52-EMULATION ON (or OFF)
                When connected as  a  terminal  to  a  foreign  host,  controls
                whether  the  micro  emulates  a VT52 or runs in "native mode".
                                    - 45 -


                VT52  emulation is ON by default, except on micros that already
                have terminal functionality built in, such as the DEC VT180 and
                Rainbow, that act as VT100-series terminals.  The  Osborne  and
                TRS80 Kermits emulate the ADM3A.

        LOCAL-ECHO ON (or OFF)
                When  you  CONNECT to a remote host, you must set LOCAL-ECHO ON
                if the host is half  duplex,  OFF  if  full  duplex.    OFF  by
                default.

        ESCAPE  Change  the  escape character for virtual terminal connections.
                Kermit-80 will prompt you for the new escape  character,  which
                you enter literally.

        BAUD    SuperBrain, VT180, and Osborne only.  Display menu of available
                baud  rates  for serial port, allow user to select one of them.
                For other systems, you must set the port baud rate from CP/M or
                other setup mechanism before running Kermit-80.

        PARITY  Sets parity for outgoing characters to one  of  the  following:
                NONE,  SPACE, MARK, EVEN, or ODD.  On input, if parity is NONE,
                then the 8th bit is kept (as data), otherwise  it  is  stripped
                and  ignored.  The parity setting applies to both terminal con-
                nection and file transfer.

        IBM ON (or OFF)
                Allow the transfer of files to and from the IBM VM/CMS  system.
                This  makes  Kermit-80  wait  for  the IBM turnaround character
                (XON), ignore parity on input, send appropriate parity, and use
                local echoing during CONNECT.  If you don't give this  command,
                IBM  mode  is  OFF.  SET IBM, however, is equivalent to SET IBM
                ON.

        CPM-CREATED-FILE ON (or OFF)
                Indicate to Kermit-80 that the file to be sent was  created  by
                CP/M  (e.g. by ED) rather than transferred to the micro by Ker-
                mit from some other kind of system.  If you  do  not  set  this
                flag when sending files created under CPM they may wind up with
                extraneous characters at the end (after a CTRL-Z) on the remote
                host.

The  various  versions  of  KERMIT-80 should be available in the KERMIT area on
your  host  computer  for   downloading,   under   names   like   CPMROBIN.HEX,
CPMHEATH.HEX, etc.  See the section on installing KERMIT for more information.

Work will continue on KERMIT-80.  Some areas that need improvement include:

   1. A  better logging function for capturing remote session transcripts,
      "unguarded" capturing of remote files.  The current  facility  loses
      characters  at  high baud rates.  Double buffering, with larger buf-
      fers, might do the trick.

   2. During terminal emulation, the ability to transmit a BREAK signal to
      the remote host.  Very important for IBM mainframes.

   3. 8th-bit quoting for exchanging binary files with systems that  can't
                                    - 46 -


      control the parity bit.

   4. More commands for servers -- remote directory, type, delete, etc.

   5. Initialization files.

   6. Printer control.

   7. Isolation  of  system-dependent  sections  of  code to allow new im-
      plementations to be added more easily, without even recompiling  the
      system-independent part.


3.10. Generic KERMIT-80

"Generic  Kermit-80" is a implementation of Kermit that should run on any 8080-
compatible CP/M system no modification at all, or perhaps  only  a  minor  one.
Unlike   other  Kermit-80  implementations,  it  contains  no  system-dependent
manipulation of the serial port or keyboard.  All I/O  is  done  with  standard
CP/M  BIOS  calls,  and I/O redirection is done using the CP/M IOBYTE function,
which, according to the Digital Research CP/M Operating System  Manual,  is  an
optional  feature  of  any particular CP/M implementation.  If your system does
not provide the IOBYTE function, Generic Kermit-80 will not work;  furthermore,
not all systems that implement IOBYTE do so in the same way.

The  reason all Kermit-80 implementations aren't generic is that a good deal of
speed is sacrificed by getting all services from the operating system.  While a
specific implementation of Kermit-80 may be able to operate at 4800,  9600,  or
even  19200 baud, Generic Kermit will fail to work on some systems at speeds in
excess of 1200 baud.

Generic Kermit also differs from other Kermit-80  implementations  in  that  it
does not do fancy screen control during file transfer; it simply types the file
names,  packet  numbers,  and  messages in sequence across and down the screen.
This works best if you can put your  micro  or  terminal  in  "autowrap"  mode;
otherwise  the  packet  numbers  will  pile  up  in  the  rightmost column; the
filenames and messages will always appear on a new line, however.

Note that VT180, DECmate-II, and Rainbow-100 Kermit are simply  adaptations  of
Generic Kermit that do VT100 (ANSI) screen control during file transfer.

To get Generic Kermit on to your system (if you can't get it on a floppy disk),
use  whatever  procedure is available to you on your micro to download the file
KER:CPMGENERIC.HEX.  The DDT program listed later will do  the  trick  on  most
systems.    DEC Rainbow users who also have access to a VT180 Robin can use the
Robin's Kermit to get Generic Kermit-80 onto the Robin's floppy, which can then
be read directly by the Rainbow.
