home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / latrobe / hijk / kermdoc.arc / KERMIT.DOC
Text File  |  1985-07-16  |  105KB  |  2,531 lines

  1.                                                                       79
  2.  
  3.  
  4. 9. MS-DOS KERMIT
  5.  
  6. Program:    Daphne Tzoar and Jeff Damens, Columbia University; contribu-
  7.             tions by many others.
  8. Language:   Microsoft Macro Assembler (MASM)
  9. Documentation:
  10.             Frank  da  Cruz,  Columbia  University; Herm Fischer, Litton
  11.             Data Systems, Van Nuys CA.
  12. Version:    2.26
  13. Date:       July 1984
  14.  
  15.  
  16. Kermit-MS Capabilities At A Glance:
  17.  
  18.   Local operation:                   Yes
  19.   Remote operation:                  Yes
  20.   Transfers text files:              Yes
  21.   Transfers binary files:            Yes
  22.   Wildcard send:                     Yes
  23.   ^X/^Y interruption:                Yes
  24.   Filename collision avoidance:      Yes
  25.   Can time out:                      Yes
  26.   8th-bit prefixing:                 Yes
  27.   Repeat count prefixing:            Yes
  28.   Alternate block checks:            Yes
  29.   Terminal emulation:                Yes
  30.   Communication settings:            Yes
  31.   Transmit BREAK:                    Yes
  32.   IBM mainframe communication:       Yes
  33.   Transaction logging:               No
  34.   Session logging:                   Yes
  35.   Raw transmit:                      No
  36.   Act as server:                     Yes
  37.   Talk to server:                    Yes
  38.   Advanced server functions:         No
  39.   Advanced commands for servers:     Yes
  40.   Local file management:             Yes
  41.   Handle file attributes:            No
  42.   Command/init files:                Yes
  43.   Command macros:                    Yes
  44.  
  45. Kermit-MS is a program that implements the KERMIT file transfer protocol
  46. for the IBM PC and several  other  machines  using  the  same  processor
  47. family  (Intel  8088  or  8086)  and  operating system family (PC-DOS or
  48. MS-DOS, henceforth referred to collectively  as  MS-DOS,  versions  1.1,
  49. 2.0,  and  2.1,  and thereafter).  This section will describe the things
  50. you should know about the MS-DOS file system in order to make  effective
  51. use of Kermit, and then it will describe the Kermit-MS program.
  52.  
  53. Version  2  of MS-DOS Kermit runs on a variety of systems, including the
  54. IBM PC and XT, the HP-150, the DEC Rainbow 100 and 100+ (MS-DOS 2.05 and
  55. above), the Wang PC, and there is a "generic" MS-DOS version.  Version 1
  56. was adapted at various stages of development to run on other systems  as
  57. well,   including   the   Heath/Zenith  100,  Tandy  2000,  Victor  9000
  58. (Sirius-1), and Seequa Chameleon, and is still available for those  sys-
  59. tems until support for them and others is added to version 2.
  60.                                                                       80
  61.  
  62.  
  63. The program operates under version 1.1 or 2.0 and above of DOS, although
  64. some  features  require  the  functionality  of  2.0.    It  runs in ap-
  65. proximately 80K of memory -- over and  above  the  memory  used  by  DOS
  66. --  which means that your system should have at least 128K of RAM to use
  67. version 2 of MS-DOS Kermit; smaller systems may still use Version 1.
  68.  
  69.  
  70. 9.1. The MS-DOS File System
  71.  
  72. The features of the MS-DOS file system of greatest  interest  to  KERMIT
  73. users  are  the form of the file specifications, and the distinction be-
  74. tween pre-MS-DOS 2.0 file names and newer file names which allow  direc-
  75. tory paths.
  76.  
  77.  
  78. 9.1.1. File Specifications
  79.  
  80. MS-DOS 2.x file specifications are of the form 
  81.  
  82.   DEVICE:\PATHNAME\NAME.TYPE
  83.  
  84. where  the  DEVICE is a single character identifier (for instance, A for
  85. the first floppy disk, C for the first fixed disk,  D  for  a  RAM  disk
  86. emulator),  PATHNAME  is  up  to 63 characters of identifier(s) (up to 8
  87. characters each) surrounded by reverse slashes, NAME is an identifier of
  88. up to 8 characters, and TYPE is an identifier of up to 3  characters  in
  89. length.  Device and pathname may be omitted.  The first backslash in the
  90. pathname may be omitted if the specified path is relative to the current
  91. directory.    In the path field, "." means current directory, ".." means
  92. parent directory.  Some DOS implementations (like Wang)  may  use  slash
  93. "/" rather than backslash in the path field.
  94.  
  95. Pathname  is normally omitted, and cannot be specified for MS-DOS 1.x or
  96. with those commands which allow MS-DOS 1.x use.   Device  and  directory
  97. pathnames,  when  omitted, default to either the user's current disk and
  98. directory, or to the current directory search path as specified  in  the
  99. DOS  PATH  environment  variable,  depending on the context in which the
  100. file name appears.
  101.  
  102.     When this manual says that a file is searched for "in  the  cur-
  103.     rent path," it means that the PATH is searched first, and if the
  104.     file  is not found, then Kermit-MS looks on the current disk and
  105.     directory.  If the PATH environment variable  is  empty,  Kermit
  106.     looks only at the current disk and directory.
  107.  
  108. NAME.TYPE is normally sufficient to specify a file, and only this infor-
  109. mation is sent along by Kermit-MS with an outgoing file.
  110.  
  111. The  device,  path, name, and type fields may contain uppercase letters,
  112. digits, and the special characters "-" (dash), "_" (underscore), and "$"
  113. (dollar sign).   (For  use  only  among  MS-DOS  processors,  additional
  114. filename  special  characters  allowed are "#&!%'`(){}".  DOS 1.x allows
  115. others as well.).  There are no imbedded  or  trailing  spaces.    Other
  116. characters  may  be not be included; there is no mechanism for "quoting"
  117. otherwise illegal characters in filenames.    The  fields  of  the  file
  118. specification  are set off from one another by the punctuation indicated
  119.                                                                       81
  120.  
  121.  
  122. above.
  123.  
  124. The  name  field is the primary identifier for the file.  The type, also
  125. called the extension or suffix, is an indicator  which,  by  convention,
  126. tells  what kind of file we have.  For instance FOO.BAS is the source of
  127. a BASIC program named FOO;  FOO.OBJ  might  be  the  relocatable  object
  128. module  produced  by  compiling  FOO.BAS; FOO.EXE could be an executable
  129. program produced by linking FOO.OBJ, and so forth.  .EXE  and  .COM  are
  130. the normal suffixes for executable programs.
  131.  
  132. The  MS-DOS  allows  a  group  of files to be specified in a single file
  133. specification by including the special "wildcard" characters, "*" and "?
  134. ".  A "*" matches any string of characters from the current position  to
  135. the  end of the field, including no characters at all; a "?" matches any
  136. single character.  Here are some examples:
  137.  
  138.   *.BAS   All files of type BAS (all BASIC source files) in the  current
  139.           directory.
  140.  
  141.   FOO.*   Files of all types with name FOO.
  142.  
  143.   F*.*    All files whose names start with F. 
  144.  
  145.   F?X*.*  All  files whose names start with F and contain X in the third
  146.           position, followed by zero or more characters.
  147.  
  148.   ?.*     All files whose names are exactly one character long.
  149.  
  150. Wildcard notation is used on many computer systems in similar ways,  and
  151. it  is  the  mechanism  most  commonly used to instruct Kermit to send a
  152. group of files.
  153.  
  154.     Note: Kermit-MS uses the "?" character for help  while  commands
  155.     are  being  typed, so the single-character wildcard in Kermit-MS
  156.     commands is "=" rather than "?".  For example 
  157.  
  158.       Kermit-MS>send =.*
  159.  
  160.     would send files of all  types  whose  names  were  exactly  one
  161.     character long.
  162.  
  163. Kermit-MS  users should bear in mind that other (non-MS-DOS) systems may
  164. use different wildcard characters.  For instance the DEC-20 uses "%" in-
  165. stead of "?" as the single character wildcard; when using  Kermit-MS  to
  166. request a wildcard file group from a KERMIT-20 server, the Kermit-MS "="
  167. must be replaced by the DEC-20 "%".
  168.  
  169.  
  170. 9.1.2. File Formats
  171.  
  172. MS-DOS  systems  store files as bulk collections of 8 bit bytes, with no
  173. particular differences between text, program  code,  and  binary  files.
  174. ASCII  text files consist of lines separated by carriage-return-linefeed
  175. sequences (CRLFs), which conforms exactly to the way  Kermit  represents
  176. text  files  during  transmission.   Since a non-MS-DOS receiving system
  177. might need to make distinctions as to file type, you  may  need  to  use
  178.                                                                       82
  179.  
  180.  
  181. various  SET functions on the remote system to inform it that the incom-
  182. ing file is of some particular (non-default) type, such as binary.    In
  183. transmitting files between Kermit-MS's, regardless of file contents, the
  184. receiving MS-DOS system is equally capable of processing text, code, and
  185. data,  and  in  fact  has  no knowledge of how the bytes in the file are
  186. used.
  187.  
  188. MS-DOS (unlike CP/M) is capable of pinpointing  the  end  of  file  with
  189. precision  by keeping a byte count in the directory, so one would expect
  190. no particular  confusion  in  this  regard.    However,  certain  MS-DOS
  191. programs  continue to use the CP/M convention of terminating a text file
  192. with a Control-Z character, and won't operate correctly unless this ter-
  193. minating byte is present.  Therefore, Kermit-MS users should be aware of
  194. a special SET EOF option for both incoming and outbound files, described
  195. below.
  196.  
  197. Non-MS-DOS systems may well be confused by nonstandard ASCII files  from
  198. Kermit-MS.   Files produced by Easywriter or Word Star, for example, may
  199. need to be converted to conventional ASCII format prior to  transmission
  200. by  commonly  available  "exporter"  programs.   Spreadsheet or database
  201. files usually need special formatting to  be  meaningful  to  non-MS-DOS
  202. recipients  (though  they can be transmitted between MS-DOS systems with
  203. Kermit-MS).  Furthermore, files created by word processors (such as BLUE
  204. or Easy Writer) that store formatting data at the end of the file, after
  205. the control-Z and before physical end, will require  special  processing
  206. via  SET  EOF to strip the formatting data, lest they confuse non-MS-DOS
  207. recipients.
  208.  
  209.  
  210. 9.2. Program Operation
  211.  
  212. Kermit-MS can be  run  interactively,  from  a  batch  file,  or  as  an
  213. "external"  DOS  command.    Commands  consist  of  one  or more fields,
  214. separated by "whitespace" -- one or more spaces or tabs.
  215.  
  216. Upon initial startup, the program executes any  commands  found  in  the
  217. file  MSKERMIT.INI  in  the  current path.  This initialization file may
  218. contain command macro definitions, communications settings  for  one  or
  219. more  ports,  or  any  other  Kermit-MS  commands.    Here  is  a sample
  220. MSKERMIT.INI file:
  221.  
  222.   set warning on  ; Enable filename collision avoidance.
  223.   ;
  224.   ; Define some macros
  225.   ;
  226.   define unix set local-echo off, set flow xon, set timer off
  227.   def ibm set parity odd, set local on, set handsh xon, set timer on
  228.   def modem set port 2, set baud 1200
  229.   def noisy set block-check 3, set send packet-length 40
  230.   ;
  231.   ; Select a port
  232.   ;
  233.   set port 1      ; Select COM1 for communications,
  234.   set baud 4800   ; setting the speed to 4800 baud,
  235.   connect         ; and make a terminal connection.
  236.                                                                       83
  237.  
  238.  
  239. Note  that  comments may be included by prefixing them with a semicolon.
  240. The program can be run in several ways.
  241.  
  242.  
  243. Interactive Operation:
  244.  
  245. To run Kermit-MS interactively, invoke  the  program  from  DOS  command
  246. level by typing its name.  When you see the command's prompt, 
  247.  
  248.   Kermit-MS>
  249.  
  250. you  may type Kermit commands repeatedly until you are ready to exit the
  251. program, for example:
  252.  
  253.   A>
  254.   A>kermit
  255.  
  256.   IBM PC Kermit-MS V2.26
  257.   Type ? for help
  258.  
  259.   Kermit-MS>send foo.*
  260.  
  261.     informational messages about the files being sent
  262.  
  263.   Kermit-MS>get bar.*
  264.  
  265.     informational messages about the files being received
  266.  
  267.   Kermit-MS>exit
  268.   A>
  269.  
  270. During interactive operation, you may edit the command you're  currently
  271. typing  to  erase  the character most recently typed (BACKSPACE or DEL),
  272. the most recent field (CTRL-W), or the entire command (CTRL-U).  In  ad-
  273. dition, you may use the help ("?") and recognition (ESC) features freely
  274. while  typing  Kermit-MS  commands.  A question mark typed at almost any
  275. point in a command produces a brief description of what is  expected  or
  276. possible  at  that  point;  for  this reason, Kermit-MS uses "=" for the
  277. single-character match wildcard in local filenames.  ESC  typed  at  any
  278. point,  even  in  a  local  filename, will cause the current field to be
  279. filled out if what you have typed so far is sufficient to  identify  it,
  280. and  will leave you in position to type the next field (or to type a "?"
  281. to find out what the next field is); otherwise, the program will beep at
  282. you and wait for you to type further characters.
  283.  
  284. Some Kermit-MS commands, like GET, SHOW KEY, SET KEY, may prompt for ad-
  285. ditional information on subsequent lines.  If you have  reached  one  of
  286. these  prompts  and  then  wish  to  cancel  the  command,  you may type
  287. Control-C.
  288.  
  289. Summary of Kermit-MS Command Characters:
  290.  
  291.   BACKSPACE     Delete the character most recently typed.  May be  typed
  292.                 repeatedly  to  delete  backwards.    You  may  also use
  293.                 DELETE, RUBOUT, or equivalent keys.
  294.                                                                       84
  295.  
  296.  
  297.   CTRL-W        Delete  the most recent "word", or field, on the command
  298.                 line.  May be typed repeatedly.
  299.  
  300.   CTRL-U        Delete the entire command line.
  301.  
  302.   CTRL-C        Cancel  the  current   command   and   return   to   the
  303.                 "Kermit-MS>" prompt.
  304.  
  305.   ?             Type a brief message describing what you are expected to
  306.                 type in the current field.
  307.  
  308.   ESC           If  enough  characters have been supplied in the current
  309.                 field (keyword or file name) to  uniquely  identify  it,
  310.                 supply  the  remainder  of the field and position to the
  311.                 next field of the command.  Otherwise, sound a beep.
  312.  
  313.   =             Wildcard character for  matching  single  characters  in
  314.                 filenames, equivalent to MS-DOS "?".
  315.  
  316.  
  317. Command Line Invocation:
  318.  
  319. Kermit-MS  may also be invoked with command line arguments from DOS com-
  320. mand level, for instance:
  321.  
  322.   A>kermit send foo.bar
  323.  
  324. or
  325.  
  326.   A>kermit set port 1, set baud 9600, connect
  327.  
  328. In this case, help  and  recognition  are  not  available  (because  the
  329. program  won't  start  running  until  after you type the entire command
  330. line), and Kermit-MS will exit after completing the specified command or
  331. commands.    Therefore,  when  invoked  with  command  line   arguments,
  332. Kermit-MS  will behave as if it were an external DOS command, like MODE.
  333. Note that several commands may be given on the command  line,  separated
  334. by commas.
  335.  
  336.  
  337. Batch Operation:
  338.  
  339. Like  other  MS-DOS programs, Kermit-MS may be operated under batch with
  340. either command line arguments and/or TAKE files; Kermit  will  also  run
  341. interactively  if invoked from batch, but it will read commands from the
  342. keyboard and not the batch file.
  343.  
  344.  
  345. 9.3. Kermit-MS Commands
  346.  
  347. MS-DOS Kermit implements a large subset of the commands of "ideal"  Ker-
  348. mit.  Here's a brief summary:
  349.  
  350.           BYE  to remote server.
  351.         CLOSE  log file and stop logging remote session.
  352.       CONNECT  as terminal to remote system.
  353.                                                                       85
  354.  
  355.  
  356.        DEFINE  macros of Kermit-MS commands.
  357.        DELETE  local files.
  358.     DIRECTORY  listing of local files.
  359.            DO  a macro expansion.
  360.          EXIT  from Kermit-MS.
  361.        FINISH  Shut down remote server.
  362.           GET  remote files from server.
  363.          HELP  about Kermit-MS.
  364.         LOCAL  prefix for local file management commands.
  365.           LOG  remote terminal session.
  366.        LOGOUT  remote server.
  367.          PUSH  to MS-DOS command level.
  368.          QUIT  from Kermit-MS
  369.       RECEIVE  files from remote Kermit.
  370.        REMOTE  prefix for remote file management commands.
  371.           RUN  an MS-DOS program.
  372.          SEND  files to remote Kermit.
  373.        SERVER  mode of remote operation.
  374.           SET  various parameters.
  375.          SHOW  various parameters.
  376.         SPACE  inquiry.
  377.        STATUS  inquiry.
  378.          TAKE  commands from file.
  379.  
  380. The  remainder  of  this  section concentrates on the commands that have
  381. special form or meaning for MS-DOS Kermit.  Not  all  of  the  following
  382. commands  are  necessarily  available on all MS-DOS systems, and some of
  383. the commands may work somewhat differently between DOS versions.
  384.  
  385.  
  386. 9.3.1. Commands for File Transfer
  387.  
  388. The file transfer commands are SEND, GET, and RECEIVE.
  389.  
  390.  
  391.                             THE SEND COMMAND
  392.  
  393. Syntax:  SEND filespec1 [filespec2]
  394.  
  395. The SEND command causes a file or file group to be sent from  the  local
  396. MS-DOS system to the Kermit on the remote system.  The remote Kermit may
  397. be running in either server or interactive mode; in the latter case, you
  398. should  already have given it a RECEIVE command and escaped back to your
  399. PC.
  400.  
  401. filespec1 may contain a device designator, like "A:"  and  the  wildcard
  402. characters  "*"  and/or "=".  The current release of Kermit-MS, however,
  403. does not allow pathnames in the SEND command file specification.
  404.  
  405. If filespec1 contains wildcard characters then all matching  files  will
  406. be  sent,  in  the same order that MS-DOS would show them in a directory
  407. listing.  If filespec1 specifies a single file, you may direct Kermit-MS
  408. to send that file with a different name, given in filespec2.    For  in-
  409. stance, in the command 
  410.  
  411.   Kermit-MS>send foo.bar framus.widget
  412.                                                                       86
  413.  
  414.  
  415. filespec2  begins  with the first nonblank character after filespec1 and
  416. ends with the carriage return; thus it may contain blanks or  other  un-
  417. usual  characters  that may be appropriate on the target machine.  Lower
  418. case letters in filespec2 are raised to upper case for transmission.
  419.  
  420. If a file can't be opened for  read  access,  standard  MS-DOS  recovery
  421. procedures will take place.  For example:
  422.  
  423.   Not ready error reading drive A
  424.   Abort, Retry, Ignore?
  425.  
  426. If you select "Abort," you will be returned to DOS.
  427.  
  428. Files will be sent with their MS-DOS filename and filetype (for instance
  429. FOO.TXT,  no device or pathname).  Each file is sent as is, with no con-
  430. versions done on the data, except for possibly adding or deleting a ter-
  431. minating Control-Z character (see the SET EOF command).
  432.  
  433. Once you give Kermit-MS the SEND command, the name of each file will  be
  434. displayed  on  your  screen  as  the transfer begins; packet, retry, and
  435. other counts will be displayed along with informational messages  during
  436. the  transfer.    If  the file is successfully transferred, you will see
  437. "Complete", otherwise  there  will  be  an  error  message.    When  the
  438. specified operation is done, the program will sound a beep.
  439.  
  440. Several  single-character commands may be given while a file transfer is
  441. in progress:
  442.  
  443.   ^X  (Control-X) Stop sending the current file and go on  to  the  next
  444.       one, if any.
  445.  
  446.   ^Z  Stop sending this file, and don't send any further files.
  447.  
  448.   ^C  Return  to Kermit-MS command level immediately without sending any
  449.       kind of notification to the remote system.
  450.  
  451.   ^E  Like ^C, but send an Error packet to the remote Kermit in  an  at-
  452.       tempt to bring it back to server or interactive command level.
  453.  
  454.   CR  Simulate a timeout: resend the current packet, or NAK the expected
  455.       one.
  456.  
  457. Control-X  and Control-Z send the proper protocol messages to the remote
  458. Kermit to bring it gracefully to the desired state.    Control-C  leaves
  459. the  remote  Kermit  in  whatever  state it happens to be in.  Control-E
  460. "aborts" any protocol that is taking place.
  461.  
  462.  
  463.                           THE RECEIVE COMMAND
  464.  
  465. Syntax: RECEIVE [filespec]
  466.  
  467. The RECEIVE command tells Kermit-MS to receive a file or file group from
  468. the other system.  Kermit-MS simply waits for the file to  arrive;  this
  469. command  is  not to be used when talking to a Kermit server (use GET for
  470. that).  You should already have issued a SEND command to the remote Ker-
  471.                                                                       87
  472.  
  473.  
  474. mit and escaped back to Kermit-MS before issuing the RECEIVE command.
  475.  
  476. If the optional filespec is provided, store the incoming file under that
  477. name.    The filespec may include a device designator, or may consist of
  478. only a device designator.  The incoming file is stored on the default or
  479. specified device (current directory in DOS 2.0 and thereafter).   If  no
  480. name  was  specified,  the  name from the incoming file header packet is
  481. used; if that name is not a  legal  MS-DOS  file  name,  Kermit-MS  will
  482. delete  excessive characters from it, and will change illegal characters
  483. to the letter X.
  484.  
  485. If the optional filespec was provided, but more than one  file  arrives,
  486. the  first  file  will  be  stored  under  the  given  filespec, and the
  487. remainder will be stored under their own names,  but  on  the  specified
  488. device.
  489.  
  490. If an incoming file does not arrive in its entirety, Kermit-MS will nor-
  491. mally  discard it; it will not appear in your directory.  You may change
  492. this behavior by using the command SET INCOMPLETE KEEP, which will cause
  493. as much of the file as arrived to be saved in your directory.
  494.  
  495. The same single-character commands are available as during SEND:
  496.  
  497.   ^X  Request that the remote Kermit stop sending the current file,  and
  498.       proceed  to  the  next one immediately.  Since this is an optional
  499.       feature of the Kermit protocol, the remote Kermit might not  honor
  500.       the request.
  501.  
  502.   ^Z  Request that the remote Kermit terminate the entire transfer; this
  503.       is  also  an  optional feature that may or may not be supported by
  504.       the remote Kermit.
  505.  
  506.   ^C, ^E, and CR operate in the same way as they do during SEND.
  507.  
  508. If the incoming file has the same name as a file  that  already  exists,
  509. and  WARNING is set ON, Kermit-MS will change the incoming name (and in-
  510. form you how it renamed it) so as not  to  obliterate  the  pre-existing
  511. file.   If WARNING is OFF, the original file will be overwritten; if you
  512. type ^X or ^Z to interrupt the transfer, you'll either get a partial new
  513. file, or else both the old and the new file of that name will  be  lost,
  514. depending  on  SET  INCOMPLETE.  In any case, when WARNING is off, files
  515. with the same name as incoming files will not survive.
  516.  
  517. Caution: If an incoming file's name  (the  part  before  the  dot)  cor-
  518. responds  to an MS-DOS device name, such as NUL, COM1, CON, AUX, or PRN,
  519. output will go to that device, rather than to a  file  with  that  name.
  520. This is a feature of MS-DOS.
  521.                                                                       88
  522.  
  523.  
  524.                             THE GET COMMAND
  525.  
  526. Syntax: GET remote-filespec
  527.  
  528. The GET command requests a remote KERMIT server to send the file or file
  529. group  specified by remote-filespec.  This command can be used only when
  530. Kermit-MS has a KERMIT server on the other end of the connection.   This
  531. means  that  you must have CONNECTed to the other system, logged in, run
  532. KERMIT there, issued the SERVER command, and escaped back (e.g. ^]C)  to
  533. the  local  Kermit-MS.  If the remote Kermit does not have a SERVER com-
  534. mand, then you should use SEND and RECEIVE as described above.
  535.  
  536. You may use the GET command to specify a different name for storing  the
  537. incoming.    Just  type  GET  alone  on a line, and you will be prompted
  538. separately for the remote filespec and the local filespec:
  539.  
  540.   Kermit-MS>get
  541.    Remote Source File: com1.txt
  542.    Local Destination File: xcom1.txt
  543.  
  544. If more than one file arrives, only the first will be renamed.
  545.  
  546. The remote filespec is any string that can be a legal file specification
  547. for the remote system; it is not parsed or validated locally.    It  can
  548. contain  whatever wildcard or file-group notation is valid on the remote
  549. system.  As files arrive, their names will be displayed on your  screen,
  550. along  with packet traffic statistics and status messages.  You may type
  551. ^X to request that the current incoming file be cancelled, ^Z to request
  552. that the entire incoming batch be cancelled, and ^C or ^E to return  im-
  553. mediately to the Kermit-MS> prompt, exactly as described for the RECEIVE
  554. command.
  555.  
  556.  
  557. 9.3.2. Commands for Connecting and Disconnecting
  558.  
  559. The CONNECT command connects your PC as a terminal to the remote system,
  560. so that you can start up Kermit there.  The BYE, FINISH, and LOGOUT com-
  561. mands allow you to shut down a remote Kermit server.
  562.  
  563. BYE             When  communicating with a remote KERMIT server, use the
  564.                 BYE command to shut down the server, log  out  its  job,
  565.                 and exit from Kermit-MS to DOS.
  566.  
  567. FINISH          Like BYE, FINISH shuts down the remote server.  However,
  568.                 FINISH  does not log out the server's job.  You are left
  569.                 at Kermit-MS prompt level so that you can  connect  back
  570.                 to the job on the remote system.
  571.  
  572. LOGOUT          The  LOGOUT command is identical to the BYE command, ex-
  573.                 cept you will remain at Kermit-MS prompt  level,  rather
  574.                 than exit to DOS, so that you can establish another con-
  575.                 nection.
  576.                                                                       89
  577.  
  578.  
  579. The CONNECT Command
  580.  
  581. Establish  an interactive terminal connection to the system connected to
  582. the currently selected communications port (e.g.  COM1  or  COM2)  using
  583. full duplex (remote) echoing and no parity unless otherwise specified in
  584. previous  SET  commands.    Get  back  to Kermit-MS by typing the escape
  585. character followed by the letter C. The escape character is Control-] by
  586. default.
  587.  
  588. You can use the SET ESCAPE command to define a different escape  charac-
  589. ter,  and  on some systems (including the PC and XT) you can SET BAUD to
  590. change the baud rate, and SET PORT to switch between ports.
  591.  
  592. Terminal emulation is described in greater detail in section 9.4 below.
  593.  
  594.  
  595. 9.3.3. Commands for File Management
  596.  
  597. Kermit-MS provides commands or managing both local and remote files.
  598.  
  599.  
  600.                           THE REMOTE COMMANDS
  601.  
  602. The REMOTE keyword is a prefix for a number of commands.   It  indicates
  603. that  the command is to be performed by the remote Kermit, which must be
  604. running as a server.  Note that not all Kermit servers  are  capable  of
  605. executing  all  these  commands,  and some Kermit servers may be able to
  606. perform functions for which Kermit-MS does not yet have the  correspond-
  607. ing  commands.  In case you send a command the server cannot execute, it
  608. will send back a message stating that the command is unknown to it.   If
  609. the  remote  server can execute the command, it will send the results to
  610. your screen.  Here are the REMOTE commands which Kermit-MS may issue:
  611.  
  612. CWD [directory] Change Working Directory on the remote host.  Change the
  613.                 default source and destination area  for  file  transfer
  614.                 and  management.    You will be prompted for a password,
  615.                 which will be erased as you type it.    If  you  do  not
  616.                 supply  a  password  (i.e.  you  type  only  a  carriage
  617.                 return), the server will attempt to access the specified
  618.                 directory without a password.  If you do  not  supply  a
  619.                 directory  name,  your default or login directory on the
  620.                 remote system will be assumed.
  621.  
  622. DELETE filespec Delete the specified file or files on the remote system.
  623.                 In response, the remote host should display  a  list  of
  624.                 the files that were or were not successfully deleted.
  625.  
  626. DIRECTORY [filespec]  The remote system will provide a directory listing
  627.                 of the specified files.  If no files are specified, then
  628.                 all  files  in  the  default  area  (the current working
  629.                 directory) will be listed.
  630.  
  631. HELP            The remote  host  tells  what  server  functions  it  is
  632.                 capable of.
  633.  
  634. HOST [command]  Send  the command to the remote system's command proces-
  635.                                                                       90
  636.  
  637.  
  638.                 sor for execution.
  639.  
  640. SPACE [directory]
  641.                 Provide  a  brief summary of disk usage in the specified
  642.                 area on the remote host.  If none specified, the default
  643.                 or current area will be summarized.
  644.  
  645. TYPE filespec   Display the contents of the  specified  remote  file  or
  646.                 files on the screen.
  647.  
  648.  
  649.                            THE LOCAL COMMAND
  650.  
  651. The  LOCAL  keyword  is a prefix for a number of commands.  It indicates
  652. that the specified command is to be executed on the local MS-DOS system.
  653. The LOCAL prefix may be omitted.  The local commands available are:
  654.  
  655. DELETE filespec Deletes the specified file or files.   As  in  DOS,  the
  656.                 names of the deleted files are not listed, only the mes-
  657.                 sage  "file(s)  deleted"  or "file(s) not found", and if
  658.                 you give the command "delete *.*", Kermit-MS will prompt
  659.                 "Are you sure?", like DOS.
  660.  
  661. DIRECTORY [filespec]  Lists the names,  sizes,  and  creation  dates  of
  662.                 files  that  match  the given file specification.  If no
  663.                 filespec is given, the command is equivalent to DIR *.*.
  664.  
  665. SPACE           Performs the  MS-DOS  CHKDSK  function  by  running  the
  666.                 CHKDSK  program  from  the current path, or default disk
  667.                 under DOS 1.1.
  668.  
  669. RUN filespec    Runs the specified file, which must be in .EXE  or  .COM
  670.                 format,  from  the  specified  path  or according to the
  671.                 value of the PATH variable if no path  was  included  in
  672.                 the  filespec.    This  command  requires  MS-DOS 2.0 or
  673.                 higher.
  674.  
  675. PUSH            Invokes an MS-DOS command processor  "under"  Kermit-MS,
  676.                 either  COMMAND.COM or whatever shell you have specified
  677.                 with COMSPEC.  When you return  to  Kermit-MS  (for  in-
  678.                 stance,  by  typing  the  MS-DOS EXIT command), you will
  679.                 find Kermit-MS as you left it, with all settings intact.
  680.                 This command only works in MS-DOS 2.0 or higher.
  681.  
  682. The local RUN command has various uses, one of which  is  to  supplement
  683. the  features  of Kermit-MS.  For instance, suppose there is an involved
  684. procedure that you regularly perform on a certain remote system --  this
  685. might include giving commands to a modem to dial the system, looking for
  686. a particular herald or prompt, performing a login command sequence, run-
  687. ning a selected application, and then running Kermit to send the results
  688. back  to your PC.  You could write a program in the compiled language of
  689. your choice, say C or BASIC, to send the desired commands to your  modem
  690. and  the  remote  system and to look for the appropriate responses.  You
  691. could put all this in a Kermit-MS TAKE command file (see below), like
  692.                                                                       91
  693.  
  694.  
  695.   run update.com
  696.   receive
  697.  
  698. The  program,  called UPDATE in this case, does everything up to and in-
  699. cluding starting Kermit sending  from  the  remote  system.    When  the
  700. program  terminates,  the next Kermit-MS command, "receive," is executed
  701. from the command file.  When the end of the command file is reached, in-
  702. teractive operation is resumed.
  703.  
  704.  
  705.                             THE TAKE COMMAND
  706.  
  707. Syntax: TAKE filespec
  708.  
  709. Execute Kermit commands from the specified file, which  may  include  an
  710. explicit  path;  if no path is specified, the value of the PATH variable
  711. is used; if PATH has no value, then the current disk and  directory  are
  712. searched.  The command file may include TAKE commands, but it cannot in-
  713. clude  characters  to be sent to a remote host during terminal emulation
  714. (i.e. after a CONNECT command).  A command  file  may  include  comments
  715. prefixed by semicolons.
  716.  
  717.  
  718.                             THE LOG COMMAND
  719.  
  720. Syntax: LOG filespec
  721.  
  722. Specifies  that all characters that appear on your screen during CONNECT
  723. will be recorded in the specified file.  This allows  you  to  "capture"
  724. files  from  a  remote  system  that  doesn't have Kermit, as well as to
  725. record remote command typescripts.  The log is closed when you EXIT from
  726. Kermit-MS or when you issue an explicit CLOSE command.
  727.  
  728.  
  729. 9.3.4. The SERVER Command
  730.  
  731. Kermit-MS is capable of acting as a Kermit server, providing file trans-
  732. fer for users coming in through one of the  communication  ports.    The
  733. current  version  of Kermit-MS can send files (the user on the other end
  734. types the GET command), receive files (the user types  SEND),  and  ter-
  735. minate, giving control back to the console (user types BYE).
  736.  
  737. To  put Kermit-MS into server mode, first issue any desired SET commands
  738. to select and configure the desired port, and then type the SERVER  com-
  739. mand.   Kermit-MS will await all further instructions from the user Ker-
  740. mit on the other end of the connection, which may be hardwired  or  con-
  741. nected through an autoanswer modem.  For example:
  742.  
  743.   Kermit-MS>set port 1
  744.   Kermit-MS>set baud 1200
  745.   Kermit-MS>set timer on
  746.   Kermit-MS>set warning on
  747.   Kermit-MS>server
  748.                                                                       92
  749.  
  750.  
  751. 9.3.5. The SET Command
  752.  
  753. Syntax: SET parameter [value]
  754.  
  755. Establish  or  modify  various  parameters for file transfer or terminal
  756. connection.  You can examine their values with the SHOW command.    Note
  757. that  there  is  no  "set  ibm"  command;  IBM  mainframe  communication
  758. parameters may be selected with a command macro (see below).   The  fol-
  759. lowing SET commands are available in Kermit-MS:
  760.  
  761.                 BAUD  Communications port line speed
  762.                 BELL  Whether to beep at the end of a transaction
  763.     BLOCK-CHECK-TYPE  Level of error checking for file transfer
  764.                DEBUG  Display packet contents during file transfer
  765.         DEFAULT-DISK  Default disk drive for file i/o
  766.          DESTINATION  Default destination device for incoming files
  767.          END-OF-LINE  Packet terminator
  768.                  EOF  Method for determining or marking end of file
  769.               ESCAPE  Escape character for CONNECT
  770.         FLOW-CONTROL  Enable or disable XON/XOFF
  771.            HANDSHAKE  Half-duplex line turnaround option
  772.              HEATH19  Heath/Zenith-19 terminal emulation
  773.           INCOMPLETE  What to do with an incompletely received file
  774.                  KEY  Specify key redefinitions, or "keystroke macros"
  775.           LOCAL-ECHO  Specify which host does the echoing during CONNECT
  776.               PARITY  Character parity to use
  777.                 PORT  Select a communications port
  778.               PROMPT  Change the "Kermit-MS>" prompt to something else
  779.              RECEIVE  Request remote Kermit to use specified parameters
  780.               REMOTE  For running Kermit-MS interactively from back port
  781.                 SEND  Use the specified parameters during file transfer
  782.            TAKE-ECHO  Control echoing of commands from TAKE files
  783.                TIMER  Enable/disable timeouts during file transfer
  784.              WARNING  Specify how to handle filename collisions
  785.  
  786. The SET commands that are peculiar to MS-DOS Kermit are now described in
  787. greater detail.  The others behave as in "ideal" Kermit.
  788.  
  789.  
  790. SET BAUD
  791.  
  792. Syntax: SET BAUD rate
  793.  
  794. Set  the  speed  of  the currently selected terminal communications port
  795. (COM1 by default) to 300, 1200, 1800, 2400, 4800, 9600 or  other  common
  796. baud  rate.    Some implementations do not support this command.  In any
  797. case, Kermit-MS leaves the current communication port settings alone un-
  798. less you issue explicit SET commands to change them.
  799.  
  800.  
  801. SET BELL
  802.  
  803. Syntax: SET BELL ON or OFF
  804.  
  805. Specifies whether bell (beeper) should sound upon completion of  a  file
  806. transfer operation.
  807.                                                                       93
  808.  
  809.  
  810. SET DEBUG
  811.  
  812. Syntax: SET DEBUG ON or OFF
  813.  
  814. ON      Display  the  Kermit  packet  traffic on your screen during file
  815.         transfer.  If the debugger is loaded,  transfer  control  to  it
  816.         when CTRL-C is typed.  In Heath-19 terminal emulation on the IBM
  817.         PC, display unusual control characters in uparrow notation.
  818.  
  819. OFF     Don't  display  debugging information (this is the default).  If
  820.         debugging was in effect, turn it off.
  821.  
  822.  
  823. SET DEFAULT-DISK
  824.  
  825. Syntax: SET DEFAULT-DISK x:
  826.  
  827. Specify the default disk drive to use for file transfer, directory list-
  828. ings, and so forth.  Equivalent to typing the DOS command  for  changing
  829. disks.
  830.  
  831.  
  832. SET DESTINATION
  833.  
  834. Syntax: SET DESTINATION device
  835.  
  836. Specify the device for incoming files, DISK or PRINTER.  SET DESTINATION
  837. PRINTER will cause incoming files to be spooled directly to the printer.
  838. The normal destination is DISK.
  839.  
  840.  
  841. END-OF-LINE
  842.  
  843. Syntax: SET END-OF-LINE number
  844.  
  845. If  the  remote  system needs packets to be terminated by anything other
  846. than carriage return, specify the decimal value  of  the  desired  ASCII
  847. character.
  848.  
  849.  
  850. SET EOF
  851.  
  852. Syntax: SET EOF option
  853.  
  854. Controls how the end of file is handled.  The options are:
  855.  
  856. CTRL-Z          Append  a  Control-Z character to the end of an incoming
  857.                 file, unless it already ends with a Control-Z.   Certain
  858.                 MS-DOS text editors and other applications require files
  859.                 to  be  in  this  format.  For outbound files, treat the
  860.                 first Control-Z as the end of file, and do not  send  it
  861.                 nor any characters following it.
  862.  
  863. NOCTRL-Z        (Default)  Store  incoming files exactly as is, and send
  864.                 MS DOS files exactly as  is  (according  to  their  byte
  865.                 count).
  866.                                                                       94
  867.  
  868.  
  869. SET ESCAPE
  870.  
  871. Syntax: SET ESCAPE character
  872.  
  873. Specify  the  control  character you want to use to "escape" from remote
  874. connections back to Kermit-MS.  The default  is  normally  ^]  (Control-
  875. Rightbracket).  The  character is entered literally, and should normally
  876. be chosen from the ASCII control range.
  877.  
  878.  
  879. SET FLOW-CONTROL
  880.  
  881. Syntax: SET FLOW-CONTROL option
  882.  
  883. Specify the full duplex  flow  control  to  be  done  on  the  currently
  884. selected  port.    The  current  options  are  XON/XOFF  and  NONE.  The
  885. specified type of flow control will be done during both terminal  emula-
  886. tion  and file transfer.  If set to XON/XOFF, HANDSHAKE is automatically
  887. set to OFF.
  888.  
  889.  
  890. SET HANDSHAKE
  891.  
  892. Syntax: SET HANDSHAKE option
  893.  
  894. Specify any half-duplex handshaking to be done on the currently selected
  895. port.  The options are BELL, CR, LF, NONE, XOFF, or XON.  The  specified
  896. handshaking will be done during file transfer only.  If HANDSHAKE is set
  897. to anything other than NONE, FLOW-CONTROL is automatically set to OFF.
  898.  
  899.  
  900. SET HEATH19
  901.  
  902. Syntax: SET HEATH19 ON or OFF
  903.  
  904. Specify  whether Kermit-MS should use its built-in software facility for
  905. emulating a Heath/Zenith-19 (H19) terminal.
  906.  
  907. ON      During CONNECT, incoming characters are to be examined  for  H19
  908.         terminal  screen control commands (escape sequences), and if en-
  909.         countered, the commands are to be emulated  on  the  PC  screen.
  910.         The  H19  codes are a superset of the popular DEC VT52 codes, so
  911.         if your system does not support the Heath-19, you  may  tell  it
  912.         that  your  terminal  type  is  VT52  (or  one  of the many VT52
  913.         compatibles).  The Heath-19 codes are listed  in  section  9.10,
  914.         below.
  915.  
  916. OFF     All  incoming  characters  will  be  sent  to the screen "bare",
  917.         through DOS.  If you have loaded a device driver  into  DOS  for
  918.         the CON: device, such as ANSI.SYS, then that driver will be able
  919.         to  interpret  the codes itself. Most non-IBM systems have their
  920.         own screen control code interpreter built into DOS or  firmware,
  921.         or available as a loadable device driver.
  922.  
  923. See section 9.4 for details about terminal emulation.
  924.                                                                       95
  925.  
  926.  
  927. SET KEY
  928.  
  929. Syntax: SET KEY key-specifier
  930.  
  931. Specifies  that when the designated key is struck during terminal emula-
  932. tion, the associated character string is sent.  The key-specifier is one
  933. of the keywords F1, F2, ..., or SCAN followed by a scan code.    Systems
  934. that have a BACKSPACE key also include BACKSPACE as a keyword.
  935.  
  936. If SCAN is used, it is followed by a decimal number to indicate the scan
  937. code  of  the  key, which you would ascertain from your system reference
  938. manual, or else by using the  Kermit-MS  SHOW  KEY  command.    SET  KEY
  939. prompts  you  on  a new line for the definition string.  Certain charac-
  940. ters, like ESC and CR, may not be entered literally into the string, but
  941. can be included by inserting escape codes of the form \ooo, a  backslash
  942. followed  by  a  2-  or  3-digit octal number corresponding to the ASCII
  943. value of the desired character.  If some other key redefinition package,
  944. like  ProKey,  has  been  loaded,  then  its  redefinitions  will   take
  945. precedence over Kermit's.
  946.  
  947. The  SET  KEY  command is illustrated in the terminal emulation section,
  948. 9.4, below.
  949.  
  950.  
  951. SET LOCAL-ECHO
  952.  
  953. Syntax: SET LOCAL-ECHO option
  954.  
  955. Specify how characters are echoed during terminal emulation on the  cur-
  956. rently  selected port.  ON specifies that characters are to be echoed by
  957. Kermit-MS (because neither the remote computer  nor  the  communications
  958. circuitry  has  been  requested  to  echo), and is appropriate for half-
  959. duplex connections.  LOCAL-ECHO is  OFF  by  default,  for  full-duplex,
  960. remote echo operation.
  961.  
  962. When  you SET LOCAL-ECHO ON, the current HANDSHAKE (if any) is automati-
  963. cally enabled and full-duplex FLOW-CONTROL is automatically turned  off.
  964. When you SET LOCAL-ECHO OFF, HANDSHAKE is also disabled, and the current
  965. mode  of  FLOW-CONTROL  (if  any)  is  enabled.  If this behavior is un-
  966. desired, you may override it by typing explicit  SET  HANDSHAKE  or  SET
  967. FLOW commands after entering the SET LOCAL-ECHO command.
  968.  
  969.  
  970. SET PARITY
  971.  
  972. Syntax: SET PARITY keyword
  973.  
  974. Specify  the character parity to be used on the currently selected port.
  975. The choices for SET PARITY are NONE (the default), ODD, EVEN, MARK,  and
  976. SPACE.  NONE means no parity processing is done, and the 8th bit of each
  977. character can be used for data when transmitting binary files.
  978.  
  979. You  will  need to SET PARITY to ODD, EVEN, MARK, or possibly SPACE when
  980. communicating with a system, or over a network, or through modems,  con-
  981. centrators, multiplexers, or front ends that require or impose character
  982. parity  on  the  communication line.  For instance, GTE Telenet requires
  983.                                                                       96
  984.  
  985.  
  986. MARK parity.  If you neglect to SET PARITY when the communications equi-
  987. pment requires it, the symptom may be that terminal emulation works par-
  988. tially, and file transfer does not work at all.
  989.  
  990. If you have set parity to ODD, EVEN, MARK, or SPACE, then Kermit-MS will
  991. request  that  binary files will be transferred using 8th-bit-prefixing.
  992. If the other side knows how to do 8th-bit-prefixing (this is an optional
  993. feature of the KERMIT protocol, and not all  implementations  of  KERMIT
  994. have it), then binary files can be transmitted successfully.  If NONE is
  995. specified,  8th-bit-prefixing will not be requested.  Note that there is
  996. no advantage to using parity; it only slows Kermit file  transfer  down.
  997. The  SET  PARITY  command  is  provided only to allow Kermit to adapt to
  998. hardware that insists upon using parity.
  999.  
  1000.  
  1001. SET PORT
  1002.  
  1003. Syntax: SET PORT number
  1004.  
  1005. On machines with more than one communications port, select the  port  to
  1006. use  for  file  transfer  and CONNECT.  This command lets you use a dif-
  1007. ferent asynchronous adapter, or switch between two or more  simultaneous
  1008. remote  sessions.    Subsequent  SET  BAUD, PARITY, HANDSHAKE, FLOW, and
  1009. LOCAL-ECHO commands will apply to this port only.  SET  PORT  1  selects
  1010. COM1, SET PORT 2 selects COM2.
  1011.  
  1012.  
  1013. SET REMOTE
  1014.  
  1015. Syntax: SET REMOTE ON or OFF
  1016.  
  1017. If  you  wish  to run Kermit-MS interactively through the back port, for
  1018. instance after the operator has done CTTY COM1, you must give  the  com-
  1019. mand SET REMOTE ON; this suppresses the file transfer display screen, so
  1020. that the display won't interfere with the file transfer itself.
  1021.  
  1022.  
  1023. SET RECEIVE
  1024.  
  1025. Syntax: SET RECEIVE parameter value
  1026.  
  1027. At  the  beginning of a protocol operation, request the remote Kermit to
  1028. use the given value specified parameter, or inform  Kermit-MS  that  the
  1029. remote Kermit will be using it.
  1030.  
  1031. PACKET-LENGTH   Ask  the  remote  Kermit  to  use  the specified maximum
  1032.                 length for packets that it sends to Kermit-MS.  The nor-
  1033.                 mal (and maximum) length is 94.   Use  this  command  to
  1034.                 shorten packets if the communication line is noisy; this
  1035.                 will  decrease  the probability that a particular packet
  1036.                 will be corrupted, and will  reduce  the  retransmission
  1037.                 overhead  when  corruption  occurs, but it will increase
  1038.                 the protocol overhead.
  1039.  
  1040. PADCHAR         Ask the remote Kermit to use the given character for in-
  1041.                 terpacket padding.  Kermit-MS should never  require  any
  1042.                                                                       97
  1043.  
  1044.  
  1045.                 padding.
  1046.  
  1047. PADDING         Ask the remote Kermit to insert the given number of pad-
  1048.                 ding  characters  before  each  packet  it  sends.  This
  1049.                 should never be necessary.
  1050.  
  1051. START-OF-PACKET The remote Kermit will be marking the beginning of pack-
  1052.                 ets with something other than Control-A.  This  will  be
  1053.                 necessary  only  if the hosts or communication equipment
  1054.                 involved cannot pass a Control-A through as data.
  1055.  
  1056. TIMEOUT         Ask the remote Kermit to time out after the given number
  1057.                 of seconds if a packet expected from Kermit-MS  has  not
  1058.                 arrived.   Use this command to change the normal timeout
  1059.                 interval.
  1060.  
  1061.  
  1062. SET SEND
  1063.  
  1064. Syntax: SET SEND parameter value
  1065.  
  1066. PACKET-LENGTH   Use the specified maximum length for  outbound  packets.
  1067.                 Normally,  Kermit-MS uses whatever length the other Ker-
  1068.                 mit requests.
  1069.  
  1070. PADCHAR         Use the specified  character  for  interpacket  padding.
  1071.                 Some hosts may require some padding characters (normally
  1072.                 NUL or DEL) before a packet.
  1073.  
  1074. PADDING         How many padding characters to use between packets, nor-
  1075.                 mally zero.
  1076.  
  1077. QUOTE           Use  the  indicated  printable  character  for prefixing
  1078.                 (quoting) control characters and  other  prefix  charac-
  1079.                 ters.  The only reason to change this would be for send-
  1080.                 ing a very long file that contains very many "#" charac-
  1081.                 ters (the normal control prefix) as data.
  1082.  
  1083. START-OF-PACKET Mark the beginning of outbound packets with some control
  1084.                 character  other than Control-A.  This will be necessary
  1085.                 only if the remote host or the communication channel in-
  1086.                 volved cannot accept a Control-A as data.    The  remote
  1087.                 host  must have been given the corresponding SET RECEIVE
  1088.                 START-OF-PACKET command.
  1089.  
  1090. TIMEOUT         Change Kermit-MS's normal timeout interval; this command
  1091.                 is effective only if TIMER is set to be ON; it  is  nor-
  1092.                 mally   OFF  so  that  the  remote  KERMIT  can  control
  1093.                 timeouts.
  1094.                                                                       98
  1095.  
  1096.  
  1097. SET TAKE-ECHO
  1098.  
  1099. Syntax: SET TAKE-ECHO ON or OFF
  1100.  
  1101. Specifies  whether  screen  display  should occur during implicit or ex-
  1102. plicit TAKE operations on MSKERMIT.INI or other Kermit-MS command files,
  1103. and during evaluation of macro definitions.  Handy for finding errors in
  1104. command files.
  1105.  
  1106.  
  1107. SET TIMER
  1108.  
  1109. Syntax: SET TIMER ON or OFF
  1110.  
  1111. Enable or disable the timer that is used during file transfer  to  break
  1112. the  deadlock  that  occurs when an expected packet does not arrive.  By
  1113. default, the timer is OFF, because Kermit-MS is usually used in conjunc-
  1114. tion with a mainframe that is doing its own timeouts.    During  a  file
  1115. transfer,  it  is  sufficient  for one side to do the timing out and the
  1116. mainframe is usually better equipped to adjust timeout  intervals  based
  1117. on  system  load or other conditions.  The timer should be set ON if you
  1118. are communicating with a system that cannot do  timeouts,  such  as  IBM
  1119. VM/CMS Kermit.
  1120.  
  1121.  
  1122. SET WARNING
  1123.  
  1124. Syntax: SET WARNING option
  1125.  
  1126. Specify  what to do when an incoming file has the same name as an exist-
  1127. ing file in the default directory of the default device.  If ON,  Kermit
  1128. will  warn  you  when  an incoming file has the same name as an existing
  1129. file, and automatically rename the incoming file (as  indicated  in  the
  1130. warning  message) so as not to destroy (overwrite) the pre-existing one.
  1131. If OFF, the pre-existing file is destroyed, even if  the  incoming  file
  1132. does not arrive completely.
  1133.  
  1134.  
  1135. 9.3.6. The SHOW Command
  1136.  
  1137. Syntax: SHOW option
  1138.  
  1139. Currently,  most  parameters  that  may be altered with SET commands are
  1140. displayed by the STATUS command.  The SHOW command is used for  display-
  1141. ing macro definitions and key redefinitions.
  1142.  
  1143. The  SHOW  MACROS  command  displays  the  definitions  of all currently
  1144. defined macros.
  1145.  
  1146. The SHOW KEY command allows you to determine the scan code  produced  by
  1147. pressing  a  given  key,  so that you can construct a SET KEY command to
  1148. redefine the key.  If the key already has a redefinition in effect, that
  1149. too will be displayed.  In this example, a DEC Rainbow  user  determines
  1150. the  scan  code for the accent grave key, and then redefines that key to
  1151. send ESC:
  1152.                                                                       99
  1153.  
  1154.  
  1155.   Kermit-MS>show key
  1156.   Press a key: `
  1157.     Scan Code:  96
  1158.     Definition:
  1159.   Kermit-MS>set key scan 96
  1160.   Definition string: \33
  1161.   Kermit-MS>show key
  1162.   Press a key: `
  1163.     Scan Code:  96
  1164.     Definition: \33
  1165.   Kermit-MS>
  1166.  
  1167. The SHOW KEY command only works on certain systems.
  1168.  
  1169.  
  1170. 9.3.7. Command Macros
  1171.  
  1172. Kermit-MS  provides  a  facility  for  combining commands into "macros."
  1173. Command macro definitions may be included  in  your  MSKERMIT.INI  file,
  1174. TAKEn  explicitly from a specified file, or typed interactively, and may
  1175. be invoked with the DO command.
  1176.  
  1177.  
  1178.                            THE DEFINE COMMAND
  1179.  
  1180. Kermit-MS command macros are constructed with the DEFINE command.    The
  1181. syntax is 
  1182.  
  1183.   DEFINE macro-name  [command [, command [, ...]]]
  1184.  
  1185. Any Kermit-MS commands may be included.  Example:
  1186.  
  1187.   define telenet set parity mark, set baud 1200, connect
  1188.  
  1189.  
  1190.                              THE DO COMMAND
  1191.  
  1192. A  Kermit-MS  command  macro  is  invoked using the DO command.  For in-
  1193. stance, Kermit-MS comes with a  predefined  macro  to  allow  convenient
  1194. setup for IBM communications; to invoke it, you would type 
  1195.  
  1196.   do ibm
  1197.  
  1198. The  IBM macro is defined as "parity mark, handshake xon, local-echo on,
  1199. timer on".  You can delete or replace this definition by  adding  a  new
  1200. (perhaps null) definition, such as 
  1201.  
  1202.   define ibm parity even, handshake cr, local-echo on, timer on
  1203.  
  1204. or 
  1205.  
  1206.   define ibm
  1207.                                                                      100
  1208.  
  1209.  
  1210. 9.4. Terminal Emulation
  1211.  
  1212. When you issue the CONNECT command, your PC acts as a terminal connected
  1213. to  a  remote computer through the currently selected port.  The charac-
  1214. ters you type are sent out the port, and characters that arrive  at  the
  1215. port  are displayed on your screen.  If you have not previously issued a
  1216. SET PORT command, COM1 is used.  If you have SET LOCAL-ECHO ON  for  the
  1217. selected  port,  then Kermit-MS will display characters on the screen as
  1218. you type them.  If LOCAL-ECHO is OFF, then XON/XOFF flow control will be
  1219. done unless you have SET FLOW-CONTROL OFF.  If you have  SET  PARITY  to
  1220. anything  other  than NONE, Kermit-MS will add the appropriate parity to
  1221. each outbound character, and strip any parity from incoming ones.  While
  1222. CONNECTed, you can also communicate with an autodialer or "smart  modem"
  1223. to  control  the  communications line, hang it up, and the like; for in-
  1224. stance, typing +++ to a Hayes-like modem will allow you to  follow  that
  1225. by dialing or hangup commands.
  1226.  
  1227. If  Heath-19  emulation  is  being  done,  incoming  characters  will be
  1228. monitored for H19/VT52 escape sequences.  These will be interpreted  ac-
  1229. cording  to the table in section 9.10.  In addition, keys on the numeric
  1230. keypad will send H19/VT52 sequences unless you disable this  feature  in
  1231. some  way,  for instance by pressing Num Lock on the IBM PC keyboard, or
  1232. with key redefinitions.
  1233.  
  1234.     Caution: On some systems, such as the IBM PC and  XT,  Kermit-MS
  1235.     accesses  the  screen  memory memory directly to perform certain
  1236.     H19 emulation functions  such  as  character  insert/delete  and
  1237.     screen scroll.  Without direct screen memory access, these func-
  1238.     tions  would  be  painfully  slow.   Although Kermit-MS has been
  1239.     tested successfully on a variety of monochrome and  color  adap-
  1240.     ters  and  monitors,  there  may  be combinations for which this
  1241.     method could cause video problems, such as snow.    Should  this
  1242.     occur,  you  can alleviate the problem by setting HEATH19 emula-
  1243.     tion OFF.  In that  case,  however,  you  remove  not  only  the
  1244.     problems,  but  also  the  desirable features of emulation.  But
  1245.     Kermit-MS does permit you to load  an  external  console  device
  1246.     driver,  such  as  IBM's ANSI.SYS, to provide any desired screen
  1247.     control.
  1248.  
  1249. Here are the terminal emulation options for the systems  presently  sup-
  1250. ported by Kermit-MS:
  1251.  
  1252.   System         EscChar   Cabilities   Terminal Service
  1253.   IBM PC, XT       ^]      R M P K      Heath19 emulation
  1254.   DEC Rainbow      ^]      R   P K      VT102 firmware
  1255.   HP-150           ^]      R            HP-2623 firmware
  1256.   Wang PC          ^A                   Wang firmware
  1257.   Generic DOS      ^]                   Depends on system
  1258.  
  1259. Under Capabilities, R means rollback, M means mode line, P means printer
  1260. control, and K means key redefinition.
  1261.  
  1262. IBM PC/XT Kermit can disable Heath-19 emulation and use an external con-
  1263. sole device driver like ANSI.SYS instead.
  1264.  
  1265. When you first issue the CONNECT command, a message (on some systems, an
  1266.                                                                      101
  1267.  
  1268.  
  1269. inverse  video  "mode line") will display the most important facts about
  1270. the connection you've just established, so that you can quickly diagnose
  1271. any problems.  The items displayed in the mode line include  the  escape
  1272. character,  port number, the baud rate, the parity, the echo, and how to
  1273. get help, for instance:
  1274.  
  1275. +---------------------------------------------------------------------+
  1276. |EscChar:^],Port:1,Baud:9600,Parity:None,Echo:Remote,Type ^]? for Help|
  1277. +---------------------------------------------------------------------+
  1278.  
  1279. The escape character is used to regain the attention of Kermit-MS.  When
  1280. you type the escape character, Kermit-MS waits for you to follow it with
  1281. a single character command.  For instance, the  single-character-command
  1282. "?"  produces  a  list  of  available single character commands, such as
  1283. this:
  1284.  
  1285.   ?   Help -- prints the available single-character commands.
  1286.   C   Close the connection and return to Kermit-MS prompt level.
  1287.   S   Show the status of the connection.
  1288.   B   Send a BREAK signal to the port.
  1289.   0   (the digit zero) Send a NUL (ASCII 0) to the port.
  1290.   Q   Temporarily quit logging the remote session.
  1291.   R   Resume logging the remote session.
  1292.   M   Toggle the mode line, i.e. turn it off if it is on & vice versa.
  1293.   ^]  (or whatever you have set the escape character to be)
  1294.       Typing the escape character twice sends one copy of it to the con-
  1295.       nected host.
  1296.  
  1297. Typing any other character (except the space bar,  which  is  the  "null
  1298. command")  after  the escape character will cause Kermit-MS to beep, but
  1299. will do no harm.  The escape character can be changed to something other
  1300. than Control-Rightbracket by using the SET ESCAPE command.
  1301.  
  1302. Kermit-MS includes several advanced features  for  use  during  terminal
  1303. emulation,  including  screen scroll, printer control, and key redefini-
  1304. tions.
  1305.  
  1306.  
  1307. Screen Scroll
  1308.  
  1309. Kermit-MS provides several pages of screen memory, which may be scrolled
  1310. up and down using keys as follows:
  1311.  
  1312.   Function            IBM PC/XT   Rainbow           HP-150
  1313.   Screen Down         PgDn        PrevScreen        Prev
  1314.   Line Down           Ctrl-PgDn   Ctrl-PrevScreen   Shift-UpArrow
  1315.   Screen Up           PgUp        NextScreen        Next
  1316.   Line Up             Ctrl-PgUp   Ctrl-NextScreen   Shift-DownArrow
  1317.   Top of Memory       Home
  1318.   Bottom of Memory    End
  1319.  
  1320. There is presently no way to assign these functions to other keys.
  1321.                                                                      102
  1322.  
  1323.  
  1324. Printer Control
  1325.  
  1326. A  locally  attached  printer may be controlled in the normal manner, on
  1327. most systems.  Pushing the "Print Screen" key (shifted on some  systems)
  1328. will  cause the current contents of the screen to be printed or spooled;
  1329. holding down CTRL while depressing Print Screen will start or  stop  the
  1330. spooling  of  incoming  characters to the printer.  ^P or ^N are sent to
  1331. the host during terminal emulation, and do not toggle printing, as  they
  1332. do when you're talking directly to DOS.
  1333.  
  1334. CTRL-Print-Screen  can be simulated with the Kermit-MS LOG PRN and CLOSE
  1335. commands.
  1336.  
  1337.  
  1338. Key Redefinitions
  1339.  
  1340. Key redefinitions are useful for defining "keystroke  macros"  of  login
  1341. sequences,  frequently issued commands, and so forth, and for setting up
  1342. the terminal for use with host resident software designed to  work  with
  1343. terminals  that send predefined sequences from their function keys.  For
  1344. instance, here's a key redefinition file for arranging the  DEC  Rainbow
  1345. keyboard into the normal ASCII keyboard layout:
  1346.  
  1347.   ; Make shift-comma send a left angle bracket
  1348.   set key scan 556
  1349.   <
  1350.   ; Shift-period sends a right angle bracket
  1351.   set key scan 558
  1352.   >
  1353.   ; Accent grave is where ESC is supposed to be
  1354.   set key scan 96
  1355.   \33
  1356.   ; Put accent grave on the ESC function key
  1357.   set key f11
  1358.   `
  1359.  
  1360. The  SET  KEY  facility may be used provide the PC with a "meta" key for
  1361. use with editors like EMACS or TVEDIT that can use "meta characters"  as
  1362. commands.   A meta key is a shift key whose effect is to turn on the 8th
  1363. (parity) bit of the character.  For instance, on the  IBM  PC  the  scan
  1364. codes  produced  by  holding  down  ALT  together with other keys can be
  1365. determined using SHOW KEY, and then 8-bit ASCII equivalents with the 8th
  1366. bit turned on can be defined using SET KEY; if the scan code produced by
  1367. typing ALT-a, i.e. the letter "a" (ASCII 141, octal) with  the  ALT  key
  1368. held  down,  is  2078  (decimal),  you  would set the META equivalent to
  1369. 141+200=341 (octal), or "\341" in octal SET KEY notation:
  1370.  
  1371.   Kermit-MS>sho key
  1372.   Press a key: ALT-a
  1373.     Scan Code: 2078
  1374.     Definition:
  1375.   Kermit-MS>set key scan 2078
  1376.   Definition String: \341
  1377.  
  1378. Whenever you type ALT-a with this definition in effect,  Kermit-MS  will
  1379. transmit octal 341, rather than 141.
  1380.                                                                      103
  1381.  
  1382.  
  1383. 9.5. Installation of Kermit-MS
  1384.  
  1385.                  by Bill Catchings, Columbia University
  1386.  
  1387. If you already have Kermit on your PC, you can use it to obtain new ver-
  1388. sions  of Kermit-MS when they appear on the central system at your site.
  1389. If you do not have Kermit or any other reliable file capture facility on
  1390. your PC, and there is no one from whom you can borrow a floppy  disk  to
  1391. copy  Kermit,  then  you  should read the following instructions for in-
  1392. itially "bootstrapping" Kermit-MS from a mainframe where  it  is  stored
  1393. onto your microcomputer.
  1394.  
  1395. There  are  at  least  three methods of initially getting Kermit-MS onto
  1396. your PC:
  1397.  
  1398.    1. Try again to find a copy on diskette.
  1399.  
  1400.    2. Use another file capture facility to get it.
  1401.  
  1402.    3. Type in and run a bootstrapping program.
  1403.  
  1404.  
  1405. 9.5.1. Try Again To Find A Kermit Disk
  1406.  
  1407. Before explaining how to bootstrap Kermit onto  your  PC,  a  disclaimer
  1408. must  be made.  Although a fair amount of thought and time has gone into
  1409. these procedures, they are far from error free.  If they were foolproof,
  1410. there would be no need for a protocol such as Kermit.   There  are  many
  1411. places  where  things can go wrong, from something as simple as a typing
  1412. mistake to something as unavoidable and probably inevitable  as  a  com-
  1413. munications  line  failure.   By far the easiest and best way to install
  1414. Kermit is from a floppy disk.  Before you embark on any of the following
  1415. procedures it is a good idea to check once again for a diskette to copy,
  1416. even it it contains an old version  of  Kermit.    The  time  you  spend
  1417. searching  is  likely to be far less frustrating than the time you spend
  1418. trying to bootstrap Kermit by the methods described below.
  1419.  
  1420.  
  1421. 9.5.2. Bootstrapping From the Communication Line
  1422.  
  1423. If you can't find a diskette with Kermit on  it,  there  are  two  other
  1424. methods  available  for  bootstrapping  MS-DOS Kermit onto your PC.  The
  1425. first method is to use a file capture  method  or  other  file  transfer
  1426. protocol  to  transfer  the file to your PC.  Some systems come supplied
  1427. with facilities like this,  and  various  public  domain  or  commercial
  1428. packages  are available.  The second method requires you to type in your
  1429. own downloading program.
  1430.  
  1431. In either case, you must transmit the file  from  the  system  where  it
  1432. resides  over a communication line and into your PC.  Since version 2 of
  1433. MS-DOS Kermit is much larger  than  version  1,  it  comes  with  a  new
  1434. bootstrapping  procedure in which the executable program is encoded much
  1435. more compactly than in the earlier "fix" files.  The new encoding  packs
  1436. 3 .EXE file bytes into 4 printable characters in the MSxxx.BOO file, and
  1437. also compresses adjacent zero bytes (of which there are many).  The .BOO
  1438. file  contains only printable characters, to ensure that downloading can
  1439.                                                                      104
  1440.  
  1441.  
  1442. take place regardless of parity or other peculariaries of the communica-
  1443. tion channel.
  1444.  
  1445.  
  1446. 9.5.2.1. Use An Existing File Capture Facility
  1447.  
  1448. In  the rest of this discussion of bootstrapping, the host-resident boot
  1449. .BOO file will be referred to as MSKERMIT.BOO.  In fact, the actual name
  1450. will depend on which MS-DOS system you are using -- MSIBMPC.BOO for  the
  1451. IBM PC or XT, MSRB100.BOO for the Rainbow 100, etc.
  1452.  
  1453. Use  your  file  capture  facility,  whatever it may be, to get the file
  1454. MSKERMIT.BOO onto your PC's disk, but first make sure  you  have  enough
  1455. room  for  it.    Once  the file is on your disk, you must run the BASIC
  1456. program MSPCTRAN.BAS to decode the file  back  into  KERMIT.EXE.    This
  1457. program can be downloaded by the same method you used with MSKERMIT.BOO.
  1458. The  program  looks  on  your  current  disk  and directory for the file
  1459. MSKERMIT.BOO and outputs KERMIT.EXE to the same place.    KERMIT.EXE  is
  1460. about 80K bytes, so make sure there is space for it on your disk or else
  1461. you  will  have  to start the program over.  Since the program will take
  1462. about twenty minutes to completely translate the file you will  want  to
  1463. avoid running it more than once.
  1464.  
  1465.  
  1466. 9.5.2.2. Type In Your Own Bootstrap
  1467.  
  1468. If  you  can't  find  some  method for downloading the .BOO file and the
  1469. BASIC program, the second way of bootstrapping  Kermit  is  to  use  the
  1470. programs   MSPCBOOT.BAS   and  MSBOOT.FOR  to  download  via  your  PC's
  1471. asynchronous port from your host and  translate  it  directly,  "on  the
  1472. fly."    You  run  the  program MSBOOT.FOR on your host and then run the
  1473. program MSPCBOOT.BAS in BASIC on your PC.  The FORTRAN program sends the
  1474. encoded .EXE file to the BASIC program, which decodes it and  stores  it
  1475. in  executable  form  on  your  current directory as KERMIT.EXE.  A very
  1476. rudimentary form of error checking is done to allow obviously  corrupted
  1477. records to be retransmitted.  Follow this procedure:
  1478.  
  1479.    1. First,  you  must  establish a connection from your PC to the
  1480.       host system.   A  high  speed  connection  is  preferable;  a
  1481.       "clean"  line is preferable to a noisy one.  In fact, a clean
  1482.       line is essential for this procedure.  You must  be  able  to
  1483.       log  in  to the host system over this connection.  If your PC
  1484.       already has a terminal emulation facility, use that.  If not,
  1485.       you might need to put your PC next to a real terminal and use
  1486.       that for logging in, then switch the connector to the  PC  at
  1487.       the  crucial  moment.  If you are using a terminal, make sure
  1488.       the terminal and PC have their communication ports set to the
  1489.       same speed.
  1490.  
  1491.    2. Ensure that the files MSBOOT.FOR and MSKERMIT.BOO are present
  1492.       on the host system.  MSBOOT.FOR is listed below, in case  you
  1493.       need to type it in.
  1494.  
  1495.    3. Get  back  to  your PC and type in MSPCBOOT.BAS on your PC; a
  1496.       listing appears below.  There is no need to type in the  com-
  1497.       ments (anything following an apostrophe); they are only there
  1498.                                                                      105
  1499.  
  1500.  
  1501.       to  clarify  what the program is doing.  Check very carefully
  1502.       for errors.  You should check line 80 in the program  to  see
  1503.       that  it reflects the way your system is actually set up.  If
  1504.       necessary, substitute the correct baud rate for the  supplied
  1505.       rate of 9600, and if you are not using COM1: make that change
  1506.       as  well.   If you are downloading from an IBM or other half-
  1507.       duplex mainframe,  leave  line  1000  as  it  is;  otherwise,
  1508.       replace it by a RETURN statement.  If you type it in directly
  1509.       to BASIC make sure you save the program before you run it, so
  1510.       you won't have to type it in again in case of error.
  1511.  
  1512.    4. Get  back  to  your host system and compile MSBOOT.FOR, if it
  1513.       needs compiling.  Define logical unit numbers 5 and 6  to  be
  1514.       the  controlling  terminal, and logical unit 7 to be the file
  1515.       MSKERMIT.BOO.  On VAX/VMS systems,  for  example,  use  these
  1516.       commands:
  1517.  
  1518.         $assign sys$input for005
  1519.         $assign sys$output for006
  1520.         $assign mskermit.boo for007
  1521.  
  1522.       On a DECSYSTEM-20, do:
  1523.  
  1524.         @define 5: tty:
  1525.         @define 6: tty:
  1526.         @define 7: mskermit.boo
  1527.  
  1528.       On a DECsystem-10, do something like this:
  1529.  
  1530.         .assign tty: 5:
  1531.         .assign tty: 6:
  1532.         .assign dsk: 7:
  1533.         .rename for007.dat=mskerm.boo
  1534.  
  1535.       On an IBM system under VM/CMS, do this:
  1536.  
  1537.         .filedef 5 term ( lrecl 80 recfm v
  1538.         .filedef 6 term ( lrecl 80 recfm v
  1539.         .filedef 7 disk mskermit boo ( lrecl 77 recfm f perm
  1540.  
  1541.    5. Set your host system up for downloading:
  1542.  
  1543.          - Ensure  that  your terminal does not automatically pause
  1544.            at the end of a screenful of output.  For instance, on a
  1545.            DEC-20 you would issue the command  "terminal  no  pause
  1546.            end-of-page".
  1547.  
  1548.          - Do  whatever  you can to disable messages from appearing
  1549.            at your terminal while these programs are running.  This
  1550.            would include messages from other users, mail  notifica-
  1551.            tion,  alarms  or alerts, system messages, and so forth.
  1552.            Such messages will interfere  with  the  procedure,  and
  1553.            probably render the result useless.
  1554.  
  1555.          - You  should  put  your  host terminal in "local echo" or
  1556.            "half duplex" mode, if possible.
  1557.                                                                      106
  1558.  
  1559.  
  1560.    6. Start the MSBOOT program on your host system.
  1561.  
  1562.    7. Get  back  to  the  PC.    If you have been using a terminal,
  1563.       switch the connector to the PC.
  1564.  
  1565.    8. Now run the BASIC program, MSPCBOOT.BAS.  This procedure will
  1566.       take at least twenty minutes and possibly longer depending on
  1567.       line speed.  Watch your modem and/or disk  lights  for  reas-
  1568.       surance that something is happening.
  1569.  
  1570. By  using one of these installation methods, you should now have a work-
  1571. ing version of Kermit.  If you experience any  problems  or  quirky  be-
  1572. havior  with  the  program,  it's possible that some part of it was cor-
  1573. rupted during the downloading procedure.   Perhaps  enough  usable  code
  1574. remains  to  allow  you to transfer MSKERMIT.EXE from the host.  If not,
  1575. you will have to repeat the downloading procedure.
  1576.  
  1577. Once you have Kermit-MS on your disk, you should make the disk available
  1578. to other users for copying, so that they can be  spared  the  tedium  of
  1579. this bootstrap procedure.
  1580.  
  1581. Here  is  a  listing  of MSPCBOOT.BAS.  The "outdented" PRINT statements
  1582. with line numbers ending in 5 may  be  included  if  you  want  incoming
  1583. records  to  be  displayed on the screen.  You don't need to include the
  1584. comments.
  1585.  
  1586. 1    'Run this program on the PC in conjunction with a Fortran program
  1587. 2    '(MSBOOT.FOR) on the mainframe to download Kermit to the PC.  This
  1588. 3    'program will run for about thirty minutes, depending on line speed.
  1589. 4    ' Bill Catchings, June 1984
  1590. 5    ' Columbia University Center for Computing Activities
  1591.  
  1592. 10   t$ = time$                         ' Save the time.
  1593. 20   defint a-z                         ' All integer to gain some speed.
  1594. 30   n$ = chr$(0)
  1595. 40   z = asc("0")
  1596. 50   t = asc("~")-z
  1597. 60   def fnuchr%(a$)=asc(a$)-z
  1598. 70   open "com1:9600,s,7,1,cs,ds,cd" as #1
  1599.  
  1600. 100  print#1,"O ,"                      ' Char constants "O", " " and ","
  1601. 110  input#1,f$
  1602. 120  if len(f$) < 5 then goto 110       ' In case the host echos the ACK.
  1603. 130  input#1,n
  1604. 135 print f$+" "+str$(n)
  1605. 140  if n > 20 then goto 900
  1606. 150  open f$ for output as #2
  1607. 160  print "Outputting to "+f$
  1608. 170  goto 300                           ' Correct version of the file.
  1609.  
  1610. 200  gosub 1000                         ' Do turnaround char processing
  1611. 210  print#1,"NO"                       ' Tell host data was incorrect.
  1612. 220  goto 320
  1613.                                                                      107
  1614.  
  1615.  
  1616.  
  1617. 300  gosub 1000                         ' Do turnaround char processing
  1618. 310  print#1,"OK"                       ' Say the line was all right.
  1619. 320  input#1,x$
  1620. 330  if len(x$) < 5 then goto 320       ' In case the host echos ACK/NAK
  1621. 340  input#1,n
  1622. 345 print x$+" "+str$(n)
  1623. 350  if len(x$) <> n then goto 200      ' Length doesn't match, NAK it.
  1624. 360  if x$ = "&&&&&&&&&&" then goto 800 ' End of file?
  1625. 370  y$ = ""                            ' Set output string to null.
  1626. 380  goto 500
  1627.  
  1628. 400  print#2,y$;                        ' Print the output string.
  1629. 410  goto 300                           ' Go get another line.
  1630.  
  1631. 500  if len(x$) = 0 goto 400            ' Done with input string?
  1632. 510  a = fnuchr%(x$)
  1633. 520  if a = t then goto 700             ' Null repeat character?
  1634. 530  q$=mid$(x$,2,3)                    ' Get the quadruplet to decode.
  1635. 540  x$=mid$(x$,5)
  1636. 550  b = fnuchr%(q$)
  1637. 560  q$ = mid$(q$,2)
  1638. 570  c = fnuchr%(q$)
  1639. 580  q$ = mid$(q$,2)
  1640. 590  d = fnuchr%(q$)
  1641.  
  1642. 600  y$ = y$ + chr$(((a * 4) + (b \ 16)) and 255) ' Decode the quad.
  1643. 610  y$ = y$ + chr$(((b * 16) + (c \ 4)) and 255)
  1644. 620  y$ = y$ + chr$(((c * 64) + d) and 255)
  1645. 630  goto 500                           ' Get another quad.
  1646.  
  1647. 700  x$ = mid$(x$,2)                    ' Expand nulls.
  1648. 710  r = fnuchr%(x$)                    ' Get the number of nulls.
  1649. 715 print " Null: ",r
  1650. 720  x$ = mid$(x$,2)
  1651. 730   for i=1 to r                      ' Loop, adding nulls to string.
  1652. 740   y$ = y$ + n$
  1653. 750   next
  1654. 760  print#2,y$;                        ' Print the nulls.
  1655. 770  y$ = ""                            ' Clear the output buffer.
  1656. 780  goto 500
  1657.  
  1658. 800  print "Processing complete, elapsed time: "+t$+" to "+time$
  1659. 810  print "Output in "+f$
  1660. 820  close #1,#2
  1661. 830  goto 9999
  1662.  
  1663. 900  print "?The format of the BOO file is incorrect"
  1664. 910  goto 820
  1665.  
  1666. 1000 x$ = input$(1,#1)          ' Make this line RETURN for full-duplex
  1667. 1010 if x$ <> chr$(17) then goto 1000   ' Loop for a turn around char.
  1668. 1020 return
  1669.  
  1670. 9999 end
  1671.                                                                      108
  1672.  
  1673.  
  1674. Here  is a listing of MSBOOT.FOR, in case you can't find it on your host
  1675. system:
  1676.  
  1677. C     This Fortran program should be run on the mainframe in conjunction
  1678. C     with a Basic program (MSPCBOOT.BAS) on the PC to transfer
  1679. C     MSKERMIT.BOO to the PC and translate it into KERMIT.EXE.  This
  1680. C     program uses a very rudimentary technique to try to insure that
  1681. C     the characters it sends arrive correctly.  It just sends a count
  1682. C     of the number of characters sent after each line.  In this way any
  1683. C     errors of character loss or insertion will be caught.  If a
  1684. C     character is just corrupted it will not be caught.  Hopefully if
  1685. C     this happens it will be in a non-critical part of the KERMIT.EXE
  1686. C     file.  The reason a simple checksum was not used was so that this
  1687. C     program could run on machines using either EBCIDIC or ASCII
  1688. C     characters.  This program should take about thirty minutes to run.
  1689.  
  1690. C     This program assumes that 5 and 6 are directed to the terminal and
  1691. C     7 is directed to the file MSKERMIT.BOO.
  1692.  
  1693.       INTEGER LINE(77), ACK(4), CHECK, OK, SPACE, COMMA
  1694.  
  1695.       WRITE(6,100)
  1696. 100   FORMAT(' Ready to transfer data, now run MSPCBOOT.BAS on the PC.')
  1697.  
  1698. C     Get characters for constants (character constants are rough in
  1699. C     some FORTRANs!)
  1700.       READ (5,200) OK, SPACE, COMMA, ACK
  1701. 200   FORMAT(4A1)
  1702.       GO TO 30
  1703.  
  1704. C     Get terminal handshake.
  1705. 10    READ (5,200)ACK
  1706.  
  1707. C     Did the other side like it?  (Did they send OK?)
  1708.       IF (ACK(1) .NE. OK) GO TO 50
  1709.  
  1710. C     Yes, get new line from file.
  1711. 20    READ (7,300,END=99)LINE
  1712. 300   FORMAT(77A1)
  1713.  
  1714. C     Count the characters as some rudimentary check for noise.
  1715.       I = 1
  1716. 30    IF (LINE(I) .EQ. SPACE) GO TO 40
  1717.       I = I + 1
  1718.       GO TO 30
  1719.  
  1720. C     Put in a comma followed by the count.
  1721. 40    LINE(I) = COMMA
  1722.  
  1723. C     Write to TTY.
  1724. 50    WRITE (6,400)LINE,I-1
  1725. 400   FORMAT(' ',77A1,I2)
  1726.       GOTO 10
  1727.                                                                      109
  1728.  
  1729.  
  1730.  
  1731. C     Send good-bye message.
  1732. 99    WRITE (6,500)
  1733. 500   FORMAT(' ',10('&'),',10')
  1734.  
  1735.       STOP
  1736.       END
  1737.  
  1738.  
  1739. 9.6. Compatibility with Older Versions of MS-DOS Kermit
  1740.  
  1741. MS-DOS  Kermit  supports  many  different systems.  Like CP/M-80 KERMIT,
  1742. this support was added to the program piecemeal, at  many  sites,  using
  1743. conditional assembly.  However, before allowing the program to grow into
  1744. a  complicated  monolith like CP/M-80 KERMIT, we have broken the program
  1745. up into separate modules,  with  system  dependencies  isolated  into  a
  1746. single  module consisting of compact collections of low-level primitives
  1747. for console and port i/o.
  1748.  
  1749. The last monolithic (single source file) release of  MS-DOS  Kermit  was
  1750. 1.20.    To this and earlier versions was added support for systems like
  1751. the Seequa Chameleon, the Tandy 2000, the Victor 9000, the  Heath/Zenith
  1752. 100,  and  others.    Eventually,  support  for these systems may be in-
  1753. tegrated with the new modular version.  Meanwhile, implementations based
  1754. on these old versions will have at least the  following  incompatibilies
  1755. from the version described here:
  1756.  
  1757.    - RECEIVE filespec is used instead of GET filespec.  There is no
  1758.      GET  command  in  older  versions, and no way to specify a new
  1759.      name for an incoming file.
  1760.    - No LOCAL or REMOTE commands.
  1761.    - No 8th-bit  prefixing,  repeat  counts,  CRCs  or  2-character
  1762.      checksums.
  1763.    - No TAKE or initialization files.
  1764.    - No command macros or command line arguments.
  1765.    - No terminal session logging.
  1766.  
  1767. and others, depending on the specific version.
  1768.  
  1769.  
  1770. 9.7. What's Missing
  1771.  
  1772. Kermit-MS  has plenty of room for improvement.  Features that need to be
  1773. improved or added include:
  1774.  
  1775.    - A built-in facility for sending files "raw" to the remote sys-
  1776.      tem, obeying current settings for parity, flow control,  hand-
  1777.      shake,  and so forth.  This might include a script interpreta-
  1778.      tion  facility  to  allow  remote  sessions  to  be  conducted
  1779.      automatically.  For the present, this can be accomplished with
  1780.      a  user-supplied  program  invoked with the Kermit-MS RUN com-
  1781.      mand.
  1782.  
  1783.    - Additional  functionality  when   running   in   server   mode
  1784.      --  directory  listings,  file deletion, execution of DOS com-
  1785.      mands, etc.
  1786.                                                                      110
  1787.  
  1788.  
  1789.    - More commands when talking to remote servers -- REMOTE RENAME,
  1790.      COPY, STATUS, WHO, etc.
  1791.  
  1792.    - Filename  conversion  options  (normal form, handling of fully
  1793.      qualified filespecs, etc.).
  1794.  
  1795.    - Transaction file logging.
  1796.  
  1797.    - Improved command parsing; for instance, accept default  values
  1798.      for omitted trailing fields.
  1799.  
  1800.    - A better built-in help facility.
  1801.  
  1802.    - Support for Kermit file attribute packets.
  1803.  
  1804.    - The Kermit-MS program is quite large.  Much of the size is due
  1805.      to  the deliberate decision to provide support for versions of
  1806.      MS-DOS prior to 2.0.  At some point, this  support  should  be
  1807.      removed.    This  will not only reduce the size of the program
  1808.      considerably, but also provide much more flexibility.
  1809.  
  1810.  
  1811. 9.8. Program Organization
  1812.  
  1813. Kermit-MS version 2 is composed of separate assembler source files,  as-
  1814. sembled separately, and linked together.  The modules are:
  1815.  
  1816. System/Device Independent:
  1817.  
  1818.     MSKERM.ASM    Main program
  1819.     MSSEND.ASM    File sender
  1820.     MSRECV.ASM    File receiver
  1821.     MSSERV.ASM    Server operation
  1822.     MSFILE.ASM    File i/o
  1823.     MSCMD.ASM     Command parser
  1824.     MSTERM.ASM    CONNECT command
  1825.     MSCOMM.ASM    Communications port buffering & flow control
  1826.     MSSET.ASM     SET, SHOW, and STATUS commands
  1827.     MSDEFS.H      Data structure definitions and equates
  1828.  
  1829. System/Device Dependent:
  1830.  
  1831.     MSXxxx.ASM    System-dependent code for system xxx
  1832.     MSYxxx.ASM    System-dependent screen and keyboard code
  1833.     MSZxxx.ASM    Modem control (modem-dependent)
  1834.  
  1835. The  modular  organization  allows  easier  modification of the program,
  1836. quicker transfer  of  modified  portions  from  system-to-system.    The
  1837. modules  are  designed  to be well-defined and self-contained, such that
  1838. they can be easily replaced.  For instance, someone who prefers  windows
  1839. and  mice  to  typing  commands could replace the command parsing module
  1840. without having to worry about the effect on the other modules.
  1841.  
  1842. To assemble any of the kermit modules, file  MSDEFS.H  must  be  on  the
  1843. default disk.
  1844.                                                                      111
  1845.  
  1846.  
  1847. All  the  Kermit  implementations  require  the  modules  MSCMD, MSCOMM,
  1848. MSFILE, MSKERM, MSRECV, MSSEND, MSSERV, MSSET, MSTERM.
  1849.  
  1850. The IBM PC version requires MSXIBM and MSYIBM as well.
  1851.  
  1852. The Rainbow version requires MSXRB and MSXDMB; MSXDMB must be the  first
  1853. object  file  given  to  the  linker for Kermit to link properly for the
  1854. Rainbow.
  1855.  
  1856. The HP150 version requires MSXHP150, the Wang version  requires  MSXWNG,
  1857. and the generic version requires MSXGEN.
  1858.  
  1859. Once  all the required object modules exist, they may be linked together
  1860. to produce Kermit.  For example, on the Rainbow:
  1861.  
  1862.   A>link
  1863.  
  1864.      Microsoft Object Linker V2.00
  1865.   (C) Copyright 1982 by Microsoft Inc.
  1866.  
  1867.   Object Modules [.OBJ]: msxdmb mskerm msxrb mscomm msset mssend +
  1868.   msrecv msserv msfile msterm mscmd
  1869.   Run File [MSXDMB.EXE]: kermit
  1870.   List File [NUL.MAP]: kermit
  1871.  
  1872.   A>
  1873.  
  1874.  
  1875. 9.9. Adding Support For New Systems
  1876.  
  1877. You can bring Kermit-MS to systems that are not explicitly supported  in
  1878. one  of two ways -- attempt to run the "generic" MS-DOS Kermit on it, or
  1879. add explicit code to support your system.
  1880.  
  1881.  
  1882. 9.9.1. Generic MS-DOS Kermit
  1883.  
  1884. To get started with Kermit on a new system, try running "generic" MS-DOS
  1885. Kermit; in many cases, it will run as  is.    The  generic  version  ac-
  1886. complishes  all  its  port and console i/o through DOS calls, and during
  1887. terminal connection does not attempt to emulate any particular  kind  of
  1888. terminal.    In  some  cases, the generic version may still require some
  1889. fiddling to run on a new system; for instance, different  systems  refer
  1890. to  their  communication  ports in different ways -- COM1, AUX, etc.  It
  1891. attempts to do this automatically by trying various DOS file handles for
  1892. the communication port, and asking you to supply  one  if  it  does  not
  1893. succeed.
  1894.  
  1895. Generic MS-DOS Kermit will probably run no faster than 1200 baud, and it
  1896. only works with DOS 2.0 or later.
  1897.                                                                      112
  1898.  
  1899.  
  1900. 9.9.2. Adding System-Dependent Code
  1901.  
  1902. The following is a guide to the system dependent module of Kermit-MS.
  1903.  
  1904.  
  1905.            SPECIFICATION FOR KERMIT SYSTEM-DEPENDENT MODULES
  1906.  
  1907.                   by Jeff Damens, Columbia University
  1908.  
  1909. All  the system-independent global data structures used in Kermit-MS are
  1910. defined in the file MSDEFS.H.
  1911.  
  1912. The routine MSXxxx.ASM contains system-dependent support for system xxx,
  1913. except for terminal emulation, which is in MSXxxx.ASM, described below.
  1914.  
  1915. The routines in the MSX module may change any registers  but  the  stack
  1916. pointer  and  segment registers, unless otherwise noted.  A routine that
  1917. returns via a RET instruction is said to return normally; a routine that
  1918. skip returns is one that returns to three bytes past the  normal  return
  1919. address.
  1920.  
  1921. Global variables that must be defined in the system-dependent module:
  1922.  
  1923. XOFSNT          byte.   This should be set to a non-zero value if we are
  1924.                 doing flow control and have sent an  XOFF  character  to
  1925.                 the remote host, zero otherwise.
  1926.  
  1927. MACHNAM         byte.    A  $-terminated  string identifying the machine
  1928.                 this version of Kermit is for; it is printed when Kermit
  1929.                 starts up.
  1930.  
  1931. SETKTAB         byte.  A keyword table associating terminal key names to
  1932.                 16-bit scan code values, used in the  set  key  command.
  1933.                 If  the  kermit  version  can  accept  arbitrary decimal
  1934.                 values as scan codes, the word "SCAN" should  appear  in
  1935.                 the  table with a scan value of -1.  If key redefinition
  1936.                 is not implemented, the first byte of the  table  should
  1937.                 be a zero.
  1938.  
  1939. SETKHLP         byte.    A  $-terminated  string to be printed when ? is
  1940.                 typed in the SET KEY command.  This is usually simply  a
  1941.                 list  of  the  key  names  in  SETKTAB.  SETKHLP must be
  1942.                 defined even if key redefinition is not implemented,  to
  1943.                 satisfy  the  linker;  if key redefinition is not imple-
  1944.                 mented, SETKHLP will never be displayed.
  1945.  
  1946. COUNT           word.  The number of  characters  in  the  serial  input
  1947.                 buffer,  if  known.  This is how Kermit knows to send an
  1948.                 XON if the serial handler has sent an XOFF.  If the num-
  1949.                 ber of characters  in  the  buffer  isn't  known,  COUNT
  1950.                 should be 0.
  1951.  
  1952. These  are  the required entry points for the system dependent dependent
  1953. module MSXxxx.ASM.
  1954.                                                                      113
  1955.  
  1956.  
  1957. SERINI
  1958.  
  1959. Parameters      None.
  1960.  
  1961. Returns         Normally, no return value.
  1962.  
  1963. Description     Perform  any initialization that must be done before the
  1964.                 serial port can be used, including  setting  baud  rate,
  1965.                 interrupt  vectors, etc.  Parity and baud rate should be
  1966.                 set according to the values in the  PORTINFO  structure.
  1967.                 The  external  variable  PORTVAL  points to the PORTINFO
  1968.                 structure for the current port.    Calling  SERINI  more
  1969.                 than  once  without an intervening call to SERRST should
  1970.                 have no effect.
  1971.  
  1972.  
  1973. SERRST
  1974.  
  1975. Parameters      None.
  1976.  
  1977. Returns         Normally, no return value.
  1978.  
  1979. Description     Undoes any  initialization  done  by  SERINI,  including
  1980.                 resetting  the serial port, restoring any interrupt vec-
  1981.                 tors changed by SERINI, etc.   Calling  this  more  than
  1982.                 once  without  an  intervening  call to SERINI should be
  1983.                 harmless.
  1984.  
  1985.  
  1986. CLRBUF
  1987.  
  1988. Parameters      None.
  1989.  
  1990. Returns         Normally, no return value.
  1991.  
  1992. Description     Remove and discard from the serial port's  input  buffer
  1993.                 any characters sent by the remote host that have not yet
  1994.                 been  read  by Kermit, and set COUNT to 0.  This is used
  1995.                 before a file transfer to flush NAK's that accumulate in
  1996.                 the buffer when the remote host is in server mode.
  1997.                                                                      114
  1998.  
  1999.  
  2000. OUTCHR
  2001.  
  2002. Parameters      A character in AH.
  2003.  
  2004. Returns         Skip  returns  if  the  character  has been transmitted;
  2005.                 returns normally if the character can not be transmitted
  2006.                 because of a hardware error.
  2007.  
  2008. Description     Sends the character in AH  out  the  currently  selected
  2009.                 serial  port.    OUTCHR can assume that SERINI will have
  2010.                 been called previously. OUTCHR should call the  external
  2011.                 routine  DOPAR to set the parity of the character if the
  2012.                 communications  hardware   doesn't   automatically   set
  2013.                 parity.    Flow  control should be honored; the external
  2014.                 variable PORTVAL contains a pointer to a PORTINFO struc-
  2015.                 ture (as defined in  MSDEFS.H)  containing  the  current
  2016.                 flow control definitions.
  2017.  
  2018.  
  2019. COMS
  2020.  
  2021. Parameters      None.
  2022.  
  2023. Returns         Normally  if  a parse error is encountered, skip returns
  2024.                 otherwise.
  2025.  
  2026. Description     Called by the SET PORT command.  On a machine with  mul-
  2027.                 tiple  serial  ports,  COMS should parse for the name or
  2028.                 number of a serial port and make that the port  used  by
  2029.                 succeeding  calls to SERINI, PRTCHR, OUTCHR, and SERRST.
  2030.                 It should set the external variable PORTVAL to point  to
  2031.                 one  of the external port structures PORT1 or PORT2, and
  2032.                 set COMFLG in the FLAGS structure to 1 for port  one,  0
  2033.                 for  port  2.    For  implementations  that use only one
  2034.                 serial port, COMS should print a message to that  effect
  2035.                 and skip return.
  2036.  
  2037.  
  2038. VTS
  2039.  
  2040. Parameters      None.
  2041.  
  2042. Returns         Normally  if  a parse error is encountered, skip returns
  2043.                 otherwise.
  2044.  
  2045. Description     Parses for an ON or OFF, sets HEATH-19  emulation  while
  2046.                 in terminal emulation appropriately.  The VTFLG field of
  2047.                 the  FLAGS  structure should be set non-zero if HEATH-29
  2048.                 emulation is on, zero otherwise.  If HEATH-19  emulation
  2049.                 is not done, VTS should print a message and skip return.
  2050.                                                                      115
  2051.  
  2052.  
  2053. DODEL
  2054.  
  2055. Parameters      None.
  2056.  
  2057. Returns         Normally, no return value.
  2058.  
  2059. Description     Erases the character immediately to the left of the cur-
  2060.                 sor from the screen, then backs up the cursor.
  2061.  
  2062.  
  2063. CTLU
  2064.  
  2065. Parameters      None.
  2066.  
  2067. Returns         Normally, no return value.
  2068.  
  2069. Description     Move the cursor to the left margin, then clear the line.
  2070.  
  2071.  
  2072. CMBLNK
  2073.  
  2074. Parameters      None.
  2075.  
  2076. Returns         Normally, no return value.
  2077.  
  2078. Description     Clears the screen and homes the cursor.
  2079.  
  2080.  
  2081. LOCATE
  2082.  
  2083. Parameters      None.
  2084.  
  2085. Returns         Normally, no return value.
  2086.  
  2087. Description     Homes the cursor.
  2088.  
  2089.  
  2090. LCLINI
  2091.  
  2092. Parameters      None.
  2093.  
  2094. Returns         Normally, no return value.
  2095.  
  2096. Description     Performs any system-dependent initialization required by
  2097.                 this implementation.
  2098.                                                                      116
  2099.  
  2100.  
  2101. PRTCHR
  2102.  
  2103. Parameters      None.
  2104.  
  2105. Returns         Normally,  with  the  next  character from the currently
  2106.                 selected serial port in AL.  Skip returns if no  charac-
  2107.                 ter is available.
  2108.  
  2109. Description     Reads  the  next character from the current serial port.
  2110.                 PRTCHR can assume SERINI has been called previously, and
  2111.                 should handle flow control correctly.
  2112.  
  2113.  
  2114. DOBAUD
  2115.  
  2116. Parameters      None.
  2117.  
  2118. Returns         Normally, no return value.
  2119.  
  2120. Description     Sets the baud rate for the current port.  The baud  rate
  2121.                 should  be  obtained from the BAUD field of the PORTINFO
  2122.                 structure, pointed to by the external variable PORTVAL.
  2123.  
  2124.  
  2125. CLEARL
  2126.  
  2127. Parameters      None.
  2128.  
  2129. Returns         Normally, no return value.
  2130.  
  2131. Description     Clears from the cursor to the end of the current line.
  2132.  
  2133.  
  2134. DODISK
  2135.  
  2136. Parameters      None.
  2137.  
  2138. Returns         Normally, no return value.
  2139.  
  2140. Description     Sets the external variable DRIVES to the number of  disk
  2141.                 drives attached to the machine.
  2142.  
  2143.  
  2144. GETBAUD
  2145.  
  2146. Parameters      None.
  2147.  
  2148. Returns         Normally, no return value.
  2149.  
  2150. Description     Store  current  baud rate of the currently selected port
  2151.                 in the BAUD field of  the  current  PORTINFO  structure,
  2152.                 which  is pointed to by PORTVAL.  If the baud rate is to
  2153.                 default to a particular value, this  routine  can  store
  2154.                 that value into the BAUD field instead.
  2155.                                                                      117
  2156.  
  2157.  
  2158. BEEP
  2159.  
  2160. Parameters      None.
  2161.  
  2162. Returns         Normally, no return value.
  2163.  
  2164. Description     Rings the terminal bell.
  2165.  
  2166.  
  2167. PUTHLP
  2168.  
  2169. Parameters      A pointer to a string in AX.
  2170.  
  2171. Returns         Normally, no return value.
  2172.  
  2173. Description     Writes  the  null-terminated  string  given in AX to the
  2174.                 terminal.  This is used to display help and status  mes-
  2175.                 sages.  The IBM and Rainbow versions write the string in
  2176.                 a reverse video box.
  2177.  
  2178.  
  2179. PUTMOD
  2180.  
  2181. Parameters      A pointer to a string in AX.
  2182.  
  2183. Returns         Normally, no return value.
  2184.  
  2185. Description     Writes  the  null-terminated  string  given in AX to the
  2186.                 last line of the screen, in inverse video if possible.
  2187.  
  2188.  
  2189. CLRMOD
  2190.  
  2191. Parameters      None.
  2192.  
  2193. Returns         Normally, no return value.
  2194.  
  2195. Description     Clears the line written by PUTMOD.
  2196.  
  2197.  
  2198. POSCUR
  2199.  
  2200. Parameters      Row in DH, column in DL.
  2201.  
  2202. Returns         Normally, no return value.
  2203.  
  2204. Description     Positions the cursor to the row and column given in  DX.
  2205.                 Rows and columns both originate at 0 (not 1!).
  2206.                                                                      118
  2207.  
  2208.  
  2209. SENDBR
  2210.  
  2211. Parameters      None.
  2212.  
  2213. Returns         Normally, no return value.
  2214.  
  2215. Description     Send a break to the current serial port.
  2216.  
  2217.  
  2218. SHOWKEY
  2219.  
  2220. Parameters      Pointer  to  a  terminal  argument block in AX (see TERM
  2221.                 below).
  2222.  
  2223. Returns         Normally, with a string pointer in AX and the length  of
  2224.                 the string in CX.
  2225.  
  2226. Description     Called  by  the  SHOW KEY command.  Reads a key from the
  2227.                 terminal    and    returns    a    string     containing
  2228.                 implementation-dependent  information  about the key. In
  2229.                 the  usual  case,  the   string   contains   the   key's
  2230.                 (machine-dependent)  scan code, and the key's definition
  2231.                 (if any) from the terminal argument block.   The  length
  2232.                 of  the  returned  string should be returned in CX.  The
  2233.                 string may contain any characters;  unprintable  charac-
  2234.                 ters  will be quoted when the string is printed.  If the
  2235.                 implementation does not support key redefinition,  SHOW-
  2236.                 KEY may return a static string saying so.
  2237.  
  2238.  
  2239. TERM
  2240.  
  2241. Parameters      Pointer to terminal argument block in AX.
  2242.  
  2243. Returns         Normally, no return value.
  2244.  
  2245. Description     Do terminal emulation, based on argument block described
  2246.                 below...
  2247.  
  2248.  
  2249.  
  2250.  
  2251. The  terminal emulator is supplied in the file MSYxxx.ASM.  The terminal
  2252. argument block passed to the terminal emulator has the following fields:
  2253.  
  2254. FLGS            Byte containing flags.  Flags are:
  2255.  
  2256.                 SCRSAM (80H)    If on, the terminal  emulator  shouldn't
  2257.                                 re-display the screen when entered.
  2258.  
  2259.                 CAPT (40H)      Capture  output.    If  on,  the routine
  2260.                                 passed in field  CAPTR  is  called  with
  2261.                                 each character sent to the screen.
  2262.  
  2263.                 EMHEATH (20H)   Emulate a Heath-19 terminal if on.
  2264.                                                                      119
  2265.  
  2266.  
  2267.                 HAVTT (10H)     A key redefinition table is present.
  2268.  
  2269.                 TRNCTL (08H)    Print  control character X as ^X (useful
  2270.                                 for debugging).
  2271.  
  2272.                 MODOFF (04H)    Do not display emulator mode line if on.
  2273.  
  2274.                 LCLECHO (01H)   Echo keyboard characters on  the  screen
  2275.                                 in addition to sending them to the port.
  2276.  
  2277. PRT             Port  to  use  for terminal emulation, used only in mode
  2278.                 line.  This is just a copy of COMFLG in FLAGS.
  2279.  
  2280. COLS            Number of columns on screen.
  2281.  
  2282. ROWS            Number of rows on screen.
  2283.  
  2284. CAPTR           Routine to call to  with  each  character  sent  to  the
  2285.                 screen if CAPT flag is on.  Characters are passed in AL.
  2286.  
  2287. BELLD           Bell divisor (used only on IBM).
  2288.  
  2289. KLEN            Number  of keys in key redefinition table, if HAVTT flag
  2290.                 is on.
  2291.  
  2292. KTAB            Address of key redefinition table.  The key redefinition
  2293.                 table is a table  of  KLEN  16-bit  scan  codes.    Each
  2294.                 (machine  dependent)  scan code represents a key that is
  2295.                 redefined.
  2296.  
  2297. KRPL            Address of key replacement table.  The  key  replacement
  2298.                 table  parallels  the  key  redefinition  table given in
  2299.                 KTAB.  Entries  in  the  replacement  table  are  16-bit
  2300.                 pointers  to  redefinitions.    Each  redefinition has a
  2301.                 one-byte length, followed by the definition.
  2302.  
  2303. ESCC            Escape character (single byte).  When this character  is
  2304.                 typed to the emulator, it should return.
  2305.  
  2306. BAUDB           byte.    Bits  describing  the  baud  rate  so it can be
  2307.                 printed on the mode line.  This is a copy  of  the  BAUD
  2308.                 field in the PORTINFO structure.  Currently used only on
  2309.                 the IBM.  See MSDEFS.H for possible values.
  2310.  
  2311. PARITY          byte.    Current parity to print on the mode line.  This
  2312.                 is a copy of PARFLG in the  PORTINFO  structure.    Cur-
  2313.                 rently  used only on the IBM.  See MSDEFS.H for possible
  2314.                 values.
  2315.                                                                      120
  2316.  
  2317.  
  2318. 9.10. Heath/Zenith-19 Control Codes
  2319.  
  2320. The  Heath/Zenith-19  terminal is equivalent to the DEC VT52 with exten-
  2321. sions for line and character insertion and deletion.  Items marked  with
  2322. an asterisk are not currently supported by Kermit-MS H19 emulation.
  2323.  
  2324.  
  2325. Cursor Functions
  2326.  
  2327.   Sequence    Mnemonic    Definition
  2328.    ESC H      HCUH        Cursor Home
  2329.    ESC C      HCUF        Cursor Forward
  2330.    ESC D      HCUB        Cursor Backward
  2331.    ESC B      HCUD        Cursor Down
  2332.    ESC A      HCUU        Cursor Up
  2333.    ESC I      HRI         Reverse Index
  2334.   *ESC n      HCPR        Cursor Position Report
  2335.   *ESC j      HSCP        Save Cursor Position
  2336.   *ESC k      HRCP        Set Cursor to Previously Saved Position
  2337.    ESC Y      HDCA        Direct Cursor Addressing, 1-based:
  2338.                           31+line# 31+col# (same as VT52)
  2339.  
  2340.  
  2341.  
  2342. Erasing and Editing
  2343.  
  2344.   Sequence    Mnemonic    Definition
  2345.    ESC E      HCD         Clear Display (Shift Erase)
  2346.    ESC b      HBD         Erase Beginning of Display
  2347.    ESC J      HEOP        Erase to End of Page (Erase Key)
  2348.    ESC l      HEL         Erase Entire Line
  2349.    ESC o      HEBL        Erase Beginning of Line
  2350.    ESC K      HEOL        Erase to End of Line
  2351.    ESC L      HIL         Insert Line
  2352.    ESC M      HDL         Delete Line
  2353.    ESC N      HDCH        Delete Character
  2354.    ESC @      HEIM        Enter Insert Character Mode
  2355.    ESC O      HERM        Exit Insert Character Mode
  2356.  
  2357.  
  2358.  
  2359. Configuration
  2360.  
  2361.   Sequence    Mnemonic    Definition
  2362.   *ESC z      HRAM        Reset to Power-Up Configuration
  2363.   *ESC r Bn   HMBR        Modify Baud Rate: Bn=
  2364.                             A=110,  B=150,  C=300, D=600,  E=1200,
  2365.                             F=1800, G=2000, H=2400, I=3600, J=4800,
  2366.                             K=7200, L=9600, M=19200
  2367.  
  2368.   *ESC x Ps   HSM         Set Mode(s): Ps=
  2369.                             1 = Enable 25th line
  2370.                             2 = No key click
  2371.                             3 = Hold screen mode
  2372.                             4 = Block cursor
  2373.                             5 = Cursor off
  2374.                                                                      121
  2375.  
  2376.  
  2377.                             6 = Keypad shifted
  2378.                             7 = Alternate keypad mode
  2379.                             8 = Auto line feed on CR
  2380.                             9 = Auto CR on line feed
  2381.  
  2382.   *ESC y Ps   HRM         Reset mode(s): Ps=
  2383.                             1 = Disable 25th line
  2384.                             2 = Enable key click
  2385.                             3 = Exit hold screen mode
  2386.                             4 = Underscore cursor
  2387.                             5 = Cursor on
  2388.                             6 = Keypad unshifted
  2389.                             7 = Exit alternate keypad mode
  2390.                             8 = No auto line feed
  2391.                             9 = No auto CR
  2392.  
  2393.   *ESC <      HEAM        Enter ANSI Mode
  2394.  
  2395.  
  2396.  
  2397. Modes of Operation
  2398.  
  2399.   Sequence    Mnemonic    Definition
  2400.   *ESC [      HEHS        Enter Hold Screen Mode
  2401.   *ESC \      HXHS        Exit Hold Screen Mode
  2402.    ESC p      HERV        Enter Reverse Video Mode
  2403.    ESC q      HXRV        Exit Reverse Video Mode
  2404.   *ESC F      HEGM        Enter Graphics Mode
  2405.   *ESC G      HXGM        Exit Graphics Mode
  2406.   *ESC t      HEKS        Enter Keypad Shifted Mode
  2407.   *ESC u      HXKS        Exit Keypad Shifted Mode
  2408.   *ESC =      HAKM        Enter Alternare Keypad Mode
  2409.   *ESC >      HXAM        Exit Alternate Keypad Mode
  2410.  
  2411.  
  2412.  
  2413.   Additional Operations
  2414.  
  2415.   Sequence    Mnemonic    Definition
  2416.   *ESC }      HDK         Keyboard Disable
  2417.   *ESC {      HEK         Keyboard Enable
  2418.    ESC v      HEWA        Wrap Around at End of Line
  2419.    ESC w      HXWA        Discard at End of Line
  2420.    ESC Z      HID         Identify as VT52 (ESC / K)
  2421.   *ESC ]      HX25        Transmit 25th Line
  2422.   *ESC #      HXMP        Transmit Page
  2423.  
  2424.   The  Heath-19  transmits  the  following  sequences,  but  it will not
  2425.   respond to them if they are received.  Kermit-MS  will  transmit  them
  2426.   only if they are programmed with SET KEY.
  2427.  
  2428.    ESC S      HF1         Function Key #1
  2429.    ESC T      HF2         Function Key #2
  2430.    ESC U      HF3         Function Key #3
  2431.    ESC V      HF4         Function Key #4
  2432.    ESC W      HF5         Function Key #5
  2433.                                                                      122
  2434.  
  2435.  
  2436.    ESC P      HF7         Function Key #7
  2437.    ESC Q      HF8         Function Key #8
  2438.    ESC R      HF9         Function Key #9
  2439.                                                                      123
  2440.  
  2441.  
  2442. Index
  2443.  
  2444.                                                 RECEIVE   86
  2445.           ANSI.SYS   94                         Recognition   83
  2446.           Autodialer   100
  2447.                                                 Smart Modem   100
  2448.           Batch Operation of Kermit-MS   84
  2449.           Baud Rate   92                        Telenet   95
  2450.           Beeper   92                           Timeout   98
  2451.           Bell   92
  2452.           Binary Files   96                     Warning   98
  2453.                                                 Wildcard   81
  2454.           Cancelling a File Transfer   86, 87
  2455.           Command Files   98
  2456.           Command Macro   99
  2457.           CONNECT   100
  2458.           Control-X   86, 87
  2459.           Control-Z   86, 87
  2460.  
  2461.           Debugging   93
  2462.           DEFINE   99
  2463.           DO Command   99
  2464.  
  2465.           Eighth-Bit Prefix   96
  2466.           EMACS   102
  2467.           End Of File   82, 93
  2468.           EOF   93
  2469.           Escape Character for CONNECT   94
  2470.  
  2471.           File Renaming   98
  2472.           File Warning   98
  2473.           Flow Control   94
  2474.  
  2475.           Generic MS-DOS Kermit   111
  2476.  
  2477.           Handshake   94
  2478.           Heath-19 Terminal Emulation   94, 100,
  2479.                   120
  2480.           Help   83
  2481.  
  2482.           IBM PC   79
  2483.           Incomplete File Disposition   87
  2484.  
  2485.           Key Redefinition   95
  2486.  
  2487.           Local Echoing   95
  2488.  
  2489.           Macro   99
  2490.           META Key   102
  2491.           Mode Line   100
  2492.           Modem   100
  2493.           MS-DOS   79
  2494.  
  2495.           Parity   95
  2496.           PC-DOS   79
  2497.                                                                        i
  2498.  
  2499.  
  2500.                            Table of Contents
  2501.  
  2502. 9. MS-DOS KERMIT                                                      79
  2503.  
  2504. 9.1. The MS-DOS File System                                           80
  2505.      9.1.1. File Specifications                                       80
  2506.      9.1.2. File Formats                                              81
  2507. 9.2. Program Operation                                                82
  2508. 9.3. Kermit-MS Commands                                               84
  2509.      9.3.1. Commands for File Transfer                                85
  2510.      9.3.2. Commands for Connecting and Disconnecting                 88
  2511.      9.3.3. Commands for File Management                              89
  2512.      9.3.4. The SERVER Command                                        91
  2513.      9.3.5. The SET Command                                           92
  2514.      9.3.6. The SHOW Command                                          98
  2515.      9.3.7. Command Macros                                            99
  2516. 9.4. Terminal Emulation                                              100
  2517. 9.5. Installation of Kermit-MS                                       103
  2518.      9.5.1. Try Again To Find A Kermit Disk                          103
  2519.      9.5.2. Bootstrapping From the Communication Line                103
  2520.           9.5.2.1. Use An Existing File Capture Facility             104
  2521.           9.5.2.2. Type In Your Own Bootstrap                        104
  2522. 9.6. Compatibility with Older Versions of MS-DOS Kermit              109
  2523. 9.7. What's Missing                                                  109
  2524. 9.8. Program Organization                                            110
  2525. 9.9. Adding Support For New Systems                                  111
  2526.      9.9.1. Generic MS-DOS Kermit                                    111
  2527.      9.9.2. Adding System-Dependent Code                             112
  2528. 9.10. Heath/Zenith-19 Control Codes                                  120
  2529.  
  2530. Index                                                                123
  2531.