home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / cpm86 / c86ker.mss < prev    next >
Text File  |  2020-01-01  |  21KB  |  424 lines

  1. @Part(86KERMIT,root="kuser")
  2. @string{-86version="@q<2.9>"}
  3. @Chapter<CP/M-86 KERMIT>
  4. @Begin<Description,Leftmargin +12,Indent -12,spread 0>
  5. @i(Authors:)@\Bill Catchings, Columbia University; Ron Blanford, University of
  6. Washington; Richard Garland, Columbia University.
  7.  
  8. @i(Language:)@\Digital Research ASM86
  9.  
  10. @i(Version:)@\@value(-86version)
  11.  
  12. @i(Date: )@\December 1984
  13.  
  14. @i(Documentation:)@\Frank da Cruz, Columbia
  15. @end<Description>
  16. @label<-k86>
  17.  
  18. This version of KERMIT is designed to support any CP/M-86 system.  So far it
  19. supports the DEC Rainbow-100 and the NEC Advanced Personal Computer (APC).  It
  20. is very similar to CP/M-80 and MS DOS KERMIT.
  21.  
  22. @subheading<CP/M-86 KERMIT-86 Capabilities At A Glance:>
  23. @begin<format,leftmargin +2,above 1,below 1>
  24. @tabclear()@tabset(3.5inches,4.0inches)
  25. Local operation:@\Yes
  26. Remote operation:@\No
  27. Transfers text files:@\Yes
  28. Transfers binary files:@\Yes
  29. Wildcard send:@\Yes
  30. @q<^X/^Y> interruption:@\Yes
  31. Filename collision avoidance:@\Yes
  32. Can time out:@\Yes 
  33. 8th-bit prefixing:@\Yes
  34. Repeat count prefixing:@\No
  35. Alternate block checks:@\No
  36. Terminal emulation:@\Yes, uses PC firmware (VT100)
  37. Communication settings:@\Yes; duplex, parity
  38. Transmit BREAK:@\Yes 
  39. IBM communication:@\Yes
  40. Transaction logging:@\No
  41. Session logging (raw download):@\Yes
  42. Raw upload:@\No
  43. Act as server:@\No
  44. Talk to server:@\Yes; SEND, GET, FIN, BYE
  45. Advanced commands for servers:@\No
  46. Local file management:@\Yes
  47. Handle file attributes:@\No
  48. Command/init files:@\Yes
  49. Printer control:@\No
  50. @end<format>
  51.  
  52. @heading<CP/M-86 KERMIT Description>
  53.  
  54. @index<Timeout>
  55. Since Kermit-86 runs on a standalone micro, it is always in control of the
  56. screen -- it is always @i<local>@index<Local>.  Thus, it always keeps the
  57. screen updated with the file name and the packet number, whether sending or
  58. receiving.  Kermit-86 is capable of timing out an input request, and can thus
  59. break deadlocks automatically.  In most cases, however, this is not desirable
  60. because the KERMIT on the other side is most likely better able to handle the
  61. timeouts; therefore, Kermit-86's timer is normally not used.
  62.  
  63. If despite the timeout capability, the transmission appears to be stuck (and
  64. you can tell that this has happened if the screen fails to change for a long
  65. while) you can type carriage return to have the micro do what it would have
  66. done on a @Index[Timeout] timeout, namely NAK@Index[NAK] the expected packet to
  67. cause to foreign host to send it again (or, if the micro is sending, to
  68. retransmit the last packet).  Micro/@|micro or micro/@|IBM-@|mainframe
  69. transfers could require this kind of manual intervention.
  70.  
  71. File transfers may be interrupted in several ways.
  72. @begin<description>
  73. Control-C@\This will return you to Kermit-86 command level immediately, so that
  74. you can connect back to the remote system, or take any other desired action.
  75.  
  76. Control-X@\When sending a file, this will terminate the sending of the current
  77. file with a signal to the KERMIT on the other side to discard what it got so
  78. far.  If there are more files to be sent, KERMIT-86 will go on to the next one.
  79. When receiving a file, KERMIT-86 will send a signal to the remote KERMIT to
  80. stop sending this file.  If the remote KERMIT understands this signal (not all
  81. implementations of KERMIT do), it will comply, otherwise the file will keep
  82. coming.  In either case, the remote KERMIT will go on to the next file in the
  83. group, if any.
  84.  
  85. Control-Z@\Like Control-X, except if a file group is being transmitted, this
  86. will stop the transmission of the entire group.  If only a single file is being
  87. transmitted, it works exactly like Control-X.
  88.  
  89. Carriage Returns@\If you type carriage return repeatedly Kermit-86 will retry
  90. the current packet up to its retry limit (somewhere between 5 and 16 times) and
  91. then, if no valid response was received, return to Kermit-86 command level.
  92. @end<description>
  93.  
  94. When KERMIT-86 is started, it looks for the file @q[KERMIT.INI].  If found, it
  95. executes KERMIT-86 commands from it before prompting you for commands.
  96. The KERMIT-86 prompt looks like this:
  97. @example(Kermit-86 B3>)
  98. in which "B" is your current default disk and "3" is the current default user
  99. number.
  100.  
  101. @Section<Kermit-86 Commands>
  102.  
  103. KERMIT-86 uses the DECSYSTEM-20 keyword style command language.  Each keyword
  104. may be abbreviated to its minumum unique length.  "?" may be typed to request a
  105. menu of the available options for the current field at any point in a command.
  106. ESC may be typed at any point in a command to fill out the current keyword or
  107. filename; if sufficient characters have not been typed to identify the current
  108. field uniquely, KERMIT-86 will sound a beep and allow you to continue from that
  109. point.
  110. @begin<description,leftmargin +8,indent -8>
  111. @Index[Virtual Terminal]@Index[Escape Character]@Index[Connect]
  112. CONNECT@\Establish a "virtual terminal" connection to any host that may be
  113. connected to the serial port, i.e.@ pass all typein to the serial port and
  114. display all input from the serial port on the screen, using the system's own
  115. built-@|in support for ANSI (VT100-@|like) screen control.  When you issue the
  116. CONNECT command, the PC will print a message telling you how to get back by
  117. typing an an escape sequence, an uncommonly-@|used control character, normally
  118. CTRL-backslash, followed by a single letter "command".
  119.  @begin<description,spread 0,leftmargin +4, indent -4>
  120. C@\Close Connection, return to @q(Kermit-86>) command level.
  121.  
  122. @q<?>@\List available single-character commands.
  123.  
  124. B@\Send a BREAK signal.
  125.  
  126. Q@\Quit logging the remote session.
  127.  
  128. R@\Resume logging the remote session.
  129.  
  130. L@\Toggle logging.
  131.  
  132. @q<^\>@\(or whatever - a second copy of the escape character) Send the
  133. escape character itself to the remote host.
  134.  @end<description>
  135.  
  136. @Index[SEND]SEND @i<filespec>@\Send file(s) specified by @i<filespec> to
  137. the remote Kermit, using the prevailing file mode (ASCII or BINARY; see SET). 
  138. The @i<filespec> may contain CP/M wildcards.
  139.  
  140. @Index[RECEIVE]@Index[File-Warning]
  141. RECEIVE@\Receive file(s) from the remote
  142. Kermit.  Store them under the names provided in the file headers supplied by
  143. the remote host.  If the names aren't legal, use as many legal characters from
  144. the name as possible (see the description of SET FILE-WARNING below).  If
  145. there's a conflict, and FILE-WARNING is ON, warn the user and try to build a
  146. unique name for the file by adding "@q<&>" characters to the name.
  147. You may also provide an optional file name in the RECEIVE command; if you do,
  148. the incoming file will be stored under the name you specify.  If more than one
  149. file arrives, only the first will be stored under the given name, unless you
  150. included wildcard characters in the RECEIVE filespec; in that case, the
  151. filespec will be used as a mask for incoming filenames.  For instance, you
  152. told the remote Kermit to send @q<*.ASM>, you could tell KERMIT-86 to
  153. "receive @q<*.A86>", thereby changing the filetype of all the incoming files.
  154.  
  155. @Index<GET>GET @i<filespec>@\When Kermit-86 is talking to a Kermit Server on
  156. the host, you should use the GET command to request the server to send
  157. files to you, for example: @q[@w<get hlp:k*.hlp>]
  158.  
  159. BYE@\When talking to a remote Kermit Server, this command shuts down
  160. the server and logs it out, and also exits from Kermit-86 to CP/M command
  161. level.@Index[BYE]
  162.  
  163. @Index[LOGOUT]LOGOUT@\Like BYE, but leaves you at Kermit-86 command level.
  164.  
  165. @Index[FINISH]FINISH@\Like LOGOUT, but shuts down the remote server without
  166. logging it out.  Leaves you at Kermit-86 command level; a subsequent CONNECT
  167. command should put you back at host system command level.
  168.  
  169. EXIT@\Exit from KERMIT-86 back to CP/M.
  170.  
  171. QUIT@\Synonym for EXIT.
  172.  
  173. @Index[SET]SET @i<parameter> [@i<value>]@\Set the specified parameter to
  174. the specified value.  Possible settings:
  175. @begin<description,leftmargin +8,indent -8>
  176. @Index[Baud]BAUD@\Change the baud rate of the communications port.  This
  177. command only works on some systems, and its actual operation can vary from
  178. system to system.  Type SET BAUD followed by a question mark, and follow the
  179. directions.  On systems that do not support this command, you must set the port
  180. baud rate from CP/M or other setup mechanism outside of KERMIT-86.
  181.  
  182. @Index[Debugging]DEBUG@\ON or OFF.  If ON, displays incoming and outbound
  183. packets during file transfer.  OFF by default.
  184.  
  185. DEFAULT-DISK @i<disk/user>@\Specify default disk and user number for subsequent
  186. file reception and transmission.  The specification following the command must
  187. be in one of the following forms:
  188. @begin<description, leftmargin +8, indent -4,spread 0>
  189. @q<d:>@\= go to drive d (A through P) without changing user
  190.  
  191. @q<u:>@\= go to user u (0 through 15) without changing drive
  192.  
  193. @q<du:>@\= go to drive d and user u
  194.  
  195. @q<:>@\= go to the defaults when Kermit was loaded
  196. @end<description>
  197. Whenever a drive is specified, even if it is the same as the current
  198. default drive, the drive is logged in so that disks can be swapped
  199. without exiting Kermit to type control-C.  Kermit restores the original
  200. drive and user upon termination.
  201.  
  202. @Index[Escape Character]ESCAPE@\Change the escape character for
  203. virtual terminal connections.  Select a character in the control range that you
  204. will not be likely to need at the remote host; type the new character
  205. literally.  Certain characters, like Control-X, cannot be specified.
  206.  
  207. FILE-TYPE@\Tells KERMIT-86 what kind of file it is sending, so that KERMIT can
  208. correctly determine the end of the file.  SET FILE BINARY means to send all the
  209. 128-@|byte blocks of the file, including the last block in its entirety; SET
  210. FILE ASCII is used for text files, and transmission stops when the first
  211. Control-Z is encountered anywhere in the file (this is the CP/M convention for
  212. marking the end of a text file).  If binary transmission is used on a text
  213. file, some extraneous characters (up to 127 of them) may appear at the end of
  214. the file on the target system.  If ASCII transmission is used on a binary file,
  215. the entire file will not be sent if it happens to contain any data bytes that
  216. correspond to Control-Z.  ASCII is the default.
  217.  
  218. @Index[Flow Control]FLOW-CONTROL@\Select the desired type of flow control to
  219. be used on the communication line.  The choices are NONE and XON/XOFF.
  220. XON/XOFF is the default.  If the remote system is not full duplex or cannot do
  221. XON/XOFF, you should use NONE.
  222.  
  223. @Index[IBM]IBM ON (or OFF)@\Allow the transfer of files to and from an IBM
  224. mainframe computer.  This makes Kermit-86 wait for the IBM turnaround character
  225. (XON), ignore parity on input, add appropriate parity to output, and use local
  226. echoing during CONNECT.  As distributed, KERMIT-86 uses MARK parity for IBM
  227. communication.  If you don't give this command, IBM mode is OFF.  Since IBM
  228. VM/CMS KERMIT does not have timeout capability, SET IBM ON also turns on the
  229. timeout facility automatically, as if you had typed "SET TIMER ON".
  230.  
  231. @Index[Local-Echo]LOCAL-ECHO ON (or OFF)@\When you CONNECT to a remote
  232. host, you must set LOCAL-@|ECHO ON if the host is half duplex, OFF if
  233. full duplex.  OFF by default.
  234.  
  235. @Index[LOG]LOG@\Specify a log file on the current CP/M disk into which to
  236. record incoming characters during CONNECT.  If the remote host can do XON/XOFF,
  237. then the log file will normally capture every character shown on the screen.
  238. When connected to the remote system, several single-@|character arguments to
  239. the connect escape character can be used to control logging -- Q (quit), R
  240. (resume), L (toggle).  If you use R or L during connect without having
  241. previously specified a log file name, then @q[KERMIT.LOG] is used.  An open log
  242. is closed when you escape back to the PC.
  243.  
  244. @Index[Parity]PARITY@\Sets parity for outgoing characters to one of the
  245. following: NONE, SPACE, MARK, EVEN, or ODD.  On input, if parity is NONE, then
  246. the 8th bit is kept (as data), otherwise it is stripped and ignored.  The
  247. parity setting applies to both terminal connection and file transfer.
  248. If you set parity to anything other than NONE, Kermit-86 will attempt to use
  249. @Index<Eighth-Bit Prefix>
  250. "8th bit prefixing" to transfer binary files.  If the other KERMIT is also
  251. capable of 8th bit prefixing, then binary files can be transferred
  252. successfully; if not, the 8th bit of each data byte will be lost (you will see
  253. a warning on your screen if this happens).
  254.  
  255. PORT@\Allows you to switch between different communication ports on the PC.
  256. This command is not available on all systems.
  257.  
  258. @Index[TIMER]TIMER ON (or OFF)@\Enable or disable the timeout facility.  The
  259. timer is off by default, because in the normal case KERMIT-86 is communicating
  260. with a mainframe KERMIT that has its own timer.  Mainframe KERMIT timers tend
  261. to be more precise or adaptable to changing conditions.  You should SET TIMER
  262. ON if you are communicating with another KERMIT that does not have a timer.
  263. You should SET TIMER OFF if you are communicating over a network with long
  264. delays.
  265.  
  266. @Index[Warning]WARNING ON (or OFF)@\Warn user of filename conflicts when
  267. receiving files from remote host, and attempt to generate a unique name by
  268. adding "@q<&>" characters to the given name.  OFF by default.
  269. @end<description>
  270.  
  271. @Index[SHOW]SHOW@\Show the current settings of the SET parameters.
  272.  
  273. @Index[TAKE]TAKE@\Take KERMIT-86 commands from the specified file.  The file
  274. should not contain any TAKE commands; nested command files do not work.
  275.  
  276. LOCAL@\This is a prefix for local file management commands, to distinguish them
  277. from remote file management commands (which aren't implemented yet).  The LOCAL
  278. prefix is optional; if left off, the commands will be performed locally.
  279. @begin<description>
  280. SPACE@\Show how much space is used and remaining on the current disk.
  281.  
  282. DIRECTORY@\Provide a directory listing for the current disk, showing the name
  283. and size of each file.  A filespec may be given to select only a certain file
  284. or wildcard file group.
  285.  
  286. DELETE@\Delete the specified files from the current disk.
  287.  
  288. TYPE@\A wildcard filespec is accepted and files displayed
  289. alphabetically.  The display is paged in Unix fashion with "@q(--more--)"
  290. displayed on the last line.  Typein options at that point can be
  291. obtained by hitting a '@q(?)'.
  292. @end<description>
  293. @end<description>
  294.  
  295. @Section<Installation:>
  296.  
  297. CP/M-86 KERMIT is broken up into several source modules:
  298.  
  299. @begin<example>
  300.     C86CMD.A86          @r(Command parser)
  301.     C86FIL.A86          @r(File handler)
  302.     C86Xxx.A86          @r(System Dependent I/O)
  303.     C86KER.A86          @r(Main Program)
  304.     C86PRO.A86          @r(Protocol Module)
  305.     C86TRM.A86          @r(Terminal Emulation)
  306.     C86UTL.A86          @r(Utilities)
  307. @end<example>
  308.  
  309. The main program module, @q<C86KER.A86>, contains INCLUDE directives for the
  310. other files.  The C86Xxx module is stored with "xx" replaced by codes denoting
  311. the machine for which the program is being built -- RB for Rainbow, AP for NEC
  312. APC, etc.  The program may be built on the CP/M-86 system by obtaining
  313. all the source files listed above, storing them on the current disk with the
  314. names indicated, renaming the appropriate @q[C86Xxx.A86] file to be
  315. @q[C86XXX.A86], and then doing:
  316. @begin<example>
  317.     ASM86 C86KER $PZ  @r<(takes about 6 minutes on the Rainbow)>
  318.     GENCMD C86KER     @r<(takes less than a minute)>
  319. @end<example>
  320. and, if desired,
  321. @begin<example>
  322.     REN KERMIT.CMD=C86KER.CMD
  323. @end<example>
  324.  
  325. @Section[DEC Rainbow 100 Support]
  326.  
  327. @Index[DEC Rainbow]@Index[Rainbow 100]
  328. Kermit-86 runs on the DEC Rainbow 100 or 100+ under CP/M-86/80, version 1 or 2,
  329. on the 8088 side.  It uses the built-in firmware to emulate a VT102 ANSI
  330. terminal during CONNECT, and runs well at speeds up to 9600 baud.
  331.  
  332. You should be able to download the program using the old KERMIT on the Z80 side
  333. (Rainbow Kermit, VT180 Kermit, or generic CP/M-80 Kermit will do the job, but
  334. only under DEC CP/M-86/80 version 1.0), or an earlier version of Kermit-86.
  335.  
  336. If you don't have an earlier version of KERMIT, then follow the directions for
  337. installing KERMIT-80 (yes, KERMIT-80) in the KERMIT-80 section of the @i<Kermit
  338. User Guide>, but send the Kermit-86 hex file instead.  This works because the
  339. Rainbow can run CP/M-80 programs like DDT.
  340.  
  341. Another way to get Kermit onto your Rainbow for the first time would be from
  342. a DEC VT-180 diskette.  A VT-180 can use its own Kermit to load Rainbow Kermit
  343. onto its disk, which can then be read directly by a Rainbow.  Also, note that
  344. VT-180 Kermit-80 can actually run on the Rainbow on the Z80 side under DEC
  345. CP/M-86/80 version 1 (but not version 2 or higher), at speeds of 1800 baud or
  346. lower.
  347.  
  348. @Section[NEC Advanced Personal Computer Support]
  349.  
  350. (Contributed by Ron Blanford, University of Washington)
  351.  
  352. @Index[NEC Advanced Personal Computer]@Index[APC]
  353. Currently only the standard serial port is supported, and not the H14 auxiliary
  354. port.  The SET PORT command is not implemented.
  355.  
  356. While in Kermit's terminal emulation mode, local commands are initiated by a
  357. two-@|character sequence consisting of the "escape character" followed by one
  358. other character identifying the command.  (Make the second character a '?' to
  359. see a list of the valid commands.)  As distributed, the standard Kermit-86
  360. uses the control-@|backslash character as the escape character in terminal
  361. mode.  The trouble is that the CP/M-86 BIOS in the APC ignores a keyboard entry
  362. of Control-\ (i.e. holding down the CTRL key while striking the '\' key),
  363. making it difficult (impossible) to use this method to get out of terminal
  364. mode. 
  365.  
  366. One solution is to perform a "SET ESCAPE ^" command before entering terminal
  367. mode to change the escape character to a caret (or any other character the
  368. APC keyboard will generate).  This command could be placed in your
  369. @q[KERMIT.INI] file for automatic execution every time Kermit is started.
  370.  
  371. The simpler solution is to realize that the character code for a Control-\ is
  372. a hexadecimal 1C, and that this is the code generated by the INS key on the
  373. numeric keypad.  Once you can remember that every reference to Control-\
  374. should be interpreted as a reference to the INS key, this is actually easier
  375. to use than the two-key Control-\ sequence.
  376.  
  377. In the standard CP/M-86 BIOS, the unshifted DEL key generates a Control-X
  378. character (hexadecimal 18).  This is the CP/M command to erase the current
  379. input line, and is very useful for local processing.  Most mainframes do not
  380. use the Control-X character at all, so it becomes much less useful during
  381. terminal emulation.  The DEL character (hexadecimal 7F), on the other hand,
  382. is often used by mainframes and can only be generated on the APC by holding
  383. down the SHIFT key while striking the DEL key (this capability is not mentioned
  384. anywhere in the documentation).
  385.  
  386. Because the Control-X character is so seldom used while the DEL character is
  387. commonly used, the initialization procedure in Kermit-86 modifies the CP/M-86
  388. BIOS so that the DEL key generates the DEL character whether shifted or not.
  389. Control-X can still be generated if necessary by holding down the CTRL key
  390. while striking the 'X' key.  The CP/M-86 BIOS is returned to its original state
  391. when Kermit terminates.
  392.  
  393. The APC uses escape sequences which have been standardized by the American
  394. National Standards Institute (ANSI) to control cursor movement, screen erasing,
  395. and character attribute manipulation.  Perhaps the best-@|known other terminal
  396. which follows ANSI guidelines is the DEC VT100.  The APC only recognizes a few
  397. of the more important ANSI commands, and not the complete set which the VT100
  398. supports.
  399.  
  400. The ANSI/VT100 features that the NEC APC supports are:
  401. @begin[itemize,spread 0]
  402. direct cursor addressing (by row and column)
  403.  
  404. relative cursor addressing (up, down, left, right)
  405.  
  406. line erasing (cursor to end, beginning to cursor, entire line)
  407.  
  408. screen erasing (cursor to end, beginning to cursor, entire screen)
  409.  
  410. character attributes (underline, reverse video, blink, but not bold)
  411. @end[itemize]
  412. In addition, the first four grey function keys (unshifted) generate the escape
  413. sequences associated with PF1 through PF4 on the VT100 keyboard.  The arrow
  414. keys and numeric keypad DO NOT generate the corresponding VT100 sequences.
  415.  
  416. These functions are enough to support simple command line editing on most
  417. systems, and allow mailers or paged file display programs to clear the screen
  418. before each display.  Underlining and reverse video are also useful in some
  419. applications.  This is not enough to support the more sophisticated screen
  420. control required by screen editors such as EMACS or KED.  In addition,
  421. due to a bug in the implementation of the CP/M-86 BIOS, the sequence ordinarily
  422. used to home the cursor (esc [ H) does not work correctly; a patch for CP/M to
  423. correct this problem is distributed with APC Kermit-86.
  424.