home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / a / cpkerm.txt < prev    next >
Text File  |  2020-01-01  |  106KB  |  2,464 lines

  1.  
  2.                     CP/M-80 KERMIT VERSION 4.11 USER GUIDE
  3.  
  4.  
  5.                                   C. Gianone
  6.  
  7.               Columbia University Center for Computing Activities
  8.                            New York, New York 10027
  9.  
  10.  
  11.                                 April 23, 1991
  12.  
  13.  
  14.  
  15.                             Copyright (C) 1981,1991
  16.             Trustees of Columbia University in the City of New York
  17.  
  18.      Permission is granted to any individual or institution to use, copy,
  19.     or redistribute this document so long as it is not sold for profit, and
  20.                   provided this copyright notice is retained.
  21. 1. CP/M-80 KERMIT
  22.  
  23. ********
  24. This document is formatted as an ordinary, plain text ASCII disk file.  Typeset
  25. copies are available in the Kermit User Guide from Columbia University.
  26. Changes should be made to CPKERM.MSS.
  27. ********
  28.  
  29. Program:    Mike Freeman, Bonneville Power Administration, Vancouver, WA, USA,
  30.             with contributions from many others.
  31.  
  32. Language:   8080 Assembler, LASM, M80, or MAC80
  33.  
  34. Version:    4.11
  35.  
  36. Date:       April 1, 1991
  37.  
  38. Documentation:  Christine Gianone, Columbia University, with contributions from
  39.             many others.
  40.  
  41. KERMIT-80 Capabilities At A Glance:
  42.   Local operation:                   Yes
  43.   Remote operation:                  Partial, Auto-receive only
  44.   Login scipts:                      Yes, limited
  45.   Transfer text files:               Yes
  46.   Transfer binary files:             Yes
  47.   Wildcard send:                     Yes
  48.   File transfer interruption:        Yes
  49.   Filename collision avoidance:      Yes
  50.   Can time out:                      Yes
  51.   8th-bit prefixing:                 Yes
  52.   Repeat count prefixing:            No
  53.   Alternate block checks:            Yes
  54.   Terminal emulation:                Yes, VT52 and others
  55.   Communication settings:            Yes
  56.   Support for dial-out modems:       No
  57.   Transmit BREAK:                    Yes; most versions
  58.   IBM communication:                 Yes
  59.   Transaction logging:               No
  60.   Debug logging:                     No
  61.   Session logging:                   Yes
  62.   Raw file transmit:                 Yes
  63.   Act as server:                     No
  64.   Talk to server:                    Yes
  65.   Advanced commands for servers:     Yes
  66.   Command/init files:                Yes
  67.   Command macros:                    No
  68.   Local file management:             Yes
  69.   Handle file attributes:            No
  70.   Long packets:                      No
  71.   International Character Sets:      No
  72.   Sliding Windows:                   No
  73.   Printer control:                   Yes, limited
  74.  
  75.  
  76. 1.1. Credits
  77.  
  78. CP/M Kermit is the first of all the Kermit programs.  It was originally written
  79. by Bill Catchings of Columbia University in 1981.  Over the years,
  80. contributions have been added by many people, including Charles Carvalho (ACC),
  81. Bernie Eiben (DEC), Nick Bush (Stevens Institute of Technology), John Bray
  82. (University of Tennessee), Bruce Tanner (Cerritos College), Greg Small
  83. (University of California at Berkeley), Kimmo Laaksonen (Helskini University of
  84. Technology), Bertil Schou (Loughborough University), Jon Warbrick (Plymouth
  85. Polytechnic University), Brian Robertson (Aberdeen University), A.J. Cole
  86. (Leeds University), John Shearwood (Birmingham University), Tony Addyman
  87. (Salford University), Godfrey Nix and Martin Carter (Nottingham University),
  88. Ian Young (Edinburgh University), Chris Miles (Manchester University), Richard
  89. Russell, Dave Roberts, and many, many others.
  90.  
  91. Version 4.11 is the work of Mike Freeman of the Bonneville Power Administration
  92. in Vancouver, WA, USA, with assistance from Russell Lang of Monash University
  93. in Australia, Jay S Rouman of Mt Pleasant MI, and others.
  94.  
  95.  
  96. 1.2. What's New
  97.  
  98. Features added since version 4.09 include:
  99.  
  100.    - SET COLLISION {BACKUP/DISCARD/OVERWRITE/RENAME}
  101.  
  102.    - SET INCOMPLETE-FILES {DISCARD/KEEP}
  103.  
  104.    - Many REMOTE commands, including some REMOTE SET commands
  105.  
  106.    - RENAME command to rename CP/M files from within Kermit-80
  107.  
  108.    - SET RECEIVE/SEND PACKET-LENGTH nn (nn <= 94)
  109.  
  110.    - SET AUTORECEIVE ON now implies that Kermit-80 ALWAYS tries to receive
  111.      more files when a RECEIVE transaction has completed.  The user can
  112.      cancel with ^C.
  113.  
  114.    - QUIT is now a synonym for EXIT.
  115.  
  116.    - STAY is now a synonym for SET NO-EXIT.
  117.  
  118.    - CONNECT, RECEIVE and SEND may be abbreviated to C, R and S,
  119.      respectively.
  120.  
  121.    - Cancellation of TAKE, TYPE, and PRINT commands from the keyboard.
  122.  
  123.    - Many bug fixes.
  124.  
  125.    - Kermit-80 Version 4.11 now supports the Microbee family of computers
  126.      (56K, 64K, 128K and 256K) manufactured by Microbee Systems, Ltd, of
  127.      Australia.
  128.  
  129.    - Kermit-80 now supports the Ampro Little Board system.
  130.  
  131.  
  132. 1.3. Overview of Kermit Operation
  133.  
  134. Use the SET command to establish necessary communication parameters like SPEED
  135. and PARITY.  Use the CONNECT to establish a terminal connection to the remote
  136. computer.  If you are dialing out with a modem, type the necessary dialing
  137. commands to the modem first.  The dialing process can be automated to some
  138. extent using a TAKE command file containing INPUT, OUTPUT, and PAUSE commands.
  139. Then log in to the remote computer or service and conduct a session.
  140.  
  141. To transfer a text file, start the Kermit program on the remote computer and
  142. tell it to SEND the desired file (if uploading) or to RECEIVE (if downloading).
  143. "Escape back" to CP/M Kermit, usually by typing Ctrl-] (hold down the Control
  144. key and press the right bracket key) and then type the letter C. At the CP/M
  145. Kermit prompt type RECEIVE (if you gave a SEND command to the remote Kermit) or
  146. SEND filename (if you gave a receive command to the remote Kermit).
  147.  
  148. To transfer a binary file, give the command SET FILE TYPE BINARY to the remote
  149. Kermit and SET FILE-MODE BINARY to CP/M Kermit before issuing any SEND or
  150. RECEIVE commands.
  151.  
  152. Multiple files of the same type (text or binary) can be transferred in a single
  153. operation using "wildcard notation" (including special characters like asterisk
  154. in the filename).
  155.  
  156. When file transfer is complete, CONNECT back to the remote computer, use the
  157. EXIT command to exit from the remote Kermit program, finish your work on the
  158. remote computer, log out from it, escape back to CP/M Kermit again, and EXIT
  159. from CP/M Kermit.
  160.  
  161. The remote Kermit may also be put into "server mode" to simplify these
  162. operations.  Give the SERVER command to the remote Kermit, escape back to CP/M
  163. Kermit, and then issue SEND commands to send files (upload), GET filename
  164. commands to receive (download) files, REMOTE commands to request various other
  165. services (like directory listings) from the remote Kermit.  When you are done,
  166. give a BYE command to terminate your remote session, or a FINISH command to
  167. tell the remote Kermit to return to its prompt so you can CONNECT back and
  168. conduct further business.
  169.  
  170. That's all there is to it.
  171.  
  172.  
  173. 1.4. Summary of CP/M
  174.  
  175. There are essentially two versions of CP/M - Versions 2.2 and 3.0 (sometimes
  176. also called CP/M PLUS.)
  177.  
  178. CP/M-80 Version 2.2 is run in a single 64 Kbyte "page", usually the largest
  179. amount of memory on Z80 or 8080 systems.  The BIOS (Basic input/output system),
  180. BDOS (Basic Disk Operating System) and CCP (Command console processor) all
  181. share memory with any transient program the user may wish to run.  Some basic
  182. commands are available through the CCP, like DIR, ERA etc,while others are
  183. loaded from disk into the transient program area and run as a program, like PIP
  184. or STAT.
  185.  
  186. CP/M Version 3.0 (or CP/M PLUS) effectively removes the requirement of having
  187. the CCP and BDOS along with a chunk of the BIOS code being resident in the
  188. single 64k byte page of memory.  This allows even more space for programs in
  189. the TPA, but still a little less than the maximum of 64k.  It is substantially
  190. different from CP/M version 2.2, with lots of added features.  Kermit-80 uses
  191. very few additional version 3.0 features, and only where absolutely necessary.
  192.  
  193. CP/M file specifications are of the form DEV:XXXXXXXX.YYY, where
  194.  
  195. DEV:            is a device name, normally the A: or B: floppy.  If omitted,
  196.                 the device name defaults to your connected diskette.
  197.  
  198. XXXXXXXX        is a filename of up to 8 characters.
  199.  
  200. YYY             is the file type, up to 3 characters.
  201.  
  202. File names and file types may contain letters, digits, and some special
  203. characters, including dash, dollar sign, and underscore, but no imbedded
  204. spaces.  Upper and lower case letters are equivalent.
  205.  
  206. "Wildcard" file-group specifications are permitted in file names and file types
  207. (but not device names) within certain contexts; a "*" matches a whole field, a
  208. "?"  matches a single character, including space.  Examples: "*.F??" specifies
  209. all files whose types start with F and are 1, 2, or 3 characters long; "F?.*"
  210. specifies all files whose names start with F and are no more than two
  211. characters long (before the trailing spaces).
  212.  
  213. The five CP/M commands are:
  214.  
  215. DIR file        Lists the the names of the specified files.  The default file
  216.                 specification is "*.*".  Example: "DIR B:*.FOR".
  217.  
  218. ERA file        Erases (deletes) the specified file(s); wildcards allowed.
  219.  
  220. REN new old     Changes the name of a file from old to new, e.g.
  221.                 "REN NEW.FOR=OLD.FOR".
  222.  
  223. SAVE            Saves the specified number of memory blocks into a file.  (Not
  224.                 on CP/M Plus systems)
  225.  
  226. TYPE file       Types the specified file on the screen, e.g.  "TYPE FOO.TXT".
  227.  
  228. The most important programs are:
  229.  
  230. STAT            Gives statistics on disk usage; sets and displays IOBYTE.  (Not
  231.                 on CP/M Plus systems)
  232.  
  233. PIP             Peripheral Interchange Program.  Copies files.  In response to
  234.                 the "*" prompt, give a command of the form
  235.  
  236.                     disk:outfile=disk:infile
  237.  
  238.                 Wildcards ("*" for a whole field or "?"  for a letter) can be
  239.                 used.  Examples: "A:=B:*.*" to copy a whole disk, "A:=B:*.FOR"
  240.                 to copy all the Fortran programs from disk B to disk A. If the
  241.                 disk specification is omitted, your "connected" disk is
  242.                 assumed.  Command line arguments are also accepted, e.g. "PIP
  243.                 A:=B:*.*".
  244.  
  245. There are equivalent commands for CP/M Version 3.0, but are not loaded into
  246. memory in the same way as for CP/M Version 2.2.  For further information on
  247. CP/M, consult your microcomputer manual or a CP/M handbook.
  248.  
  249.  
  250. 1.5. Kermit-80 Description
  251.  
  252. Since Kermit-80 runs on a standalone micro, it is always in control of the
  253. screen -- it is always in "local mode".  It includes a terminal emulator for
  254. establishing a connection to a remote computer or service, and during file
  255. transfer, it keeps the screen updated with the file name and the packet number,
  256. whether sending or receiving.
  257.  
  258. Kermit-80 is capable of an imprecise or "fuzzy" timeout on an input request,
  259. and can break deadlocks automatically.  In most cases, this is not important,
  260. because the Kermit program on the other side is most likely able to handle the
  261. timeouts.  The timeouts done by Kermit-80 are fuzzy because they depend on the
  262. speed of the processor and other factors that can vary from system to system.
  263.  
  264. If, despite the timeout capability, the transmission appears to be stuck (and
  265. you can tell that this has happened if the screen fails to change for a while)
  266. you can type carriage return to have the micro do what it would have done on a
  267. timeout, namely NAK the expected packet to cause theforeign host to send it
  268. again (or, if the micro is sending, to retransmit the last packet).  Micro/
  269. micro or micro/IBM-mainframe transfers could require this kind of manual
  270. intervention.
  271.  
  272. File transfers may be interrupted in several ways.
  273.  
  274. Control-C       This will return you to Kermit-80 command level immediately, so
  275.                 that you can connect back to the remote system, or take any
  276.                 other desired action.
  277.  
  278. Control-X       When sending a file, this will terminate the sending of the
  279.                 current file with a signal to the KERMIT on the other side to
  280.                 discard what it got so far.  If there are more files to be
  281.                 sent, KERMIT-80 will go on to the next one.  When receiving a
  282.                 file, KERMIT-80 will send a signal to the remote KERMIT to stop
  283.                 sending this file.  If the remote KERMIT understands this
  284.                 signal (not all implementations of KERMIT do), it will comply,
  285.                 otherwise the file will keep coming.  In any case, the remote
  286.                 KERMIT will go on to the next file in the group, if any.
  287.  
  288. Control-Z       Like Control-X, except if a file group is being transmitted,
  289.                 this will stop the transmission of the entire group.  If only a
  290.                 single file is being transmitted, it works exactly like
  291.                 Control-X.
  292.  
  293. Carriage Return If you type a carriage return Kermit-80 will resend the current
  294.                 packet.  You may do this repeatedly, up to the packet retry
  295.                 limit (somewhere between 5 and 16 times) for a particular
  296.                 packet.
  297.  
  298.  
  299.                               KERMIT-80 COMMANDS
  300.  
  301. Kermit-80 is an interactive program.  It issues a prompt, you type a command.
  302. The process repeats until you give the EXIT command to leave the program.
  303.  
  304. Commands consist of keywords, filenames, and numbers.  Keywords may be
  305. abbreviated to minumum unique length.  "?" may be typed to request a menu of
  306. the available options for the current field at any point in a command.  ESC may
  307. be typed at any point in a command to fill out the current keyword or filename;
  308. if sufficient characters have not been typed to identify the current field
  309. uniquely, Kermit-80 will sound a beep and allow you to continue from that
  310. point.  Here are Kermit-80's commands:
  311.  
  312. BREAK   Send a BREAK condition to the remote computer.  This is only possible
  313.         if your system is capable of sending breaks.  It is intended to be used
  314.         with PAUSE, OUTPUT, etc and the TAKE command to do wierd and wonderful
  315.         things, like automatic logging on to a remote host.
  316.  
  317. BYE     When talking to a remote Kermit Server, this command shuts down the
  318.         server and logs it out, and also exits from Kermit-80 to CP/M command
  319.         level.
  320.  
  321. CONNECT Establish a terminal connection to the computer, service, or device
  322.         that is connected to the serial port, i.e. pass all typein to the
  323.         serial port and display all input from the serial port on the screen.
  324.         Also, emulate a DEC VT52 to allow cursor control, screen clearing,
  325.         etc., if VT52-EMULATION is ON (see below), in which case you should
  326.         also set your terminal type on the remote host to VT52.  (Some versions
  327.         emulate other terminals.)  The CONNECT command may be abbreviated by
  328.         the single letter C.
  329.  
  330.         Warning: VT52 emulation is only successful if your system or its
  331.         attached terminal can do the same sort of functions as a genuine VT52.
  332.         Things to beware of are cursor addressing, clear to end of page and end
  333.         of line, clear screen, home cursor, and clear-and-home functions.  The
  334.         useability of VT52 emulation depends entirely on how many of the VT52
  335.         functions can be emulated by your micro or terminal.
  336.  
  337.         The escape character differs from micro to micro; when you issue the
  338.         CONNECT command, the micro will print a message telling you how to get
  339.         back.  The escape sequence is generally an uncommonly-used control
  340.         character, like CTRL-backslash or CTRL-rightbracket, followed by a
  341.         single letter "command":
  342.  
  343.         C   Close Connection, return to Kermit-80> command level.
  344.         S   Display Status of connection, but maintain remote connection.
  345.         ?   List available single-character commands.
  346.         0   (zero) Send a null (0) character.
  347.         B   Send a BREAK signal.  Most systems provide this function.
  348.         D   Drop the line.  Used on the Apple with modem.  Automatically closes
  349.             the connection after dropping the line.  The TORCH system
  350.             acknowledges this command but does nothing.
  351.         P   Toggle printer on or off.  Allows you to copy whatever goes to the
  352.             screen to the printer.
  353.         S   Temporarily suspend logging to the log file.
  354.         Q   Restart logging to the log file
  355.         ^]  (or whatever - a second copy of the escape character) Send the
  356.             escape character itself to the remote host.
  357.  
  358. COPY source destination
  359.         Copy a named file to another file, either on the same drive or another
  360.         drive.
  361.  
  362. DIRECTORY
  363.         This provides a directory listing of the specified files.  If no files
  364.         are specified, all files on the default disk are listed.  File sizes,
  365.         in K, are included.  You may interrupt the listing at any time by
  366.         typing any character.  The listing (even if interrupted) concludes with
  367.         a display of the amount of free storage left on the disk.  You can
  368.         inhibit the display of file sizes by SET DIRECTORY OFF.
  369.  
  370. ERASE filespec
  371.         This executes the CP/M ERA command on the specified file(s).  The names
  372.         of the files being erased are not displayed.
  373.  
  374. EXIT    Quit back to CP/M.  The return is made by a JMP 0 (Warmstart).  QUIT is
  375.         a synonym for EXIT.
  376.  
  377. FINISH  Like LOGOUT, but shuts down the remote server without logging it out.
  378.         Leaves you at Kermit-80 command level; subsequent CONNECT commands will
  379.         put you back at host system command level.
  380.  
  381. GET filespec [local_filespec]
  382.         When Kermit-80 is talking to a Kermit Server on the host, you should
  383.         use the GET command to request the server to send files to you, for
  384.         example:
  385.  
  386.             get hlp:k*.hlp
  387.  
  388.         You may specify a local filename if you want to save the remote file
  389.         under a different filename.  Limitation: If you request an alternate
  390.         block check type using the SET BLOCK command, the GET command will not
  391.         communicate it to the remote server.  If you want to have type 2 or 3
  392.         block checks done when getting files from the server, you have to issue
  393.         the appropriate SET BLOCK command to the remote KERMIT before putting
  394.         it in server mode.
  395.  
  396. HELP    List all these commands, with a short description on what the commands
  397.         do.  A question mark will do the same.  If you have already typed a
  398.         command but do not know what the parameters are, type a space (to
  399.         indicate the end of the command) and a question mark.  You will be
  400.         informed of what Kermit can expect at that stage.
  401.  
  402. INPUT seconds text
  403.         Setup a text line and time delay for your CP/M system to expect from
  404.         the host, then wait up to the given number of seconds (approximately)
  405.         for text to be sent to your CP/M-80 system.
  406.  
  407. LOG filespec
  408.         When CONNECTed to a foreign host as a terminal, log the terminal
  409.         session to the specified diskette file.  This functionality depends to
  410.         some extent on the remote host's ability to do XON/XOFF flow control,
  411.         and does not guarantee a complete transcript (after all, that's what
  412.         the KERMIT protocol is for).  The log file is closed when the
  413.         connection is closed by typing the escape character followed by the
  414.         single-character command "C".
  415.  
  416.         It is possible to temporarily suspend logging during connect state.
  417.         Typing an escape sequence can turn file logging on (<escape-character>
  418.         R for Resume) or off (<escape-character> Q for quiet).
  419.  
  420.         Re-entering connect state will re-open the previously opened log file
  421.         and append to that file.
  422.  
  423. LOGOUT  Like BYE, but leaves you at Kermit-80 command level.
  424.  
  425. OUTPUT text
  426.         Send the text to the remote computer as if you had typed it.
  427.  
  428. PAUSE seconds
  429.         If this command is issued your CP/M system will wait a while before
  430.         proceeding with another command.  This is intended for use in TAKE
  431.         commands, where you may want to pause for a while before proceeding
  432.         with the rest of the TAKE file.  The actual delay is very variable
  433.         between systems, and values should be determined on a trial and error
  434.         basis.
  435.  
  436. PRINT   Print a file to the console and printer.  Output to the printer is
  437.         buffered by the Kermit-maintained printer buffer.  This routine is
  438.         identical to TYPE but characters are echoed to the printer as well as
  439.         to the screen.  Suspending and canceling output is as described in
  440.         TYPE.
  441.  
  442. QUIT    Synonym for EXIT.
  443.  
  444. RECEIVE filespec
  445.         Receive file(s) from the remote Kermit, and save them under the names
  446.         provided in the file headers supplied by the remote host.  If a local
  447.         filespec is given, the file is saved under the given filename.  If the
  448.         names aren't legal, use as many legal characters from the name as
  449.         possible (see the description of SET FILE-WARNING below).  If there's a
  450.         conflict, and FILE-WARNING is ON, warn the user and try to build a
  451.         unique name for the file by adding "&" characters to the name.  RECEIVE
  452.         can be abbreviated to the single letter R.
  453.  
  454. REMOTE command
  455.         Send a command to a remote Kermit server.  The results are sent back to
  456.         your CP/M screen.  When two arguments are required and specify less
  457.         than two in the command, you will be prompted for the missing
  458.         arguments.  REMOTE commands include:
  459.  
  460.         REMOTE CD [directory]
  461.             Ask the remote server to change its default directory.  If no
  462.             directory is specified, the server changes to its login directory.
  463.  
  464.         REMOTE COPY file1 file2
  465.             Ask the remote server to copy file1 to file2.
  466.  
  467.         REMOTE RENAME file1 file2
  468.             Ask the remote server to rename file1 to file2.
  469.  
  470.         REMOTE DELETE filespec
  471.             Ask the remote server to delete the named file or files.
  472.  
  473.         REMOTE DIRECTORY [filespec]
  474.             Ask the remote server to display a directory listing of the given
  475.             files or, if the filespec is omitted, all the files in the current
  476.             device or directory.
  477.  
  478.         REMOTE DISK-USAGE
  479.             Ask the remote server to display information about its disk usage
  480.             (such as free or used space).
  481.  
  482.         REMOTE ERASE filespec
  483.             Same as REMOTE DELETE.
  484.  
  485.         REMOTE FINISH
  486.             Same as FINISH.
  487.  
  488.         REMOTE HELP
  489.             Ask the remote server to display a list of the commands it can
  490.             respond to.
  491.  
  492.         REMOTE HOST command
  493.             Ask the remote server to have its operating system execute the
  494.             given command.
  495.  
  496.         REMOTE KERMIT command
  497.             Ask the remote server to execute the given Kermit command, given in
  498.             the server Kermit's command syntax.
  499.  
  500.         REMOTE LOGIN user password
  501.             Log in to a remote Kermit server which has been set up to require a
  502.             username and password.
  503.  
  504.         REMOTE MESSAGE text
  505.             Send the text to the remote server for display on its screen
  506.             (useful with MS-DOS Kermit servers).
  507.  
  508.         REMOTE SET parameter value
  509.             Ask the remote server to set the given parameter to the given
  510.             value, for example REMOTE SET FILE TYPE BINARY.  Type REMOTE SET ?
  511.             to see a list of the REMOTE SET options.
  512.  
  513.         REMOTE SPACE
  514.             Same as REMOTE DISK-USAGE.
  515.  
  516.         REMOTE STATUS
  517.             Ask the remote server to provide a status report.
  518.  
  519.         REMOTE TYPE file
  520.             Ask the remote server to display the named file on the micro's
  521.             screen.
  522.  
  523.         REMOTE WHO [user]
  524.             Ask the remote server for a list of users who are logged in, or if
  525.             a user is specified, for a report on the named user.
  526.  
  527. RENAME file1 file2
  528.         Rename local CP/M file1 to file2.
  529.  
  530. SEND filespec
  531.         Send file(s) specified by filespec to the remote Kermit.  The filespec
  532.         may contain CP/M wildcards.  SEND may be abbreviated to the single
  533.         letter S.
  534.  
  535. SET parameter [value]
  536.         Set the specified parameter to the specified value.  Possible parameter
  537.         settings:
  538.  
  539.         AUTORECEIVE
  540.                 ON (or OFF).  Allows several files to be received without
  541.                 having to type RECEIVE on the receiving machine.  The routine
  542.                 simply looks for activity on the serial line, and if so fudges
  543.                 a RECEIVE command.  The packet sent by the sender will be lost.
  544.  
  545.         BLOCK-CHECK-TYPE option
  546.                 The options are:
  547.  
  548.                 1-CHARACTER-CHECKSUM
  549.                         Normal, default, standard 6-bit checksum.
  550.                 2-CHARACTER-CHECKSUM
  551.                         A 12-bit checksum encoded as two characters.
  552.                 3-CHARACTER-CRC-CCITT
  553.                         A 16-bit CCITT-format Cyclic Redundancy Check, encoded
  554.                         as 3 characters.
  555.  
  556.         BUFFER-SIZE value
  557.                 This allows you to set a buffer size during transfer of data.
  558.                 On some systems it takes so long that the remote end times out
  559.                 while the local system is reading or writing to disk.  The size
  560.                 is the number of 128 disk sectors (nominal) and can be from 1
  561.                 (128 bytes) to 64 (8 kbytes).
  562.  
  563.                 CP/M-80 filenames will still be mapped to uppercase characters.
  564.  
  565.         COLLISION value
  566.                 What to do when a file arrives that has the same name as an
  567.                 existing file.  BACKUP means to rename the existing file.
  568.                 DISCARD means to discard and reject the incoming file.
  569.                 OVERWRITE means to overwrite the existing file.  RENAME means
  570.                 to rename the existing file.
  571.  
  572.         DEBUG   ON (or OFF).  Enables/disables displaying of packets on the
  573.                 screen during file transfer.  Not performed if the QUIET option
  574.                 has been set for the terminal (SET TERMINAL QUIET)
  575.  
  576.         DEFAULT-DISK drive letter
  577.                 This allows you to set the default disk as source and
  578.                 destination of file transfers.  In addition, issuing this
  579.                 command causes you to switch to the specified disk and log it
  580.                 in, write-enabled.  The colon must be included in the disk name
  581.                 (A:).  The selected disk appears in your KERMIT-80 prompt, for
  582.                 instance
  583.  
  584.                     Kermit-80 14A:>
  585.  
  586.         DIRECTORY-FILE-SIZE ON (or OFF).
  587.  
  588.                 By setting DIRECTORY-FILE-SIZE OFF you can get an abreviated
  589.                 listing of your disk drive.  File sizes are not calculated, and
  590.                 five files are shown on a line.  Setting this option ON will
  591.                 show file sizes of each file.
  592.  
  593.                 Both options will list the free space remaining.
  594.  
  595.         ESCAPE  Change the escape character for virtual terminal connections.
  596.                 Kermit-80 will prompt you for the new escape character, which
  597.                 you enter literally.
  598.  
  599.         FILE-MODE option
  600.                 Tells KERMIT-80 what kind of file it is sending, so that KERMIT
  601.                 can correctly determine the end of the file.  SET FILE BINARY
  602.                 means to send all the 128-byte blocks (ie logical CP/M sectors)
  603.                 of the file, including the last block in its entirety; SET FILE
  604.                 ASCII is used for text files, and transmission stops when the
  605.                 first Control-Z is encountered anywhere in the file (this is
  606.                 the CP/M convention for marking the end of a text file).
  607.  
  608.                 SET FILE-MODE DEFAULT tells Kermit to attempt to determine the
  609.                 file type by examining the file being transmitted.  If a
  610.                 Control-Z appears before the last block of the file, it is
  611.                 assumed to be BINARY; if, when the first Control-Z is
  612.                 encountered, the remainder of the file contains only
  613.                 control-Z's, it is assumed to be a text file.  Unfortunately,
  614.                 not all programs fill the remainder of the last record of a
  615.                 text file with Control-Z's, so this algorithm is not always
  616.                 successful.
  617.  
  618.                 If binary transmission is used on a text file, or a compressed
  619.                 file (eg a .DQC file) some extraneous characters (up to 127 of
  620.                 them) may appear at the end of the file on the target system.
  621.  
  622.                 If ASCII transmission is used on a binary file, any 8th bits
  623.                 set will be stripped and a warning sent to the console.  When
  624.                 the first control-Z is encountered, the file is assumed to be
  625.                 at the end, even if it is not.
  626.  
  627.         FLOW-CONTROL ON (or OFF)
  628.                 Sets XON/XOFF flow control on or off.  If set ON the host is
  629.                 expected to respond to an XOFF or XON sent by Kermit-80.  If
  630.                 set off, no flow control is assumed and any XON/XOFF is
  631.                 ignored.
  632.  
  633.         IBM ON (or OFF)
  634.                 Allow the transfer of files to and from an IBM mainframe
  635.                 computer.  This makes Kermit-80 wait for the IBM turnaround
  636.                 character (XON), ignore parity on input, add appropriate parity
  637.                 to output, and use local echoing during CONNECT.  As
  638.                 distributed, KERMIT-80 uses MARK parity for IBM communication.
  639.                 If you don't give this command, IBM mode is OFF.  Since IBM
  640.                 VM/CMS KERMIT does not have timeout capability, SET IBM ON also
  641.                 turns on the "fuzzy timer" automatically.
  642.  
  643.         LOCAL-ECHO ON (or OFF)
  644.                 When you CONNECT to a remote host, you must set LOCAL-ECHO ON
  645.                 if the host is half duplex, OFF if full duplex.  OFF by
  646.                 default.
  647.  
  648.         LOGGING ON (or OFF)
  649.                 Cease or resume logging whenever connect mode is entered.  This
  650.                 is really only applicable after a LOG command is no longer
  651.                 required.
  652.  
  653.         NO-EXIT This command is applicable only for Kermit initiated with a
  654.                 command tail.  For example, if Kermit was initiated by:
  655.  
  656.                 KERMIT ;SEND HELLO;NO-EXIT
  657.  
  658.                 Kermit would first seek out and execute the KERMIT.INI file (if
  659.                 present), then send file HELLO to a remote system.  Usually
  660.                 Kermit would exit back to CP/M, but NO-EXIT over-rides this.
  661.                 STAY is a synonym for NO-EXIT.
  662.  
  663.                 Note the leading semicolon.  This clears leading spaces from
  664.                 the first command.
  665.  
  666.         OUTPUT text-line
  667.                 Send a line of text to the remote computer (or modem).  This
  668.                 simply copies the string to the correct line, and assumes all
  669.                 appropriate parameters have been set to be used, e.g. speed,
  670.                 parity etc.  It is intended for use in TAKE command files.
  671.  
  672.         PARITY option
  673.                 Sets parity for outgoing characters to one of the following:
  674.                 NONE, SPACE, MARK, EVEN, or ODD.  On input, if parity is NONE,
  675.                 then the 8th bit is kept (as data), otherwise it is stripped
  676.                 and ignored.  The parity setting applies to both terminal
  677.                 connection and file transfer.  If you set parity to anything
  678.                 other than none, KERMIT-80 will attempt to use "8th bit
  679.                 prefixing" to transfer binary files.  If the other KERMIT is
  680.                 also capable of 8th bit prefixing, then binary files can be
  681.                 transferred successfully; if not, the 8th bit of each data byte
  682.                 will be lost (you will see a warning on your screen if this
  683.                 happens).
  684.  
  685.         PORT port name
  686.                 Allows you to switch between different communication ports.
  687.                 This command is not available on all systems.  Type SET PORT ?
  688.                 for a list of valid options for your system. (Note:  If your
  689.                 system does not support several ports, this command will return
  690.                 a "Not implemented" error if you try to set a port.)
  691.  
  692.         PRINTER ON (or OFF)
  693.                 Turns copying of CONNECT session to printer on and off.  It is
  694.                 also possible to toggle the printer on/off from the connect
  695.                 state, by typing <escape character> followed by P.
  696.  
  697.         RECEIVE parameter [value]
  698.                 Set a RECEIVE parameter.
  699.  
  700.                 PAD-CHAR
  701.                         Set the PAD character to use while receiving files.
  702.                         Currently a dummy, as for SET SEND PAD-CHAR.
  703.                 PADDING [value]
  704.                         Set the number of PAD characters to use while receiving
  705.                         files.  Same as SET SEND PADDING.
  706.                 START-OF-PACKET [value]
  707.                         Set the default start of Packet character for receiving
  708.                         files.  Apply the same rules and considerations as for
  709.                         SET SEND START-OF-PACKET.
  710.                 PACKET-LENGTH number
  711.                         Tell the other Kermit the longest packet length CP/M
  712.                         Kermit is willing to receive during file transfer.  The
  713.                         maximum length is 94, which is also the default length.
  714.  
  715.         SEND parameter [value]
  716.                 Set a SEND parameter.
  717.  
  718.                 PAD-CHAR
  719.                         Set the Pad character to be used while sending files.
  720.                         It is currently a dummy entry, and does not do
  721.                         anything.
  722.                 PADDING [value]
  723.                         Set the number of PAD-CHARS to be used while sending
  724.                         files.  This too does nothing.
  725.                 START-OF-PACKET
  726.                         Set the default start of packet character to another
  727.                         character than control-A.  This may be necessary on
  728.                         systems (including intervening networks) that trap
  729.                         control-A characters.  Choose a control character not
  730.                         otherwise used, ie not carriage return (13D, ODH), line
  731.                         feed (10D, OAN), tabs (09D, 09H), backspace (08H), and
  732.                         bell (07H) or any other used between you and your
  733.                         remote system.
  734.  
  735.         SPEED value
  736.                 Change the baud rate of the communications port.  This command
  737.                 only works on some systems.  value is the numeric baud rate
  738.                 (300, 9600, etc.) desired.  Type SET SPEED followed by a
  739.                 question mark for a list of supported baud rates.  On systems
  740.                 that do not support this command, you must set the port baud
  741.                 rate from CP/M or other setup mechanism outside of KERMIT-80.
  742.  
  743.         TACTRAP Set the TAC intercept character.  If you are attached to a TAC
  744.                 it will swallow the intercept character (commercial AT sign by
  745.                 default) so Kermit sends it twice.  With this command you can
  746.                 set the intercept character (ie the one to send twice) to
  747.                 another character.
  748.  
  749.         TERMINAL option
  750.                 Select one of the following terminal characteristics:
  751.  
  752.                 OFF     sets emulation off, and its up to the attached terminal
  753.                         to respond to escape sequences sent from the remote
  754.                         host system.
  755.  
  756.                 DUMB    Like off, but carriage return and line feed characters
  757.                         are the only control characters accepted.  All other
  758.                         control characters are simply ignored. (Really a "Glass
  759.                         TTY").
  760.  
  761.                 EXTERNAL
  762.                         Emulation is provided for by a routine in the system
  763.                         dependent part of Kermit.  Attempting to set this
  764.                         option without having and externally supplied routine
  765.                         will returna "Not Implemented" error.
  766.  
  767.                 OFF     All characters are passed directly to the terminal
  768.                         without any interpretation by Kermit.
  769.  
  770.                 VT52    When connected as a terminal to a foreign host, the
  771.                         micro emulates a VT52.  VT52 emulation is set by
  772.                         default, except on micros that already have terminal
  773.                         functionality built in, such as the DEC VT180 and
  774.                         DECmate (these act as VT100-series terminals).  Some
  775.                         systems emulate other terminals, like the ADM3A; see
  776.                         table 1-5.
  777.  
  778.                 QUIET   Do not display any file transfer information onto the
  779.                         console.  This mode is useful if you console takes a
  780.                         long time to update the display.  Only the file name is
  781.                         displayed.  DEBUGging information is not displayed even
  782.                         if selected.
  783.  
  784.                 REGULAR Inverse of QUIET.  All packets etc displayed, as
  785.                         ususal.
  786.  
  787.         TIMER ON (or OFF)
  788.                 Enable or disable the "fuzzy timer".  The timer is off by
  789.                 default, because in the normal case KERMIT-80 is communicating
  790.                 with a mainframe KERMIT that has its own timer.  Mainframe
  791.                 KERMIT timers tend to be more precise or adaptable to changing
  792.                 conditions.  You should SET TIMER ON if you are communicating
  793.                 with a KERMIT that does not have a timer.  You should SET TIMER
  794.                 OFF if you are communicating over a network with long delays.
  795.  
  796.         USER user-number
  797.                 Sets another user number to be active.  Acceptable user numbers
  798.                 are 0 to 31, though it is recommended to use user numbers 0 to
  799.                 15 only.  This is really only useful for Winchester Systems
  800.                 with high disk capacities.
  801.  
  802.         WARNING ON (or OFF)
  803.                 Warn user of filename conflicts when receiving files from
  804.                 remote host, and attempt to generate a unique name by adding
  805.                 "&" characters to the given name.  ON by default, which is
  806.                 equivalent to SET COLLISION RENAME.
  807.  
  808. SHOW    Display all settable parameters.  You will get a page or so of the
  809.         status af all parameters that can be set using the SET command.
  810.  
  811. STATUS  The same function as Show.
  812.  
  813. STAY    Equivalent to SET NO-EXIT.
  814.  
  815. TAKE filespec
  816.         Take characters and commands from the specified file as if they were
  817.         entered from the keyboard.  This is useful if you want to set up a
  818.         batch job.  A command file can send, get, receive, set functions etc
  819.         automatically.  A TAKE command can be interrupted with ^C.
  820.         An automatic "TAKE KERMIT.INI" is executed from the default drive when
  821.         Kermit-80 is loaded.  This can be used to set defaults of band rate,
  822.         parity, filetype, default drive etc.
  823.  
  824.         If KERMIT.INI does not exist, control is given directly to the user.
  825.  
  826. TRANSMIT filespec turnaround
  827.         Send the specified file to the system on the other end of the
  828.         connection as though it were being typed at the terminal, one line at a
  829.         time.  Each line sent is terminated with a carriage return, and any
  830.         line feeds are stripped from the file sent.  After each line has been
  831.         sent Kermit waits for a character string from the host (eg a acrriage
  832.         return).  If not specified, a carriage return is assumed.  No KERMIT
  833.         protocol is involved.  An asterisk (star) is sent to the console for
  834.         every line sent, to indicate how the transfer is progressing.  This is
  835.         useful for sending files to systems that don't have a KERMIT program.
  836.         During transmission, you may type one of these single-character
  837.         commands:
  838.  
  839.         Control-C
  840.             Cease transmission, and drop into terminal emulation mode.
  841.         CR  (carriage return) Re-transmit the previous line.
  842.  
  843. TYPE filespec
  844.         Type a local CP/M file or files on the CP/M screen.  A Control-C will
  845.         cancel the command and return to the Kermit prompt.  A Ctrl-X will
  846.         cancel the current file and go on to the next one, if any.  Typing any
  847.         other character while the file is being displayed will suspend the
  848.         output.  Another character will resume output.
  849.  
  850. VERSION Show the name, edit number, and edit date of several of the modules
  851.         that make up Kermit-80.
  852.  
  853.  
  854. 1.6. Kermit-80 Flavors
  855.  
  856. Many of the systems supported use an external terminal, rather than a built-in
  857. console.  Kermit may be further customized for these systems by defining (at
  858. assembly time) the terminal type to be used.  If the terminal type is unknown
  859. or does not match any of the existing terminal options, the generic "CRT"
  860. option may be selected.  In this case, Kermit cannot do fancy screen control
  861. during file transfer; it simply types the file names, packet numbers, and
  862. messages in sequence across and down the screen.  This works best if you can
  863. put your micro or terminal in "autowrap" mode; otherwise the packet numbers
  864. will pile up in the rightmost column; the filenames and messages will always
  865. appear on a new line, however.  If no specific terminal has been selected,
  866. Kermit cannot do VT52 emulation; it can act as a "dumb terminal" (sometimes
  867. called a "glass TTY"), or else its own built in terminal firmware provides
  868. cursor control functions independent of the Kermit program.
  869.  
  870.  
  871. 1.6.1. Generic Kermit-80
  872.  
  873. "Generic Kermit-80" is an implementation of Kermit that should run on any 8080-
  874. compatible CP/M 2.2 system with no modification at all, or perhaps only a minor
  875. one.  Unlike other Kermit-80 implementations, it contains no system-dependent
  876. manipulation of the serial port.  All I/O is done with standard CP/M BIOS
  877. calls, and I/O redirection is done using the CP/M IOBYTE function, which,
  878. according to the Digital Research CP/M Operating System Manual, is an optional
  879. feature of any particular CP/M implementation.  If your system does not provide
  880. the IOBYTE function, Generic Kermit-80 will not work; furthermore, not all
  881. systems that implement IOBYTE do so in the same way.  The SET PORT command may
  882. be used to select the devices to be used for input and output.  Table 1-1 lists
  883. the options to the SET PORT command and their effects.
  884.  
  885.     -----------------------------------------------------------------------
  886.  
  887.                    SET PORT xxx    input from      output to
  888.                         CRT            CRT:            CRT:
  889.                         PTR            PTR:            PTP:
  890.                         TTY            TTY:            TTY:
  891.                         UC1            UC1:            UC1:
  892.                         UR1            UR1:            UP1:
  893.                         UR2            UR2:            UP2:
  894.  
  895.                     Table 1-1:  Kermit-80 SET PORT Options
  896.  
  897.     -----------------------------------------------------------------------
  898.  
  899. The default is SET PORT PTR.  In all cases, the console (CON:) and list (LST:)
  900. devices used are those selected when Kermit is started.
  901.  
  902. The reason all Kermit-80 implementations aren't generic is that a good deal of
  903. speed is sacrificed by getting all services from the operating system.  While a
  904. specific implementation of Kermit-80 may be able to operate at 4800, 9600, or
  905. even 56 Kilo baud, generic Kermit will fail to work on some systems at speeds
  906. in excess of 1200 baud.  In addition, many features of Kermit require more
  907. specific knowledge of the hardware involved.  Generic Kermit cannot send a
  908. BREAK signal, or change the baud rate, for example.
  909.  
  910.  
  911. 1.6.2. CP/M 3 Kermit
  912.  
  913. CP/M-3 Kermit (also known as CP/M-Plus Kermit) is a version of generic
  914. Kermit-80, and should run on most CP/M-3 (CP/M-Plus) systems.  It uses the
  915. auxilliary port (AUX:) to communicate to the remote Kermit.  The SET BAUD and
  916. SET PORT commands are not supported; nor can a BREAK be sent.  Like generic
  917. Kermit-80, a terminal may be selected at assembly time.
  918.  
  919.  
  920. 1.6.3. System-Specific Versions
  921.  
  922. There are also many versions of Kermit-80 tailored to specific systems.  Most
  923. of these operate uniformly, but some of them take advantage (or suffer
  924. limitations) of the specific system.  Here are some of the special features for
  925. particular systems:
  926.  
  927. Amstrad: -- Two versions:
  928.  
  929.     PCW 8256
  930.         The PCW 8256/8512 with the serial inerafce attached.
  931.  
  932.     CPC 6128
  933.         The 664 with add on memory and 6128 are both supported.  Both systems
  934.         must run CP/M Plus, so the 664 will need an add on RAM pack and CP/M
  935.         upgrade.  A high speed transfer rate of 38k baud can be used between
  936.         Amstrad computers.
  937.  
  938. ACCESS:
  939.     Access Matrix computer using port J5.  Supports SET BAUD-RATE for rates of
  940.     300-9600 baud.
  941.  
  942. Apple II -- four variations:
  943.  
  944.     APMMDM:
  945.         Apple with Z80 Softcard and Micromodem II in slot 2 Dialout capability
  946.         provided in connect command; user is prompted for phone number if
  947.         carrier is not present.  During connect mode, ^]D drops carrier.  BYE
  948.         command also causes carrier to be dropped.
  949.  
  950.     AP6551:
  951.         Apple with Z80 Softcard, and one of several 6551-based communication
  952.         cards; the slot number is a compile-time parameter (default is slot 2).
  953.         SET BAUD-RATE supported; speeds are 110-19200 baud.
  954.  
  955.     APCPS:
  956.         Apple with Z80 Softcard and CP Multi-Function Card.  The slot number is
  957.         again a compile-time parameter.  SET BAUD-RATE is supported for baud
  958.         rates from 50 baud to 19200 baud.
  959.  
  960.     AP6850:
  961.         Apple II with Z80 Softcard and a 6850-based USART in slot 2-the slot
  962.         being a compile-time parameter.  SET BAUD-RATE is not supported.
  963.  
  964. BBC:
  965.     Acorn Computers BBC Computer with Acorn Z80 second processor running
  966.     CP/M-80.  Supports SET BAUD-RATE and can send breaks.
  967.  
  968. BigBoard II:
  969.     Uses serial port A. To use port B, change mnport, mnprts, and baudrt and
  970.     reassemble.  Can generate BREAK.  SET SPEED supported; speeds are 300-38400
  971.     baud.
  972.  
  973. Cifer:
  974.     Originally coded for Cifer 1886 using the VL: port set as TTYI: and TTYO:
  975.     but works successfully on 18xx and 28xx series machines.
  976.  
  977.     There are now two versions, each with two variations: Either running CP/M
  978.     Version 2.2 or 3.0, and either using the VL: or AUX: ports.  The VL:  port
  979.     version can only use seven bits of data, so parity prefixing is required
  980.     for binary file transfers.  This restriction is removed by using the AUX:
  981.     port.  For those interested, the problem is due to the interprocessor link
  982.     between the video and CPU (!) boards.  The VL: port is on the video board,
  983.     and the AUX: port on the CPU board, and the inter processor link can only
  984.     transfer seven bits of data.
  985.  
  986.     Supports SET SPEED, and can generate breaks on some models with a BREAK
  987.     key.
  988.  
  989. Comart:
  990.     Comart Communicator-Similar to Northstar equipment.  Can generate BREAK.
  991.  
  992. Compupro:
  993.     Based on Kermit 3.x, and has been merged into V4.09
  994.  
  995. CPT-85xx word processors:
  996.     Can generate BREAK.  SET SPEED supported; speeds are 50-9600 baud.
  997.  
  998. Cromemco:
  999.     Cromemco computers with TU-ART card.  Supports SET BAUD-RATE (110-9600
  1000.     baud).
  1001.  
  1002. DEC DECmate II word processor (with Z80 card):
  1003.     Can generate BREAK.
  1004.  
  1005. DEC VT180 (Robin):
  1006.     Three output ports, referred to as COMMUNICATIONS, GENERAL, and PRINTER.
  1007.     Can generate BREAK.
  1008.  
  1009. Digicomp Delphi 100:
  1010.     SET SPEED supported; speeds are 50-19200 baud.
  1011.  
  1012. Discovery:
  1013.     Action Computer Enterprises "Discovery" Multi-user Computer.  Uses Port B
  1014.     on an 83U user board.  Supports SET SPEED for 50-19200 baud.  Can generate
  1015.     BREAK.
  1016.  
  1017. Epson:
  1018.     Epson PX-8 with LCD display.  Although it is quite different in displaying
  1019.     of Packet Information, it works as any other CP/M-80 Kermit.  Supports SET
  1020.     SPEED and can generate BREAK.
  1021.  
  1022. Generic Kermit:
  1023.     Two versions, one for CP/M version 2.2 and version 3.  These systems use
  1024.     IOBYTE flipping (V2.2) and the AUX:  device to communicate to the serial
  1025.     line.  You may have to SET PORT xxx before the version 2.2 will work, as
  1026.     Kermit needs to know what device is the serial line.
  1027.  
  1028. Genie:
  1029.     Eaca Video Genie.
  1030.  
  1031. Heath: Three Versions:
  1032.  
  1033.     H8QUAD
  1034.         for Heath-8 systems with the quad io board.  This system has been
  1035.         derived from V3.x code.  Note that this version will not run "as is" on
  1036.         H89 systems.
  1037.  
  1038.     H89 For Heath-89 machines suports baud rates from 50 to 56,000 baud.
  1039.  
  1040.     Z100
  1041.         For Z-100 running CP/M-85.  This version does not support setting of
  1042.         baud rates.
  1043.  
  1044. Intertec Superbrain: Two Versions:
  1045.  
  1046.     BRAINA
  1047.         For superbrain using AUX port.  Breaks and SET BAUD both supported
  1048.  
  1049.     BRAINM
  1050.         As above, but using the MAIN port.
  1051.  
  1052. Ithaca:
  1053.     Ithaca Intersystems based computer using the VIO card for all IO to the
  1054.     outside world.  The system is strictly speaking a home-brew variant of the
  1055.     Ithaca machine, using an S100 cardcage without a front panel.  It uses the
  1056.     Extended BIOS by EuroMicro of London.  However, I see no reason for this
  1057.     version not running on a genuine Ithaca Intersystems machine.  There are
  1058.     patches needed to the EuroMicro BIOS to make this version work.
  1059.  
  1060. Kaypro:
  1061.     Should work on most Kaypro models, as well as some related systems
  1062.     (Ferguson BigBoard I, Xerox 820).  For the newer Kaypros with multiple
  1063.     ports, Kermit uses the one labeled "serial data"; it cannot use the serial
  1064.     printer or internal modem ports (but it should be possible to modify the
  1065.     values for mnport, mnprts, and baudrt to do this).  Can generate BREAK.
  1066.     SET SPEED supported; speeds are 50-19200 baud.
  1067.  
  1068. Lobo:
  1069.     Lobo MAX-80.  Supports SET SPEED and can generate BREAKS.
  1070.  
  1071. Merlin:
  1072.     British Telecom Merlin M2215 (also Rair Black Box, possibly also the ICL
  1073.     PC?).  Requires a terminal.
  1074.  
  1075. Microbee:
  1076.     Microbee Systems computer made in Australia.  Works on Microbee 56K (Series
  1077.     2 APC), 64K (Computer in a Book), 128K (Dynamic), and 256K (256TC).  Can
  1078.     generate BREAK.  SET BAUD-RATE supported; speeds are 75-9600.  All serial
  1079.     I/O is via software, not hardware.  Simultaneous transmit and receive
  1080.     possible on all speeds except 75/1200, 1200/75, 4800, and 9600.
  1081.  
  1082. Micromate:
  1083.     PMC 101 Micromate.  Supports SET SPEED and can generate BREAK.
  1084.  
  1085. Micromint: Two versions
  1086.  
  1087.     S6  The Ciarcia/Micromint sb-180 board with a 6Mhz procoessor.  System
  1088.         requires a terminal.
  1089.  
  1090.     S9  As above, but with a 9Mhz processor.
  1091.  
  1092. NCR:
  1093.     Decisionmate 5.  Uses the 2651 and is largely the same as the Ithaca
  1094.     Intersystems machine implementation.
  1095.  
  1096. Northstar: -- There are four versions available:
  1097.  
  1098.     NORTHS:
  1099.         Northstar Horizon with HS10-4 board.  Supports SET SPEED and SET PORT.
  1100.  
  1101.     HORIZON:
  1102.         Northstar Horizon using the serial ports on the Mother board.  Can
  1103.         generate BREAK.
  1104.  
  1105.     BASICNS:
  1106.         Basic Northstar Horizon using the printer port.  Can generate BREAK.
  1107.  
  1108.     ADVANT:
  1109.         Northstar Advantage.  Supports SET SPEED and can generate BREAK.  Traps
  1110.         Control-0 in the system filter.
  1111.  
  1112. Morrow Decision I:
  1113.     Uses the Multi-I/O board.  Port 1 is the console, port 3 is the
  1114.     communications line.  SET SPEED supported; speeds are 75-56000 baud.
  1115.  
  1116. Morrow Micro Decision I:
  1117.  
  1118. Nokia MicroMikko:
  1119.     Will not echo control-O (which locks keyboard).  SET SPEED supported;
  1120.     speeds are 75-9600 baud.
  1121.  
  1122. Ohio Scientific:
  1123.     Doesn't have screen control.
  1124.  
  1125. Osborne 1:
  1126.     Uses serial line, not internal modem.  Left-arrow key generates <DEL>
  1127.     ("delete" or "rubout" character) during connect mode.  SET SPEED supported;
  1128.     speeds are 300 and 1200 baud.  Now supports multi-sector buffering.
  1129.  
  1130. Research Machines: Two Versions:
  1131.  
  1132.     RM380ZM:
  1133.         380Z and 5.25" disks supports SET BAUD.RATE
  1134.  
  1135.     RM380ZF:
  1136.         380Z and 8" disks, otherwise as above.
  1137.  
  1138. Sanyo:
  1139.     Sanyo MBC-1100.  This version derived from Kermit V3.x
  1140.  
  1141. ScreenTyper:
  1142.     Details unkown.
  1143.  
  1144. TRS-80: Three versions:
  1145.  
  1146.     TRS80LB:
  1147.         TRS-80 with Lifeboat CP/M
  1148.  
  1149.     TRS80PT:
  1150.         TRS-80 with Pickles and Trout CP/M
  1151.  
  1152.     TRSM4:
  1153.         TRS-80 Model 4 with Montezuma CP/M
  1154.  
  1155. Teletek:
  1156.     Teletek Systemaster. Supports SET BAUD.
  1157.  
  1158. Telcon:
  1159.     TELCON ZOBRA portable computer.
  1160.  
  1161. Torch:
  1162.     Torch Unicorn 5 initially, but the code runs on other Z80 based CP/N (as in
  1163.     Nut!) systems.  It uses the BBC Computer as a "Base processor", and is
  1164.     similar to the BBC version.  The base processors RS423 port is used rather
  1165.     than any built in Modem.  (UK telecoms legislation effectively makes modem
  1166.     control software tricky business...).  Two potential versions exist-one
  1167.     using cursor positioning codes for a MCP and CCCP ROM combination of
  1168.     revision less than 1.00, the other version uses the additional facility
  1169.     MCP/CCCP versions greater than 1.  Supports SET SPEED and can generate
  1170.     BREAKs.
  1171.  
  1172.     Note that binary files must be transferred using SET PARITY to anything
  1173.     other than NONE!  Parity is neither generated nor checked.
  1174.  
  1175. US Micro Sales:
  1176.     S-100-8 based computer.
  1177.  
  1178. Vector Graphics:
  1179.     Vector
  1180.  
  1181. Xerox:
  1182.     Xerox 820.
  1183.  
  1184. Z80MU:
  1185.     Development Kermit on a PC running the Z80MU Z80 and CP/M 2.2 development
  1186.     system.  Allows development of the system independent modules to be done on
  1187.     an IBM PC or clone.  Also allows the generation of new .HEX files, that may
  1188.     then be KERMITed to the target system.  Note:  Not all the BDOS or BIOS
  1189.     routines are supported, so avoid "unusual" BIOS/BDOS calls.  (For example,
  1190.     DIR from within Kermit will fail as one of the BIOS routines returning disk
  1191.     parameters is not supported.)
  1192.  
  1193.  
  1194. 1.7. Installation of Kermit-80
  1195.  
  1196. Kermit-80 was written originally for the Intertec SuperBrain in lowest-common-
  1197. denominator  8080 code with the standard assembler, ASM (single source module,
  1198. no macros, no advanced instructions), so that it could be assembled on any
  1199. CP/M-80 system (the 8080 assembler is distributed as a standard part of
  1200. CP/M-80, whereas the fancier Z80 or macro assemblers are normally commercial
  1201. products).  It has since been modified to run on many other systems as well.
  1202. Kermit-80 should be able to run on any 8080-, 8085- or Z80-based microcomputer
  1203. under  CP/M with appropriate minor changes to reflect the port I/O and screen
  1204. control for the system (see below).
  1205.  
  1206. The proliferation of new systems supported by Kermit-80 made the program grow
  1207. so large and complicated that it had to be broken up into system-independent
  1208. and system-dependent modules, as of version 4 (this was done by Charles
  1209. Carvalho of ACC).  Each module is composed of multiple files.  This has reduced
  1210. the time and disk space necessary for assembly; Kermit-80 may once again be
  1211. assembled on a CP/M system with roughly 250Kbytes of space.  The majority of
  1212. the code does not need to be reassembled to support a new system.
  1213. Unfortunately, it can no longer be assembled with ASM, since ASM does not
  1214. support multiple input files.  To allow it to be assembled on any CP/M system,
  1215. the public-domain assembler LASM is included in the distribution kit. Kermit-80
  1216. may also be assembled with Microsoft's M80 (not supplied).  In theory, any 8080
  1217. assembler supporting the INCLUDE directive ought to work, as well.
  1218.  
  1219. All versions of Kermit-80 are assembled from the same set of sources, with
  1220. system dependencies taken care of by assembly-time conditionals within the
  1221. system-dependent module (eventually, the system-dependent module will itself be
  1222. broken up into multiple files, one for each system).  The most important system
  1223. dependencies are terminal emulation (when CONNECTed to the remote host) and
  1224. screen handling, which are dependent on the individual micro's escape codes
  1225. (these features are table driven and easily modified for other CP/M systems),
  1226. and the lowest level I/O routines for the serial communications port.  The port
  1227. routines are best done only with BDOS calls, but some systems do not allow
  1228. this, primarily because the BDOS routines strip the parity bit during port I/O,
  1229. and the parity bit is used for data when transmitting binary files.
  1230.  
  1231. Kermit-80's I/O routines must check the port status and go elsewhere if no
  1232. input is available; this allows for virtual terminal connection, keyboard
  1233. interruption of stuck transmissions, etc.  On systems that fully implement I/O
  1234. redirection via the optional CP/M IOBYTE facility, this may be done by
  1235. switching the IOBYTE definition.  On others, however, IN/OUT instructions
  1236. explicitly referencing the port device registers must be used.
  1237.  
  1238. CP/M-80 KERMIT versions 3.8 and later include a "fuzzy timer" that allows a
  1239. timeout to occur after an interval ranging from 5 to 20 seconds (depending upon
  1240. the speed of the processor and the operating system routines) during which
  1241. expected input does not appear at the port.  In this case, retransmission
  1242. occurs automatically.  In any case, you may type a carriage return during
  1243. transmission to simulate a timeout when the transfer appears to be stuck.
  1244.  
  1245.  
  1246. 1.7.1. Organization of Kermit-80
  1247.  
  1248. Kermit-80 consists of two modules, each of which is generated from multiple
  1249. source files.  The first module contains the system-independent code; the
  1250. second module is configured for a particular system and merged with the system-
  1251. independent module to produce a customized Kermit-80.
  1252.  
  1253. The distribution kit contains:
  1254.  
  1255.    - the system-independent module, CPSKER.HEX;
  1256.    - the system-dependent modules, CPV*.HEX (see table 1-2 and 1-3);
  1257.    - the source files, CPS*.ASM and CPX*.ASM,
  1258.    - the public-domain CP/M assembler, LASM.*,
  1259.    - the public-domain CP/M load/patch utility, MLOAD.*
  1260.  
  1261. -------------------------------------------------------------------------------
  1262.  
  1263. Symbol  Filename System
  1264. ACCESS  CPVACC  Access Matrix
  1265. ADVANT  CPVADV  Northstar Advantage
  1266. AP6551  CPVAPL  Apple II, Z80 Softcard, 6551 ACIA in serial interface
  1267. AP6850  CPVA65  Apple II, Z80 Softcard, 6850 ACIA in Serial Iiterface
  1268. APMMDM  CPVAPM  Apple II, Z80 Softcard, Micromodem II in slot 2
  1269. APCPS   CPVCPS  Apple II, Z80 Softcard, with CPS multifunction card
  1270. BASICNS CPVBNS  Northstar Horizon (terminal required)
  1271. BBC     CPVBBC  Acorn "BBC" computer with Acorn Z80 second processor
  1272. BBII    CPVBB2  BigBoard II (terminal required)
  1273. BRAINM  CPVBRM  Intertec Superbrain using the main port
  1274. BRAINA  CPVBRA  Intertec Superbrain using the Aux port
  1275. CIFER2  CPVCIF  Cifer 1886 using the VL: Serial port and CP/M V2.2
  1276. CIFER3  CPVCI3  Cifer 1886 using the VL: Serial port and CP/M V3.0
  1277. CIFER2  CPVCA2  Cifer 1886 using the AUX: Serial port and CP/M V2.2
  1278. CIFER3  CPVCA3  Cifer 1886 using the AUX: Serial port and CP/M V3.0
  1279. CMEMCO  CPVCRO  Cromemco with TU-ART card. Terminal required)
  1280. COMART  CPVCOM  Comart Communicator (terminal required)
  1281. COMPRO  CPVPRO  Compupro with Interfacer 4 (or 3).  Terminal required.
  1282. CPC     CPVCPC  Amstrad CPC 664 and 6128 and CP/M 3
  1283. CPM3    CPVCP3  "Generic": CP/M 3.0 (CP/M Plus) systems (terminal req'd)
  1284. CPT85XX CPVCPT  CPT-85xx wordprocessor with CP/M
  1285. DELPHI  CPVDEL  Digicomp Delphi 100 (terminal required)
  1286. DISC    CPVDIS  Action Computer Enterprises "Discovery" (terminal req'd)
  1287. DMII    CPVDM2  DECmate II with CP/M option
  1288. GENER   CPVGEN  "Generic": CPM 2.2 systems with IOBYTE (terminal req'd)
  1289. GENIE   CPVGNI  Video Genie
  1290. H8QUAD  CPVH8Q  Heath-8 with Quad 8 i/o board
  1291. HEATH   CPVH89  Heath/Zenith H89
  1292. HORIZON CPVHOR  Northstar Horizon (terminal required)
  1293. KPII    CPVKPR  Kaypro-II (and 4; probably supports all Kaypro systems)
  1294. LOBO    CPVLBO  Lobo Max-80
  1295.  
  1296. "symbol" is the symbol used to select the target system, in CPVTYP.ASM;
  1297.  
  1298. "filename" is the name under which the module is supplied in the distribution.
  1299.  
  1300.               Table 1-2:  Systems supported by Kermit-80 (Part 1)
  1301.  
  1302. -------------------------------------------------------------------------------
  1303.  
  1304. -------------------------------------------------------------------------------
  1305.  
  1306. Symbol  Filename System
  1307. M2215   CPVMRL  British Telecom Merlin/Rair Black Box (terminal required)
  1308. MBEE    CPVBEE  Microbee
  1309. MDI     CPVMDI  Morrow Decision I (terminal required)
  1310. MIKKO   CPVMIK  MikroMikko
  1311. MMATE   CPVMM   PMC 101 Micromate (terminal required)
  1312. MMDI    CPVUD   Morrow Micro Decision I (terminal required)
  1313. NCRDMV  CPVDMV  NCR Decision Mate V.  (Terminal required?)
  1314. NORTHS  CPVNS   Northstar Horizon with HSIO-4 card (terminal req'd)
  1315. OSBRN1  CPVOSB  Osborne 1
  1316. OSI     CPVOSI  Ohio Scientific
  1317. PCI2651 CPVPCI  Ithaca Intersystems with VI0 card (terminal required)
  1318. PCW     CPVPCW  Amstrad PCW 8256/8512 with serial interface
  1319. PX8     CPVPX8  Epson PX-8
  1320. RM380ZM CPVRMM  Research Machines 380Z with MDS (5.25" discs)
  1321. RM380ZF CPVRMF  Research Machines 380Z with FDS (8" discs)
  1322. ROBIN   CPVROB  DEC VT180
  1323. S1008   CPVUSM  US Microsales S-100-8 (terminal required)
  1324. SANYO   CPVSAN  Sanyo MBC-1100
  1325. SB6     CPVSB6  Micromint SB-180 with 6Mhz CPU (terminal required)
  1326. SB9     CPVSB9  Micromint SB-180 with 9Mhz CPU (terminal required)
  1327. SCNTPR  CPVSCN  Screentyper
  1328. TELCON  CPVTEL  TELCON Zobra portable
  1329. TELETEK CPVTET  Teletek Systemaster
  1330. TORCH   CPVTRC  Torch computers BBC-B with Z80 second processors
  1331. TRS80LB CPVTLB  TRS-80 model II with Lifeboat 2.25C CP/M Display
  1332. TRS80PT CPVTPT  TRS-80 model II with Pickles + Trout CP/M Display
  1333. TRSM4   CPVTM4  TRS-80 model IV
  1334. VECTOR  CPVVEC  Vector Graphics
  1335. XER820  CPVXER  Xerox 820
  1336. Z100    CPVZ00  Z-100 under CP/M-85
  1337. Z80MU   CPVZ80  Z80MU development system on a PC
  1338.  
  1339. "symbol" is the symbol used to select the target system, in CPXTYP.ASM;
  1340.  
  1341. "filename" is the name under which the module is supplied in the distribution.
  1342.  
  1343.               Table 1-3:  Systems supported by Kermit-80 (Part 2)
  1344.  
  1345. -------------------------------------------------------------------------------
  1346.  
  1347. -------------------------------------------------------------------------------
  1348.  
  1349. Symbol  Terminal type
  1350. CRT     Dumb terminal type.  Does not do cursor addressing
  1351. ADM3A   Lear Seigler ADM 3A
  1352. ADM22   Lear Seigler ADM 22
  1353. AM230   Ampro 230
  1354. H1500   Hazeltine 1500
  1355. SMRTVD  Netronics Smartvid
  1356. SOROQ   Soroq IQ-120
  1357. TVI912  Televideo 912
  1358. TVI925  Televideo 925 or Freedom 100
  1359. VT52    Dec VT52 or equivalent (H19)
  1360. VT100   Dec VT100 or equivalent
  1361. WYSE    Wyse 100
  1362.  
  1363. "symbol" is the symbol used to select the target system, in CPXTYP.ASM;
  1364.  
  1365. "Terminal type" is the type of terminal "symbol" selects.
  1366.  
  1367.                  Table 1-4:  Terminals supported by Kermit-80
  1368.  
  1369. -------------------------------------------------------------------------------
  1370.  
  1371.  
  1372. 1.7.2. Downloading Kermit-80
  1373.  
  1374. You'll need either a pre-configured .COM file or the system-independent module,
  1375. CPSKER, in binary (.COM) or hex (.HEX) format and the system-dependent overlay
  1376. for your system (from Tables 1-2 and 1-3).  If your system is not listed in the
  1377. table, get the generic CP/M 2.2 Kermit or the generic CP/M 3 Kermit.  If you
  1378. already have a version of Kermit on your micro and you want to install a new
  1379. version, simply use your present version to get the new files.  Transfer the
  1380. files to your system and skip ahead to "merging the modules".
  1381.  
  1382. If you do not have a copy of Kermit on your micro, and you cannot borrow a
  1383. Kermit floppy but you do have access to a mainframe computer with a copy of the
  1384. Kermit-80 distribution, you should read this section.
  1385.  
  1386. There are several ways to get CP/M Kermit from a host system to your micro.
  1387. The easiest is to "download" the necessary "hex" files into your micro's memory
  1388. and then save them on the disk.  If you have a terminal emulator program on
  1389. your micro which can save a copy of the session to disk, connect to your host,
  1390. and type the necessary files.  Exit from the emulator, saving the session log,
  1391. and edit the session log to extract the hex files.  Skip ahead to "merging the
  1392. files".
  1393.  
  1394. The following is a procedure which, though far from foolproof, should allow you
  1395. to get a version of Kermit to your CP/M based micro.  It depends upon the host
  1396. prompt, or at least the first character of the host prompt, being some
  1397. character that cannot appear in a hex file (the valid characters for hex files
  1398. are the digits 0-9, the upper case letters A-F, the colon ``:'', carriage
  1399. return, and line feed).  As soon the prompt character is encountered, the
  1400. transfer will terminate.  If your host does not issue a prompt that will
  1401. accommodate this scheme, you can achieve the same effect by adding an atsign
  1402. ``@'' to the very end of the hex file before sending it from the host.  The
  1403. program below looks for an atsign (the normal DEC-20 prompt, hex 40).
  1404. DECSYSTEM-10 users would look for a dot, hex 2E; VAX/VMS or UNIX users would
  1405. look for a dollar sign, hex 24; UNIX C-Shell users would look for a percent
  1406. sign, hex 26.
  1407.  
  1408.    1. For CP/M 2.2 systems, connect to a floppy disk with plenty of free
  1409.       space.  Run DDT and type in the following (the comments should not
  1410.       be typed in; they are there just to tell you what's happening):
  1411.       (Note that this wont work for CP/M Plus or 3.0 systems!)
  1412.  
  1413.       ----------------------------------------------------------------
  1414. -a100                   ;Begin assembling code at 100
  1415.       0100    LXI H,2FE       ;Where to store in memory
  1416.       0103    SHLD 200        ;Keep pointer there
  1417.       0106    MVI E,D         ;Get a CR
  1418.       0108    MVI C,4         ;Output to PUNCH (send to HOST)
  1419.       010A    CALL 5
  1420.       010D    MVI C,3         ;Input from READER (read from HOST)
  1421.       010F    CALL 5
  1422.       0112    ANI 7F          ;Strip parity bit
  1423.       0114    PUSH PSW        ;Save a and flags
  1424.       0115    MOV E,A         ;Move char to E for echo
  1425.       0116    MVI C,2         ;Output to screen
  1426.       0118    CALL 5
  1427.       011B    POP PSW         ;Restore A and flags
  1428.       011C    CPI 40          ;(or 4E,24,26,etc) System prompt?
  1429.       011E    JZ 127          ;Yes, have whole file in memory
  1430.       0121    CALL 17A        ;No, store another byte
  1431.       0124    JMP 10D         ;Read another byte
  1432.       0127    MVI A,1A        ;Get a Control-Z (CP/M EOF mark)
  1433.       0129    CALL 17A        ;Store it in memory
  1434.       012C    LXI H,300       ;Get memory pointer
  1435.       012F    SHLD 202        ;Store as DMA pointer
  1436.       0132    LDA 201         ;Get 'HI' byte of memory pointer
  1437.       0135    STA 200         ;and store it as 'LO' one
  1438.       0138    XRA A
  1439.       0139    STA 201         ;Zero 'HI' byte (slow *256)
  1440.       013C    MVI C,16        ;Make NEW file
  1441.       013E    LXI D,5C        ;With FCB1
  1442.       0141    CALL 5
  1443.       0144    CALL 15E        ;Write 128 bytes (sector)
  1444.       0147    CALL 15E        ;Write another sector
  1445.       014A    LXI H,FFFF      ;Get a 16-bit Minus One
  1446.       014D    XCHG            ;into DE
  1447.       014E    LHLD 200        ;Get 256-byte counter
  1448.       0151    DAD D           ;Decrement
  1449.       0152    SHLD 200        ;and store back
  1450.       0155    MVI A,2         ;Check if
  1451.       0157    CMP L           ; 256-byte counter down to offset
  1452.       0158    JZ 183          ;Yes, we're done
  1453.       015B    JMP 144         ;Keep writing..
  1454.       015E    LHLD 202        ;Get file-pointer
  1455.       0161    XCHG            ;into DE
  1456.       0162    MVI C,1A        ;Set DMA-address
  1457.       0164    CALL 5
  1458.       0167    MVI C,15        ;Write sector (128 bytes)
  1459.       0169    LXI D,5C        ;using FCB1
  1460.       016C    CALL 5
  1461.       016F    LHLD 202        ;Get file-pointer
  1462.       0172    LXI D,80        ;128-bytes
  1463.       0175    DAD D           ;added to file-pointer
  1464.       0176    SHLD 202        ;and save
  1465.       0179    RET             ;and return
  1466.       017A    LHLD 200        ;Get Memory-pointer
  1467.       017D    MOV M,A         ;Store character
  1468.       017E    INX H           ;Increment Pointer
  1469.       017F    SHLD 200        ;and save
  1470.       0182    RET             ;and return
  1471.       0183    MVI C,10        ;CLOSE file
  1472.       0185    LXI D,5C        ;using FCB1
  1473.       0188    CALL 5
  1474.       018B    JMP 0           ;Force WARM BOOT
  1475.       0179
  1476.       -^C                     ;(Type Control-C) Return to CP/M
  1477.       A>SAVE 1 FETCH.COM      ;Save program, we need to run it twice.
  1478.  
  1479.        Figure 1-1:  Bootstrap program for Kermit-80 and CP/M Version 2.2
  1480.  
  1481.       ----------------------------------------------------------------
  1482.  
  1483.       Alternatively, an assembler source file for this program is
  1484.       distributed with CP/M Kermit as CPKFET.ASM.  You might prefer to
  1485.       type the assembler version in and assemble and load it (ASM CPKFET,
  1486.       LOAD CPKFET, or MASM CPKFET, MLOAD CPKFET), to let the assembler and
  1487.       loader catch any typing errors.
  1488.  
  1489.    2. Connect to your host using a terminal or a terminal emulation
  1490.       program.  Ensure that your host does not have your terminal in "page
  1491.       mode" (does not pause at the end of each screenful).
  1492.  
  1493.    3. Tell the host to display the first hex file (the system-independent
  1494.       module) at your terminal, e.g. give a command like TYPE CPSKER.HEX,
  1495.       without a terminating carriage return.
  1496.  
  1497.    4. Return to your micro by switching the cable from the terminal to the
  1498.       micro, or by terminating the micro's terminal program.
  1499.  
  1500.    5. Make sure your IOBYTE is set so that RDR: and PUN: correspond to the
  1501.       I/O port that is connected to the host (this would normally be the
  1502.       case unless you have done something special to change things).
  1503.  
  1504.    6. Load the program you entered in the first step with DDT, and use it
  1505.       to capture the first hex file:
  1506.  
  1507.           DDT FETCH.COM
  1508.           -icpsker.hex            ;Setup FCB for file CPSKER.HEX
  1509.           -g100,179               ;Execute the program.
  1510.  
  1511.       Now there should be a file CPSKER.HEX on your connected disk.
  1512.  
  1513.    7. Return to the host, and tell it to display the second hex file (the
  1514.       system-dependent module for your configuration).  Again, do not type
  1515.       the terminating carriage return.
  1516.  
  1517.    8. Return to your micro, and run the capture program again:
  1518.  
  1519.           DDT FETCH.COM
  1520.           -icpxovl.hex            ;Setup FCB to create CPXOVL.HEX
  1521.           -g100,179               ;Execute the program.
  1522.  
  1523.       Now there should be a file CPXOVL.HEX on your connected disk.
  1524.       Replace CPXOVL.HEX in this example with the appropriate overlay file
  1525.       for your system.
  1526.  
  1527. Merging the files:
  1528.  
  1529.    1. For purposes of illustration, we will assume the system-dependent
  1530.       overlay is called "cpxovl.hex".  The two hex files may be combined
  1531.       with MLOAD or DDT.  If you already have a running Kermit, you can
  1532.       transfer MLOAD.HEX to your system and create MLOAD.COM by running
  1533.       LOAD.  If you're bootstrapping Kermit, you could transfer MLOAD.HEX
  1534.       to your system the same way you got the other two .HEX files, but
  1535.       it's probably simpler to use DDT to get Kermit running, and get
  1536.       MLOAD later if you need it.
  1537.  
  1538.    2. Using MLOAD, the two pieces may be easily merged:
  1539.  
  1540.           A>mload kerm411=cpsker,cpxovl
  1541.           (Some messages about program size, etc...)
  1542.           A>
  1543.  
  1544.    3. If you don't have MLOAD running, it's a bit more complex:
  1545.           A>ddt cpsker.hex
  1546.           NEXT  PC
  1547.           3500 0100
  1548.           -icpxovl.hex
  1549.           -r
  1550.           NEXT  PC
  1551.           xxxx 0000
  1552.           -^C
  1553.           A>save dd kerm411.com
  1554.  
  1555.       The page count ("dd") used in the SAVE command is calculated from
  1556.       the last address ("xxxx") given by DDT in response to the R command:
  1557.       drop the last two digits and add 1 if they were not zero, then
  1558.       convert from hexadecimal (base 16) to decimal (base 10): 684F
  1559.       becomes 69 hex, which is 105 decimal (5 times 16 plus 9) -- but 6700
  1560.       becomes 67 hex, or 103 decimal (consult an introductory computing
  1561.       book if you don't understand number base conversion).
  1562.  
  1563.    4. If you are using the Z80MU CP/M and Z80 development toolkit on an
  1564.       IBM PC or clone, then follow the same instructions as for a genuine
  1565.       CP/M system.  When you have loaded your file, you will have to ship
  1566.       the .COM or two .HEX files to the target CP/M system. (Possibly
  1567.       using a previous issue of Kermit?)
  1568.  
  1569.    5. Note that CP/M hex files have checksums on each line.  If there were
  1570.       any transmission errors during the downloading process, MLOAD or DDT
  1571.       will notice a bad checksum and will report an error (something like
  1572.       "Illegal Format").  If you get any errors during loading, either fix
  1573.       the hex file locally with an editor, or repeat the transfer.
  1574.  
  1575. You now should have a running version of Kermit-80, called KERM411.COM.
  1576.  
  1577. Test your new Kermit by running it.  If it gives you a prompt, it might be OK.
  1578. (don't delete your old one yet...).  Instead of a prompt, you could get one of
  1579. two messages indicating that the configuration information is invalid:
  1580.  
  1581.     ?Kermit has not been configured for a target system
  1582.  
  1583. or
  1584.  
  1585.     ?Consistency check on configuration failed
  1586.  
  1587. Of course, neither of these messages should appear if you're building Kermit
  1588. from the distribution kit.  The first message indicates that the overlay was
  1589. not found where the system-independent module expected to find it, probably
  1590. because the overlay address is incorrect; the second indicates that the version
  1591. of CPXLNK used in the system-dependent module is incompatible with the system-
  1592. independent module.
  1593.  
  1594. Once you are satisfied that KERMIT40 works correctly, you should rename your
  1595. old KERMIT.COM to something else, like OKERMIT.COM, and rename KERMIT40.COM to
  1596. KERMIT.COM.
  1597.  
  1598.  
  1599. 1.7.3. Assembling Kermit-80 from the sources
  1600.  
  1601. Kermit-80 is built in two pieces from the following files:
  1602.  
  1603. The system-independent files:
  1604.   CPSKER.ASM    header file
  1605.   CPSDEF.ASM    definitions for both KERMIT and KERSYS
  1606.   CPSMIT.ASM    initialization, main loop, miscellaneous commands (BYE, EXIT,
  1607.                 LOG, SET, SHOW, STATUS, and VERSION)
  1608.   CPSCOM.ASM    second part of commands, status and set file
  1609.   CPSPK1.ASM    part 1 of the KERMIT protocol handler (SEND, RECEIVE,
  1610.                 LOGOUT,and FINISH commands)
  1611.   CPSPK2.ASM    part 2 of the KERMIT protocol handler
  1612.   CPSREM.ASM    REMOTE routines (FINISH, BYE and LOGOUT in CPXPK*.ASM)
  1613.   CPSSER.ASM    SERVER routines (for the future)
  1614.   CPSTT.ASM     the transparent commands (TRANSMIT, CONNECT)
  1615.   CPSCPM.ASM    CP/M commands (DIR, ERA, USER, TYPE, PRINT, COPY)
  1616.   CPSWLD.ASM    the wildcard handler
  1617.   CPSCMD.ASM    the command parser
  1618.   CPSUTL.ASM    utility routines and data
  1619.   CPSDAT.ASM    data space and the overlay definitions
  1620.   CPXLNK.ASM    linkage area description
  1621.  
  1622. The system-dependent files:
  1623.   CPXTYP.ASM    system selection
  1624.   CPXLNK.ASM    system overlay specification and jump table
  1625.   CPXCOM.ASM    common routines for all systems
  1626.   CPXSWT.ASM    system selector or switcher
  1627.  
  1628. One of:
  1629.   CPXSYS.ASM    family file for some system-specific code
  1630.   CPXTOR.ASM    family file for Torch, Superbrain, PCI2651 etc
  1631.   CPXNOR.ASM    family file for Northstar and Comart machines
  1632.   CPXMRL.ASM    family file for British Telecom Merlin/Rair Black Box
  1633.   CPXSB.ASM     family file for Micromint SB-180 systems
  1634.   CPXCIF.ASM    family file for Cifer systems
  1635.   CPXHEA.ASM    family file for Heath/Zenith systems
  1636.   CPXAPP.ASM    family file for Apple II systems
  1637.   CPXPCW.ASM    family file for Amstrad PCW 8256/8512 machines
  1638.   CPXBBI.ASM    family file for BigBoard, Kaypro and Xerox 820 systems
  1639.   CPXBEE.ASM    Microbee
  1640.   CPXSYO.ASM    family file for Sanyo MBS-1100 systems
  1641.   CPXTM4.ASM    family file for Tandy Model 4 with CP/M systems
  1642.   CPXGNI.ASM    family file for Video Genie systems
  1643.   CPXPRO.ASM    family file for Compupro systems
  1644.   CPXZ80.ASM    family file for the Z80MU development system
  1645.  
  1646. and if you use a terminal,
  1647.   CPXVDU.ASM    display codes for VDUs etc.  Not always required
  1648.  
  1649. The system-independent module contains all of the system-independent files
  1650. except for CPXLNK.ASM, which is assembled into the system-dependent module to
  1651. provide the structures needed to connect the two modules.  As distributed, the
  1652. system-independent module is named CPSKER.HEX.  If you have a copy of
  1653. CPSKER.HEX, you do not need to reassemble the system-independent module to
  1654. configure Kermit for your system.
  1655.  
  1656. The system-dependent module consists of CPXTYP.ASM, CPSDEF.ASM, CPXLNK.ASM,
  1657. CPXSWT.ASM, CPSCOM.ASM, one of the family files CPXSYS.ASM, CPXTOR.ASM,
  1658. CPXMRL.ASM, CPXSB.ASM, CPXCIF.ASM, CPXHEA.ASM, CPXBBI.ASM, CPXTM4.ASM,
  1659. CPXGNI.ASM, CPXNOR.ASM, CPXAPP.ASM, CPXPCW.ASM, or CPXPRO.ASM, and possibly
  1660. CPXVDU.ASM, if your system uses a terminal for the console.  One copy of the
  1661. system-dependent module is supplied already assembled for each supported
  1662. system; the filename may be obtained from tables 1-2 and 1-3.  If a terminal is
  1663. required for a system, a CRT (glass TTY device) has been selected.
  1664.  
  1665. After assembling the two pieces separately, they are combined with DDT or MLOAD
  1666. into a system-specific Kermit.
  1667.  
  1668. If you want to rebuild the system-independent module, the only change you may
  1669. need to make is to select the assembler to be used, in CPSKER.ASM.  Define one
  1670. of MAC80, M80, or LASM to TRUE to select it as the assembler; the others should
  1671. be defined FALSE.
  1672.  
  1673. Assuming you have the Microsoft Macro Assembler package (M80/L80), you'll need
  1674. to do the following:
  1675.  
  1676.     A>m80 cpsker=cpsker.asm
  1677.     A>l80 /p:100,cpsker,cpsker/n/e
  1678.  
  1679. This will produce CPSKER.COM.
  1680.  
  1681. If you are using LASM instead, do this:
  1682.  
  1683.     A>lasm cpsker
  1684.  
  1685. LASM will generate CPSKER.HEX and CPSKER.PRN.  LASM allows options to be
  1686. specified in the same way as the standard assembler, ASM, so the command
  1687.  
  1688.     A>lasm cpsker.abz
  1689.  
  1690. will read the source files from drive A, send the .HEX file to drive B, and
  1691. suppress the listing file.
  1692.  
  1693. If you are using the Z80MU development system on an IBM PC or clone, then
  1694. assemble your files using either LASM and MLOAD or M80 and L80, as if you were
  1695. using a genuine CP/M-80 system.  Note that you will still have the problem of
  1696. transferring your assembled files to the target CP/M system.
  1697.  
  1698. If you want to generate a system-dependent overlay for a particular system, or
  1699. want to change the terminal supported, you'll need to check three areas in
  1700. CPXTYP.ASM:
  1701.  
  1702. First, the overlay start ADDRESS.  The symbol "ovladr" is EQUated to the
  1703. address of "LNKFLG" in the system-independent module, as the starting address
  1704. of the overlay (7000H for version 4.11).  You'll need to know this value if
  1705. you're building the overlay with M80/L80.  You won't normally need to change
  1706. this value.
  1707.  
  1708. Second, the assembler being used.  Again, define one of MAC80, M80, and LASM to
  1709. be TRUE to select it, and define the others to be FALSE.  The two modules
  1710. (system-independent and system-dependent) do not need to be built with the same
  1711. assembler.
  1712.  
  1713. Third, the system configuration.  Locate your system in tables 1-2 and 1-3,
  1714. then define the appropriate symbol TRUE, and the rest FALSE.  If the system
  1715. comes with a builtin console terminal, define all the terminal switches FALSE.
  1716. If the system uses an external terminal as the console, locate the terminal in
  1717. table 1-5 and define the appropriate symbol TRUE, and the remainder FALSE.  If
  1718. the terminal is not listed in table 1-5, use the CRT switch; in this case, VT52
  1719. emulation is not supported.
  1720.  
  1721. In addition, there are a few general and system-specific symbols which may be
  1722. altered to fit your system:
  1723.  
  1724. APSLOT          For Apple with 6551 ACIA, defines the slot number of the serial
  1725.                 card
  1726.  
  1727. CPUSPD          Processor speed in units of 100KHz (currently used only for
  1728.                 bbII and kpII for timing loops)
  1729.  
  1730. TAC             For users connecting through ARPAnet TACs: set to TRUE if you
  1731.                 wish the default TACTRAP status to be ON. (This may be
  1732.                 overridden with the SET TACTRAP command).  If you're not
  1733.                 connecting through a TAC, set tac to FALSE and ignore tacval.
  1734.  
  1735. TACVAL          For ARPANET TAC users: defines the default TAC intercept
  1736.                 character (may be overridden with the SET TACTRAP command).
  1737.  
  1738. If you are just assembling an existing configuration, you'll need to edit
  1739. CPXTYP.ASM only.  If you are adding support for a new system, you should not
  1740. modify CPSDEF.ASM or CPXLNK.ASM; if you do, you'll have to change the system-
  1741. independent module also.  Eventually, CPXSYS.ASM will be split into separate
  1742. files, each of which will generate one or more related systems.  When this
  1743. happens, you'll want to pick the one closest to your system to use as a
  1744. starting point.
  1745.  
  1746. After editing CPXTYP.ASM as necessary, assemble and link the overlay as
  1747. follows:
  1748.  
  1749.    - With M80 (where "xxxx" is the hex value of ovladr from CPXLNK.ASM):
  1750.  
  1751.          A>m80 cpxtyp=cpxtyp.asm
  1752.          A>l80 /p:xxxx,cpxtyp,cpxtyp/n/x/e
  1753.  
  1754.    - With LASM:
  1755.  
  1756.          A>lasm cpxtyp
  1757.  
  1758. With an IBM PC or clone using the Z80MU softwrae, follow the instructions as if
  1759. you were using a real CP/M system.
  1760.  
  1761. The overlay (CPXTYP.HEX) may then be merged with the system-independent module
  1762. as described above (creating a runnable Kermit from the distribution kit).
  1763.  
  1764. If you are using the Z80MU development system on a PC, and already have a
  1765. running Kermit-80 v3.9 or later, you can merge the two .HEX files into a .COM
  1766. file with LINK80 (TOPS 10/20), MLOAD (Z80MU), L80 (Z80MU), and transfer the new
  1767. .COM file to your micro with Kermit:
  1768.  
  1769.    - Z80MU on a PC and MLOAD:
  1770.  
  1771.          @MLOAD KERNEW=CPSKER,CPXTYP
  1772.  
  1773.    - Z80MU on a PC and C80:
  1774.  
  1775.          @L80 /P:xxxx,CPXTYP,CPXTYP/N/X/E
  1776.  
  1777. producing KERNEW.COM.
  1778.  
  1779. -------------------------------------------------------------------------------
  1780.  
  1781. Symbol         Terminal description
  1782. crt            Basic CRT, no cursor positioning
  1783. adm3a          ADM3A Display or lookalike
  1784. adm22          ADM22 Display or lookalike
  1785. am230          Ampro 230
  1786. h1500          Hazeltine 1500
  1787. smrtvd         Netronics Smartvid-80
  1788. soroq          Soroq IQ-120
  1789. tvi912         TVI 912
  1790. tvi925         TVI 925, Freedom 100
  1791. vt52           VT 52 or VT52 emulator such as Heath H19, H29, etc.
  1792. vt100          VT 100 or emulator (most ANSI terminals should work)
  1793. wyse           Wyse 100
  1794.  
  1795.                    Table 1-5:  Terminals known to Kermit-80
  1796.  
  1797. -------------------------------------------------------------------------------
  1798.  
  1799.  
  1800. 1.8. Adding Support For A New System
  1801.  
  1802. Kermit-80 is built from a common set of source files; the system-dependent
  1803. module makes heavy use of conditional assembly (this complication will be
  1804. removed in future releases).  The system dependencies arise from attempts to
  1805. answer some questions:
  1806.  
  1807.    1. What kind of terminal is to be supported?
  1808.  
  1809.       For many micros, the console is an integral part of the system, but
  1810.       others can use an external terminal.  In either case, the commands
  1811.       to manipulate the screen (position the cursor, erase the screen,
  1812.       etc) must be defined.
  1813.  
  1814.    2. How is the serial line accessed?
  1815.  
  1816.       For systems supporting the IOBYTE function, this is straightforward;
  1817.       the symbol "IOBYT" is defined TRUE.  If the serial line is accessed
  1818.       with IN and OUT instructions, it may be possible to use the simple
  1819.       I/O routines provided.  In this case, the symbol "INOUT" is defined
  1820.       TRUE, the MNPORT and MNPRTS are defined to be the data and control
  1821.       addresses, respectively, and bit masks for testing for "input data
  1822.       available" and "output buffer empty" must be defined.  If the
  1823.       interface is strange, leave IOBYT and INOUT set to FALSE, and
  1824.       provide the I/O routines.
  1825.  
  1826.    3. What initialization is necessary?
  1827.  
  1828.       You may wish to set the baud rate or configure the serial line at
  1829.       startup.  Examples for a number of devices are present.
  1830.  
  1831.    4. What special features are to be supported?
  1832.  
  1833.       You may want to provide the capability to select one of several
  1834.       serial lines with the SET PORT command, or to change the speed of
  1835.       the serial line with the SET SPEED command.  To do this, you'll need
  1836.       to build a command table, using the systems already supported as
  1837.       examples.  The ability to send a BREAK signal is desirable.  Again,
  1838.       examples for several different interfaces (ACIA, SIO, etc) are
  1839.       present.
  1840.  
  1841.    5. Do you want to design an external terminal type?
  1842.  
  1843.       There is a jump entry in the overlay file to allow users to add
  1844.       their own termainl emulator.  If you write the code for such an
  1845.       emulator, you must load this jump address with the address of your
  1846.       emulator, and SET TERMINAL EXTERNAL from within Kermit.  All
  1847.       characters will be passed to this routine during connect mode.
  1848.  
  1849.  
  1850. 1.9. Notes on New Features in Kermit-80 Version 4
  1851.  
  1852.    - Debugging aids:  SET DEBUG ON will add two fields to the SEND/RECEIVE
  1853.      display, labelled "Spack" and "Rpack".  These display the last packet
  1854.      sent and received.  Of course, this slows down the transfer,
  1855.      especially if the console is an external terminal.  SET DEBUG OFF
  1856.      removes these fields.  The VERSION command displays the name, edit
  1857.      number, and edit date of several of the modules that make up Kermit.
  1858.  
  1859.    - TAC support: ARPAnet TACs (and many other communication devices such
  1860.      as terminal concentrators, modems, port contention units, network
  1861.      PADs, etc) use a printing character (like "@") as an intercept
  1862.      character, to allow commands to be issued to the TAC, or modem, etc.
  1863.      In order to send this character to the host, it must be typed twice.
  1864.      The command "SET TAC CHARACTER" to Kermit enables the "TACtrap" and
  1865.      asks the user to specify the TAC intercept character.  This character
  1866.      will be automatically doubled when it appears in Kermit protocol
  1867.      messages (sent by the SEND or RECEIVE commands) or when it appears in
  1868.      a file being sent with the TRANSMIT command.  It is not automatically
  1869.      doubled when typed by the user in CONNECT mode.  "SET TAC ON" enables
  1870.      the TACtrap but does not change the TAC intercept character, which is
  1871.      initially "@".  "SET TAC OFF" disables the TACtrap.
  1872.  
  1873.    - File buffering:  Previous versions of Kermit-80 buffered only one
  1874.      sector (128 bytes) at a time during file transfer operations.  This
  1875.      version buffers 16Kbytes at a time, reducing the number of times the
  1876.      floppy drive must be spun up and down, and increasing the effective
  1877.      throughput of the link.  If the disk transfer rate is too slow,
  1878.      however, the remote Kermit may time out and retransmit packets.  This
  1879.      will show up on the screen in the "Retries:" field; if this occurs
  1880.      after disk activity, you may want to increase the timeout value on
  1881.      the remote Kermit, SET BUFFER <new value> while in Kermit,or
  1882.      reassemble Kermit with a smaller value for MAXSEC (in CPSDEF.ASM)
  1883.      This buffer is also used by the TRANSMIT command; the log file
  1884.      enabled by the LOG command is still written a sector at a time.
  1885.  
  1886. This section is intended for people wanting to implement their own versions of
  1887. Kermit-80 for computers not already defined.
  1888.  
  1889. The system independent code communicates to routines for a specific system
  1890. through a set of tables.  These tables are defined in CPXLNK.ASM, and should
  1891. not be modified between revisions of Kermit.  If an entry is added or deleted,
  1892. then the whole of Kermit-80 needs reassembling.  Make sure that the changes to
  1893. CPXLNK.ASM are duplicated in CPSUTL.ASM, which has the system independent
  1894. equivalent of CPXLNK.ASM.
  1895.  
  1896. The following entries/definitions apply to revision 4.09.  There have been
  1897. three additional entries since revision 4.05.
  1898.  
  1899. The table is split into three sectors; The first section defines two byte
  1900. "words" giving 16 bits of interface data; The second set is a set of jumps to
  1901. various functions, and finally the third set a set of pure data bytes.
  1902.  
  1903.  
  1904. 1.9.1. Interface Data.
  1905.  
  1906.         LNKFLG  Must be first entry in overlay at overlay address.  Is a two
  1907.                 byte address giving the size of the linkage table.  This is
  1908.                 used to check for consistency of overlay's
  1909.  
  1910.         ENTSIZE Length of entry table, also used for consistency checking after
  1911.                 the overlay.  Currently 6
  1912.  
  1913.         SYSEDT  The address of a dollar-terminated string giving the overlay
  1914.                 revision level and date.  Points to a string like:
  1915.                 CPXSYS.ASM(33) 4-JUN-1986$
  1916.  
  1917.         FAMILY  The address of a dollar-terminated string giving the Family
  1918.                 overlay revision level and date.  If the system is in
  1919.                 CPXSYS.ASM rather than a particular Family overlay, it is
  1920.                 simply a pointer to $
  1921.  
  1922.  
  1923.  
  1924.  
  1925. 1.9.2. Jump Table.
  1926.  
  1927. This is split into three main sectors-
  1928.  
  1929.  
  1930.    1. Input/Output routines
  1931.  
  1932.    2. Screen formatting routines
  1933.  
  1934.    3. other system dependent routines
  1935.  
  1936.  
  1937.   SELMDM
  1938.   Parameters    None
  1939.   Returns       None
  1940.   Description   selects the modem port.  Most systems do nothing and simply
  1941.                 return.  HL,DE and BC registers preserved.
  1942.  
  1943.   OUTMDM
  1944.   Parameters    None
  1945.   Returns       None
  1946.   Description   Output the character in E register to the communications line.
  1947.                 BC,DE,HL registers preserved.
  1948.  
  1949.   INPMDM
  1950.   Parameters    None
  1951.   Returns       Accumulator either 0 or character from comms line if available
  1952.   Description   Check modem for character and if so, return it in A. HL,DE,BC
  1953.                 registers preserved, flags and accumulator lost.
  1954.  
  1955.   FLSMDM
  1956.   Parameters    None
  1957.   Returns       None
  1958.   Description   Clear any pending characters in the input buffer from the
  1959.                 modem.  No registers are preserved.
  1960.  
  1961.   SELCON
  1962.   Parameters    None
  1963.   Returns       None
  1964.   Description   Select the console.  This is a null subroutine for most
  1965.                 systems, but for IOBYTE systems selects the console.
  1966.  
  1967.   OUTCON
  1968.   Parameters    Character in E
  1969.   Returns       None
  1970.   Description   Send the character in E to the console.  Any quirks of system
  1971.                 responding in an odd manner should be handled.  No registers
  1972.                 preserved.
  1973.  
  1974.   INPCON
  1975.   Parameters    None
  1976.   Returns       Zero or character in A.
  1977.   Description   Get a character from the console or return a null if no
  1978.                 character to be read.  No registers are preserved.
  1979.  
  1980.   OUTLPT
  1981.   Parameters    Character in E
  1982.   Returns       None
  1983.   Description   Send the character in E to the printer.  The console is
  1984.                 selected.  Only DE registers are preserved
  1985.  
  1986.   LPTSTAT
  1987.   Parameters    None
  1988.   Returns       00H or 0FFH in A register
  1989.   Description   Test the printer to see if it is ready to receive a character
  1990.                 to be printed.  If a 00H is returned then the printer is ready
  1991.                 to receive a character.
  1992.  
  1993.   EXTTER
  1994.   Parameters    Character to be sent to the user supplied terminal emulator in
  1995.                 the E register
  1996.   Returns       None
  1997.   Description   If the user has supplied a terminal emulator in the overlay
  1998.                 code, EXTTER will be a JMP <non zero address>.  If SET TERMINAL
  1999.                 EXTERNAL has been set, all caharcters will be passed verbatim
  2000.                 to this terminal emulator.  If there is no external emulator,
  2001.                 this code will never be called.  The user should reset terminal
  2002.                 conditions on initialisation of both the system and before
  2003.                 CONNECT.  All registers should be preserved.
  2004.  
  2005.   XBDOS
  2006.   Parameters    Any required for calling BDOS
  2007.   Returns       Any expected from the called BDOS routine
  2008.   Description   This is an alternative entry to BDOS.  This entry will also
  2009.                 check the printer status etc.  For full details see the code
  2010.                 for the BDOS trap in CPSUTL.ASM.
  2011.  
  2012.                 2b)
  2013.  
  2014.                 CLRLIN
  2015.   Parameters    None
  2016.   Returns       None
  2017.   Description   Clear the current line on the terminal
  2018.  
  2019.   CLRSPC
  2020.   Parameters    None
  2021.   Returns       None
  2022.   Description   Erase the current position (after a backspace)
  2023.  
  2024.   DELCHR
  2025.   Parameters    None
  2026.   Returns       None
  2027.   Description   Make delete (7FH) look like a backspace.  Some systems do a
  2028.                 backspace, space, backspace automatically others have to
  2029.                 simulate it
  2030.  
  2031.   CLRTOP
  2032.   Parameters    None
  2033.   Returns       None
  2034.   Description   Clear the screen and place the cursor at the top LH corner
  2035.  
  2036.   SCREND
  2037.   Parameters    None
  2038.   Returns       None
  2039.   Description   Place the cursor on the line for the Kermit-80 prompt after a
  2040.                 file transfer.  (Usually line 13)
  2041.  
  2042.   SCRERR
  2043.   Parameters    None
  2044.   Returns       None
  2045.   Description   Move cursor to the error message field on the file transfer
  2046.                 format screen
  2047.  
  2048.   SCRFLN
  2049.   Parameters    None
  2050.   Returns       None
  2051.   Description   Move the cursor to the filename field
  2052.  
  2053.   SCRNP
  2054.   Parameters    None
  2055.   Returns       None
  2056.   Description   Move the cursor to the packet count field
  2057.  
  2058.   SCRNRT
  2059.   Parameters    None
  2060.   Returns       None
  2061.   Description   Move cursor to the retry count field
  2062.  
  2063.   SCRST
  2064.   Parameters    None
  2065.   Returns       None
  2066.   Description   Move cursor to the status field
  2067.  
  2068.   RPPOS
  2069.   Parameters    None
  2070.   Returns       None
  2071.   Description   Move to the receive packet field (debugging use)
  2072.  
  2073.   SPPOS
  2074.   Parameters    None
  2075.   Returns       None
  2076.   Description   Move to the send packet field (for debugging use)
  2077.  
  2078.                 2c)
  2079.  
  2080.                 SYSINIT
  2081.   Parameters    None
  2082.   Returns       None
  2083.   Description   Initialize the system specific items.  No registers are
  2084.                 preserved.  Any initialization is done once only when Kermit-80
  2085.                 is first loaded.
  2086.  
  2087.   SYSEXIT
  2088.   Parameters    None
  2089.   Returns       None
  2090.   Description   Program termination.  De-initialize anything in preparation for
  2091.                 a return to CP/M
  2092.  
  2093.   SYSCON
  2094.   Parameters    None
  2095.   Returns       None
  2096.   Description   Initialize anything before entering the connect state.
  2097.  
  2098.   SYSCLS
  2099.   Parameters    None
  2100.   Returns       None
  2101.   Description   System dependent close routine when exiting connect state
  2102.  
  2103.   SYSINH
  2104.   Parameters    None
  2105.   Returns       None
  2106.   Description   Help routine to test for any extensions to the escape menu
  2107.                 during the connect state.  If a system has any special feature
  2108.                 it can use during connect mode, then it can be tested as
  2109.                 <escape-character>xxx.  This entry is a string for printing to
  2110.                 the console for an <escape-character>?  Often used for
  2111.                 generating breaks or controlling a modem.
  2112.  
  2113.   SYSINT
  2114.   Parameters    None
  2115.   Returns       None
  2116.   Description   This is a test-and-jump on receipt of an escape sequence not
  2117.                 understood by Kermit-80.  If the character in A is not
  2118.                 recognized by your version of Kermit=80, do a rskip
  2119.  
  2120.   SYSFLT
  2121.   Parameters    Character in E
  2122.   Returns       Character in E. Either a 00H or anything else in A
  2123.   Description   Test the character in E. If it may not be printed to the
  2124.                 console, set A to zero.  All other registers preserved.
  2125.                 NB <XON>,<XOFF>,<DEL>,<NULL> are always rejected.
  2126.  
  2127.   SYSBYE
  2128.   Parameters    None
  2129.   Returns       None
  2130.   Description   System dependent processing for the BYE command.  (eg hang up
  2131.                 the phone)
  2132.  
  2133.   SYSSPD
  2134.   Parameters    Value from table in DE
  2135.   Returns       None
  2136.   Description   The system dependent code for baud rate change.  DE contains
  2137.                 the two byte value from the baud rate table.  This value is
  2138.                 also stored in "SPEED"
  2139.  
  2140.   SYSPRT
  2141.   Parameters    Value in DE
  2142.   Returns       None
  2143.   Description   The system dependent code for setting the port.  The parameters
  2144.                 are passed in DE, which are obtained from the port tables
  2145.  
  2146.   SYSSCR
  2147.   Parameters    String pointer in DE
  2148.   Returns       None
  2149.   Description   Setup the screen display for file transfer.  The Kermit version
  2150.                 string is pointed to by DE.  If the terminal is not capable of
  2151.                 cursor addressing (eg dumb glass TTY) then only the screen is
  2152.                 cleared and the version string is printed.
  2153.  
  2154.   CSRPOS
  2155.   Parameters    Row number in B, column number in C
  2156.   Returns       None
  2157.   Description   Move the cursor to row B, column C where B=1,C=1 is top LH
  2158.                 corner of screen.  The routine should first end a "cursor
  2159.                 position" leading string (up to four characters) then use the
  2160.                 parameters given to complete the versions cursor position
  2161.                 function
  2162.  
  2163.   SYSSPC
  2164.   Parameters    None
  2165.   Returns       K bytes free in HL
  2166.   Description   Get the amount of free disk space on the selected disk drive.
  2167.                 This could be in the system independent code.  Automatically
  2168.                 detects CP/M V2.2 or V3.0.  No registers saved.
  2169.  
  2170.   MOVER
  2171.   Parameters    Source Pointer in HL
  2172.                 Destination Pointer in DE
  2173.                 Byte count in BC
  2174.   Returns       None
  2175.   Description   Move (BC) bytes from (HL) to (DE) Z80 based systems do an LDIR,
  2176.                 while 8080 systems do it as a loop.  All registers destroyed
  2177.  
  2178.   PRTSTR
  2179.   Parameters    $ terminated string pointed to by DE
  2180.   Returns       None
  2181.   Description   Print the string onto the console.
  2182.  
  2183.                 3)
  2184.  
  2185.  
  2186.   PTTAB         WORD      Points to VT52 equivalent escape sequences.
  2187.  
  2188.   SPDTAB        WORD      Address of baud-rate command table, or 0 if table
  2189.                 does not exist
  2190.  
  2191.   SPDHLP        WORD      Address of baud-rate help table, or 0 if SET SPEED is
  2192.                 not supported.
  2193.  
  2194.   PRTTAB        WORD      Address of port command table or 0 if SET PORT is not
  2195.                 supported.
  2196.  
  2197.   PRTHLP        WORD      Address of port help table or 0 if SET PORT is not
  2198.                 supported
  2199.  
  2200.   TIMOUT        BYTE      FUZZY-TIMER.  Set to value suitable to your system
  2201.                 (depends largely on CPU speed)
  2202.  
  2203.   VTFLG         BYTE      VT52 emulation flag.  Set to 0 if terminal emulates a
  2204.                 VT52, 01 if emulation is required, or 0FFH if emulations not
  2205.                 possible (eg for "CRT")
  2206.  
  2207.   ESCCHR        BYTE      default escape character-usually control-] but
  2208.                 sometimes control-\
  2209.  
  2210.   SPEED         WORD      Storage space for baud-rate.  Set to 0FFFFH as baud
  2211.                 rates are initially unknown.  Note that the STATUS routine only
  2212.                 looks at the first (least significant) byte.
  2213.  
  2214.   PORT          WORD      Storage space for port.  Set to 0FFFFH as ports may
  2215.                 not be implemented, and is initially unknown
  2216.  
  2217.   PRNFLG        BYTE      Printer copy flag-if O no copy.  Anything else =>
  2218.                 copy to printer
  2219.  
  2220.   DBGFLG        BYTE      Debugging flag.  If O then no debugging to be done.
  2221.                 (ie writing of debugging info during a file transfer)
  2222.  
  2223.   ECOFLG        BYTE      Local ECHO flag (default is off)
  2224.  
  2225.   FLWFLG        BYTE      File warning flag.  If set to 1 will not overwrite
  2226.                 files already existing on disk with some-named files being
  2227.                 transferred
  2228.  
  2229.   IBMFLG        BYTE      IBM system is the host-assume IBM file transfers etc
  2230.  
  2231.   CPMFLG        BYTE      Flag indicating type of CP/M files to be transferred.
  2232.                 Default setting - DEFAULT
  2233.  
  2234.   PARITY        BYTE      Type of parity in use
  2235.                 0 = Even parity
  2236.                 3 = Mark parity
  2237.                 6 = No parity (8th bit is data)
  2238.                 9 = Odd parity
  2239.                 12 = Space parity
  2240.  
  2241.   SPSIZ         BYTE      Size of send packet
  2242.  
  2243.   RPSIZ         BYTE      Size of receive packet
  2244.  
  2245.   STIME         BYTE      Send timer (time-out)
  2246.  
  2247.   RTIME         BYTE      Receive timer (time-out)
  2248.  
  2249.   SPAD          BYTE      Send Padding (default=0)
  2250.  
  2251.   RPAD          BYTE      Receive Padding (default=0)
  2252.  
  2253.   SPADCH        BYTE      Send Padding character (default=NULL)
  2254.  
  2255.   RPADCH        BYTE      Receive Padding character (default=NULC)
  2256.  
  2257.   SEOL          BYTE      Send EOL character (default=CR)
  2258.  
  2259.   REOL          BYTE      Receive EOL character (default=CR)
  2260.  
  2261.   SQUOTE        BYTE      Send quote character (default=#)
  2262.  
  2263.   RQUOTE        BYTE      Receive quote character (default=#)
  2264.  
  2265.   CHKTYP        BYTE      Ascii value of checktype
  2266.                 31H="1"=checktype1 (6bits)
  2267.                 32H="2"=checktype2 (12bits)
  2268.                 33H="3"=CCITT checksum (CRC)
  2269.                 Default is 31H("1")
  2270.  
  2271.   TACFLG        BYTE      If set to on (non zero) send the TACCHR twice.  This
  2272.                 is for ARPA TAC users, where the TAC swallows one "wakeup"
  2273.                 character.  If sent twice the TAC will pas one on and go back
  2274.                 to normal mode.
  2275.  
  2276.   TACCHR        BYTE      Desired TAC character.  It is ignored if TAC trapping
  2277.                 is turned off. Value to send twice if TAC interception is set
  2278.                 on.  Default=0, but set to commercial AT if the conditional
  2279.                 assembly flag TAC is set true
  2280.  
  2281.   BUFADR        WORD      Address of Multi-Sector buffering for I/O
  2282.  
  2283.   BUFSEC        BYTE      The number of bytes the big buffers can hold.
  2284.                 Default is 1. (0=256 sectors).
  2285.  
  2286.   FFUSSY        BYTE      Indicates if funny characters may be used in CP/M
  2287.                 file names (eg <>.,;?#[]) If zero, allow anything.  Default is
  2288.                 nonzero.
  2289.  
  2290.   BMAX          SPACE:(2bytes) Highest block number on selected disk drive
  2291.  
  2292.   BMASK         SPACE:(1byte) (Records/block)-1
  2293.  
  2294.   BSHIFTF       SPACE:(1byte) Number of shifts to multiply by rec.block
  2295.  
  2296.   NNAMS         SPACE:(1byte) Counter for file-names per line
  2297.  
  2298.  
  2299. 1.10. Future Work
  2300.  
  2301. Work that needs to be done in future releases includes:
  2302.  
  2303.    - Merge in support for additional CP/M-80 systems, particularly those
  2304.      for which support was recently added to the monolithic v3.x source.
  2305.  
  2306.    - Break up CPXSYS into discrete source files, one for each system.
  2307.      These source files should serve as simple models for adding support
  2308.      for new systems to Kermit-80 -- only the very basic screen
  2309.      definitions, flags, i/o primitives, initializations, and so forth
  2310.      should appear in each system-dependent file.
  2311.  
  2312.    - Addition of missing features -- compression of repeated characters
  2313.      during packet transmission, transmission of file attributes
  2314.      (particularly size, so that "percent done" can be displayed for both
  2315.      incoming and outbound files), command macros, more advanced login
  2316.      scripts, remote operation and server mode, etc etc.  Any offers??
  2317.  
  2318. Index (Page numbers are approximate)...
  2319.  
  2320.           8080   5, 6
  2321.  
  2322.           Append   2
  2323.           ARPAnet   10
  2324.           Attention Character   10
  2325.           Autoreceive   3
  2326.  
  2327.           Baud   4
  2328.           BIOS   5
  2329.           Block Check   3
  2330.           Bootstrapping CP/M Kermit   8
  2331.           Break   2
  2332.           Buffer size   3
  2333.           Bye   2
  2334.  
  2335.           Carriage Return   2
  2336.           COLLISION   3
  2337.           Connect   2
  2338.           Control-C   2
  2339.           Control-X   2
  2340.           Control-Z   2
  2341.           Copy   2
  2342.           CP/M   6
  2343.           CP/M-80 Kermit   1
  2344.           CR   2
  2345.  
  2346.           Debug   3
  2347.           Default Disk   3
  2348.           Directory   2
  2349.           Directory file size   3
  2350.           Downloading   8
  2351.  
  2352.           Eighth-Bit Prefix   4
  2353.           Erase   2
  2354.           Escape Character   2, 3
  2355.           Exit   2
  2356.           External Terminal Emulation
  2357.                   4
  2358.  
  2359.           File Copying   2
  2360.           File-mode   3
  2361.           File-Warning   3
  2362.           FINISH   2
  2363.           Flow Control   4
  2364.  
  2365.           Generic Kermit-80   5
  2366.           GET   2
  2367.  
  2368.           Help   2
  2369.  
  2370.           IBM   4
  2371.           Input   2
  2372.           Intercept Character   10
  2373.  
  2374.           Local   2
  2375.           Local-Echo   4
  2376.           LOG   2
  2377.           Logging   4
  2378.           LOGOUT   3
  2379.  
  2380.           NAK   2
  2381.           No-exit   4
  2382.  
  2383.           OUTPUT   3, 4
  2384.  
  2385.           Pad character   4
  2386.           Parity   4
  2387.           Pause   3
  2388.           Port   4
  2389.           Print   3
  2390.           PRINTER   4
  2391.  
  2392.           RECEIVE   3
  2393.           REMOTE   3
  2394.  
  2395.           SEND   3
  2396.           SET   3
  2397.           Set padding   4
  2398.           Set Receive   4
  2399.           Set Send   4
  2400.           Set Start of packet   4
  2401.           Show   4
  2402.           Status   4
  2403.  
  2404.           TAC   10
  2405.           TacTrap   4
  2406.           Take   4
  2407.           Terminal Emulation   4
  2408.           Timeout   2, 7
  2409.           TIMER   4
  2410.           TRANSMIT   5
  2411.           Type   5
  2412.  
  2413.           USER   4
  2414.  
  2415.           VERSION   5
  2416.           Virtual Terminal   2
  2417.           VT100 Emulation   4
  2418.           VT52 Emulation   4
  2419.  
  2420.           Warning   4
  2421.  
  2422.           XON/XOFF   2
  2423.  
  2424.           Z80   6
  2425.  
  2426.  
  2427. Table of Contents (page numbers are approximate)
  2428.  
  2429. 1. CP/M-80 KERMIT                                                             1
  2430.  
  2431.    1.1. Credits                                                               1
  2432.    1.2. What's New                                                            1
  2433.    1.3. Overview of Kermit Operation                                          1
  2434.    1.4. Summary of CP/M                                                       1
  2435.    1.5. Kermit-80 Description                                                 2
  2436.    1.6. Kermit-80 Flavors                                                     5
  2437.        1.6.1. Generic Kermit-80                                               5
  2438.        1.6.2. CP/M 3 Kermit                                                   5
  2439.        1.6.3. System-Specific Versions                                        5
  2440.    1.7. Installation of Kermit-80                                             6
  2441.        1.7.1. Organization of Kermit-80                                       7
  2442.        1.7.2. Downloading Kermit-80                                           8
  2443.        1.7.3. Assembling Kermit-80 from the sources                           9
  2444.    1.8. Adding Support For A New System                                      10
  2445.    1.9. Notes on New Features in Kermit-80 Version 4                         10
  2446.        1.9.1. Interface Data.                                                10
  2447.        1.9.2. Jump Table.                                                    10
  2448.    1.10. Future Work                                                         12
  2449.  
  2450. Index                                                                        13
  2451.  
  2452.                                 List of Figures
  2453.  
  2454.    Figure 1-1:   Bootstrap program for Kermit-80 and CP/M Version 2.2         8
  2455.  
  2456.  
  2457.                                 List of Tables
  2458.  
  2459.    Table 1-1:   Kermit-80 SET PORT Options                                    5
  2460.    Table 1-2:   Systems supported by Kermit-80 (Part 1)                       7
  2461.    Table 1-3:   Systems supported by Kermit-80 (Part 2)                       7
  2462.    Table 1-4:   Terminals supported by Kermit-80                              8
  2463.    Table 1-5:   Terminals known to Kermit-80                                 10
  2464.