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

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