aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJeff Armstrong <jeff@approximatrix.com>2026-10-25 17:42:06 -0400
committerJeff Armstrong <jeff@approximatrix.com>2026-10-25 17:42:06 -0400
commitebb2ff2af569d5822b70ee555a32d27cf7494816 (patch)
tree7ac5e7b3fa73f7a8d996129086932ecce66374ad /doc
downloadkermit-80-ebb2ff2af569d5822b70ee555a32d27cf7494816.tar.gz
kermit-80-ebb2ff2af569d5822b70ee555a32d27cf7494816.zip
Initial import of 4.11HEADmain
Diffstat (limited to 'doc')
-rw-r--r--doc/cpaaaa.txt195
-rw-r--r--doc/cpk409.ann354
-rw-r--r--doc/cpk411.ann90
-rw-r--r--doc/cpkerm.bw2131
-rw-r--r--doc/cpkerm.bw3bin0 -> 2922 bytes
-rw-r--r--doc/cpkerm.bw450
-rw-r--r--doc/cpkerm.bwr565
-rw-r--r--doc/cpkerm.mss2616
-rw-r--r--doc/cpkerm.pdfbin0 -> 88043 bytes
-rw-r--r--doc/cpkerm.ps6971
-rw-r--r--doc/cpkerm.txt2463
-rw-r--r--doc/cpkfet.msg24
-rw-r--r--doc/cpkhdr.mss156
-rw-r--r--doc/cpvhp1.txt99
-rw-r--r--doc/cpzspa.txt92
-rw-r--r--doc/lasm.txt149
16 files changed, 13955 insertions, 0 deletions
diff --git a/doc/cpaaaa.txt b/doc/cpaaaa.txt
new file mode 100644
index 0000000..2d48bc4
--- /dev/null
+++ b/doc/cpaaaa.txt
@@ -0,0 +1,195 @@
+CPAAAA.HLP 23 April 1991
+
+
+Version 4.11 of Kermit-80 is a development of the previous release 4.09,
+changed to add more features. Much of the system-dependent code is as it
+was in Version 4.09. The names of the files for Version 4.11 follow a fixed
+convention. They all have the form
+
+ CPaxxx.bbb
+
+In these names:
+
+ "a" is one of
+
+ A for general information
+ K for documentation and beware files
+ S for system independent files
+ X for system-dependent source files
+ V for system-dependent hex files
+
+ "xxx" is used to identify unique files used
+
+ "bbb" is the file extention, usually one of:
+
+ ASM for source files
+ HEX for pre-assembled modules or completeprograms (eg
+ LASM.HEX is the assembler)
+ HLP for help files
+ BWR for beware files
+ ANN for notes
+ TXT for pure text files
+ DOC as for TXT
+ MSS SCRIBE sources files (for document files.)
+
+CPKFET.* is a bootstrapping procedure that can be used if you have no other
+way to download the new files.
+
+Version 4.11 may be assembled and linked with LASM and MLOAD, respectively,
+or it may be assembled with the M80 assembler.
+
+It is also possible to assemble the source files on an IBM PC or clone using
+the Z80MU CP/M V2.2 and Z80 emulator, itself running the LASM or M80
+assembler. (Using Z80MU is very useful if your target systems does not have
+enough disk space for all the source files.)
+
+CP/M Kermit Version 4.11 is built from the sources in the same manner as was
+CP/M Kermit Version 4.09. LASM and MLOAD may be found in the Kermit
+distribution.
+
+The M80 assembler is a Microsoft product, and you have to pay good money for
+it.
+
+**Note** The overlay address has been moved to 7000H to make room for the
+added code in this version of CP/M Kermit.
+
+Currently, the code for a number of systems has been upgraded from version
+4.09. The particular system is indicated in filenames by the "xxx" part:
+codes currently in use are:
+
+APP Apple II with Z80 card
+ - with Micromodem in slot 2
+ - with 6551 and 6850 UARTs
+ - with CP Multifunction card
+
+BBI Kaypro, Bigboard, Xerox 820 and Ampro Little Board systems
+
+CIF Cifer 1886 using the VL: or AL ports as TTY:Line. (Use &set
+ to set ttyi: and ttyo: to the VL: or AL:port) Choice of
+ CP/M V2.2 or 3.0 ("PLUS")
+
+HEA Heath systms (Heath 8 with quad IO interface board)
+ Telcon ZORBA
+
+PCW Amstrad PCW 8256 and 8152 as well as CP/M-plus on CPC 6128
+
+NOR Northstar Advantage
+ Northstar Horizon (Several: labels in CPXTYP are:
+ BASICNS
+ NORTHS
+ HORIZON
+ Comart Communicator. This is included as it is somewhat
+ similar to the Northstar Horizon.
+
+TOR Superbrain (Main and Aux port versions.. assumes MicroMods
+ add-ons)
+ Torch systems (runs ok on Unicorn-5 under CP/M)
+ Ithaca Intersystems series machines using the VIO card. (PCI
+ 2651 USARTS)
+ NCR DecisionMate V systems
+
+as well as another half dozen single system only family files. The total
+list of systems supported so far is:
+
+
+System supported in CP/M-80 Kermit V4.11 (and growing!)
+Label .HEX File For system
+============================================================================
+ACCESS CPVACC Access Matrix
+ADVANT CPVADV Northstar Advantage
+AMPRO CPVAMP Ampro Little Board (terminal required)
+AP6551 CPVAPL Apple II, Z80 Softcard, 6551 ACIA in serial Interface
+AP6850 CPVA65 Apple II, Z80 Softcard, 6850 ACIA in Serial Interface
+APMMDM CPVAPM Apple II, Z80 Softcard, Micromodem II in slot 2
+APCPS CPVCPS Apple II, Z80 Softcard, with CPS multifunction card
+BASICNS CPVBNS Northstar Horizon (terminal required)
+BBC CPVBBC Acorn "BBC" computer with Acorn Z80 second processor
+BBII CPVBB2 BigBoard II (terminal required)
+MBEE CPVBEE Microbee Systems Ltd Microbee (56K, 64K, 128K & 256K)
+BRAINM CPVBRM Intertec Superbrain using the main port
+BRAINA CPVBRA Intertec Superbrain using the Aux port
+CIFER2 CPVCIF Cifer 1886 using the VL: Serial port and CP/M V2.2
+CIFER3 CPVCI3 Cifer 1886 using the VL: Serial port and CP/M V3.0
+CIFER2 CPVCA2 Cifer 1886 using the AUX: Serial port and CP/M V2.2
+CIFER3 CPVCA3 Cifer 1886 using the AUX: Serial port and CP/M V3.0
+CMEMCO CPVCRO Cromemco with TU-ART card. Terminal required)
+COMART CPVCOM Comart Communicator (terminal required)
+COMPRO CPVPRO Compupro with Interfacer 4 (or 3). Terminal required.
+CPC CPVCPC Amstrad CPC 664 and 6128 and CP/M 3
+CPM3 CPVCP3 "Generic": CP/M 3.0 (CP/M Plus) systems (terminal req'd)
+CPT85XX CPVCPT CPT-85xx wordprocessor with CP/M
+DELPHI CPVDEL Digicomp Delphi 100 (terminal required)
+DISC CPVDIS Action Computer Enterprises "Discovery" (terminal req'd)
+DMII CPVDM2 DECmate II with CP/M option
+GENER CPVGEN "Generic": CPM 2.2 systems with IOBYTE (terminal req'd)
+GENIE CPVGNI Video Genie
+H8QUAD CPVH8Q Heath-8 with Quad 8 i/o board
+HEATH CPVH89 Heath/Zenith H89
+HORIZON CPVHOR Northstar Horizon (terminal required)
+HP125 CPVHP1 Hewlett-Packard HP-125 Business Assistant
+KPII CPVKPR Kaypro-II (and 4; probably supports all Kaypro systems)
+LOBO CPVLBO Lobo Max-80
+M2215 CPVMRL British Telecom Merlin/Rair Black Box (terminal required)
+MDI CPVMDI Morrow Decision I (terminal required)
+MIKKO CPVMIK MikroMikko
+MMATE CPVMM PMC 101 Micromate (terminal required)
+MMDI CPVUD Morrow Micro Decision I (terminal required)
+NCRDMV CPVDMV NCR Decision Mate V. (Terminal required?)
+NORTHS CPVNS Northstar Horizon with HSIO-4 card (terminal req'd)
+OSBRN1 CPVOSB Osborne 1
+OSI CPVOSI Ohio Scientific
+PCI2651 CPVPCI Ithaca Intersystems with VI0 card (terminal required)
+PCW CPVPCW Amstrad PCW 8256/8512 with serial interface
+PX8 CPVPX8 Epson PX-8
+RM380ZM CPVRMM Research Machines 380Z with MDS (5.25" discs)
+RM380ZF CPVRMF Research Machines 380Z with FDS (8" discs)
+ROBIN CPVROB DEC VT180
+S1008 CPVUSM US Microsales S-100-8 (terminal required)
+SANYO CPVSAN Sanyo MBC-1100
+SB6 CPVSB6 Micromint SB-180 with 6Mhz CPU (terminal required)
+SB9 CPVSB9 Micromint SB-180 with 9Mhz CPU (terminal required)
+SCNTPR CPVSCN Screentyper
+TELCON CPVTEL TELCON Zorba portable
+TELETEK CPVTET Teletek Systemaster (terminal required)
+TORCH CPVTRC Torch computers BBC-B with Z80 second processors
+TRS80LB CPVTLB TRS-80 model II with Lifeboat 2.25C CP/M Display
+TRS80PT CPVTPT TRS-80 model II with Pickles + Trout CP/M Display
+TRSM4 CPVTM4 TRS-80 model IV
+VECTOR CPVVEC Vector Graphics
+XER820 CPVXER Xerox 820
+Z100 CPVZ00 Z-100 under CP/M-85
+Z80MU CPVZ80 Z80MU development system on a PC
+
+
+Terminals supported in CP/M-80 Kermit V4.11 (and growing!)
+Label Terminal
+========================================================================
+CRT Does not do cursor addressing
+ADM3A Lear Seigler ADM 3A
+ADM22 Lear Seigler ADM 22
+AM230 Ampro 230
+H1500 Hazeltine 1500
+SMRTVD Netronics Smartvid
+SOROQ Soroq IQ-120
+TVI912 Televideo 912
+TVI925 Televideo 925 or Freedom 100
+VT52 Dec VT52 or equivalent (H19)
+VT100 Dec VT100 or equivalent
+WYSE Wyse 100
+
+More systems and families are always coming in, so this list and the source
+files are all likely to change sometime in the near future.
+
+Any comment, suggestions etc send them in. I will not guarentee that your
+suggestions will be implemented, but maybe....
+
+Cheers ES 73's/88's, Mike Freeman K7UIJ
+Bonneville Power Administration
+P.O. Box 491
+Vancouver, WA 98666
+(206)690-2307
+301 N.E. 107th Street
+Vancouver, WA 98685 USA
+(206)574-8221
+
+E-Mail: freeman@watsun.cc.columbia.edu on Internet
diff --git a/doc/cpk409.ann b/doc/cpk409.ann
new file mode 100644
index 0000000..4c9def0
--- /dev/null
+++ b/doc/cpk409.ann
@@ -0,0 +1,354 @@
+Following is the announcement of CP/M-80 Kermit version 4.09, the first
+new release of CP/M Kermit since 4.05 since February 1985.
+
+Kermit files may be obtained over networks and by mail order. On the
+Internetwork, use FTP to log in to host CU20B, CU20B.COLUMBIA.EDU, or
+CU20B.CC.COLUMBIA.EDU (a DECSYSTEM-20), as user ANONYMOUS, using any password,
+and GET (or MULTIPLE GET, or MGET) the desired files from logical device KER:,
+e.g. MGET KER:CP*.* for the new CP/M files. You can also get Kermit files over
+BITNET/EARN; to get started send a message with text HELP to KERMSRV, the
+Kermit file server, at host CUVMA. For detailed instructions, read the file
+KER:AANETW.HLP (AANETW HLP on KERMSRV). To order by mail, request a complete
+list of Kermit versions and an order form from Kermit Distribution, Columbia
+University Center for Computing Activities, 612 West 115th Street, New York, NY
+10025 USA.
+
+Date: 8 Jan 88 0:00:00
+From: Bertil Schou, Loughborough University, UK
+Via: SYSKERMIT%vax1.central.lancaster.ac.uk@NSS.Cs.Ucl.AC.UK
+Subject: Announcing Version 4.09 of Kermit-80 for CP/M-80
+Keywords: CP/M-80 Kermit 4.09
+
+After an incredibly long gestation period, here is hopefully an updated
+version of Kermit-80 V4.05. Kermit-80 V4.08 is issued for testing purposes
+only. Version 4.09 is the release issue of version 4.08. I still, however,
+want any feedback about problems generated in this revision, or others
+desperately want fixing.
+
+Superficially, there is little real change in operation of Kermit-80, version
+4.05, but there have been some major jobs tackled like trapping BDOS calls and
+multiple FCB buffering...
+
+New bits for this version include:
+ SET {SEND/RECEIVE} START-OF-PACKET character
+ SET DIRECTORY-FILE-SIZE (Shows or hides file sizes on
+ DIRectory displays)
+ SET TERMINAL to OFF, VT52, DUMB, EXTERNAL, QUIET, REGULAR.
+ SET USER to set other user spaces
+ RECEIVE to collect a file from a remote SENDer
+ GET to collect a file from a remote SERVER
+ SEND {local filename} {remote filename}
+ TAKE to take command files from disk (including other take files!)
+ FCOPY Copy CP/M files from within Kermit (no wildcard)
+ TYPE Type a file to the console from within Kermit
+ PRINT Print a file to the printer from within Kermit
+ - Updated TRANSMIT command that waits for a string of characters
+ from the host (default is CR).
+ - Command line commands, eg:
+ KERMIT ;SET FILE BINARY;SEND FOO.BAR
+ - Automatic TAKE KERMIT.INI on default disk on
+ loading KERMIT-80 (useful for SET BAUD etc.)
+ - Much improved speed on DIRECTORY
+ - Automatic CLOSE-ing of a terminal connection if the line is
+ DROP-ped (currently only for an Apple, and Torch has a dummy
+ test for cntrl-] D in connect state)
+ - Improved printer handling.
+
+On the negative side, only LASM and Microsoft M80 assemblers can be used to
+assemble the source files. I personally see no point in being able to support
+several assemblers if LASM can do the job, but then again, I have not used the
+MAC80 cross assembler... Comments on assembler compatabilities, please!
+
+All source files have been renamed, and there are a few additions. All source
+files are named in the form CPaxxx.ASM, where:
+
+ a=A for general information
+ a=S for system independent source files and hex file
+ a=X for system dependent source files
+ a=V for system-dependent hex files
+
+The system dependent code has changed a litle too, hopefully bringing the
+CPXSYS.ASM (formerly CP4SYS.ASM) file a bit more toward a manageable size.
+There is now the possibility for FAMILIES of systems, like APPLE and NorthStar
+(also Comart), which contains code for computers of a single type. I have
+immediately gone against all this by creating a family with the code for
+Torches, Cifers, Ithacas and Superbrains (this because we have these systems
+here at Loughborough.)
+
+Bertil Schou.
+
+[Ed. - Many thanks, Bertil! And also to Alan Phillips and Steve Jenkins at
+Lancaster University for sending this new version to us via transoceanic
+magnetic tape, and to the many others in the UK who contributed to this new
+release. This version supports all the systems supported by version 4.05,
+with the exception of the HP-125, and with the addition of many more, for a
+total of something like 52 systems. The new files have been installed in
+KER:CP*.*, and the old ones moved (on CU20B, anyway) to KO:CP*.*. CP/M
+users, please get this new version and try it out, so we can make sure it's
+safe to distribute. And this is also the time to plead ONCE AGAIN for
+volunteers to distribute CP/M Kermit on 5.25-inch diskette for different
+kinds of systems, and also in "universal" 8-inch diskette format. Please
+come forward if you can do it, or know of a user group that can!]
+
+
+CPKERM.MSG 08 Jan 1988
+**********
+
+After an incredibly long gestation peroid, here is hopefully an
+updated version of Kermit-80 V4.05. Kermit-80 V4.08 is issued for
+testing purposes only. Version 4.09 is the release issue of
+version 4.08. I still, however, want any feedback about problems
+generated in this revision, or others desperately want fixing.
+
+Superficially, there is little real change in operation of
+Kermit-80, version 4.05, but there have been some major jobs
+tackled like trapping BDOS calls and multiple FCB buffering...
+
+New bits for this version include:
+ SET {SEND/RECEIVE} START-OF-PACKET character
+ SET DIRECTORY-FILE-SIZE (Shows or hides file sizes on
+ DIRectory displays)
+ SET TERMINAL to OFF, VT52, DUMB, EXTERNAL, QUIET,
+ REGULAR. External is for those wanting to write
+ their own drivers, DUMB passes only printing
+ characters and sone control characters (eg CR/LF).
+ QUIET/REGULAR permits brief/verbose screen
+ displays during transfers.
+ SET USER to set other user spaces
+ RECEIVE to collect a file from a remote SENDer
+ GET to collect a file from a remote SERVER
+ SEND {local filename} {remote filename}
+ TAKE to take command files from disk (including other
+ takes files!)
+ FCOPY Copy CP/M files from within Kermit (no wildcard)
+ TYPE Type a file to the console from within Kermit
+ PRINT Print a file to the printer from within Kermit
+ - updated TRANSMIT command that waits for a string
+ of characters from the host (default is CR)
+ - Command line commands, eg:
+ KERMIT ;SET FILE BINARY;SEND FOO.BAR
+ - automatic TAKE KERMIT.INI on default disk on
+ loading KERMIT-80 (useful for SET BAUD etc.)
+ - much improved speed on DIRECTORY
+ - automatic CLOSE-ing of a terminal connection if
+ the line is DROP-ped (currently only for an Apple,
+ and Torch has a dummy test for cntrl-] D in
+ connect state)
+ - improved printer handling. (Kermit-80 sends an
+ XOFF to the host if the characters are comming in
+ faster than they are printed. This does not work
+ in this version, as another option, SET FLOW-
+ CONTROL has not been fully implemented - also, I
+ did not have a printer to test this out on a
+ Torch...)
+
+On the negative side, only LASM and Microsoft M80 assemblers can
+be used to assemble the source files. I personally see no pont in
+being able to support several assemblers if LASM can do the job,
+but then again, I have not used the MAC80 cross assembler...
+Comments on assembler compatabilities, please!
+
+All source files have been renamed, and there are a few
+additions. All source files are named in the form:
+
+
+
+
+
+
+
+CPaxxx.ASM
+
+where:
+
+ a=A for general information
+ a=S for system independent source files and hex file
+ a=X for system dependent source files
+ a=V for system-dependent hex files
+
+The system dependent code has changed a litle too, hopefully
+bringing the CPXSYS.ASM (formerly CP4SYS.ASM) file a bit more
+toward a manageable size. There is now the possibility for
+FAMILIES of systems, like APPLE and NorthStar (also Comart),
+which contains code for computers of a single type. I have
+immediately gone against all this by creating a family with the
+code for Torches, Cifers, Ithacas and Superbrains. (This because
+we have these systems here at Loughborough)
+
+CPXSYS.ASM is the "left over" systems not having a family to go
+to (poor things), but is very much smaller than the original
+CP4SYS.ASM.
+
+All VDU and terminal information is now held in CPXVDU.ASM. This
+is really the last section in the older CP4SYS.ASM file.
+
+A quick "schematic" of what happens at assembly time... (assuming
+LASM is being used)
+
+LASM CPXTYP... this then assembles the following:
+
+CPXTYP
+ |
+ v
+CPSDEF
+ |
+ v
+CPXLNK
+ |
+ v
+CPXCOM (Common code for most systems)
+ |
+ v
+CPXSWT-------+----------+-----------+-----------+---- File selector
+ | | | | |
+ v v v v CPXTOR CPXAPP CPXNOR CPX??? one of
+ | | | | | several
+ | | | | | Families
+ +<----------+----------+-----------+-----------+----
+ |
+ v
+CPXVDU (if a terminal is required)
+ |
+ |
+ v
+<END of assembly>
+
+
+
+Users should be aware of the change both to the linking
+
+
+
+
+
+
+information and start of the overlay address. Since Version 4.05,
+four new entries have been added to the overlay table. First of
+all, family (offset +6), which is a two byte poiter to a text
+string in the family file. The remainder are two byte pointers
+(in the usual JMP 0 format) to a print status routne, (lptstat
+offset 20h), an optional VDU driver, and a reverse entry back to
+the system independent BDOS routines (which does a lot more than
+simply pass on the BDOS request to BDOS)
+
+There have also been some bugs fixed in some of the system
+dependent code, so you would be wise pulling all the source files
+across.
+
+The overlay address is now 6000h, and will probably change before
+this revision is complete. The speeding up of multiple file
+handling takes its toll on memory, as there are now 64-ish FCBs
+buffered. This speeds up the DIRECTORY command no end.
+
+With the overlay address at 6000h there is still a lot of space
+free for more things to be added, so unless there is a big hash
+made to Kermit, this will not change.
+
+Most of the Version 4.05 documentation still holds for this
+version of kermit-80. Note however the changes in the number of
+system dependent files used, and the use of FAMILY files.
+
+The new commands are (hopefully) self-explanatory. The TAKE
+command requires files TAKE-n to be pure ASCII text, with a
+control-z as the end of file marker. Most editors will probably
+do this for you.
+
+LASM and Microsoft M80 assembles are the only ones supported. I
+suggest LASM be used by default for all further development work,
+though I DO know that there are others requestin M80
+comaptability.
+
+How to get V4.09 onto your system.
+**********************************
+If you alread have a Kermit running on your system, you should be
+able to pull the CPSKER.HEX and suitable system file to yopur
+system, then MLOAD the two together. If you dont have kermit,
+see if you cannot get a copy from somewhere - it saves a lot of
+frustrating work. Failing that, refer to the REAL manuals!
+
+If you want to assemble the sources from scratch, pull all
+CPS*.ASM files, and CPX(TYP LNK COM SWT).ASM files, and
+CPXVDU.ASM if you use a terminal. You will have to pluck
+either CPXSYS./ASM or another family file. You will also need
+loads of disk space. If you run short, but have a handy IBM PC
+or clone with a Mbyte or two free, use the public domain Z80
+emulator Z80MU to develop the .HEX files required. Also aquire a
+copy of LASM. Use LASM it to assemble CPSKER and CPXTYP after
+editing CPXTYP and selecting a suitable system. This generates
+CPSKER.HEX and CPXTYP.HEX.
+
+MLOAD the two .HEX files together, eg:
+
+MLOAD NEWKER=CPSKER,CPXTYP
+
+After this, you will hopefully have a runnable copy of KERMIT-80
+
+
+
+
+
+
+Version 4.09 on your system.
+
+Disclaimer: No responsibilty can be assumed by anyone as to the
+suitabilty etc.etc. In otherwords, you are the one responsible
+for your implentation of Kermit-80, any version. I will give help
+where I can, but no guaranttes will be given. Note that not all
+systems and facilities have been tested (thats why you are
+getting involved!) so make sure you have a copy of 4.05 Kermit
+before trying this one!
+
+Things yet to be done - lots!
+
+There have been moves trying to add other independent modules for
+other terminal emulators other than the VT52. Demands for SERVER,
+REMOTE HOST..., file compression, better TRANSMIT, % of file sent
+and/or Kbytes sent/received as part of the display diring
+transfers, a lot of cosmetic tidying up as well as even more
+systems to be added. CP/M-80 is a slowly dying DOS, and I feel
+inclined to leave some bits out, like SERVER (how many use really
+large Winchesters in CP/M-80 systems, and want true servers?).
+Does anyone have a burning desire for these facilities? And if
+so, will YOU be willing to take on the job of implementing them?
+
+If you have any comments, please E-mail them to OBSchou (me) at
+Loughborough. If you really must, try (0509) 222313, but I share
+a phone, so use the phone only if you cannot mail me.
+
+Best of luck,
+
+Bertil Schou.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/cpk411.ann b/doc/cpk411.ann
new file mode 100644
index 0000000..92df86e
--- /dev/null
+++ b/doc/cpk411.ann
@@ -0,0 +1,90 @@
+Date: 24-May-1991
+
+Announcing: CP/M Kermit Version 4.11
+
+Just to prove that the CP/M world still exists, here is CP/M Kermit -80
+Version 4.11.
+
+Features added since version 4.09 include:
+
+o SET COLLISION {BACKUP/DISCARD/OVERWRITE/RENAME}
+o SET INCOMPLETE-FILES {DISCARD/KEEP}
+O Many REMOTE commands, including some REMOTE SET commands
+o RENAME command to rename CP/M files from within Kermit-80
+o SET RECEIVE/SEND PACKET-LENGTH nn (nn <= 94)
+o SET AUTORECEIVE ON now implies that Kermit-80 ALWAYS tries to
+ receive more files when a RECEIVE transaction has completed. The
+ user can abort with ^C.
+o QUIT is now a synonym for EXIT.
+o STAY is now a synonym for SET NO-EXIT.
+o CONNECT, RECEIVE and SEND may be abbreviated to C, R and S,
+ respectively.
+o Processing of commands from a file via a TAKE command may now be
+ aborted by entering a Control-C at the console.
+o The TYPE and PRINT commands are now immediately aborted if a
+ Control-C is entered at the console. If a Control-X is entered at
+ the console, typeout/printout of the current file is aborted and
+ typeout/printout of the next file, if any, begins. These actions
+ also occur if any other key has been pressed to halt typeout/printout
+ and Control-C or Control-X is pressed. Pressing any other key resumes
+ the typeout/printout.
+o Many bug fixes
+o Kermit-80 Version 4.11 now supports the Microbee family of
+ computers (56K, 64K, 128K and 256K) manufactured by
+ Microbee Systems, Ltd, of Australia.
+o Kermit-80 now supports the Ampro Little Board system.
+
+Technical changes:
+
+o An "I" packet is now tried before the request for files is sent
+ in a GET command
+o The overlay address is now 7000H
+o The overlay (CPXLNK.ASM) has an added INCFLG variable to handle
+ INCOMPLETE-FILES status
+o The COPY, TYPE and PRINT commands now use the large buffer
+ (8K bytes default size) for file I/O
+
+Syntax hints:
+
+In REMOTE commands such as REMOTE COPY, REMOTE MESSAGE, REMOTE RENAME,
+REMOTE WHO etc., where two arguments are required, the syntax is as for Vax
+VMS Kermit, i.e.,
+REMOTE <command> <argument 1>
+Prompt: <argument 2>
+For example:
+REMOTE COPY <old-file>
+New file: <new-file>
+
+The REMOTE LOGIN command has three arguments, of which the last two are
+prompted for an entered on new lines. Arguments are optional.
+
+In commands such as REMOTE SET FILE BLOCK-SIZE which take a numeric
+argument, Kermit-80 does not check the argument for validity. Whatever is
+typed is what the host sees.
+
+The FCOPY command has been renamed to COPY.
+
+The syntax for the RENAME command is as for the COPY command, that is:
+RENAME <old-filespec> <new-filespec>
+
+More rigorous checking for wildcards is now done by both of these
+commands.
+
+The STRING command has been renamed to OUTPUT.
+
+SET BAUD-RATE is now SET SPEED.
+
+The option SET FILE DEFAULT has ben re-enabled. Use a TAKE-file to set the
+initial file-mode to ASCII or BINARY.
+
+Building Kermit-80 ver. 4.11:
+
+Kermit-80 ver. 4.11 is built using the same procedure as for ver. 4.09.
+
+
+Many thanks to those who have contributed bug fixes, and, in particular,
+to Mr. Russell Lang of Monash University, Australia, for contributing
+a bug-fix and the family file for the Microbee systems and to Mr.
+Jay S. Rouman of Mt. Pleasant, MI for contributing the code for the Ampro
+Little Board. Thanks are also due to Lance Tagliapietra of the University
+of Wisconsin at Platteville for finding several bugs.
diff --git a/doc/cpkerm.bw2 b/doc/cpkerm.bw2
new file mode 100644
index 0000000..ae3d6de
--- /dev/null
+++ b/doc/cpkerm.bw2
@@ -0,0 +1,131 @@
+Re: Problems with CP/M Kermit Version 4.09
+
+Following is a list of problems and their solutions for CP/M Kermit
+Version 4.09. Bear in mind that the latest version of CPSPK1.ASM I have is
+edit (11) and of CPSPK2.ASM is edit (4).
+
+Problem: When the terminal is in "quiet" mode, initiation of file-transfers
+ causes lots of garbage to appear on the screen which is distracting
+ and which raises havoc with voice output devices.
+Diagnosis: In the module CPXCOM.ASM, the routine "prtstr" has two flavors:
+ one for machines which cannot display control-characters via BDOS
+ function 9 and one which can display such characters via function 9.
+ In this latter case, only register pair BC is saved around the BDOS
+ call. This is insufficient as BDOS also clobbers register pairs
+ DE and HL during the call. In "quiet" mode, at least one of these
+ pairs is expected to remain constant.
+Solution: Save register pairs DE and HL around the function 9 BDOS call.
+
+Problem: When GETting a file, the initialization routine "init" is executed
+ twice. This doesn't harm anything and may not be noticeeable in
+ print but is most annoying when using voice output as "init" types
+ out the Kermit version and screen initialization strings and thus
+ one hears them twice.
+Solution: In the module CPSPK1.ASM, move the label "read0a" down one line
+ so that the common code for the "receive" and "get" commands starts
+ just *after* the call to "init" is made in "receive" mode.
+
+Problem: With "auto-receive" set to "off", after a RECEIVE has completed,
+ Kermit waits for Console input; then looks for more data to receive
+ when there is none.
+Diagnosis: In the module CPSPK1.ASM, when the status of "auto-receive" is
+ checked, the wrong label is branched to if "auto-receive" is OFF.
+Solution: Change the instruction "jz read5c" to "jz read5b".
+
+Problem: Files whose filenames are less then 8 characters in length have
+ ASCII zeros ("0") appended to them.
+Diagnosis: In the module CPSPK2.ASM, after label "gofi7b", where the status
+ of "file-warning" is checked, the code for the appending of "&"
+ characters to filenames if the file already exists on disk has been
+ commented out and new code putting numeric suffixes on filenames
+ in this case has been substituted. In the process, the code for
+ checking for a file's existence has been accidentally commented out.
+ Thus, if "file-warning" is "on", *every* file is assumed to have
+ a duplicate and a numeric suffix is added to each filename. In
+ addition, no warning of this is given on-screen.
+Solution: (1) Uncomment the code which checks for the existence of each file.
+ (2) Uncomment the code which prints the file-warning error message
+ and put a "lxi d,fnbuf" instruction between the "stax d" shown in
+ CPKERM.BWR and the call to "prtstr" so that routine can print the
+ filename of any file whose existence has been detected.
+
+
+With these changes, Kermit-80 performs like a champ.
+Following are file comparisons showing the changes noted above.
+
+************
+File DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1
+ 418 push b
+******
+File DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
+ 418 PUSH H
+ 419 PUSH D
+ 420 push b
+************
+************
+File DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1
+ 422 ret ; all done for good machines
+******
+File DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
+ 424 POP D
+ 425 POP H
+ 426 ret ; all done for good machines
+************
+
+Number of difference sections found: 2
+Number of difference records found: 4
+
+DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.DIF;1-
+ DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1-
+ DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
+
+File 1) DSKE:CPSPK1.ASM[10,50,KERMIT,CPM] created: 1940 26-Aug-89
+File 2) DSKE:CPSPK1.ASM[10,50,KERMIT,CPM,HP125] created: 2247 27-Aug-89
+
+1)1 read0a: call init ;clear line, initialise buffers
+1) lxi d,remnam ;[gnn] save local name here
+1) mvi a,cmtxt ;[gnn]
+****
+2)1 call init ;clear line, initialise buffers
+2) read0a: lxi d,remnam ;[gnn] save local name here
+2) mvi a,cmtxt ;[gnn]
+**************
+1)2 jz read5c ; no autoreceives, so drop out
+1) lxi d,anymes ; load up Press any key to continue
+****
+2)2 jz read5b ; no autoreceives, so drop out
+2) lxi d,anymes ; load up Press any key to continue
+**************
+
+File 1) DSKE:CPSPK2.ASM[10,50,KERMIT,CPM] created: 0829 28-Aug-89
+File 2) DSKE:CPSPK2.ASM[10,50,KERMIT,CPM,HP125] created: 2259 27-Aug-89
+
+1)1 ; mvi c,openf ;See if the file exists.
+1) ; lxi d,fcb
+1) ; call bdos
+1) ; cpi 0FFH ;Does it exist?
+1) ; jz gofil9 ;If not create it.
+1) ; lxi d,infms5
+1) ; call error3
+1) ; lda temp2 ;Get the number of chars in the file name.
+****
+2)1 mvi c,openf ;See if the file exists.
+2) lxi d,fcb
+2) call bdos
+2) cpi 0FFH ;Does it exist?
+2) jz gofil9 ;If not create it.
+2) lxi d,infms5
+2) call error3
+2) ; lda temp2 ;Get the number of chars in the file name.
+**************
+1)1 call prtstr ; write string to console
+****
+2)1 lxi d,fnbuf ;[MF]Point to string
+2) call prtstr ; write string to console
+**************
+
+
+I may be reached on BITNET by E-mail to mailer@uwalocke with the subject-line
+containing the phrase <dec10%"bpa">.
+-- Mike Freeman; Bonneville Power Administration; Vancouver, Wa;
+Telephone (206)690-2307 --
diff --git a/doc/cpkerm.bw3 b/doc/cpkerm.bw3
new file mode 100644
index 0000000..00bcc69
--- /dev/null
+++ b/doc/cpkerm.bw3
Binary files differ
diff --git a/doc/cpkerm.bw4 b/doc/cpkerm.bw4
new file mode 100644
index 0000000..9d7c7ff
--- /dev/null
+++ b/doc/cpkerm.bw4
@@ -0,0 +1,50 @@
+Date: Tue, 14 May 91 11:46:47 EDT
+From: Mike Freeman <freeman@watsun.cc.columbia.edu>
+To: info-cpm@wsmr-simtel20.army.mil, fdc
+Subject: Kermit-80 Version 4.11
+
+Dear Mr. Mills:
+ In a recent Info-cpm digest, in article <26697@hydra.gatech.EDU>,
+you asked how to get Kermit-80 version 4.11. going. Lance
+Tagliapietra's answer was a good one. You also might want to get
+cpaaaa.hlp from watsun's ~kermit/a/ directory; this gives the machines
+that Kermit-80 currently supports along with the filenames of the Intel
+hex files for those machines. As Mr. Tagliapietra says, you probably
+won't have to rebuild the system-independent part of Kermit-80. If your
+CP/M machine is one of those currently supported by Kermit-80, you need
+only get the system-dependent hex file and combine them with MLOAD, DDT,
+DDTZ or whatever (MLOAD and DDTZ are my preferences since they don't
+require you to calculate image length for a CP/M SAVE). If your system
+is not supported, pick up cpxtyp.asm, cpxcom.asm, cpxlnk.asm and
+cpxswt.asm. Currently, systems are organized into "families", as, for
+example, Amstrad machines. If you were going to recompile Amstrad
+Kermit's system-dependent file, you'd also get cpxpcw.asm. Some systems
+(as, for example, the HP-125) are in the files cpxsys.asm and
+cpxsy2.asm, which you'd get. In any case, if your system isn't
+supported, get a "family" file that's close or create one yourself. If
+your system doesn't have a built-in terminal, you'll also need
+cpxvdu.asm (which contains terminal drivers). Set the appropriate
+switch in cpxtyp.asm to true (or put one in for your system if it isn't
+supported), set a terminal-switch to TRUE (or select Generic CRT if
+nothing's listed for your terminal or put your terminal's codes into a
+family file or cpxvdu.asm), get LASM or M80 and compile away. L80 can be
+used to link the system-dependent file but you must be sure to do a
+/P:7000 as the first part of the L80 command tail so the REL-file has
+the proper absolute address. You still need MLOAD, DDT, DDTZ or
+whatever to combine the files, so why not get LASM and use it, too.
+Hope this message along with Mr. Tagliapietra's message helps you. Feel
+free to ask either him or me any Kermit-80 queries you'd like.
+ By the way, I think you'll like Kermit-80 4.11. It's got support
+for many REMOTE commands (advanced server commands). It's only drawback
+is that it doesn't support repeat-prefixing or extended-length packets
+yet -- get QTERM version 43E (along with my bug fix for it) to get those
+features.
+ Cheers!
+ -- Mike Freeman K7UIJ --
+ 301 N.E. 107th Street
+ Vancouver, WA 98685
+ (206)574-8221 (home)
+ (206)690-2307 (work)
+P.S. If your system isn't supported, you'll also need to (a) create a
+family switch in cpxtyp.asm or (b) set sysfam TRUE and put your code in
+cpxsys.asm/cpxsy2.asm. Then compile and link. -- Mike Freeman K7UIJ --
diff --git a/doc/cpkerm.bwr b/doc/cpkerm.bwr
new file mode 100644
index 0000000..538cea4
--- /dev/null
+++ b/doc/cpkerm.bwr
@@ -0,0 +1,565 @@
+From: Vace Kundakci <VVVCU@CUVMB.columbia.edu>
+To: Frank da Cruz <fdc@cunixc.cc.columbia.edu>
+Subject: Something in my rdr
+
+Dear VVVCU AT CUVMBA
+
+Yesterday I tried to contact OBSchou@Loughborough.Multics
+on JANET, for this was the address I found in the file
+CPAAA TXT on KERMSRV AT CUVMBA. I wanted to report a bug
+in CP/M kermit and to ask him a question about two source
+files on KERMSRV. Would you please be so kind to forward
+this message below to the one who is responsible for the
+files CP???? ASM on KERMSRV AT CUVMBA. Thanks a lot.
+
+While assembling a new KERMIT 4.09 for my good old CP/M 3
+computer I found a bug in the system independent part of
+the KERMIT source. The routine PAUSIT in the file
+CPSUTL.ASM doesn't end with a ret. As a result of this the
+program enters the routine GETFIL and falls trough it every
+time PAUSIT is executed: the disk drive is activated.
+This ends in an error when PAUSIT is executed after a
+wildcard operation.
+The bug is fixed by placing a ret instruction at the end of
+the PAUSIT routine.
+
+After creating a new CPSKER.HEX it appeared, that the file
+CPSKER.HEX on KERMSRV AT CUVMA used the files CPSPK1.ASM
+update 12 of 1-feb-88 and CPSPK2.ASM update 5 of 1-feb-88.
+The file CPSPK1.ASM on KERMSRV AT CUVMA is update 11 of
+28-jul-87, whereas CPSPK2.ASM is update 4 of 27-oct-87.
+Would you please be so kind to get the two files updated
+on KERMSRV ON CUVMA, so I can build an updated version of
+my KERMIT without the bug in CPSUTL.ASM.
+
+Thank you in advance! Hans Petri
+
+WINFPET AT HDETUD1 on EARN
+/Vace
+------
+
+Date: Sun, 12 Mar 89 03:22:57 EST
+From: Mark W. Eichin <eichin@athena.mit.edu>
+Subject: Bug report, CP/M kermit (and other notes)
+Keywords: CP/M Kermit
+
+The latest kermit from ~ftp/kermit/a/cp[sx]*.asm has a minor (but
+visible) bug. In cpspk2.asm, line 341 is
+
+ mvi a,'$' ; dollar terminate string
+ call prtstr
+
+(these are after the label gofi7g.)
+
+The problem is that the '$' has to be actually moved into the string
+to terminate it. Adding the line
+
+ stax d
+
+between the above two solves the problem.
+
+The bug manifests itself when doing a "receive": as soon as the remote host
+sends the filename, it gets displayed on the local screen, followed by
+arbitrarily large amounts of garbage (whatever code followed the filename
+buffer up to the first '$', which for me tended to be about 4-5 lines of
+garbage...)
+
+On a related note: I have successfully ported kermit to TurboDOS (a CP/M-like
+operating system written by Software 2000) so that it uses the "T-functions",
+a set of standard extensions to CP/M, particularly a set of generic serial
+routines. I have only tested it on my personal system, a custom port of
+TurboDOS to the Radio Shack Model 4P, but it is likely to work on any TurboDOS
+system. Are you interested in adding this to your collection? Are there any
+stylistic constraints you require on submitted code? (I would like to see it
+included, if only because there have been "people working on" TurboDOS
+versions, according to your list, for at least 4 years now.)
+
+Also, I have patches to the Simtel20 PD2:<UNIX-C.CPM>XASM.SHAR[12], an 8080
+assembler which runs under UNIX, which add a LINK command, that enables it to
+assemble the entire CP/M Kermit release. I will be submitting them to the
+Simtel20 people, but I can send them to you as well if you are interested.
+
+Thanks for providing such a good *FREE* system!
+
+ Mark Eichin
+ <eichin@athena.mit.edu>
+
+
+------------------------------
+
+. From BPA
+. Postmark:30-Aug-89:09:32:15
+. To MAILER
+. Expires:29-Sep-89:09:31:49
+. Subject: bitnet%"fdccu@cuvma"
+Re: Problems with CP/M Kermit Version 4.09
+
+Following is a list of problems and their solutions for CP/M Kermit
+Version 4.09. Bear in mind that the latest version of CPSPK1.ASM I have is
+edit (4) and of CPSPK2.ASM is edit (11).
+
+Problem: When the terminal is in "quiet" mode, initiation of file-transfers
+ causes lots of garbage to appear on the screen which is distracting
+ and which raises havoc with voice output devices.
+Diagnosis: In the module CPXCOM.ASM, the routine "prtstr" has two flavors:
+ one for machines which cannot display control-characters via BDOS
+ function 9 and one which can display such characters via function 9.
+ In this latter case, only register pair BC is saved around the BDOS
+ call. This is insufficient as BDOS also clobbers register pairs
+ DE and HL during the call. In "quiet" mode, at least one of these
+ pairs is expected to remain constant.
+Solution: Save register pairs DE and HL around the function 9 BDOS call.
+
+Problem: When GETting a file, the initialization routine "init" is executed
+ twice. This doesn't harm anything and may not be noticeeable in
+ print but is most annoying when using voice output as "init" types
+ out the Kermit version and screen initialization strings and thus
+ one hears them twice.
+Solution: In the module CPSPK1.ASM, move the label "read0a" down one line
+ so that the common code for the "receive" and "get" commands starts
+ just *after* the call to "init" is made in "receive" mode.
+
+Problem: With "auto-receive" set to "off", after a RECEIVE has completed,
+ Kermit waits for Console input; then looks for more data to receive
+ when there is none.
+Diagnosis: In the module CPSPK1.ASM, when the status of "auto-receive" is
+ checked, the wrong label is branched to if "auto-receive" is OFF.
+Solution: Change the instruction "jz read5c" to "jz read5b".
+
+Problem: Files whose filenames are less then 8 characters in length have
+ ASCII zeros ("0") appended to them.
+Diagnosis: In the module CPSPK2.ASM, after label "gofi7b", where the status
+ of "file-warning" is checked, the code for the appending of "&"
+ characters to filenames if the file already exists on disk has been
+ commented out and new code putting numeric suffixes on filenames
+ in this case has been substituted. In the process, the code for
+ checking for a file's existence has been accidentally commented out.
+ Thus, if "file-warning" is "on", *every* file is assumed to have
+ a duplicate and a numeric suffix is added to each filename. In
+ addition, no warning of this is given on-screen.
+Solution: (1) Uncomment the code which checks for the existence of each file.
+ (2) Uncomment the code which prints the file-warning error message
+ and put a "lxi d,fnbuf" instruction between the "stax d" shown in
+ CPKERM.BWR and the call to "prtstr" so that routine can print the
+ filename of any file whose existence has been detected.
+
+Problem: In the files CPXSY2.ASM and CPXSYS.ASM, various conditionals are
+ ignored.
+Diagnosis: In many places, a semicolon is followed by a form-feed which is
+ immediately followed by an "IF" conditional. My copy of LASM in-
+ terprets the "<FF>IF" as a comment.
+Solution: Make the "<FF>IF" into "<FF>;<CR>IF".
+
+With these changes, Kermit-80 performs like a champ.
+Following are file comparisons showing the changes noted above.
+
+************
+File DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1
+ 418 push b
+******
+File DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
+ 418 PUSH H
+ 419 PUSH D
+ 420 push b
+************
+************
+File DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1
+ 422 ret ; all done for good machines
+******
+File DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
+ 424 POP D
+ 425 POP H
+ 426 ret ; all done for good machines
+************
+
+Number of difference sections found: 2
+Number of difference records found: 4
+
+DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCO
+M.DIF;1-
+ DISK$USER:[OGRFJMF.KERMIT.CPM]CPXCOM.ASM;1-
+ DISK$USER:[OGRFJMF.KERMIT.CPM.HP125]CPXCOM.ASM;1
+
+File 1) DSKE:CPSPK1.ASM[10,50,KERMIT,CPM] created: 1940 26-Aug-89
+File 2) DSKE:CPSPK1.ASM[10,50,KERMIT,CPM,HP125] created: 2247 27-Aug-89
+
+1)1 read0a: call init ;clear line, initialise buffers
+1) lxi d,remnam ;[gnn] save local name here
+1) mvi a,cmtxt ;[gnn]
+****
+2)1 call init ;clear line, initialise buffers
+2) read0a: lxi d,remnam ;[gnn] save local name here
+2) mvi a,cmtxt ;[gnn]
+**************
+1)2 jz read5c ; no autoreceives, so drop out
+1) lxi d,anymes ; load up Press any key to continue
+****
+2)2 jz read5b ; no autoreceives, so drop out
+2) lxi d,anymes ; load up Press any key to continue
+**************
+
+File 1) DSKE:CPSPK2.ASM[10,50,KERMIT,CPM] created: 0829 28-Aug-89
+File 2) DSKE:CPSPK2.ASM[10,50,KERMIT,CPM,HP125] created: 2259 27-Aug-89
+
+1)1 ; mvi c,openf ;See if the file exists.
+1) ; lxi d,fcb
+1) ; call bdos
+1) ; cpi 0FFH ;Does it exist?
+1) ; jz gofil9 ;If not create it.
+1) ; lxi d,infms5
+1) ; call error3
+1) ; lda temp2 ;Get the number of chars in the file nam
+e.
+****
+2)1 mvi c,openf ;See if the file exists.
+2) lxi d,fcb
+2) call bdos
+2) cpi 0FFH ;Does it exist?
+2) jz gofil9 ;If not create it.
+2) lxi d,infms5
+2) call error3
+2) ; lda temp2 ;Get the number of chars in the file nam
+e.
+**************
+1)1 call prtstr ; write string to console
+****
+2)1 lxi d,fnbuf ;[MF]Point to string
+2) call prtstr ; write string to console
+**************
+
+
+
+
+
+
+
+
+
+
+I may be reached on BITNET by E-mail to mailer@uwalocke with the subject-line
+containing the phrase <dec10%"bpa">.
+-- Mike Freeman; Bonneville Power Administration; Vancouver, Wa;
+Telephone (206)690-2307 --
+
+------------------------------
+
+Date: Thu, 31 Aug 89 13:07 PST
+From: <MAILER@UWALOCKE.BITNET>
+Subject: Re: Inconsistency in CP/M Kermit Version 4.09
+
+Problem: Comments in the source-files indicate that the routine which
+ processes the "Set Port" command, "prtset" in CPSCOM.ASM, returns
+ the port value in the register pair DE for the system-dependent
+ routine to process. In fact, the value is returned in the HL
+ register pair.
+Solution: Either (1) put a "xchg" instruction after the "shld port"
+ instruction in "prtset" and modify all port-setting routines which
+ expect the port parameter in HL, e.g., that for those systems using
+ iobyte redirection, to get the value from DE (this would be, I
+ suppose, philosophically correct since this would correspond to
+ the way the baud-rate-setting routine handles things) or
+ (2) change the comments in CPSDAT.ASM and CPXLNK.ASM to show the
+ return value from "prtset" in HL and modify the "sysprt" routines
+ which expect the port value in DE to get it from HL. I chose this
+ approach as it appeared that this would involve less code changes
+ (the only system I saw getting port values from DE was the Lobo).
+ Below are FILCOMs of the appropriate files showing these changes.
+
+File 1) DSKE:CPSDAT.ASM[10,50,KERMIT,CPM] created: 1925 26-Aug-89
+File 2) DSKE:CPSDAT.ASM[10,50] created: 1202 31-Aug-89
+
+1)4 ; called with value from table in DE
+1) sysscr: jmp $-$ ; screen setup for file transfer
+****
+2)4 ; called with value from table in HL
+2) sysscr: jmp $-$ ; screen setup for file transfer
+**************
+
+File 1) DSKE:CPXLNK.ASM[10,50,KERMIT,CPM] created: 1826 26-Aug-89
+File 2) DSKE:CPXLNK.ASM[10,50] created: 1157 31-Aug-89
+
+1)1 ; called with value from table in DE
+1) jmp sysscr ; screen setup for file transfer
+****
+2)1 ; called with value from table in HL
+2) jmp sysscr ; screen setup for file transfer
+**************
+
+File 1) DSKE:CPXSY2.ASM[10,50,KERMIT,CPM] created: 0743 28-Aug-89
+File 2) DSKE:CPXSY2.ASM[10,50] created: 1210 31-Aug-89
+
+1)4 mov a,e ;[hh] get the data port value and store
+at
+1) sta outmd3+1 ;[hh] the two places we use...
+****
+2)4 mov a,l ;[hh] get the data port value and store
+at
+2) sta outmd3+1 ;[hh] the two places we use...
+**************
+1)4 mov a,d ;[hh] now get the baud rate port value
+1) sta getbd+1 ;[hh] store it in the two places we use.
+..
+****
+2)4 mov a,h ;[hh] now get the baud rate port value
+2) sta getbd+1 ;[hh] store it in the two places we use.
+..
+**************
+
+E-mail replies may be sent to me via Bitnet at mailer@uwalocke.
+Please place on the subject line the phrase <dec10%"bpa"> (less the angle-
+brackets).
+-- Mike Freeman (routing MORF); Bonneville Power Administration; P.O. Box
+491; Vancouver, Wa 98666; Telephone (206)690-2307 --
+
+------------------------------
+
+Date: Sat, 25 Nov 89 08:16:41 pst
+From: holmes@well.sf.ca.us (Tim Holmes)
+To: jrd@watsun.cc.columbia.edu
+Subject: Re: Kermit for Epson
+
+The Epson PX-8, also known as the Geneva, is a CP/M 2.2 machine. It is
+a portable. It is listed on the list of Kermit versions by machine as
+Epson Px-8; program version 4.09. This version I have never been able
+to do anything but get the machine to freeze up. An earlier version,
+4.05, basically works, but with some problems, such as handshaking
+and flow control (I think). The PX-4, better known as the HX-40, is
+a similar computer with an even smaller screen.
+
+The PX-8 version comes on the "A" tape. By the way, I cannot get the
+"Generic" kermit versions to work on the HX-40, whereas they basically
+work on the PX-8.
+
+Thanks again.
+
+------------------------------
+
+Date: Thu, 1 Mar 90 16:48 PST
+From: <MAILER@UWALOCKE>
+Subject: dec10%"BPA" originated mail follows:-
+To: fdccu@cuvma
+Original_To: JNET%"fdccu@cuvma"
+
+. From BPA
+. Postmark:26-Feb-90:09:36:20
+. To MAILER
+. Expires:28-Mar-90:09:35:00
+. Subject: bitnet%"fdccu@cuvma"
+Re: Problem with CP/M-80 Kermit
+
+ I have come up with a better, more general solution to the problem
+involving Kermit's interpretation of characters at the beggining of the CP/M
+command-line than the one I sent you a few days ago. This more general
+solution and the description of the problem/diagnosis appear below:
+
+ PROBLEM
+
+B>A:KERMIT ;SET FI B;SET BL 3;SET TER Q
+Kermit-80 v4.09 configured for HP-125 Series 100
+
+For help, type ? at any point in a command
+Kermit-80 0B:>
+?Ambiguous
+Kermit-80 0B:>SET FI B
+Kermit-80 0B:>SET BL 3
+Kermit-80 0B:>SET TER Q
+B>
+
+ DIAGNOSIS
+
+
+ CP/M begins the buffer containing the tail to the command-line with
+the count of characters in the buffer, followed by the characters in the
+command- tail, beginning with the space(s) immediately following the
+transient program name (in this case, Kermit). Kermit does not ignore
+leading spaces when reading command input from the CP/M command-line.
+Kermit therefore interprets the leading space(s) as part of the first
+command to be executed, leading to the "?Ambiguous" message.
+
+
+ SOLUTION
+
+
+ Rewrite Kermit so that leading spaces in input from the CP/M
+command-line are ignored. This is done by adding code just prior to
+label CMINB1 in the module CPSCMD.ASM and adding a label a few lines
+following the label CMINB1 in the same module. This gives, as a
+side-effect, the advantage that a leading semicolon is not required
+before the commands Kermit is to execute from the command-line, so that
+a command-line like:
+A>KERMIT SET FILE-MODE ASCII;SET TERMINAL QUIET;SET NO-EXIT
+executes without errors. A Vax DIFFERENCES output showing the changes
+in CPSCMD.ASM follows:
+
+
+************
+File DISK$USER:[OGRFJMF]CPSCMD.ASM;1
+ 981 cminb1: lxi h,cmccnt ;Increment the char count.
+******
+File DISK$USER:[OGRFJMF]CPSCMD.ASM;2
+ 981 lda takflg ;[JMF]See if chars from file or command-
+line
+ 982 ora a ;[JMF]...
+ 983 jz cminb1 ;[JMF]No
+ 984 ani 1 ;[JMF]Yes, char from command-line?
+ 985 jnz cminb1 ;[JMF]No
+ 986 cminb0: mvi c,conin ;[JMF]Yes, get a character
+ 987 call bdos ;[JMF]...
+ 988 cpi 40o ;[JMF]If leading characters are spaces
+ 989 jz cminb0 ;[JMF]Ignore them, else
+ 990 lxi h,cmccnt ;Increment the char count.
+ 991 inr m
+ 992 jmp cmin1a ;[JMF]and proceed with command buffer
+ 993 cminb1: lxi h,cmccnt ;Increment the char count.
+************
+************
+File DISK$USER:[OGRFJMF]CPSCMD.ASM;1
+ 985 lhld cmcptr ;Get the pointer into the buffer.
+ 986 mov m,a ;Put it in the buffer.
+******
+File DISK$USER:[OGRFJMF]CPSCMD.ASM;2
+ 997 cmin1a: lhld cmcptr ;Get the pointer into the buffer.
+ 998 mov m,a ;Put it in the buffer.
+************
+
+Number of difference sections found: 2
+Number of difference records found: 13
+
+DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=DISK$USER:[OGRFJMF]CPSCMD.DIF;1-
+ DISK$USER:[OGRFJMF]CPSCMD.ASM;1-
+ DISK$USER:[OGRFJMF]CPSCMD.ASM;2
+
+
+ I can be addressed via E-mail on Bitnet at address
+MAILER@UWALOCKE. Place the following as the subject of the message:
+<dec10%"bpa"> (less the angle-brackets). Thanks.
+Michael Freeman (Routing MORF)
+Bonneville Power Administration
+P.O. Box 491
+Vancouver, WA 98666
+Telephone (206)690-2307
+
+------------------------------
+
+Date: Mon, 14 May 90 10:26:54 EDT
+From: rochester!ames!claris!voder!nsc!thoreau.nsc.com!rtodd@columbia.edu
+ (Ron Todd)
+To: fdc@watsun.cc.columbia.edu
+Subject: My kermit problem( Kermit-80 to Kermit-32)
+
+Frank,
+
+ I finally got my Kermit-80 (v4.09) on the Kaypro II to work with our
+Kermit-32 (v3.1.066) (the problem had to do with the protocol timing out
+during disk sector writes on the Kaypro). The fix is some where in the
+combination of sets I am using, I tried your suggestion of turning off the
+timeouts on the mainframe. The significant sets I am using are:
+
+Kermit-80
+ set flow on
+
+Kermit-32
+ set server_time 0
+ set send time 0
+
+VMS
+ set term/readsync/ttsync
+
+DEC-Server
+ set session pasthru
+
+ So far I have only tried ascii file transfer but will be testing binary
+soon, I have a feeling that that should work also. I am mostly using the
+GET command with Kermit-32 running in server so I may not need to do the
+"set send time". I am sure I need to use the "set session pasthru" on the
+server and probably atleast one of the "sync" options on the "set term"
+of the VMS side.
+
+ Thanks for your help, I'll e-mail the final minimum set to you and also
+post it to the net as a followup to help anyone else who may be running
+into the same or similar problems.
+
+Regards,
+ Ron Todd, K3FR
+
+------------------------------
+
+Subject: Kermit-80 4.09 ported to new system, bug report
+From: Russell Lang <rjl@monu1.cc.monash.edu.au>
+Date: Tue, 19 Jun 90 11:04:47 +1000
+Sender: eln272v@monu1.cc.monash.edu.au
+
+Frank,
+ I have ported Kermit-80 4.09 to an Australian CP/M computer,
+ the Microbee. I have created a new system dependent file
+ CPXBEE.ASM for this computer.
+ I sent some mail to Bertil Schou, but he informs me that he is
+ no longer maintaining CP/M kermit.
+ Could you please tell me who is currently working on CP/M Kermit?
+
+
+ During the testing of kermit-80 on the Microbee, I found a bug
+ in the system independent part of kermit.
+
+Bug report for Kermit-80 4.09.
+
+Problem: When receiving a file with WARNING ON, kermit-80 will avoid
+ overwriting an existing file by creating a unique file name.
+ This unique file will have the attributes of the file being avoided.
+ If the created file is opened with Read-Only attribute, kermit-80 is
+ unable to write to the file, and crashes with the message:
+ BDOS Err on A: File R/O
+
+Diagnosis: Kermit checks for the existence of a file by attempting
+ to open it. If the file exists, its directory entry is copied
+ into the FCB. Kermit then modifies the file name in the FCB
+ in an attempt to find a unique name. The name in the FCB has
+ the attributes of the previously existing file, so when kermit
+ eventually finds a unique name, it creates a file with the
+ attributes of the most recently opened file!
+
+Solution:
+ Clear bit 7 (attribute bit) of all file name and type characters
+ before opening/creating file.
+ A Unix context diff for CPSPK2.ASM (4) 27-Oct-87 is at the
+ end of this mail.
+
+
+--
+Russell Lang Email: rjl@monu1.cc.monash.edu.au Phone: (03) 565 3460
+Department of Electrical and Computer Systems Engineering
+Monash University, Australia
+
+diff -c cpspk2.asm cpxpk2.asm.new
+*** cpspk2.asm Tue Jun 19 10:48:54 1990
+--- cpspk2.asm.new Tue Jun 19 10:52:30 1990
+***************
+*** 299,305
+ ;
+ ; Part 2) open the file (if success, then it exists)
+
+! gofi7d: lxi d,fcb
+ mvi c,openf
+ call BDOS
+ inr a ; if 0ffh returned, error (ie does not exist)
+
+--- 299,315 -----
+ ;
+ ; Part 2) open the file (if success, then it exists)
+
+! gofi7d:
+! ;zero the attribute bits. [rjl@monu1.cc.monash.edu.au]
+! lxi h,fcb+1 ;[rjl]
+! mvi c,11 ;[rjl]
+! gofi7z: mov a,m ;[rjl]
+! ani 07fh ;[rjl]
+! mov m,a ;[rjl]
+! inx h ;[rjl]
+! dcr c ;[rjl]
+! jnz gofi7z ;[rjl]
+! lxi d,fcb
+ mvi c,openf
+ call BDOS
+ inr a ; if 0ffh returned, error (ie does not exist)
+
+------------------------------
diff --git a/doc/cpkerm.mss b/doc/cpkerm.mss
new file mode 100644
index 0000000..2318208
--- /dev/null
+++ b/doc/cpkerm.mss
@@ -0,0 +1,2616 @@
+@Part(CPKERM,root="kuser")
+@string(-cpmversion="@q<4.11>")
+@Chapter<CP/M-80 KERMIT>
+@index<CP/M-80 Kermit>
+
+@case(device,file="********@*
+This document is formatted as an ordinary, plain text ASCII disk file.
+Typeset copies are available in the Kermit User Guide from Columbia
+University. Changes should be made to CPKERM.MSS.@*********")
+
+@Begin<Description,Leftmargin +12,Indent -12,spread 1>
+@i(Program:)@\Mike Freeman, Bonneville Power Administration, Vancouver, WA,
+USA, with contributions from many others.
+
+@i(Language:)@\8080 Assembler, LASM, M80, or MAC80
+
+@i(Version:)@\@value(-cpmversion)
+
+@i(Date:)@\April 1, 1991
+
+@i(Documentation:)@ @ Christine Gianone, Columbia University, with
+contributions from many others.
+
+@end<Description>
+@label<-k80>
+
+@i<KERMIT-80 Capabilities At A Glance:>
+@begin<format,leftmargin +2>
+@tabclear()@tabset(3.5inches,4.0inches)
+Local operation:@\Yes
+Remote operation:@\Partial, Auto-receive only
+Login scipts:@\Yes, limited
+Transfer text files:@\Yes
+Transfer binary files:@\Yes
+Wildcard send:@\Yes
+File transfer interruption:@\Yes
+Filename collision avoidance:@\Yes
+Can time out:@\Yes
+8th-bit prefixing:@\Yes
+Repeat count prefixing:@\No
+Alternate block checks:@\Yes
+Terminal emulation:@\Yes, VT52 and others
+Communication settings:@\Yes
+Support for dial-out modems:@\No
+Transmit BREAK:@\Yes; most versions
+IBM communication:@\Yes
+Transaction logging:@\No
+Debug logging:@\No
+Session logging:@\Yes
+Raw file transmit:@\Yes
+Act as server:@\No
+Talk to server:@\Yes
+Advanced commands for servers:@\Yes
+Command/init files:@\Yes
+Command macros:@\No
+Local file management:@\Yes
+Handle file attributes:@\No
+Long packets:@\No
+International Character Sets:@\No
+Sliding Windows:@\No
+Printer control:@\Yes, limited
+@end<format>
+
+@Section<Credits>
+
+CP/M Kermit is the first of all the Kermit programs. It was originally
+written by Bill Catchings of Columbia University in 1981. Over the years,
+contributions have been added by many people, including
+Charles Carvalho (ACC),
+Bernie Eiben (DEC), Nick Bush (Stevens Institute of Technology),
+John Bray (University of Tennessee), Bruce Tanner (Cerritos College),
+Greg Small (University of California at Berkeley),
+Kimmo Laaksonen (Helskini University of Technology),
+Brian Robertson (Aberdeen University), A.J. Cole (Leeds University),
+John Shearwood (Birmingham University),
+Tony Addyman (Salford University), Godfrey Nix and Martin Carter
+(Nottingham University), Ian Young (Edinburgh University), Chris Miles
+(Manchester University), Richard Russell, Dave Roberts,
+and many, many others.
+
+Version 4.11 is the work of Mike Freeman of the Bonneville Power
+Administration in Vancouver, WA, USA, with assistance from Russell Lang of
+Monash University in Australia, Jay S Rouman of Mt Pleasant MI, and others.
+
+@section<What's New>
+
+Features added since version 4.09 include:
+@begin<itemize>
+SET COLLISION {BACKUP/DISCARD/OVERWRITE/RENAME}
+
+SET INCOMPLETE-FILES {DISCARD/KEEP}
+
+Many REMOTE commands, including some REMOTE SET commands
+
+RENAME command to rename CP/M files from within Kermit-80
+
+SET RECEIVE/SEND PACKET-LENGTH nn (nn <= 94)
+
+SET AUTORECEIVE ON now implies that Kermit-80 ALWAYS tries to
+receive more files when a RECEIVE transaction has completed. The
+user can cancel with ^C.
+
+QUIT is now a synonym for EXIT.
+
+STAY is now a synonym for SET NO-EXIT.
+
+CONNECT, RECEIVE and SEND may be abbreviated to C, R and S,
+respectively.
+
+Cancellation of TAKE, TYPE, and PRINT commands from the keyboard.
+
+Many bug fixes.
+
+Kermit-80 Version 4.11 now supports the Microbee family of
+computers (56K, 64K, 128K and 256K) manufactured by
+Microbee Systems, Ltd, of Australia.
+
+Kermit-80 now supports the Ampro Little Board system.
+@end<itemize>
+
+@section<Overview of Kermit Operation>
+
+Use the SET command to establish necessary communication parameters like
+SPEED and PARITY. Use the CONNECT to establish a terminal connection to
+the remote computer. If you are dialing out with a modem, type the necessary
+dialing commands to the modem first. The dialing process can be automated
+to some extent using a TAKE command file containing INPUT, OUTPUT, and PAUSE
+commands. Then log in to the remote computer or service and conduct a session.
+
+To transfer a text file, start the Kermit program on the remote computer and
+tell it to SEND the desired file (if uploading) or to RECEIVE (if
+downloading). "Escape back" to CP/M Kermit, usually by typing Ctrl-] (hold
+down the Control key and press the right bracket key) and then type the letter
+C. At the CP/M Kermit prompt type RECEIVE (if you gave a SEND command to the
+remote Kermit) or SEND @i<filename> (if you gave a receive command to the
+remote Kermit).
+
+To transfer a binary file, give the command SET FILE TYPE BINARY to the remote
+Kermit and SET FILE-MODE BINARY to CP/M Kermit before issuing any SEND or
+RECEIVE commands.
+
+Multiple files of the same type (text or binary) can be transferred in a
+single operation using "wildcard notation" (including special characters like
+asterisk in the filename).
+
+When file transfer is complete, CONNECT back to the remote computer,
+use the EXIT command to exit from the remote Kermit program, finish your work
+on the remote computer, log out from it, escape back to CP/M Kermit again,
+and EXIT from CP/M Kermit.
+
+The remote Kermit may also be put into "server mode" to simplify these
+operations. Give the SERVER command to the remote Kermit, escape back to CP/M
+Kermit, and then issue SEND commands to send files (upload), GET @i<filename>
+commands to receive (download) files, REMOTE commands to request various other
+services (like directory listings) from the remote Kermit. When you are done,
+give a BYE command to terminate your remote session, or a FINISH command to
+tell the remote Kermit to return to its prompt so you can CONNECT back and
+conduct further business.
+
+That's all there is to it.
+
+@Section<Summary of CP/M>
+
+There are essentially two versions of CP/M - Versions 2.2
+and 3.0 (sometimes also called CP/M PLUS.)
+
+CP/M-80 Version 2@q<.>2 is run in
+a single 64 Kbyte "page", usually the largest amount of memory on
+Z80 or 8080 systems. The BIOS (Basic input/output system),
+BDOS (Basic Disk Operating System) and CCP (Command console processor)
+all share memory with any transient program the user may wish to run.
+Some basic commands are
+available through the CCP, like DIR, ERA etc,while others are loaded
+from disk into the transient program area and run as a program,
+like PIP or STAT.
+
+CP/M Version 3@q<.>0 (or CP/M PLUS) effectively removes the requirement
+of having the CCP and BDOS along with a chunk of the BIOS code being
+resident in the single 64k byte page of memory. This allows even more
+space for programs in the TPA, but still a little less than the maximum
+of 64k. It is substantially different from CP/M version 2@q<.>2, with
+lots of added features. Kermit-80 uses very few additional version
+3@q<.>0 features, and only where absolutely necessary.
+
+CP/M file specifications are of
+the form @q(DEV:XXXXXXXX.YYY), where
+@begin<description>
+ @q(DEV:)@\is a @i<device name>,
+normally the A:@ or B:@ floppy. If omitted, the device name defaults
+to your connected diskette.
+
+@q(XXXXXXXX)@\is a @i<filename> of up to 8 characters.
+
+@q(YYY)@\is the @i<file type>, up to 3 characters.
+ @end<description>
+ File names and file types may contain letters, digits, and some
+special characters, including dash, dollar sign, and underscore, but
+no imbedded spaces. Upper and lower case letters are equivalent.
+
+ "Wildcard" file-@|group specifications are permitted in file names
+and file types (but not device names) within certain contexts; a "@q(*)"
+matches a whole field, a "@q(?)" matches a single character, including
+space. Examples: "@q(*.F??)" specifies all files whose @i<types> start
+with F and are 1, 2, or 3 characters long; "@q(F?.*)" specifies all
+files whose names start with F and are no more than two characters
+long (before the trailing spaces).
+
+The five CP/M commands are:
+ @Begin<Description>
+DIR @i<file>@\Lists the the names of the specified files. The
+default file specification is "*.*". Example: @w<"@q(DIR B:*.FOR)">.
+
+ERA @i<file>@\Erases (deletes) the specified file(s); wildcards allowed.
+
+REN @i<new> @i<old>@\Changes the name of a file from @i<old> to
+@i<new>, e.g.@*
+@w<"@q(REN NEW.FOR=OLD.FOR)">.
+
+SAVE@\Saves the specified number of memory blocks into a file.
+(Not on CP/M Plus systems)
+
+TYPE @i<file>@\Types the specified file on the screen, e.g.
+@w<"@q(TYPE FOO.TXT)">.
+ @End<Description>
+The most important programs are:
+ @Begin<Description>
+STAT@\Gives statistics on disk usage; sets and displays IOBYTE.
+(Not on CP/M Plus systems)
+
+PIP@\@u<P>eripheral @u<I>nterchange @u<P>rogram. Copies files. In
+response to the "@q(*)" prompt, give a command of the form
+ @example<disk:outfile=disk:infile>
+ Wildcards ("@q(*)" for a whole field or "@q(?)" for a letter) can be used.
+Examples: "@q(A:=B:*.*)" to copy a whole disk, "@q(A:=B:*.FOR)" to copy all
+the Fortran programs from disk B to disk A. If the disk specification
+is omitted, your "connected" disk is assumed. Command line arguments
+are also accepted, e.g. "@q(PIP A:=B:*.*)".
+
+@End<Description>
+
+There are equivalent commands for CP/M Version 3.0, but are not loaded into
+memory in the same way as for CP/M Version 2.2.
+For further information on CP/M, consult your microcomputer manual or
+a CP/M handbook.
+
+@Section<Kermit-80 Description>
+
+Since Kermit-80 runs on a standalone micro, it is always in control of the
+screen -- it is always in "@i<local>@index<Local> mode". It includes a
+terminal emulator for establishing a connection to a remote computer or
+service, and during file transfer, it keeps the screen updated with the
+file name and the packet number, whether sending or receiving.
+
+@index<Timeout> Kermit-80 is capable of an imprecise or "fuzzy" timeout on an
+input request, and can break deadlocks automatically. In most cases, this is
+not important, because the Kermit program on the other side is most likely
+able to handle the timeouts. The timeouts done by Kermit-80 are fuzzy because
+they depend on the speed of the processor and other factors that can vary from
+system to system.
+
+If, despite the timeout capability, the transmission appears to be stuck (and
+you can tell that this has happened if the screen fails to change for a while)
+you can type carriage return to have the micro do what it would have done on a
+@Index[Timeout] timeout, namely NAK@Index[NAK] the expected packet to
+cause theforeign host to send it again (or, if the micro is sending, to
+retransmit the last packet). Micro/@|micro or micro/@|IBM-@|mainframe
+transfers could require this kind of manual intervention.
+
+File transfers may be interrupted in several ways.
+@begin<description>
+@Index[Control-C]
+Control-C@\This will return you to Kermit-80 command level immediately, so that
+you can connect back to the remote system, or take any other desired action.
+
+@Index[Control-X]
+Control-X@\When sending a file, this will terminate the sending of the current
+file with a signal to the KERMIT on the other side to discard what it got so
+far. If there are more files to be sent, KERMIT-80 will go on to the next one.
+When receiving a file, KERMIT-80 will send a signal to the remote KERMIT to
+stop sending this file. If the remote KERMIT understands this signal (not all
+implementations of KERMIT do), it will comply, otherwise the file will keep
+coming. In any case, the remote KERMIT will go on to the next file in the
+group, if any.
+
+@Index[Control-Z]
+Control-Z@\Like Control-X, except if a file group is being transmitted, this
+will stop the transmission of the entire group. If only a single file is being
+transmitted, it works exactly like Control-X.
+
+@Index[Carriage Return]
+@Index[CR]
+Carriage Return@\If you type a carriage return Kermit-80 will resend the
+current packet. You may do this repeatedly, up to the packet retry limit
+(somewhere between 5 and 16 times) for a particular packet.
+@end<description>
+
+@heading<Kermit-80 Commands>
+
+Kermit-80 is an interactive program. It issues a prompt, you type a command.
+The process repeats until you give the EXIT command to leave the program.
+
+Commands consist of keywords, filenames, and numbers. Keywords may be
+abbreviated to minumum unique length. "?" may be typed to request a menu of
+the available options for the current field at any point in a command. ESC
+may be typed at any point in a command to fill out the current keyword or
+filename; if sufficient characters have not been typed to identify the current
+field uniquely, Kermit-80 will sound a beep and allow you to continue from
+that point. Here are Kermit-80's commands:
+@begin<description,leftmargin +8,indent -8>
+@Index[Break]
+BREAK@\Send a BREAK condition to the remote computer. This is only possible
+if your system is capable of sending breaks. It is intended to be used with
+PAUSE, OUTPUT, etc and the TAKE command to do wierd and wonderful things, like
+automatic logging on to a remote host.
+
+@Index[Bye]
+BYE@\When talking to a remote Kermit Server, this command shuts down
+the server and logs it out, and also exits from Kermit-80 to CP/M command
+level.
+
+@Index[Virtual Terminal]@Index[Escape Character]@Index[Connect]
+CONNECT@\Establish a terminal connection to the computer, service, or device
+that is
+connected to the serial port, i.e.@ pass all typein to the serial port and
+display all input from the serial port on the screen. Also, emulate a DEC VT52
+to allow cursor control, screen clearing, etc., if VT52-EMULATION is ON (see
+below), in which case you should also set your terminal type on the remote host
+to VT52. (Some versions emulate other terminals.) The CONNECT command may
+be abbreviated by the single letter C.
+
+@\Warning: VT52 emulation is only successful if your system or its
+attached terminal can do the same sort of functions as a genuine
+VT52. Things to beware of are cursor addressing, clear to end of page
+and end of line, clear screen, home cursor, and clear-and-home
+functions. The useability of VT52 emulation depends entirely on
+how many of the VT52 functions can be emulated by your micro or terminal.
+
+@\The escape character differs from micro to micro; when you issue
+the CONNECT command, the micro will print a message telling you how
+to get back. The escape sequence is generally an uncommonly-@|used
+control character, like CTRL-backslash or CTRL-rightbracket, followed
+by a single letter "command":
+@begin<description,spread 0,leftmargin +4, indent -4>
+C@\Close Connection, return to @q(Kermit-80>) command level.
+
+S@\Display Status of connection, but maintain remote connection.
+
+@q<?>@\List available single-character commands.
+
+0@\(zero) Send a null (0) character.
+
+B@\Send a BREAK signal. Most systems provide this function.
+
+D@\Drop the line. Used on the Apple with modem. Automatically
+closes the connection after dropping the line. The TORCH system
+acknowledges this command but does nothing.
+
+P@\Toggle printer on or off. Allows you to copy whatever goes
+to the screen to the printer.
+
+S@\Temporarily suspend logging to the log file.
+
+Q@\Restart logging to the log file
+
+@q<^]>@\(or whatever - a second copy of the escape character) Send the
+escape character itself to the remote host.
+ @end<description>
+
+@Index[Copy]
+@Index[File Copying]
+COPY @i<source> @i<destination>
+@\Copy a named file to another file, either on the same drive or another
+drive.
+
+@Index[Directory]
+DIRECTORY@\This provides a directory listing of the specified files.
+If no files are
+specified, all files on the default disk are listed. File sizes, in K, are
+included. You may interrupt the listing at any time by typing any character.
+The listing (even if interrupted) concludes with a display of the amount of
+free storage left on the disk. You can inhibit the display of file sizes by
+SET DIRECTORY OFF.
+
+@Index[Erase]
+ERASE @i<filespec>@\This executes the CP/M ERA command on the specified
+file(s). The names of the files being erased are not displayed.
+
+@Index[Exit]
+EXIT@\Quit back to CP/M. The return is made by a JMP 0 (Warmstart). QUIT
+is a synonym for EXIT.
+
+@Index[FINISH]FINISH@\Like LOGOUT, but shuts down the remote server without
+logging it out. Leaves you at Kermit-80 command level; subsequent CONNECT
+commands will put you back at host system command level.
+
+@Index[GET]GET @i<filespec> [@i<local_filespec>]
+@\When Kermit-80 is talking to a Kermit Server on
+the host, you should use the GET command to request the server to send
+files to you, for example:
+@example<get hlp:k*.hlp>
+You may specify a local filename if you want to save the remote file
+under a different filename.
+Limitation: If you request an alternate block check type using the SET BLOCK
+command, the GET command will not communicate it to the remote server. If you
+want to have type 2 or 3 block checks done when getting files from the server,
+you have to issue the appropriate SET BLOCK command to the remote KERMIT before
+putting it in server mode.
+
+@Index[Help]HELP@\List all these commands, with a short description
+on what the commands do. A question mark will do the same. If you have
+already typed a command but do not know what the parameters are, type a
+space (to indicate the end of the command) and a question mark. You will
+be informed of what Kermit can expect at that stage.
+
+@Index[Input]INPUT @i<seconds> @i<text>@\Setup a text line and time delay
+for your CP/M system to expect from the host, then wait up to the given number
+of seconds (approximately) for text to be sent to your CP/M-80 system.
+
+@Index[LOG]LOG @i<filespec>@\When CONNECTed to a foreign host as a terminal,
+log the terminal session to the specified diskette file. This functionality
+depends to some extent on the remote host's ability to do
+@Index[XON/XOFF]XON/XOFF flow control, and does not guarantee a complete
+transcript (after all, that's what the KERMIT protocol is for). The log file
+is closed when the connection is closed by typing the escape character followed
+by the single-@|character command "C".
+
+@Index[Append]
+@\It is possible to temporarily suspend logging during connect
+state. Typing an escape sequence can turn file logging on
+(<escape-character> R for Resume) or off (<escape-character> Q for quiet).
+
+@\Re-entering connect state will re-open the previously opened
+log file and append to that file.
+
+@Index[LOGOUT]LOGOUT@\Like BYE, but leaves you at Kermit-80 command level.
+
+@index<OUTPUT>OUTPUT @i<text>@\Send the text to the remote computer as if
+you had typed it.
+
+@Index[Pause]PAUSE @i<seconds>@\If this command is issued your CP/M
+system will wait a while before proceeding with another command.
+This is intended for use in TAKE commands, where you may want to pause
+for a while before proceeding with the rest of the TAKE file. The
+actual delay is very variable between systems, and values should
+be determined on a trial and error basis.
+
+@Index[Print]PRINT@\Print a file to the console and printer. Output to
+the printer is buffered by the Kermit-maintained printer buffer.
+This routine is identical to TYPE but characters are echoed to the printer
+as well as to the screen. Suspending and canceling output is as
+described in TYPE.
+
+QUIT@\Synonym for EXIT.
+
+@Index[RECEIVE]@Index[File-Warning]
+RECEIVE @i<filespec>@\Receive file(s) from the remote
+Kermit, and save them under the names provided in the file headers
+supplied by the remote host. If a local filespec is given, the file is
+saved under the given filename. If the names aren't legal, use as
+many legal characters from
+the name as possible (see the description of SET FILE-WARNING below). If
+there's a conflict, and FILE-WARNING is ON, warn the user and try to build a
+unique name for the file by adding "@q<&>" characters to the name. RECEIVE
+can be abbreviated to the single letter R.
+
+@index<REMOTE>REMOTE @i<command>@\Send a command to a remote Kermit server.
+The results are sent back to your CP/M screen. When two arguments are
+required and specify less than two in the command, you will be prompted for
+the missing arguments. REMOTE commands include:
+@begin<description,leftmargin +4, indent -4>
+REMOTE CD [directory]@\Ask the remote server to change its default directory.
+If no directory is specified, the server changes to its login directory.
+
+REMOTE COPY file1 file2@\Ask the remote server to copy file1 to file2.
+
+REMOTE RENAME file1 file2@\Ask the remote server to rename file1 to file2.
+
+REMOTE DELETE filespec@\Ask the remote server to delete the named file or
+files.
+
+REMOTE DIRECTORY [filespec]@\Ask the remote server to display a directory
+listing of the given files or, if the filespec is omitted, all the files in
+the current device or directory.
+
+REMOTE DISK-USAGE@\Ask the remote server to display information about its
+disk usage (such as free or used space).
+
+REMOTE ERASE filespec@\Same as REMOTE DELETE.
+
+REMOTE FINISH@\Same as FINISH.
+
+REMOTE HELP@\Ask the remote server to display a list of the commands it
+can respond to.
+
+REMOTE HOST command@\Ask the remote server to have its operating system
+execute the given command.
+
+REMOTE KERMIT command@\Ask the remote server to execute the given Kermit
+command, given in the server Kermit's command syntax.
+
+REMOTE LOGIN user password@\Log in to a remote Kermit server which has been
+set up to require a username and password.
+
+REMOTE MESSAGE text@\Send the text to the remote server for display on its
+screen (useful with MS-DOS Kermit servers).
+
+REMOTE SET parameter value@\Ask the remote server to set the given parameter
+to the given value, for example REMOTE SET FILE TYPE BINARY. Type REMOTE SET
+? to see a list of the REMOTE SET options.
+
+REMOTE SPACE@\Same as REMOTE DISK-USAGE.
+
+REMOTE STATUS@\Ask the remote server to provide a status report.
+
+REMOTE TYPE file@\Ask the remote server to display the named file on
+the micro's screen.
+
+REMOTE WHO [user]@\Ask the remote server for a list of users who are logged
+in, or if a user is specified, for a report on the named user.
+@end<description>
+
+RENAME file1 file2@\Rename local CP/M file1 to file2.
+
+@Index[SEND]SEND @i<filespec>@\Send file(s) specified by @i<filespec> to
+the remote Kermit. The @i<filespec> may contain CP/M wildcards. SEND may
+be abbreviated to the single letter S.
+
+@Index[SET]SET @i<parameter> [@i<value>]@\Set the specified parameter to
+the specified value. Possible parameter settings:
+
+@begin<description,leftmargin +8,indent -8>
+
+@Index[Autoreceive]AUTORECEIVE@\ON (or OFF). Allows several files to be
+received without having to type RECEIVE on the receiving machine. The routine
+simply looks for activity on the serial line, and if so fudges a RECEIVE
+command. The packet sent by the sender will be lost.
+
+@Index[Block Check]BLOCK-CHECK-TYPE @i<option>
+@\The options are:
+@begin<description,spread 0,leftmargin +8,indent -8>
+1-CHARACTER-CHECKSUM@\Normal, default, standard 6-bit checksum.
+
+2-CHARACTER-CHECKSUM@\A 12-bit checksum encoded as two characters.
+
+3-CHARACTER-CRC-CCITT@\A 16-bit CCITT-format Cyclic Redundancy Check, encoded
+as 3 characters.
+
+@end<description>
+
+@Index[Buffer size]BUFFER-SIZE @i<value>@\This allows you to set a buffer
+size during transfer of data. On some systems it takes so long that the
+remote end times out while the local system is reading or writing to disk.
+The size is the number of 128 disk sectors (nominal) and can be from 1
+(128 bytes) to 64 (8 kbytes).
+
+@\CP/M-80 filenames will still be mapped to uppercase characters.
+
+@index<COLLISION>COLLISION value@\What to do when a file arrives that has
+the same name as an existing file. BACKUP means to rename the existing file.
+DISCARD means to discard and reject the incoming file. OVERWRITE means to
+overwrite the existing file. RENAME means to rename the existing file.
+
+@Index[Debug]DEBUG@\ON (or OFF). Enables/disables displaying of packets
+on the screen during file transfer. Not performed if the QUIET option
+has been set for the terminal (SET TERMINAL QUIET)
+
+@Index[Default Disk]DEFAULT-DISK @i<drive letter>
+@\This allows you to set the default
+disk as source and destination
+of file transfers. In addition, issuing this command causes you to switch to
+the specified disk and log it in, write-@|enabled.
+The colon must be included in the disk name (A:).
+The selected disk appears
+in your KERMIT-80 prompt, for instance @example[Kermit-80 14A:>]
+
+@Index[Directory file size]DIRECTORY-FILE-SIZE ON (or OFF).
+
+@\By setting DIRECTORY-FILE-SIZE OFF you can get an abreviated listing of your
+disk drive. File sizes are not calculated, and five files are shown on
+a line. Setting this option ON will show file sizes of each file.
+
+@\Both options will list the free space remaining.
+
+@Index[Escape Character]ESCAPE@\Change the escape character for
+virtual terminal connections. Kermit-80 will prompt you for the new
+escape character, which you enter literally.
+
+@Index[File-mode]FILE-MODE @i<option>
+@\Tells KERMIT-80 what kind of file it
+is sending, so that KERMIT can correctly determine the end
+of the file. SET FILE BINARY means to send all the
+128-@|byte blocks (ie logical CP/M sectors)
+of the file, including the last block in its entirety; SET
+FILE ASCII is used for text files, and transmission stops when the first
+Control-Z is encountered anywhere in the file (this is the CP/M convention for
+marking the end of a text file).
+
+@\SET FILE-MODE DEFAULT tells Kermit to attempt to determine the file type by
+examining the file being transmitted. If a Control-Z appears before the
+last block of the file, it is assumed to be BINARY; if, when the first
+Control-Z is encountered, the remainder of the file contains only control-Z's,
+it is assumed to be a text file. Unfortunately, not all programs fill the
+remainder of the last record of a text file with Control-Z's,
+so this algorithm is not always successful.
+
+@\If binary transmission is used on a text file, or a compressed file
+(eg a .DQC file) some extraneous characters (up to 127 of them)
+may appear at the end of the file on the target system.
+
+@\If ASCII transmission is used on a binary file, any 8th bits set will
+be stripped and a warning sent to the console. When the first control-Z
+is encountered, the file is assumed to be at the end, even if it is not.
+
+@Index[Flow Control]FLOW-CONTROL ON (or OFF)
+@\Sets XON/XOFF flow control on or off. If set ON the host is expected
+to respond to an XOFF or XON sent by Kermit-80. If set off,
+no flow control is assumed and any XON/XOFF is ignored.
+
+@Index[IBM]IBM ON (or OFF)@\Allow the transfer of files to and from an IBM
+mainframe computer. This makes Kermit-80 wait for the IBM turnaround character
+(XON), ignore parity on input, add appropriate parity to output, and use local
+echoing during CONNECT. As distributed, KERMIT-80 uses MARK parity for IBM
+communication. If you don't give this command, IBM mode is OFF. Since IBM
+VM/CMS KERMIT does not have timeout capability, SET IBM ON also turns on the
+"fuzzy timer" automatically.
+
+@Index[Local-Echo]LOCAL-ECHO ON (or OFF)@\When you CONNECT to a remote
+host, you must set LOCAL-@|ECHO ON if the host is half duplex, OFF if
+full duplex. OFF by default.
+
+@Index[Logging]LOGGING ON (or OFF)@\Cease or resume logging whenever
+connect mode is entered. This is really only applicable after a LOG
+command is no longer required.
+
+@Index[No-exit]NO-EXIT@\This command is applicable only for Kermit initiated
+with a command tail. For example, if Kermit was initiated by:
+
+@\KERMIT ;SEND HELLO;NO-EXIT
+
+@\Kermit would first seek out and execute the KERMIT.INI file (if present),
+then send file HELLO to a remote system. Usually Kermit would exit back
+to CP/M, but NO-EXIT over-rides this. STAY is a synonym for NO-EXIT.
+
+@\Note the leading semicolon. This clears leading spaces from the first
+command.
+
+@Index[OUTPUT]OUTPUT @i<text-line>@\Send a line of text to the remote computer
+(or modem). This simply copies the string to the correct line, and assumes all
+appropriate parameters have been set to be used, e.g. speed, parity etc.
+It is intended for use in TAKE command files.
+
+@Index[Parity]PARITY @i<option>
+@\Sets parity for outgoing characters to one of the
+following: NONE, SPACE, MARK, EVEN, or ODD. On input, if parity is NONE, then
+the 8th bit is kept (as data), otherwise it is stripped and ignored. The
+parity setting applies to both terminal connection and file transfer.
+If you set parity to anything other than none, KERMIT-80 will attempt to use
+@Index<Eighth-Bit Prefix>
+"8th bit prefixing" to transfer binary files. If the other KERMIT is also
+capable of 8th bit prefixing, then binary files can be transferred
+successfully; if not, the 8th bit of each data byte will be lost (you will see
+a warning on your screen if this happens).
+
+@Index[Port]PORT @i<port name>
+@\Allows you to switch between different communication ports.
+This command is not available on all systems.
+Type @q<SET PORT ?> for a list of valid options for your system. (Note:
+If your system does not support several ports, this command will
+return a "Not implemented" error if you try to set a port.)
+
+@Index[PRINTER]PRINTER@\ON (or OFF)
+@\Turns copying of CONNECT session to printer on and off. It is also
+possible to toggle the printer on/off from the connect state, by
+typing <escape character> followed by P.
+
+@Index[Set Receive]RECEIVE @i<parameter> [@i<value>]
+@\Set a RECEIVE parameter.
+
+@begin<description, Spread 0, leftmargin +8,indent -8>
+
+@Index[Pad character]
+PAD-CHAR@\Set the PAD character to use while receiving files.
+Currently a dummy, as for SET SEND PAD-CHAR.
+
+@Index[Set padding]PADDING [value]
+@\Set the number of PAD characters to use while receiving files.
+Same as SET SEND PADDING.
+
+@Index[Set Start of packet]
+START-OF-PACKET [value]
+@\Set the default start of Packet character for receiving files. Apply the
+same rules and considerations as for SET SEND START-OF-PACKET.
+
+PACKET-LENGTH number@\Tell the other Kermit the longest packet length CP/M
+Kermit is willing to receive during file transfer. The maximum length is 94,
+which is also the default length.
+
+@end<description>
+
+@Index[Set Send]SEND @i<parameter> [@i<value>]
+@\Set a SEND parameter.
+@begin<description, spread 0, leftmargin +8,indent -8>
+
+@Index[Pad character]
+PAD-CHAR@\Set the Pad character to be used while sending files.
+It is currently a dummy entry, and does not do anything.
+
+@Index[Set Padding]
+PADDING [value]
+@\Set the number of PAD-CHARS to be used while sending files. This
+too does nothing.
+
+@Index[Set Start of packet]
+START-OF-PACKET@\Set the default start of packet character to
+another character than control-A. This may be necessary on systems
+(including intervening networks) that trap control-A characters. Choose
+a control character not otherwise used, ie not carriage return (13D, ODH),
+line feed (10D, OAN), tabs (09D, 09H), backspace (08H), and bell (07H)
+or any other used between you and your remote system.
+
+@end<description>
+
+@Index[Baud]SPEED @i<value>
+@\Change the baud rate of the communications port. This
+command only works on some systems. @i<value> is the numeric baud rate
+(300, 9600, etc.) desired. Type SET SPEED followed by a question mark
+for a list of supported baud rates.
+On systems that do not support this command, you must set the port
+baud rate from CP/M or other setup mechanism outside of KERMIT-80.
+
+@Index[TacTrap]TACTRAP@\Set the TAC intercept character. If you are attached
+to a TAC it will swallow the intercept character (commercial AT sign by
+default) so Kermit sends it twice. With this command you can set the
+intercept character (ie the one to send twice) to another character.
+
+@Index[VT52 Emulation]
+@Index[Terminal Emulation]
+@Index[External Terminal Emulation]
+TERMINAL @i<option>
+@\Select one of the following terminal characteristics:
+
+@begin<description,spread 0.5,leftmargin +8,indent -8>
+
+OFF@\sets emulation off, and its up to the attached terminal to
+respond to escape sequences sent from the remote host system.
+
+DUMB@\Like off, but carriage return and line feed characters are
+the only control characters accepted. All other control characters are
+simply ignored. (Really a "Glass TTY").
+
+EXTERNAL@\Emulation is provided for by a routine in the system dependent
+part of Kermit. Attempting to set this option without having and
+externally supplied routine will returna "Not Implemented" error.
+
+OFF@\All characters are passed directly to the terminal without any
+interpretation by Kermit.
+
+VT52@\When connected as a terminal
+to a foreign host, the micro emulates a VT52.
+VT52 emulation is set by default, except on micros
+that already have terminal functionality built in, such as the DEC VT180 and
+DECmate (these act as @index<VT100 Emulation>VT100-@|series terminals). Some
+systems emulate other terminals, like the ADM3A; see table @ref<-cpmterms>.
+
+QUIET@\Do not display any file transfer information onto the console.
+This mode is useful if you console takes a long time to update the display.
+Only the file name is displayed. DEBUGging information is not displayed
+even if selected.
+
+REGULAR@\Inverse of QUIET. All packets etc displayed, as ususal.
+@end<description>
+
+@Index[TIMER]TIMER ON (or OFF)@\Enable or disable the "fuzzy timer". The timer
+is off by default, because in the normal case KERMIT-80 is communicating with a
+mainframe KERMIT that has its own timer. Mainframe KERMIT timers tend to be
+more precise or adaptable to changing conditions. You should SET TIMER ON if
+you are communicating with a KERMIT that does not have a timer. You should SET
+TIMER OFF if you are communicating over a network with long delays.
+
+@Index[USER]USER @i<user-number>
+@\Sets another user number to be active.
+Acceptable user numbers are 0 to 31, though it is recommended to use
+user numbers 0 to 15 only.
+This is really only useful for Winchester Systems with high disk capacities.
+
+@Index[Warning]WARNING ON (or OFF)@\Warn user of filename conflicts when
+receiving files from remote host, and attempt to generate a unique name by
+adding "@q<&>" characters to the given name. ON by default, which is
+equivalent to SET COLLISION RENAME.
+@end<description>
+
+@Index[Show]SHOW@\Display all settable parameters. You will get a page or so
+of the status af all parameters that can be set using the SET command.
+
+@Index[Status]STATUS@\The same function as Show.
+
+STAY@\Equivalent to SET NO-EXIT.
+
+@Index[Take]TAKE @i<filespec>@\Take characters and commands from the
+specified file as if they were entered from the keyboard.
+This is useful if you want to set up a batch job. A command
+file can send, get, receive, set functions
+etc automatically. A TAKE command can be interrupted with ^C.
+
+@\An automatic "TAKE KERMIT.INI" is executed from the default drive
+when Kermit-80 is loaded. This can be used to set defaults of band rate,
+parity, filetype, default drive etc.
+
+@\If KERMIT.INI does not exist, control is given directly to the user.
+
+@Index[TRANSMIT]TRANSMIT @i<filespec> @i<turnaround>@\Send the specified file
+to the system on
+the other end of the connection as though it were being typed at the terminal,
+one line at a time. Each line sent is terminated with a carriage return, and
+any line feeds are stripped from the file sent.
+After each line has been sent Kermit waits for a character string
+from the host (eg a acrriage return). If not specified, a carriage
+return is assumed. No KERMIT protocol is involved.
+An asterisk (star) is sent to the console for every line sent, to indicate
+how the transfer is progressing.
+This is useful for sending files to systems that don't have a
+KERMIT program. During transmission, you may type one of these
+single-@|character commands:
+@begin<description,spread 0,leftmargin +4, indent -4>
+Control-C@\Cease transmission, and drop into terminal emulation mode.
+
+CR@\(carriage return) Re-transmit the previous line.
+@end<description>
+
+@Index[Type]TYPE filespec@\Type a local CP/M file or files on the CP/M screen.
+A Control-C
+will cancel the command and return to the Kermit prompt. A Ctrl-X will cancel
+the current file and go on to the next one, if any.
+Typing any other character
+while the file is being displayed will suspend
+the output. Another character will resume output.
+
+@Index[VERSION]VERSION@\Show the name, edit number, and edit date of several of
+the modules that make up Kermit-80.
+
+@end<description>
+
+@section<Kermit-80 Flavors>
+@Comment(begin<description, leftmargin -8, indent +2>)
+
+Many of the systems supported use an external terminal, rather than a built-in
+console. Kermit may be further customized for these systems by defining
+(at assembly time) the terminal type to be used.
+If the terminal type is unknown or does not match any of the existing
+terminal options, the generic "CRT" option may be selected. In this case,
+Kermit cannot do fancy screen control during file transfer; it simply types the
+file names, packet numbers, and messages in sequence across and down the
+screen. This works best if you can put your micro or terminal in "autowrap"
+mode; otherwise the packet numbers will pile up in the rightmost column; the
+filenames and messages will always appear on a new line, however.
+If no specific terminal has been selected, Kermit cannot do VT52 emulation;
+it can act
+as a "dumb terminal" (sometimes called a "glass TTY"), or else its own built in
+terminal firmware provides cursor control functions independent of the Kermit
+program.
+
+@subsection<Generic Kermit-80>
+@index<Generic Kermit-80>@index<8080> "Generic Kermit-80" is an implementation
+of Kermit that should run on any 8080-@|compatible CP/M 2.2 system with no
+modification
+at all, or perhaps only a minor one. Unlike other Kermit-80 implementations,
+it contains no system-@|dependent manipulation of the serial port.
+All I/O is done with standard CP/M BIOS@index<BIOS> calls, and I/O redirection
+is done using the CP/M IOBYTE function, which, according to the Digital
+Research @i<CP/M Operating System Manual>, is an optional feature of any
+particular CP/M implementation. If your system does not provide the IOBYTE
+function, Generic Kermit-80 will not work; furthermore, not all systems that
+implement IOBYTE do so in the same way.
+The SET PORT command may be used to select the devices to be used for input
+and output. Table @ref<-cpmports> lists the options to the SET PORT command
+and their effects.
+
+@begin<table,use example,centered>
+@bar()
+@blankspace(1)
+@ux(SET PORT @i<xxx>) @ux(input from) @ux(output to)
+ CRT CRT: CRT:
+ PTR PTR: PTP:
+ TTY TTY: TTY:
+ UC1 UC1: UC1:
+ UR1 UR1: UP1:
+ UR2 UR2: UP2:
+@caption<Kermit-80 SET PORT Options>
+@tag<-cpmports>
+@bar()
+@end<table>
+
+The default is SET PORT PTR.
+In all cases, the console (CON:) and list (LST:) devices used are those
+selected when Kermit is started.
+
+ The reason all Kermit-80 implementations aren't
+generic is that a good deal of speed is sacrificed by getting all services from
+the operating system. While a specific implementation of Kermit-80 may be able
+to operate at 4800, 9600, or even 56 Kilo baud,
+generic Kermit will fail to work
+on some systems at speeds in excess of 1200 baud. In addition, many features
+of Kermit require more specific knowledge of the hardware involved. Generic
+Kermit cannot send a BREAK signal, or change the baud rate, for example.
+
+@subsection<CP/M 3 Kermit>
+
+CP/M-3 Kermit (also known as CP/M-Plus Kermit) is a version of generic
+Kermit-80, and should run on most CP/M-3 (CP/M-Plus) systems. It uses the
+auxilliary port (AUX:) to communicate to the remote Kermit. The SET BAUD
+and SET PORT commands are not supported; nor can a BREAK be sent.
+Like generic Kermit-80, a terminal may be selected at assembly time.
+
+@subsection<System-Specific Versions>
+
+There are also many versions of Kermit-80 tailored to specific systems.
+Most of these operate uniformly, but some of them take advantage (or suffer
+limitations) of the specific system. Here are some of the special features
+for particular systems:
+
+@begin<description, leftmargin +4, indent -4>
+@ux<Amstrad>: -- Two versions:
+
+@begin<description, leftmargin +4, indent -4>
+PCW 8256@\The PCW 8256/8512 with the serial inerafce attached.
+
+CPC 6128@\The 664 with add on memory and 6128 are both supported.
+Both systems must run CP/M Plus, so the 664 will need an add on RAM pack
+and CP/M upgrade. A high speed transfer rate of 38k baud can be used
+between Amstrad computers.
+@end<description>
+
+@ux<ACCESS>:@\Access Matrix computer using port J5. Supports SET
+BAUD-RATE for rates of 300-9600 baud.
+
+@ux<Apple II> -- four variations:
+@begin<description,leftmargin +4,indent -4>
+APMMDM:@\Apple with Z80 Softcard and Micromodem II in slot 2
+Dialout capability provided in connect command; user is prompted for
+phone number if carrier is not present. During connect mode,
+@q(^]D) drops carrier. BYE command also causes carrier to be dropped.
+
+AP6551:@\Apple with Z80 Softcard, and one of several 6551-based
+communication cards; the slot number is a compile-time parameter
+(default is slot 2). SET BAUD-RATE supported; speeds are 110-19200
+baud.
+
+APCPS:@\Apple with Z80 Softcard and CP Multi-Function Card. The slot
+number is again a compile-time parameter. SET BAUD-RATE is supported
+for baud rates from 50 baud to 19200 baud.
+
+AP6850:@\Apple II with Z80 Softcard and a 6850-based USART in slot 2-the
+slot being a compile-time parameter. SET BAUD-RATE is not supported.
+@end<description>
+
+@ux<BBC>:@\Acorn Computers BBC Computer with Acorn Z80 second
+processor running CP/M-80. Supports SET BAUD-RATE and can send breaks.
+
+@ux<BigBoard II>:@\Uses serial port A. To use port B, change mnport, mnprts,
+and baudrt and reassemble. Can generate BREAK. SET SPEED supported;
+speeds are 300-38400 baud.
+
+@begin<multiple>
+@ux<Cifer>:@\Originally coded for Cifer 1886 using the VL: port set
+as TTYI: and TTYO: but works successfully on 18xx and 28xx
+series machines.
+
+There are now two versions, each with two variations: Either running
+CP/M Version 2.2 or 3.0, and either using the VL: or AUX: ports. The VL:
+port version can only use seven bits of data, so parity prefixing is
+required for binary file transfers. This restriction is removed by
+using the AUX: port. For those interested, the problem is due to the
+interprocessor link between the video and CPU (!) boards. The VL: port
+is on the video board, and the AUX: port on the CPU board,
+and the inter processor link can only transfer seven bits of data.
+
+Supports SET SPEED, and can generate breaks on
+some models with a BREAK key.
+@end<multiple>
+
+@ux<Comart>:@\Comart Communicator-Similar to Northstar
+equipment. Can generate BREAK.
+
+@ux<Compupro>:@\Based on Kermit 3.x, and has been merged into V4.09
+
+@ux<CPT-85xx word processors>:@\Can generate BREAK. SET SPEED supported;
+speeds are 50-9600 baud.
+
+@ux<Cromemco>:@\Cromemco computers with TU-ART card. Supports SET
+BAUD-RATE (110-9600 baud).
+
+@ux<DEC DECmate II word processor (with Z80 card)>:@\Can generate BREAK.
+
+@ux<DEC VT180 (Robin)>:@\Three output ports, referred to as COMMUNICATIONS,
+GENERAL, and PRINTER. Can generate BREAK.
+
+@ux<Digicomp Delphi 100>:@\SET SPEED supported; speeds are 50-19200 baud.
+
+@ux<Discovery>:@\Action Computer Enterprises "Discovery" Multi-user
+Computer. Uses Port B on an 83U user board. Supports SET SPEED
+for 50-19200 baud. Can generate BREAK.
+
+@ux<Epson>:@\Epson PX-8 with LCD display. Although it is quite different
+in displaying of Packet Information, it works as any other CP/M-80 Kermit.
+Supports SET SPEED and can generate BREAK.
+
+@ux<Generic Kermit>:@\Two versions, one for CP/M version 2@q<.>2 and
+version 3. These systems use IOBYTE flipping (V2@q<.>2) and the AUX:
+device to communicate to the serial line. You may have to SET PORT xxx
+before the version 2@q<.>2 will work, as Kermit needs to know what device
+is the serial line.
+
+@ux<Genie>:@\Eaca Video Genie.
+
+@ux<Heath>: Three Versions:
+@begin<description,leftmargin +4,indent -4>
+H8QUAD@\for Heath-8 systems with the quad io board. This system has been
+derived from V3.x code. Note that this version will not run "as is" on H89
+systems.
+
+H89@\For Heath-89 machines suports baud rates from 50 to 56,000 baud.
+
+Z100@\For Z-100 running CP/M-85. This version does not support
+setting of baud rates.
+
+@end<description>
+
+@ux<Intertec Superbrain>: Two Versions:
+@begin<description,leftmargin +4,indent -4>
+BRAINA@\For superbrain using AUX port. Breaks and SET BAUD both supported
+
+BRAINM@\As above, but using the MAIN port.
+@end<description>
+
+@ux<Ithaca>:@\Ithaca Intersystems based computer using the VIO card for
+all IO to the outside world. The system is strictly speaking a
+home-brew variant of the Ithaca machine, using an S100 cardcage
+without a front panel. It uses the Extended BIOS by EuroMicro of London.
+However, I see no reason for this version not running on a genuine
+Ithaca Intersystems machine. There are patches needed to the EuroMicro
+BIOS to make this version work.
+
+@ux<Kaypro:>@\Should work on most Kaypro models, as well as some related
+systems (Ferguson BigBoard I, Xerox 820). For the newer Kaypros with multiple
+ports, Kermit uses the one labeled "serial data"; it cannot use the serial
+printer or internal modem ports (but it should be possible to modify the values
+for mnport, mnprts, and baudrt to do this). Can generate BREAK. SET SPEED
+supported; speeds are 50-19200 baud.
+
+@ux<Lobo>:@\Lobo MAX-80. Supports SET SPEED and can generate BREAKS.
+
+@ux<Merlin>:@\British Telecom Merlin M2215 (also Rair Black Box, possibly
+also the ICL PC?). Requires a terminal.
+
+@ux<Microbee>:@\Microbee Systems computer made in Australia. Works on
+Microbee 56K (Series 2 APC), 64K (Computer in a Book), 128K (Dynamic), and
+256K (256TC). Can generate BREAK. SET BAUD-RATE supported; speeds are
+75-9600. All serial I/O is via software, not hardware. Simultaneous transmit
+and receive possible on all speeds except 75/1200, 1200/75, 4800, and 9600.
+
+@ux<Micromate>:@\PMC 101 Micromate. Supports SET SPEED and can
+generate BREAK.
+
+@ux<Micromint>: Two versions
+@begin<description, leftmargin +4, indent -4>
+S6@\The Ciarcia/Micromint sb-180 board with a 6Mhz procoessor. System
+requires a terminal.
+
+S9@\As above, but with a 9Mhz processor.
+@end<description>
+
+@ux<NCR>:@\Decisionmate 5. Uses the 2651 and is largely
+the same as the Ithaca Intersystems machine implementation.
+
+
+@ux<Northstar>: -- There are four versions available:
+@begin<description,leftmargin +4,indent -4>
+NORTHS:@\Northstar Horizon with HS10-4 board. Supports SET SPEED
+and SET PORT.
+
+HORIZON:@\Northstar Horizon using the serial ports on the Mother
+board. Can generate BREAK.
+
+BASICNS:@\Basic Northstar Horizon using the printer port.
+Can generate BREAK.
+
+ADVANT:@\Northstar Advantage. Supports SET SPEED and can
+generate BREAK. Traps Control-0 in the system filter.
+@end<description>
+
+@ux<Morrow Decision I>:@\Uses the Multi-I/O board. Port 1 is the console, port
+3 is the communications line. SET SPEED supported; speeds are 75-56000
+baud.
+
+@ux<Morrow Micro Decision I>:@\
+
+@ux<Nokia MicroMikko>:@\
+Will not echo control-O (which locks keyboard). SET SPEED
+supported; speeds are 75-9600 baud.
+
+@ux<Ohio Scientific>:@\Doesn't have screen control.
+
+@ux<Osborne 1>:@\Uses serial line, not internal modem. Left-arrow
+key generates
+<DEL> ("delete" or "rubout" character) during connect mode. SET SPEED
+supported; speeds are 300 and 1200 baud. Now supports multi-sector buffering.
+
+@ux<Research Machines>: Two Versions:
+@begin<description,leftmargin +4,indent -4>
+RM380ZM:@\380Z and 5.25" disks supports SET BAUD.RATE
+
+RM380ZF:@\380Z and 8" disks, otherwise as above.
+@end<description>
+
+@ux<Sanyo>:@\Sanyo MBC-1100. This version derived from Kermit V3.x
+
+@ux<ScreenTyper>:@\Details unkown.
+
+@ux<TRS-80>: Three versions:
+@begin<description,leftmargin +4,indent -4>
+TRS80LB:@\TRS-80 with Lifeboat CP/M
+
+TRS80PT:@\TRS-80 with Pickles and Trout CP/M
+
+TRSM4:@\TRS-80 Model 4 with Montezuma CP/M
+@end<description>
+
+@ux<Teletek>:@\Teletek Systemaster. Supports SET BAUD.
+
+@ux<Telcon>:@\TELCON ZOBRA portable computer.
+
+@ux<Torch>:@\Torch Unicorn 5 initially, but the code runs on other
+Z80 based CP/N (as in Nut!) systems. It uses the BBC Computer as a
+"Base processor", and is similar to the BBC version. The base processors
+RS423 port is used rather than any built in Modem.
+(UK telecoms legislation effectively makes modem control software
+tricky business...). Two potential versions exist-one using cursor
+positioning codes for a MCP and CCCP ROM combination of revision less
+than 1.00, the other version uses the additional facility MCP/CCCP
+versions greater than 1. Supports SET SPEED and can generate BREAKs.
+
+@\Note that binary files must be transferred using SET PARITY to anything
+other than NONE! Parity is neither generated nor checked.
+
+@ux<US Micro Sales>:@\S-100-8 based computer.
+
+@ux<Vector Graphics>:@\Vector
+
+@ux<Xerox>:@\Xerox 820.
+
+@ux<Z80MU>:@\Development Kermit on a PC running the Z80MU Z80 and CP/M 2@q<.>2
+development system. Allows development of the system independent modules
+to be done on an IBM PC or clone. Also allows the generation of new .HEX
+files, that may then be KERMITed to the target system. Note: Not all
+the BDOS or BIOS routines are supported, so avoid "unusual" BIOS/BDOS calls.
+(For example, DIR from within Kermit will fail as one of the BIOS routines
+returning disk parameters is not supported.)
+@end<description>
+
+@section<Installation of Kermit-80>
+
+Kermit-80 was written originally for the Intertec SuperBrain in
+lowest-@|common-@|denominator @Index[8080] 8080 code with the standard
+assembler, ASM (single source module, no macros, no advanced instructions), so
+that it could be assembled on any CP/M-80 system (the 8080 assembler is
+distributed as a standard part of CP/M-80, whereas the fancier Z80@Index[Z80]
+or macro assemblers are normally commercial products). It has since been
+modified to run on many other systems as well. Kermit-80 should be able to run
+on any 8080-, 8085- or Z80-@|based microcomputer under @Index[CP/M] CP/M with
+appropriate minor changes to reflect the port I/O and screen control for the
+system (see below).
+
+The proliferation of new systems supported by Kermit-80 made the program grow
+so large and complicated that it had to be broken up into system-@|independent
+and system-@|dependent modules, as of version 4 (this was done by Charles
+Carvalho of ACC). Each module is composed of multiple files. This has reduced
+the time and disk space necessary for assembly; Kermit-80 may once again be
+assembled on a CP/M system with roughly 250Kbytes of space. The majority of
+the code does not need to be reassembled to support a new system.
+Unfortunately, it can no longer be assembled with ASM, since ASM does not
+support multiple input files. To allow it to be assembled on any CP/M system,
+the public-domain assembler LASM is included in the distribution kit. Kermit-80
+may also be assembled with Microsoft's M80 (not supplied). In theory, any 8080
+assembler supporting the INCLUDE directive ought to work, as well.
+
+All versions of Kermit-80 are assembled from the same set of sources, with
+system dependencies taken care of by assembly-@|time conditionals within the
+system-@|dependent module (eventually, the system-@|dependent module will
+itself be broken up into multiple files, one for each system). The most
+important system dependencies are terminal emulation (when CONNECTed to the
+remote host) and screen handling, which are dependent on the individual micro's
+escape codes (these features are table driven and easily modified for other
+CP/M systems), and the lowest level I/O routines for the serial communications
+port. The port routines are best done only with BDOS calls, but some systems
+do not allow this, primarily because the BDOS routines strip the parity bit
+during port I/O, and the parity bit is used for data when transmitting binary
+files.
+
+Kermit-80's I/O routines must check the port status and go elsewhere if no
+input is available; this allows for virtual terminal connection, keyboard
+interruption of stuck transmissions, etc. On systems that fully implement I/O
+redirection via the optional CP/M IOBYTE facility, this may be done by
+switching the IOBYTE definition. On others, however, IN/OUT instructions
+explicitly referencing the port device registers must be used.
+
+@index<Timeout>
+CP/M-80 KERMIT versions 3.8 and later include a "fuzzy timer" that allows a
+timeout to occur after an interval ranging from 5 to 20 seconds (depending upon
+the speed of the processor and the operating system routines) during which
+expected input does not appear at the port. In this case, retransmission
+occurs automatically. In any case, you may type a carriage return during
+transmission to simulate a timeout when the transfer appears to be stuck.
+
+@subsection<Organization of Kermit-80>
+Kermit-80 consists of two modules, each of which is generated from multiple
+source files. The first module contains the system-@|independent code;
+the second module is configured for a particular system and merged with
+the system-@|independent module to produce a customized Kermit-80.
+
+The distribution kit contains:
+@begin<itemize,spread 0>
+the system-@|independent module, @q<CPSKER.HEX>;
+
+the system-@|dependent modules, @q<CPV*.HEX> (see table @ref<-cpmsystems1>
+and @ref<-cpmsystems2>);
+
+the source files, @q(CPS*.ASM) and @q(CPX*.ASM),
+
+the public-domain CP/M assembler, @q<LASM.*>,
+
+the public-domain CP/M load/patch utility, @q<MLOAD.*>
+@end<itemize>
+
+@Comment(NewPage<> added for local manual)
+@begin<table,use verbatim,leftmargin +0>
+@bar()
+@blankspace(1)
+@u(Symbol Filename System)
+@blankspace(0.25)
+ACCESS CPVACC @r<Access Matrix>
+ADVANT CPVADV @r<Northstar Advantage>
+AP6551 CPVAPL @r<Apple II, Z80 Softcard, 6551 ACIA in serial interface>
+AP6850 CPVA65 @r<Apple II, Z80 Softcard, 6850 ACIA in Serial Iiterface>
+APMMDM CPVAPM @r<Apple II, Z80 Softcard, Micromodem II in slot 2>
+APCPS CPVCPS @r<Apple II, Z80 Softcard, with CPS multifunction card>
+BASICNS CPVBNS @r<Northstar Horizon (terminal required)>
+BBC CPVBBC @r<Acorn "BBC" computer with Acorn Z80 second processor>
+BBII CPVBB2 @r<BigBoard II (terminal required)>
+BRAINM CPVBRM @r<Intertec Superbrain using the main port>
+BRAINA CPVBRA @r<Intertec Superbrain using the Aux port>
+CIFER2 CPVCIF @r<Cifer 1886 using the VL: Serial port and CP/M V2.2>
+CIFER3 CPVCI3 @r<Cifer 1886 using the VL: Serial port and CP/M V3.0>
+CIFER2 CPVCA2 @r<Cifer 1886 using the AUX: Serial port and CP/M V2.2>
+CIFER3 CPVCA3 @r<Cifer 1886 using the AUX: Serial port and CP/M V3.0>
+CMEMCO CPVCRO @r<Cromemco with TU-ART card. Terminal required)>
+COMART CPVCOM @r<Comart Communicator (terminal required)>
+COMPRO CPVPRO @r<Compupro with Interfacer 4 (or 3). Terminal required.>
+CPC CPVCPC @r<Amstrad CPC 664 and 6128 and CP/M 3>
+CPM3 CPVCP3 @r<"Generic": CP/M 3.0 (CP/M Plus) systems (terminal req'd)>
+CPT85XX CPVCPT @r<CPT-85xx wordprocessor with CP/M>
+DELPHI CPVDEL @r<Digicomp Delphi 100 (terminal required)>
+DISC CPVDIS @r<Action Computer Enterprises "Discovery" (terminal req'd)>
+DMII CPVDM2 @r<DECmate II with CP/M option>
+GENER CPVGEN @r<"Generic": CPM 2.2 systems with IOBYTE (terminal req'd)>
+GENIE CPVGNI @r<Video Genie>
+H8QUAD CPVH8Q @r<Heath-8 with Quad 8 i/o board>
+HEATH CPVH89 @r<Heath/Zenith H89>
+HORIZON CPVHOR @r<Northstar Horizon (terminal required)>
+KPII CPVKPR @r<Kaypro-II (and 4; probably supports all Kaypro systems)>
+LOBO CPVLBO @r<Lobo Max-80>
+@begin<text,facecode R,above 1>
+"symbol" is the symbol used to select the target system, in @q<CPVTYP.ASM>;
+
+"filename" is the name under which the module is supplied in the distribution.
+@end<text>
+@caption<Systems supported by Kermit-80 (Part 1)>
+@bar()
+@tag<-cpmsystems1>
+@end<table>
+
+
+@Comment(NewPage<> added for local manual)
+@begin<table,use verbatim,leftmargin +0>
+@bar()
+@blankspace(1)
+@u(Symbol Filename System)
+@blankspace(0.25)
+M2215 CPVMRL @r<British Telecom Merlin/Rair Black Box (terminal required)>
+MBEE CPVBEE @r<Microbee>
+MDI CPVMDI @r<Morrow Decision I (terminal required)>
+MIKKO CPVMIK @r<MikroMikko>
+MMATE CPVMM @r<PMC 101 Micromate (terminal required)>
+MMDI CPVUD @r<Morrow Micro Decision I (terminal required)>
+NCRDMV CPVDMV @r<NCR Decision Mate V. (Terminal required?)>
+NORTHS CPVNS @r<Northstar Horizon with HSIO-4 card (terminal req'd)>
+OSBRN1 CPVOSB @r<Osborne 1>
+OSI CPVOSI @r<Ohio Scientific>
+PCI2651 CPVPCI @r<Ithaca Intersystems with VI0 card (terminal required)>
+PCW CPVPCW @r<Amstrad PCW 8256/8512 with serial interface>
+PX8 CPVPX8 @r<Epson PX-8>
+RM380ZM CPVRMM @r<Research Machines 380Z with MDS (5.25" discs)>
+RM380ZF CPVRMF @r<Research Machines 380Z with FDS (8" discs)>
+ROBIN CPVROB @r<DEC VT180>
+S1008 CPVUSM @r<US Microsales S-100-8 (terminal required)>
+SANYO CPVSAN @r<Sanyo MBC-1100>
+SB6 CPVSB6 @r<Micromint SB-180 with 6Mhz CPU (terminal required)>
+SB9 CPVSB9 @r<Micromint SB-180 with 9Mhz CPU (terminal required)>
+SCNTPR CPVSCN @r<Screentyper>
+TELCON CPVTEL @r<TELCON Zobra portable>
+TELETEK CPVTET @r<Teletek Systemaster>
+TORCH CPVTRC @r<Torch computers BBC-B with Z80 second processors>
+TRS80LB CPVTLB @r<TRS-80 model II with Lifeboat 2.25C CP/M Display>
+TRS80PT CPVTPT @r<TRS-80 model II with Pickles + Trout CP/M Display>
+TRSM4 CPVTM4 @r<TRS-80 model IV>
+VECTOR CPVVEC @r<Vector Graphics>
+XER820 CPVXER @r<Xerox 820>
+Z100 CPVZ00 @r<Z-100 under CP/M-85>
+Z80MU CPVZ80 @r<Z80MU development system on a PC>
+@begin<text,facecode R,above 1>
+"symbol" is the symbol used to select the target system, in @q<CPXTYP.ASM>;
+
+"filename" is the name under which the module is supplied in the distribution.
+@end<text>
+@caption<Systems supported by Kermit-80 (Part 2)>
+@bar()
+@tag<-cpmsystems2>
+@end<table>
+
+@Comment(NewPage added for local manual)
+@NewPage()
+@begin<table,use verbatim,leftmargin +0>
+@bar()
+@blankspace(1)
+@u(Symbol Terminal type)
+@blankspace(0.25)
+CRT @r<Dumb terminal type. Does not do cursor addressing>
+ADM3A @r<Lear Seigler ADM 3A>
+ADM22 @r<Lear Seigler ADM 22>
+AM230 @r<Ampro 230>
+H1500 @r<Hazeltine 1500>
+SMRTVD @r<Netronics Smartvid>
+SOROQ @r<Soroq IQ-120>
+TVI912 @r<Televideo 912>
+TVI925 @r<Televideo 925 or Freedom 100>
+VT52 @r<Dec VT52 or equivalent (H19)>
+VT100 @r<Dec VT100 or equivalent>
+WYSE @r<Wyse 100>
+@begin<text,facecode R,above 1>
+"symbol" is the symbol used to select the target system, in @q<CPXTYP.ASM>;
+
+"Terminal type" is the type of terminal "symbol" selects.
+@end<text>
+@caption<Terminals supported by Kermit-80>
+@bar()
+@tag<-cpmterminals>
+@end<table>
+@Comment(NewPage<> removed again)
+
+@Comment<for Installation of kermit-80>
+
+@subsection<Downloading Kermit-80>
+
+You'll need either a pre-configured @q<.COM> file or the system-@|independent
+module, @q<CPSKER>, in binary (@q<.COM>) or hex (@q<.HEX>) format and the
+system-@|dependent overlay for your system (from Tables @ref<-cpmsystems1> and
+@ref<-cpmsystems2>). If
+your system is not listed in the table, get the generic CP/M 2@q(.)2 Kermit or
+the generic CP/M 3 Kermit. If you already have a version of Kermit on your
+micro and you want to install a new version, simply use your present version to
+get the new files. Transfer the files to your system and skip ahead to
+"merging the modules".
+
+If you do not have a copy of Kermit on your micro, and you cannot borrow a
+Kermit floppy but you do have access to a mainframe computer with a copy of the
+Kermit-80 distribution, you should read this section.
+
+@Index[Bootstrapping CP/M Kermit]@index<Downloading>
+ There are several ways to get CP/M Kermit from a host system to your micro.
+The easiest is to "download" the necessary "hex" files into your micro's
+memory and then save them on the disk. If you have a terminal emulator program
+on your micro which can save a copy of the session to disk, connect to your
+host, and type the necessary files. Exit from the emulator, saving the
+session log, and edit the session log to extract the hex files. Skip ahead to
+"merging the files".
+
+The following is a procedure which, though far from foolproof, should allow you
+to get a version of Kermit to your CP/M based micro. It depends upon the host
+prompt, or at least the first character of the host prompt, being some
+character that cannot appear in a hex file (the valid characters for hex files
+are the digits 0-9, the upper case letters A-F, the colon ``@q<:>'', carriage
+return, and line feed). As soon the prompt character is encountered, the
+transfer will terminate. If your host does not issue a prompt that will
+accommodate this scheme, you can achieve the same effect by adding an atsign
+``@@'' to the very end of the hex file before sending it from the host. The
+program below looks for an atsign (the normal DEC-20 prompt, hex 40).
+DECSYSTEM-10 users would look for a dot, hex 2E; VAX/VMS or UNIX users would
+look for a dollar sign, hex 24; UNIX C-Shell users would look for a percent
+sign, hex 26.
+
+@Begin <Enumerate>
+For CP/M 2@q<.>2 systems, connect to a floppy disk with plenty of free space.
+Run DDT and type in the following (the comments should not be typed in;
+they are there just to tell you what's happening): (Note that this wont work
+for CP/M Plus or 3@q<.>0 systems!)
+@Begin<figure, use Example, leftmargin +0>
+@bar()
+@blankspace(0.25)
+-a100 ;Begin assembling code at 100
+0100 LXI H,2FE ;Where to store in memory
+0103 SHLD 200 ;Keep pointer there
+0106 MVI E,D ;Get a CR
+0108 MVI C,4 ;Output to PUNCH (send to HOST)
+010A CALL 5
+010D MVI C,3 ;Input from READER (read from HOST)
+010F CALL 5
+0112 ANI 7F ;Strip parity bit
+0114 PUSH PSW ;Save a and flags
+0115 MOV E,A ;Move char to E for echo
+0116 MVI C,2 ;Output to screen
+0118 CALL 5
+011B POP PSW ;Restore A and flags
+011C CPI 40 ;(or 4E,24,26,etc) System prompt?
+011E JZ 127 ;Yes, have whole file in memory
+0121 CALL 17A ;No, store another byte
+0124 JMP 10D ;Read another byte
+0127 MVI A,1A ;Get a Control-Z (CP/M EOF mark)
+0129 CALL 17A ;Store it in memory
+012C LXI H,300 ;Get memory pointer
+012F SHLD 202 ;Store as DMA pointer
+0132 LDA 201 ;Get 'HI' byte of memory pointer
+0135 STA 200 ;and store it as 'LO' one
+0138 XRA A
+0139 STA 201 ;Zero 'HI' byte (slow *256)
+013C MVI C,16 ;Make NEW file
+013E LXI D,5C ;With FCB1
+0141 CALL 5
+0144 CALL 15E ;Write 128 bytes (sector)
+0147 CALL 15E ;Write another sector
+014A LXI H,FFFF ;Get a 16-bit Minus One
+014D XCHG ;into DE
+014E LHLD 200 ;Get 256-byte counter
+0151 DAD D ;Decrement
+0152 SHLD 200 ;and store back
+0155 MVI A,2 ;Check if
+0157 CMP L ; 256-byte counter down to offset
+0158 JZ 183 ;Yes, we're done
+015B JMP 144 ;Keep writing..
+015E LHLD 202 ;Get file-pointer
+0161 XCHG ;into DE
+0162 MVI C,1A ;Set DMA-address
+0164 CALL 5
+0167 MVI C,15 ;Write sector (128 bytes)
+0169 LXI D,5C ;using FCB1
+016C CALL 5
+016F LHLD 202 ;Get file-pointer
+0172 LXI D,80 ;128-bytes
+0175 DAD D ;added to file-pointer
+0176 SHLD 202 ;and save
+0179 RET ;and return
+017A LHLD 200 ;Get Memory-pointer
+017D MOV M,A ;Store character
+017E INX H ;Increment Pointer
+017F SHLD 200 ;and save
+0182 RET ;and return
+0183 MVI C,10 ;CLOSE file
+0185 LXI D,5C ;using FCB1
+0188 CALL 5
+018B JMP 0 ;Force WARM BOOT
+0179
+-^C ;(Type Control-C) Return to CP/M
+A>SAVE 1 FETCH.COM ;Save program, we need to run it twice.
+@caption<Bootstrap program for Kermit-80 and CP/M Version 2.2>
+@bar()
+@tag<-cpmboot>
+@end<Figure>
+Alternatively, an assembler source file for this program is distributed
+with CP/M Kermit as @q<CPKFET.ASM>. You might prefer to type the assembler
+version in and assemble and load it (ASM CPKFET, LOAD CPKFET, or MASM CPKFET,
+MLOAD CPKFET), to let the assembler and loader catch any typing errors.
+
+Connect to your host using a terminal or a terminal emulation program. Ensure
+that your host does not have your terminal in "page mode" (does not pause
+at the end of each screenful).
+
+Tell the host to display the first hex file (the system-independent module)
+at your terminal, e.g. give a command like @q<TYPE CPSKER.HEX>, @i<@u(without)
+a terminating carriage return>.
+
+Return to your micro by switching the cable from the terminal to the micro,
+or by terminating the micro's terminal program.
+
+Make sure your IOBYTE is set so that @q<RDR:> and @q<PUN:> correspond to the
+I/O port that is connected to the host (this would normally be the case
+unless you have done something special to change things).
+
+Load the program you entered in the first step with DDT, and use it to capture
+the first hex file:
+@Begin<Example,Free>
+DDT FETCH.COM
+-icpsker.hex ;Setup FCB for file CPSKER.HEX
+-g100,179 ;Execute the program.
+@End<Example>
+Now there should be a file @q<CPSKER.HEX> on your connected disk.
+
+Return to the host, and tell it to display the second hex file (the
+system-@|dependent module for your configuration). Again, do not type the
+terminating carriage return.
+
+Return to your micro, and run the capture program again:
+@Begin<Example,Free>
+DDT FETCH.COM
+-icpxovl.hex ;Setup FCB to create CPXOVL.HEX
+-g100,179 ;Execute the program.
+@End<Example>
+Now there should be a file @q<CPXOVL.HEX> on your connected disk. Replace
+@q<CPXOVL.HEX> in this example with the appropriate overlay file for your
+system.
+@end<enumerate>
+Merging the files:
+@begin<enumerate>
+For purposes of illustration, we will assume the system-@|dependent overlay is
+called "cpxovl@q<.>hex". The two hex files may be combined with MLOAD or DDT.
+If you already have a running Kermit, you can transfer @q<MLOAD.HEX> to your
+system and create @q<MLOAD.COM> by running LOAD. If you're bootstrapping
+Kermit, you could transfer @q<MLOAD.HEX> to your system the same way you got
+the other two @q<.HEX> files, but it's probably simpler to use DDT to get
+Kermit running, and get MLOAD later if you need it.
+
+Using MLOAD, the two pieces may be easily merged:
+@begin<example>
+A>@ux(mload kerm411=cpsker,cpxovl)
+@i[(Some messages about program size, etc...)]
+A>
+@end<example>
+
+If you don't have MLOAD running, it's a bit more complex:
+@begin<example>
+A>@ux<ddt cpsker.hex>
+NEXT PC
+3500 0100
+-@ux<icpxovl.hex>
+-@ux<r>
+NEXT PC
+xxxx 0000
+-@ux<^C>
+A>@ux<save @i(dd) kerm411.com>
+@end<example>
+The page count ("dd") used in the SAVE command is calculated from the last
+address ("xxxx") given by DDT in response to the R command: drop the last two
+digits and add 1 if they were not zero, then convert from hexadecimal (base 16)
+to decimal (base 10): 684F becomes 69 hex, which is 105 decimal (5 times
+16 plus 9) -- but 6700 becomes 67 hex, or 103 decimal (consult an
+introductory computing book if you don't understand number base conversion).
+
+If you are using the Z80MU CP/M and Z80 development toolkit on an IBM PC
+or clone, then follow the same instructions as for a genuine CP/M system.
+When you have loaded your file, you will have to ship the .COM or two
+.HEX files to the target CP/M system. (Possibly using a previous
+issue of Kermit?)
+
+
+Note that CP/M hex files have checksums on each line. If there were any
+transmission errors during the downloading process, MLOAD or DDT will notice a
+bad checksum and will report an error (something like "Illegal Format"). If
+you get any errors during loading, either fix the hex file locally with an
+editor, or repeat the transfer.
+
+@End<Enumerate>
+
+You now should have a running version of Kermit-80, called @q<KERM411.COM>.
+
+Test your new Kermit by running it. If it gives you a prompt, it might be
+OK. (don't delete your old one yet...). Instead of a prompt, you could get
+one of two messages indicating that the configuration information is invalid:
+@example<?Kermit has not been configured for a target system>
+or
+@example<?Consistency check on configuration failed>
+Of course, neither of these messages should appear if you're building Kermit
+from the distribution kit. The first message indicates that the overlay was
+not found where the system-@|independent module expected to find it, probably
+because the overlay address is incorrect; the second indicates that the version
+of CPXLNK used in the system-@|dependent module is incompatible with the
+system-@|independent module.
+
+Once you are satisfied that KERMIT40 works correctly, you should rename your
+old @q<KERMIT.COM> to something else, like @q<OKERMIT.COM>, and rename
+@q<KERMIT40.COM> to @q(KERMIT.COM).
+
+@subsection<Assembling Kermit-80 from the sources>
+
+Kermit-80 is built in two pieces from the following files:
+@begin<description,spread 0>
+@i(The system-independent files:)
+
+@q<@ @ CPSKER.ASM>@\header file
+
+@q<@ @ CPSDEF.ASM>@\definitions for both KERMIT and KERSYS
+
+@q<@ @ CPSMIT.ASM>@\initialization, main loop, miscellaneous commands
+(BYE, EXIT, LOG, SET, SHOW, STATUS, and VERSION)
+
+@q<@ @ CPSCOM.ASM>@\second part of commands, status and set file
+
+@q<@ @ CPSPK1.ASM>@\part 1 of the KERMIT protocol handler
+(SEND, RECEIVE, LOGOUT,and FINISH commands)
+
+@q<@ @ CPSPK2.ASM>@\part 2 of the KERMIT protocol handler
+
+@q<@ @ CPSREM.ASM>@\REMOTE routines (FINISH, BYE and LOGOUT in CPXPK*.ASM)
+
+@q<@ @ CPSSER.ASM>@\SERVER routines (for the future)
+
+@q<@ @ CPSTT.ASM>@\the transparent commands (TRANSMIT, CONNECT)
+
+@q<@ @ CPSCPM.ASM>@\CP/M commands (DIR, ERA, USER, TYPE, PRINT, COPY)
+
+@q<@ @ CPSWLD.ASM>@\the wildcard handler
+
+@q<@ @ CPSCMD.ASM>@\the command parser
+
+@q<@ @ CPSUTL.ASM>@\utility routines and data
+
+@q<@ @ CPSDAT.ASM>@\data space and the overlay definitions
+
+@q<@ @ CPXLNK.ASM>@\linkage area description
+
+@blankspace(1)
+@i(The system-dependent files:)
+
+@q<@ @ CPXTYP.ASM>@\system selection
+
+@q<@ @ CPXLNK.ASM>@\system overlay specification and jump table
+
+@q<@ @ CPXCOM.ASM>@\common routines for all systems
+
+@q<@ @ CPXSWT.ASM>@\system selector or switcher
+
+@blankspace(1)
+One of:
+
+@q<@ @ CPXSYS.ASM>@\family file for some system-specific code
+
+@q<@ @ CPXTOR.ASM>@\family file for Torch, Superbrain, PCI2651 etc
+
+@q<@ @ CPXNOR.ASM>@\family file for Northstar and Comart machines
+
+@q<@ @ CPXMRL.ASM>@\family file for British Telecom Merlin/Rair Black Box
+
+@q<@ @ CPXSB.ASM>@\family file for Micromint SB-180 systems
+
+@q<@ @ CPXCIF.ASM>@\family file for Cifer systems
+
+@q<@ @ CPXHEA.ASM>@\family file for Heath/Zenith systems
+
+@q<@ @ CPXAPP.ASM>@\family file for Apple II systems
+
+@q<@ @ CPXPCW.ASM>@\family file for Amstrad PCW 8256/8512 machines
+
+@q<@ @ CPXBBI.ASM>@\family file for BigBoard, Kaypro and Xerox 820 systems
+
+@q<@ @ CPXBEE.ASM>@\Microbee
+
+@q<@ @ CPXSYO.ASM>@\family file for Sanyo MBS-1100 systems
+
+@q<@ @ CPXTM4.ASM>@\family file for Tandy Model 4 with CP/M systems
+
+@q<@ @ CPXGNI.ASM>@\family file for Video Genie systems
+
+@q<@ @ CPXPRO.ASM>@\family file for Compupro systems
+
+@q<@ @ CPXZ80.ASM>@\family file for the Z80MU development system
+
+@blankspace(1)
+and if you use a terminal,
+
+@q<@ @ CPXVDU.ASM>@\display codes for VDUs etc. Not always required
+@end(description)
+The system-@|independent module contains all of the system-@|independent files
+except for @q(CPXLNK.ASM), which is assembled into the system-@|dependent
+module to provide the structures needed to connect the two modules. As
+distributed, the system-@|independent module is named @q(CPSKER.HEX). If you
+have a copy of @q(CPSKER.HEX), you do not need to reassemble the
+system-@|independent module to configure Kermit for your system.
+
+The system-@|dependent module consists of @Q(CPXTYP.ASM), @Q(CPSDEF.ASM),
+@Q(CPXLNK.ASM), @q(CPXSWT.ASM), @q(CPSCOM.ASM), one of the family files
+@Q(CPXSYS.ASM), @q(CPXTOR.ASM), @q(CPXMRL.ASM), @q(CPXSB.ASM), @q(CPXCIF.ASM),
+@q(CPXHEA.ASM), @q(CPXBBI.ASM), @q(CPXTM4.ASM), @q(CPXGNI.ASM), @q(CPXNOR.ASM),
+@q(CPXAPP.ASM), @q(CPXPCW.ASM), or @q(CPXPRO.ASM), and possibly @q(CPXVDU.ASM),
+if your system uses a terminal for the console. One copy of the
+system-@|dependent module is supplied already assembled for each supported
+system; the filename may be obtained from tables @ref<-cpmsystems1> and
+@ref<-cpmsystems2>. If a terminal is required for a system, a CRT (glass TTY
+device) has been selected.
+
+After assembling the two pieces separately, they are combined with DDT or
+MLOAD into a system-@|specific Kermit.
+
+If you want to rebuild the system-@|independent module, the only change you
+may need to make is to select the assembler to be used, in @Q(CPSKER.ASM).
+Define one of MAC80, M80, or LASM to TRUE to select it as the assembler;
+the others should be defined FALSE.
+
+Assuming you have the Microsoft Macro Assembler package (M80/L80), you'll
+need to do the following:
+@begin<example>
+A>@ux(m80 cpsker=cpsker.asm)
+A>@ux(l80 /p:100,cpsker,cpsker/n/e)
+@end<example>
+This will produce @Q(CPSKER.COM).
+
+If you are using LASM instead, do this:
+@example(A>@ux<lasm cpsker>)
+LASM will generate @Q(CPSKER.HEX) and @Q(CPSKER.PRN). LASM allows options to
+be specified in the same way as the standard assembler, ASM, so the command
+@example[A>@ux(lasm cpsker.abz)]
+will read the source files from drive A, send the @q(.HEX) file to drive B,
+and suppress the listing file.
+
+If you are using the Z80MU development system on an IBM PC or clone, then
+assemble your files using either LASM and MLOAD or M80 and L80, as if you
+were using a genuine CP/M-80 system. Note that you will still have the
+problem of transferring your assembled files to the target CP/M system.
+
+If you want to generate a system-@|dependent overlay for a particular system,
+or want to change the terminal supported, you'll need to check three areas in
+@Q(CPXTYP.ASM):
+
+First, the overlay start ADDRESS. The symbol "ovladr" is EQUated to the
+address of "LNKFLG" in the system-@|independent module, as the starting address
+of the overlay (7000H for version @value(-cpmversion)). You'll need to know
+this value if you're building the overlay with M80/L80. You won't normally
+need to change this value.
+
+Second, the assembler being used. Again, define one of MAC80, M80, and LASM
+to be TRUE to select it, and define the others to be FALSE. The two modules
+(system-@|independent and system-@|dependent) do not need to be built with the
+same assembler.
+
+Third, the system configuration. Locate your system in tables
+@ref<-cpmsystems1> and @ref<-cpmsystems2>, then define the appropriate symbol
+TRUE, and the rest FALSE. If the system comes with a builtin console terminal,
+define all the terminal switches FALSE. If the system uses an external
+terminal as the console, locate the terminal in table @ref<-cpmterms> and
+define the appropriate symbol TRUE, and the remainder FALSE. If the terminal
+is not listed in table @ref<-cpmterms>, use the CRT switch; in this case, VT52
+emulation is not supported.
+
+In addition, there are a few general and system-@|specific symbols which may
+be altered to fit your system:
+@begin<description>
+APSLOT@\For Apple with 6551 ACIA, defines the slot number of the serial card
+
+CPUSPD@\Processor speed in units of 100KHz (currently used only for bbII and
+ kpII for timing loops)
+
+TAC@\For users connecting through ARPAnet TACs: set to TRUE if you wish the
+default TACTRAP status to be ON. (This may be overridden with the SET TACTRAP
+command). If you're not connecting through a TAC, set tac to FALSE and ignore
+tacval.
+
+TACVAL@\For ARPANET TAC users: defines the default TAC intercept character
+(may be overridden with the SET TACTRAP command).
+@end<description>
+
+If you are just assembling an existing configuration, you'll need to edit
+@Q(CPXTYP.ASM) only. If you are adding support for a new system, you should
+not modify @Q(CPSDEF.ASM) or @Q(CPXLNK.ASM); if you do, you'll have to change
+the system-@|independent module also. Eventually, @Q(CPXSYS.ASM) will be split
+into separate files, each of which will generate one or more related systems.
+When this happens, you'll want to pick the one closest to your system to use as
+a starting point.
+
+After editing @q<CPXTYP.ASM> as necessary, assemble and link the overlay as
+follows:
+@begin<itemize>
+With M80 (where "xxxx" is the hex value of ovladr from @q<CPXLNK.ASM>):
+@begin<example>
+A>@ux<m80 cpxtyp=cpxtyp.asm>
+A>@ux<l80 /p:xxxx,cpxtyp,cpxtyp/n/x/e>
+@end<example>
+
+With LASM:
+@begin<example>
+A>@ux<lasm cpxtyp>
+@end<example>
+@end<itemize>
+
+With an IBM PC or clone using the Z80MU softwrae, follow the instructions
+as if you were using a real CP/M system.
+
+The overlay (@q(CPXTYP.HEX)) may then be merged with the system-@|independent
+module as described above (creating a runnable Kermit from the distribution
+kit).
+
+If you are using the Z80MU
+development system on a PC, and already have a running
+Kermit-80 v3.9 or later, you can merge the two @q<.HEX> files into a @q<.COM>
+file with LINK80 (TOPS 10/20), MLOAD (Z80MU), L80 (Z80MU), and
+transfer the new @q<.COM> file to your micro with Kermit:
+@begin<itemize>
+Z80MU on a PC and MLOAD:
+@begin<example>
+@@@ux<MLOAD KERNEW=CPSKER,CPXTYP>
+@end<example>
+
+Z80MU on a PC and C80:
+@begin<example>
+@@@ux<L80 /P:xxxx,CPXTYP,CPXTYP/N/X/E>
+@end<example>
+@end<itemize>
+producing @Q(KERNEW.COM).
+
+@begin<table,leftmargin +0,use format>
+@tabclear()@tabset(1.5in)
+@bar()
+@blankspace(1)
+@u(Symbol)@\@ux<Terminal description>
+crt@\Basic CRT, no cursor positioning
+adm3a@\ADM3A Display or lookalike
+adm22@\ADM22 Display or lookalike
+am230@\Ampro 230
+h1500@\Hazeltine 1500
+smrtvd@\Netronics Smartvid-80
+soroq@\Soroq IQ-120
+tvi912@\TVI 912
+tvi925@\TVI 925, Freedom 100
+vt52@\VT 52 or VT52 emulator such as Heath H19, H29, etc.
+vt100@\VT 100 or emulator (most ANSI terminals should work)
+wyse@\Wyse 100
+@caption<Terminals known to Kermit-80>
+@tag<-cpmterms>
+@bar()
+@end<table>
+
+@section<Adding Support For A New System>
+Kermit-80 is built from a common set of source files; the system-@|dependent
+module makes heavy use of conditional assembly (this complication will be
+removed in future releases). The system dependencies arise from attempts to
+answer some questions:
+@begin<enumerate>
+@i<What kind of terminal is to be supported?>
+@blankspace(1)
+For many micros, the console is an integral part of the system, but
+others can use an external terminal. In either case, the commands
+to manipulate the screen (position the cursor, erase the screen, etc)
+must be defined.
+
+@i<How is the serial line accessed?>
+@blankspace(1)
+For systems supporting the IOBYTE function, this is straightforward; the
+symbol "IOBYT" is defined TRUE. If the serial line is accessed with IN and OUT
+instructions, it may be possible to use the simple I/O routines provided. In
+this case, the symbol "INOUT" is defined TRUE, the MNPORT and MNPRTS are
+defined to be the data and control addresses, respectively, and bit masks for
+testing for "input data available" and "output buffer empty" must be defined.
+If the interface is strange, leave IOBYT and INOUT set to FALSE, and provide
+the I/O routines.
+
+@i<What initialization is necessary?>
+@blankspace(1)
+You may wish to set the baud rate or configure the serial line at
+startup. Examples for a number of devices are present.
+
+@i<What special features are to be supported?>
+@blankspace(1)
+You may want to provide the capability to select one of several serial lines
+with the SET PORT command, or to change the speed of the serial line with the
+SET SPEED command. To do this, you'll need to build a command table, using
+the systems already supported as examples. The ability to send a BREAK signal
+is desirable. Again, examples for several different interfaces (ACIA, SIO,
+etc) are present.
+
+@i<Do you want to design an external terminal type?>
+@blankspace(1)
+There is a jump entry in the overlay file to allow users to add their
+own termainl emulator. If you write the code for such an emulator,
+you must load this jump address with the address of your emulator, and
+SET TERMINAL EXTERNAL from within Kermit. All characters will be passed
+to this routine during connect mode.
+@end<enumerate>
+
+@section<Notes on New Features in Kermit-80 Version 4>
+
+@begin<itemize>
+@i(Debugging aids:)
+SET DEBUG ON will add two fields to the SEND/RECEIVE display, labelled "Spack"
+and "Rpack". These display the last packet sent and received. Of course, this
+slows down the transfer, especially if the console is an external terminal.
+SET DEBUG OFF removes these fields. The VERSION command displays the name,
+edit number, and edit date of several of the modules that make up Kermit.
+
+@index<ARPAnet>@index<TAC> @index<Attention Character>
+@index<Intercept Character>
+@i(TAC support:) ARPAnet TACs (and many other communication devices such as
+terminal concentrators, modems, port contention units, network PADs, etc) use a
+printing character (like "@@") as an intercept character, to allow commands to
+be issued to the TAC, or modem, etc. In order to send this character to the
+host, it must be typed twice. The command "SET TAC CHARACTER" to Kermit
+enables the "TACtrap" and asks the user to specify the TAC intercept character.
+This character will be automatically doubled when it appears in Kermit protocol
+messages (sent by the SEND or RECEIVE commands) or when it appears in a file
+being sent with the TRANSMIT command. It is not automatically doubled when
+typed by the user in CONNECT mode. "SET TAC ON" enables the TACtrap but does
+not change the TAC intercept character, which is initially "@@". "SET TAC OFF"
+disables the TACtrap.
+
+@i(File buffering:)
+Previous versions of Kermit-80 buffered only one sector (128 bytes) at a time
+during file transfer operations. This version buffers 16Kbytes at a time,
+reducing the number of times the floppy drive must be spun up and down, and
+increasing the effective throughput of the link. If the disk transfer rate is
+too slow, however, the remote Kermit may time out and retransmit packets. This
+will show up on the screen in the "Retries:" field; if this occurs after disk
+activity, you may want to increase the timeout value on the remote Kermit,
+SET BUFFER <new value> while in Kermit,or
+reassemble Kermit with a smaller value for MAXSEC (in @Q(CPSDEF.ASM))
+This buffer is also used by the TRANSMIT command; the log file
+enabled by the LOG command is still written a sector at a time.
+@end<itemize>
+
+@Comment<for Assembling Kermit-80)
+
+@section<Specification for Kermit-80 System Dependent Modules>
+
+This section is intended for people wanting to implement their own
+versions of Kermit-80 for computers not already defined.
+
+The system independent code communicates to routines for a specific
+system through a set of tables. These tables are defined in
+CPXLNK.ASM, and should not be modified between revisions of Kermit. If
+an entry is added or deleted, then the whole of Kermit-80
+needs reassembling. Make sure that the changes to CPXLNK.ASM are
+duplicated in CPSUTL.ASM, which has the system independent
+equivalent of CPXLNK.ASM.
+
+The following entries/definitions apply to revision 4.09. There
+have been three additional entries since revision 4.05.
+
+The table is split into three sectors; The first section defines
+two byte "words" giving 16 bits of interface data; The second set is a
+set of jumps to various functions, and finally the third set
+a set of pure data bytes.
+
+
+@subsection(Interface Data.)
+
+@begin<description, spread 0, indent -8>
+
+@ux<LNKFLG>@\Must be first entry in overlay at overlay address. Is a two
+byte address giving the size of the linkage table. This is used to
+check for consistency of overlay's
+@blankspace(1)
+
+@ux<ENTSIZE>@\Length of entry table, also used for consistency checking after
+the overlay. Currently 6
+@blankspace(1)
+
+@ux<SYSEDT>@\The address of a dollar-terminated string giving the overlay
+revision level and date. Points to a string like:
+CPXSYS.ASM(33) 4-JUN-1986$
+@blankspace(1)
+
+@ux<FAMILY>@\The address of a dollar-terminated string giving the Family overlay
+revision level and date. If the system is in CPXSYS.ASM rather than a
+particular Family overlay, it is simply a pointer to $
+@end<description>
+@blankspace(1)
+
+@subsection(Jump Table.)
+This is split into three main sectors-
+@blankspace(1)
+
+@begin(enumerate)
+Input/Output routines
+
+Screen formatting routines
+
+other system dependent routines
+@end<enumerate>
+
+
+@begin<description, spread 0, indent -14>
+@blankspace(1)
+@ux<SELMDM>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\selects the modem port. Most systems do nothing and
+simply return. HL,DE and BC registers preserved.
+
+@blankspace(1)
+@ux<OUTMDM>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Output the character in E register to the communications
+line. BC,DE,HL registers preserved.
+
+@blankspace(1)
+@ux<INPMDM>
+
+@i<Parameters>@\None
+
+@i<Returns>@\Accumulator either 0 or character from comms line if available
+
+@i<Description>@\Check modem for character and if so, return it in A.
+HL,DE,BC registers preserved, flags
+and accumulator lost.
+
+@blankspace(1)
+@ux<FLSMDM>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Clear any pending characters in the input buffer from the
+modem. No registers are preserved.
+
+
+@blankspace(1)
+@ux<SELCON>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Select the console. This is a null subroutine for most
+systems, but for IOBYTE systems selects the console.
+
+@blankspace(1)
+@ux<OUTCON>
+
+@i<Parameters>@\Character in E
+
+@i<Returns>@\None
+
+@i<Description>@\Send the character in E to the console. Any quirks of
+system responding in an odd manner should be handled. No
+registers preserved.
+
+
+@blankspace(1)
+@ux<INPCON>
+
+@i<Parameters>@\None
+
+@i<Returns>@\Zero or character in A.
+
+@i<Description>@\Get a character from the console or return a null if
+no character to be read. No registers are preserved.
+
+
+@blankspace(1)
+@ux<OUTLPT>
+
+@i<Parameters>@\Character in E
+
+@i<Returns>@\None
+
+@i<Description>@\Send the character in E to the printer. The console is
+selected. Only DE registers are preserved
+
+
+@blankspace(1)
+@ux<LPTSTAT>
+
+@i<Parameters>@\None
+
+@i<Returns>@\00H or 0FFH in A register
+
+@i<Description>@\Test the printer to see if it is ready to receive a
+character to be printed. If a 00H is returned then the printer is
+ready to receive a character.
+
+
+@blankspace(1)
+@ux<EXTTER>
+
+@i<Parameters>@\Character to be sent to the user supplied terminal emulator
+in the E register
+
+@i<Returns>@\None
+
+@i<Description>@\If the user has supplied a terminal emulator in the overlay
+code, EXTTER will be a JMP <non zero address>. If SET TERMINAL EXTERNAL
+has been set, all caharcters will be passed verbatim to this terminal
+emulator. If there is no external emulator, this code will never be called.
+The user should reset terminal conditions on initialisation of both
+ the system and before CONNECT. All registers should be preserved.
+
+
+@blankspace(1)
+@ux<XBDOS>
+
+@i<Parameters>@\Any required for calling BDOS
+
+@i<Returns>@\Any expected from the called BDOS routine
+
+@i<Description>@\This is an alternative entry to BDOS. This entry will also
+check the printer status etc. For full details see the code for the
+BDOS trap in CPSUTL.ASM.
+@blankspace(1)
+2b)
+@blankspace(1)
+@ux<CLRLIN>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Clear the current line on the terminal
+
+
+
+@blankspace(1)
+@ux<CLRSPC>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Erase the current position (after a backspace)
+
+
+
+@blankspace(1)
+@ux<DELCHR>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Make delete (7FH) look like a backspace. Some systems
+do a backspace, space, backspace automatically others have to simulate it
+
+@blankspace(1)
+@ux<CLRTOP>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Clear the screen and place the cursor at the top LH corner
+
+
+
+@blankspace(1)
+@ux<SCREND>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Place the cursor on the line for the Kermit-80 prompt
+after a file transfer. (Usually line 13)
+
+
+
+@blankspace(1)
+@ux<SCRERR>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Move cursor to the error message field on the
+file transfer format screen
+
+
+
+@blankspace(1)
+@ux<SCRFLN>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Move the cursor to the filename field
+
+
+
+@blankspace(1)
+@ux<SCRNP>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Move the cursor to the packet count field
+
+
+
+@blankspace(1)
+@ux<SCRNRT>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Move cursor to the retry count field
+
+
+
+@blankspace(1)
+@ux<SCRST>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Move cursor to the status field
+
+
+
+@blankspace(1)
+@ux<RPPOS>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Move to the receive packet field (debugging use)
+
+
+
+@blankspace(1)
+@ux<SPPOS>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Move to the send packet field (for debugging use)
+@blankspace(1)
+2c)
+@blankspace(1)
+@ux<SYSINIT>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Initialize the system specific items. No registers
+are preserved. Any initialization is done once only when Kermit-80
+is first loaded.
+
+
+
+@blankspace(1)
+@ux<SYSEXIT>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Program termination. De-initialize anything
+in preparation for a return to CP/M
+
+
+
+@blankspace(1)
+@ux<SYSCON>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Initialize anything before entering the connect state.
+
+
+
+@blankspace(1)
+@ux<SYSCLS>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\System dependent close routine when exiting connect state
+
+
+
+@blankspace(1)
+@ux<SYSINH>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\Help routine to test for any extensions to the escape menu
+during the connect state. If a system has any special feature it
+can use during connect mode, then it can be tested as
+<escape-character>xxx. This entry is a string for printing
+to the console for an <escape-character>? Often used for
+generating breaks or controlling a modem.
+
+
+
+@blankspace(1)
+@ux<SYSINT>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\This is a test-and-jump on receipt of an escape
+sequence not understood by Kermit-80. If the character in A is
+not recognized by your version of Kermit=80, do a rskip
+
+
+
+@blankspace(1)
+@ux<SYSFLT>
+
+@i<Parameters>@\Character in E
+
+@i<Returns>@\Character in E. Either a 00H or anything else in A
+
+@i<Description>@\Test the character in E. If it may not be printed to
+the console, set A to zero. All other registers preserved.
+
+@\NB <XON>,<XOFF>,<DEL>,<NULL> are always rejected.
+
+
+@blankspace(1)
+@ux<SYSBYE>
+
+@i<Parameters>@\None
+
+@i<Returns>@\None
+
+@i<Description>@\System dependent processing for the BYE command. (eg hang
+up the phone)
+
+
+
+@blankspace(1)
+@ux<SYSSPD>
+
+@i<Parameters>@\Value from table in DE
+
+@i<Returns>@\None
+
+@i<Description>@\The system dependent code for baud rate change. DE
+contains the two byte value from the baud rate table. This value is
+also stored in "SPEED"
+
+
+
+@blankspace(1)
+@ux<SYSPRT>
+
+@i<Parameters>@\Value in DE
+
+@i<Returns>@\None
+
+@i<Description>@\The system dependent code for setting the port.
+The parameters are passed in DE, which are obtained from the port tables
+
+
+
+@blankspace(1)
+@ux<SYSSCR>
+
+@i<Parameters>@\String pointer in DE
+
+@i<Returns>@\None
+
+@i<Description>@\Setup the screen display for file transfer. The Kermit
+version string is pointed to by DE. If the terminal is not capable of
+cursor addressing (eg dumb glass TTY) then only the screen is cleared
+and the version string is printed.
+
+
+
+@blankspace(1)
+@ux<CSRPOS>
+
+@i<Parameters>@\Row number in B, column number in C
+
+@i<Returns>@\None
+
+@i<Description>@\Move the cursor to row B, column C where B=1,C=1 is top
+LH corner of screen. The routine should first end a "cursor
+position" leading string (up to four characters) then use the
+parameters given to complete the versions cursor position function
+
+
+
+@blankspace(1)
+@ux<SYSSPC>
+
+@i<Parameters>@\None
+
+@i<Returns>@\K bytes free in HL
+
+@i<Description>@\Get the amount of free disk space on the selected disk
+drive. This could be in the system independent code. Automatically
+detects CP/M V2.2 or V3.0. No registers saved.
+
+
+
+@blankspace(1)
+@ux<MOVER>
+
+@i<Parameters>@\Source Pointer in HL
+
+@\Destination Pointer in DE
+
+@\Byte count in BC
+
+@i<Returns>@\None
+
+@i<Description>@\Move (BC) bytes from (HL) to (DE) Z80 based systems
+do an LDIR, while 8080 systems do it as a loop. All registers destroyed
+
+@blankspace(1)
+@ux<PRTSTR>
+
+@i<Parameters>@\$ terminated string pointed to by DE
+
+@i<Returns>@\None
+
+@i<Description>@\Print the string onto the console.
+@blankspace(1)
+3)
+@blankspace(1)
+@tabclear()
+@tabset(2 inches, 1.0 inches, 1.0 inches)
+
+@blankspace(1)
+@ux<PTTAB>@\WORD@\Points to VT52 equivalent escape sequences.
+
+@blankspace(1)
+@ux<SPDTAB>@\WORD@\Address of baud-rate command table, or 0 if table does
+not exist
+
+@blankspace(1)
+@ux<SPDHLP>@\WORD@\Address of baud-rate help table, or 0 if SET SPEED
+is not supported.
+
+@blankspace(1)
+@ux<PRTTAB>@\WORD@\Address of port command table or 0 if SET PORT is not supported.
+
+@blankspace(1)
+@ux<PRTHLP>@\WORD@\Address of port help table or 0 if SET PORT is not supported
+
+@blankspace(1)
+@ux<TIMOUT>@\BYTE@\FUZZY-TIMER. Set to value suitable to your
+system (depends largely on CPU speed)
+
+@blankspace(1)
+@ux<VTFLG>@\BYTE@\VT52 emulation flag. Set to 0 if terminal
+emulates a VT52, 01 if emulation is required, or 0FFH if emulations not
+possible (eg for "CRT")
+
+@blankspace(1)
+@ux<ESCCHR>@\BYTE@\default escape character-usually control-] but
+sometimes control-\
+
+@blankspace(1)
+@ux<SPEED>@\WORD@\Storage space for baud-rate. Set to 0FFFFH as baud
+rates are initially unknown. Note that the STATUS routine only looks at the
+first (least significant) byte.
+
+@blankspace(1)
+@ux<PORT>@\WORD@\Storage space for port. Set to 0FFFFH as ports may
+not be implemented, and is initially unknown
+
+@blankspace(1)
+@ux<PRNFLG>@\BYTE@\Printer copy flag-if O no copy. Anything else =>
+copy to printer
+
+@blankspace(1)
+@ux<DBGFLG>@\BYTE@\Debugging flag. If O then no debugging to be done.
+(ie writing of debugging info during a file transfer)
+
+@blankspace(1)
+@ux<ECOFLG>@\BYTE@\Local ECHO flag (default is off)
+
+@blankspace(1)
+@ux<FLWFLG>@\BYTE@\File warning flag. If set to 1 will not
+overwrite files already existing on disk with some-named files
+being transferred
+
+@blankspace(1)
+@ux<IBMFLG>@\BYTE@\IBM system is the host-assume IBM file transfers etc
+
+@blankspace(1)
+@ux<CPMFLG>@\BYTE@\Flag indicating type of CP/M files to be transferred.
+Default setting - DEFAULT
+
+@blankspace(1)
+@ux<PARITY>@\BYTE@\Type of parity in use
+
+@\ 0 = Even parity
+
+@\ 3 = Mark parity
+
+@\ 6 = No parity (8th bit is data)
+
+@\ 9 = Odd parity
+
+@\12 = Space parity
+
+@blankspace(1)
+@ux<SPSIZ>@\BYTE@\Size of send packet
+
+@blankspace(1)
+@ux<RPSIZ>@\BYTE@\Size of receive packet
+
+@blankspace(1)
+@ux<STIME>@\BYTE@\Send timer (time-out)
+
+@blankspace(1)
+@ux<RTIME>@\BYTE@\Receive timer (time-out)
+
+@blankspace(1)
+@ux<SPAD>@\BYTE@\Send Padding (default=0)
+
+@blankspace(1)
+@ux<RPAD>@\BYTE@\Receive Padding (default=0)
+
+@blankspace(1)
+@ux<SPADCH>@\BYTE@\Send Padding character (default=NULL)
+
+@blankspace(1)
+@ux<RPADCH>@\BYTE@\Receive Padding character (default=NULC)
+
+@blankspace(1)
+@ux<SEOL>@\BYTE@\Send EOL character (default=CR)
+
+@blankspace(1)
+@ux<REOL>@\BYTE@\Receive EOL character (default=CR)
+
+@blankspace(1)
+@ux<SQUOTE>@\BYTE@\Send quote character (default=#)
+
+@blankspace(1)
+@ux<RQUOTE>@\BYTE@\Receive quote character (default=#)
+
+@blankspace(1)
+@ux<CHKTYP>@\BYTE@\Ascii value of checktype
+
+@\31H="1"=checktype1 (6bits)
+
+@\32H="2"=checktype2 (12bits)
+
+@\33H="3"=CCITT checksum (CRC)
+
+@\Default is 31H("1")
+
+@blankspace(1)
+@ux<TACFLG>@\BYTE@\If set to on (non zero) send the TACCHR twice. This is
+for ARPA TAC users, where the TAC swallows one "wakeup" character. If
+sent twice the TAC will pas one on and go back to normal mode.
+
+@blankspace(1)
+@ux<TACCHR>@\BYTE@\Desired TAC character. It is ignored if TAC trapping
+is turned off. Value to send twice if TAC interception is set on.
+Default=0, but set to commercial AT if the conditional assembly flag TAC
+is set true
+
+@blankspace(1)
+@ux<BUFADR>@\WORD@\Address of Multi-Sector buffering for I/O
+
+@blankspace(1)
+@ux<BUFSEC>@\BYTE@\The number of bytes the big buffers can hold.
+Default is 1. (0=256 sectors).
+
+@blankspace(1)
+@ux<FFUSSY>@\BYTE@\Indicates if funny characters may be used in CP/M
+file names (eg @q{<>.,;?#[]}) If zero, allow anything. Default is nonzero.
+
+@blankspace(1)
+@ux<BMAX>
+@\SPACE:(2bytes) Highest block number on selected disk drive
+
+@blankspace(1)
+@ux<BMASK>@\SPACE:(1byte) (Records/block)-1
+
+@blankspace(1)
+@ux<BSHIFTF>@\SPACE:(1byte) Number of shifts to multiply by rec.block
+
+@blankspace(1)
+@ux<NNAMS>@\SPACE:(1byte) Counter for file-names per line
+
+@end<description>
+
+
+
+@section<Future Work>
+
+Work that needs to be done in future releases includes:
+@begin<itemize>
+Merge in support for additional CP/M-80 systems, particularly those for
+which support was recently added to the monolithic v3.x source.
+
+Break up @q<CPXSYS> into discrete source files, one for each system.
+These source files should serve as simple models for adding support for
+new systems to Kermit-80 -- only the very basic screen definitions, flags,
+i/o primitives, initializations, and so forth should appear in each
+system-@|dependent file.
+
+Addition of missing features -- compression of repeated characters during
+packet transmission, transmission of file attributes (particularly size, so
+that "percent done" can be displayed for both incoming and outbound files),
+command macros, more advanced login scripts, remote operation and server mode,
+etc etc. Any offers??
+@end<itemize>
diff --git a/doc/cpkerm.pdf b/doc/cpkerm.pdf
new file mode 100644
index 0000000..d41b13c
--- /dev/null
+++ b/doc/cpkerm.pdf
Binary files differ
diff --git a/doc/cpkerm.ps b/doc/cpkerm.ps
new file mode 100644
index 0000000..a4b33b6
--- /dev/null
+++ b/doc/cpkerm.ps
@@ -0,0 +1,6971 @@
+%!PS-Adobe-2.0
+%%Title: cpkhdr.mss
+%%DocumentFonts: (atend)
+%%Creator: Frank da Cruz,718W,0000, and Scribe 7(1700)
+%%CreationDate: 25 May 1991 14:10
+%%Pages: (atend)
+%%EndComments
+% PostScript Prelude for Scribe.
+/BS {/SV save def 0.0 792.0 translate .01 -.01 scale} bind def
+/ES {showpage SV restore} bind def
+/SC {setrgbcolor} bind def
+/FMTX matrix def
+/RDF {WFT SLT 0.0 eq
+ {SSZ 0.0 0.0 SSZ neg 0.0 0.0 FMTX astore}
+ {SSZ 0.0 SLT neg sin SLT cos div SSZ mul SSZ neg 0.0 0.0 FMTX astore}
+ ifelse makefont setfont} bind def
+/SLT 0.0 def
+/SI { /SLT exch cvr def RDF} bind def
+/WFT /Courier findfont def
+/SF { /WFT exch findfont def RDF} bind def
+/SSZ 1000.0 def
+/SS { /SSZ exch 100.0 mul def RDF} bind def
+/AF { /WFT exch findfont def /SSZ exch 100.0 mul def RDF} bind def
+/MT /moveto load def
+/XM {currentpoint exch pop moveto} bind def
+/UL {gsave newpath moveto dup 2.0 div 0.0 exch rmoveto
+ setlinewidth 0.0 rlineto stroke grestore} bind def
+/LH {gsave newpath moveto setlinewidth
+ 0.0 rlineto
+ gsave stroke grestore} bind def
+/LV {gsave newpath moveto setlinewidth
+ 0.0 exch rlineto
+ gsave stroke grestore} bind def
+/BX {gsave newpath moveto setlinewidth
+ exch
+ dup 0.0 rlineto
+ exch 0.0 exch neg rlineto
+ neg 0.0 rlineto
+ closepath
+ gsave stroke grestore} bind def
+/BX1 {grestore} bind def
+/BX2 {setlinewidth 1 setgray stroke grestore} bind def
+/PB {/PV save def newpath translate
+ 100.0 -100.0 scale pop /showpage {} def} bind def
+/PE {PV restore} bind def
+/GB {/PV save def newpath translate rotate
+ div dup scale 100.0 -100.0 scale /showpage {} def} bind def
+/GE {PV restore} bind def
+/FB {dict dup /FontMapDict exch def begin} bind def
+/FM {cvn exch cvn exch def} bind def
+/FE {end /original-findfont /findfont load def /findfont
+ {dup FontMapDict exch known{FontMapDict exch get} if
+ original-findfont} def} bind def
+/BC {gsave moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath clip} bind def
+/EC /grestore load def
+/SH /show load def
+/MX {exch show 0.0 rmoveto} bind def
+/W {0 32 4 -1 roll widthshow} bind def
+/WX {0 32 5 -1 roll widthshow 0.0 rmoveto} bind def
+/RC {100.0 -100.0 scale
+612.0 0.0 translate
+-90.0 rotate
+.01 -.01 scale} bind def
+/URC {100.0 -100.0 scale
+90.0 rotate
+-612.0 0.0 translate
+.01 -.01 scale} bind def
+/RCC {100.0 -100.0 scale
+0.0 -792.0 translate 90.0 rotate
+.01 -.01 scale} bind def
+/URCC {100.0 -100.0 scale
+-90.0 rotate 0.0 792.0 translate
+.01 -.01 scale} bind def
+%%EndProlog
+%%Page: 0 1
+BS
+0 SI
+15 /Times-Bold AF
+15510 28325 MT
+(CP/M-80 KERMIT VERSION 4.11 USER GUIDE)SH
+10 /Times-Roman AF
+29402 32237 MT
+(C. Gianone)SH
+20860 34629 MT
+(Columbia University Center for Computing Activities)SH
+25862 35825 MT
+(New York, New York 10027)SH
+/Times-Italic SF
+28777 39413 MT
+(April 23, 1991)SH
+/Times-Roman SF
+26610 44197 MT
+(Copyright \050C\051 1981,1991)SH
+20111 45393 MT
+(Trustees of Columbia University in the City of New York)SH
+/Times-Italic SF
+18429 47785 MT
+(Permission is granted to any individual or institution to use, copy,)SH
+18178 48981 MT
+(or redistribute this document so long as it is not sold for profit, and)SH
+23291 50177 MT
+(provided this copyright notice is retained.)SH
+ES
+%%Page: 1 2
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1. CP/M-80 KERMIT)SH
+10 /Times-Italic AF
+52275 XM
+(Page 1)SH
+46800 50 8280 5709 UL
+16 /Times-Bold AF
+8280 8272 MT
+(1. CP/M-80 KERMIT)SH
+10 /Times-Italic AF
+8280 10566 MT
+(Program:)SH
+/Times-Roman SF
+14280 XM
+(Mike Freeman, Bonneville Power Administration, Vancouver, WA, USA,)
+139 W( with contributions from)138 W
+14280 11671 MT
+(many others.)SH
+/Times-Italic SF
+8280 13881 MT
+(Language:)SH
+/Times-Roman SF
+14280 XM
+(8080 Assembler, LASM, M80, or MAC80)SH
+/Times-Italic SF
+8280 16091 MT
+(Version:)SH
+/Courier SF
+14280 XM
+(4.11)SH
+/Times-Italic SF
+8280 18301 MT
+(Date:)SH
+/Times-Roman SF
+14280 XM
+(April 1, 1991)SH
+/Times-Italic SF
+8280 20511 MT
+(Documentation:)SH
+/Times-Roman SF
+15279 XM
+(Christine Gianone, Columbia University, with contributions from many others.)SH
+/Times-Italic SF
+8280 22903 MT
+(KERMIT-80 Capabilities At A Glance:)SH
+/Times-Roman SF
+9280 24513 MT
+(Local operation:)SH
+34480 XM
+(Yes)SH
+9280 25618 MT
+(Remote operation:)SH
+34480 XM
+(Partial, Auto-receive only)SH
+9280 26723 MT
+(Login scipts:)SH
+34480 XM
+(Yes, limited)SH
+9280 27828 MT
+(Transfer text files:)SH
+34480 XM
+(Yes)SH
+9280 28933 MT
+(Transfer binary files:)SH
+34480 XM
+(Yes)SH
+9280 30038 MT
+(Wildcard send:)SH
+34480 XM
+(Yes)SH
+9280 31143 MT
+(File transfer interruption:)SH
+34480 XM
+(Yes)SH
+9280 32248 MT
+(Filename collision avoidance:)SH
+34480 XM
+(Yes)SH
+9280 33353 MT
+(Can time out:)SH
+34480 XM
+(Yes)SH
+9280 34458 MT
+(8th-bit prefixing:)SH
+34480 XM
+(Yes)SH
+9280 35563 MT
+(Repeat count prefixing:)SH
+34480 XM
+(No)SH
+9280 36668 MT
+(Alternate block checks:)SH
+34480 XM
+(Yes)SH
+9280 37773 MT
+(Terminal emulation:)SH
+34480 XM
+(Yes, VT52 and others)SH
+9280 38878 MT
+(Communication settings:)SH
+34480 XM
+(Yes)SH
+9280 39983 MT
+(Support for dial-out modems:)SH
+34480 XM
+(No)SH
+9280 41088 MT
+(Transmit BREAK:)SH
+34480 XM
+(Yes; most versions)SH
+9280 42193 MT
+(IBM communication:)SH
+34480 XM
+(Yes)SH
+9280 43298 MT
+(Transaction logging:)SH
+34480 XM
+(No)SH
+9280 44403 MT
+(Debug logging:)SH
+34480 XM
+(No)SH
+9280 45508 MT
+(Session logging:)SH
+34480 XM
+(Yes)SH
+9280 46613 MT
+(Raw file transmit:)SH
+34480 XM
+(Yes)SH
+9280 47718 MT
+(Act as server:)SH
+34480 XM
+(No)SH
+9280 48823 MT
+(Talk to server:)SH
+34480 XM
+(Yes)SH
+9280 49928 MT
+(Advanced commands for servers:)SH
+34480 XM
+(Yes)SH
+9280 51033 MT
+(Command/init files:)SH
+34480 XM
+(Yes)SH
+9280 52138 MT
+(Command macros:)SH
+34480 XM
+(No)SH
+9280 53243 MT
+(Local file management:)SH
+34480 XM
+(Yes)SH
+9280 54348 MT
+(Handle file attributes:)SH
+34480 XM
+(No)SH
+9280 55453 MT
+(Long packets:)SH
+34480 XM
+(No)SH
+9280 56558 MT
+(International Character Sets:)SH
+34480 XM
+(No)SH
+9280 57663 MT
+(Sliding Windows:)SH
+34480 XM
+(No)SH
+9280 58768 MT
+(Printer control:)SH
+34480 XM
+(Yes, limited)SH
+14 /Times-Bold AF
+8280 62370 MT
+(1.1. Credits)SH
+10 /Times-Roman AF
+8280 64488 MT
+(CP/M Kermit is the first)
+170 W( of all the Kermit programs. It was originally written by Bill Catchings of Columbia)171 W
+8280 65684 MT
+(University in 1981.)
+119 W( Over)
+486 W( the years, contributions have been added by many people, including Charles Carvalho)118 W
+8280 66880 MT
+(\050ACC\051, Bernie Eiben \050DEC\051, Nick Bush \050Stevens Institute of Technology\051, John Bray)
+109 W( \050University of Tennessee\051,)110 W
+8280 68076 MT
+(Bruce Tanner \050Cerritos College\051, Greg Small \050University)
+99 W( of California at Berkeley\051, Kimmo Laaksonen \050Helskini)98 W
+8280 69272 MT
+(University of Technology\051, Bertil Schou \050Loughborough)
+391 W( University\051, Jon Warbrick \050Plymouth Polytechnic)392 W
+8280 70468 MT
+(University\051, Brian Robertson \050Aberdeen University\051, A.J. Cole)
+99 W( \050Leeds University\051, John Shearwood \050Birmingham)98 W
+8280 71664 MT
+(University\051, Tony Addyman \050Salford University\051,)
+180 W( Godfrey Nix and Martin Carter \050Nottingham University\051, Ian)181 W
+ES
+%%Page: 2 3
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 2)SH
+12 /Times-Bold AF
+30586 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.1)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+6120 7886 MT
+(Young \050Edinburgh University\051, Chris Miles \050Manchester University\051,)
+144 W( Richard Russell, Dave Roberts, and many,)143 W
+6120 9082 MT
+(many others.)SH
+6120 11474 MT
+(Version 4.11 is the work of Mike Freeman of the Bonneville Power Administration in Vancouver, WA, USA, with)49 W
+6120 12670 MT
+(assistance from Russell Lang of Monash University in Australia, Jay S Rouman of Mt Pleasant MI, and others.)SH
+14 /Times-Bold AF
+6120 16272 MT
+(1.2. What's New)SH
+10 /Times-Roman AF
+6120 18390 MT
+(Features added since version 4.09 include:)SH
+/Symbol SF
+7910 20295 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(SET COLLISION {BACKUP/DISCARD/OVERWRITE/RENAME})SH
+/Symbol SF
+7910 22284 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(SET INCOMPLETE-FILES {DISCARD/KEEP})SH
+/Symbol SF
+7910 24273 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Many REMOTE commands, including some REMOTE SET commands)SH
+/Symbol SF
+7910 26262 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(RENAME command to rename CP/M files from within Kermit-80)SH
+/Symbol SF
+7910 28251 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(SET RECEIVE/SEND PACKET-LENGTH nn \050nn <= 94\051)SH
+/Symbol SF
+7910 30240 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(SET AUTORECEIVE)
+122 W( ON now implies that Kermit-80 ALWAYS tries to receive more files when a)121 W
+8620 31345 MT
+(RECEIVE transaction has completed. The user can cancel with ^C.)SH
+/Symbol SF
+7910 33334 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(QUIT is now a synonym for EXIT.)SH
+/Symbol SF
+7910 35323 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(STAY is now a synonym for SET NO-EXIT.)SH
+/Symbol SF
+7910 37312 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(CONNECT, RECEIVE and SEND may be abbreviated to C, R and S, respectively.)SH
+/Symbol SF
+7910 39301 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Cancellation of TAKE, TYPE, and PRINT commands from the keyboard.)SH
+/Symbol SF
+7910 41290 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Many bug fixes.)SH
+/Symbol SF
+7910 43279 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Kermit-80 Version 4.11 now supports the Microbee family)
+67 W( of computers \05056K, 64K, 128K and 256K\051)68 W
+8620 44384 MT
+(manufactured by Microbee Systems, Ltd, of Australia.)SH
+/Symbol SF
+7910 46373 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Kermit-80 now supports the Ampro Little Board system.)SH
+14 /Times-Bold AF
+6120 49975 MT
+(1.3. Overview of Kermit Operation)SH
+10 /Times-Roman AF
+6120 52093 MT
+(Use the SET command to)
+210 W( establish necessary communication parameters like SPEED and PARITY. Use the)209 W
+6120 53289 MT
+(CONNECT to establish a terminal connection to the remote computer. If you are dialing out with a modem, type)76 W
+6120 54485 MT
+(the necessary dialing commands to the modem first. The dialing process can be automated to some extent)
+63 W( using a)62 W
+6120 55681 MT
+(TAKE command)
+17 W( file containing INPUT, OUTPUT, and PAUSE commands. Then log in to the remote computer or)18 W
+6120 56877 MT
+(service and conduct a session.)SH
+6120 59269 MT
+(To transfer a text file, start the Kermit)
+137 W( program on the remote computer and tell it to SEND the desired file \050if)136 W
+6120 60465 MT
+(uploading\051 or to)
+49 W( RECEIVE \050if downloading\051. "Escape back" to CP/M Kermit, usually by typing Ctrl-] \050hold down)50 W
+6120 61661 MT
+(the Control key and press the right bracket key\051 and then)
+181 W( type the letter C. At the CP/M Kermit prompt type)180 W
+6120 62857 MT
+(RECEIVE \050if you gave a SEND command to the remote Kermit\051 or SEND)3 W
+/Times-Italic SF
+36349 XM
+(filename)SH
+/Times-Roman SF
+40046 XM
+(\050if you gave a)
+3 W( receive command)4 W
+6120 64053 MT
+(to the remote Kermit\051.)SH
+6120 66445 MT
+(To transfer a binary file, give the command)
+13 W( SET FILE TYPE BINARY to the remote Kermit and SET FILE-MODE)12 W
+6120 67641 MT
+(BINARY to CP/M Kermit before issuing any SEND or RECEIVE commands.)SH
+6120 70033 MT
+(Multiple files of the same type \050text or binary\051)
+107 W( can be transferred in a single operation using "wildcard notation")108 W
+6120 71229 MT
+(\050including special characters like asterisk in the filename\051.)SH
+ES
+%%Page: 3 4
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.3. Overview of Kermit Operation)SH
+10 /Times-Italic AF
+52275 XM
+(Page 3)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+8280 7886 MT
+(When file transfer is complete, CONNECT back to the remote computer, use the)
+73 W( EXIT command to exit from the)72 W
+8280 9082 MT
+(remote Kermit program, finish your work on the remote computer, log out from it, escape back to)
+111 W( CP/M Kermit)112 W
+8280 10278 MT
+(again, and EXIT from CP/M Kermit.)SH
+8280 12670 MT
+(The remote Kermit may also be put into "server)
+57 W( mode" to simplify these operations. Give the SERVER command)56 W
+8280 13866 MT
+(to the remote Kermit, escape back to CP/M Kermit, and)
+89 W( then issue SEND commands to send files \050upload\051, GET)90 W
+/Times-Italic SF
+8280 15062 MT
+(filename)SH
+/Times-Roman SF
+12233 XM
+(commands to receive \050download\051 files, REMOTE commands to request)
+259 W( various other services \050like)258 W
+8280 16258 MT
+(directory listings\051 from the remote Kermit. When you are)
+103 W( done, give a BYE command to terminate your remote)104 W
+8280 17454 MT
+(session, or)
+87 W( a FINISH command to tell the remote Kermit to return to its prompt so you can CONNECT back and)86 W
+8280 18650 MT
+(conduct further business.)SH
+8280 21042 MT
+(That's all there is to it.)SH
+14 /Times-Bold AF
+8280 24644 MT
+(1.4. Summary of CP/M)SH
+10 /Times-Roman AF
+8280 26762 MT
+(There are essentially two versions of CP/M - Versions 2.2 and 3.0 \050sometimes also called CP/M PLUS.\051)SH
+8280 29154 MT
+(CP/M-80 Version 2)95 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2 is run in)
+95 W( a single 64 Kbyte "page", usually the largest amount of memory on Z80 or 8080)96 W
+8280 30350 MT
+(systems. The)
+682 W( BIOS \050Basic input/output system\051, BDOS \050Basic Disk Operating System\051 and)
+216 W( CCP \050Command)215 W
+8280 31546 MT
+(console processor\051 all share memory with)
+58 W( any transient program the user may wish to run. Some basic commands)59 W
+8280 32742 MT
+(are available through the)
+38 W( CCP, like DIR, ERA etc,while others are loaded from disk into the transient program area)37 W
+8280 33938 MT
+(and run as a program, like PIP or STAT.)SH
+8280 36330 MT
+(CP/M Version 3)33 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(0 \050or CP/M PLUS\051 effectively removes the requirement of having the CCP and)
+33 W( BDOS along with)34 W
+8280 37526 MT
+(a chunk of the)
+54 W( BIOS code being resident in the single 64k byte page of memory. This allows even more space for)53 W
+8280 38722 MT
+(programs in the)
+20 W( TPA, but still a little less than the maximum of 64k. It is substantially different from CP/M version)21 W
+8280 39918 MT
+(2)SH
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2, with lots of added features. Kermit-80)
+239 W( uses very few additional version 3)238 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(0 features, and only where)238 W
+8280 41114 MT
+(absolutely necessary.)SH
+8280 43506 MT
+(CP/M file specifications are of the form)SH
+/Courier SF
+24472 XM
+(DEV:XXXXXXXX.YYY)SH
+/Times-Roman SF
+(, where)SH
+/Courier SF
+8280 45297 MT
+(DEV:)SH
+/Times-Roman SF
+16280 XM
+(is a)125 W
+/Times-Italic SF
+18141 XM
+(device name)125 W
+/Times-Roman SF
+(, normally the A:)
+125 W( or)
+SH( B:)
+125 W( floppy.)
+SH( If)
+500 W( omitted, the device name defaults to your)125 W
+16280 46402 MT
+(connected diskette.)SH
+/Courier SF
+8280 47979 MT
+(XXXXXXXX)SH
+/Times-Roman SF
+16280 XM
+(is a)SH
+/Times-Italic SF
+17891 XM
+(filename)SH
+/Times-Roman SF
+21585 XM
+(of up to 8 characters.)SH
+/Courier SF
+8280 49556 MT
+(YYY)SH
+/Times-Roman SF
+16280 XM
+(is the)SH
+/Times-Italic SF
+18669 XM
+(file type)SH
+/Times-Roman SF
+(, up to 3 characters.)SH
+8280 51347 MT
+(File names and file types may contain letters, digits, and some special characters, including dash, dollar)
+90 W( sign, and)89 W
+8280 52543 MT
+(underscore, but no imbedded spaces. Upper and lower case letters are equivalent.)SH
+8280 54935 MT
+("Wildcard" file-group specifications are)
+30 W( permitted in file names and file types \050but not device names\051 within certain)31 W
+8280 56131 MT
+(contexts; a ")134 W
+/Courier SF
+(*)SH
+/Times-Roman SF
+(" matches a whole field, a ")134 W
+/Courier SF
+(?)SH
+/Times-Roman SF
+(" matches)
+518 W( a single character, including space.)
+134 W( Examples:)
+517 W( ")133 W
+/Courier SF
+(*.F??)SH
+/Times-Roman SF
+(")SH
+8280 57327 MT
+(specifies all files whose)24 W
+/Times-Italic SF
+18152 XM
+(types)SH
+/Times-Roman SF
+20481 XM
+(start with F and are 1, 2, or 3 characters long; ")24 W
+/Courier SF
+(F?.*)SH
+/Times-Roman SF
+(" specifies all files whose names)25 W
+8280 58523 MT
+(start with F and are no more than two characters long \050before the trailing spaces\051.)SH
+8280 60915 MT
+(The five CP/M commands are:)SH
+8280 62706 MT
+(DIR)SH
+/Times-Italic SF
+10252 XM
+(file)SH
+/Times-Roman SF
+16280 XM
+(Lists the the names of)
+165 W( the specified files. The default file specification is "*.*". Example:)164 W
+16280 63811 MT
+(")SH
+/Courier SF
+(DIR B:*.FOR)SH
+/Times-Roman SF
+(".)SH
+8280 65388 MT
+(ERA)SH
+/Times-Italic SF
+10530 XM
+(file)SH
+/Times-Roman SF
+16280 XM
+(Erases \050deletes\051 the specified file\050s\051; wildcards allowed.)SH
+8280 66965 MT
+(REN)SH
+/Times-Italic SF
+10530 XM
+(new old)SH
+/Times-Roman SF
+16280 XM
+(Changes the name of a file from)SH
+/Times-Italic SF
+29416 XM
+(old)SH
+/Times-Roman SF
+30944 XM
+(to)SH
+/Times-Italic SF
+31972 XM
+(new)SH
+/Times-Roman SF
+(, e.g.)SH
+16280 68070 MT
+(")SH
+/Courier SF
+(REN NEW.FOR=OLD.FOR)SH
+/Times-Roman SF
+(".)SH
+8280 69647 MT
+(SAVE)SH
+16280 XM
+(Saves the specified number of memory blocks into a file. \050Not on CP/M Plus systems\051)SH
+8280 71224 MT
+(TYPE)SH
+/Times-Italic SF
+11030 XM
+(file)SH
+/Times-Roman SF
+16280 XM
+(Types the specified file on the screen, e.g. ")SH
+/Courier SF
+(TYPE FOO.TXT)SH
+/Times-Roman SF
+(".)SH
+ES
+%%Page: 4 5
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 4)SH
+12 /Times-Bold AF
+30586 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.4)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+6120 7886 MT
+(The most important programs are:)SH
+6120 9677 MT
+(STAT)SH
+14120 XM
+(Gives statistics on disk usage; sets and displays IOBYTE. \050Not on CP/M Plus systems\051)SH
+6120 11254 MT
+(PIP)SH
+14120 XM
+(Peripheral Interchange)
+51 W( Program. Copies files. In response to the ")52 W
+/Courier SF
+(*)SH
+/Times-Roman SF
+(" prompt, give a command)52 W
+556 50 14120 11454 UL
+333 50 18531 11454 UL
+556 50 23553 11454 UL
+14120 12359 MT
+(of the form)SH
+/Courier SF
+16520 14014 MT
+(disk:outfile=disk:infile)SH
+/Times-Roman SF
+14120 15731 MT
+(Wildcards \050")71 W
+/Courier SF
+(*)SH
+/Times-Roman SF
+(" for a whole field or ")71 W
+/Courier SF
+(?)SH
+/Times-Roman SF
+(" for)
+392 W( a letter\051 can be used. Examples:)
+71 W( ")70 W
+/Courier SF
+(A:=B:*.*)SH
+/Times-Roman SF
+(" to)70 W
+14120 16836 MT
+(copy a whole disk, ")56 W
+/Courier SF
+(A:=B:*.FOR)SH
+/Times-Roman SF
+(" to copy all the Fortran programs)
+56 W( from disk B to disk A. If)57 W
+14120 17941 MT
+(the disk specification is omitted, your "connected" disk is assumed. Command line arguments)78 W
+14120 19046 MT
+(are also accepted, e.g. ")SH
+/Courier SF
+(PIP A:=B:*.*)SH
+/Times-Roman SF
+(".)SH
+6120 21438 MT
+(There are equivalent commands for CP/M Version 3.0, but are not loaded into memory in the same)
+4 W( way as for CP/M)5 W
+6120 22634 MT
+(Version 2.2. For further information on CP/M, consult your microcomputer manual or a CP/M handbook.)SH
+14 /Times-Bold AF
+6120 26236 MT
+(1.5. Kermit-80 Description)SH
+10 /Times-Roman AF
+6120 28354 MT
+(Since Kermit-80 runs on a standalone micro, it is always in control of the screen --)
+47 W( it is always in ")46 W
+/Times-Italic SF
+(local)SH
+/Times-Roman SF
+48837 XM
+(mode". It)342 W
+6120 29550 MT
+(includes a terminal emulator for establishing)
+42 W( a connection to a remote computer or service, and during file transfer,)43 W
+6120 30746 MT
+(it keeps the screen updated with the file name and the packet number, whether sending or receiving.)SH
+6120 33138 MT
+(Kermit-80 is)
+12 W( capable of an imprecise or "fuzzy" timeout on an input request, and can break deadlocks automatically.)11 W
+6120 34334 MT
+(In most cases, this is not important, because the Kermit program on)
+55 W( the other side is most likely able to handle the)56 W
+6120 35530 MT
+(timeouts. The)
+372 W( timeouts)
+61 W( done by Kermit-80 are fuzzy because they depend on the speed of the processor and other)60 W
+6120 36726 MT
+(factors that can vary from system to system.)SH
+6120 39118 MT
+(If, despite the timeout capability, the transmission appears to be stuck \050and you)
+26 W( can tell that this has happened if the)27 W
+6120 40314 MT
+(screen fails to change for a while\051 you can type carriage return to have the micro do what it would)
+56 W( have done on a)55 W
+6120 41510 MT
+(timeout, namely NAK the expected packet to cause theforeign host to send it again \050or, if the micro is sending,)
+75 W( to)76 W
+6120 42706 MT
+(retransmit the last packet\051. Micro/micro or micro/IBM-mainframe)
+207 W( transfers could require this kind of manual)206 W
+6120 43902 MT
+(intervention.)SH
+6120 46294 MT
+(File transfers may be interrupted in several ways.)SH
+6120 48085 MT
+(Control-C)SH
+14120 XM
+(This will return you to Kermit-80 command level immediately, so that you can)
+46 W( connect back to)47 W
+14120 49190 MT
+(the remote system, or take any other desired action.)SH
+6120 50767 MT
+(Control-X)SH
+14120 XM
+(When sending a file, this will)
+182 W( terminate the sending of the current file with a signal to the)181 W
+14120 51872 MT
+(KERMIT on the other side to discard what it got so far. If there are more files to be sent,)157 W
+14120 52977 MT
+(KERMIT-80 will go on to)
+53 W( the next one. When receiving a file, KERMIT-80 will send a signal)52 W
+14120 54082 MT
+(to the remote KERMIT to stop sending this file. If the remote KERMIT understands this)
+31 W( signal)32 W
+14120 55187 MT
+(\050not all implementations of KERMIT do\051, it will comply, otherwise the file will keep coming.)91 W
+14120 56292 MT
+(In any case, the remote KERMIT will go on to the next file in the group, if any.)SH
+6120 57869 MT
+(Control-Z)SH
+14120 XM
+(Like Control-X, except if a file)
+39 W( group is being transmitted, this will stop the transmission of the)40 W
+14120 58974 MT
+(entire group. If only a single file is being transmitted, it works exactly like Control-X.)SH
+6120 60551 MT
+(Carriage Return)SH
+14120 XM
+(If you type a carriage return Kermit-80 will resend the current packet. You)
+233 W( may do this)232 W
+14120 61656 MT
+(repeatedly, up to the)
+142 W( packet retry limit \050somewhere between 5 and 16 times\051 for a particular)143 W
+14120 62761 MT
+(packet.)SH
+ES
+%%Page: 5 6
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.5. Kermit-80 Description)SH
+10 /Times-Italic AF
+52275 XM
+(Page 5)SH
+46800 50 8280 5709 UL
+13 /Times-Bold AF
+25451 8071 MT
+(Kermit-80 Commands)SH
+10 /Times-Roman AF
+8280 10444 MT
+(Kermit-80 is an interactive program. It issues a prompt, you type a command. The process repeats until you)
+64 W( give)63 W
+8280 11640 MT
+(the EXIT command to leave the program.)SH
+8280 14032 MT
+(Commands consist of keywords, filenames, and numbers. Keywords)
+190 W( may be abbreviated to minumum unique)191 W
+8280 15228 MT
+(length. "?")
+296 W( may be typed to request a menu of the available options)
+23 W( for the current field at any point in a command.)22 W
+8280 16424 MT
+(ESC may be typed at any point in a command to fill out the current keyword or filename;)
+93 W( if sufficient characters)94 W
+8280 17620 MT
+(have not been typed to identify the current field uniquely, Kermit-80 will)
+75 W( sound a beep and allow you to continue)74 W
+8280 18816 MT
+(from that point. Here are Kermit-80's commands:)SH
+8280 20607 MT
+(BREAK)SH
+12280 XM
+(Send a BREAK)
+144 W( condition to the remote computer. This is only possible if your system is capable of)145 W
+12280 21712 MT
+(sending breaks. It is intended to be used with PAUSE, OUTPUT, etc and)
+136 W( the TAKE command to do)135 W
+12280 22817 MT
+(wierd and wonderful things, like automatic logging on to a remote host.)SH
+8280 24394 MT
+(BYE)SH
+12280 XM
+(When talking to a remote Kermit Server, this command shuts down the server)
+103 W( and logs it out, and also)104 W
+12280 25499 MT
+(exits from Kermit-80 to CP/M command level.)SH
+8280 27076 MT
+(CONNECT)SH
+12280 28181 MT
+(Establish a terminal connection to the computer, service, or)
+135 W( device that is connected to the serial port,)136 W
+12280 29286 MT
+(i.e. pass)
+SH( all typein to the serial port)
+34 W( and display all input from the serial port on the screen. Also, emulate)33 W
+12280 30391 MT
+(a DEC VT52 to allow)
+62 W( cursor control, screen clearing, etc., if VT52-EMULATION is ON \050see below\051, in)63 W
+12280 31496 MT
+(which case you should also set your terminal type on the remote host to VT52.)
+68 W( \050Some)
+385 W( versions emulate)67 W
+12280 32601 MT
+(other terminals.\051 The CONNECT command may be abbreviated by the single letter C.)SH
+12280 34178 MT
+(Warning: VT52 emulation is only successful if your system or its attached terminal can do the same)
+62 W( sort)63 W
+12280 35283 MT
+(of functions as)
+47 W( a genuine VT52. Things to beware of are cursor addressing, clear to end of page and end)46 W
+12280 36388 MT
+(of line, clear screen, home)
+192 W( cursor, and clear-and-home functions. The useability of VT52 emulation)193 W
+12280 37493 MT
+(depends entirely on how many of the VT52 functions can be emulated by your micro or terminal.)SH
+12280 39070 MT
+(The escape)
+103 W( character differs from micro to micro; when you issue the CONNECT command, the micro)102 W
+12280 40175 MT
+(will print)
+40 W( a message telling you how to get back. The escape sequence is generally an uncommonly-used)41 W
+12280 41280 MT
+(control character, like CTRL-backslash or CTRL-rightbracket, followed by a single letter "command":)SH
+12280 43071 MT
+(C)SH
+14280 XM
+(Close Connection, return to)SH
+/Courier SF
+25585 XM
+(Kermit-80>)SH
+/Times-Roman SF
+31835 XM
+(command level.)SH
+12280 44176 MT
+(S)SH
+14280 XM
+(Display Status of connection, but maintain remote connection.)SH
+/Courier SF
+12280 45281 MT
+(?)SH
+/Times-Roman SF
+14280 XM
+(List available single-character commands.)SH
+12280 46386 MT
+(0)SH
+14280 XM
+(\050zero\051 Send a null \0500\051 character.)SH
+12280 47491 MT
+(B)SH
+14280 XM
+(Send a BREAK signal. Most systems provide this function.)SH
+12280 48596 MT
+(D)SH
+14280 XM
+(Drop the line. Used on)
+51 W( the Apple with modem. Automatically closes the connection after dropping)50 W
+14280 49701 MT
+(the line. The TORCH system acknowledges this command but does nothing.)SH
+12280 50806 MT
+(P)SH
+14280 XM
+(Toggle printer on or off. Allows you to copy whatever goes to the screen to the printer.)SH
+12280 51911 MT
+(S)SH
+14280 XM
+(Temporarily suspend logging to the log file.)SH
+12280 53016 MT
+(Q)SH
+14280 XM
+(Restart logging to the log file)SH
+/Courier SF
+12280 54121 MT
+(^])SH
+/Times-Roman SF
+14280 XM
+(\050or whatever - a second copy of the escape character\051 Send the escape character itself)
+69 W( to the remote)70 W
+14280 55226 MT
+(host.)SH
+8280 57017 MT
+(COPY)SH
+/Times-Italic SF
+11197 XM
+(source destination)SH
+/Times-Roman SF
+12280 58122 MT
+(Copy a named file to another file, either on the same drive or another drive.)SH
+8280 59699 MT
+(DIRECTORY)SH
+12280 60804 MT
+(This provides a directory listing of the specified files.)
+27 W( If)
+303 W( no files are specified, all files on the default disk)26 W
+12280 61909 MT
+(are listed. File sizes, in K, are included. You may interrupt the listing)
+1 W( at any time by typing any character.)2 W
+12280 63014 MT
+(The listing \050even if interrupted\051 concludes with a display of the amount of free storage left)
+99 W( on the disk.)98 W
+12280 64119 MT
+(You can inhibit the display of file sizes by SET DIRECTORY OFF.)SH
+8280 65696 MT
+(ERASE)SH
+/Times-Italic SF
+11697 XM
+(filespec)SH
+/Times-Roman SF
+12280 66801 MT
+(This executes the CP/M ERA command on the specified file\050s\051. The names of the files being erased)
+65 W( are)64 W
+12280 67906 MT
+(not displayed.)SH
+8280 69483 MT
+(EXIT)SH
+12280 XM
+(Quit back to CP/M. The return is made by a JMP 0 \050Warmstart\051. QUIT is a synonym for EXIT.)SH
+8280 71060 MT
+(FINISH)SH
+12280 XM
+(Like LOGOUT, but shuts down the remote server)
+199 W( without logging it out. Leaves you at Kermit-80)200 W
+ES
+%%Page: 6 7
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 6)SH
+12 /Times-Bold AF
+30586 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.5)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+10120 7886 MT
+(command level; subsequent CONNECT commands will put you back at host system command level.)SH
+6120 9463 MT
+(GET)SH
+/Times-Italic SF
+8314 XM
+(filespec)SH
+/Times-Roman SF
+11619 XM
+([)SH
+/Times-Italic SF
+(local_filespec)SH
+/Times-Roman SF
+(])SH
+10120 10568 MT
+(When Kermit-80 is talking)
+67 W( to a Kermit Server on the host, you should use the GET command to request)68 W
+10120 11673 MT
+(the server to send files to you, for example:)SH
+/Courier SF
+12520 13328 MT
+(get hlp:k*.hlp)SH
+/Times-Roman SF
+10120 15045 MT
+(You may specify a local filename)
+264 W( if you want to save the remote file under a different filename.)263 W
+10120 16150 MT
+(Limitation: If you request an alternate block check type using)
+194 W( the SET BLOCK command, the GET)195 W
+10120 17255 MT
+(command will not communicate it to the remote server. If you want to have)
+7 W( type 2 or 3 block checks done)6 W
+10120 18360 MT
+(when getting files from the server, you have to issue)
+11 W( the appropriate SET BLOCK command to the remote)12 W
+10120 19465 MT
+(KERMIT before putting it in server mode.)SH
+6120 21042 MT
+(HELP)SH
+10120 XM
+(List all these commands,)
+27 W( with a short description on what the commands do. A question mark will do the)26 W
+10120 22147 MT
+(same. If)
+408 W( you have already typed a command but do not know)
+79 W( what the parameters are, type a space \050to)80 W
+10120 23252 MT
+(indicate the end of the command\051 and a question mark.)
+43 W( You)
+335 W( will be informed of what Kermit can expect)42 W
+10120 24357 MT
+(at that stage.)SH
+6120 25934 MT
+(INPUT)SH
+/Times-Italic SF
+9314 XM
+(seconds text)SH
+/Times-Roman SF
+10120 27039 MT
+(Setup a text)
+55 W( line and time delay for your CP/M system to expect from the host, then wait up to the given)54 W
+10120 28144 MT
+(number of seconds \050approximately\051 for text to be sent to your CP/M-80 system.)SH
+6120 29721 MT
+(LOG)SH
+/Times-Italic SF
+8425 XM
+(filespec)SH
+/Times-Roman SF
+10120 30826 MT
+(When CONNECTed to a foreign host as a terminal, log the terminal session to the specified diskette file.)49 W
+10120 31931 MT
+(This functionality depends to some extent)
+13 W( on the remote host's ability to do XON/XOFF flow control, and)14 W
+10120 33036 MT
+(does not guarantee a complete transcript \050after all, that's what the KERMIT protocol is for\051. The log file)48 W
+10120 34141 MT
+(is closed when the connection is closed by typing the escape character followed by the single-character)104 W
+10120 35246 MT
+(command "C".)SH
+10120 36823 MT
+(It is possible to temporarily)
+98 W( suspend logging during connect state. Typing an escape sequence can turn)97 W
+10120 37928 MT
+(file logging on \050<escape-character> R for Resume\051 or off \050<escape-character> Q for quiet\051.)SH
+10120 39505 MT
+(Re-entering connect state will re-open the previously opened log file and append to that file.)SH
+6120 41082 MT
+(LOGOUT)SH
+10120 42187 MT
+(Like BYE, but leaves you at Kermit-80 command level.)SH
+6120 43764 MT
+(OUTPUT)SH
+/Times-Italic SF
+10314 XM
+(text)SH
+/Times-Roman SF
+10120 44869 MT
+(Send the text to the remote computer as if you had typed it.)SH
+6120 46446 MT
+(PAUSE)SH
+/Times-Italic SF
+9537 XM
+(seconds)SH
+/Times-Roman SF
+10120 47551 MT
+(If this command is issued your CP/M system will wait)
+42 W( a while before proceeding with another command.)41 W
+10120 48656 MT
+(This is intended for use)
+21 W( in TAKE commands, where you may want to pause for a while before proceeding)22 W
+10120 49761 MT
+(with the rest of the TAKE file. The actual delay)
+62 W( is very variable between systems, and values should be)61 W
+10120 50866 MT
+(determined on a trial and error basis.)SH
+6120 52443 MT
+(PRINT)SH
+10120 XM
+(Print a file to)
+64 W( the console and printer. Output to the printer is buffered by the Kermit-maintained printer)65 W
+10120 53548 MT
+(buffer. This)
+338 W( routine is identical)
+44 W( to TYPE but characters are echoed to the printer as well as to the screen.)43 W
+10120 54653 MT
+(Suspending and canceling output is as described in TYPE.)SH
+6120 56230 MT
+(QUIT)SH
+10120 XM
+(Synonym for EXIT.)SH
+6120 57807 MT
+(RECEIVE)SH
+/Times-Italic SF
+10592 XM
+(filespec)SH
+/Times-Roman SF
+10120 58912 MT
+(Receive file\050s\051 from the remote)
+185 W( Kermit, and save them under the names provided in the file headers)184 W
+10120 60017 MT
+(supplied by)
+37 W( the remote host. If a local filespec is given, the file is saved under the given filename. If the)38 W
+10120 61122 MT
+(names aren't legal, use)
+104 W( as many legal characters from the name as possible \050see the description of SET)103 W
+10120 62227 MT
+(FILE-WARNING below\051. If there's)
+128 W( a conflict, and FILE-WARNING is ON, warn the user and try to)129 W
+10120 63332 MT
+(build a unique name for the file by)
+71 W( adding ")70 W
+/Courier SF
+(&)SH
+/Times-Roman SF
+(" characters to the name. RECEIVE can be abbreviated to)70 W
+10120 64437 MT
+(the single letter R.)SH
+6120 66014 MT
+(REMOTE)SH
+/Times-Italic SF
+10481 XM
+(command)SH
+/Times-Roman SF
+10120 67119 MT
+(Send a command to a remote Kermit server.)
+66 W( The)
+381 W( results are sent back to your CP/M screen. When two)65 W
+10120 68224 MT
+(arguments are required and specify less than two in)
+73 W( the command, you will be prompted for the missing)74 W
+10120 69329 MT
+(arguments. REMOTE)
+250 W( commands include:)SH
+10120 71120 MT
+(REMOTE CD [directory])SH
+ES
+%%Page: 7 8
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.5. Kermit-80 Description)SH
+10 /Times-Italic AF
+52275 XM
+(Page 7)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+14280 7886 MT
+(Ask the remote server to change its default directory. If no directory is)
+36 W( specified, the server changes)37 W
+14280 8991 MT
+(to its login directory.)SH
+12280 10568 MT
+(REMOTE COPY file1 file2)SH
+14280 11673 MT
+(Ask the remote server to copy file1 to file2.)SH
+12280 13250 MT
+(REMOTE RENAME file1 file2)SH
+14280 14355 MT
+(Ask the remote server to rename file1 to file2.)SH
+12280 15932 MT
+(REMOTE DELETE filespec)SH
+14280 17037 MT
+(Ask the remote server to delete the named file or files.)SH
+12280 18614 MT
+(REMOTE DIRECTORY [filespec])SH
+14280 19719 MT
+(Ask the remote server to display a directory listing of the given files or, if the filespec is)
+41 W( omitted, all)40 W
+14280 20824 MT
+(the files in the current device or directory.)SH
+12280 22401 MT
+(REMOTE DISK-USAGE)SH
+14280 23506 MT
+(Ask the remote server to display information about its disk usage \050such as free or used space\051.)SH
+12280 25083 MT
+(REMOTE ERASE filespec)SH
+14280 26188 MT
+(Same as REMOTE DELETE.)SH
+12280 27765 MT
+(REMOTE FINISH)SH
+14280 28870 MT
+(Same as FINISH.)SH
+12280 30447 MT
+(REMOTE HELP)SH
+14280 31552 MT
+(Ask the remote server to display a list of the commands it can respond to.)SH
+12280 33129 MT
+(REMOTE HOST command)SH
+14280 34234 MT
+(Ask the remote server to have its operating system execute the given command.)SH
+12280 35811 MT
+(REMOTE KERMIT command)SH
+14280 36916 MT
+(Ask the remote server to execute the given Kermit command, given)
+35 W( in the server Kermit's command)36 W
+14280 38021 MT
+(syntax.)SH
+12280 39598 MT
+(REMOTE LOGIN user password)SH
+14280 40703 MT
+(Log in to a remote Kermit server which has been set up to require a username and password.)SH
+12280 42280 MT
+(REMOTE MESSAGE text)SH
+14280 43385 MT
+(Send the text to the remote server for display on its screen \050useful with MS-DOS Kermit servers\051.)SH
+12280 44962 MT
+(REMOTE SET parameter value)SH
+14280 46067 MT
+(Ask the)
+145 W( remote server to set the given parameter to the given value, for example REMOTE SET)146 W
+14280 47172 MT
+(FILE TYPE BINARY. Type REMOTE SET ? to see a list of the REMOTE SET options.)SH
+12280 48749 MT
+(REMOTE SPACE)SH
+14280 49854 MT
+(Same as REMOTE DISK-USAGE.)SH
+12280 51431 MT
+(REMOTE STATUS)SH
+14280 52536 MT
+(Ask the remote server to provide a status report.)SH
+12280 54113 MT
+(REMOTE TYPE file)SH
+14280 55218 MT
+(Ask the remote server to display the named file on the micro's screen.)SH
+12280 56795 MT
+(REMOTE WHO [user])SH
+14280 57900 MT
+(Ask the remote server for a list)
+13 W( of users who are logged in, or if a user is specified, for a report on the)12 W
+14280 59005 MT
+(named user.)SH
+8280 60796 MT
+(RENAME file1 file2)SH
+12280 61901 MT
+(Rename local CP/M file1 to file2.)SH
+8280 63478 MT
+(SEND)SH
+/Times-Italic SF
+11141 XM
+(filespec)SH
+/Times-Roman SF
+12280 64583 MT
+(Send file\050s\051 specified by)13 W
+/Times-Italic SF
+22330 XM
+(filespec)SH
+/Times-Roman SF
+25648 XM
+(to the remote Kermit. The)13 W
+/Times-Italic SF
+36641 XM
+(filespec)SH
+/Times-Roman SF
+39959 XM
+(may contain CP/M wildcards.)
+13 W( SEND)277 W
+12280 65688 MT
+(may be abbreviated to the single letter S.)SH
+8280 67265 MT
+(SET)SH
+/Times-Italic SF
+10308 XM
+(parameter)SH
+/Times-Roman SF
+14724 XM
+([)SH
+/Times-Italic SF
+(value)SH
+/Times-Roman SF
+(])SH
+12280 68370 MT
+(Set the specified parameter to the specified value. Possible parameter settings:)SH
+12280 70161 MT
+(AUTORECEIVE)SH
+16280 71266 MT
+(ON \050or OFF\051.)
+157 W( Allows)
+563 W( several files to be received without having to type RECEIVE on the)156 W
+ES
+%%Page: 8 9
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 8)SH
+12 /Times-Bold AF
+30586 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.5)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+14120 7886 MT
+(receiving machine. The routine simply looks for activity on)
+91 W( the serial line, and if so fudges a)92 W
+14120 8991 MT
+(RECEIVE command. The packet sent by the sender will be lost.)SH
+10120 10568 MT
+(BLOCK-CHECK-TYPE)SH
+/Times-Italic SF
+20314 XM
+(option)SH
+/Times-Roman SF
+14120 11673 MT
+(The options are:)SH
+14120 13464 MT
+(1-CHARACTER-CHECKSUM)SH
+18120 14569 MT
+(Normal, default, standard 6-bit checksum.)SH
+14120 15674 MT
+(2-CHARACTER-CHECKSUM)SH
+18120 16779 MT
+(A 12-bit checksum encoded as two characters.)SH
+14120 17884 MT
+(3-CHARACTER-CRC-CCITT)SH
+18120 18989 MT
+(A 16-bit CCITT-format Cyclic Redundancy Check, encoded as 3 characters.)SH
+10120 20780 MT
+(BUFFER-SIZE)SH
+/Times-Italic SF
+16593 XM
+(value)SH
+/Times-Roman SF
+14120 21885 MT
+(This allows you to set a buffer size during transfer of data. On some systems)
+86 W( it takes so long)87 W
+14120 22990 MT
+(that the remote end times)
+9 W( out while the local system is reading or writing to disk. The size is the)8 W
+14120 24095 MT
+(number of 128 disk sectors \050nominal\051 and can be from 1 \050128 bytes\051 to 64 \0508 kbytes\051.)SH
+14120 25672 MT
+(CP/M-80 filenames will still be mapped to uppercase characters.)SH
+10120 27249 MT
+(COLLISION value)SH
+14120 28354 MT
+(What to do when a file arrives that has the same name as an existing file.)
+66 W( BACKUP)
+380 W( means to)65 W
+14120 29459 MT
+(rename the existing file. DISCARD means to discard)
+444 W( and reject the incoming file.)445 W
+14120 30564 MT
+(OVERWRITE means to overwrite the existing file. RENAME means to rename the existing)126 W
+14120 31669 MT
+(file.)SH
+10120 33246 MT
+(DEBUG)SH
+14120 XM
+(ON \050or OFF\051. Enables/disables displaying of packets on the screen during)
+122 W( file transfer. Not)123 W
+14120 34351 MT
+(performed if the QUIET option has been set for the terminal \050SET TERMINAL QUIET\051)SH
+10120 35928 MT
+(DEFAULT-DISK)SH
+/Times-Italic SF
+17591 XM
+(drive letter)SH
+/Times-Roman SF
+14120 37033 MT
+(This allows you to set the)
+94 W( default disk as source and destination of file transfers. In addition,)95 W
+14120 38138 MT
+(issuing this command)
+134 W( causes you to switch to the specified disk and log it in, write-enabled.)133 W
+14120 39243 MT
+(The colon must be included in the disk name \050A:\051. The selected disk appears in)
+302 W( your)303 W
+14120 40348 MT
+(KERMIT-80 prompt, for instance)SH
+/Courier SF
+16520 42003 MT
+(Kermit-80 14A:>)SH
+/Times-Roman SF
+10120 43720 MT
+(DIRECTORY-FILE-SIZE ON \050or OFF\051.)SH
+14120 45297 MT
+(By setting DIRECTORY-FILE-SIZE OFF you)
+71 W( can get an abreviated listing of your disk drive.)70 W
+14120 46402 MT
+(File sizes are not)
+2 W( calculated, and five files are shown on a line. Setting this option ON will show)3 W
+14120 47507 MT
+(file sizes of each file.)SH
+14120 49084 MT
+(Both options will list the free space remaining.)SH
+10120 50661 MT
+(ESCAPE)SH
+14120 XM
+(Change the escape)
+5 W( character for virtual terminal connections. Kermit-80 will prompt you for the)4 W
+14120 51766 MT
+(new escape character, which you enter literally.)SH
+10120 53343 MT
+(FILE-MODE)SH
+/Times-Italic SF
+15758 XM
+(option)SH
+/Times-Roman SF
+14120 54448 MT
+(Tells KERMIT-80 what kind of file it is)
+69 W( sending, so that KERMIT can correctly determine the)68 W
+14120 55553 MT
+(end of the file. SET FILE BINARY means to send all the 128-byte blocks \050ie)
+119 W( logical CP/M)120 W
+14120 56658 MT
+(sectors\051 of the file, including the last block in its entirety; SET FILE ASCII)
+14 W( is used for text files,)13 W
+14120 57763 MT
+(and transmission stops when the first Control-Z is encountered anywhere in the)
+70 W( file \050this is the)71 W
+14120 58868 MT
+(CP/M convention for marking the end of a text file\051.)SH
+14120 60445 MT
+(SET FILE-MODE)
+99 W( DEFAULT tells Kermit to attempt to determine the file type by examining)98 W
+14120 61550 MT
+(the file)
+50 W( being transmitted. If a Control-Z appears before the last block of the file, it is assumed)51 W
+14120 62655 MT
+(to be BINARY; if, when the first Control-Z is encountered, the remainder)
+104 W( of the file contains)103 W
+14120 63760 MT
+(only control-Z's, it is assumed to be a text file. Unfortunately,)
+253 W( not all programs fill the)254 W
+14120 64865 MT
+(remainder of the last record of a text file with Control-Z's, so this algorithm is not)
+184 W( always)183 W
+14120 65970 MT
+(successful.)SH
+14120 67547 MT
+(If binary transmission is used on a text)
+238 W( file, or a compressed file \050eg a .DQC file\051 some)239 W
+14120 68652 MT
+(extraneous characters \050up to 127 of them\051 may appear at the end of the file on the target system.)SH
+14120 70229 MT
+(If ASCII transmission is used on a binary file, any 8th)
+96 W( bits set will be stripped and a warning)95 W
+14120 71334 MT
+(sent to the console. When the first control-Z is encountered, the file is assumed to be at)
+16 W( the end,)17 W
+ES
+%%Page: 9 10
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.5. Kermit-80 Description)SH
+10 /Times-Italic AF
+52275 XM
+(Page 9)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+16280 7886 MT
+(even if it is not.)SH
+12280 9463 MT
+(FLOW-CONTROL ON \050or OFF\051)SH
+16280 10568 MT
+(Sets XON/XOFF flow control on or off. If set ON the host is expected to respond)
+48 W( to an XOFF)49 W
+16280 11673 MT
+(or XON sent by Kermit-80. If set)
+177 W( off, no flow control is assumed and any XON/XOFF is)176 W
+16280 12778 MT
+(ignored.)SH
+12280 14355 MT
+(IBM ON \050or OFF\051)SH
+16280 15460 MT
+(Allow the transfer)
+125 W( of files to and from an IBM mainframe computer. This makes Kermit-80)124 W
+16280 16565 MT
+(wait for the IBM turnaround)
+61 W( character \050XON\051, ignore parity on input, add appropriate parity to)62 W
+16280 17670 MT
+(output, and use local echoing during)
+167 W( CONNECT. As distributed, KERMIT-80 uses MARK)166 W
+16280 18775 MT
+(parity for IBM communication. If you)
+4 W( don't give this command, IBM mode is OFF. Since IBM)5 W
+16280 19880 MT
+(VM/CMS KERMIT does not have timeout capability,)
+118 W( SET IBM ON also turns on the "fuzzy)117 W
+16280 20985 MT
+(timer" automatically.)SH
+12280 22562 MT
+(LOCAL-ECHO ON \050or OFF\051)SH
+16280 23667 MT
+(When you CONNECT to a)
+136 W( remote host, you must set LOCAL-ECHO ON if the host is half)135 W
+16280 24772 MT
+(duplex, OFF if full duplex. OFF by default.)SH
+12280 26349 MT
+(LOGGING ON \050or OFF\051)SH
+16280 27454 MT
+(Cease or resume logging whenever)
+25 W( connect mode is entered. This is really only applicable after)24 W
+16280 28559 MT
+(a LOG command is no longer required.)SH
+12280 30136 MT
+(NO-EXIT)SH
+16280 31241 MT
+(This command is applicable only)
+145 W( for Kermit initiated with a command tail. For example, if)144 W
+16280 32346 MT
+(Kermit was initiated by:)SH
+16280 33923 MT
+(KERMIT ;SEND HELLO;NO-EXIT)SH
+16280 35500 MT
+(Kermit would first seek out and execute the KERMIT.INI file \050if present\051, then)
+248 W( send file)249 W
+16280 36605 MT
+(HELLO to a remote system.)
+8 W( Usually)
+265 W( Kermit would exit back to CP/M, but NO-EXIT over-rides)7 W
+16280 37710 MT
+(this. STAY)
+250 W( is a synonym for NO-EXIT.)SH
+16280 39287 MT
+(Note the leading semicolon. This clears leading spaces from the first command.)SH
+12280 40864 MT
+(OUTPUT)SH
+/Times-Italic SF
+16474 XM
+(text-line)SH
+/Times-Roman SF
+16280 41969 MT
+(Send a line of text)
+121 W( to the remote computer \050or modem\051. This simply copies the string to the)120 W
+16280 43074 MT
+(correct line, and assumes all appropriate parameters have been set to be used, e.g. speed, parity)54 W
+16280 44179 MT
+(etc. It)
+250 W( is intended for use in TAKE command files.)SH
+12280 45756 MT
+(PARITY)SH
+/Times-Italic SF
+16141 XM
+(option)SH
+/Times-Roman SF
+16280 46861 MT
+(Sets parity for outgoing characters to one of)
+49 W( the following: NONE, SPACE, MARK, EVEN, or)50 W
+16280 47966 MT
+(ODD. On)
+286 W( input, if parity is NONE, then the 8th bit is kept \050as data\051, otherwise it is stripped)
+18 W( and)17 W
+16280 49071 MT
+(ignored. The)
+558 W( parity setting applies to both terminal)
+154 W( connection and file transfer. If you set)155 W
+16280 50176 MT
+(parity to)
+236 W( anything other than none, KERMIT-80 will attempt to use "8th bit prefixing" to)235 W
+16280 51281 MT
+(transfer binary files.)
+45 W( If)
+341 W( the other KERMIT is also capable of 8th bit prefixing, then binary files)46 W
+16280 52386 MT
+(can be transferred successfully; if not, the 8th bit of each data byte)
+75 W( will be lost \050you will see a)74 W
+16280 53491 MT
+(warning on your screen if this happens\051.)SH
+12280 55068 MT
+(PORT)SH
+/Times-Italic SF
+15086 XM
+(port name)SH
+/Times-Roman SF
+16280 56173 MT
+(Allows you to switch between different communication ports. This command is not available)96 W
+16280 57278 MT
+(on all systems. Type)56 W
+/Courier SF
+25283 XM
+(SET PORT ?)57 W
+/Times-Roman SF
+31704 XM
+(for a list of valid options for your system. \050Note: If your)57 W
+16280 58383 MT
+(system does not support several)
+105 W( ports, this command will return a "Not implemented" error if)104 W
+16280 59488 MT
+(you try to set a port.\051)SH
+12280 61065 MT
+(PRINTER)SH
+16280 62170 MT
+(ON \050or OFF\051)SH
+16280 63275 MT
+(Turns copying of CONNECT session)
+151 W( to printer on and off. It is also possible to toggle the)152 W
+16280 64380 MT
+(printer on/off from the connect state, by typing <escape character> followed by P.)SH
+12280 65957 MT
+(RECEIVE)SH
+/Times-Italic SF
+16752 XM
+(parameter)SH
+/Times-Roman SF
+21168 XM
+([)SH
+/Times-Italic SF
+(value)SH
+/Times-Roman SF
+(])SH
+16280 67062 MT
+(Set a RECEIVE parameter.)SH
+16280 68853 MT
+(PAD-CHAR)SH
+20280 69958 MT
+(Set the PAD character to use while receiving files. Currently a dummy, as for SET)100 W
+20280 71063 MT
+(SEND PAD-CHAR.)SH
+ES
+%%Page: 10 11
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 10)SH
+12 /Times-Bold AF
+30586 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.5)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+14120 7886 MT
+(PADDING [value])SH
+18120 8991 MT
+(Set the number of PAD characters to use while receiving files. Same as SET)
+76 W( SEND)75 W
+18120 10096 MT
+(PADDING.)SH
+14120 11201 MT
+(START-OF-PACKET [value])SH
+18120 12306 MT
+(Set the default start of Packet character for receiving files.)
+58 W( Apply)
+364 W( the same rules and)57 W
+18120 13411 MT
+(considerations as for SET SEND START-OF-PACKET.)SH
+14120 14516 MT
+(PACKET-LENGTH number)SH
+18120 15621 MT
+(Tell the other Kermit the longest packet length CP/M Kermit)
+171 W( is willing to receive)170 W
+18120 16726 MT
+(during file transfer. The maximum length is 94, which is also the default length.)SH
+10120 18517 MT
+(SEND)SH
+/Times-Italic SF
+12981 XM
+(parameter)SH
+/Times-Roman SF
+17397 XM
+([)SH
+/Times-Italic SF
+(value)SH
+/Times-Roman SF
+(])SH
+14120 19622 MT
+(Set a SEND parameter.)SH
+14120 21413 MT
+(PAD-CHAR)SH
+18120 22518 MT
+(Set the)
+98 W( Pad character to be used while sending files. It is currently a dummy entry,)99 W
+18120 23623 MT
+(and does not do anything.)SH
+14120 24728 MT
+(PADDING [value])SH
+18120 25833 MT
+(Set the number of PAD-CHARS)
+249 W( to be used while sending files. This too does)250 W
+18120 26938 MT
+(nothing.)SH
+14120 28043 MT
+(START-OF-PACKET)SH
+18120 29148 MT
+(Set the default start of packet character to another character than control-A. This)
+28 W( may)29 W
+18120 30253 MT
+(be necessary on)
+439 W( systems \050including intervening networks\051 that trap control-A)438 W
+18120 31358 MT
+(characters. Choose)
+272 W( a control character not otherwise used, ie not carriage return)
+11 W( \05013D,)12 W
+18120 32463 MT
+(ODH\051, line feed)
+108 W( \05010D, OAN\051, tabs \05009D, 09H\051, backspace \05008H\051, and bell \05007H\051 or)107 W
+18120 33568 MT
+(any other used between you and your remote system.)SH
+10120 35359 MT
+(SPEED)SH
+/Times-Italic SF
+13426 XM
+(value)SH
+/Times-Roman SF
+14120 36464 MT
+(Change the)
+23 W( baud rate of the communications port. This command only works on some systems.)22 W
+/Times-Italic SF
+14120 37569 MT
+(value)SH
+/Times-Roman SF
+16718 XM
+(is the numeric baud rate \050300, 9600, etc.\051 desired. Type)
+182 W( SET SPEED followed by a)183 W
+14120 38674 MT
+(question mark for a list of supported baud rates. On systems that do)
+36 W( not support this command,)35 W
+14120 39779 MT
+(you must set the port baud rate from CP/M or other setup mechanism outside of KERMIT-80.)SH
+10120 41356 MT
+(TACTRAP)SH
+14120 42461 MT
+(Set the TAC intercept character. If you are attached to a TAC it will)
+149 W( swallow the intercept)148 W
+14120 43566 MT
+(character \050commercial AT sign by default\051 so Kermit sends)
+94 W( it twice. With this command you)95 W
+14120 44671 MT
+(can set the intercept character \050ie the one to send twice\051 to another character.)SH
+10120 46248 MT
+(TERMINAL)SH
+/Times-Italic SF
+15536 XM
+(option)SH
+/Times-Roman SF
+14120 47353 MT
+(Select one of the following terminal characteristics:)SH
+14120 49144 MT
+(OFF)SH
+18120 XM
+(sets emulation off, and its up to the)
+63 W( attached terminal to respond to escape sequences)64 W
+18120 50249 MT
+(sent from the remote host system.)SH
+14120 51907 MT
+(DUMB)SH
+18120 XM
+(Like off, but carriage return)
+123 W( and line feed characters are the only control characters)122 W
+18120 53012 MT
+(accepted. All)
+250 W( other control characters are simply ignored. \050Really a "Glass TTY"\051.)SH
+14120 54670 MT
+(EXTERNAL)SH
+18120 55775 MT
+(Emulation is provided for by a)
+259 W( routine in the system dependent part of Kermit.)258 W
+18120 56880 MT
+(Attempting to set)
+236 W( this option without having and externally supplied routine will)237 W
+18120 57985 MT
+(returna "Not Implemented" error.)SH
+14120 59643 MT
+(OFF)SH
+18120 XM
+(All characters are passed directly to the terminal without any interpretation by Kermit.)SH
+14120 61301 MT
+(VT52)SH
+18120 XM
+(When connected)
+101 W( as a terminal to a foreign host, the micro emulates a VT52. VT52)100 W
+18120 62406 MT
+(emulation is set by default, except on micros that already have terminal functionality)74 W
+18120 63511 MT
+(built in, such)
+35 W( as the DEC VT180 and DECmate \050these act as VT100-series terminals\051.)34 W
+18120 64616 MT
+(Some systems emulate other terminals, like the ADM3A; see table 1-5.)SH
+14120 66274 MT
+(QUIET)SH
+18120 XM
+(Do not display any file transfer information onto the console. This mode is useful)
+72 W( if)73 W
+18120 67379 MT
+(you console takes)
+58 W( a long time to update the display. Only the file name is displayed.)57 W
+18120 68484 MT
+(DEBUGging information is not displayed even if selected.)SH
+14120 70142 MT
+(REGULAR)SH
+18120 71247 MT
+(Inverse of QUIET. All packets etc displayed, as ususal.)SH
+ES
+%%Page: 11 12
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.5. Kermit-80 Description)SH
+10 /Times-Italic AF
+51775 XM
+(Page 11)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+12280 7886 MT
+(TIMER ON \050or OFF\051)SH
+16280 8991 MT
+(Enable or disable)
+131 W( the "fuzzy timer". The timer is off by default, because in the normal case)132 W
+16280 10096 MT
+(KERMIT-80 is communicating with a mainframe KERMIT that has its own timer.)
+62 W( Mainframe)372 W
+16280 11201 MT
+(KERMIT timers tend to be more precise or adaptable to changing conditions.)
+46 W( You)
+343 W( should SET)47 W
+16280 12306 MT
+(TIMER ON if you are communicating with a KERMIT that does not have a)
+41 W( timer. You should)40 W
+16280 13411 MT
+(SET TIMER OFF if you are communicating over a network with long delays.)SH
+12280 14988 MT
+(USER)SH
+/Times-Italic SF
+15086 XM
+(user-number)SH
+/Times-Roman SF
+16280 16093 MT
+(Sets another user number to be active. Acceptable user numbers are)
+203 W( 0 to 31, though it is)202 W
+16280 17198 MT
+(recommended to use user numbers 0 to 15 only. This is really only useful for Winchester)184 W
+16280 18303 MT
+(Systems with high disk capacities.)SH
+12280 19880 MT
+(WARNING ON \050or OFF\051)SH
+16280 20985 MT
+(Warn user of filename)
+5 W( conflicts when receiving files from remote host, and attempt to generate a)6 W
+16280 22090 MT
+(unique name)
+19 W( by adding ")18 W
+/Courier SF
+(&)SH
+/Times-Roman SF
+(" characters to the given name. ON by default, which is equivalent to)18 W
+16280 23195 MT
+(SET COLLISION RENAME.)SH
+8280 24986 MT
+(SHOW)SH
+12280 XM
+(Display all settable parameters. You will get a page or so)
+83 W( of the status af all parameters that can be set)84 W
+12280 26091 MT
+(using the SET command.)SH
+8280 27668 MT
+(STATUS)SH
+12280 XM
+(The same function as Show.)SH
+8280 29245 MT
+(STAY)SH
+12280 XM
+(Equivalent to SET NO-EXIT.)SH
+8280 30822 MT
+(TAKE)SH
+/Times-Italic SF
+11196 XM
+(filespec)SH
+/Times-Roman SF
+12280 31927 MT
+(Take characters and commands from the specified file as if they)
+40 W( were entered from the keyboard. This is)41 W
+12280 33032 MT
+(useful if you want to set up a batch job. A command file can send, get,)
+210 W( receive, set functions etc)209 W
+12280 34137 MT
+(automatically. A)
+250 W( TAKE command can be interrupted with ^C.)SH
+12280 35714 MT
+(An automatic)
+67 W( "TAKE KERMIT.INI" is executed from the default drive when Kermit-80 is loaded. This)68 W
+12280 36819 MT
+(can be used to set defaults of band rate, parity, filetype, default drive etc.)SH
+12280 38396 MT
+(If KERMIT.INI does not exist, control is given directly to the user.)SH
+8280 39973 MT
+(TRANSMIT)SH
+/Times-Italic SF
+13641 XM
+(filespec turnaround)SH
+/Times-Roman SF
+12280 41078 MT
+(Send the specified file)
+70 W( to the system on the other end of the connection as though it were being typed at)71 W
+12280 42183 MT
+(the terminal, one line at a time. Each line sent is terminated with a carriage return, and any line)
+36 W( feeds are)35 W
+12280 43288 MT
+(stripped from the file sent.)
+30 W( After)
+311 W( each line has been sent Kermit waits for a character string from the host)31 W
+12280 44393 MT
+(\050eg a acrriage return\051. If not specified, a carriage return is assumed. No KERMIT protocol)
+76 W( is involved.)75 W
+12280 45498 MT
+(An asterisk \050star\051 is sent to the console for every line sent,)
+1 W( to indicate how the transfer is progressing. This)2 W
+12280 46603 MT
+(is useful for sending files to systems)
+43 W( that don't have a KERMIT program. During transmission, you may)42 W
+12280 47708 MT
+(type one of these single-character commands:)SH
+12280 49499 MT
+(Control-C)SH
+14280 50604 MT
+(Cease transmission, and drop into terminal emulation mode.)SH
+12280 51709 MT
+(CR)SH
+14280 XM
+(\050carriage return\051 Re-transmit the previous line.)SH
+8280 53500 MT
+(TYPE filespec)SH
+12280 54605 MT
+(Type a)
+49 W( local CP/M file or files on the CP/M screen. A Control-C will cancel the command and return to)50 W
+12280 55710 MT
+(the Kermit prompt. A Ctrl-X will cancel the current file and go on to the next one, if)
+81 W( any. Typing any)80 W
+12280 56815 MT
+(other character)
+86 W( while the file is being displayed will suspend the output. Another character will resume)87 W
+12280 57920 MT
+(output.)SH
+8280 59497 MT
+(VERSION)SH
+12280 60602 MT
+(Show the name, edit number, and edit date of several of the modules that make up Kermit-80.)SH
+ES
+%%Page: 12 13
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 12)SH
+12 /Times-Bold AF
+30586 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.6)SH
+46800 50 6120 5709 UL
+14 SS
+6120 8138 MT
+(1.6. Kermit-80 Flavors)SH
+10 /Times-Roman AF
+6120 10256 MT
+(Many of the)
+152 W( systems supported use an external terminal, rather than a built-in console. Kermit may be further)153 W
+6120 11452 MT
+(customized for these systems by)
+98 W( defining \050at assembly time\051 the terminal type to be used. If the terminal type is)97 W
+6120 12648 MT
+(unknown or)
+29 W( does not match any of the existing terminal options, the generic "CRT" option may be selected. In this)30 W
+6120 13844 MT
+(case, Kermit cannot do fancy screen control during file transfer; it simply types the file names, packet)
+25 W( numbers, and)24 W
+6120 15040 MT
+(messages in sequence across and down the screen. This works best)
+183 W( if you can put your micro or terminal in)184 W
+6120 16236 MT
+("autowrap" mode; otherwise the packet numbers will pile up in the rightmost column;)
+69 W( the filenames and messages)68 W
+6120 17432 MT
+(will always appear on)
+150 W( a new line, however. If no specific terminal has been selected, Kermit cannot do VT52)151 W
+6120 18628 MT
+(emulation; it can act as a "dumb terminal" \050sometimes called a "glass TTY"\051, or else its own built in)
+167 W( terminal)166 W
+6120 19824 MT
+(firmware provides cursor control functions independent of the Kermit program.)SH
+12 /Times-Bold AF
+6120 22940 MT
+(1.6.1. Generic Kermit-80)SH
+10 /Times-Roman AF
+6120 24882 MT
+("Generic Kermit-80" is an implementation of Kermit that should run on any)
+11 W( 8080-compatible CP/M 2.2 system with)12 W
+6120 26078 MT
+(no modification)
+7 W( at all, or perhaps only a minor one. Unlike other Kermit-80 implementations, it contains no system-)6 W
+6120 27274 MT
+(dependent manipulation of the serial port. All)
+87 W( I/O is done with standard CP/M BIOS calls, and I/O redirection is)88 W
+6120 28470 MT
+(done using the CP/M IOBYTE function, which, according to the Digital Research)24 W
+/Times-Italic SF
+39460 XM
+(CP/M Operating System Manual)24 W
+/Times-Roman SF
+(,)SH
+6120 29666 MT
+(is an optional feature of any particular CP/M implementation.)
+207 W( If)
+665 W( your system does not provide the IOBYTE)208 W
+6120 30862 MT
+(function, Generic Kermit-80 will not work; furthermore, not all systems that implement IOBYTE do so in)
+36 W( the same)35 W
+6120 32058 MT
+(way. The)
+360 W( SET PORT command may be used to select the)
+55 W( devices to be used for input and output. Table 1-1 lists)56 W
+6120 33254 MT
+(the options to the SET PORT command and their effects.)SH
+46800 50 6120 35171 UL
+/Courier SF
+17220 37252 MT
+(SET PORT)SH
+/Courier-Oblique SF
+22620 XM
+(xxx)SH
+/Courier SF
+26820 XM
+(input from)
+SH( output)
+3000 W( to)SH
+7200 50 17220 37452 UL
+6000 50 26820 37452 UL
+5400 50 36420 37452 UL
+20220 38283 MT
+(CRT CRT: CRT:)6600 W
+20220 39314 MT
+(PTR PTR: PTP:)6600 W
+20220 40345 MT
+(TTY TTY: TTY:)6600 W
+20220 41376 MT
+(UC1 UC1: UC1:)6600 W
+20220 42407 MT
+(UR1 UR1: UP1:)6600 W
+20220 43438 MT
+(UR2 UR2: UP2:)6600 W
+/Times-Bold SF
+20881 45048 MT
+(Table 1-1:)SH
+/Times-Roman SF
+25742 XM
+(Kermit-80 SET PORT Options)SH
+46800 50 6120 46858 UL
+6120 49050 MT
+(The default is SET PORT)
+105 W( PTR. In all cases, the console \050CON:\051 and list \050LST:\051 devices used are those selected)104 W
+6120 50246 MT
+(when Kermit is started.)SH
+6120 52638 MT
+(The reason all Kermit-80 implementations aren't generic is that a good deal of speed is)
+128 W( sacrificed by getting all)129 W
+6120 53834 MT
+(services from the operating system. While a specific implementation of Kermit-80 may be able to operate)
+45 W( at 4800,)44 W
+6120 55030 MT
+(9600, or even 56 Kilo baud, generic Kermit will fail to work on some systems at speeds in excess)
+30 W( of 1200 baud. In)31 W
+6120 56226 MT
+(addition, many features of Kermit require more specific knowledge of the hardware)
+171 W( involved. Generic Kermit)170 W
+6120 57422 MT
+(cannot send a BREAK signal, or change the baud rate, for example.)SH
+12 /Times-Bold AF
+6120 60538 MT
+(1.6.2. CP/M 3 Kermit)SH
+10 /Times-Roman AF
+6120 62480 MT
+(CP/M-3 Kermit \050also known as CP/M-Plus Kermit\051 is)
+161 W( a version of generic Kermit-80, and should run on most)162 W
+6120 63676 MT
+(CP/M-3 \050CP/M-Plus\051 systems. It uses the auxilliary port \050AUX:\051 to communicate to the remote Kermit. The SET)60 W
+6120 64872 MT
+(BAUD and SET PORT commands are not supported; nor can a BREAK be sent. Like generic Kermit-80, a terminal)3 W
+6120 66068 MT
+(may be selected at assembly time.)SH
+ES
+%%Page: 13 14
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.6.3. System-Specific Versions)SH
+10 /Times-Italic AF
+51775 XM
+(Page 13)SH
+46800 50 8280 5709 UL
+12 /Times-Bold AF
+8280 8004 MT
+(1.6.3. System-Specific Versions)SH
+10 /Times-Roman AF
+8280 9946 MT
+(There are also many versions of Kermit-80 tailored to specific systems. Most)
+39 W( of these operate uniformly, but some)38 W
+8280 11142 MT
+(of them take advantage \050or suffer limitations\051 of the specific system. Here are some of the special features)
+145 W( for)146 W
+8280 12338 MT
+(particular systems:)SH
+8280 14129 MT
+(Amstrad: -- Two versions:)SH
+3444 50 8280 14329 UL
+10280 15920 MT
+(PCW 8256)SH
+12280 17025 MT
+(The PCW 8256/8512 with the serial inerafce attached.)SH
+10280 18602 MT
+(CPC 6128)SH
+12280 19707 MT
+(The 664 with add on memory and 6128 are both)
+10 W( supported. Both systems must run CP/M Plus, so the 664)9 W
+12280 20812 MT
+(will need an add on RAM pack and CP/M upgrade. A high speed transfer rate of)
+70 W( 38k baud can be used)71 W
+12280 21917 MT
+(between Amstrad computers.)SH
+8280 23708 MT
+(ACCESS:)SH
+3779 50 8280 23908 UL
+10280 24813 MT
+(Access Matrix computer using port J5. Supports SET BAUD-RATE for rates of 300-9600 baud.)SH
+8280 26390 MT
+(Apple II -- four variations:)SH
+3360 50 8280 26590 UL
+10280 28181 MT
+(APMMDM:)SH
+12280 29286 MT
+(Apple with Z80 Softcard and Micromodem II in slot 2 Dialout capability provided in)
+63 W( connect command;)62 W
+12280 30391 MT
+(user is prompted for phone number)
+124 W( if carrier is not present. During connect mode,)125 W
+/Courier SF
+47449 XM
+(^]D)SH
+/Times-Roman SF
+49624 XM
+(drops carrier.)125 W
+12280 31496 MT
+(BYE command also causes carrier to be dropped.)SH
+10280 33073 MT
+(AP6551:)SH
+12280 34178 MT
+(Apple with Z80 Softcard, and one of several 6551-based communication cards; the slot)
+198 W( number is a)199 W
+12280 35283 MT
+(compile-time parameter \050default is slot 2\051. SET BAUD-RATE supported; speeds are 110-19200 baud.)SH
+10280 36860 MT
+(APCPS:)SH
+12280 37965 MT
+(Apple with Z80 Softcard and CP Multi-Function Card. The)
+279 W( slot number is again a compile-time)280 W
+12280 39070 MT
+(parameter. SET)
+250 W( BAUD-RATE is supported for baud rates from 50 baud to 19200 baud.)SH
+10280 40647 MT
+(AP6850:)SH
+12280 41752 MT
+(Apple II)
+72 W( with Z80 Softcard and a 6850-based USART in slot 2-the slot being a compile-time parameter.)73 W
+12280 42857 MT
+(SET BAUD-RATE is not supported.)SH
+8280 44648 MT
+(BBC:)SH
+2001 50 8280 44848 UL
+10280 45753 MT
+(Acorn Computers BBC Computer with Acorn Z80 second processor running CP/M-80.)
+288 W( Supports)
+827 W( SET)289 W
+10280 46858 MT
+(BAUD-RATE and can send breaks.)SH
+8280 48435 MT
+(BigBoard II:)SH
+4805 50 8280 48635 UL
+10280 49540 MT
+(Uses serial)
+47 W( port A. To use port B, change mnport, mnprts, and baudrt and reassemble. Can generate BREAK.)48 W
+10280 50645 MT
+(SET SPEED supported; speeds are 300-38400 baud.)SH
+8280 52222 MT
+(Cifer:)SH
+2055 50 8280 52422 UL
+10280 53327 MT
+(Originally coded for Cifer 1886)
+81 W( using the VL: port set as TTYI: and TTYO: but works successfully on 18xx)82 W
+10280 54432 MT
+(and 28xx series machines.)SH
+10280 56009 MT
+(There are now two versions, each with two variations: Either running)
+2 W( CP/M Version 2.2 or 3.0, and either using)1 W
+10280 57114 MT
+(the VL: or)
+61 W( AUX: ports. The VL: port version can only use seven bits of data, so parity prefixing is required)62 W
+10280 58219 MT
+(for binary file transfers. This restriction is removed by using the AUX: port. For those interested, the)
+22 W( problem)21 W
+10280 59324 MT
+(is due to the interprocessor link between the video and CPU \050!\051 boards. The VL:)
+1 W( port is on the video board, and)2 W
+10280 60429 MT
+(the AUX: port on the CPU board, and the inter processor link can only transfer seven bits of data.)SH
+10280 62006 MT
+(Supports SET SPEED, and can generate breaks on some models with a BREAK key.)SH
+8280 63583 MT
+(Comart:)SH
+3000 50 8280 63783 UL
+10280 64688 MT
+(Comart Communicator-Similar to Northstar equipment. Can generate BREAK.)SH
+8280 66265 MT
+(Compupro:)SH
+4278 50 8280 66465 UL
+10280 67370 MT
+(Based on Kermit 3.x, and has been merged into V4.09)SH
+8280 68947 MT
+(CPT-85xx word processors:)SH
+10943 50 8280 69147 UL
+10280 70052 MT
+(Can generate BREAK. SET SPEED supported; speeds are 50-9600 baud.)SH
+8280 71629 MT
+(Cromemco:)SH
+4444 50 8280 71829 UL
+ES
+%%Page: 14 15
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 14)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.6.3)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+8120 7886 MT
+(Cromemco computers with TU-ART card. Supports SET BAUD-RATE \050110-9600 baud\051.)SH
+6120 9463 MT
+(DEC DECmate II word processor \050with Z80 card\051:)SH
+20023 50 6120 9663 UL
+8120 10568 MT
+(Can generate BREAK.)SH
+6120 12145 MT
+(DEC VT180 \050Robin\051:)SH
+8444 50 6120 12345 UL
+8120 13250 MT
+(Three output ports, referred to as COMMUNICATIONS, GENERAL, and PRINTER. Can generate BREAK.)SH
+6120 14827 MT
+(Digicomp Delphi 100:)SH
+8722 50 6120 15027 UL
+8120 15932 MT
+(SET SPEED supported; speeds are 50-19200 baud.)SH
+6120 17509 MT
+(Discovery:)SH
+4110 50 6120 17709 UL
+8120 18614 MT
+(Action Computer Enterprises "Discovery" Multi-user Computer. Uses Port)
+31 W( B on an 83U user board. Supports)30 W
+8120 19719 MT
+(SET SPEED for 50-19200 baud. Can generate BREAK.)SH
+6120 21296 MT
+(Epson:)SH
+2500 50 6120 21496 UL
+8120 22401 MT
+(Epson PX-8 with LCD display. Although it is quite different in displaying of Packet Information, it)
+57 W( works as)56 W
+8120 23506 MT
+(any other CP/M-80 Kermit. Supports SET SPEED and can generate BREAK.)SH
+6120 25083 MT
+(Generic Kermit:)SH
+6248 50 6120 25283 UL
+8120 26188 MT
+(Two versions, one for CP/M version 2)46 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2 and version 3. These systems use IOBYTE flipping \050V2)46 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2\051 and)
+46 W( the)45 W
+8120 27293 MT
+(AUX: device)
+306 W( to communicate to the serial line. You may have to SET PORT)
+28 W( xxx before the version 2)29 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2 will)29 W
+8120 28398 MT
+(work, as Kermit needs to know what device is the serial line.)SH
+6120 29975 MT
+(Genie:)SH
+2388 50 6120 30175 UL
+8120 31080 MT
+(Eaca Video Genie.)SH
+6120 32657 MT
+(Heath: Three Versions:)SH
+2388 50 6120 32857 UL
+8120 34448 MT
+(H8QUAD)SH
+10120 35553 MT
+(for Heath-8 systems with the quad io board. This system has been derived from V3.x code. Note)
+14 W( that this)13 W
+10120 36658 MT
+(version will not run "as is" on H89 systems.)SH
+8120 38235 MT
+(H89)SH
+10120 XM
+(For Heath-89 machines suports baud rates from 50 to 56,000 baud.)SH
+8120 39812 MT
+(Z100)SH
+10120 40917 MT
+(For Z-100 running CP/M-85. This version does not support setting of baud rates.)SH
+6120 42708 MT
+(Intertec Superbrain: Two Versions:)SH
+7692 50 6120 42908 UL
+8120 44499 MT
+(BRAINA)SH
+10120 45604 MT
+(For superbrain using AUX port. Breaks and SET BAUD both supported)SH
+8120 47181 MT
+(BRAINM)SH
+10120 48286 MT
+(As above, but using the MAIN port.)SH
+6120 50077 MT
+(Ithaca:)SH
+2443 50 6120 50277 UL
+8120 51182 MT
+(Ithaca Intersystems based computer using the VIO card for all IO to the outside world. The system is strictly)60 W
+8120 52287 MT
+(speaking a home-brew variant of the Ithaca machine, using an S100 cardcage without)
+24 W( a front panel. It uses the)23 W
+8120 53392 MT
+(Extended BIOS by EuroMicro of London. However, I see no reason for this version not running on)
+38 W( a genuine)39 W
+8120 54497 MT
+(Ithaca Intersystems machine. There are patches needed to the EuroMicro BIOS to make this version work.)SH
+6120 56074 MT
+(Kaypro:)SH
+3277 50 6120 56274 UL
+8120 57179 MT
+(Should work on most Kaypro models, as well)
+24 W( as some related systems \050Ferguson BigBoard I, Xerox 820\051. For)25 W
+8120 58284 MT
+(the newer Kaypros with multiple ports, Kermit uses)
+14 W( the one labeled "serial data"; it cannot use the serial printer)13 W
+8120 59389 MT
+(or internal modem ports \050but it should)
+81 W( be possible to modify the values for mnport, mnprts, and baudrt to do)82 W
+8120 60494 MT
+(this\051. Can)
+250 W( generate BREAK. SET SPEED supported; speeds are 50-19200 baud.)SH
+6120 62071 MT
+(Lobo:)SH
+2111 50 6120 62271 UL
+8120 63176 MT
+(Lobo MAX-80. Supports SET SPEED and can generate BREAKS.)SH
+6120 64753 MT
+(Merlin:)SH
+2722 50 6120 64953 UL
+8120 65858 MT
+(British Telecom Merlin M2215 \050also Rair Black Box, possibly also the ICL PC?\051. Requires a terminal.)SH
+6120 67435 MT
+(Microbee:)SH
+3832 50 6120 67635 UL
+8120 68540 MT
+(Microbee Systems computer made in Australia. Works on Microbee 56K \050Series 2 APC\051, 64K)
+26 W( \050Computer in a)27 W
+8120 69645 MT
+(Book\051, 128K \050Dynamic\051, and 256K)
+94 W( \050256TC\051. Can generate BREAK. SET BAUD-RATE supported; speeds)93 W
+8120 70750 MT
+(are 75-9600. All serial I/O is via software, not)
+86 W( hardware. Simultaneous transmit and receive possible on all)87 W
+8120 71855 MT
+(speeds except 75/1200, 1200/75, 4800, and 9600.)SH
+ES
+%%Page: 15 16
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.6.3. System-Specific Versions)SH
+10 /Times-Italic AF
+51775 XM
+(Page 15)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+8280 7886 MT
+(Micromate:)SH
+4388 50 8280 8086 UL
+10280 8991 MT
+(PMC 101 Micromate. Supports SET SPEED and can generate BREAK.)SH
+8280 10568 MT
+(Micromint: Two versions)SH
+4278 50 8280 10768 UL
+10280 12359 MT
+(S6)SH
+12280 XM
+(The Ciarcia/Micromint sb-180 board with a 6Mhz procoessor. System requires a terminal.)SH
+10280 13936 MT
+(S9)SH
+12280 XM
+(As above, but with a 9Mhz processor.)SH
+8280 15727 MT
+(NCR:)SH
+2056 50 8280 15927 UL
+10280 16832 MT
+(Decisionmate 5. Uses the 2651 and is largely the same as the Ithaca Intersystems machine implementation.)SH
+8280 18409 MT
+(Northstar: -- There are four versions available:)SH
+3777 50 8280 18609 UL
+10280 20200 MT
+(NORTHS:)SH
+12280 21305 MT
+(Northstar Horizon with HS10-4 board. Supports SET SPEED and SET PORT.)SH
+10280 22882 MT
+(HORIZON:)SH
+12280 23987 MT
+(Northstar Horizon using the serial ports on the Mother board. Can generate BREAK.)SH
+10280 25564 MT
+(BASICNS:)SH
+12280 26669 MT
+(Basic Northstar Horizon using the printer port. Can generate BREAK.)SH
+10280 28246 MT
+(ADVANT:)SH
+12280 29351 MT
+(Northstar Advantage. Supports SET SPEED and can generate BREAK. Traps Control-0 in the)
+100 W( system)99 W
+12280 30456 MT
+(filter.)SH
+8280 32247 MT
+(Morrow Decision I:)SH
+7665 50 8280 32447 UL
+10280 33352 MT
+(Uses the Multi-I/O board. Port 1 is the console, port 3 is the communications line. SET SPEED)
+89 W( supported;)88 W
+10280 34457 MT
+(speeds are 75-56000 baud.)SH
+8280 36034 MT
+(Morrow Micro Decision I:)SH
+10359 50 8280 36234 UL
+8280 37611 MT
+(Nokia MicroMikko:)SH
+7805 50 8280 37811 UL
+10280 38716 MT
+(Will not echo control-O \050which locks keyboard\051. SET SPEED supported; speeds are 75-9600 baud.)SH
+8280 40293 MT
+(Ohio Scientific:)SH
+6083 50 8280 40493 UL
+10280 41398 MT
+(Doesn't have screen control.)SH
+8280 42975 MT
+(Osborne 1:)SH
+4138 50 8280 43175 UL
+10280 44080 MT
+(Uses serial line, not internal modem. Left-arrow key generates)
+39 W( <DEL> \050"delete" or "rubout" character\051 during)38 W
+10280 45185 MT
+(connect mode. SET SPEED supported; speeds are 300 and 1200 baud. Now supports multi-sector buffering.)SH
+8280 46762 MT
+(Research Machines: Two Versions:)SH
+7803 50 8280 46962 UL
+10280 48553 MT
+(RM380ZM:)SH
+12280 49658 MT
+(380Z and 5.25" disks supports SET BAUD.RATE)SH
+10280 51235 MT
+(RM380ZF:)SH
+12280 52340 MT
+(380Z and 8" disks, otherwise as above.)SH
+8280 54131 MT
+(Sanyo:)SH
+2500 50 8280 54331 UL
+10280 55236 MT
+(Sanyo MBC-1100. This version derived from Kermit V3.x)SH
+8280 56813 MT
+(ScreenTyper:)SH
+5109 50 8280 57013 UL
+10280 57918 MT
+(Details unkown.)SH
+8280 59495 MT
+(TRS-80: Three versions:)SH
+3167 50 8280 59695 UL
+10280 61286 MT
+(TRS80LB:)SH
+12280 62391 MT
+(TRS-80 with Lifeboat CP/M)SH
+10280 63968 MT
+(TRS80PT:)SH
+12280 65073 MT
+(TRS-80 with Pickles and Trout CP/M)SH
+10280 66650 MT
+(TRSM4:)SH
+12280 67755 MT
+(TRS-80 Model 4 with Montezuma CP/M)SH
+8280 69546 MT
+(Teletek:)SH
+2999 50 8280 69746 UL
+10280 70651 MT
+(Teletek Systemaster. Supports SET BAUD.)SH
+ES
+%%Page: 16 17
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 16)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.6.3)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+6120 7886 MT
+(Telcon:)SH
+2777 50 6120 8086 UL
+8120 8991 MT
+(TELCON ZOBRA portable computer.)SH
+6120 10568 MT
+(Torch:)SH
+2388 50 6120 10768 UL
+8120 11673 MT
+(Torch Unicorn 5 initially, but the code runs on other Z80 based CP/N \050as in Nut!\051 systems.)
+79 W( It)
+410 W( uses the BBC)80 W
+8120 12778 MT
+(Computer as a "Base processor", and is similar to the BBC version. The base processors RS423)
+77 W( port is used)76 W
+8120 13883 MT
+(rather than any built in Modem. \050UK telecoms legislation effectively)
+109 W( makes modem control software tricky)110 W
+8120 14988 MT
+(business...\051. Two)
+591 W( potential versions exist-one using cursor positioning codes for a MCP and CCCP ROM)170 W
+8120 16093 MT
+(combination of revision less than 1.00, the other version uses the additional facility MCP/CCCP)
+196 W( versions)197 W
+8120 17198 MT
+(greater than 1. Supports SET SPEED and can generate BREAKs.)SH
+8120 18775 MT
+(Note that binary files must be transferred using SET PARITY to anything other than)
+45 W( NONE! Parity is neither)44 W
+8120 19880 MT
+(generated nor checked.)SH
+6120 21457 MT
+(US Micro Sales:)SH
+6333 50 6120 21657 UL
+8120 22562 MT
+(S-100-8 based computer.)SH
+6120 24139 MT
+(Vector Graphics:)SH
+6581 50 6120 24339 UL
+8120 25244 MT
+(Vector)SH
+6120 26821 MT
+(Xerox:)SH
+2499 50 6120 27021 UL
+8120 27926 MT
+(Xerox 820.)SH
+6120 29503 MT
+(Z80MU:)SH
+3222 50 6120 29703 UL
+8120 30608 MT
+(Development Kermit on a PC running the)
+298 W( Z80MU Z80 and CP/M 2)299 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2 development system. Allows)299 W
+8120 31713 MT
+(development of the system independent modules to be done on an IBM)
+241 W( PC or clone. Also allows the)240 W
+8120 32818 MT
+(generation of new .HEX files, that may then be KERMITed to the target system. Note:)
+54 W( Not)
+359 W( all the BDOS or)55 W
+8120 33923 MT
+(BIOS routines are supported, so avoid "unusual" BIOS/BDOS calls. \050For example,)
+92 W( DIR from within Kermit)91 W
+8120 35028 MT
+(will fail as one of the BIOS routines returning disk parameters is not supported.\051)SH
+14 /Times-Bold AF
+6120 38630 MT
+(1.7. Installation of Kermit-80)SH
+10 /Times-Roman AF
+6120 40748 MT
+(Kermit-80 was written originally for the Intertec SuperBrain in lowest-common-denominator)
+97 W( 8080)
+445 W( code with the)98 W
+6120 41944 MT
+(standard assembler, ASM \050single source module, no macros, no advanced)
+293 W( instructions\051, so that it could be)292 W
+6120 43140 MT
+(assembled on any CP/M-80 system \050the 8080 assembler is distributed as a standard)
+83 W( part of CP/M-80, whereas the)84 W
+6120 44336 MT
+(fancier Z80 or macro assemblers are normally commercial products\051. It has since been modified to run on many)99 W
+6120 45532 MT
+(other systems as well. Kermit-80 should be able)
+106 W( to run on any 8080-, 8085- or Z80-based microcomputer under)107 W
+6120 46728 MT
+(CP/M with appropriate minor changes to reflect the port I/O and screen control for the system \050see below\051.)SH
+6120 49120 MT
+(The proliferation of new systems supported by Kermit-80 made)
+66 W( the program grow so large and complicated that it)65 W
+6120 50316 MT
+(had to be)
+138 W( broken up into system-independent and system-dependent modules, as of version 4 \050this was done by)139 W
+6120 51512 MT
+(Charles Carvalho of ACC\051. Each module is composed of multiple files. This has reduced the time and disk)
+57 W( space)56 W
+6120 52708 MT
+(necessary for assembly; Kermit-80 may)
+126 W( once again be assembled on a CP/M system with roughly 250Kbytes of)127 W
+6120 53904 MT
+(space. The)
+302 W( majority of the code does not)
+26 W( need to be reassembled to support a new system. Unfortunately, it can no)25 W
+6120 55100 MT
+(longer be assembled with ASM, since ASM does not support multiple input files.)
+73 W( To)
+398 W( allow it to be assembled on)74 W
+6120 56296 MT
+(any CP/M system,)
+103 W( the public-domain assembler LASM is included in the distribution kit. Kermit-80 may also be)102 W
+6120 57492 MT
+(assembled with Microsoft's M80 \050not supplied\051. In theory, any 8080)
+33 W( assembler supporting the INCLUDE directive)34 W
+6120 58688 MT
+(ought to work, as well.)SH
+6120 61080 MT
+(All versions of Kermit-80 are)
+72 W( assembled from the same set of sources, with system dependencies taken care of by)71 W
+6120 62276 MT
+(assembly-time conditionals within the system-dependent module \050eventually, the system-dependent module)
+183 W( will)184 W
+6120 63472 MT
+(itself be broken up into multiple files, one for each system\051. The most important)
+45 W( system dependencies are terminal)44 W
+6120 64668 MT
+(emulation \050when CONNECTed to)
+153 W( the remote host\051 and screen handling, which are dependent on the individual)154 W
+6120 65864 MT
+(micro's escape codes \050these features are table driven and easily modified for other CP/M)
+74 W( systems\051, and the lowest)73 W
+6120 67060 MT
+(level I/O routines for the serial communications port. The)
+93 W( port routines are best done only with BDOS calls, but)94 W
+6120 68256 MT
+(some systems do not allow this, primarily because the BDOS)
+91 W( routines strip the parity bit during port I/O, and the)90 W
+6120 69452 MT
+(parity bit is used for data when transmitting binary files.)SH
+6120 71844 MT
+(Kermit-80's I/O routines must check the port status and go elsewhere if no input is available; this allows for virtual)38 W
+ES
+%%Page: 17 18
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.7. Installation of Kermit-80)SH
+10 /Times-Italic AF
+51775 XM
+(Page 17)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+8280 7886 MT
+(terminal connection, keyboard interruption of stuck transmissions, etc. On systems that fully)
+246 W( implement I/O)245 W
+8280 9082 MT
+(redirection via the optional CP/M IOBYTE facility, this may be done by switching)
+127 W( the IOBYTE definition. On)128 W
+8280 10278 MT
+(others, however, IN/OUT instructions explicitly referencing the port device registers must be used.)SH
+8280 12670 MT
+(CP/M-80 KERMIT)
+110 W( versions 3.8 and later include a "fuzzy timer" that allows a timeout to occur after an interval)109 W
+8280 13866 MT
+(ranging from 5 to 20 seconds \050depending upon the speed)
+32 W( of the processor and the operating system routines\051 during)33 W
+8280 15062 MT
+(which expected input does not appear at the port. In this)
+2 W( case, retransmission occurs automatically. In any case, you)1 W
+8280 16258 MT
+(may type a carriage return during transmission to simulate a timeout when the transfer appears to be stuck.)SH
+12 /Times-Bold AF
+8280 19374 MT
+(1.7.1. Organization of Kermit-80)SH
+10 /Times-Roman AF
+8280 21316 MT
+(Kermit-80 consists of two modules, each of which is generated from multiple source files.)
+209 W( The)
+669 W( first module)210 W
+8280 22512 MT
+(contains the system-independent code;)
+27 W( the second module is configured for a particular system and merged with the)26 W
+8280 23708 MT
+(system-independent module to produce a customized Kermit-80.)SH
+8280 26100 MT
+(The distribution kit contains:)SH
+/Symbol SF
+10070 28005 MT
+(\267)SH
+/Times-Roman SF
+10780 XM
+(the system-independent module,)SH
+/Courier SF
+24001 XM
+(CPSKER.HEX)SH
+/Times-Roman SF
+(;)SH
+/Symbol SF
+10070 29110 MT
+(\267)SH
+/Times-Roman SF
+10780 XM
+(the system-dependent modules,)SH
+/Courier SF
+23612 XM
+(CPV*.HEX)SH
+/Times-Roman SF
+28662 XM
+(\050see table 1-2 and 1-3\051;)SH
+/Symbol SF
+10070 30215 MT
+(\267)SH
+/Times-Roman SF
+10780 XM
+(the source files,)SH
+/Courier SF
+17334 XM
+(CPS*.ASM)SH
+/Times-Roman SF
+22384 XM
+(and)SH
+/Courier SF
+24078 XM
+(CPX*.ASM)SH
+/Times-Roman SF
+(,)SH
+/Symbol SF
+10070 31320 MT
+(\267)SH
+/Times-Roman SF
+10780 XM
+(the public-domain CP/M assembler,)SH
+/Courier SF
+25474 XM
+(LASM.*)SH
+/Times-Roman SF
+(,)SH
+/Symbol SF
+10070 32425 MT
+(\267)SH
+/Times-Roman SF
+10780 XM
+(the public-domain CP/M load/patch utility,)SH
+/Courier SF
+28281 XM
+(MLOAD.*)SH
+ES
+%%Page: 18 19
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 18)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.7.1)SH
+46800 50 6120 5709 UL
+46800 50 6120 8086 UL
+10 /Courier AF
+6120 10167 MT
+(Symbol Filename)
+600 W( System)SH
+3600 50 6120 10367 UL
+4800 50 10920 10367 UL
+3600 50 16320 10367 UL
+6120 11854 MT
+(ACCESS CPVACC)600 W
+/Times-Roman SF
+15720 XM
+(Access Matrix)SH
+/Courier SF
+6120 12885 MT
+(ADVANT CPVADV)600 W
+/Times-Roman SF
+15720 XM
+(Northstar Advantage)SH
+/Courier SF
+6120 13916 MT
+(AP6551 CPVAPL)600 W
+/Times-Roman SF
+15720 XM
+(Apple II, Z80 Softcard, 6551 ACIA in serial interface)SH
+/Courier SF
+6120 14947 MT
+(AP6850 CPVA65)600 W
+/Times-Roman SF
+15720 XM
+(Apple II, Z80 Softcard, 6850 ACIA in Serial Iiterface)SH
+/Courier SF
+6120 15978 MT
+(APMMDM CPVAPM)600 W
+/Times-Roman SF
+15720 XM
+(Apple II, Z80 Softcard, Micromodem II in slot 2)SH
+/Courier SF
+6120 17009 MT
+(APCPS CPVCPS)1200 W
+/Times-Roman SF
+15720 XM
+(Apple II, Z80 Softcard, with CPS multifunction card)SH
+/Courier SF
+6120 18040 MT
+(BASICNS CPVBNS)SH
+/Times-Roman SF
+15720 XM
+(Northstar Horizon \050terminal required\051)SH
+/Courier SF
+6120 19071 MT
+(BBC CPVBBC)2400 W
+/Times-Roman SF
+15720 XM
+(Acorn "BBC" computer with Acorn Z80 second processor)SH
+/Courier SF
+6120 20102 MT
+(BBII CPVBB2)1800 W
+/Times-Roman SF
+15720 XM
+(BigBoard II \050terminal required\051)SH
+/Courier SF
+6120 21133 MT
+(BRAINM CPVBRM)600 W
+/Times-Roman SF
+15720 XM
+(Intertec Superbrain using the main port)SH
+/Courier SF
+6120 22164 MT
+(BRAINA CPVBRA)600 W
+/Times-Roman SF
+15720 XM
+(Intertec Superbrain using the Aux port)SH
+/Courier SF
+6120 23195 MT
+(CIFER2 CPVCIF)600 W
+/Times-Roman SF
+15720 XM
+(Cifer 1886 using the VL: Serial port and CP/M V2.2)SH
+/Courier SF
+6120 24226 MT
+(CIFER3 CPVCI3)600 W
+/Times-Roman SF
+15720 XM
+(Cifer 1886 using the VL: Serial port and CP/M V3.0)SH
+/Courier SF
+6120 25257 MT
+(CIFER2 CPVCA2)600 W
+/Times-Roman SF
+15720 XM
+(Cifer 1886 using the AUX: Serial port and CP/M V2.2)SH
+/Courier SF
+6120 26288 MT
+(CIFER3 CPVCA3)600 W
+/Times-Roman SF
+15720 XM
+(Cifer 1886 using the AUX: Serial port and CP/M V3.0)SH
+/Courier SF
+6120 27319 MT
+(CMEMCO CPVCRO)600 W
+/Times-Roman SF
+15720 XM
+(Cromemco with TU-ART card. Terminal required\051)SH
+/Courier SF
+6120 28350 MT
+(COMART CPVCOM)600 W
+/Times-Roman SF
+15720 XM
+(Comart Communicator \050terminal required\051)SH
+/Courier SF
+6120 29381 MT
+(COMPRO CPVPRO)600 W
+/Times-Roman SF
+15720 XM
+(Compupro with Interfacer 4 \050or 3\051. Terminal required.)SH
+/Courier SF
+6120 30412 MT
+(CPC CPVCPC)2400 W
+/Times-Roman SF
+15720 XM
+(Amstrad CPC 664 and 6128 and CP/M 3)SH
+/Courier SF
+6120 31443 MT
+(CPM3 CPVCP3)1800 W
+/Times-Roman SF
+15720 XM
+("Generic": CP/M 3.0 \050CP/M Plus\051 systems \050terminal req'd\051)SH
+/Courier SF
+6120 32474 MT
+(CPT85XX CPVCPT)SH
+/Times-Roman SF
+15720 XM
+(CPT-85xx wordprocessor with CP/M)SH
+/Courier SF
+6120 33505 MT
+(DELPHI CPVDEL)600 W
+/Times-Roman SF
+15720 XM
+(Digicomp Delphi 100 \050terminal required\051)SH
+/Courier SF
+6120 34536 MT
+(DISC CPVDIS)1800 W
+/Times-Roman SF
+15720 XM
+(Action Computer Enterprises "Discovery" \050terminal req'd\051)SH
+/Courier SF
+6120 35567 MT
+(DMII CPVDM2)1800 W
+/Times-Roman SF
+15720 XM
+(DECmate II with CP/M option)SH
+/Courier SF
+6120 36598 MT
+(GENER CPVGEN)1200 W
+/Times-Roman SF
+15720 XM
+("Generic": CPM 2.2 systems with IOBYTE \050terminal req'd\051)SH
+/Courier SF
+6120 37629 MT
+(GENIE CPVGNI)1200 W
+/Times-Roman SF
+15720 XM
+(Video Genie)SH
+/Courier SF
+6120 38660 MT
+(H8QUAD CPVH8Q)600 W
+/Times-Roman SF
+15720 XM
+(Heath-8 with Quad 8 i/o board)SH
+/Courier SF
+6120 39691 MT
+(HEATH CPVH89)1200 W
+/Times-Roman SF
+15720 XM
+(Heath/Zenith H89)SH
+/Courier SF
+6120 40722 MT
+(HORIZON CPVHOR)SH
+/Times-Roman SF
+15720 XM
+(Northstar Horizon \050terminal required\051)SH
+/Courier SF
+6120 41753 MT
+(KPII CPVKPR)1800 W
+/Times-Roman SF
+15720 XM
+(Kaypro-II \050and 4; probably supports all Kaypro systems\051)SH
+/Courier SF
+6120 42784 MT
+(LOBO CPVLBO)1800 W
+/Times-Roman SF
+15720 XM
+(Lobo Max-80)SH
+6120 44575 MT
+("symbol" is the symbol used to select the target system, in)SH
+/Courier SF
+29658 XM
+(CPVTYP.ASM)SH
+/Times-Roman SF
+(;)SH
+6120 46802 MT
+("filename" is the name under which the module is supplied in the distribution.)SH
+/Times-Bold SF
+18854 48412 MT
+(Table 1-2:)SH
+/Times-Roman SF
+23715 XM
+(Systems supported by Kermit-80 \050Part 1\051)SH
+46800 50 6120 50222 UL
+ES
+%%Page: 19 20
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.7.1. Organization of Kermit-80)SH
+10 /Times-Italic AF
+51775 XM
+(Page 19)SH
+46800 50 8280 5709 UL
+46800 50 8280 8086 UL
+/Courier SF
+8280 10167 MT
+(Symbol Filename)
+600 W( System)SH
+3600 50 8280 10367 UL
+4800 50 13080 10367 UL
+3600 50 18480 10367 UL
+8280 11854 MT
+(M2215 CPVMRL)1200 W
+/Times-Roman SF
+17880 XM
+(British Telecom Merlin/Rair Black Box \050terminal required\051)SH
+/Courier SF
+8280 12885 MT
+(MBEE CPVBEE)1800 W
+/Times-Roman SF
+17880 XM
+(Microbee)SH
+/Courier SF
+8280 13916 MT
+(MDI CPVMDI)2400 W
+/Times-Roman SF
+17880 XM
+(Morrow Decision I \050terminal required\051)SH
+/Courier SF
+8280 14947 MT
+(MIKKO CPVMIK)1200 W
+/Times-Roman SF
+17880 XM
+(MikroMikko)SH
+/Courier SF
+8280 15978 MT
+(MMATE CPVMM)1200 W
+/Times-Roman SF
+17880 XM
+(PMC 101 Micromate \050terminal required\051)SH
+/Courier SF
+8280 17009 MT
+(MMDI CPVUD)1800 W
+/Times-Roman SF
+17880 XM
+(Morrow Micro Decision I \050terminal required\051)SH
+/Courier SF
+8280 18040 MT
+(NCRDMV CPVDMV)600 W
+/Times-Roman SF
+17880 XM
+(NCR Decision Mate V. \050Terminal required?\051)SH
+/Courier SF
+8280 19071 MT
+(NORTHS CPVNS)600 W
+/Times-Roman SF
+17880 XM
+(Northstar Horizon with HSIO-4 card \050terminal req'd\051)SH
+/Courier SF
+8280 20102 MT
+(OSBRN1 CPVOSB)600 W
+/Times-Roman SF
+17880 XM
+(Osborne 1)SH
+/Courier SF
+8280 21133 MT
+(OSI CPVOSI)2400 W
+/Times-Roman SF
+17880 XM
+(Ohio Scientific)SH
+/Courier SF
+8280 22164 MT
+(PCI2651 CPVPCI)SH
+/Times-Roman SF
+17880 XM
+(Ithaca Intersystems with VI0 card \050terminal required\051)SH
+/Courier SF
+8280 23195 MT
+(PCW CPVPCW)2400 W
+/Times-Roman SF
+17880 XM
+(Amstrad PCW 8256/8512 with serial interface)SH
+/Courier SF
+8280 24226 MT
+(PX8 CPVPX8)2400 W
+/Times-Roman SF
+17880 XM
+(Epson PX-8)SH
+/Courier SF
+8280 25257 MT
+(RM380ZM CPVRMM)SH
+/Times-Roman SF
+17880 XM
+(Research Machines 380Z with MDS \0505.25" discs\051)SH
+/Courier SF
+8280 26288 MT
+(RM380ZF CPVRMF)SH
+/Times-Roman SF
+17880 XM
+(Research Machines 380Z with FDS \0508" discs\051)SH
+/Courier SF
+8280 27319 MT
+(ROBIN CPVROB)1200 W
+/Times-Roman SF
+17880 XM
+(DEC VT180)SH
+/Courier SF
+8280 28350 MT
+(S1008 CPVUSM)1200 W
+/Times-Roman SF
+17880 XM
+(US Microsales S-100-8 \050terminal required\051)SH
+/Courier SF
+8280 29381 MT
+(SANYO CPVSAN)1200 W
+/Times-Roman SF
+17880 XM
+(Sanyo MBC-1100)SH
+/Courier SF
+8280 30412 MT
+(SB6 CPVSB6)2400 W
+/Times-Roman SF
+17880 XM
+(Micromint SB-180 with 6Mhz CPU \050terminal required\051)SH
+/Courier SF
+8280 31443 MT
+(SB9 CPVSB9)2400 W
+/Times-Roman SF
+17880 XM
+(Micromint SB-180 with 9Mhz CPU \050terminal required\051)SH
+/Courier SF
+8280 32474 MT
+(SCNTPR CPVSCN)600 W
+/Times-Roman SF
+17880 XM
+(Screentyper)SH
+/Courier SF
+8280 33505 MT
+(TELCON CPVTEL)600 W
+/Times-Roman SF
+17880 XM
+(TELCON Zobra portable)SH
+/Courier SF
+8280 34536 MT
+(TELETEK CPVTET)SH
+/Times-Roman SF
+17880 XM
+(Teletek Systemaster)SH
+/Courier SF
+8280 35567 MT
+(TORCH CPVTRC)1200 W
+/Times-Roman SF
+17880 XM
+(Torch computers BBC-B with Z80 second processors)SH
+/Courier SF
+8280 36598 MT
+(TRS80LB CPVTLB)SH
+/Times-Roman SF
+17880 XM
+(TRS-80 model II with Lifeboat 2.25C CP/M Display)SH
+/Courier SF
+8280 37629 MT
+(TRS80PT CPVTPT)SH
+/Times-Roman SF
+17880 XM
+(TRS-80 model II with Pickles + Trout CP/M Display)SH
+/Courier SF
+8280 38660 MT
+(TRSM4 CPVTM4)1200 W
+/Times-Roman SF
+17880 XM
+(TRS-80 model IV)SH
+/Courier SF
+8280 39691 MT
+(VECTOR CPVVEC)600 W
+/Times-Roman SF
+17880 XM
+(Vector Graphics)SH
+/Courier SF
+8280 40722 MT
+(XER820 CPVXER)600 W
+/Times-Roman SF
+17880 XM
+(Xerox 820)SH
+/Courier SF
+8280 41753 MT
+(Z100 CPVZ00)1800 W
+/Times-Roman SF
+17880 XM
+(Z-100 under CP/M-85)SH
+/Courier SF
+8280 42784 MT
+(Z80MU CPVZ80)1200 W
+/Times-Roman SF
+17880 XM
+(Z80MU development system on a PC)SH
+8280 44575 MT
+("symbol" is the symbol used to select the target system, in)SH
+/Courier SF
+31818 XM
+(CPXTYP.ASM)SH
+/Times-Roman SF
+(;)SH
+8280 46802 MT
+("filename" is the name under which the module is supplied in the distribution.)SH
+/Times-Bold SF
+21014 48412 MT
+(Table 1-3:)SH
+/Times-Roman SF
+25875 XM
+(Systems supported by Kermit-80 \050Part 2\051)SH
+46800 50 8280 50222 UL
+ES
+%%Page: 20 21
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 20)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.7.1)SH
+46800 50 6120 5709 UL
+46800 50 6120 8086 UL
+10 /Courier AF
+6120 10167 MT
+(Symbol Terminal)
+600 W( type)SH
+3600 50 6120 10367 UL
+4800 50 10920 10367 UL
+2400 50 16320 10367 UL
+6120 11854 MT
+(CRT)SH
+/Times-Roman SF
+10920 XM
+(Dumb terminal type. Does not do cursor addressing)SH
+/Courier SF
+6120 12885 MT
+(ADM3A)SH
+/Times-Roman SF
+10920 XM
+(Lear Seigler ADM 3A)SH
+/Courier SF
+6120 13916 MT
+(ADM22)SH
+/Times-Roman SF
+10920 XM
+(Lear Seigler ADM 22)SH
+/Courier SF
+6120 14947 MT
+(AM230)SH
+/Times-Roman SF
+10920 XM
+(Ampro 230)SH
+/Courier SF
+6120 15978 MT
+(H1500)SH
+/Times-Roman SF
+10920 XM
+(Hazeltine 1500)SH
+/Courier SF
+6120 17009 MT
+(SMRTVD)SH
+/Times-Roman SF
+10920 XM
+(Netronics Smartvid)SH
+/Courier SF
+6120 18040 MT
+(SOROQ)SH
+/Times-Roman SF
+10920 XM
+(Soroq IQ-120)SH
+/Courier SF
+6120 19071 MT
+(TVI912)SH
+/Times-Roman SF
+10920 XM
+(Televideo 912)SH
+/Courier SF
+6120 20102 MT
+(TVI925)SH
+/Times-Roman SF
+10920 XM
+(Televideo 925 or Freedom 100)SH
+/Courier SF
+6120 21133 MT
+(VT52)SH
+/Times-Roman SF
+10920 XM
+(Dec VT52 or equivalent \050H19\051)SH
+/Courier SF
+6120 22164 MT
+(VT100)SH
+/Times-Roman SF
+10920 XM
+(Dec VT100 or equivalent)SH
+/Courier SF
+6120 23195 MT
+(WYSE)SH
+/Times-Roman SF
+10920 XM
+(Wyse 100)SH
+6120 24986 MT
+("symbol" is the symbol used to select the target system, in)SH
+/Courier SF
+29658 XM
+(CPXTYP.ASM)SH
+/Times-Roman SF
+(;)SH
+6120 27213 MT
+("Terminal type" is the type of terminal "symbol" selects.)SH
+/Times-Bold SF
+20132 28823 MT
+(Table 1-4:)SH
+/Times-Roman SF
+24993 XM
+(Terminals supported by Kermit-80)SH
+46800 50 6120 30633 UL
+12 /Times-Bold AF
+6120 33549 MT
+(1.7.2. Downloading Kermit-80)SH
+10 /Times-Roman AF
+6120 35491 MT
+(You'll need either a pre-configured)4 W
+/Courier SF
+20552 XM
+(.COM)SH
+/Times-Roman SF
+23207 XM
+(file or the system-independent module,)5 W
+/Courier SF
+39119 XM
+(CPSKER)SH
+/Times-Roman SF
+(, in binary \050)5 W
+/Courier SF
+(.COM)SH
+/Times-Roman SF
+(\051 or hex)5 W
+6120 36687 MT
+(\050)SH
+/Courier SF
+(.HEX)SH
+/Times-Roman SF
+(\051 format and the system-dependent overlay for your system \050from Tables 1-2 and 1-3\051. If your system is)
+42 W( not)41 W
+6120 37883 MT
+(listed in the table, get the generic CP/M 2)12 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2 Kermit)
+12 W( or the generic CP/M 3 Kermit. If you already have a version of)13 W
+6120 39079 MT
+(Kermit on)
+75 W( your micro and you want to install a new version, simply use your present version to get the new files.)74 W
+6120 40275 MT
+(Transfer the files to your system and skip ahead to "merging the modules".)SH
+6120 42667 MT
+(If you do)
+27 W( not have a copy of Kermit on your micro, and you cannot borrow a Kermit floppy but you do have access)28 W
+6120 43863 MT
+(to a mainframe computer with a copy of the Kermit-80 distribution, you should read this section.)SH
+6120 46255 MT
+(There are several ways to get CP/M Kermit)
+106 W( from a host system to your micro. The easiest is to "download" the)105 W
+6120 47451 MT
+(necessary "hex" files into your micro's memory and then save them on the disk.)
+84 W( If)
+419 W( you have a terminal emulator)85 W
+6120 48647 MT
+(program on your micro which can save a copy of the session to disk, connect to your host, and type)
+69 W( the necessary)68 W
+6120 49843 MT
+(files. Exit)
+316 W( from the emulator, saving)
+33 W( the session log, and edit the session log to extract the hex files. Skip ahead to)34 W
+6120 51039 MT
+("merging the files".)SH
+6120 53431 MT
+(The following is a procedure which, though far from foolproof, should allow you to get a version of Kermit to your)32 W
+6120 54627 MT
+(CP/M based micro. It depends upon the host prompt, or at least the first character of the host)
+62 W( prompt, being some)63 W
+6120 55823 MT
+(character that cannot appear in a hex)
+58 W( file \050the valid characters for hex files are the digits 0-9, the upper case letters)57 W
+6120 57019 MT
+(A-F, the colon ``)55 W
+/Courier SF
+(:)SH
+/Times-Roman SF
+('', carriage return, and line feed\051. As soon the prompt character is encountered, the transfer)
+55 W( will)56 W
+6120 58215 MT
+(terminate. If)
+288 W( your host)
+19 W( does not issue a prompt that will accommodate this scheme, you can achieve the same effect)18 W
+6120 59411 MT
+(by adding an atsign ``@'' to the very end of the hex file before sending it from the host. The)
+36 W( program below looks)37 W
+6120 60607 MT
+(for an atsign \050the normal DEC-20 prompt, hex 40\051. DECSYSTEM-10 users would)
+241 W( look for a dot, hex 2E;)240 W
+6120 61803 MT
+(VAX/VMS or UNIX users would look for a dollar sign, hex 24; UNIX C-Shell users would look)
+29 W( for a percent sign,)30 W
+6120 62999 MT
+(hex 26.)SH
+8120 64790 MT
+(1.)SH
+9120 XM
+(For CP/M 2)44 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(2 systems, connect to a floppy disk with plenty)
+44 W( of free space. Run DDT and type in the)43 W
+9120 65895 MT
+(following \050the comments should not be typed in; they are there just to tell you what's happening\051:)137 W
+9120 67000 MT
+(\050Note that this wont work for CP/M Plus or 3)SH
+/Courier SF
+(.)SH
+/Times-Roman SF
+(0 systems!\051)SH
+ES
+%%Page: 21 22
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.7.2. Downloading Kermit-80)SH
+10 /Times-Italic AF
+51775 XM
+(Page 21)SH
+46800 50 8280 5709 UL
+46800 50 8280 8086 UL
+/Courier SF
+8280 9585 MT
+(-a100 ;Begin)
+10800 W( assembling code at 100)SH
+11280 10616 MT
+(0100 LXI)
+1800 W( H,2FE)
+SH( ;Where)
+3600 W( to store in memory)SH
+11280 11647 MT
+(0103 SHLD)
+1800 W( 200)
+SH( ;Keep)
+4200 W( pointer there)SH
+11280 12678 MT
+(0106 MVI)
+1800 W( E,D)
+SH( ;Get)
+4800 W( a CR)SH
+11280 13709 MT
+(0108 MVI)
+1800 W( C,4)
+SH( ;Output)
+4800 W( to PUNCH \050send to HOST\051)SH
+11280 14740 MT
+(010A CALL)
+1800 W( 5)SH
+11280 15771 MT
+(010D MVI)
+1800 W( C,3)
+SH( ;Input)
+4800 W( from READER \050read from HOST\051)SH
+11280 16802 MT
+(010F CALL)
+1800 W( 5)SH
+11280 17833 MT
+(0112 ANI)
+1800 W( 7F)
+SH( ;Strip)
+5400 W( parity bit)SH
+11280 18864 MT
+(0114 PUSH)
+1800 W( PSW)
+SH( ;Save)
+4200 W( a and flags)SH
+11280 19895 MT
+(0115 MOV)
+1800 W( E,A)
+SH( ;Move)
+4800 W( char to E for echo)SH
+11280 20926 MT
+(0116 MVI)
+1800 W( C,2)
+SH( ;Output)
+4800 W( to screen)SH
+11280 21957 MT
+(0118 CALL)
+1800 W( 5)SH
+11280 22988 MT
+(011B POP)
+1800 W( PSW)
+SH( ;Restore)
+4800 W( A and flags)SH
+11280 24019 MT
+(011C CPI)
+1800 W( 40)
+SH( ;\050or)
+5400 W( 4E,24,26,etc\051 System prompt?)SH
+11280 25050 MT
+(011E JZ)
+1800 W( 127)
+SH( ;Yes,)
+5400 W( have whole file in memory)SH
+11280 26081 MT
+(0121 CALL)
+1800 W( 17A)
+SH( ;No,)
+4200 W( store another byte)SH
+11280 27112 MT
+(0124 JMP)
+1800 W( 10D)
+SH( ;Read)
+4800 W( another byte)SH
+11280 28143 MT
+(0127 MVI)
+1800 W( A,1A)
+SH( ;Get)
+4200 W( a Control-Z \050CP/M EOF mark\051)SH
+11280 29174 MT
+(0129 CALL)
+1800 W( 17A)
+SH( ;Store)
+4200 W( it in memory)SH
+11280 30205 MT
+(012C LXI)
+1800 W( H,300)
+SH( ;Get)
+3600 W( memory pointer)SH
+11280 31236 MT
+(012F SHLD)
+1800 W( 202)
+SH( ;Store)
+4200 W( as DMA pointer)SH
+11280 32267 MT
+(0132 LDA)
+1800 W( 201)
+SH( ;Get)
+4800 W( 'HI' byte of memory pointer)SH
+11280 33298 MT
+(0135 STA)
+1800 W( 200)
+SH( ;and)
+4800 W( store it as 'LO' one)SH
+11280 34329 MT
+(0138 XRA)
+1800 W( A)SH
+11280 35360 MT
+(0139 STA)
+1800 W( 201)
+SH( ;Zero)
+4800 W( 'HI' byte \050slow *256\051)SH
+11280 36391 MT
+(013C MVI)
+1800 W( C,16)
+SH( ;Make)
+4200 W( NEW file)SH
+11280 37422 MT
+(013E LXI)
+1800 W( D,5C)
+SH( ;With)
+4200 W( FCB1)SH
+11280 38453 MT
+(0141 CALL)
+1800 W( 5)SH
+11280 39484 MT
+(0144 CALL)
+1800 W( 15E)
+SH( ;Write)
+4200 W( 128 bytes \050sector\051)SH
+11280 40515 MT
+(0147 CALL)
+1800 W( 15E)
+SH( ;Write)
+4200 W( another sector)SH
+11280 41546 MT
+(014A LXI)
+1800 W( H,FFFF)
+SH( ;Get)
+3000 W( a 16-bit Minus One)SH
+11280 42577 MT
+(014D XCHG)
+1800 W( ;into)
+6600 W( DE)SH
+11280 43608 MT
+(014E LHLD)
+1800 W( 200)
+SH( ;Get)
+4200 W( 256-byte counter)SH
+11280 44639 MT
+(0151 DAD)
+1800 W( D)
+SH( ;Decrement)6000 W
+11280 45670 MT
+(0152 SHLD)
+1800 W( 200)
+SH( ;and)
+4200 W( store back)SH
+11280 46701 MT
+(0155 MVI)
+1800 W( A,2)
+SH( ;Check)
+4800 W( if)SH
+11280 47732 MT
+(0157 CMP)
+1800 W( L)
+SH( ;)
+6000 W( 256-byte counter down to offset)SH
+11280 48763 MT
+(0158 JZ)
+1800 W( 183)
+SH( ;Yes,)
+5400 W( we're done)SH
+11280 49794 MT
+(015B JMP)
+1800 W( 144)
+SH( ;Keep)
+4800 W( writing..)SH
+11280 50825 MT
+(015E LHLD)
+1800 W( 202)
+SH( ;Get)
+4200 W( file-pointer)SH
+11280 51856 MT
+(0161 XCHG)
+1800 W( ;into)
+6600 W( DE)SH
+11280 52887 MT
+(0162 MVI)
+1800 W( C,1A)
+SH( ;Set)
+4200 W( DMA-address)SH
+11280 53918 MT
+(0164 CALL)
+1800 W( 5)SH
+11280 54949 MT
+(0167 MVI)
+1800 W( C,15)
+SH( ;Write)
+4200 W( sector \050128 bytes\051)SH
+11280 55980 MT
+(0169 LXI)
+1800 W( D,5C)
+SH( ;using)
+4200 W( FCB1)SH
+11280 57011 MT
+(016C CALL)
+1800 W( 5)SH
+11280 58042 MT
+(016F LHLD)
+1800 W( 202)
+SH( ;Get)
+4200 W( file-pointer)SH
+11280 59073 MT
+(0172 LXI)
+1800 W( D,80)
+SH( ;128-bytes)4200 W
+11280 60104 MT
+(0175 DAD)
+1800 W( D)
+SH( ;added)
+6000 W( to file-pointer)SH
+11280 61135 MT
+(0176 SHLD)
+1800 W( 202)
+SH( ;and)
+4200 W( save)SH
+11280 62166 MT
+(0179 RET)
+1800 W( ;and)
+7200 W( return)SH
+11280 63197 MT
+(017A LHLD)
+1800 W( 200)
+SH( ;Get)
+4200 W( Memory-pointer)SH
+11280 64228 MT
+(017D MOV)
+1800 W( M,A)
+SH( ;Store)
+4800 W( character)SH
+11280 65259 MT
+(017E INX)
+1800 W( H)
+SH( ;Increment)
+6000 W( Pointer)SH
+11280 66290 MT
+(017F SHLD)
+1800 W( 200)
+SH( ;and)
+4200 W( save)SH
+11280 67321 MT
+(0182 RET)
+1800 W( ;and)
+7200 W( return)SH
+11280 68352 MT
+(0183 MVI)
+1800 W( C,10)
+SH( ;CLOSE)
+4200 W( file)SH
+11280 69383 MT
+(0185 LXI)
+1800 W( D,5C)
+SH( ;using)
+4200 W( FCB1)SH
+11280 70414 MT
+(0188 CALL)
+1800 W( 5)SH
+11280 71445 MT
+(018B JMP)
+1800 W( 0)
+SH( ;Force)
+6000 W( WARM BOOT)SH
+ES
+%%Page: 22 23
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 22)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.7.2)SH
+46800 50 6120 5709 UL
+10 /Courier AF
+9120 7824 MT
+(0179)SH
+9120 8855 MT
+(-^C ;\050Type)
+12000 W( Control-C\051 Return to CP/M)SH
+9120 9886 MT
+(A>SAVE 1 FETCH.COM)
+SH( ;Save)
+3000 W( program, we need to run it twice.)SH
+/Times-Bold SF
+15591 11496 MT
+(Figure 1-1:)SH
+/Times-Roman SF
+20840 XM
+(Bootstrap program for Kermit-80 and CP/M Version 2.2)SH
+46800 50 6120 13306 UL
+9120 14823 MT
+(Alternatively, an assembler source file for this program is distributed with)
+374 W( CP/M Kermit as)373 W
+/Courier SF
+9120 15928 MT
+(CPKFET.ASM)SH
+/Times-Roman SF
+(. You)
+478 W( might prefer to type the assembler)
+114 W( version in and assemble and load it \050ASM)115 W
+9120 17033 MT
+(CPKFET, LOAD CPKFET, or MASM CPKFET,)
+43 W( MLOAD CPKFET\051, to let the assembler and loader)42 W
+9120 18138 MT
+(catch any typing errors.)SH
+8120 20348 MT
+(2.)SH
+9120 XM
+(Connect to your host using a terminal or a terminal emulation program. Ensure that your host does)
+6 W( not)7 W
+9120 21453 MT
+(have your terminal in "page mode" \050does not pause at the end of each screenful\051.)SH
+8120 23663 MT
+(3.)SH
+9120 XM
+(Tell the host to display the first hex file \050the)
+38 W( system-independent module\051 at your terminal, e.g. give a)37 W
+9120 24768 MT
+(command like)SH
+/Courier SF
+15064 XM
+(TYPE CPSKER.HEX)SH
+/Times-Roman SF
+(,)SH
+/Times-Italic SF
+24564 XM
+(without a terminating carriage return)SH
+/Times-Roman SF
+(.)SH
+3001 50 24564 24968 UL
+8120 26978 MT
+(4.)SH
+9120 XM
+(Return to your micro by switching the cable from the terminal to the micro, or by terminating)
+142 W( the)143 W
+9120 28083 MT
+(micro's terminal program.)SH
+8120 30293 MT
+(5.)SH
+9120 XM
+(Make sure your IOBYTE is set so that)17 W
+/Courier SF
+24864 XM
+(RDR:)SH
+/Times-Roman SF
+27530 XM
+(and)SH
+/Courier SF
+29240 XM
+(PUN:)SH
+/Times-Roman SF
+31906 XM
+(correspond to the I/O port that is connected to)16 W
+9120 31398 MT
+(the host \050this would normally be the case unless you have done something special to change things\051.)SH
+8120 33608 MT
+(6.)SH
+9120 XM
+(Load the program you entered in the first step with DDT, and use it to capture the first hex file:)SH
+/Courier SF
+11520 35263 MT
+(DDT FETCH.COM)SH
+11520 36294 MT
+(-icpsker.hex ;Setup)
+6600 W( FCB for file CPSKER.HEX)SH
+11520 37325 MT
+(-g100,179 ;Execute)
+8400 W( the program.)SH
+/Times-Roman SF
+9120 39042 MT
+(Now there should be a file)SH
+/Courier SF
+19951 XM
+(CPSKER.HEX)SH
+/Times-Roman SF
+26201 XM
+(on your connected disk.)SH
+8120 41252 MT
+(7.)SH
+9120 XM
+(Return to the host, and tell it)
+112 W( to display the second hex file \050the system-dependent module for your)113 W
+9120 42357 MT
+(configuration\051. Again,)
+250 W( do not type the terminating carriage return.)SH
+8120 44567 MT
+(8.)SH
+9120 XM
+(Return to your micro, and run the capture program again:)SH
+/Courier SF
+11520 46222 MT
+(DDT FETCH.COM)SH
+11520 47253 MT
+(-icpxovl.hex ;Setup)
+6600 W( FCB to create CPXOVL.HEX)SH
+11520 48284 MT
+(-g100,179 ;Execute)
+8400 W( the program.)SH
+/Times-Roman SF
+9120 50001 MT
+(Now there should be a file)132 W
+/Courier SF
+20743 XM
+(CPXOVL.HEX)SH
+/Times-Roman SF
+27124 XM
+(on your connected disk. Replace)131 W
+/Courier SF
+41435 XM
+(CPXOVL.HEX)SH
+/Times-Roman SF
+47816 XM
+(in this)131 W
+9120 51106 MT
+(example with the appropriate overlay file for your system.)SH
+6120 52897 MT
+(Merging the files:)SH
+8120 54688 MT
+(1.)SH
+9120 XM
+(For purposes of illustration, we will assume the system-dependent overlay is called "cpxovl)162 W
+/Courier SF
+(.)SH
+/Times-Roman SF
+(hex".)SH
+9120 55793 MT
+(The two hex)
+1 W( files may be combined with MLOAD or DDT. If you already have a running Kermit, you)SH
+9120 56898 MT
+(can transfer)208 W
+/Courier SF
+14478 XM
+(MLOAD.HEX)SH
+/Times-Roman SF
+20337 XM
+(to your system and create)209 W
+/Courier SF
+31852 XM
+(MLOAD.COM)SH
+/Times-Roman SF
+37711 XM
+(by running LOAD. If you're)209 W
+9120 58003 MT
+(bootstrapping Kermit, you could transfer)27 W
+/Courier SF
+25864 XM
+(MLOAD.HEX)SH
+/Times-Roman SF
+31541 XM
+(to your system the same way you got the)
+27 W( other)26 W
+9120 59108 MT
+(two)SH
+/Courier SF
+10910 XM
+(.HEX)SH
+/Times-Roman SF
+13601 XM
+(files, but it's probably simpler to use DDT to get Kermit running, and get MLOAD later if)41 W
+9120 60213 MT
+(you need it.)SH
+8120 62423 MT
+(2.)SH
+9120 XM
+(Using MLOAD, the two pieces may be easily merged:)SH
+/Courier SF
+11520 64078 MT
+(A>mload kerm411=cpsker,cpxovl)SH
+16200 50 12720 64278 UL
+/Courier-Oblique SF
+11520 65109 MT
+(\050Some messages about program size, etc...\051)SH
+/Courier SF
+11520 66140 MT
+(A>)SH
+/Times-Roman SF
+8120 68350 MT
+(3.)SH
+9120 XM
+(If you don't have MLOAD running, it's a bit more complex:)SH
+ES
+%%Page: 23 24
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.7.2. Downloading Kermit-80)SH
+10 /Times-Italic AF
+51775 XM
+(Page 23)SH
+46800 50 8280 5709 UL
+/Courier SF
+13680 7824 MT
+(A>ddt cpsker.hex)SH
+8400 50 14880 8024 UL
+13680 8855 MT
+(NEXT PC)600 W
+13680 9886 MT
+(3500 0100)SH
+13680 10917 MT
+(-icpxovl.hex)SH
+6600 50 14280 11117 UL
+13680 11948 MT
+(-r)SH
+600 50 14280 12148 UL
+13680 12979 MT
+(NEXT PC)600 W
+13680 14010 MT
+(xxxx 0000)SH
+13680 15041 MT
+(-^C)SH
+1200 50 14280 15241 UL
+13680 16072 MT
+(A>save)SH
+/Courier-Oblique SF
+17880 XM
+(dd)SH
+/Courier SF
+19680 XM
+(kerm411.com)SH
+11400 50 14880 16272 UL
+/Times-Roman SF
+11280 17789 MT
+(The page count)
+50 W( \050"dd"\051 used in the SAVE command is calculated from the last address \050"xxxx"\051 given)49 W
+11280 18894 MT
+(by DDT in)
+48 W( response to the R command: drop the last two digits and add 1 if they were not zero, then)49 W
+11280 19999 MT
+(convert from hexadecimal \050base 16\051 to decimal \050base 10\051: 684F)
+11 W( becomes 69 hex, which is 105 decimal)10 W
+11280 21104 MT
+(\0505 times 16 plus 9\051)
+89 W( -- but 6700 becomes 67 hex, or 103 decimal \050consult an introductory computing)90 W
+11280 22209 MT
+(book if you don't understand number base conversion\051.)SH
+10280 24419 MT
+(4.)SH
+11280 XM
+(If you are using the Z80MU)
+53 W( CP/M and Z80 development toolkit on an IBM PC or clone, then follow)52 W
+11280 25524 MT
+(the same instructions as for a genuine CP/M system. When you have loaded your file, you will)
+57 W( have)58 W
+11280 26629 MT
+(to ship the .COM or two .HEX files to the target CP/M system. \050Possibly)
+108 W( using a previous issue of)107 W
+11280 27734 MT
+(Kermit?\051)SH
+10280 29944 MT
+(5.)SH
+11280 XM
+(Note that CP/M hex files have checksums on each line. If there were any transmission)
+67 W( errors during)68 W
+11280 31049 MT
+(the downloading process, MLOAD or DDT will)
+210 W( notice a bad checksum and will report an error)209 W
+11280 32154 MT
+(\050something like "Illegal Format"\051. If you get any errors during loading, either fix the hex)
+63 W( file locally)64 W
+11280 33259 MT
+(with an editor, or repeat the transfer.)SH
+8280 35651 MT
+(You now should have a running version of Kermit-80, called)SH
+/Courier SF
+32915 XM
+(KERM411.COM)SH
+/Times-Roman SF
+(.)SH
+8280 38043 MT
+(Test your new Kermit by running it. If)
+96 W( it gives you a prompt, it might be OK. \050don't delete your old one yet...\051.)95 W
+8280 39239 MT
+(Instead of a prompt, you could get one of two messages indicating that the configuration information is invalid:)SH
+/Courier SF
+10680 40894 MT
+(?Kermit has not been configured for a target system)SH
+/Times-Roman SF
+8280 42611 MT
+(or)SH
+/Courier SF
+10680 44266 MT
+(?Consistency check on configuration failed)SH
+/Times-Roman SF
+8280 45983 MT
+(Of course, neither of these messages should appear)
+109 W( if you're building Kermit from the distribution kit. The first)110 W
+8280 47179 MT
+(message indicates that)
+1 W( the overlay was not found where the system-independent module expected to find it, probably)SH
+8280 48375 MT
+(because the overlay address is incorrect; the second indicates that the version of CPXLNK used in the system-)157 W
+8280 49571 MT
+(dependent module is incompatible with the system-independent module.)SH
+8280 51963 MT
+(Once you are satisfied that KERMIT40 works correctly, you should rename your old)76 W
+/Courier SF
+43484 XM
+(KERMIT.COM)SH
+/Times-Roman SF
+49810 XM
+(to something)75 W
+8280 53159 MT
+(else, like)SH
+/Courier SF
+12085 XM
+(OKERMIT.COM)SH
+/Times-Roman SF
+(, and rename)SH
+/Courier SF
+24072 XM
+(KERMIT40.COM)SH
+/Times-Roman SF
+31522 XM
+(to)SH
+/Courier SF
+32550 XM
+(KERMIT.COM)SH
+/Times-Roman SF
+(.)SH
+12 /Times-Bold AF
+8280 56275 MT
+(1.7.3. Assembling Kermit-80 from the sources)SH
+10 /Times-Roman AF
+8280 58217 MT
+(Kermit-80 is built in two pieces from the following files:)SH
+/Times-Italic SF
+8280 60006 MT
+(The system-independent files:)SH
+/Courier SF
+9480 61111 MT
+(CPSKER.ASM)SH
+/Times-Roman SF
+16280 XM
+(header file)SH
+/Courier SF
+9480 62216 MT
+(CPSDEF.ASM)SH
+/Times-Roman SF
+16280 XM
+(definitions for both KERMIT and KERSYS)SH
+/Courier SF
+9480 63321 MT
+(CPSMIT.ASM)SH
+/Times-Roman SF
+16280 XM
+(initialization, main loop, miscellaneous commands \050BYE, EXIT, LOG, SET,)
+30 W( SHOW, STATUS,)31 W
+16280 64426 MT
+(and VERSION\051)SH
+/Courier SF
+9480 65531 MT
+(CPSCOM.ASM)SH
+/Times-Roman SF
+16280 XM
+(second part of commands, status and set file)SH
+/Courier SF
+9480 66636 MT
+(CPSPK1.ASM)SH
+/Times-Roman SF
+16280 XM
+(part 1 of the KERMIT protocol handler \050SEND, RECEIVE, LOGOUT,and FINISH commands\051)SH
+/Courier SF
+9480 67741 MT
+(CPSPK2.ASM)SH
+/Times-Roman SF
+16280 XM
+(part 2 of the KERMIT protocol handler)SH
+/Courier SF
+9480 68846 MT
+(CPSREM.ASM)SH
+/Times-Roman SF
+16280 XM
+(REMOTE routines \050FINISH, BYE and LOGOUT in CPXPK*.ASM\051)SH
+/Courier SF
+9480 69951 MT
+(CPSSER.ASM)SH
+/Times-Roman SF
+16280 XM
+(SERVER routines \050for the future\051)SH
+/Courier SF
+9480 71056 MT
+(CPSTT.ASM)SH
+/Times-Roman SF
+16280 XM
+(the transparent commands \050TRANSMIT, CONNECT\051)SH
+ES
+%%Page: 24 25
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 24)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.7.3)SH
+46800 50 6120 5709 UL
+10 /Courier AF
+7320 7886 MT
+(CPSCPM.ASM)SH
+/Times-Roman SF
+14120 XM
+(CP/M commands \050DIR, ERA, USER, TYPE, PRINT, COPY\051)SH
+/Courier SF
+7320 8991 MT
+(CPSWLD.ASM)SH
+/Times-Roman SF
+14120 XM
+(the wildcard handler)SH
+/Courier SF
+7320 10096 MT
+(CPSCMD.ASM)SH
+/Times-Roman SF
+14120 XM
+(the command parser)SH
+/Courier SF
+7320 11201 MT
+(CPSUTL.ASM)SH
+/Times-Roman SF
+14120 XM
+(utility routines and data)SH
+/Courier SF
+7320 12306 MT
+(CPSDAT.ASM)SH
+/Times-Roman SF
+14120 XM
+(data space and the overlay definitions)SH
+/Courier SF
+7320 13411 MT
+(CPXLNK.ASM)SH
+/Times-Roman SF
+14120 XM
+(linkage area description)SH
+/Times-Italic SF
+6120 15840 MT
+(The system-dependent files:)SH
+/Courier SF
+7320 16945 MT
+(CPXTYP.ASM)SH
+/Times-Roman SF
+14120 XM
+(system selection)SH
+/Courier SF
+7320 18050 MT
+(CPXLNK.ASM)SH
+/Times-Roman SF
+14120 XM
+(system overlay specification and jump table)SH
+/Courier SF
+7320 19155 MT
+(CPXCOM.ASM)SH
+/Times-Roman SF
+14120 XM
+(common routines for all systems)SH
+/Courier SF
+7320 20260 MT
+(CPXSWT.ASM)SH
+/Times-Roman SF
+14120 XM
+(system selector or switcher)SH
+6120 22689 MT
+(One of:)SH
+/Courier SF
+7320 23794 MT
+(CPXSYS.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for some system-specific code)SH
+/Courier SF
+7320 24899 MT
+(CPXTOR.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Torch, Superbrain, PCI2651 etc)SH
+/Courier SF
+7320 26004 MT
+(CPXNOR.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Northstar and Comart machines)SH
+/Courier SF
+7320 27109 MT
+(CPXMRL.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for British Telecom Merlin/Rair Black Box)SH
+/Courier SF
+7320 28214 MT
+(CPXSB.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Micromint SB-180 systems)SH
+/Courier SF
+7320 29319 MT
+(CPXCIF.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Cifer systems)SH
+/Courier SF
+7320 30424 MT
+(CPXHEA.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Heath/Zenith systems)SH
+/Courier SF
+7320 31529 MT
+(CPXAPP.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Apple II systems)SH
+/Courier SF
+7320 32634 MT
+(CPXPCW.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Amstrad PCW 8256/8512 machines)SH
+/Courier SF
+7320 33739 MT
+(CPXBBI.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for BigBoard, Kaypro and Xerox 820 systems)SH
+/Courier SF
+7320 34844 MT
+(CPXBEE.ASM)SH
+/Times-Roman SF
+14120 XM
+(Microbee)SH
+/Courier SF
+7320 35949 MT
+(CPXSYO.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Sanyo MBS-1100 systems)SH
+/Courier SF
+7320 37054 MT
+(CPXTM4.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Tandy Model 4 with CP/M systems)SH
+/Courier SF
+7320 38159 MT
+(CPXGNI.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Video Genie systems)SH
+/Courier SF
+7320 39264 MT
+(CPXPRO.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for Compupro systems)SH
+/Courier SF
+7320 40369 MT
+(CPXZ80.ASM)SH
+/Times-Roman SF
+14120 XM
+(family file for the Z80MU development system)SH
+6120 42798 MT
+(and if you use a terminal,)SH
+/Courier SF
+7320 43903 MT
+(CPXVDU.ASM)SH
+/Times-Roman SF
+14120 XM
+(display codes for VDUs etc. Not always required)SH
+6120 45694 MT
+(The system-independent module contains all of the system-independent files)
+135 W( except for)134 W
+/Courier SF
+42791 XM
+(CPXLNK.ASM)SH
+/Times-Roman SF
+(, which is)134 W
+6120 46890 MT
+(assembled into the system-dependent module to provide the structures needed to connect the)
+156 W( two modules. As)157 W
+6120 48086 MT
+(distributed, the system-independent module is named)28 W
+/Courier SF
+27870 XM
+(CPSKER.HEX)SH
+/Times-Roman SF
+(. If)
+306 W( you have a)
+28 W( copy of)27 W
+/Courier SF
+43616 XM
+(CPSKER.HEX)SH
+/Times-Roman SF
+(, you do)27 W
+6120 49282 MT
+(not need to reassemble the system-independent module to configure Kermit for your system.)SH
+6120 51674 MT
+(The system-dependent module consists of)503 W
+/Courier SF
+25661 XM
+(CPXTYP.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+32664 XM
+(CPSDEF.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+39667 XM
+(CPXLNK.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+46670 XM
+(CPXSWT.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+6120 52870 MT
+(CPSCOM.ASM)SH
+/Times-Roman SF
+(, one of)
+675 W( the family files)674 W
+/Courier SF
+25748 XM
+(CPXSYS.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+32922 XM
+(CPXTOR.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+40096 XM
+(CPXMRL.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+47270 XM
+(CPXSB.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+6120 54066 MT
+(CPXCIF.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+12878 XM
+(CPXHEA.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+19636 XM
+(CPXBBI.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+26394 XM
+(CPXTM4.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+33152 XM
+(CPXGNI.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+39911 XM
+(CPXNOR.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+46670 XM
+(CPXAPP.ASM)SH
+/Times-Roman SF
+(,)SH
+/Courier SF
+6120 55262 MT
+(CPXPCW.ASM)SH
+/Times-Roman SF
+(, or)23 W
+/Courier SF
+13749 XM
+(CPXPRO.ASM)SH
+/Times-Roman SF
+(, and possibly)23 W
+/Courier SF
+25596 XM
+(CPXVDU.ASM)SH
+/Times-Roman SF
+(, if your)
+23 W( system uses a terminal for the console. One)22 W
+6120 56458 MT
+(copy of the)
+1 W( system-dependent module is supplied already assembled for each supported system; the filename may be)2 W
+6120 57654 MT
+(obtained from tables 1-2 and 1-3. If a terminal is)
+170 W( required for a system, a CRT \050glass TTY device\051 has been)169 W
+6120 58850 MT
+(selected.)SH
+6120 61242 MT
+(After assembling the two pieces separately, they are combined with DDT or MLOAD into a system-specific Kermit.)SH
+6120 63634 MT
+(If you want to rebuild the system-independent module, the only change you may)
+159 W( need to make is to select the)160 W
+6120 64830 MT
+(assembler to be used, in)182 W
+/Courier SF
+16862 XM
+(CPSKER.ASM)SH
+/Times-Roman SF
+(. Define)
+614 W( one of MAC80, M80, or LASM to TRUE to select)
+182 W( it as the)181 W
+6120 66026 MT
+(assembler; the others should be defined FALSE.)SH
+6120 68418 MT
+(Assuming you have the Microsoft Macro Assembler package \050M80/L80\051, you'll need to do the following:)SH
+/Courier SF
+8520 70073 MT
+(A>m80 cpsker=cpsker.asm)SH
+12600 50 9720 70273 UL
+8520 71104 MT
+(A>l80 /p:100,cpsker,cpsker/n/e)SH
+16800 50 9720 71304 UL
+ES
+%%Page: 25 26
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.7.3. Assembling Kermit-80 from the sources)SH
+10 /Times-Italic AF
+51775 XM
+(Page 25)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+8280 7886 MT
+(This will produce)SH
+/Courier SF
+15585 XM
+(CPSKER.COM)SH
+/Times-Roman SF
+(.)SH
+8280 10278 MT
+(If you are using LASM instead, do this:)SH
+/Courier SF
+10680 11933 MT
+(A>lasm cpsker)SH
+6600 50 11880 12133 UL
+/Times-Roman SF
+8280 13650 MT
+(LASM will generate)53 W
+/Courier SF
+16910 XM
+(CPSKER.HEX)SH
+/Times-Roman SF
+23214 XM
+(and)SH
+/Courier SF
+24962 XM
+(CPSKER.PRN)SH
+/Times-Roman SF
+(. LASM)
+358 W( allows options to be specified in the same way as)54 W
+8280 14846 MT
+(the standard assembler, ASM, so the command)SH
+/Courier SF
+10680 16501 MT
+(A>lasm cpsker.abz)SH
+9000 50 11880 16701 UL
+/Times-Roman SF
+8280 18218 MT
+(will read the source files from drive A, send the)SH
+/Courier SF
+27637 XM
+(.HEX)SH
+/Times-Roman SF
+30287 XM
+(file to drive B, and suppress the listing file.)SH
+8280 20610 MT
+(If you are using)
+128 W( the Z80MU development system on an IBM PC or clone, then assemble your files using either)127 W
+8280 21806 MT
+(LASM and MLOAD or M80 and L80, as)
+3 W( if you were using a genuine CP/M-80 system. Note that you will still have)4 W
+8280 23002 MT
+(the problem of transferring your assembled files to the target CP/M system.)SH
+8280 25394 MT
+(If you want to generate a system-dependent overlay for a particular system, or want to change the terminal)247 W
+8280 26590 MT
+(supported, you'll need to check three areas in)SH
+/Courier SF
+26692 XM
+(CPXTYP.ASM)SH
+/Times-Roman SF
+(:)SH
+8280 28982 MT
+(First, the overlay start ADDRESS. The symbol)
+83 W( "ovladr" is EQUated to the address of "LNKFLG" in the system-)84 W
+8280 30178 MT
+(independent module, as the starting address of the overlay \0507000H for version)109 W
+/Courier SF
+40999 XM
+(4.11)SH
+/Times-Roman SF
+(\051. You'll)
+468 W( need to know this)109 W
+8280 31374 MT
+(value if you're building the overlay with M80/L80. You won't normally need to change this value.)SH
+8280 33766 MT
+(Second, the assembler being used. Again, define one of MAC80, M80, and LASM to be TRUE to)
+104 W( select it, and)105 W
+8280 34962 MT
+(define the others to be FALSE. The two modules \050system-independent and system-dependent\051)
+100 W( do not need to be)99 W
+8280 36158 MT
+(built with the same assembler.)SH
+8280 38550 MT
+(Third, the system configuration. Locate your system in)
+158 W( tables 1-2 and 1-3, then define the appropriate symbol)159 W
+8280 39746 MT
+(TRUE, and the rest FALSE.)
+84 W( If)
+417 W( the system comes with a builtin console terminal, define all the terminal switches)83 W
+8280 40942 MT
+(FALSE. If)
+558 W( the system uses an external terminal as the console, locate the terminal in)
+154 W( table 1-5 and define the)155 W
+8280 42138 MT
+(appropriate symbol TRUE, and the remainder FALSE.)
+20 W( If)
+289 W( the terminal is not listed in table 1-5, use the CRT switch;)19 W
+8280 43334 MT
+(in this case, VT52 emulation is not supported.)SH
+8280 45726 MT
+(In addition, there are a few general and system-specific symbols which may be altered to fit your system:)SH
+8280 47517 MT
+(APSLOT)SH
+16280 XM
+(For Apple with 6551 ACIA, defines the slot number of the serial card)SH
+8280 49094 MT
+(CPUSPD)SH
+16280 XM
+(Processor speed in units of 100KHz \050currently used only for bbII and kpII for timing loops\051)SH
+8280 50671 MT
+(TAC)SH
+16280 XM
+(For users connecting through ARPAnet TACs: set to TRUE if you)
+53 W( wish the default TACTRAP)54 W
+16280 51776 MT
+(status to be ON. \050This may be overridden with the SET TACTRAP command\051. If)
+99 W( you're not)98 W
+16280 52881 MT
+(connecting through a TAC, set tac to FALSE and ignore tacval.)SH
+8280 54458 MT
+(TACVAL)SH
+16280 XM
+(For ARPANET TAC users: defines the default TAC)
+4 W( intercept character \050may be overridden with)5 W
+16280 55563 MT
+(the SET TACTRAP command\051.)SH
+8280 57955 MT
+(If you are just assembling an existing configuration,)
+141 W( you'll need to edit)140 W
+/Courier SF
+38603 XM
+(CPXTYP.ASM)SH
+/Times-Roman SF
+44993 XM
+(only. If)
+530 W( you are adding)140 W
+8280 59151 MT
+(support for a new)
+16 W( system, you should not modify)17 W
+/Courier SF
+28318 XM
+(CPSDEF.ASM)SH
+/Times-Roman SF
+34585 XM
+(or)SH
+/Courier SF
+35685 XM
+(CPXLNK.ASM)SH
+/Times-Roman SF
+(; if you do, you'll have to change)17 W
+8280 60347 MT
+(the system-independent module also. Eventually,)28 W
+/Courier SF
+28613 XM
+(CPXSYS.ASM)SH
+/Times-Roman SF
+34891 XM
+(will be split into separate)
+28 W( files, each of which will)27 W
+8280 61543 MT
+(generate one or more related systems. When this happens, you'll want to pick the one closest to your)
+29 W( system to use)30 W
+8280 62739 MT
+(as a starting point.)SH
+8280 65131 MT
+(After editing)SH
+/Courier SF
+13668 XM
+(CPXTYP.ASM)SH
+/Times-Roman SF
+19918 XM
+(as necessary, assemble and link the overlay as follows:)SH
+/Symbol SF
+10070 67036 MT
+(\267)SH
+/Times-Roman SF
+10780 XM
+(With M80 \050where "xxxx" is the hex value of ovladr from)SH
+/Courier SF
+33842 XM
+(CPXLNK.ASM)SH
+/Times-Roman SF
+(\051:)SH
+/Courier SF
+13180 68691 MT
+(A>m80 cpxtyp=cpxtyp.asm)SH
+12600 50 14380 68891 UL
+13180 69722 MT
+(A>l80 /p:xxxx,cpxtyp,cpxtyp/n/x/e)SH
+18600 50 14380 69922 UL
+/Symbol SF
+10070 71711 MT
+(\267)SH
+/Times-Roman SF
+10780 XM
+(With LASM:)SH
+ES
+%%Page: 26 27
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 26)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.7.3)SH
+46800 50 6120 5709 UL
+10 /Courier AF
+11020 7824 MT
+(A>lasm cpxtyp)SH
+6600 50 12220 8024 UL
+/Times-Roman SF
+6120 10216 MT
+(With an IBM PC or clone using the Z80MU softwrae, follow the instructions as if)
+128 W( you were using a real CP/M)127 W
+6120 11412 MT
+(system.)SH
+6120 13804 MT
+(The overlay \050)6 W
+/Courier SF
+(CPXTYP.HEX)SH
+/Times-Roman SF
+(\051 may then be merged with the system-independent module as)
+6 W( described above \050creating)7 W
+6120 15000 MT
+(a runnable Kermit from the distribution kit\051.)SH
+6120 17392 MT
+(If you are using the Z80MU development system on a PC, and already have a running)
+42 W( Kermit-80 v3.9 or later, you)41 W
+6120 18588 MT
+(can merge the)
+1 W( two)2 W
+/Courier SF
+13735 XM
+(.HEX)SH
+/Times-Roman SF
+16387 XM
+(files into a)2 W
+/Courier SF
+20865 XM
+(.COM)SH
+/Times-Roman SF
+23517 XM
+(file with LINK80 \050TOPS 10/20\051, MLOAD \050Z80MU\051, L80 \050Z80MU\051, and)2 W
+6120 19784 MT
+(transfer the new)SH
+/Courier SF
+12812 XM
+(.COM)SH
+/Times-Roman SF
+15462 XM
+(file to your micro with Kermit:)SH
+/Symbol SF
+7910 21689 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Z80MU on a PC and MLOAD:)SH
+/Courier SF
+11020 23344 MT
+(@MLOAD KERNEW=CPSKER,CPXTYP)SH
+15600 50 11620 23544 UL
+/Symbol SF
+7910 25333 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Z80MU on a PC and C80:)SH
+/Courier SF
+11020 26988 MT
+(@L80 /P:xxxx,CPXTYP,CPXTYP/N/X/E)SH
+18600 50 11620 27188 UL
+/Times-Roman SF
+6120 28779 MT
+(producing)SH
+/Courier SF
+10425 XM
+(KERNEW.COM)SH
+/Times-Roman SF
+(.)SH
+46800 50 6120 30589 UL
+6120 32818 MT
+(Symbol)SH
+16920 XM
+(Terminal description)SH
+3112 50 6120 33018 UL
+8360 50 16920 33018 UL
+6120 33923 MT
+(crt)SH
+16920 XM
+(Basic CRT, no cursor positioning)SH
+6120 35028 MT
+(adm3a)SH
+16920 XM
+(ADM3A Display or lookalike)SH
+6120 36133 MT
+(adm22)SH
+16920 XM
+(ADM22 Display or lookalike)SH
+6120 37238 MT
+(am230)SH
+16920 XM
+(Ampro 230)SH
+6120 38343 MT
+(h1500)SH
+16920 XM
+(Hazeltine 1500)SH
+6120 39448 MT
+(smrtvd)SH
+16920 XM
+(Netronics Smartvid-80)SH
+6120 40553 MT
+(soroq)SH
+16920 XM
+(Soroq IQ-120)SH
+6120 41658 MT
+(tvi912)SH
+16920 XM
+(TVI 912)SH
+6120 42763 MT
+(tvi925)SH
+16920 XM
+(TVI 925, Freedom 100)SH
+6120 43868 MT
+(vt52)SH
+16920 XM
+(VT 52 or VT52 emulator such as Heath H19, H29, etc.)SH
+6120 44973 MT
+(vt100)SH
+16920 XM
+(VT 100 or emulator \050most ANSI terminals should work\051)SH
+6120 46078 MT
+(wyse)SH
+16920 XM
+(Wyse 100)SH
+/Times-Bold SF
+20854 47688 MT
+(Table 1-5:)SH
+/Times-Roman SF
+25715 XM
+(Terminals known to Kermit-80)SH
+46800 50 6120 49498 UL
+14 /Times-Bold AF
+6120 52900 MT
+(1.8. Adding Support For A New System)SH
+10 /Times-Roman AF
+6120 55018 MT
+(Kermit-80 is built from a common set of source files; the system-dependent module makes heavy use)
+23 W( of conditional)22 W
+6120 56214 MT
+(assembly \050this complication will be removed in future releases\051. The)
+90 W( system dependencies arise from attempts to)91 W
+6120 57410 MT
+(answer some questions:)SH
+8120 59201 MT
+(1.)SH
+/Times-Italic SF
+9120 XM
+(What kind of terminal is to be supported?)SH
+/Times-Roman SF
+9120 61630 MT
+(For many micros, the console is an integral part of the system, but others)
+25 W( can use an external terminal.)24 W
+9120 62735 MT
+(In either case, the commands to manipulate the screen \050position)
+38 W( the cursor, erase the screen, etc\051 must)39 W
+9120 63840 MT
+(be defined.)SH
+8120 66050 MT
+(2.)SH
+/Times-Italic SF
+9120 XM
+(How is the serial line accessed?)SH
+/Times-Roman SF
+9120 68479 MT
+(For systems supporting the IOBYTE function,)
+38 W( this is straightforward; the symbol "IOBYT" is defined)37 W
+9120 69584 MT
+(TRUE. If)
+554 W( the serial line is accessed with IN and OUT instructions, it may be possible to use the)152 W
+9120 70689 MT
+(simple I/O routines provided. In this case, the symbol "INOUT" is)
+36 W( defined TRUE, the MNPORT and)35 W
+9120 71794 MT
+(MNPRTS are defined to be the data and control addresses, respectively, and)
+64 W( bit masks for testing for)65 W
+ES
+%%Page: 27 28
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.8. Adding Support For A New System)SH
+10 /Times-Italic AF
+51775 XM
+(Page 27)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+11280 7886 MT
+("input data available")
+123 W( and "output buffer empty" must be defined. If the interface is strange, leave)122 W
+11280 8991 MT
+(IOBYT and INOUT set to FALSE, and provide the I/O routines.)SH
+10280 11201 MT
+(3.)SH
+/Times-Italic SF
+11280 XM
+(What initialization is necessary?)SH
+/Times-Roman SF
+11280 13630 MT
+(You may wish to set the baud rate or configure the serial line at startup. Examples)
+86 W( for a number of)87 W
+11280 14735 MT
+(devices are present.)SH
+10280 16945 MT
+(4.)SH
+/Times-Italic SF
+11280 XM
+(What special features are to be supported?)SH
+/Times-Roman SF
+11280 19374 MT
+(You may want to provide the capability to select one of several serial lines with the SET)
+183 W( PORT)182 W
+11280 20479 MT
+(command, or to change the speed)
+24 W( of the serial line with the SET SPEED command. To do this, you'll)25 W
+11280 21584 MT
+(need to build a command table, using the systems already)
+2 W( supported as examples. The ability to send a)1 W
+11280 22689 MT
+(BREAK signal is desirable. Again, examples for several different interfaces \050ACIA, SIO,)
+149 W( etc\051 are)150 W
+11280 23794 MT
+(present.)SH
+10280 26004 MT
+(5.)SH
+/Times-Italic SF
+11280 XM
+(Do you want to design an external terminal type?)SH
+/Times-Roman SF
+11280 28433 MT
+(There is a jump entry in the overlay file to allow users to add their own termainl emulator.)
+114 W( If)
+477 W( you)113 W
+11280 29538 MT
+(write the code for)
+223 W( such an emulator, you must load this jump address with the address of your)224 W
+11280 30643 MT
+(emulator, and SET)
+106 W( TERMINAL EXTERNAL from within Kermit. All characters will be passed to)105 W
+11280 31748 MT
+(this routine during connect mode.)SH
+14 /Times-Bold AF
+8280 35350 MT
+(1.9. Notes on New Features in Kermit-80 Version 4)SH
+10 /Symbol AF
+10070 37582 MT
+(\267)SH
+/Times-Italic SF
+10780 XM
+(Debugging aids:)218 W
+/Times-Roman SF
+18628 XM
+(SET DEBUG ON will add two fields to the SEND/RECEIVE display, labelled)218 W
+10780 38687 MT
+("Spack" and)
+40 W( "Rpack". These display the last packet sent and received. Of course, this slows down the)39 W
+10780 39792 MT
+(transfer, especially if the console is an external)
+24 W( terminal. SET DEBUG OFF removes these fields. The)25 W
+10780 40897 MT
+(VERSION command)
+27 W( displays the name, edit number, and edit date of several of the modules that make)26 W
+10780 42002 MT
+(up Kermit.)SH
+/Symbol SF
+10070 43991 MT
+(\267)SH
+/Times-Italic SF
+10780 XM
+(TAC support:)32 W
+/Times-Roman SF
+16567 XM
+(ARPAnet TACs \050and many other communication devices)
+32 W( such as terminal concentrators,)33 W
+10780 45096 MT
+(modems, port contention units, network PADs, etc\051 use a printing character \050like)
+79 W( "@"\051 as an intercept)78 W
+10780 46201 MT
+(character, to allow commands to be issued to the TAC, or modem, etc. In order to send this character)
+7 W( to)8 W
+10780 47306 MT
+(the host, it must be typed)
+163 W( twice. The command "SET TAC CHARACTER" to Kermit enables the)162 W
+10780 48411 MT
+("TACtrap" and asks the)
+358 W( user to specify the TAC intercept character. This character will be)359 W
+10780 49516 MT
+(automatically doubled when it)
+94 W( appears in Kermit protocol messages \050sent by the SEND or RECEIVE)93 W
+10780 50621 MT
+(commands\051 or when it appears in a)
+295 W( file being sent with the TRANSMIT command. It is not)296 W
+10780 51726 MT
+(automatically doubled when typed by the user in CONNECT mode. "SET TAC)
+192 W( ON" enables the)191 W
+10780 52831 MT
+(TACtrap but does not change the TAC intercept character, which)
+109 W( is initially "@". "SET TAC OFF")110 W
+10780 53936 MT
+(disables the TACtrap.)SH
+/Symbol SF
+10070 55925 MT
+(\267)SH
+/Times-Italic SF
+10780 XM
+(File buffering:)96 W
+/Times-Roman SF
+17429 XM
+(Previous versions of Kermit-80 buffered only)
+96 W( one sector \050128 bytes\051 at a time during)95 W
+10780 57030 MT
+(file transfer operations. This version buffers 16Kbytes at a time, reducing the number of)
+151 W( times the)152 W
+10780 58135 MT
+(floppy drive must be)
+33 W( spun up and down, and increasing the effective throughput of the link. If the disk)32 W
+10780 59240 MT
+(transfer rate is)
+89 W( too slow, however, the remote Kermit may time out and retransmit packets. This will)90 W
+10780 60345 MT
+(show up on the screen in the "Retries:" field; if this occurs after disk activity, you)
+26 W( may want to increase)25 W
+10780 61450 MT
+(the timeout value on the remote Kermit,)
+135 W( SET BUFFER <new value> while in Kermit,or reassemble)136 W
+10780 62555 MT
+(Kermit with a smaller value for MAXSEC \050in)304 W
+/Courier SF
+31821 XM
+(CPSDEF.ASM)SH
+/Times-Roman SF
+(\051 This)
+304 W( buffer is also used by the)303 W
+10780 63660 MT
+(TRANSMIT command; the log file enabled by the LOG command is still written a sector at a time.)SH
+8280 66052 MT
+(This section is intended for people wanting to implement their own versions)
+16 W( of Kermit-80 for computers not already)17 W
+8280 67248 MT
+(defined.)SH
+8280 69640 MT
+(The system independent code communicates to routines for a specific system through a set of tables.)
+62 W( These)
+372 W( tables)61 W
+8280 70836 MT
+(are defined in CPXLNK.ASM, and)
+106 W( should not be modified between revisions of Kermit. If an entry is added or)107 W
+ES
+%%Page: 28 29
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 28)SH
+12 /Times-Bold AF
+30586 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.9)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+6120 7886 MT
+(deleted, then)
+199 W( the whole of Kermit-80 needs reassembling. Make sure that the changes to CPXLNK.ASM are)198 W
+6120 9082 MT
+(duplicated in CPSUTL.ASM, which has the system independent equivalent of CPXLNK.ASM.)SH
+6120 11474 MT
+(The following entries/definitions apply)
+140 W( to revision 4.09. There have been three additional entries since revision)141 W
+6120 12670 MT
+(4.05.)SH
+6120 15062 MT
+(The table)
+56 W( is split into three sectors; The first section defines two byte "words" giving 16 bits of interface data; The)55 W
+6120 16258 MT
+(second set is a set of jumps to various functions, and finally the third set a set of pure data bytes.)SH
+12 /Times-Bold AF
+6120 19374 MT
+(1.9.1. Interface Data.)SH
+10 /Times-Roman AF
+10120 21316 MT
+(LNKFLG)SH
+14120 XM
+(Must be first entry in overlay at overlay address. Is a two byte address giving the size of the)98 W
+3944 50 10120 21516 UL
+14120 22421 MT
+(linkage table. This is used to check for consistency of overlay's)SH
+10120 24850 MT
+(ENTSIZE)SH
+4055 50 10120 25050 UL
+14120 25955 MT
+(Length of entry table, also used for consistency checking after the overlay. Currently 6)SH
+10120 28384 MT
+(SYSEDT)SH
+14120 XM
+(The address of a dollar-terminated string giving the overlay revision level and date. Points)
+45 W( to a)46 W
+3778 50 10120 28584 UL
+14120 29489 MT
+(string like: CPXSYS.ASM\05033\051 4-JUN-1986$)SH
+10120 31918 MT
+(FAMILY)SH
+14120 XM
+(The address of a dollar-terminated string giving the Family overlay revision)
+80 W( level and date. If)79 W
+3833 50 10120 32118 UL
+14120 33023 MT
+(the system is in CPXSYS.ASM rather than a)
+46 W( particular Family overlay, it is simply a pointer to)47 W
+14120 34128 MT
+($)SH
+12 /Times-Bold AF
+6120 39454 MT
+(1.9.2. Jump Table.)SH
+10 /Times-Roman AF
+6120 41396 MT
+(This is split into three main sectors-)SH
+8120 44511 MT
+(1.)SH
+9120 XM
+(Input/Output routines)SH
+8120 46721 MT
+(2.)SH
+9120 XM
+(Screen formatting routines)SH
+8120 48931 MT
+(3.)SH
+9120 XM
+(other system dependent routines)SH
+7120 52246 MT
+(SELMDM)SH
+4278 50 7120 52446 UL
+/Times-Italic SF
+7120 53351 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 54456 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 55561 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(selects the modem port. Most)
+56 W( systems do nothing and simply return. HL,DE and BC registers)55 W
+14120 56666 MT
+(preserved.)SH
+7120 59095 MT
+(OUTMDM)SH
+4555 50 7120 59295 UL
+/Times-Italic SF
+7120 60200 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 61305 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 62410 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Output the character in E register to the communications line. BC,DE,HL registers preserved.)SH
+7120 64839 MT
+(INPMDM)SH
+4111 50 7120 65039 UL
+/Times-Italic SF
+7120 65944 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 67049 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(Accumulator either 0 or character from comms line if available)SH
+/Times-Italic SF
+7120 68154 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Check modem)
+90 W( for character and if so, return it in A. HL,DE,BC registers preserved, flags and)91 W
+14120 69259 MT
+(accumulator lost.)SH
+7120 71688 MT
+(FLSMDM)SH
+4223 50 7120 71888 UL
+ES
+%%Page: 29 30
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.9.2. Jump Table.)SH
+10 /Times-Italic AF
+51775 XM
+(Page 29)SH
+46800 50 8280 5709 UL
+9280 7886 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 8991 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 10096 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Clear any pending characters in the input buffer from the modem. No registers are preserved.)SH
+9280 12525 MT
+(SELCON)SH
+3889 50 9280 12725 UL
+/Times-Italic SF
+9280 13630 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 14735 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 15840 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Select the console.)
+44 W( This)
+337 W( is a null subroutine for most systems, but for IOBYTE systems selects)43 W
+16280 16945 MT
+(the console.)SH
+9280 19374 MT
+(OUTCON)SH
+4166 50 9280 19574 UL
+/Times-Italic SF
+9280 20479 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(Character in E)SH
+/Times-Italic SF
+9280 21584 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 22689 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Send the character in E to the console. Any quirks)
+145 W( of system responding in an odd manner)146 W
+16280 23794 MT
+(should be handled. No registers preserved.)SH
+9280 26223 MT
+(INPCON)SH
+3722 50 9280 26423 UL
+/Times-Italic SF
+9280 27328 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 28433 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(Zero or character in A.)SH
+/Times-Italic SF
+9280 29538 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Get a character from the console or return a null if no character to be read.)
+119 W( No)
+486 W( registers are)118 W
+16280 30643 MT
+(preserved.)SH
+9280 33072 MT
+(OUTLPT)SH
+3833 50 9280 33272 UL
+/Times-Italic SF
+9280 34177 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(Character in E)SH
+/Times-Italic SF
+9280 35282 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 36387 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Send the character in E to the printer. The console is selected. Only DE registers are preserved)SH
+9280 38816 MT
+(LPTSTAT)SH
+4278 50 9280 39016 UL
+/Times-Italic SF
+9280 39921 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 41026 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(00H or 0FFH in A register)SH
+/Times-Italic SF
+9280 42131 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Test the printer to see if it is ready to receive a character to)
+20 W( be printed. If a 00H is returned then)21 W
+16280 43236 MT
+(the printer is ready to receive a character.)SH
+9280 45665 MT
+(EXTTER)SH
+3833 50 9280 45865 UL
+/Times-Italic SF
+9280 46770 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(Character to be sent to the user supplied terminal emulator in the E register)SH
+/Times-Italic SF
+9280 47875 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 48980 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(If the user has supplied a terminal emulator in)
+67 W( the overlay code, EXTTER will be a JMP <non)66 W
+16280 50085 MT
+(zero address>. If SET TERMINAL EXTERNAL has been)
+148 W( set, all caharcters will be passed)149 W
+16280 51190 MT
+(verbatim to this terminal emulator. If there is)
+155 W( no external emulator, this code will never be)154 W
+16280 52295 MT
+(called. The)
+320 W( user should reset terminal conditions on initialisation of both the system and)
+35 W( before)36 W
+16280 53400 MT
+(CONNECT. All)
+250 W( registers should be preserved.)SH
+9280 55829 MT
+(XBDOS)SH
+3389 50 9280 56029 UL
+/Times-Italic SF
+9280 56934 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(Any required for calling BDOS)SH
+/Times-Italic SF
+9280 58039 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(Any expected from the called BDOS routine)SH
+/Times-Italic SF
+9280 59144 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(This is an alternative entry to BDOS. This entry will)
+53 W( also check the printer status etc. For full)52 W
+16280 60249 MT
+(details see the code for the BDOS trap in CPSUTL.ASM.)SH
+16280 62678 MT
+(2b\051)SH
+16280 65107 MT
+(CLRLIN)SH
+3611 50 16280 65307 UL
+/Times-Italic SF
+9280 66212 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 67317 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 68422 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Clear the current line on the terminal)SH
+9280 70851 MT
+(CLRSPC)SH
+3724 50 9280 71051 UL
+/Times-Italic SF
+9280 71956 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+ES
+%%Page: 30 31
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 30)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.9.2)SH
+46800 50 6120 5709 UL
+10 /Times-Italic AF
+7120 7886 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 8991 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Erase the current position \050after a backspace\051)SH
+7120 11420 MT
+(DELCHR)SH
+4000 50 7120 11620 UL
+/Times-Italic SF
+7120 12525 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 13630 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 14735 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Make delete \0507FH\051 look like a backspace. Some systems do a backspace, space, backspace)163 W
+14120 15840 MT
+(automatically others have to simulate it)SH
+7120 18269 MT
+(CLRTOP)SH
+3834 50 7120 18469 UL
+/Times-Italic SF
+7120 19374 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 20479 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 21584 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Clear the screen and place the cursor at the top LH corner)SH
+7120 24013 MT
+(SCREND)SH
+3945 50 7120 24213 UL
+/Times-Italic SF
+7120 25118 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 26223 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 27328 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Place the cursor on the line for the Kermit-80 prompt after a file transfer. \050Usually line 13\051)SH
+7120 29757 MT
+(SCRERR)SH
+3835 50 7120 29957 UL
+/Times-Italic SF
+7120 30862 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 31967 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 33072 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move cursor to the error message field on the file transfer format screen)SH
+7120 35501 MT
+(SCRFLN)SH
+3779 50 7120 35701 UL
+/Times-Italic SF
+7120 36606 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 37711 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 38816 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move the cursor to the filename field)SH
+7120 41245 MT
+(SCRNP)SH
+3168 50 7120 41445 UL
+/Times-Italic SF
+7120 42350 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 43455 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 44560 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move the cursor to the packet count field)SH
+7120 46989 MT
+(SCRNRT)SH
+3890 50 7120 47189 UL
+/Times-Italic SF
+7120 48094 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 49199 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 50304 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move cursor to the retry count field)SH
+7120 52733 MT
+(SCRST)SH
+3057 50 7120 52933 UL
+/Times-Italic SF
+7120 53838 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 54943 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 56048 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move cursor to the status field)SH
+7120 58477 MT
+(RPPOS)SH
+3057 50 7120 58677 UL
+/Times-Italic SF
+7120 59582 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 60687 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 61792 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move to the receive packet field \050debugging use\051)SH
+7120 64221 MT
+(SPPOS)SH
+2946 50 7120 64421 UL
+/Times-Italic SF
+7120 65326 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 66431 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 67536 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move to the send packet field \050for debugging use\051)SH
+14120 69965 MT
+(2c\051)SH
+14120 72394 MT
+(SYSINIT)SH
+3833 50 14120 72594 UL
+ES
+%%Page: 31 32
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.9.2. Jump Table.)SH
+10 /Times-Italic AF
+51775 XM
+(Page 31)SH
+46800 50 8280 5709 UL
+9280 7886 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 8991 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 10096 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Initialize the system specific)
+49 W( items. No registers are preserved. Any initialization is done once)48 W
+16280 11201 MT
+(only when Kermit-80 is first loaded.)SH
+9280 13630 MT
+(SYSEXIT)SH
+4111 50 9280 13830 UL
+/Times-Italic SF
+9280 14735 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 15840 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 16945 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Program termination. De-initialize anything in preparation for a return to CP/M)SH
+9280 19374 MT
+(SYSCON)SH
+3945 50 9280 19574 UL
+/Times-Italic SF
+9280 20479 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 21584 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 22689 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Initialize anything before entering the connect state.)SH
+9280 25118 MT
+(SYSCLS)SH
+3668 50 9280 25318 UL
+/Times-Italic SF
+9280 26223 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 27328 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 28433 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(System dependent close routine when exiting connect state)SH
+9280 30862 MT
+(SYSINH)SH
+3611 50 9280 31062 UL
+/Times-Italic SF
+9280 31967 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 33072 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 34177 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Help routine to test for any extensions to the escape menu during the connect state.)
+40 W( If)
+331 W( a system)41 W
+16280 35282 MT
+(has any special feature it)
+499 W( can use during connect mode, then it can be tested as)498 W
+16280 36387 MT
+(<escape-character>xxx. This)
+1370 W( entry)
+560 W( is a string for printing to the console for an)561 W
+16280 37492 MT
+(<escape-character>? Often)
+250 W( used for generating breaks or controlling a modem.)SH
+9280 39921 MT
+(SYSINT)SH
+3500 50 9280 40121 UL
+/Times-Italic SF
+9280 41026 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 42131 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 43236 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(This is a test-and-jump on receipt of an escape sequence not understood by Kermit-80.)
+94 W( If)
+437 W( the)93 W
+16280 44341 MT
+(character in A is not recognized by your version of Kermit=80, do a rskip)SH
+9280 46770 MT
+(SYSFLT)SH
+3612 50 9280 46970 UL
+/Times-Italic SF
+9280 47875 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(Character in E)SH
+/Times-Italic SF
+9280 48980 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(Character in E. Either a 00H or anything else in A)SH
+/Times-Italic SF
+9280 50085 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(Test the character in E. If it may not be printed to the console, set A to zero.)
+33 W( All)
+317 W( other registers)34 W
+16280 51190 MT
+(preserved.)SH
+16280 52295 MT
+(NB <XON>,<XOFF>,<DEL>,<NULL> are always rejected.)SH
+9280 54724 MT
+(SYSBYE)SH
+3834 50 9280 54924 UL
+/Times-Italic SF
+9280 55829 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 56934 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 58039 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(System dependent processing for the BYE command. \050eg hang up the phone\051)SH
+9280 60468 MT
+(SYSSPD)SH
+3668 50 9280 60668 UL
+/Times-Italic SF
+9280 61573 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(Value from table in DE)SH
+/Times-Italic SF
+9280 62678 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 63783 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(The system dependent code for baud rate)
+9 W( change. DE contains the two byte value from the baud)8 W
+16280 64888 MT
+(rate table. This value is also stored in "SPEED")SH
+9280 67317 MT
+(SYSPRT)SH
+3668 50 9280 67517 UL
+/Times-Italic SF
+9280 68422 MT
+(Parameters)SH
+/Times-Roman SF
+16280 XM
+(Value in DE)SH
+/Times-Italic SF
+9280 69527 MT
+(Returns)SH
+/Times-Roman SF
+16280 XM
+(None)SH
+/Times-Italic SF
+9280 70632 MT
+(Description)SH
+/Times-Roman SF
+16280 XM
+(The system dependent code for setting the port. The parameters are passed in DE,)
+106 W( which are)107 W
+16280 71737 MT
+(obtained from the port tables)SH
+ES
+%%Page: 32 33
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 32)SH
+12 /Times-Bold AF
+29686 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.9.2)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+7120 9410 MT
+(SYSSCR)SH
+3724 50 7120 9610 UL
+/Times-Italic SF
+7120 10515 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(String pointer in DE)SH
+/Times-Italic SF
+7120 11620 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 12725 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Setup the screen display for file transfer. The Kermit version string is pointed to by DE. If)
+41 W( the)40 W
+14120 13830 MT
+(terminal is not capable of cursor addressing \050eg dumb glass TTY\051 then)
+12 W( only the screen is cleared)13 W
+14120 14935 MT
+(and the version string is printed.)SH
+7120 17364 MT
+(CSRPOS)SH
+3724 50 7120 17564 UL
+/Times-Italic SF
+7120 18469 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(Row number in B, column number in C)SH
+/Times-Italic SF
+7120 19574 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 20679 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move the cursor to)
+74 W( row B, column C where B=1,C=1 is top LH corner of screen. The routine)73 W
+14120 21784 MT
+(should first end a)
+19 W( "cursor position" leading string \050up to four characters\051 then use the parameters)20 W
+14120 22889 MT
+(given to complete the versions cursor position function)SH
+7120 25318 MT
+(SYSSPC)SH
+3613 50 7120 25518 UL
+/Times-Italic SF
+7120 26423 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 27528 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(K bytes free in HL)SH
+/Times-Italic SF
+7120 28633 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Get the amount of free disk space on the selected disk drive. This could be in the system)179 W
+14120 29738 MT
+(independent code. Automatically detects CP/M V2.2 or V3.0. No registers saved.)SH
+7120 32167 MT
+(MOVER)SH
+3611 50 7120 32367 UL
+/Times-Italic SF
+7120 33272 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+(Source Pointer in HL)SH
+14120 34377 MT
+(Destination Pointer in DE)SH
+14120 35482 MT
+(Byte count in BC)SH
+/Times-Italic SF
+7120 36587 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 37692 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Move \050BC\051 bytes from \050HL\051 to \050DE\051 Z80 based)
+50 W( systems do an LDIR, while 8080 systems do it)51 W
+14120 38797 MT
+(as a loop. All registers destroyed)SH
+7120 41226 MT
+(PRTSTR)SH
+3668 50 7120 41426 UL
+/Times-Italic SF
+7120 42331 MT
+(Parameters)SH
+/Times-Roman SF
+14120 XM
+($ terminated string pointed to by DE)SH
+/Times-Italic SF
+7120 43436 MT
+(Returns)SH
+/Times-Roman SF
+14120 XM
+(None)SH
+/Times-Italic SF
+7120 44541 MT
+(Description)SH
+/Times-Roman SF
+14120 XM
+(Print the string onto the console.)SH
+14120 46970 MT
+(3\051)SH
+7120 50504 MT
+(PTTAB)SH
+14120 XM
+(WORD)SH
+21320 XM
+(Points to VT52 equivalent escape sequences.)SH
+3167 50 7120 50704 UL
+7120 52933 MT
+(SPDTAB)SH
+14120 XM
+(WORD)SH
+21320 XM
+(Address of baud-rate command table, or 0 if table does not exist)SH
+3834 50 7120 53133 UL
+7120 55362 MT
+(SPDHLP)SH
+14120 XM
+(WORD)SH
+21320 XM
+(Address of baud-rate help table, or 0 if SET SPEED is not supported.)SH
+3723 50 7120 55562 UL
+7120 57791 MT
+(PRTTAB)SH
+14120 XM
+(WORD)SH
+21320 XM
+(Address of port command table or 0 if SET PORT is not supported.)SH
+3834 50 7120 57991 UL
+7120 60220 MT
+(PRTHLP)SH
+14120 XM
+(WORD)SH
+21320 XM
+(Address of port help table or 0 if SET PORT is not supported)SH
+3723 50 7120 60420 UL
+7120 62649 MT
+(TIMOUT)SH
+14120 XM
+(BYTE)SH
+21320 XM
+(FUZZY-TIMER. Set)
+582 W( to value suitable to your system \050depends largely)
+166 W( on)165 W
+3888 50 7120 62849 UL
+14120 63754 MT
+(CPU speed\051)SH
+7120 66183 MT
+(VTFLG)SH
+14120 XM
+(BYTE)SH
+21320 XM
+(VT52 emulation flag. Set to 0 if terminal)
+23 W( emulates a VT52, 01 if emulation is)24 W
+3222 50 7120 66383 UL
+14120 67288 MT
+(required, or 0FFH if emulations not possible \050eg for "CRT"\051)SH
+7120 69717 MT
+(ESCCHR)SH
+14120 XM
+(BYTE)SH
+21320 XM
+(default escape character-usually control-] but sometimes control-\134)SH
+3890 50 7120 69917 UL
+7120 72146 MT
+(SPEED)SH
+14120 XM
+(WORD)SH
+21320 XM
+(Storage space for baud-rate. Set to 0FFFFH as)
+303 W( baud rates are initially)302 W
+3056 50 7120 72346 UL
+ES
+%%Page: 33 34
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(1.9.2. Jump Table.)SH
+10 /Times-Italic AF
+51775 XM
+(Page 33)SH
+46800 50 8280 5709 UL
+/Times-Roman SF
+16280 7886 MT
+(unknown. Note)
+250 W( that the STATUS routine only looks at the first \050least significant\051 byte.)SH
+9280 10315 MT
+(PORT)SH
+16280 XM
+(WORD)SH
+23480 XM
+(Storage space for port. Set to 0FFFFH as ports may not be implemented, and)43 W
+2556 50 9280 10515 UL
+16280 11420 MT
+(is initially unknown)SH
+9280 13849 MT
+(PRNFLG)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Printer copy flag-if O no copy. Anything else => copy to printer)SH
+3834 50 9280 14049 UL
+9280 16278 MT
+(DBGFLG)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Debugging flag. If O then no debugging to be)
+24 W( done. \050ie writing of debugging)23 W
+4000 50 9280 16478 UL
+16280 17383 MT
+(info during a file transfer\051)SH
+9280 19812 MT
+(ECOFLG)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Local ECHO flag \050default is off\051)SH
+3889 50 9280 20012 UL
+9280 22241 MT
+(FLWFLG)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(File warning flag. If set to 1 will not overwrite files already existing)
+66 W( on disk)67 W
+4000 50 9280 22441 UL
+16280 23346 MT
+(with some-named files being transferred)SH
+9280 25775 MT
+(IBMFLG)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(IBM system is the host-assume IBM file transfers etc)SH
+3778 50 9280 25975 UL
+9280 28204 MT
+(CPMFLG)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Flag indicating)
+322 W( type of CP/M files to be transferred. Default setting -)321 W
+4001 50 9280 28404 UL
+16280 29309 MT
+(DEFAULT)SH
+9280 31738 MT
+(PARITY)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Type of parity in use)SH
+3611 50 9280 31938 UL
+16280 32843 MT
+(0 = Even parity)SH
+16280 33948 MT
+(3 = Mark parity)SH
+16280 35053 MT
+(6 = No parity \0508th bit is data\051)SH
+16280 36158 MT
+(9 = Odd parity)SH
+16280 37263 MT
+(12 = Space parity)SH
+9280 39692 MT
+(SPSIZ)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Size of send packet)SH
+2612 50 9280 39892 UL
+9280 42121 MT
+(RPSIZ)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Size of receive packet)SH
+2723 50 9280 42321 UL
+9280 44550 MT
+(STIME)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Send timer \050time-out\051)SH
+3000 50 9280 44750 UL
+9280 46979 MT
+(RTIME)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Receive timer \050time-out\051)SH
+3111 50 9280 47179 UL
+9280 49408 MT
+(SPAD)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Send Padding \050default=0\051)SH
+2556 50 9280 49608 UL
+9280 51837 MT
+(RPAD)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Receive Padding \050default=0\051)SH
+2667 50 9280 52037 UL
+9280 54266 MT
+(SPADCH)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Send Padding character \050default=NULL\051)SH
+3945 50 9280 54466 UL
+9280 56695 MT
+(RPADCH)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Receive Padding character \050default=NULC\051)SH
+4056 50 9280 56895 UL
+9280 59124 MT
+(SEOL)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Send EOL character \050default=CR\051)SH
+2500 50 9280 59324 UL
+9280 61553 MT
+(REOL)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Receive EOL character \050default=CR\051)SH
+2611 50 9280 61753 UL
+9280 63982 MT
+(SQUOTE)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Send quote character \050default=#\051)SH
+3944 50 9280 64182 UL
+9280 66411 MT
+(RQUOTE)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Receive quote character \050default=#\051)SH
+4055 50 9280 66611 UL
+9280 68840 MT
+(CHKTYP)SH
+16280 XM
+(BYTE)SH
+23480 XM
+(Ascii value of checktype)SH
+4000 50 9280 69040 UL
+16280 69945 MT
+(31H="1"=checktype1 \0506bits\051)SH
+16280 71050 MT
+(32H="2"=checktype2 \05012bits\051)SH
+ES
+%%Page: 34 35
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 34)SH
+12 /Times-Bold AF
+29986 XM
+(Kermit User Guide: CP/M-80 KERMIT 1.10)SH
+46800 50 6120 5709 UL
+10 /Times-Roman AF
+14120 7886 MT
+(33H="3"=CCITT checksum \050CRC\051)SH
+14120 8991 MT
+(Default is 31H\050"1"\051)SH
+7120 11420 MT
+(TACFLG)SH
+14120 XM
+(BYTE)SH
+21320 XM
+(If set to on \050non zero\051 send the TACCHR twice. This is for ARPA TAC users,)3 W
+3889 50 7120 11620 UL
+14120 12525 MT
+(where the TAC swallows one "wakeup" character.)
+11 W( If)
+271 W( sent twice the TAC will pas one on and go)10 W
+14120 13630 MT
+(back to normal mode.)SH
+7120 16059 MT
+(TACCHR)SH
+14120 XM
+(BYTE)SH
+21320 XM
+(Desired TAC character. It is ignored if TAC trapping is turned off. Value)
+71 W( to)72 W
+4056 50 7120 16259 UL
+14120 17164 MT
+(send twice if TAC interception is set on. Default=0, but set to commercial)
+16 W( AT if the conditional)15 W
+14120 18269 MT
+(assembly flag TAC is set true)SH
+7120 20698 MT
+(BUFADR)SH
+14120 XM
+(WORD)SH
+21320 XM
+(Address of Multi-Sector buffering for I/O)SH
+4056 50 7120 20898 UL
+7120 23127 MT
+(BUFSEC)SH
+14120 XM
+(BYTE)SH
+21320 XM
+(The number of bytes the big buffers can hold. Default is 1. \0500=256 sectors\051.)SH
+3779 50 7120 23327 UL
+7120 25556 MT
+(FFUSSY)SH
+14120 XM
+(BYTE)SH
+21320 XM
+(Indicates if)
+491 W( funny characters may be used in CP/M file names \050eg)492 W
+3668 50 7120 25756 UL
+/Courier SF
+14120 26661 MT
+(<>.,;?#[])SH
+/Times-Roman SF
+(\051 If zero, allow anything. Default is nonzero.)SH
+7120 29090 MT
+(BMAX)SH
+14120 XM
+(SPACE:\0502bytes\051 Highest block number on selected disk drive)SH
+3000 50 7120 29290 UL
+7120 31519 MT
+(BMASK)SH
+14120 XM
+(SPACE:\0501byte\051 \050Records/block\051-1)SH
+3556 50 7120 31719 UL
+7120 33948 MT
+(BSHIFTF)SH
+14120 XM
+(SPACE:\0501byte\051 Number of shifts to multiply by rec.block)SH
+4001 50 7120 34148 UL
+7120 36377 MT
+(NNAMS)SH
+14120 XM
+(SPACE:\0501byte\051 Counter for file-names per line)SH
+3611 50 7120 36577 UL
+14 /Times-Bold AF
+6120 39979 MT
+(1.10. Future Work)SH
+10 /Times-Roman AF
+6120 42097 MT
+(Work that needs to be done in future releases includes:)SH
+/Symbol SF
+7910 44002 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Merge in support for additional CP/M-80 systems, particularly)
+135 W( those for which support was recently)134 W
+8620 45107 MT
+(added to the monolithic v3.x source.)SH
+/Symbol SF
+7910 47096 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Break up)89 W
+/Courier SF
+12686 XM
+(CPXSYS)SH
+/Times-Roman SF
+16625 XM
+(into discrete source files, one for each system. These source files should serve)
+89 W( as)90 W
+8620 48201 MT
+(simple models for adding support for new)
+308 W( systems to Kermit-80 -- only the very basic screen)307 W
+8620 49306 MT
+(definitions, flags, i/o primitives,)
+131 W( initializations, and so forth should appear in each system-dependent)132 W
+8620 50411 MT
+(file.)SH
+/Symbol SF
+7910 52400 MT
+(\267)SH
+/Times-Roman SF
+8620 XM
+(Addition of missing)
+352 W( features -- compression of repeated characters during packet transmission,)351 W
+8620 53505 MT
+(transmission of file attributes \050particularly size, so that "percent done")
+243 W( can be displayed for both)244 W
+8620 54610 MT
+(incoming and outbound files\051, command macros, more advanced login scripts, remote operation)
+139 W( and)138 W
+8620 55715 MT
+(server mode, etc etc. Any offers??)SH
+ES
+%%Page: 35 36
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(CP/M-80 Kermit)SH
+10 /Times-Italic AF
+51775 XM
+(Page 35)SH
+46800 50 8280 5709 UL
+16 /Times-Bold AF
+8280 8272 MT
+(Index)SH
+8 /Times-Roman AF
+12280 10429 MT
+(8080 12,)
+400 W( 16)SH
+31720 XM
+(Parity 9)400 W
+31720 11353 MT
+(Pause 6)400 W
+12280 12277 MT
+(Append 6)400 W
+31720 XM
+(Port 9)400 W
+12280 13201 MT
+(ARPAnet 27)400 W
+31720 XM
+(Print 6)400 W
+12280 14125 MT
+(Attention Character)
+SH( 27)400 W
+31720 XM
+(PRINTER 9)400 W
+12280 15049 MT
+(Autoreceive 7)400 W
+31720 15973 MT
+(RECEIVE 6)400 W
+12280 16897 MT
+(Baud 10)400 W
+31720 XM
+(REMOTE 6)400 W
+12280 17821 MT
+(BIOS 12)400 W
+12280 18745 MT
+(Block Check)
+SH( 8)400 W
+31720 XM
+(SEND 7)400 W
+12280 19669 MT
+(Bootstrapping CP/M Kermit)
+SH( 20)400 W
+31720 XM
+(SET 7)400 W
+12280 20593 MT
+(Break 5)400 W
+31720 XM
+(Set padding)
+SH( 9,)
+400 W( 10)SH
+12280 21517 MT
+(Buffer size)
+SH( 8)400 W
+31720 XM
+(Set Receive)
+SH( 9)400 W
+12280 22441 MT
+(Bye 5)400 W
+31720 XM
+(Set Send)
+SH( 10)400 W
+31720 23365 MT
+(Set Start of packet)
+SH( 10)400 W
+12280 24289 MT
+(Carriage Return)
+SH( 4)400 W
+31720 XM
+(Show 11)400 W
+12280 25213 MT
+(COLLISION 8)400 W
+31720 XM
+(Status 11)400 W
+12280 26137 MT
+(Connect 5)400 W
+12280 27061 MT
+(Control-C 4)400 W
+31720 XM
+(TAC 27)400 W
+12280 27985 MT
+(Control-X 4)400 W
+31720 XM
+(TacTrap 10)400 W
+12280 28909 MT
+(Control-Z 4)400 W
+31720 XM
+(Take 11)400 W
+12280 29833 MT
+(Copy 5)400 W
+31720 XM
+(Terminal Emulation)
+SH( 10)400 W
+12280 30757 MT
+(CP/M 16)400 W
+31720 XM
+(Timeout 4,)
+400 W( 17)SH
+12280 31681 MT
+(CP/M-80 Kermit)
+SH( 1)400 W
+31720 XM
+(TIMER 10)400 W
+12280 32605 MT
+(CR 4)400 W
+31720 XM
+(TRANSMIT 11)400 W
+31720 33529 MT
+(Type 11)400 W
+12280 34453 MT
+(Debug 8)400 W
+12280 35377 MT
+(Default Disk)
+SH( 8)400 W
+31720 XM
+(USER 11)400 W
+12280 36301 MT
+(Directory 5)400 W
+12280 37225 MT
+(Directory file size)
+SH( 8)400 W
+31720 XM
+(VERSION 11)400 W
+12280 38149 MT
+(Downloading 20)400 W
+31720 XM
+(Virtual Terminal)
+SH( 5)400 W
+31720 39073 MT
+(VT100 Emulation)
+SH( 10)400 W
+12280 39997 MT
+(Eighth-Bit Prefix)
+SH( 9)400 W
+31720 XM
+(VT52 Emulation)
+SH( 10)400 W
+12280 40921 MT
+(Erase 5)400 W
+12280 41845 MT
+(Escape Character)
+SH( 5,)
+400 W( 8)SH
+31720 XM
+(Warning 11)400 W
+12280 42769 MT
+(Exit 5)400 W
+12280 43693 MT
+(External Terminal Emulation)
+SH( 10)400 W
+31720 XM
+(XON/XOFF 6)400 W
+12280 45541 MT
+(File Copying)
+SH( 5)400 W
+31720 XM
+(Z80 16)400 W
+12280 46465 MT
+(File-mode 8)400 W
+12280 47389 MT
+(File-Warning 6)400 W
+12280 48313 MT
+(FINISH 5)400 W
+12280 49237 MT
+(Flow Control)
+SH( 9)400 W
+12280 51085 MT
+(Generic Kermit-80)
+SH( 12)400 W
+12280 52009 MT
+(GET 6)400 W
+12280 53857 MT
+(Help 6)400 W
+12280 55705 MT
+(IBM 9)400 W
+12280 56629 MT
+(Input 6)400 W
+12280 57553 MT
+(Intercept Character)
+SH( 27)400 W
+12280 59401 MT
+(Local 4)400 W
+12280 60325 MT
+(Local-Echo 9)400 W
+12280 61249 MT
+(LOG 6)400 W
+12280 62173 MT
+(Logging 9)400 W
+12280 63097 MT
+(LOGOUT 6)400 W
+12280 64945 MT
+(NAK 4)400 W
+12280 65869 MT
+(No-exit 9)400 W
+12280 67717 MT
+(OUTPUT 6,)
+400 W( 9)SH
+12280 69565 MT
+(Pad character)
+SH( 9,)
+400 W( 10)SH
+ES
+%%Page: 36 37
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page 36)SH
+12 /Times-Bold AF
+43052 XM
+(Kermit User Guide)SH
+46800 50 6120 5709 UL
+ES
+%%Page: i 38
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(CP/M-80 Kermit)SH
+10 /Times-Italic AF
+52497 XM
+(Page i)SH
+46800 50 8280 5709 UL
+16 /Times-Bold AF
+25591 8272 MT
+(Table of Contents)SH
+12 SS
+8280 10684 MT
+(1. CP/M-80 KERMIT)SH
+54480 XM
+(1)SH
+10 SS
+9780 12074 MT
+(1.1. Credits)SH
+54580 XM
+(1)SH
+9780 13154 MT
+(1.2. What's New)SH
+54580 XM
+(2)SH
+9780 14234 MT
+(1.3. Overview of Kermit Operation)SH
+54580 XM
+(2)SH
+9780 15314 MT
+(1.4. Summary of CP/M)SH
+54580 XM
+(3)SH
+9780 16394 MT
+(1.5. Kermit-80 Description)SH
+54580 XM
+(4)SH
+9780 17474 MT
+(1.6. Kermit-80 Flavors)SH
+54080 XM
+(12)SH
+11780 18554 MT
+(1.6.1. Generic Kermit-80)SH
+54080 XM
+(12)SH
+11780 19634 MT
+(1.6.2. CP/M 3 Kermit)SH
+54080 XM
+(12)SH
+11780 20714 MT
+(1.6.3. System-Specific Versions)SH
+54080 XM
+(13)SH
+9780 21794 MT
+(1.7. Installation of Kermit-80)SH
+54080 XM
+(16)SH
+11780 22874 MT
+(1.7.1. Organization of Kermit-80)SH
+54080 XM
+(17)SH
+11780 23954 MT
+(1.7.2. Downloading Kermit-80)SH
+54080 XM
+(20)SH
+11780 25034 MT
+(1.7.3. Assembling Kermit-80 from the sources)SH
+54080 XM
+(23)SH
+9780 26114 MT
+(1.8. Adding Support For A New System)SH
+54080 XM
+(26)SH
+9780 27194 MT
+(1.9. Notes on New Features in Kermit-80 Version 4)SH
+54080 XM
+(27)SH
+11780 28274 MT
+(1.9.1. Interface Data.)SH
+54080 XM
+(28)SH
+11780 29354 MT
+(1.9.2. Jump Table.)SH
+54080 XM
+(28)SH
+9780 30434 MT
+(1.10. Future Work)SH
+54080 XM
+(34)SH
+12 SS
+8280 31958 MT
+(Index)SH
+53880 XM
+(35)SH
+ES
+%%Page: ii 39
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page ii)SH
+12 /Times-Bold AF
+43052 XM
+(Kermit User Guide)SH
+46800 50 6120 5709 UL
+ES
+%%Page: iii 40
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(CP/M-80 Kermit)SH
+10 /Times-Italic AF
+51941 XM
+(Page iii)SH
+46800 50 8280 5709 UL
+16 /Times-Bold AF
+26702 8272 MT
+(List of Figures)SH
+10 SS
+9780 10550 MT
+(Figure 1-1:)
+SH( Bootstrap)
+500 W( program for Kermit-80 and CP/M Version 2.2)SH
+54080 XM
+(22)SH
+ES
+%%Page: iv 41
+BS
+0 SI
+10 /Times-Italic AF
+6120 4404 MT
+(Page iv)SH
+12 /Times-Bold AF
+43052 XM
+(Kermit User Guide)SH
+46800 50 6120 5709 UL
+ES
+%%Page: v 42
+BS
+0 SI
+12 /Times-Bold AF
+8280 4404 MT
+(CP/M-80 Kermit)SH
+10 /Times-Italic AF
+52331 XM
+(Page v)SH
+46800 50 8280 5709 UL
+16 /Times-Bold AF
+27013 8272 MT
+(List of Tables)SH
+10 SS
+9780 10550 MT
+(Table 1-1:)
+SH( Kermit-80)
+500 W( SET PORT Options)SH
+54080 XM
+(12)SH
+9780 11630 MT
+(Table 1-2:)
+SH( Systems)
+500 W( supported by Kermit-80 \050Part 1\051)SH
+54080 XM
+(18)SH
+9780 12710 MT
+(Table 1-3:)
+SH( Systems)
+500 W( supported by Kermit-80 \050Part 2\051)SH
+54080 XM
+(19)SH
+9780 13790 MT
+(Table 1-4:)
+SH( Terminals)
+500 W( supported by Kermit-80)SH
+54080 XM
+(20)SH
+9780 14870 MT
+(Table 1-5:)
+SH( Terminals)
+500 W( known to Kermit-80)SH
+54080 XM
+(26)SH
+ES
+%%Trailer
+%%Pages: 42
+%%DocumentFonts: Times-Roman Times-Bold Times-Italic Courier Symbol Courier-Oblique
diff --git a/doc/cpkerm.txt b/doc/cpkerm.txt
new file mode 100644
index 0000000..abcd0a3
--- /dev/null
+++ b/doc/cpkerm.txt
@@ -0,0 +1,2463 @@
+
+ CP/M-80 KERMIT VERSION 4.11 USER GUIDE
+
+
+ C. Gianone
+
+ Columbia University Center for Computing Activities
+ New York, New York 10027
+
+
+ April 23, 1991
+
+
+
+ Copyright (C) 1981,1991
+ Trustees of Columbia University in the City of New York
+
+ Permission is granted to any individual or institution to use, copy,
+ or redistribute this document so long as it is not sold for profit, and
+ provided this copyright notice is retained.
+1. CP/M-80 KERMIT
+
+********
+This document is formatted as an ordinary, plain text ASCII disk file. Typeset
+copies are available in the Kermit User Guide from Columbia University.
+Changes should be made to CPKERM.MSS.
+********
+
+Program: Mike Freeman, Bonneville Power Administration, Vancouver, WA, USA,
+ with contributions from many others.
+
+Language: 8080 Assembler, LASM, M80, or MAC80
+
+Version: 4.11
+
+Date: April 1, 1991
+
+Documentation: Christine Gianone, Columbia University, with contributions from
+ many others.
+
+KERMIT-80 Capabilities At A Glance:
+ Local operation: Yes
+ Remote operation: Partial, Auto-receive only
+ Login scipts: Yes, limited
+ Transfer text files: Yes
+ Transfer binary files: Yes
+ Wildcard send: Yes
+ File transfer interruption: Yes
+ Filename collision avoidance: Yes
+ Can time out: Yes
+ 8th-bit prefixing: Yes
+ Repeat count prefixing: No
+ Alternate block checks: Yes
+ Terminal emulation: Yes, VT52 and others
+ Communication settings: Yes
+ Support for dial-out modems: No
+ Transmit BREAK: Yes; most versions
+ IBM communication: Yes
+ Transaction logging: No
+ Debug logging: No
+ Session logging: Yes
+ Raw file transmit: Yes
+ Act as server: No
+ Talk to server: Yes
+ Advanced commands for servers: Yes
+ Command/init files: Yes
+ Command macros: No
+ Local file management: Yes
+ Handle file attributes: No
+ Long packets: No
+ International Character Sets: No
+ Sliding Windows: No
+ Printer control: Yes, limited
+
+
+1.1. Credits
+
+CP/M Kermit is the first of all the Kermit programs. It was originally written
+by Bill Catchings of Columbia University in 1981. Over the years,
+contributions have been added by many people, including Charles Carvalho (ACC),
+Bernie Eiben (DEC), Nick Bush (Stevens Institute of Technology), John Bray
+(University of Tennessee), Bruce Tanner (Cerritos College), Greg Small
+(University of California at Berkeley), Kimmo Laaksonen (Helskini University of
+Technology), Bertil Schou (Loughborough University), Jon Warbrick (Plymouth
+Polytechnic University), Brian Robertson (Aberdeen University), A.J. Cole
+(Leeds University), John Shearwood (Birmingham University), Tony Addyman
+(Salford University), Godfrey Nix and Martin Carter (Nottingham University),
+Ian Young (Edinburgh University), Chris Miles (Manchester University), Richard
+Russell, Dave Roberts, and many, many others.
+
+Version 4.11 is the work of Mike Freeman of the Bonneville Power Administration
+in Vancouver, WA, USA, with assistance from Russell Lang of Monash University
+in Australia, Jay S Rouman of Mt Pleasant MI, and others.
+
+
+1.2. What's New
+
+Features added since version 4.09 include:
+
+ - SET COLLISION {BACKUP/DISCARD/OVERWRITE/RENAME}
+
+ - SET INCOMPLETE-FILES {DISCARD/KEEP}
+
+ - Many REMOTE commands, including some REMOTE SET commands
+
+ - RENAME command to rename CP/M files from within Kermit-80
+
+ - SET RECEIVE/SEND PACKET-LENGTH nn (nn <= 94)
+
+ - SET AUTORECEIVE ON now implies that Kermit-80 ALWAYS tries to receive
+ more files when a RECEIVE transaction has completed. The user can
+ cancel with ^C.
+
+ - QUIT is now a synonym for EXIT.
+
+ - STAY is now a synonym for SET NO-EXIT.
+
+ - CONNECT, RECEIVE and SEND may be abbreviated to C, R and S,
+ respectively.
+
+ - Cancellation of TAKE, TYPE, and PRINT commands from the keyboard.
+
+ - Many bug fixes.
+
+ - Kermit-80 Version 4.11 now supports the Microbee family of computers
+ (56K, 64K, 128K and 256K) manufactured by Microbee Systems, Ltd, of
+ Australia.
+
+ - Kermit-80 now supports the Ampro Little Board system.
+
+
+1.3. Overview of Kermit Operation
+
+Use the SET command to establish necessary communication parameters like SPEED
+and PARITY. Use the CONNECT to establish a terminal connection to the remote
+computer. If you are dialing out with a modem, type the necessary dialing
+commands to the modem first. The dialing process can be automated to some
+extent using a TAKE command file containing INPUT, OUTPUT, and PAUSE commands.
+Then log in to the remote computer or service and conduct a session.
+
+To transfer a text file, start the Kermit program on the remote computer and
+tell it to SEND the desired file (if uploading) or to RECEIVE (if downloading).
+"Escape back" to CP/M Kermit, usually by typing Ctrl-] (hold down the Control
+key and press the right bracket key) and then type the letter C. At the CP/M
+Kermit prompt type RECEIVE (if you gave a SEND command to the remote Kermit) or
+SEND filename (if you gave a receive command to the remote Kermit).
+
+To transfer a binary file, give the command SET FILE TYPE BINARY to the remote
+Kermit and SET FILE-MODE BINARY to CP/M Kermit before issuing any SEND or
+RECEIVE commands.
+
+Multiple files of the same type (text or binary) can be transferred in a single
+operation using "wildcard notation" (including special characters like asterisk
+in the filename).
+
+When file transfer is complete, CONNECT back to the remote computer, use the
+EXIT command to exit from the remote Kermit program, finish your work on the
+remote computer, log out from it, escape back to CP/M Kermit again, and EXIT
+from CP/M Kermit.
+
+The remote Kermit may also be put into "server mode" to simplify these
+operations. Give the SERVER command to the remote Kermit, escape back to CP/M
+Kermit, and then issue SEND commands to send files (upload), GET filename
+commands to receive (download) files, REMOTE commands to request various other
+services (like directory listings) from the remote Kermit. When you are done,
+give a BYE command to terminate your remote session, or a FINISH command to
+tell the remote Kermit to return to its prompt so you can CONNECT back and
+conduct further business.
+
+That's all there is to it.
+
+
+1.4. Summary of CP/M
+
+There are essentially two versions of CP/M - Versions 2.2 and 3.0 (sometimes
+also called CP/M PLUS.)
+
+CP/M-80 Version 2.2 is run in a single 64 Kbyte "page", usually the largest
+amount of memory on Z80 or 8080 systems. The BIOS (Basic input/output system),
+BDOS (Basic Disk Operating System) and CCP (Command console processor) all
+share memory with any transient program the user may wish to run. Some basic
+commands are available through the CCP, like DIR, ERA etc,while others are
+loaded from disk into the transient program area and run as a program, like PIP
+or STAT.
+
+CP/M Version 3.0 (or CP/M PLUS) effectively removes the requirement of having
+the CCP and BDOS along with a chunk of the BIOS code being resident in the
+single 64k byte page of memory. This allows even more space for programs in
+the TPA, but still a little less than the maximum of 64k. It is substantially
+different from CP/M version 2.2, with lots of added features. Kermit-80 uses
+very few additional version 3.0 features, and only where absolutely necessary.
+
+CP/M file specifications are of the form DEV:XXXXXXXX.YYY, where
+
+DEV: is a device name, normally the A: or B: floppy. If omitted,
+ the device name defaults to your connected diskette.
+
+XXXXXXXX is a filename of up to 8 characters.
+
+YYY is the file type, up to 3 characters.
+
+File names and file types may contain letters, digits, and some special
+characters, including dash, dollar sign, and underscore, but no imbedded
+spaces. Upper and lower case letters are equivalent.
+
+"Wildcard" file-group specifications are permitted in file names and file types
+(but not device names) within certain contexts; a "*" matches a whole field, a
+"?" matches a single character, including space. Examples: "*.F??" specifies
+all files whose types start with F and are 1, 2, or 3 characters long; "F?.*"
+specifies all files whose names start with F and are no more than two
+characters long (before the trailing spaces).
+
+The five CP/M commands are:
+
+DIR file Lists the the names of the specified files. The default file
+ specification is "*.*". Example: "DIR B:*.FOR".
+
+ERA file Erases (deletes) the specified file(s); wildcards allowed.
+
+REN new old Changes the name of a file from old to new, e.g.
+ "REN NEW.FOR=OLD.FOR".
+
+SAVE Saves the specified number of memory blocks into a file. (Not
+ on CP/M Plus systems)
+
+TYPE file Types the specified file on the screen, e.g. "TYPE FOO.TXT".
+
+The most important programs are:
+
+STAT Gives statistics on disk usage; sets and displays IOBYTE. (Not
+ on CP/M Plus systems)
+
+PIP Peripheral Interchange Program. Copies files. In response to
+ the "*" prompt, give a command of the form
+
+ disk:outfile=disk:infile
+
+ Wildcards ("*" for a whole field or "?" for a letter) can be
+ used. Examples: "A:=B:*.*" to copy a whole disk, "A:=B:*.FOR"
+ to copy all the Fortran programs from disk B to disk A. If the
+ disk specification is omitted, your "connected" disk is
+ assumed. Command line arguments are also accepted, e.g. "PIP
+ A:=B:*.*".
+
+There are equivalent commands for CP/M Version 3.0, but are not loaded into
+memory in the same way as for CP/M Version 2.2. For further information on
+CP/M, consult your microcomputer manual or a CP/M handbook.
+
+
+1.5. Kermit-80 Description
+
+Since Kermit-80 runs on a standalone micro, it is always in control of the
+screen -- it is always in "local mode". It includes a terminal emulator for
+establishing a connection to a remote computer or service, and during file
+transfer, it keeps the screen updated with the file name and the packet number,
+whether sending or receiving.
+
+Kermit-80 is capable of an imprecise or "fuzzy" timeout on an input request,
+and can break deadlocks automatically. In most cases, this is not important,
+because the Kermit program on the other side is most likely able to handle the
+timeouts. The timeouts done by Kermit-80 are fuzzy because they depend on the
+speed of the processor and other factors that can vary from system to system.
+
+If, despite the timeout capability, the transmission appears to be stuck (and
+you can tell that this has happened if the screen fails to change for a while)
+you can type carriage return to have the micro do what it would have done on a
+timeout, namely NAK the expected packet to cause theforeign host to send it
+again (or, if the micro is sending, to retransmit the last packet). Micro/
+micro or micro/IBM-mainframe transfers could require this kind of manual
+intervention.
+
+File transfers may be interrupted in several ways.
+
+Control-C This will return you to Kermit-80 command level immediately, so
+ that you can connect back to the remote system, or take any
+ other desired action.
+
+Control-X When sending a file, this will terminate the sending of the
+ current file with a signal to the KERMIT on the other side to
+ discard what it got so far. If there are more files to be
+ sent, KERMIT-80 will go on to the next one. When receiving a
+ file, KERMIT-80 will send a signal to the remote KERMIT to stop
+ sending this file. If the remote KERMIT understands this
+ signal (not all implementations of KERMIT do), it will comply,
+ otherwise the file will keep coming. In any case, the remote
+ KERMIT will go on to the next file in the group, if any.
+
+Control-Z Like Control-X, except if a file group is being transmitted,
+ this will stop the transmission of the entire group. If only a
+ single file is being transmitted, it works exactly like
+ Control-X.
+
+Carriage Return If you type a carriage return Kermit-80 will resend the current
+ packet. You may do this repeatedly, up to the packet retry
+ limit (somewhere between 5 and 16 times) for a particular
+ packet.
+
+
+ KERMIT-80 COMMANDS
+
+Kermit-80 is an interactive program. It issues a prompt, you type a command.
+The process repeats until you give the EXIT command to leave the program.
+
+Commands consist of keywords, filenames, and numbers. Keywords may be
+abbreviated to minumum unique length. "?" may be typed to request a menu of
+the available options for the current field at any point in a command. ESC may
+be typed at any point in a command to fill out the current keyword or filename;
+if sufficient characters have not been typed to identify the current field
+uniquely, Kermit-80 will sound a beep and allow you to continue from that
+point. Here are Kermit-80's commands:
+
+BREAK Send a BREAK condition to the remote computer. This is only possible
+ if your system is capable of sending breaks. It is intended to be used
+ with PAUSE, OUTPUT, etc and the TAKE command to do wierd and wonderful
+ things, like automatic logging on to a remote host.
+
+BYE When talking to a remote Kermit Server, this command shuts down the
+ server and logs it out, and also exits from Kermit-80 to CP/M command
+ level.
+
+CONNECT Establish a terminal connection to the computer, service, or device
+ that is connected to the serial port, i.e. pass all typein to the
+ serial port and display all input from the serial port on the screen.
+ Also, emulate a DEC VT52 to allow cursor control, screen clearing,
+ etc., if VT52-EMULATION is ON (see below), in which case you should
+ also set your terminal type on the remote host to VT52. (Some versions
+ emulate other terminals.) The CONNECT command may be abbreviated by
+ the single letter C.
+
+ Warning: VT52 emulation is only successful if your system or its
+ attached terminal can do the same sort of functions as a genuine VT52.
+ Things to beware of are cursor addressing, clear to end of page and end
+ of line, clear screen, home cursor, and clear-and-home functions. The
+ useability of VT52 emulation depends entirely on how many of the VT52
+ functions can be emulated by your micro or terminal.
+
+ The escape character differs from micro to micro; when you issue the
+ CONNECT command, the micro will print a message telling you how to get
+ back. The escape sequence is generally an uncommonly-used control
+ character, like CTRL-backslash or CTRL-rightbracket, followed by a
+ single letter "command":
+
+ C Close Connection, return to Kermit-80> command level.
+ S Display Status of connection, but maintain remote connection.
+ ? List available single-character commands.
+ 0 (zero) Send a null (0) character.
+ B Send a BREAK signal. Most systems provide this function.
+ D Drop the line. Used on the Apple with modem. Automatically closes
+ the connection after dropping the line. The TORCH system
+ acknowledges this command but does nothing.
+ P Toggle printer on or off. Allows you to copy whatever goes to the
+ screen to the printer.
+ S Temporarily suspend logging to the log file.
+ Q Restart logging to the log file
+ ^] (or whatever - a second copy of the escape character) Send the
+ escape character itself to the remote host.
+
+COPY source destination
+ Copy a named file to another file, either on the same drive or another
+ drive.
+
+DIRECTORY
+ This provides a directory listing of the specified files. If no files
+ are specified, all files on the default disk are listed. File sizes,
+ in K, are included. You may interrupt the listing at any time by
+ typing any character. The listing (even if interrupted) concludes with
+ a display of the amount of free storage left on the disk. You can
+ inhibit the display of file sizes by SET DIRECTORY OFF.
+
+ERASE filespec
+ This executes the CP/M ERA command on the specified file(s). The names
+ of the files being erased are not displayed.
+
+EXIT Quit back to CP/M. The return is made by a JMP 0 (Warmstart). QUIT is
+ a synonym for EXIT.
+
+FINISH Like LOGOUT, but shuts down the remote server without logging it out.
+ Leaves you at Kermit-80 command level; subsequent CONNECT commands will
+ put you back at host system command level.
+
+GET filespec [local_filespec]
+ When Kermit-80 is talking to a Kermit Server on the host, you should
+ use the GET command to request the server to send files to you, for
+ example:
+
+ get hlp:k*.hlp
+
+ You may specify a local filename if you want to save the remote file
+ under a different filename. Limitation: If you request an alternate
+ block check type using the SET BLOCK command, the GET command will not
+ communicate it to the remote server. If you want to have type 2 or 3
+ block checks done when getting files from the server, you have to issue
+ the appropriate SET BLOCK command to the remote KERMIT before putting
+ it in server mode.
+
+HELP List all these commands, with a short description on what the commands
+ do. A question mark will do the same. If you have already typed a
+ command but do not know what the parameters are, type a space (to
+ indicate the end of the command) and a question mark. You will be
+ informed of what Kermit can expect at that stage.
+
+INPUT seconds text
+ Setup a text line and time delay for your CP/M system to expect from
+ the host, then wait up to the given number of seconds (approximately)
+ for text to be sent to your CP/M-80 system.
+
+LOG filespec
+ When CONNECTed to a foreign host as a terminal, log the terminal
+ session to the specified diskette file. This functionality depends to
+ some extent on the remote host's ability to do XON/XOFF flow control,
+ and does not guarantee a complete transcript (after all, that's what
+ the KERMIT protocol is for). The log file is closed when the
+ connection is closed by typing the escape character followed by the
+ single-character command "C".
+
+ It is possible to temporarily suspend logging during connect state.
+ Typing an escape sequence can turn file logging on (<escape-character>
+ R for Resume) or off (<escape-character> Q for quiet).
+
+ Re-entering connect state will re-open the previously opened log file
+ and append to that file.
+
+LOGOUT Like BYE, but leaves you at Kermit-80 command level.
+
+OUTPUT text
+ Send the text to the remote computer as if you had typed it.
+
+PAUSE seconds
+ If this command is issued your CP/M system will wait a while before
+ proceeding with another command. This is intended for use in TAKE
+ commands, where you may want to pause for a while before proceeding
+ with the rest of the TAKE file. The actual delay is very variable
+ between systems, and values should be determined on a trial and error
+ basis.
+
+PRINT Print a file to the console and printer. Output to the printer is
+ buffered by the Kermit-maintained printer buffer. This routine is
+ identical to TYPE but characters are echoed to the printer as well as
+ to the screen. Suspending and canceling output is as described in
+ TYPE.
+
+QUIT Synonym for EXIT.
+
+RECEIVE filespec
+ Receive file(s) from the remote Kermit, and save them under the names
+ provided in the file headers supplied by the remote host. If a local
+ filespec is given, the file is saved under the given filename. If the
+ names aren't legal, use as many legal characters from the name as
+ possible (see the description of SET FILE-WARNING below). If there's a
+ conflict, and FILE-WARNING is ON, warn the user and try to build a
+ unique name for the file by adding "&" characters to the name. RECEIVE
+ can be abbreviated to the single letter R.
+
+REMOTE command
+ Send a command to a remote Kermit server. The results are sent back to
+ your CP/M screen. When two arguments are required and specify less
+ than two in the command, you will be prompted for the missing
+ arguments. REMOTE commands include:
+
+ REMOTE CD [directory]
+ Ask the remote server to change its default directory. If no
+ directory is specified, the server changes to its login directory.
+
+ REMOTE COPY file1 file2
+ Ask the remote server to copy file1 to file2.
+
+ REMOTE RENAME file1 file2
+ Ask the remote server to rename file1 to file2.
+
+ REMOTE DELETE filespec
+ Ask the remote server to delete the named file or files.
+
+ REMOTE DIRECTORY [filespec]
+ Ask the remote server to display a directory listing of the given
+ files or, if the filespec is omitted, all the files in the current
+ device or directory.
+
+ REMOTE DISK-USAGE
+ Ask the remote server to display information about its disk usage
+ (such as free or used space).
+
+ REMOTE ERASE filespec
+ Same as REMOTE DELETE.
+
+ REMOTE FINISH
+ Same as FINISH.
+
+ REMOTE HELP
+ Ask the remote server to display a list of the commands it can
+ respond to.
+
+ REMOTE HOST command
+ Ask the remote server to have its operating system execute the
+ given command.
+
+ REMOTE KERMIT command
+ Ask the remote server to execute the given Kermit command, given in
+ the server Kermit's command syntax.
+
+ REMOTE LOGIN user password
+ Log in to a remote Kermit server which has been set up to require a
+ username and password.
+
+ REMOTE MESSAGE text
+ Send the text to the remote server for display on its screen
+ (useful with MS-DOS Kermit servers).
+
+ REMOTE SET parameter value
+ Ask the remote server to set the given parameter to the given
+ value, for example REMOTE SET FILE TYPE BINARY. Type REMOTE SET ?
+ to see a list of the REMOTE SET options.
+
+ REMOTE SPACE
+ Same as REMOTE DISK-USAGE.
+
+ REMOTE STATUS
+ Ask the remote server to provide a status report.
+
+ REMOTE TYPE file
+ Ask the remote server to display the named file on the micro's
+ screen.
+
+ REMOTE WHO [user]
+ Ask the remote server for a list of users who are logged in, or if
+ a user is specified, for a report on the named user.
+
+RENAME file1 file2
+ Rename local CP/M file1 to file2.
+
+SEND filespec
+ Send file(s) specified by filespec to the remote Kermit. The filespec
+ may contain CP/M wildcards. SEND may be abbreviated to the single
+ letter S.
+
+SET parameter [value]
+ Set the specified parameter to the specified value. Possible parameter
+ settings:
+
+ AUTORECEIVE
+ ON (or OFF). Allows several files to be received without
+ having to type RECEIVE on the receiving machine. The routine
+ simply looks for activity on the serial line, and if so fudges
+ a RECEIVE command. The packet sent by the sender will be lost.
+
+ BLOCK-CHECK-TYPE option
+ The options are:
+
+ 1-CHARACTER-CHECKSUM
+ Normal, default, standard 6-bit checksum.
+ 2-CHARACTER-CHECKSUM
+ A 12-bit checksum encoded as two characters.
+ 3-CHARACTER-CRC-CCITT
+ A 16-bit CCITT-format Cyclic Redundancy Check, encoded
+ as 3 characters.
+
+ BUFFER-SIZE value
+ This allows you to set a buffer size during transfer of data.
+ On some systems it takes so long that the remote end times out
+ while the local system is reading or writing to disk. The size
+ is the number of 128 disk sectors (nominal) and can be from 1
+ (128 bytes) to 64 (8 kbytes).
+
+ CP/M-80 filenames will still be mapped to uppercase characters.
+
+ COLLISION value
+ What to do when a file arrives that has the same name as an
+ existing file. BACKUP means to rename the existing file.
+ DISCARD means to discard and reject the incoming file.
+ OVERWRITE means to overwrite the existing file. RENAME means
+ to rename the existing file.
+
+ DEBUG ON (or OFF). Enables/disables displaying of packets on the
+ screen during file transfer. Not performed if the QUIET option
+ has been set for the terminal (SET TERMINAL QUIET)
+
+ DEFAULT-DISK drive letter
+ This allows you to set the default disk as source and
+ destination of file transfers. In addition, issuing this
+ command causes you to switch to the specified disk and log it
+ in, write-enabled. The colon must be included in the disk name
+ (A:). The selected disk appears in your KERMIT-80 prompt, for
+ instance
+
+ Kermit-80 14A:>
+
+ DIRECTORY-FILE-SIZE ON (or OFF).
+
+ By setting DIRECTORY-FILE-SIZE OFF you can get an abreviated
+ listing of your disk drive. File sizes are not calculated, and
+ five files are shown on a line. Setting this option ON will
+ show file sizes of each file.
+
+ Both options will list the free space remaining.
+
+ ESCAPE Change the escape character for virtual terminal connections.
+ Kermit-80 will prompt you for the new escape character, which
+ you enter literally.
+
+ FILE-MODE option
+ Tells KERMIT-80 what kind of file it is sending, so that KERMIT
+ can correctly determine the end of the file. SET FILE BINARY
+ means to send all the 128-byte blocks (ie logical CP/M sectors)
+ of the file, including the last block in its entirety; SET FILE
+ ASCII is used for text files, and transmission stops when the
+ first Control-Z is encountered anywhere in the file (this is
+ the CP/M convention for marking the end of a text file).
+
+ SET FILE-MODE DEFAULT tells Kermit to attempt to determine the
+ file type by examining the file being transmitted. If a
+ Control-Z appears before the last block of the file, it is
+ assumed to be BINARY; if, when the first Control-Z is
+ encountered, the remainder of the file contains only
+ control-Z's, it is assumed to be a text file. Unfortunately,
+ not all programs fill the remainder of the last record of a
+ text file with Control-Z's, so this algorithm is not always
+ successful.
+
+ If binary transmission is used on a text file, or a compressed
+ file (eg a .DQC file) some extraneous characters (up to 127 of
+ them) may appear at the end of the file on the target system.
+
+ If ASCII transmission is used on a binary file, any 8th bits
+ set will be stripped and a warning sent to the console. When
+ the first control-Z is encountered, the file is assumed to be
+ at the end, even if it is not.
+
+ FLOW-CONTROL ON (or OFF)
+ Sets XON/XOFF flow control on or off. If set ON the host is
+ expected to respond to an XOFF or XON sent by Kermit-80. If
+ set off, no flow control is assumed and any XON/XOFF is
+ ignored.
+
+ IBM ON (or OFF)
+ Allow the transfer of files to and from an IBM mainframe
+ computer. This makes Kermit-80 wait for the IBM turnaround
+ character (XON), ignore parity on input, add appropriate parity
+ to output, and use local echoing during CONNECT. As
+ distributed, KERMIT-80 uses MARK parity for IBM communication.
+ If you don't give this command, IBM mode is OFF. Since IBM
+ VM/CMS KERMIT does not have timeout capability, SET IBM ON also
+ turns on the "fuzzy timer" automatically.
+
+ LOCAL-ECHO ON (or OFF)
+ When you CONNECT to a remote host, you must set LOCAL-ECHO ON
+ if the host is half duplex, OFF if full duplex. OFF by
+ default.
+
+ LOGGING ON (or OFF)
+ Cease or resume logging whenever connect mode is entered. This
+ is really only applicable after a LOG command is no longer
+ required.
+
+ NO-EXIT This command is applicable only for Kermit initiated with a
+ command tail. For example, if Kermit was initiated by:
+
+ KERMIT ;SEND HELLO;NO-EXIT
+
+ Kermit would first seek out and execute the KERMIT.INI file (if
+ present), then send file HELLO to a remote system. Usually
+ Kermit would exit back to CP/M, but NO-EXIT over-rides this.
+ STAY is a synonym for NO-EXIT.
+
+ Note the leading semicolon. This clears leading spaces from
+ the first command.
+
+ OUTPUT text-line
+ Send a line of text to the remote computer (or modem). This
+ simply copies the string to the correct line, and assumes all
+ appropriate parameters have been set to be used, e.g. speed,
+ parity etc. It is intended for use in TAKE command files.
+
+ PARITY option
+ Sets parity for outgoing characters to one of the following:
+ NONE, SPACE, MARK, EVEN, or ODD. On input, if parity is NONE,
+ then the 8th bit is kept (as data), otherwise it is stripped
+ and ignored. The parity setting applies to both terminal
+ connection and file transfer. If you set parity to anything
+ other than none, KERMIT-80 will attempt to use "8th bit
+ prefixing" to transfer binary files. If the other KERMIT is
+ also capable of 8th bit prefixing, then binary files can be
+ transferred successfully; if not, the 8th bit of each data byte
+ will be lost (you will see a warning on your screen if this
+ happens).
+
+ PORT port name
+ Allows you to switch between different communication ports.
+ This command is not available on all systems. Type SET PORT ?
+ for a list of valid options for your system. (Note: If your
+ system does not support several ports, this command will return
+ a "Not implemented" error if you try to set a port.)
+
+ PRINTER ON (or OFF)
+ Turns copying of CONNECT session to printer on and off. It is
+ also possible to toggle the printer on/off from the connect
+ state, by typing <escape character> followed by P.
+
+ RECEIVE parameter [value]
+ Set a RECEIVE parameter.
+
+ PAD-CHAR
+ Set the PAD character to use while receiving files.
+ Currently a dummy, as for SET SEND PAD-CHAR.
+ PADDING [value]
+ Set the number of PAD characters to use while receiving
+ files. Same as SET SEND PADDING.
+ START-OF-PACKET [value]
+ Set the default start of Packet character for receiving
+ files. Apply the same rules and considerations as for
+ SET SEND START-OF-PACKET.
+ PACKET-LENGTH number
+ Tell the other Kermit the longest packet length CP/M
+ Kermit is willing to receive during file transfer. The
+ maximum length is 94, which is also the default length.
+
+ SEND parameter [value]
+ Set a SEND parameter.
+
+ PAD-CHAR
+ Set the Pad character to be used while sending files.
+ It is currently a dummy entry, and does not do
+ anything.
+ PADDING [value]
+ Set the number of PAD-CHARS to be used while sending
+ files. This too does nothing.
+ START-OF-PACKET
+ Set the default start of packet character to another
+ character than control-A. This may be necessary on
+ systems (including intervening networks) that trap
+ control-A characters. Choose a control character not
+ otherwise used, ie not carriage return (13D, ODH), line
+ feed (10D, OAN), tabs (09D, 09H), backspace (08H), and
+ bell (07H) or any other used between you and your
+ remote system.
+
+ SPEED value
+ Change the baud rate of the communications port. This command
+ only works on some systems. value is the numeric baud rate
+ (300, 9600, etc.) desired. Type SET SPEED followed by a
+ question mark for a list of supported baud rates. On systems
+ that do not support this command, you must set the port baud
+ rate from CP/M or other setup mechanism outside of KERMIT-80.
+
+ TACTRAP Set the TAC intercept character. If you are attached to a TAC
+ it will swallow the intercept character (commercial AT sign by
+ default) so Kermit sends it twice. With this command you can
+ set the intercept character (ie the one to send twice) to
+ another character.
+
+ TERMINAL option
+ Select one of the following terminal characteristics:
+
+ OFF sets emulation off, and its up to the attached terminal
+ to respond to escape sequences sent from the remote
+ host system.
+
+ DUMB Like off, but carriage return and line feed characters
+ are the only control characters accepted. All other
+ control characters are simply ignored. (Really a "Glass
+ TTY").
+
+ EXTERNAL
+ Emulation is provided for by a routine in the system
+ dependent part of Kermit. Attempting to set this
+ option without having and externally supplied routine
+ will returna "Not Implemented" error.
+
+ OFF All characters are passed directly to the terminal
+ without any interpretation by Kermit.
+
+ VT52 When connected as a terminal to a foreign host, the
+ micro emulates a VT52. VT52 emulation is set by
+ default, except on micros that already have terminal
+ functionality built in, such as the DEC VT180 and
+ DECmate (these act as VT100-series terminals). Some
+ systems emulate other terminals, like the ADM3A; see
+ table 1-5.
+
+ QUIET Do not display any file transfer information onto the
+ console. This mode is useful if you console takes a
+ long time to update the display. Only the file name is
+ displayed. DEBUGging information is not displayed even
+ if selected.
+
+ REGULAR Inverse of QUIET. All packets etc displayed, as
+ ususal.
+
+ TIMER ON (or OFF)
+ Enable or disable the "fuzzy timer". The timer is off by
+ default, because in the normal case KERMIT-80 is communicating
+ with a mainframe KERMIT that has its own timer. Mainframe
+ KERMIT timers tend to be more precise or adaptable to changing
+ conditions. You should SET TIMER ON if you are communicating
+ with a KERMIT that does not have a timer. You should SET TIMER
+ OFF if you are communicating over a network with long delays.
+
+ USER user-number
+ Sets another user number to be active. Acceptable user numbers
+ are 0 to 31, though it is recommended to use user numbers 0 to
+ 15 only. This is really only useful for Winchester Systems
+ with high disk capacities.
+
+ WARNING ON (or OFF)
+ Warn user of filename conflicts when receiving files from
+ remote host, and attempt to generate a unique name by adding
+ "&" characters to the given name. ON by default, which is
+ equivalent to SET COLLISION RENAME.
+
+SHOW Display all settable parameters. You will get a page or so of the
+ status af all parameters that can be set using the SET command.
+
+STATUS The same function as Show.
+
+STAY Equivalent to SET NO-EXIT.
+
+TAKE filespec
+ Take characters and commands from the specified file as if they were
+ entered from the keyboard. This is useful if you want to set up a
+ batch job. A command file can send, get, receive, set functions etc
+ automatically. A TAKE command can be interrupted with ^C.
+ An automatic "TAKE KERMIT.INI" is executed from the default drive when
+ Kermit-80 is loaded. This can be used to set defaults of band rate,
+ parity, filetype, default drive etc.
+
+ If KERMIT.INI does not exist, control is given directly to the user.
+
+TRANSMIT filespec turnaround
+ Send the specified file to the system on the other end of the
+ connection as though it were being typed at the terminal, one line at a
+ time. Each line sent is terminated with a carriage return, and any
+ line feeds are stripped from the file sent. After each line has been
+ sent Kermit waits for a character string from the host (eg a acrriage
+ return). If not specified, a carriage return is assumed. No KERMIT
+ protocol is involved. An asterisk (star) is sent to the console for
+ every line sent, to indicate how the transfer is progressing. This is
+ useful for sending files to systems that don't have a KERMIT program.
+ During transmission, you may type one of these single-character
+ commands:
+
+ Control-C
+ Cease transmission, and drop into terminal emulation mode.
+ CR (carriage return) Re-transmit the previous line.
+
+TYPE filespec
+ Type a local CP/M file or files on the CP/M screen. A Control-C will
+ cancel the command and return to the Kermit prompt. A Ctrl-X will
+ cancel the current file and go on to the next one, if any. Typing any
+ other character while the file is being displayed will suspend the
+ output. Another character will resume output.
+
+VERSION Show the name, edit number, and edit date of several of the modules
+ that make up Kermit-80.
+
+
+1.6. Kermit-80 Flavors
+
+Many of the systems supported use an external terminal, rather than a built-in
+console. Kermit may be further customized for these systems by defining (at
+assembly time) the terminal type to be used. If the terminal type is unknown
+or does not match any of the existing terminal options, the generic "CRT"
+option may be selected. In this case, Kermit cannot do fancy screen control
+during file transfer; it simply types the file names, packet numbers, and
+messages in sequence across and down the screen. This works best if you can
+put your micro or terminal in "autowrap" mode; otherwise the packet numbers
+will pile up in the rightmost column; the filenames and messages will always
+appear on a new line, however. If no specific terminal has been selected,
+Kermit cannot do VT52 emulation; it can act as a "dumb terminal" (sometimes
+called a "glass TTY"), or else its own built in terminal firmware provides
+cursor control functions independent of the Kermit program.
+
+
+1.6.1. Generic Kermit-80
+
+"Generic Kermit-80" is an implementation of Kermit that should run on any 8080-
+compatible CP/M 2.2 system with no modification at all, or perhaps only a minor
+one. Unlike other Kermit-80 implementations, it contains no system-dependent
+manipulation of the serial port. All I/O is done with standard CP/M BIOS
+calls, and I/O redirection is done using the CP/M IOBYTE function, which,
+according to the Digital Research CP/M Operating System Manual, is an optional
+feature of any particular CP/M implementation. If your system does not provide
+the IOBYTE function, Generic Kermit-80 will not work; furthermore, not all
+systems that implement IOBYTE do so in the same way. The SET PORT command may
+be used to select the devices to be used for input and output. Table 1-1 lists
+the options to the SET PORT command and their effects.
+
+ -----------------------------------------------------------------------
+
+ SET PORT xxx input from output to
+ CRT CRT: CRT:
+ PTR PTR: PTP:
+ TTY TTY: TTY:
+ UC1 UC1: UC1:
+ UR1 UR1: UP1:
+ UR2 UR2: UP2:
+
+ Table 1-1: Kermit-80 SET PORT Options
+
+ -----------------------------------------------------------------------
+
+The default is SET PORT PTR. In all cases, the console (CON:) and list (LST:)
+devices used are those selected when Kermit is started.
+
+The reason all Kermit-80 implementations aren't generic is that a good deal of
+speed is sacrificed by getting all services from the operating system. While a
+specific implementation of Kermit-80 may be able to operate at 4800, 9600, or
+even 56 Kilo baud, generic Kermit will fail to work on some systems at speeds
+in excess of 1200 baud. In addition, many features of Kermit require more
+specific knowledge of the hardware involved. Generic Kermit cannot send a
+BREAK signal, or change the baud rate, for example.
+
+
+1.6.2. CP/M 3 Kermit
+
+CP/M-3 Kermit (also known as CP/M-Plus Kermit) is a version of generic
+Kermit-80, and should run on most CP/M-3 (CP/M-Plus) systems. It uses the
+auxilliary port (AUX:) to communicate to the remote Kermit. The SET BAUD and
+SET PORT commands are not supported; nor can a BREAK be sent. Like generic
+Kermit-80, a terminal may be selected at assembly time.
+
+
+1.6.3. System-Specific Versions
+
+There are also many versions of Kermit-80 tailored to specific systems. Most
+of these operate uniformly, but some of them take advantage (or suffer
+limitations) of the specific system. Here are some of the special features for
+particular systems:
+
+Amstrad: -- Two versions:
+
+ PCW 8256
+ The PCW 8256/8512 with the serial inerafce attached.
+
+ CPC 6128
+ The 664 with add on memory and 6128 are both supported. Both systems
+ must run CP/M Plus, so the 664 will need an add on RAM pack and CP/M
+ upgrade. A high speed transfer rate of 38k baud can be used between
+ Amstrad computers.
+
+ACCESS:
+ Access Matrix computer using port J5. Supports SET BAUD-RATE for rates of
+ 300-9600 baud.
+
+Apple II -- four variations:
+
+ APMMDM:
+ Apple with Z80 Softcard and Micromodem II in slot 2 Dialout capability
+ provided in connect command; user is prompted for phone number if
+ carrier is not present. During connect mode, ^]D drops carrier. BYE
+ command also causes carrier to be dropped.
+
+ AP6551:
+ Apple with Z80 Softcard, and one of several 6551-based communication
+ cards; the slot number is a compile-time parameter (default is slot 2).
+ SET BAUD-RATE supported; speeds are 110-19200 baud.
+
+ APCPS:
+ Apple with Z80 Softcard and CP Multi-Function Card. The slot number is
+ again a compile-time parameter. SET BAUD-RATE is supported for baud
+ rates from 50 baud to 19200 baud.
+
+ AP6850:
+ Apple II with Z80 Softcard and a 6850-based USART in slot 2-the slot
+ being a compile-time parameter. SET BAUD-RATE is not supported.
+
+BBC:
+ Acorn Computers BBC Computer with Acorn Z80 second processor running
+ CP/M-80. Supports SET BAUD-RATE and can send breaks.
+
+BigBoard II:
+ Uses serial port A. To use port B, change mnport, mnprts, and baudrt and
+ reassemble. Can generate BREAK. SET SPEED supported; speeds are 300-38400
+ baud.
+
+Cifer:
+ Originally coded for Cifer 1886 using the VL: port set as TTYI: and TTYO:
+ but works successfully on 18xx and 28xx series machines.
+
+ There are now two versions, each with two variations: Either running CP/M
+ Version 2.2 or 3.0, and either using the VL: or AUX: ports. The VL: port
+ version can only use seven bits of data, so parity prefixing is required
+ for binary file transfers. This restriction is removed by using the AUX:
+ port. For those interested, the problem is due to the interprocessor link
+ between the video and CPU (!) boards. The VL: port is on the video board,
+ and the AUX: port on the CPU board, and the inter processor link can only
+ transfer seven bits of data.
+
+ Supports SET SPEED, and can generate breaks on some models with a BREAK
+ key.
+
+Comart:
+ Comart Communicator-Similar to Northstar equipment. Can generate BREAK.
+
+Compupro:
+ Based on Kermit 3.x, and has been merged into V4.09
+
+CPT-85xx word processors:
+ Can generate BREAK. SET SPEED supported; speeds are 50-9600 baud.
+
+Cromemco:
+ Cromemco computers with TU-ART card. Supports SET BAUD-RATE (110-9600
+ baud).
+
+DEC DECmate II word processor (with Z80 card):
+ Can generate BREAK.
+
+DEC VT180 (Robin):
+ Three output ports, referred to as COMMUNICATIONS, GENERAL, and PRINTER.
+ Can generate BREAK.
+
+Digicomp Delphi 100:
+ SET SPEED supported; speeds are 50-19200 baud.
+
+Discovery:
+ Action Computer Enterprises "Discovery" Multi-user Computer. Uses Port B
+ on an 83U user board. Supports SET SPEED for 50-19200 baud. Can generate
+ BREAK.
+
+Epson:
+ Epson PX-8 with LCD display. Although it is quite different in displaying
+ of Packet Information, it works as any other CP/M-80 Kermit. Supports SET
+ SPEED and can generate BREAK.
+
+Generic Kermit:
+ Two versions, one for CP/M version 2.2 and version 3. These systems use
+ IOBYTE flipping (V2.2) and the AUX: device to communicate to the serial
+ line. You may have to SET PORT xxx before the version 2.2 will work, as
+ Kermit needs to know what device is the serial line.
+
+Genie:
+ Eaca Video Genie.
+
+Heath: Three Versions:
+
+ H8QUAD
+ for Heath-8 systems with the quad io board. This system has been
+ derived from V3.x code. Note that this version will not run "as is" on
+ H89 systems.
+
+ H89 For Heath-89 machines suports baud rates from 50 to 56,000 baud.
+
+ Z100
+ For Z-100 running CP/M-85. This version does not support setting of
+ baud rates.
+
+Intertec Superbrain: Two Versions:
+
+ BRAINA
+ For superbrain using AUX port. Breaks and SET BAUD both supported
+
+ BRAINM
+ As above, but using the MAIN port.
+
+Ithaca:
+ Ithaca Intersystems based computer using the VIO card for all IO to the
+ outside world. The system is strictly speaking a home-brew variant of the
+ Ithaca machine, using an S100 cardcage without a front panel. It uses the
+ Extended BIOS by EuroMicro of London. However, I see no reason for this
+ version not running on a genuine Ithaca Intersystems machine. There are
+ patches needed to the EuroMicro BIOS to make this version work.
+
+Kaypro:
+ Should work on most Kaypro models, as well as some related systems
+ (Ferguson BigBoard I, Xerox 820). For the newer Kaypros with multiple
+ ports, Kermit uses the one labeled "serial data"; it cannot use the serial
+ printer or internal modem ports (but it should be possible to modify the
+ values for mnport, mnprts, and baudrt to do this). Can generate BREAK.
+ SET SPEED supported; speeds are 50-19200 baud.
+
+Lobo:
+ Lobo MAX-80. Supports SET SPEED and can generate BREAKS.
+
+Merlin:
+ British Telecom Merlin M2215 (also Rair Black Box, possibly also the ICL
+ PC?). Requires a terminal.
+
+Microbee:
+ Microbee Systems computer made in Australia. Works on Microbee 56K (Series
+ 2 APC), 64K (Computer in a Book), 128K (Dynamic), and 256K (256TC). Can
+ generate BREAK. SET BAUD-RATE supported; speeds are 75-9600. All serial
+ I/O is via software, not hardware. Simultaneous transmit and receive
+ possible on all speeds except 75/1200, 1200/75, 4800, and 9600.
+
+Micromate:
+ PMC 101 Micromate. Supports SET SPEED and can generate BREAK.
+
+Micromint: Two versions
+
+ S6 The Ciarcia/Micromint sb-180 board with a 6Mhz procoessor. System
+ requires a terminal.
+
+ S9 As above, but with a 9Mhz processor.
+
+NCR:
+ Decisionmate 5. Uses the 2651 and is largely the same as the Ithaca
+ Intersystems machine implementation.
+
+Northstar: -- There are four versions available:
+
+ NORTHS:
+ Northstar Horizon with HS10-4 board. Supports SET SPEED and SET PORT.
+
+ HORIZON:
+ Northstar Horizon using the serial ports on the Mother board. Can
+ generate BREAK.
+
+ BASICNS:
+ Basic Northstar Horizon using the printer port. Can generate BREAK.
+
+ ADVANT:
+ Northstar Advantage. Supports SET SPEED and can generate BREAK. Traps
+ Control-0 in the system filter.
+
+Morrow Decision I:
+ Uses the Multi-I/O board. Port 1 is the console, port 3 is the
+ communications line. SET SPEED supported; speeds are 75-56000 baud.
+
+Morrow Micro Decision I:
+
+Nokia MicroMikko:
+ Will not echo control-O (which locks keyboard). SET SPEED supported;
+ speeds are 75-9600 baud.
+
+Ohio Scientific:
+ Doesn't have screen control.
+
+Osborne 1:
+ Uses serial line, not internal modem. Left-arrow key generates <DEL>
+ ("delete" or "rubout" character) during connect mode. SET SPEED supported;
+ speeds are 300 and 1200 baud. Now supports multi-sector buffering.
+
+Research Machines: Two Versions:
+
+ RM380ZM:
+ 380Z and 5.25" disks supports SET BAUD.RATE
+
+ RM380ZF:
+ 380Z and 8" disks, otherwise as above.
+
+Sanyo:
+ Sanyo MBC-1100. This version derived from Kermit V3.x
+
+ScreenTyper:
+ Details unkown.
+
+TRS-80: Three versions:
+
+ TRS80LB:
+ TRS-80 with Lifeboat CP/M
+
+ TRS80PT:
+ TRS-80 with Pickles and Trout CP/M
+
+ TRSM4:
+ TRS-80 Model 4 with Montezuma CP/M
+
+Teletek:
+ Teletek Systemaster. Supports SET BAUD.
+
+Telcon:
+ TELCON ZOBRA portable computer.
+
+Torch:
+ Torch Unicorn 5 initially, but the code runs on other Z80 based CP/N (as in
+ Nut!) systems. It uses the BBC Computer as a "Base processor", and is
+ similar to the BBC version. The base processors RS423 port is used rather
+ than any built in Modem. (UK telecoms legislation effectively makes modem
+ control software tricky business...). Two potential versions exist-one
+ using cursor positioning codes for a MCP and CCCP ROM combination of
+ revision less than 1.00, the other version uses the additional facility
+ MCP/CCCP versions greater than 1. Supports SET SPEED and can generate
+ BREAKs.
+
+ Note that binary files must be transferred using SET PARITY to anything
+ other than NONE! Parity is neither generated nor checked.
+
+US Micro Sales:
+ S-100-8 based computer.
+
+Vector Graphics:
+ Vector
+
+Xerox:
+ Xerox 820.
+
+Z80MU:
+ Development Kermit on a PC running the Z80MU Z80 and CP/M 2.2 development
+ system. Allows development of the system independent modules to be done on
+ an IBM PC or clone. Also allows the generation of new .HEX files, that may
+ then be KERMITed to the target system. Note: Not all the BDOS or BIOS
+ routines are supported, so avoid "unusual" BIOS/BDOS calls. (For example,
+ DIR from within Kermit will fail as one of the BIOS routines returning disk
+ parameters is not supported.)
+
+
+1.7. Installation of Kermit-80
+
+Kermit-80 was written originally for the Intertec SuperBrain in lowest-common-
+denominator 8080 code with the standard assembler, ASM (single source module,
+no macros, no advanced instructions), so that it could be assembled on any
+CP/M-80 system (the 8080 assembler is distributed as a standard part of
+CP/M-80, whereas the fancier Z80 or macro assemblers are normally commercial
+products). It has since been modified to run on many other systems as well.
+Kermit-80 should be able to run on any 8080-, 8085- or Z80-based microcomputer
+under CP/M with appropriate minor changes to reflect the port I/O and screen
+control for the system (see below).
+
+The proliferation of new systems supported by Kermit-80 made the program grow
+so large and complicated that it had to be broken up into system-independent
+and system-dependent modules, as of version 4 (this was done by Charles
+Carvalho of ACC). Each module is composed of multiple files. This has reduced
+the time and disk space necessary for assembly; Kermit-80 may once again be
+assembled on a CP/M system with roughly 250Kbytes of space. The majority of
+the code does not need to be reassembled to support a new system.
+Unfortunately, it can no longer be assembled with ASM, since ASM does not
+support multiple input files. To allow it to be assembled on any CP/M system,
+the public-domain assembler LASM is included in the distribution kit. Kermit-80
+may also be assembled with Microsoft's M80 (not supplied). In theory, any 8080
+assembler supporting the INCLUDE directive ought to work, as well.
+
+All versions of Kermit-80 are assembled from the same set of sources, with
+system dependencies taken care of by assembly-time conditionals within the
+system-dependent module (eventually, the system-dependent module will itself be
+broken up into multiple files, one for each system). The most important system
+dependencies are terminal emulation (when CONNECTed to the remote host) and
+screen handling, which are dependent on the individual micro's escape codes
+(these features are table driven and easily modified for other CP/M systems),
+and the lowest level I/O routines for the serial communications port. The port
+routines are best done only with BDOS calls, but some systems do not allow
+this, primarily because the BDOS routines strip the parity bit during port I/O,
+and the parity bit is used for data when transmitting binary files.
+
+Kermit-80's I/O routines must check the port status and go elsewhere if no
+input is available; this allows for virtual terminal connection, keyboard
+interruption of stuck transmissions, etc. On systems that fully implement I/O
+redirection via the optional CP/M IOBYTE facility, this may be done by
+switching the IOBYTE definition. On others, however, IN/OUT instructions
+explicitly referencing the port device registers must be used.
+
+CP/M-80 KERMIT versions 3.8 and later include a "fuzzy timer" that allows a
+timeout to occur after an interval ranging from 5 to 20 seconds (depending upon
+the speed of the processor and the operating system routines) during which
+expected input does not appear at the port. In this case, retransmission
+occurs automatically. In any case, you may type a carriage return during
+transmission to simulate a timeout when the transfer appears to be stuck.
+
+
+1.7.1. Organization of Kermit-80
+
+Kermit-80 consists of two modules, each of which is generated from multiple
+source files. The first module contains the system-independent code; the
+second module is configured for a particular system and merged with the system-
+independent module to produce a customized Kermit-80.
+
+The distribution kit contains:
+
+ - the system-independent module, CPSKER.HEX;
+ - the system-dependent modules, CPV*.HEX (see table 1-2 and 1-3);
+ - the source files, CPS*.ASM and CPX*.ASM,
+ - the public-domain CP/M assembler, LASM.*,
+ - the public-domain CP/M load/patch utility, MLOAD.*
+
+-------------------------------------------------------------------------------
+
+Symbol Filename System
+ACCESS CPVACC Access Matrix
+ADVANT CPVADV Northstar Advantage
+AP6551 CPVAPL Apple II, Z80 Softcard, 6551 ACIA in serial interface
+AP6850 CPVA65 Apple II, Z80 Softcard, 6850 ACIA in Serial Iiterface
+APMMDM CPVAPM Apple II, Z80 Softcard, Micromodem II in slot 2
+APCPS CPVCPS Apple II, Z80 Softcard, with CPS multifunction card
+BASICNS CPVBNS Northstar Horizon (terminal required)
+BBC CPVBBC Acorn "BBC" computer with Acorn Z80 second processor
+BBII CPVBB2 BigBoard II (terminal required)
+BRAINM CPVBRM Intertec Superbrain using the main port
+BRAINA CPVBRA Intertec Superbrain using the Aux port
+CIFER2 CPVCIF Cifer 1886 using the VL: Serial port and CP/M V2.2
+CIFER3 CPVCI3 Cifer 1886 using the VL: Serial port and CP/M V3.0
+CIFER2 CPVCA2 Cifer 1886 using the AUX: Serial port and CP/M V2.2
+CIFER3 CPVCA3 Cifer 1886 using the AUX: Serial port and CP/M V3.0
+CMEMCO CPVCRO Cromemco with TU-ART card. Terminal required)
+COMART CPVCOM Comart Communicator (terminal required)
+COMPRO CPVPRO Compupro with Interfacer 4 (or 3). Terminal required.
+CPC CPVCPC Amstrad CPC 664 and 6128 and CP/M 3
+CPM3 CPVCP3 "Generic": CP/M 3.0 (CP/M Plus) systems (terminal req'd)
+CPT85XX CPVCPT CPT-85xx wordprocessor with CP/M
+DELPHI CPVDEL Digicomp Delphi 100 (terminal required)
+DISC CPVDIS Action Computer Enterprises "Discovery" (terminal req'd)
+DMII CPVDM2 DECmate II with CP/M option
+GENER CPVGEN "Generic": CPM 2.2 systems with IOBYTE (terminal req'd)
+GENIE CPVGNI Video Genie
+H8QUAD CPVH8Q Heath-8 with Quad 8 i/o board
+HEATH CPVH89 Heath/Zenith H89
+HORIZON CPVHOR Northstar Horizon (terminal required)
+KPII CPVKPR Kaypro-II (and 4; probably supports all Kaypro systems)
+LOBO CPVLBO Lobo Max-80
+
+"symbol" is the symbol used to select the target system, in CPVTYP.ASM;
+
+"filename" is the name under which the module is supplied in the distribution.
+
+ Table 1-2: Systems supported by Kermit-80 (Part 1)
+
+-------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------
+
+Symbol Filename System
+M2215 CPVMRL British Telecom Merlin/Rair Black Box (terminal required)
+MBEE CPVBEE Microbee
+MDI CPVMDI Morrow Decision I (terminal required)
+MIKKO CPVMIK MikroMikko
+MMATE CPVMM PMC 101 Micromate (terminal required)
+MMDI CPVUD Morrow Micro Decision I (terminal required)
+NCRDMV CPVDMV NCR Decision Mate V. (Terminal required?)
+NORTHS CPVNS Northstar Horizon with HSIO-4 card (terminal req'd)
+OSBRN1 CPVOSB Osborne 1
+OSI CPVOSI Ohio Scientific
+PCI2651 CPVPCI Ithaca Intersystems with VI0 card (terminal required)
+PCW CPVPCW Amstrad PCW 8256/8512 with serial interface
+PX8 CPVPX8 Epson PX-8
+RM380ZM CPVRMM Research Machines 380Z with MDS (5.25" discs)
+RM380ZF CPVRMF Research Machines 380Z with FDS (8" discs)
+ROBIN CPVROB DEC VT180
+S1008 CPVUSM US Microsales S-100-8 (terminal required)
+SANYO CPVSAN Sanyo MBC-1100
+SB6 CPVSB6 Micromint SB-180 with 6Mhz CPU (terminal required)
+SB9 CPVSB9 Micromint SB-180 with 9Mhz CPU (terminal required)
+SCNTPR CPVSCN Screentyper
+TELCON CPVTEL TELCON Zobra portable
+TELETEK CPVTET Teletek Systemaster
+TORCH CPVTRC Torch computers BBC-B with Z80 second processors
+TRS80LB CPVTLB TRS-80 model II with Lifeboat 2.25C CP/M Display
+TRS80PT CPVTPT TRS-80 model II with Pickles + Trout CP/M Display
+TRSM4 CPVTM4 TRS-80 model IV
+VECTOR CPVVEC Vector Graphics
+XER820 CPVXER Xerox 820
+Z100 CPVZ00 Z-100 under CP/M-85
+Z80MU CPVZ80 Z80MU development system on a PC
+
+"symbol" is the symbol used to select the target system, in CPXTYP.ASM;
+
+"filename" is the name under which the module is supplied in the distribution.
+
+ Table 1-3: Systems supported by Kermit-80 (Part 2)
+
+-------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------
+
+Symbol Terminal type
+CRT Dumb terminal type. Does not do cursor addressing
+ADM3A Lear Seigler ADM 3A
+ADM22 Lear Seigler ADM 22
+AM230 Ampro 230
+H1500 Hazeltine 1500
+SMRTVD Netronics Smartvid
+SOROQ Soroq IQ-120
+TVI912 Televideo 912
+TVI925 Televideo 925 or Freedom 100
+VT52 Dec VT52 or equivalent (H19)
+VT100 Dec VT100 or equivalent
+WYSE Wyse 100
+
+"symbol" is the symbol used to select the target system, in CPXTYP.ASM;
+
+"Terminal type" is the type of terminal "symbol" selects.
+
+ Table 1-4: Terminals supported by Kermit-80
+
+-------------------------------------------------------------------------------
+
+
+1.7.2. Downloading Kermit-80
+
+You'll need either a pre-configured .COM file or the system-independent module,
+CPSKER, in binary (.COM) or hex (.HEX) format and the system-dependent overlay
+for your system (from Tables 1-2 and 1-3). If your system is not listed in the
+table, get the generic CP/M 2.2 Kermit or the generic CP/M 3 Kermit. If you
+already have a version of Kermit on your micro and you want to install a new
+version, simply use your present version to get the new files. Transfer the
+files to your system and skip ahead to "merging the modules".
+
+If you do not have a copy of Kermit on your micro, and you cannot borrow a
+Kermit floppy but you do have access to a mainframe computer with a copy of the
+Kermit-80 distribution, you should read this section.
+
+There are several ways to get CP/M Kermit from a host system to your micro.
+The easiest is to "download" the necessary "hex" files into your micro's memory
+and then save them on the disk. If you have a terminal emulator program on
+your micro which can save a copy of the session to disk, connect to your host,
+and type the necessary files. Exit from the emulator, saving the session log,
+and edit the session log to extract the hex files. Skip ahead to "merging the
+files".
+
+The following is a procedure which, though far from foolproof, should allow you
+to get a version of Kermit to your CP/M based micro. It depends upon the host
+prompt, or at least the first character of the host prompt, being some
+character that cannot appear in a hex file (the valid characters for hex files
+are the digits 0-9, the upper case letters A-F, the colon ``:'', carriage
+return, and line feed). As soon the prompt character is encountered, the
+transfer will terminate. If your host does not issue a prompt that will
+accommodate this scheme, you can achieve the same effect by adding an atsign
+``@'' to the very end of the hex file before sending it from the host. The
+program below looks for an atsign (the normal DEC-20 prompt, hex 40).
+DECSYSTEM-10 users would look for a dot, hex 2E; VAX/VMS or UNIX users would
+look for a dollar sign, hex 24; UNIX C-Shell users would look for a percent
+sign, hex 26.
+
+ 1. For CP/M 2.2 systems, connect to a floppy disk with plenty of free
+ space. Run DDT and type in the following (the comments should not
+ be typed in; they are there just to tell you what's happening):
+ (Note that this wont work for CP/M Plus or 3.0 systems!)
+
+ ----------------------------------------------------------------
+-a100 ;Begin assembling code at 100
+ 0100 LXI H,2FE ;Where to store in memory
+ 0103 SHLD 200 ;Keep pointer there
+ 0106 MVI E,D ;Get a CR
+ 0108 MVI C,4 ;Output to PUNCH (send to HOST)
+ 010A CALL 5
+ 010D MVI C,3 ;Input from READER (read from HOST)
+ 010F CALL 5
+ 0112 ANI 7F ;Strip parity bit
+ 0114 PUSH PSW ;Save a and flags
+ 0115 MOV E,A ;Move char to E for echo
+ 0116 MVI C,2 ;Output to screen
+ 0118 CALL 5
+ 011B POP PSW ;Restore A and flags
+ 011C CPI 40 ;(or 4E,24,26,etc) System prompt?
+ 011E JZ 127 ;Yes, have whole file in memory
+ 0121 CALL 17A ;No, store another byte
+ 0124 JMP 10D ;Read another byte
+ 0127 MVI A,1A ;Get a Control-Z (CP/M EOF mark)
+ 0129 CALL 17A ;Store it in memory
+ 012C LXI H,300 ;Get memory pointer
+ 012F SHLD 202 ;Store as DMA pointer
+ 0132 LDA 201 ;Get 'HI' byte of memory pointer
+ 0135 STA 200 ;and store it as 'LO' one
+ 0138 XRA A
+ 0139 STA 201 ;Zero 'HI' byte (slow *256)
+ 013C MVI C,16 ;Make NEW file
+ 013E LXI D,5C ;With FCB1
+ 0141 CALL 5
+ 0144 CALL 15E ;Write 128 bytes (sector)
+ 0147 CALL 15E ;Write another sector
+ 014A LXI H,FFFF ;Get a 16-bit Minus One
+ 014D XCHG ;into DE
+ 014E LHLD 200 ;Get 256-byte counter
+ 0151 DAD D ;Decrement
+ 0152 SHLD 200 ;and store back
+ 0155 MVI A,2 ;Check if
+ 0157 CMP L ; 256-byte counter down to offset
+ 0158 JZ 183 ;Yes, we're done
+ 015B JMP 144 ;Keep writing..
+ 015E LHLD 202 ;Get file-pointer
+ 0161 XCHG ;into DE
+ 0162 MVI C,1A ;Set DMA-address
+ 0164 CALL 5
+ 0167 MVI C,15 ;Write sector (128 bytes)
+ 0169 LXI D,5C ;using FCB1
+ 016C CALL 5
+ 016F LHLD 202 ;Get file-pointer
+ 0172 LXI D,80 ;128-bytes
+ 0175 DAD D ;added to file-pointer
+ 0176 SHLD 202 ;and save
+ 0179 RET ;and return
+ 017A LHLD 200 ;Get Memory-pointer
+ 017D MOV M,A ;Store character
+ 017E INX H ;Increment Pointer
+ 017F SHLD 200 ;and save
+ 0182 RET ;and return
+ 0183 MVI C,10 ;CLOSE file
+ 0185 LXI D,5C ;using FCB1
+ 0188 CALL 5
+ 018B JMP 0 ;Force WARM BOOT
+ 0179
+ -^C ;(Type Control-C) Return to CP/M
+ A>SAVE 1 FETCH.COM ;Save program, we need to run it twice.
+
+ Figure 1-1: Bootstrap program for Kermit-80 and CP/M Version 2.2
+
+ ----------------------------------------------------------------
+
+ Alternatively, an assembler source file for this program is
+ distributed with CP/M Kermit as CPKFET.ASM. You might prefer to
+ type the assembler version in and assemble and load it (ASM CPKFET,
+ LOAD CPKFET, or MASM CPKFET, MLOAD CPKFET), to let the assembler and
+ loader catch any typing errors.
+
+ 2. Connect to your host using a terminal or a terminal emulation
+ program. Ensure that your host does not have your terminal in "page
+ mode" (does not pause at the end of each screenful).
+
+ 3. Tell the host to display the first hex file (the system-independent
+ module) at your terminal, e.g. give a command like TYPE CPSKER.HEX,
+ without a terminating carriage return.
+
+ 4. Return to your micro by switching the cable from the terminal to the
+ micro, or by terminating the micro's terminal program.
+
+ 5. Make sure your IOBYTE is set so that RDR: and PUN: correspond to the
+ I/O port that is connected to the host (this would normally be the
+ case unless you have done something special to change things).
+
+ 6. Load the program you entered in the first step with DDT, and use it
+ to capture the first hex file:
+
+ DDT FETCH.COM
+ -icpsker.hex ;Setup FCB for file CPSKER.HEX
+ -g100,179 ;Execute the program.
+
+ Now there should be a file CPSKER.HEX on your connected disk.
+
+ 7. Return to the host, and tell it to display the second hex file (the
+ system-dependent module for your configuration). Again, do not type
+ the terminating carriage return.
+
+ 8. Return to your micro, and run the capture program again:
+
+ DDT FETCH.COM
+ -icpxovl.hex ;Setup FCB to create CPXOVL.HEX
+ -g100,179 ;Execute the program.
+
+ Now there should be a file CPXOVL.HEX on your connected disk.
+ Replace CPXOVL.HEX in this example with the appropriate overlay file
+ for your system.
+
+Merging the files:
+
+ 1. For purposes of illustration, we will assume the system-dependent
+ overlay is called "cpxovl.hex". The two hex files may be combined
+ with MLOAD or DDT. If you already have a running Kermit, you can
+ transfer MLOAD.HEX to your system and create MLOAD.COM by running
+ LOAD. If you're bootstrapping Kermit, you could transfer MLOAD.HEX
+ to your system the same way you got the other two .HEX files, but
+ it's probably simpler to use DDT to get Kermit running, and get
+ MLOAD later if you need it.
+
+ 2. Using MLOAD, the two pieces may be easily merged:
+
+ A>mload kerm411=cpsker,cpxovl
+ (Some messages about program size, etc...)
+ A>
+
+ 3. If you don't have MLOAD running, it's a bit more complex:
+ A>ddt cpsker.hex
+ NEXT PC
+ 3500 0100
+ -icpxovl.hex
+ -r
+ NEXT PC
+ xxxx 0000
+ -^C
+ A>save dd kerm411.com
+
+ The page count ("dd") used in the SAVE command is calculated from
+ the last address ("xxxx") given by DDT in response to the R command:
+ drop the last two digits and add 1 if they were not zero, then
+ convert from hexadecimal (base 16) to decimal (base 10): 684F
+ becomes 69 hex, which is 105 decimal (5 times 16 plus 9) -- but 6700
+ becomes 67 hex, or 103 decimal (consult an introductory computing
+ book if you don't understand number base conversion).
+
+ 4. If you are using the Z80MU CP/M and Z80 development toolkit on an
+ IBM PC or clone, then follow the same instructions as for a genuine
+ CP/M system. When you have loaded your file, you will have to ship
+ the .COM or two .HEX files to the target CP/M system. (Possibly
+ using a previous issue of Kermit?)
+
+ 5. Note that CP/M hex files have checksums on each line. If there were
+ any transmission errors during the downloading process, MLOAD or DDT
+ will notice a bad checksum and will report an error (something like
+ "Illegal Format"). If you get any errors during loading, either fix
+ the hex file locally with an editor, or repeat the transfer.
+
+You now should have a running version of Kermit-80, called KERM411.COM.
+
+Test your new Kermit by running it. If it gives you a prompt, it might be OK.
+(don't delete your old one yet...). Instead of a prompt, you could get one of
+two messages indicating that the configuration information is invalid:
+
+ ?Kermit has not been configured for a target system
+
+or
+
+ ?Consistency check on configuration failed
+
+Of course, neither of these messages should appear if you're building Kermit
+from the distribution kit. The first message indicates that the overlay was
+not found where the system-independent module expected to find it, probably
+because the overlay address is incorrect; the second indicates that the version
+of CPXLNK used in the system-dependent module is incompatible with the system-
+independent module.
+
+Once you are satisfied that KERMIT40 works correctly, you should rename your
+old KERMIT.COM to something else, like OKERMIT.COM, and rename KERMIT40.COM to
+KERMIT.COM.
+
+
+1.7.3. Assembling Kermit-80 from the sources
+
+Kermit-80 is built in two pieces from the following files:
+
+The system-independent files:
+ CPSKER.ASM header file
+ CPSDEF.ASM definitions for both KERMIT and KERSYS
+ CPSMIT.ASM initialization, main loop, miscellaneous commands (BYE, EXIT,
+ LOG, SET, SHOW, STATUS, and VERSION)
+ CPSCOM.ASM second part of commands, status and set file
+ CPSPK1.ASM part 1 of the KERMIT protocol handler (SEND, RECEIVE,
+ LOGOUT,and FINISH commands)
+ CPSPK2.ASM part 2 of the KERMIT protocol handler
+ CPSREM.ASM REMOTE routines (FINISH, BYE and LOGOUT in CPXPK*.ASM)
+ CPSSER.ASM SERVER routines (for the future)
+ CPSTT.ASM the transparent commands (TRANSMIT, CONNECT)
+ CPSCPM.ASM CP/M commands (DIR, ERA, USER, TYPE, PRINT, COPY)
+ CPSWLD.ASM the wildcard handler
+ CPSCMD.ASM the command parser
+ CPSUTL.ASM utility routines and data
+ CPSDAT.ASM data space and the overlay definitions
+ CPXLNK.ASM linkage area description
+
+The system-dependent files:
+ CPXTYP.ASM system selection
+ CPXLNK.ASM system overlay specification and jump table
+ CPXCOM.ASM common routines for all systems
+ CPXSWT.ASM system selector or switcher
+
+One of:
+ CPXSYS.ASM family file for some system-specific code
+ CPXTOR.ASM family file for Torch, Superbrain, PCI2651 etc
+ CPXNOR.ASM family file for Northstar and Comart machines
+ CPXMRL.ASM family file for British Telecom Merlin/Rair Black Box
+ CPXSB.ASM family file for Micromint SB-180 systems
+ CPXCIF.ASM family file for Cifer systems
+ CPXHEA.ASM family file for Heath/Zenith systems
+ CPXAPP.ASM family file for Apple II systems
+ CPXPCW.ASM family file for Amstrad PCW 8256/8512 machines
+ CPXBBI.ASM family file for BigBoard, Kaypro and Xerox 820 systems
+ CPXBEE.ASM Microbee
+ CPXSYO.ASM family file for Sanyo MBS-1100 systems
+ CPXTM4.ASM family file for Tandy Model 4 with CP/M systems
+ CPXGNI.ASM family file for Video Genie systems
+ CPXPRO.ASM family file for Compupro systems
+ CPXZ80.ASM family file for the Z80MU development system
+
+and if you use a terminal,
+ CPXVDU.ASM display codes for VDUs etc. Not always required
+
+The system-independent module contains all of the system-independent files
+except for CPXLNK.ASM, which is assembled into the system-dependent module to
+provide the structures needed to connect the two modules. As distributed, the
+system-independent module is named CPSKER.HEX. If you have a copy of
+CPSKER.HEX, you do not need to reassemble the system-independent module to
+configure Kermit for your system.
+
+The system-dependent module consists of CPXTYP.ASM, CPSDEF.ASM, CPXLNK.ASM,
+CPXSWT.ASM, CPSCOM.ASM, one of the family files CPXSYS.ASM, CPXTOR.ASM,
+CPXMRL.ASM, CPXSB.ASM, CPXCIF.ASM, CPXHEA.ASM, CPXBBI.ASM, CPXTM4.ASM,
+CPXGNI.ASM, CPXNOR.ASM, CPXAPP.ASM, CPXPCW.ASM, or CPXPRO.ASM, and possibly
+CPXVDU.ASM, if your system uses a terminal for the console. One copy of the
+system-dependent module is supplied already assembled for each supported
+system; the filename may be obtained from tables 1-2 and 1-3. If a terminal is
+required for a system, a CRT (glass TTY device) has been selected.
+
+After assembling the two pieces separately, they are combined with DDT or MLOAD
+into a system-specific Kermit.
+
+If you want to rebuild the system-independent module, the only change you may
+need to make is to select the assembler to be used, in CPSKER.ASM. Define one
+of MAC80, M80, or LASM to TRUE to select it as the assembler; the others should
+be defined FALSE.
+
+Assuming you have the Microsoft Macro Assembler package (M80/L80), you'll need
+to do the following:
+
+ A>m80 cpsker=cpsker.asm
+ A>l80 /p:100,cpsker,cpsker/n/e
+
+This will produce CPSKER.COM.
+
+If you are using LASM instead, do this:
+
+ A>lasm cpsker
+
+LASM will generate CPSKER.HEX and CPSKER.PRN. LASM allows options to be
+specified in the same way as the standard assembler, ASM, so the command
+
+ A>lasm cpsker.abz
+
+will read the source files from drive A, send the .HEX file to drive B, and
+suppress the listing file.
+
+If you are using the Z80MU development system on an IBM PC or clone, then
+assemble your files using either LASM and MLOAD or M80 and L80, as if you were
+using a genuine CP/M-80 system. Note that you will still have the problem of
+transferring your assembled files to the target CP/M system.
+
+If you want to generate a system-dependent overlay for a particular system, or
+want to change the terminal supported, you'll need to check three areas in
+CPXTYP.ASM:
+
+First, the overlay start ADDRESS. The symbol "ovladr" is EQUated to the
+address of "LNKFLG" in the system-independent module, as the starting address
+of the overlay (7000H for version 4.11). You'll need to know this value if
+you're building the overlay with M80/L80. You won't normally need to change
+this value.
+
+Second, the assembler being used. Again, define one of MAC80, M80, and LASM to
+be TRUE to select it, and define the others to be FALSE. The two modules
+(system-independent and system-dependent) do not need to be built with the same
+assembler.
+
+Third, the system configuration. Locate your system in tables 1-2 and 1-3,
+then define the appropriate symbol TRUE, and the rest FALSE. If the system
+comes with a builtin console terminal, define all the terminal switches FALSE.
+If the system uses an external terminal as the console, locate the terminal in
+table 1-5 and define the appropriate symbol TRUE, and the remainder FALSE. If
+the terminal is not listed in table 1-5, use the CRT switch; in this case, VT52
+emulation is not supported.
+
+In addition, there are a few general and system-specific symbols which may be
+altered to fit your system:
+
+APSLOT For Apple with 6551 ACIA, defines the slot number of the serial
+ card
+
+CPUSPD Processor speed in units of 100KHz (currently used only for
+ bbII and kpII for timing loops)
+
+TAC For users connecting through ARPAnet TACs: set to TRUE if you
+ wish the default TACTRAP status to be ON. (This may be
+ overridden with the SET TACTRAP command). If you're not
+ connecting through a TAC, set tac to FALSE and ignore tacval.
+
+TACVAL For ARPANET TAC users: defines the default TAC intercept
+ character (may be overridden with the SET TACTRAP command).
+
+If you are just assembling an existing configuration, you'll need to edit
+CPXTYP.ASM only. If you are adding support for a new system, you should not
+modify CPSDEF.ASM or CPXLNK.ASM; if you do, you'll have to change the system-
+independent module also. Eventually, CPXSYS.ASM will be split into separate
+files, each of which will generate one or more related systems. When this
+happens, you'll want to pick the one closest to your system to use as a
+starting point.
+
+After editing CPXTYP.ASM as necessary, assemble and link the overlay as
+follows:
+
+ - With M80 (where "xxxx" is the hex value of ovladr from CPXLNK.ASM):
+
+ A>m80 cpxtyp=cpxtyp.asm
+ A>l80 /p:xxxx,cpxtyp,cpxtyp/n/x/e
+
+ - With LASM:
+
+ A>lasm cpxtyp
+
+With an IBM PC or clone using the Z80MU softwrae, follow the instructions as if
+you were using a real CP/M system.
+
+The overlay (CPXTYP.HEX) may then be merged with the system-independent module
+as described above (creating a runnable Kermit from the distribution kit).
+
+If you are using the Z80MU development system on a PC, and already have a
+running Kermit-80 v3.9 or later, you can merge the two .HEX files into a .COM
+file with LINK80 (TOPS 10/20), MLOAD (Z80MU), L80 (Z80MU), and transfer the new
+.COM file to your micro with Kermit:
+
+ - Z80MU on a PC and MLOAD:
+
+ @MLOAD KERNEW=CPSKER,CPXTYP
+
+ - Z80MU on a PC and C80:
+
+ @L80 /P:xxxx,CPXTYP,CPXTYP/N/X/E
+
+producing KERNEW.COM.
+
+-------------------------------------------------------------------------------
+
+Symbol Terminal description
+crt Basic CRT, no cursor positioning
+adm3a ADM3A Display or lookalike
+adm22 ADM22 Display or lookalike
+am230 Ampro 230
+h1500 Hazeltine 1500
+smrtvd Netronics Smartvid-80
+soroq Soroq IQ-120
+tvi912 TVI 912
+tvi925 TVI 925, Freedom 100
+vt52 VT 52 or VT52 emulator such as Heath H19, H29, etc.
+vt100 VT 100 or emulator (most ANSI terminals should work)
+wyse Wyse 100
+
+ Table 1-5: Terminals known to Kermit-80
+
+-------------------------------------------------------------------------------
+
+
+1.8. Adding Support For A New System
+
+Kermit-80 is built from a common set of source files; the system-dependent
+module makes heavy use of conditional assembly (this complication will be
+removed in future releases). The system dependencies arise from attempts to
+answer some questions:
+
+ 1. What kind of terminal is to be supported?
+
+ For many micros, the console is an integral part of the system, but
+ others can use an external terminal. In either case, the commands
+ to manipulate the screen (position the cursor, erase the screen,
+ etc) must be defined.
+
+ 2. How is the serial line accessed?
+
+ For systems supporting the IOBYTE function, this is straightforward;
+ the symbol "IOBYT" is defined TRUE. If the serial line is accessed
+ with IN and OUT instructions, it may be possible to use the simple
+ I/O routines provided. In this case, the symbol "INOUT" is defined
+ TRUE, the MNPORT and MNPRTS are defined to be the data and control
+ addresses, respectively, and bit masks for testing for "input data
+ available" and "output buffer empty" must be defined. If the
+ interface is strange, leave IOBYT and INOUT set to FALSE, and
+ provide the I/O routines.
+
+ 3. What initialization is necessary?
+
+ You may wish to set the baud rate or configure the serial line at
+ startup. Examples for a number of devices are present.
+
+ 4. What special features are to be supported?
+
+ You may want to provide the capability to select one of several
+ serial lines with the SET PORT command, or to change the speed of
+ the serial line with the SET SPEED command. To do this, you'll need
+ to build a command table, using the systems already supported as
+ examples. The ability to send a BREAK signal is desirable. Again,
+ examples for several different interfaces (ACIA, SIO, etc) are
+ present.
+
+ 5. Do you want to design an external terminal type?
+
+ There is a jump entry in the overlay file to allow users to add
+ their own termainl emulator. If you write the code for such an
+ emulator, you must load this jump address with the address of your
+ emulator, and SET TERMINAL EXTERNAL from within Kermit. All
+ characters will be passed to this routine during connect mode.
+
+
+1.9. Notes on New Features in Kermit-80 Version 4
+
+ - Debugging aids: SET DEBUG ON will add two fields to the SEND/RECEIVE
+ display, labelled "Spack" and "Rpack". These display the last packet
+ sent and received. Of course, this slows down the transfer,
+ especially if the console is an external terminal. SET DEBUG OFF
+ removes these fields. The VERSION command displays the name, edit
+ number, and edit date of several of the modules that make up Kermit.
+
+ - TAC support: ARPAnet TACs (and many other communication devices such
+ as terminal concentrators, modems, port contention units, network
+ PADs, etc) use a printing character (like "@") as an intercept
+ character, to allow commands to be issued to the TAC, or modem, etc.
+ In order to send this character to the host, it must be typed twice.
+ The command "SET TAC CHARACTER" to Kermit enables the "TACtrap" and
+ asks the user to specify the TAC intercept character. This character
+ will be automatically doubled when it appears in Kermit protocol
+ messages (sent by the SEND or RECEIVE commands) or when it appears in
+ a file being sent with the TRANSMIT command. It is not automatically
+ doubled when typed by the user in CONNECT mode. "SET TAC ON" enables
+ the TACtrap but does not change the TAC intercept character, which is
+ initially "@". "SET TAC OFF" disables the TACtrap.
+
+ - File buffering: Previous versions of Kermit-80 buffered only one
+ sector (128 bytes) at a time during file transfer operations. This
+ version buffers 16Kbytes at a time, reducing the number of times the
+ floppy drive must be spun up and down, and increasing the effective
+ throughput of the link. If the disk transfer rate is too slow,
+ however, the remote Kermit may time out and retransmit packets. This
+ will show up on the screen in the "Retries:" field; if this occurs
+ after disk activity, you may want to increase the timeout value on
+ the remote Kermit, SET BUFFER <new value> while in Kermit,or
+ reassemble Kermit with a smaller value for MAXSEC (in CPSDEF.ASM)
+ This buffer is also used by the TRANSMIT command; the log file
+ enabled by the LOG command is still written a sector at a time.
+
+This section is intended for people wanting to implement their own versions of
+Kermit-80 for computers not already defined.
+
+The system independent code communicates to routines for a specific system
+through a set of tables. These tables are defined in CPXLNK.ASM, and should
+not be modified between revisions of Kermit. If an entry is added or deleted,
+then the whole of Kermit-80 needs reassembling. Make sure that the changes to
+CPXLNK.ASM are duplicated in CPSUTL.ASM, which has the system independent
+equivalent of CPXLNK.ASM.
+
+The following entries/definitions apply to revision 4.09. There have been
+three additional entries since revision 4.05.
+
+The table is split into three sectors; The first section defines two byte
+"words" giving 16 bits of interface data; The second set is a set of jumps to
+various functions, and finally the third set a set of pure data bytes.
+
+
+1.9.1. Interface Data.
+
+ LNKFLG Must be first entry in overlay at overlay address. Is a two
+ byte address giving the size of the linkage table. This is
+ used to check for consistency of overlay's
+
+ ENTSIZE Length of entry table, also used for consistency checking after
+ the overlay. Currently 6
+
+ SYSEDT The address of a dollar-terminated string giving the overlay
+ revision level and date. Points to a string like:
+ CPXSYS.ASM(33) 4-JUN-1986$
+
+ FAMILY The address of a dollar-terminated string giving the Family
+ overlay revision level and date. If the system is in
+ CPXSYS.ASM rather than a particular Family overlay, it is
+ simply a pointer to $
+
+
+
+
+1.9.2. Jump Table.
+
+This is split into three main sectors-
+
+
+ 1. Input/Output routines
+
+ 2. Screen formatting routines
+
+ 3. other system dependent routines
+
+
+ SELMDM
+ Parameters None
+ Returns None
+ Description selects the modem port. Most systems do nothing and simply
+ return. HL,DE and BC registers preserved.
+
+ OUTMDM
+ Parameters None
+ Returns None
+ Description Output the character in E register to the communications line.
+ BC,DE,HL registers preserved.
+
+ INPMDM
+ Parameters None
+ Returns Accumulator either 0 or character from comms line if available
+ Description Check modem for character and if so, return it in A. HL,DE,BC
+ registers preserved, flags and accumulator lost.
+
+ FLSMDM
+ Parameters None
+ Returns None
+ Description Clear any pending characters in the input buffer from the
+ modem. No registers are preserved.
+
+ SELCON
+ Parameters None
+ Returns None
+ Description Select the console. This is a null subroutine for most
+ systems, but for IOBYTE systems selects the console.
+
+ OUTCON
+ Parameters Character in E
+ Returns None
+ Description Send the character in E to the console. Any quirks of system
+ responding in an odd manner should be handled. No registers
+ preserved.
+
+ INPCON
+ Parameters None
+ Returns Zero or character in A.
+ Description Get a character from the console or return a null if no
+ character to be read. No registers are preserved.
+
+ OUTLPT
+ Parameters Character in E
+ Returns None
+ Description Send the character in E to the printer. The console is
+ selected. Only DE registers are preserved
+
+ LPTSTAT
+ Parameters None
+ Returns 00H or 0FFH in A register
+ Description Test the printer to see if it is ready to receive a character
+ to be printed. If a 00H is returned then the printer is ready
+ to receive a character.
+
+ EXTTER
+ Parameters Character to be sent to the user supplied terminal emulator in
+ the E register
+ Returns None
+ Description If the user has supplied a terminal emulator in the overlay
+ code, EXTTER will be a JMP <non zero address>. If SET TERMINAL
+ EXTERNAL has been set, all caharcters will be passed verbatim
+ to this terminal emulator. If there is no external emulator,
+ this code will never be called. The user should reset terminal
+ conditions on initialisation of both the system and before
+ CONNECT. All registers should be preserved.
+
+ XBDOS
+ Parameters Any required for calling BDOS
+ Returns Any expected from the called BDOS routine
+ Description This is an alternative entry to BDOS. This entry will also
+ check the printer status etc. For full details see the code
+ for the BDOS trap in CPSUTL.ASM.
+
+ 2b)
+
+ CLRLIN
+ Parameters None
+ Returns None
+ Description Clear the current line on the terminal
+
+ CLRSPC
+ Parameters None
+ Returns None
+ Description Erase the current position (after a backspace)
+
+ DELCHR
+ Parameters None
+ Returns None
+ Description Make delete (7FH) look like a backspace. Some systems do a
+ backspace, space, backspace automatically others have to
+ simulate it
+
+ CLRTOP
+ Parameters None
+ Returns None
+ Description Clear the screen and place the cursor at the top LH corner
+
+ SCREND
+ Parameters None
+ Returns None
+ Description Place the cursor on the line for the Kermit-80 prompt after a
+ file transfer. (Usually line 13)
+
+ SCRERR
+ Parameters None
+ Returns None
+ Description Move cursor to the error message field on the file transfer
+ format screen
+
+ SCRFLN
+ Parameters None
+ Returns None
+ Description Move the cursor to the filename field
+
+ SCRNP
+ Parameters None
+ Returns None
+ Description Move the cursor to the packet count field
+
+ SCRNRT
+ Parameters None
+ Returns None
+ Description Move cursor to the retry count field
+
+ SCRST
+ Parameters None
+ Returns None
+ Description Move cursor to the status field
+
+ RPPOS
+ Parameters None
+ Returns None
+ Description Move to the receive packet field (debugging use)
+
+ SPPOS
+ Parameters None
+ Returns None
+ Description Move to the send packet field (for debugging use)
+
+ 2c)
+
+ SYSINIT
+ Parameters None
+ Returns None
+ Description Initialize the system specific items. No registers are
+ preserved. Any initialization is done once only when Kermit-80
+ is first loaded.
+
+ SYSEXIT
+ Parameters None
+ Returns None
+ Description Program termination. De-initialize anything in preparation for
+ a return to CP/M
+
+ SYSCON
+ Parameters None
+ Returns None
+ Description Initialize anything before entering the connect state.
+
+ SYSCLS
+ Parameters None
+ Returns None
+ Description System dependent close routine when exiting connect state
+
+ SYSINH
+ Parameters None
+ Returns None
+ Description Help routine to test for any extensions to the escape menu
+ during the connect state. If a system has any special feature
+ it can use during connect mode, then it can be tested as
+ <escape-character>xxx. This entry is a string for printing to
+ the console for an <escape-character>? Often used for
+ generating breaks or controlling a modem.
+
+ SYSINT
+ Parameters None
+ Returns None
+ Description This is a test-and-jump on receipt of an escape sequence not
+ understood by Kermit-80. If the character in A is not
+ recognized by your version of Kermit=80, do a rskip
+
+ SYSFLT
+ Parameters Character in E
+ Returns Character in E. Either a 00H or anything else in A
+ Description Test the character in E. If it may not be printed to the
+ console, set A to zero. All other registers preserved.
+ NB <XON>,<XOFF>,<DEL>,<NULL> are always rejected.
+
+ SYSBYE
+ Parameters None
+ Returns None
+ Description System dependent processing for the BYE command. (eg hang up
+ the phone)
+
+ SYSSPD
+ Parameters Value from table in DE
+ Returns None
+ Description The system dependent code for baud rate change. DE contains
+ the two byte value from the baud rate table. This value is
+ also stored in "SPEED"
+
+ SYSPRT
+ Parameters Value in DE
+ Returns None
+ Description The system dependent code for setting the port. The parameters
+ are passed in DE, which are obtained from the port tables
+
+ SYSSCR
+ Parameters String pointer in DE
+ Returns None
+ Description Setup the screen display for file transfer. The Kermit version
+ string is pointed to by DE. If the terminal is not capable of
+ cursor addressing (eg dumb glass TTY) then only the screen is
+ cleared and the version string is printed.
+
+ CSRPOS
+ Parameters Row number in B, column number in C
+ Returns None
+ Description Move the cursor to row B, column C where B=1,C=1 is top LH
+ corner of screen. The routine should first end a "cursor
+ position" leading string (up to four characters) then use the
+ parameters given to complete the versions cursor position
+ function
+
+ SYSSPC
+ Parameters None
+ Returns K bytes free in HL
+ Description Get the amount of free disk space on the selected disk drive.
+ This could be in the system independent code. Automatically
+ detects CP/M V2.2 or V3.0. No registers saved.
+
+ MOVER
+ Parameters Source Pointer in HL
+ Destination Pointer in DE
+ Byte count in BC
+ Returns None
+ Description Move (BC) bytes from (HL) to (DE) Z80 based systems do an LDIR,
+ while 8080 systems do it as a loop. All registers destroyed
+
+ PRTSTR
+ Parameters $ terminated string pointed to by DE
+ Returns None
+ Description Print the string onto the console.
+
+ 3)
+
+
+ PTTAB WORD Points to VT52 equivalent escape sequences.
+
+ SPDTAB WORD Address of baud-rate command table, or 0 if table
+ does not exist
+
+ SPDHLP WORD Address of baud-rate help table, or 0 if SET SPEED is
+ not supported.
+
+ PRTTAB WORD Address of port command table or 0 if SET PORT is not
+ supported.
+
+ PRTHLP WORD Address of port help table or 0 if SET PORT is not
+ supported
+
+ TIMOUT BYTE FUZZY-TIMER. Set to value suitable to your system
+ (depends largely on CPU speed)
+
+ VTFLG BYTE VT52 emulation flag. Set to 0 if terminal emulates a
+ VT52, 01 if emulation is required, or 0FFH if emulations not
+ possible (eg for "CRT")
+
+ ESCCHR BYTE default escape character-usually control-] but
+ sometimes control-\
+
+ SPEED WORD Storage space for baud-rate. Set to 0FFFFH as baud
+ rates are initially unknown. Note that the STATUS routine only
+ looks at the first (least significant) byte.
+
+ PORT WORD Storage space for port. Set to 0FFFFH as ports may
+ not be implemented, and is initially unknown
+
+ PRNFLG BYTE Printer copy flag-if O no copy. Anything else =>
+ copy to printer
+
+ DBGFLG BYTE Debugging flag. If O then no debugging to be done.
+ (ie writing of debugging info during a file transfer)
+
+ ECOFLG BYTE Local ECHO flag (default is off)
+
+ FLWFLG BYTE File warning flag. If set to 1 will not overwrite
+ files already existing on disk with some-named files being
+ transferred
+
+ IBMFLG BYTE IBM system is the host-assume IBM file transfers etc
+
+ CPMFLG BYTE Flag indicating type of CP/M files to be transferred.
+ Default setting - DEFAULT
+
+ PARITY BYTE Type of parity in use
+ 0 = Even parity
+ 3 = Mark parity
+ 6 = No parity (8th bit is data)
+ 9 = Odd parity
+ 12 = Space parity
+
+ SPSIZ BYTE Size of send packet
+
+ RPSIZ BYTE Size of receive packet
+
+ STIME BYTE Send timer (time-out)
+
+ RTIME BYTE Receive timer (time-out)
+
+ SPAD BYTE Send Padding (default=0)
+
+ RPAD BYTE Receive Padding (default=0)
+
+ SPADCH BYTE Send Padding character (default=NULL)
+
+ RPADCH BYTE Receive Padding character (default=NULC)
+
+ SEOL BYTE Send EOL character (default=CR)
+
+ REOL BYTE Receive EOL character (default=CR)
+
+ SQUOTE BYTE Send quote character (default=#)
+
+ RQUOTE BYTE Receive quote character (default=#)
+
+ CHKTYP BYTE Ascii value of checktype
+ 31H="1"=checktype1 (6bits)
+ 32H="2"=checktype2 (12bits)
+ 33H="3"=CCITT checksum (CRC)
+ Default is 31H("1")
+
+ TACFLG BYTE If set to on (non zero) send the TACCHR twice. This
+ is for ARPA TAC users, where the TAC swallows one "wakeup"
+ character. If sent twice the TAC will pas one on and go back
+ to normal mode.
+
+ TACCHR BYTE Desired TAC character. It is ignored if TAC trapping
+ is turned off. Value to send twice if TAC interception is set
+ on. Default=0, but set to commercial AT if the conditional
+ assembly flag TAC is set true
+
+ BUFADR WORD Address of Multi-Sector buffering for I/O
+
+ BUFSEC BYTE The number of bytes the big buffers can hold.
+ Default is 1. (0=256 sectors).
+
+ FFUSSY BYTE Indicates if funny characters may be used in CP/M
+ file names (eg <>.,;?#[]) If zero, allow anything. Default is
+ nonzero.
+
+ BMAX SPACE:(2bytes) Highest block number on selected disk drive
+
+ BMASK SPACE:(1byte) (Records/block)-1
+
+ BSHIFTF SPACE:(1byte) Number of shifts to multiply by rec.block
+
+ NNAMS SPACE:(1byte) Counter for file-names per line
+
+
+1.10. Future Work
+
+Work that needs to be done in future releases includes:
+
+ - Merge in support for additional CP/M-80 systems, particularly those
+ for which support was recently added to the monolithic v3.x source.
+
+ - Break up CPXSYS into discrete source files, one for each system.
+ These source files should serve as simple models for adding support
+ for new systems to Kermit-80 -- only the very basic screen
+ definitions, flags, i/o primitives, initializations, and so forth
+ should appear in each system-dependent file.
+
+ - Addition of missing features -- compression of repeated characters
+ during packet transmission, transmission of file attributes
+ (particularly size, so that "percent done" can be displayed for both
+ incoming and outbound files), command macros, more advanced login
+ scripts, remote operation and server mode, etc etc. Any offers??
+
+Index (Page numbers are approximate)...
+
+ 8080 5, 6
+
+ Append 2
+ ARPAnet 10
+ Attention Character 10
+ Autoreceive 3
+
+ Baud 4
+ BIOS 5
+ Block Check 3
+ Bootstrapping CP/M Kermit 8
+ Break 2
+ Buffer size 3
+ Bye 2
+
+ Carriage Return 2
+ COLLISION 3
+ Connect 2
+ Control-C 2
+ Control-X 2
+ Control-Z 2
+ Copy 2
+ CP/M 6
+ CP/M-80 Kermit 1
+ CR 2
+
+ Debug 3
+ Default Disk 3
+ Directory 2
+ Directory file size 3
+ Downloading 8
+
+ Eighth-Bit Prefix 4
+ Erase 2
+ Escape Character 2, 3
+ Exit 2
+ External Terminal Emulation
+ 4
+
+ File Copying 2
+ File-mode 3
+ File-Warning 3
+ FINISH 2
+ Flow Control 4
+
+ Generic Kermit-80 5
+ GET 2
+
+ Help 2
+
+ IBM 4
+ Input 2
+ Intercept Character 10
+
+ Local 2
+ Local-Echo 4
+ LOG 2
+ Logging 4
+ LOGOUT 3
+
+ NAK 2
+ No-exit 4
+
+ OUTPUT 3, 4
+
+ Pad character 4
+ Parity 4
+ Pause 3
+ Port 4
+ Print 3
+ PRINTER 4
+
+ RECEIVE 3
+ REMOTE 3
+
+ SEND 3
+ SET 3
+ Set padding 4
+ Set Receive 4
+ Set Send 4
+ Set Start of packet 4
+ Show 4
+ Status 4
+
+ TAC 10
+ TacTrap 4
+ Take 4
+ Terminal Emulation 4
+ Timeout 2, 7
+ TIMER 4
+ TRANSMIT 5
+ Type 5
+
+ USER 4
+
+ VERSION 5
+ Virtual Terminal 2
+ VT100 Emulation 4
+ VT52 Emulation 4
+
+ Warning 4
+
+ XON/XOFF 2
+
+ Z80 6
+
+
+Table of Contents (page numbers are approximate)
+
+1. CP/M-80 KERMIT 1
+
+ 1.1. Credits 1
+ 1.2. What's New 1
+ 1.3. Overview of Kermit Operation 1
+ 1.4. Summary of CP/M 1
+ 1.5. Kermit-80 Description 2
+ 1.6. Kermit-80 Flavors 5
+ 1.6.1. Generic Kermit-80 5
+ 1.6.2. CP/M 3 Kermit 5
+ 1.6.3. System-Specific Versions 5
+ 1.7. Installation of Kermit-80 6
+ 1.7.1. Organization of Kermit-80 7
+ 1.7.2. Downloading Kermit-80 8
+ 1.7.3. Assembling Kermit-80 from the sources 9
+ 1.8. Adding Support For A New System 10
+ 1.9. Notes on New Features in Kermit-80 Version 4 10
+ 1.9.1. Interface Data. 10
+ 1.9.2. Jump Table. 10
+ 1.10. Future Work 12
+
+Index 13
+
+ List of Figures
+
+ Figure 1-1: Bootstrap program for Kermit-80 and CP/M Version 2.2 8
+
+
+ List of Tables
+
+ Table 1-1: Kermit-80 SET PORT Options 5
+ Table 1-2: Systems supported by Kermit-80 (Part 1) 7
+ Table 1-3: Systems supported by Kermit-80 (Part 2) 7
+ Table 1-4: Terminals supported by Kermit-80 8
+ Table 1-5: Terminals known to Kermit-80 10
diff --git a/doc/cpkfet.msg b/doc/cpkfet.msg
new file mode 100644
index 0000000..97b3043
--- /dev/null
+++ b/doc/cpkfet.msg
@@ -0,0 +1,24 @@
+Date: 23 May 1986 0807-EDT
+From: "Bernie AT&T:617-467-5664 LDP Workstations" <EIBEN@MARLBORO.DEC.COM>
+To: sy.fdc@cu20b
+Subject: CP/M-80 Kermit Bootstrapping Procedure Corrected
+
+Here is a fixed version of the CP/M bootstrapping program. The version that
+has been listed in the CP/M-80 Kermit manual for the past several years failed
+to store the end of the file after downloading it into memory. The new version
+stores in multiples of 2 sectors [256 bytes] and could have a 'overrun' of that
+much, however without problems, since the Control-Z does the magic. Unlike the
+previous version, this program displays the data on the screen while capturing
+it into memory.
+
+Probably you want to include the 'program' - for the guy who has an editor AND
+the DDT-form. I believe that the assembler will catch typos easier than DDT -
+and not everybody is fluent enough in DDT to correct typos on the fly.
+
+The Rainbow was able to 'fetch' at 2400 baud, VT180 only checked at 1200 baud.
+You might want to check on your micros, first thing to go [speed-wise] could be
+the 'visual' display - although I NEEDED to see the 'bytes' trickling in - and
+its also quite handy to see a 'blotch' coming on the VT180 - so you know right
+away when a transfer wasn't clean.
+
+- Bernie
diff --git a/doc/cpkhdr.mss b/doc/cpkhdr.mss
new file mode 100644
index 0000000..240b5a2
--- /dev/null
+++ b/doc/cpkhdr.mss
@@ -0,0 +1,156 @@
+@Comment(-*-SCRIBE-*-)
+@Comment(SCRIBE Text Formatter Input for the CP/M-80 Kermit User Guide)
+
+@Make<Manual>
+@device(postscript)
+@Comment(Use /draft:F on command line to produce .LPT file w/cc in column 1)
+
+@case(device,postscript="@LibraryFile<Mathematics10>")
+
+@String<Ellips="...">
+
+@Style<Spacing 1, Spread 1, Indent 0, HyphenBreak Off, SingleSided>
+
+@case<device,file="@style(justification off,hyphenation off)",
+else="@Style(Justification On, Hyphenation On, WidestBlank 1.4)">
+
+@Use<Hyphendic="kuser.hyp">
+@Modify<IndexEnv,Boxed,
+ Columns 2,ColumnMargin 0.5inch,LineWidth 2.2inch,ColumnWidth 2.7inch>
+
+@Comment(Set desired spacing around various environments)
+
+@Modify<Quotation,Indentation 0, Above 1, Below 1, Spacing 1>
+@Modify<Example, Above 1, Below 1, Blanklines Hinge>
+@Modify<Verbatim, Leftmargin 0>
+@Modify<Itemize, Above 1, Below 1, Spacing 1, Spread 1>
+@Modify<Enumerate, Above 1, Below 1, Spacing 1, Spread 1>
+@Modify<Description, Above 1, Below 1, Spacing 1>
+@Define<MD,Use Display>
+@Define<Q,FaceCode R>
+@Define<QQ,FaceCode R,AfterEntry=["],BeforeExit=["]>
+@Define<SubH,Use Display,FaceCode R,Above 1.6,Below 1>
+@Define<SubU,Use UX,FaceCode R,Above 1.6,Below 1,need 6>
+@define<xx,use b>
+@define<yy,use i>
+
+@Comment(Printing Device Dependencies)
+
+@Case{Device,
+ LPT="@use(Auxfile='CPMLP.AUX')
+ @Case[Draft,F=`@Style(CarriageControl=FORTRAN)']
+ @Style(linewidth 79)
+ @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>",
+ Printronix="@use(AuxFile='CPMPX.AUX')
+ @Case[Draft,F=`@Style(CarriageControl=FORTRAN)']
+ @Style(LineWidth 74, PaperLength 11 inches,BottomMargin 5 spacings)",
+ PagedFile="@use(AuxFile='CPMPF.AUX')
+ @Style(LineWidth 79, PaperLength 10.8 inches)
+ @Style(TopMargin 3 spacings,BottomMargin 6 Spacings)
+ @Modify(Example,Leftmargin +2)",
+ Diablo="@Use(Auxfile='CPMDIA.AUX')
+ @TypeWheel(Titan 10)
+ @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>",
+ Postscript="@Use(Auxfile='CPMPS.AUX')
+ @Style<Doublesided>
+ @Style<Fontscale 10>
+ @Define<MD,Use Mathdisplay>
+ @String<Ellips='@Math(@Ldots)'>
+ @Define<xx,use b,Size 12>
+ @Define<yy,use i,Size 10>
+ @Define<Q,FaceCode T>
+ @Define(QQ,FaceCode T,AfterEntry=[@r<``>],BeforeExit=[@r<''>])
+ @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>
+ @Modify<Quotation,Size +0>
+ @Modify<Itemize,Spread 0.8>",
+ Imprint10="@Use(AuxFile='CPMIMP.AUX')
+ @Define<Q,FaceCode U>
+ @Define(QQ,FaceCode U,AfterEntry=[@r<``>],BeforeExit=[@r<''>])
+ @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>
+ @define<xx,use b,font bodyfont>
+ @define<yy,use i,font bodyfont>
+ @Modify<Insert,Spacing 1>
+ @Modify<Verbatim,FaceCode U>
+ @Modify<Example,FaceCode U,spacing 1.2>
+ @Modify<Itemize,Spread 0.8>
+ @Style<FontFamily SmallRoman12,Spacing 1.6,SingleSided>",
+ Imagen300="@Use(AuxFile='CPMIM3.AUX')
+ @Define<Q,FaceCode U>
+ @Define(QQ,FaceCode U,AfterEntry=[@r<``>],BeforeExit=[@r<''>])
+ @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>
+ @define<xx,use b,font bodyfont>
+ @define<yy,use i,font bodyfont>
+ @Modify<Insert,Spacing 1>
+ @Modify<Verbatim,FaceCode U>
+ @Modify<Example,FaceCode U,spacing 1.2>
+ @Modify<Itemize,Spread 0.8>
+ @Style<FontFamily SmallRoman12,Spacing 1.6,SingleSided>",
+ X9700="@Use<AuxFile='CKX9.AUX'>
+ @Style<FontFamily Univers10, DoubleSided, Spacing 0.9, Spread 0.8>
+ @Style<Scriptpush No>
+ @define<xx,use b,font bodyfont>
+ @define<yy,use i,font bodyfont>
+ @Define<Q,FaceCode U>
+ @Define(QQ,FaceCode U,AfterEntry=[@r<``>],BeforeExit=[@r<''>])
+ @Define<SubH,Use Display,FaceCode B,Above 1.6,Below 1>
+ @Modify<Description,Spacing 0.8,Spread 0.75>
+ @Modify<Quotation,Spacing 0.8,Spread 0.75>
+ @Modify<Enumerate,Spacing 0.8,Spread 0.75>
+ @Modify(Verbatim,Spacing 0.8,Spread 0.75,FaceCode U)
+ @Modify<Example,FaceCode U, Spacing 1.1>
+ @Modify[Itemize, Numbered < @,- >, Spacing 0.8, Spread 0.5]"
+}
+@Comment(Set spacing and paging requirements for chapter & section headings)
+
+@Modify(Hdx,Above 2,Below 1,Need 8)
+@Modify(Hd0,Above 2,Below 1,Need 8)
+@Modify(Hd2,Above 2,Below 1,Need 8)
+@Modify(Hd3,Above 2,Below 1,Need 8)
+@Modify(Hd4,Above 2,Below 1,Need 8)
+@Modify<Heading, Above 2, Need 8>
+@Modify<Subheading, Above 1.5, Need 6>
+
+@Pageheading<>
+@Begin(TitlePage,Initialize "@BlankSpace(2.4inches)",sink 0)
+@MajorHeading(CP/M-80 KERMIT VERSION 4.11 USER GUIDE)
+
+
+C. Gianone
+
+Columbia University Center for Computing Activities
+New York, New York 10027
+
+
+@i<April 23, 1991>
+
+
+
+Copyright (C) 1981,1991
+Trustees of Columbia University in the City of New York
+
+@i<Permission is granted to any individual or institution to use, copy,
+or redistribute this document so long as it is not sold for profit, and
+provided this copyright notice is retained.>
+@case[device, x9700="@blankpage(1)"]
+@end<titlepage>
+@PageHeading(Odd,Immediate,
+ Left="@xx<@Value[SectionNumber]. @Value[SectionTitle]>",
+ Right="@yy<Page @ref(page)>",
+ Line="@bar()@blankspace(2)")
+@PageHeading(Even,
+ Left="@yy<Page @ref(page)>",
+ Right="@xx<Kermit User Guide: @Title(Chapter) @Value[SectionNumber]>",
+ Line="@bar()@blankspace(2)")
+@set(page=1)
+@Include<cpkerm.mss>
+@PageHeading(Odd,Immediate,
+ Left="@xx<CP/M-80 Kermit>",
+ Right="@yy<Page @ref(page)>",
+ Line="@bar()@blankspace(2)")
+@PageHeading(Even,
+ Left="@yy<Page @ref(page)>",
+ Right="@xx<Kermit User Guide>",
+ Line="@bar()@blankspace(2)")
+@Case(Device,x9700="@Comment<Begin Duplex Kludge>
+@SendEnd(#Index `@begin<Transparent,PageBreak UntilOdd>@end<Transparent>')
+@Comment<End Duplex Kludge>")
diff --git a/doc/cpvhp1.txt b/doc/cpvhp1.txt
new file mode 100644
index 0000000..cf164cd
--- /dev/null
+++ b/doc/cpvhp1.txt
@@ -0,0 +1,99 @@
+. From BPA
+. Postmark:30-Aug-89:08:08:48
+. To MAILER
+. Expires:29-Sep-89:08:07:29
+. Subject: bitnet%"fdccu@cuvma"
+Re: Version of CP/M Kermit for the HP-125
+
+Below, delimited by lines of asterisks, you will find an Intel .HEX-formated
+version of the system-dependent part of CP/M Kermit, Version 4.09, for the
+HP-125 Business Assistant computer running HP's modified CP/M Version 2.2.
+I suggest that it be called CPVHP1.TXT. I can also send the sources in
+separate messages if you wish. Sorry it took so long but other projects
+were pressing.
+You may reach me by sending mail on Bitnet to mailer@uwalocke with the
+subject "dec10%bpa". Cheers!
+-- Mike Freeman, Bonneville Power Administration; P.O. Box 491; Vancouver,
+WA 98666 Routine MORF (Telephone (206)690-2307) --
+************************************************************************
+:10600000AB0006009862B362C37D63C38D63C39720
+:1060100063C3A563C37E63C38763C37F63C3AF6387
+:10602000C3AD63C30000C30000C3EE63C3E463C336
+:10603000DF63C3F463C3F761C3D361C3C761C3BB89
+:1060400061C3C161C3DC61C3E561C3EE61C3AB6021
+:10605000C30263C31E63C31F63C32063C32263C33E
+:106060002763C32D63C32E63C32E63C32661C3BEE0
+:1060700063C34E61C32462C3136222640000000044
+:106080005F633B630010001CFFFFFFFF0000000187
+:1060900000000640400805000000000D0D232331DC
+:0660A00000408000010138
+:1060AB00CDDF600E07CD050032DE600E0CCD050096
+:1060BB007D32DD60113262CD136211FA63CD136252
+:1060CB00CD106221D96422A2603E4032A460CDCEB5
+:0260DB0062C998
+:1060DF002A01001103001922076111030019220A76
+:1060EF006111030019220D611103001922106111B2
+:1060FF001E0019221261C9C30000C30000C30000B3
+:10610F00C30000C300000E28064605C219610DC268
+:10611F0017613DC21561C9D5110C64CD1362D1CD84
+:10612F0013621E5BCD876311FA63CD13621149624F
+:10613F00CD13623A8D60B7C8118162CD1362C93A2F
+:10614F00DD60FE30FA85613A5C00B7CA61613DC31C
+:10615F0066610E19CD05005F0E2ECD05000603AF4B
+:10616F000E032183002B7E1F770DC2746105C26E53
+:10617F00615E2356EBC90E1BCD0500EB2AA66023EB
+:10618F00010000D51A1E0817DA9B6103572B7DB447
+:10619F00CAAC617A1DC29661D113C39261D1696095
+:1061AF003AA960D603C8293DC2B561C9011404C319
+:1061BF00BE63011405C3BE63010C06CDBE63114A55
+:1061CF0064C31362010107CDBE63C3CD6101010832
+:1061DF00CDBE63C3CD61010809CDBE63C3CD6101DF
+:1061EF00080BCDBE63C3CD613A8D60B7CA0462019F
+:1061FF00010DC30762010109CDBE63114664C313CC
+:10620F0062112F62E5D5C50E09CD0500C1D1E1C9D7
+:10621F00E1232323E97E1223130B78B1C22462C931
+:10622F000D0A24636F6E6669677572656420666F09
+:10623F00722024207769746820245D0D0A0D0A4EA0
+:10624F00756D626572206F66207061636B65747324
+:10625F003A0D0A4E756D626572206F662072657415
+:10626F00726965733A0D0A46696C65206E616D65DA
+:10627F003A240D0A0D0A0D0A527061636B3A0D0A2A
+:10628F000D0A537061636B3A244350585357542E81
+:10629F0041534D20283629202031362D4A756C2D3B
+:1062AF00383720244350585359532E41534D2028EB
+:1062BF003339292020342D4175672D38372024019B
+:1062CF00FF73CD050011D46401FF7ECD05002AD7E1
+:1062DF006422D0643E0132D56421CF6422D7641189
+:1062EF00D46401FF7ECD0500214E64228A60EBCD80
+:1062FF001362C901FF74CD05002AD06422D764113F
+:10630F00D46401FF7ECD050011A464CD1362C9C909
+:10631F00C9C924E65FC31F627BC97BC97BC9C9F5A5
+:10632F00C5D5E5EBCD1362E1D1C1F1C90D0A436FBC
+:10633F006D6D756E69636174696F6E7320706F72C6
+:10634F00740D0A5072696E74657220706F727424C6
+:10635F00020E434F4D4D554E49434154494F4E53F5
+:10636F00244E64075052494E544552247964C9C98A
+:10637F000E061EFFCD0500C90E06CD0500C9E5C5E9
+:10638F000E04CD0500C1E1C901FF70CD0500B7C8EE
+:10639F000E03CD0500C9CD9763B7C2A563C9AFC9B9
+:1063AF00D5CD2B63A7CABC630E05CD0500D1C9059A
+:1063BF000DC5111E64CD1362E1E56C2600CD0801F9
+:1063CF001E72CD8763E12600CD08011E43C387638C
+:1063DF001E08C387631E20CD87631E08C387631102
+:1063EF001A64C31362111564C3136248502D3132FE
+:1063FF00352053657269657320313030241B481B7B
+:10640F004A0D0A0909241B481B4A240D1B4B241B48
+:10641F002661241B4124001B4224001B4324001B24
+:10642F004424001B4A240024000000240000001B09
+:10643F004824001B4D24001B4A24001B4B24001B27
+:10644F002669313073313864394D1B266932733206
+:10645F003564394D1B2669313073313664324D1B2B
+:10646F0026693073323564324D241B2669313073FF
+:10647F00313664394D1B26693073323564394D1B03
+:10648F002669313073313864324D1B2669327332CD
+:10649F003564324D241B26693073323564394D1BF8
+:1064AF002669313073313664394D1B2669327332A8
+:1064BF003564394D1B2669313073313864394D24B9
+:0A64CF00CD000078C90700C30000EB
+:0000000000
+************************************************************************
diff --git a/doc/cpzspa.txt b/doc/cpzspa.txt
new file mode 100644
index 0000000..0dcdb69
--- /dev/null
+++ b/doc/cpzspa.txt
@@ -0,0 +1,92 @@
+.pl66
+ Tabspace utility for
+ CP/M-80 Kermit (Kermit-80) support.
+
+I have written this utilty simply to help me. No other excuses.
+
+I am forever getting updates or new systems to add to the CP/M-80
+version of Kermit (Kermit-80) from folk who send me these updates
+via Electronic Mail. I am thankful that it is already in a
+machine readable form.
+
+However, our Mutton-head mainframe substitutes a single space
+character for every tab character it receives, so a lot of the
+submissions need considerable massaging before I can actually
+merge these additions to the rest of Kermit-80.
+
+Therefore, I issued Kermit-80 with all tabs replaced by spaces,
+in the hope that any further doantions have spaces instead of
+tabs. Unfortunately, this does not work in practice, and
+everyone is complaining about the size of the source files (often
+as much as 30% larger as a single tab character is now up to
+eight space characters!)
+
+So I wrote this program in the hope that people submitting stuff
+to me run their sources through this de-tabber to make my life
+easier.
+
+As a bonus, TABSAPACE will do the reverse, and replace spaces
+with tabs. With a couple of exceptions... (See below)
+
+To run the program, type TABSPACE and wait for the sign-on
+message ("Tabspace loaded, Version 1 22-Jan-87" for the time
+being). Tabspace will ask for the filename to be "massaged", and
+whether you want to expand or compress files (ie substitute
+spaces for tabs, or tabs for spaces respectively).
+
+Once started, it will plough through the file specified (if it
+exists) and apply the tabs/spaces replacement as required. It
+will also strip out any parity bits.
+
+Tabspace actually opens two files when it works: one input file
+of the type <filename>.<extention> as specified by you. The
+second is the same <filename> but with a $$$ extention.
+
+Once the file has been massaged, the original file will be
+deleted, and the .$$$ file renamed to your original file. This
+should be relatively safe, as you will not get to the stage of
+delete and rename if you have disk space or file closing
+problem. However, I suggest you try applying Tabspace to COPIES
+of your software!
+
+Couple of other points:
+Tabspace uses memory to buffer several logical 128 byte
+"sectors", both on read and writing. An equate for MAXRAM sets
+the maximum amount of memory available to Tabspace after CP/M and
+Tabspace itself have nabbed their memory, and is initally set to
+16 Kbytes. (I reasoned that if you are going to run Kermit-80
+version 4.08 or later you should have at least this amount of
+free memory!) If you have more memory, you can adjust this to
+some larger value, say 52 for a 62k system (ie 62K - 8k (CP/M) -
+2k (Tabspace) = 52k)
+
+I used the Public Domain assembler LASM to assemble Tabspace; I
+have no idea if any other assembles will work. Anyway, LASM is
+the ONLY assembler now used for Kermit-80 assembly.
+
+Tabspace will expand tabs after a semicolon in a comment field,
+but will not replace tabs for multiple spaces after a semicolon.
+I ran into som real problems early on, and decided that spaces in
+comment fields would be ok, so I left it in.
+
+Any comments or contributions for Tabspace and/or Kermit-80
+please send them to me (with tabs expanded!) as:
+
+
+OBSchou @ UK.AC.LOUGHBOROUGH.MULTICS or
+
+Kermit @ UK.AC.LOUGHBOROUGH.MULTICS or
+
+Bertil Schou,
+The Computer Centre,
+Loughborough Universirty of Technology,
+Loughborough,
+Leics. LE11 3TU or
+
++ 509 -222313 (Direct Dial)
+
+
+
+Many thanks for your co-operation,
+
+Bertil Schou.
diff --git a/doc/lasm.txt b/doc/lasm.txt
new file mode 100644
index 0000000..178d840
--- /dev/null
+++ b/doc/lasm.txt
@@ -0,0 +1,149 @@
+*****************************************************************
+* *
+* 10/01/81 *
+* *
+* LASM is an update of LINKASM, with the minor change that *
+* it prints the name of each linked file before it is opened. *
+* This helps track progress, and helps find misspelled names. *
+* *
+* -Ward Christensen *
+* *
+*****************************************************************
+
+LINKASM.COM
+01/07/80 by Ward Christensen
+
+OVERVIEW:
+ LINKASM is based on CP/M assembler 1.0, and is
+compatible with 1.0, 1.3, and 1.4 assemblers. (2.0? Dunno.)
+ ----------------
+LINKASM is a rewrite of CP/M 1.0 ASM.COM, incorporating:
+
+* A new pseudo-op code, LINK.
+* Smaller .COM file size (6K vs 8K).
+* Faster execution via larger ASM, HEX, and PRN buffers
+* Corrections to properly handle lower case DB values.
+* Prints the number of source lines read
+* Produces a symbol table for use under SID
+
+ The LINK pseudo-op allows a file to "chain" to the
+next .ASM file, thereby allowing very large source files to
+be processed without having to PIP them together.
+
+RESTRICTIONS:
+ All the linked .ASM files must be on the same disk.
+ Nested IFs are not handled (ASM.COM didn't either)
+Note that you can use IF to conditionally link to the next
+module:
+
+ IF CLOCK
+ LINK CLOCKRTN
+ ENDIF
+;
+ IF NOT CLOCK
+ LINK OTHERRTN
+ ENDIF
+
+ For example, if CLOCK is true, then LINK CLOCKRTN
+(i.e. CLOCKRTN.ASM) will take place, and the assembler
+will never see the ENDIF. This is not a problem as the
+next encountered IF will be handled properly.
+ ----------------
+USAGE:
+ LINKASM is totally compatible with ASM.COM, and
+you may therefore replace ASM. Its performance will be
+slightly better than ASM.COM, and it takes less space on
+disk (6K vs 8K).
+ Execute it just like ASM.COM, i.e.
+
+ LINKASM name.p1p2p3
+
+where: p1 is the .ASM file disk (A, B, ...)
+ p2 is the .HEX file disk (A, B, ... or Z for none)
+ p3 is the .PRN file disk (A, B, ... or Z for none,
+ or X for the console)
+
+ The default is the logged in disk for all 3.
+
+ If you wish to write a symbol table file, follow
+the command line with the disk to be written to (A, B, ...)
+then a colon. For example, to assemble FOO from the A:
+disk, put the .HEX on the A: disk, send the .SYM file to
+B:, and the listing to the console:
+
+ LINKASM FOO.AAX B:
+
+ To assemble it doing everything on the A: disk
+(assuming A: is the logged in disk):
+
+ LINKASM FOO A:
+
+ The ":" must be specified after the .SYM disk. The
+.SYM file is "partially" sorted, i.e. all Axxxx then all Bxxxx
+etc. SID fully scans the symbol table anyway, so sorting
+it is not necessary, so I did this quick sort hack just to
+make it eaiser for YOU to find a symbol.
+ ----------------
+ The LINK pseudo ops take a single operand: the name
+of an .ASM file to be processed next. For example:
+----------------
+A:TEST1.ASM:
+
+ ORG 100H
+ LXI H,MSG
+ MVI C,9
+ CALL BDOS
+ RET
+ LINK TEST2
+----------------
+A:TEST2.ASM:
+
+MSG DB 'Linked'
+BDOS EQU 5
+----------------
+ Then assemble it:
+
+A>LINKASM TEST1.AZX
+LINKASM AS OF 7/13/79
+
+
+ 0100 ORG 100H
+ 0100 210901 LXI H,MSG
+ 0103 0E09 MVI C,9
+ 0105 CD0500 CALL BDOS
+ 0108 C9 RET
+ LINK TEST2
+ 0109 4C696E6B65MSG DB 'Linked'
+ 0005 = BDOS EQU 5
+010F
+000H use factor
+8 input lines read
+End of assembly
+
+ ----------------
+ I will make one apology for LINKASM - I neglected
+to put in an error message saying the name of the missing
+file, if you should accidentally LINK to a non-existant file.
+It just says the source file is not present.
+ If necessary, you can find the name which was
+being searched for. It's in memory at 186H. If you have
+a PROM monitor, you can examine it. If not, do the following
+BEFORE executing any more COM programs following the LINKASM:
+
+ SAVE 1 BADNAME.COM Save 100-1ff to disk
+ DDT BADNAME.COM Bring in under DDT (or SID)
+ D186,190 Dump the name
+ ^C Reboot (some people use G0)
+ ERA BADNAME.COM ERA the temporary file.
+
+Sorry for that hack, but I thought it better to put LINKASM
+in the CP/M UG with that problem, rather than holding it
+back "trying to make it perfect".
+ ----------------
+I have not encountered any problems using LINKASM as my
+main assembler for about the last 6 months. Among other
+things, I use it to assemble CBBS.ASM which, with its 14
+or so LINKed files, is over 6000 lines. It takes about 5 1/2
+minutes, as I recall (HEX and SYM, no PRN).
+
+ Ward Christensen