home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpm / modem / cp405src.ark / CP4KER.UPD < prev    next >
Text File  |  1986-12-25  |  29KB  |  693 lines

  1.  
  2.                 CP4KER.UPD
  3.         Changes between v4.03 and v4.05 of Kermit-80
  4.                  18-Feb-85
  5.  
  6. ; edit 12: February 6, 1985
  7. ;    Add extended H89 support (by Paul Milazzo, Rice University),
  8. ;    support for Northstar Horizon with Northstar CP/M and SIO-4 board
  9. ;    (by Joe Smith, Colorodo School of Mines), and support for Lobo
  10. ;    MAX-80 computer (from Hal Hostetler)
  11. ;
  12. ; edit 11: 13-Jan-85 by Vanya J.Cooper Pima Commun. College Tel: 602-884-6809
  13. ;
  14. ;pcc001    27-Dec-84    vjc    modules: cp4sys,cp4typ
  15. ;    Add conditional for Xerox 820.  I thought at first I could
  16. ;    live with the kaypro conditional, but it's enough of a pain
  17. ;    that I added it back in.  The clear-to-end-of-screen char
  18. ;    is different,  breaking many programs in VT52 mode, and the
  19. ;    default escape char control-\, is not at all obvious how
  20. ;    to type on the 820 keyboard.  If you muddle through the
  21. ;    key translation table, it turns out to be control-comma.
  22. ;    Rather than OR xer820 all the occurances of kpII conditionals
  23. ;    I added a bbI conditional for all common code for the big
  24. ;    board I based machines that is automatically turned on by
  25. ;    either kpII or xer820.  This will also make it easier in
  26. ;    the future if another flavor of bigboard is added.
  27. ;
  28. ; edit 10: 5 December 1984 by CJC
  29. ;    Add missing ENDIF (tsk, tsk)
  30. ;
  31. ; edit 9: 4 December 1984 by CJC
  32. ;    Add two osborne fixes: missing crlf in outlin:, incorrect opcode in
  33. ;    initialization.
  34. ;
  35. ; edit 8: 13 October 1984 by L M Jones, JCC, for New York Botanical Garden
  36. ;    Add support for CPT-85xx series word processors when running CP/M-80.
  37. ;
  38.  
  39.  
  40.                 CP4KER.UPD
  41.         Changes between v3.9 and v4.03 of Kermit-80
  42.                  14-Sep-84
  43.  
  44. Note: as soon as things stabilize, this file will be frozen; the revision
  45. history from v4.00 can be obtained from the source files.
  46.  
  47. The starting point was CPMBASE.M80/CPMBASE.UPD for version 3.9 of Kermit,
  48. FTP'd from Columbia University.  CPMBASE.UPD has not been modified; it is
  49. now only of historical interest.  CPMBASE.M80 was divided two separately
  50. assembled modules (hereinafter referred to as CP4KER and CP4TYP, after the
  51. first file in each).  The sources consist of 12 files (one of which is
  52. assembled into both modules):
  53.     CP4KER.ASM - header for system-independent module.  Defines assembler
  54.             to be used, and links (LASM) or includes (MAC80, M80)
  55.             the remaining files.
  56.     CP4DEF.ASM - common symbol definitions (for CP4KER and CP4TYP)
  57.     CP4MIT.ASM - main loop and small commands
  58.     CP4PKT.ASM - SEND and RECEIVE commands
  59.     CP4TT.ASM  - TRANSMIT and CONNECT commands
  60.     CP4CPM.ASM - DIR and ERA commands
  61.     CP4WLD.ASM - wildcard support
  62.     CP4CMD.ASM - command parser
  63.     CP4UTL.ASM - support routines and data (pure, impure)
  64.  
  65.     CP4TYP.ASM - selects target system and assembler to be used.  Links
  66.             or includes the rest of these files:
  67.     CP4LNK.ASM - linkage sections
  68.     CP4DEF.ASM - common symbol definitions (for CP4KER and CP4TYP)
  69.     CP4SYS.ASM - system-dependent code
  70.  
  71. I started assembling the code with M80, and switched to LASM, to provide
  72. a system that could be built with a minimum of additional software beyond
  73. that provided in the basic CP/M system.  (ASM could not be used, because
  74. it has no provision for multiple input files).  Version 4.03 assembles
  75. identically with M80, LASM, and MAC80.  All code (and data) is assembled
  76. for absolute addresses; CP4KER starts at 100H, and CP4TYP starts at the
  77. first free page following CP4KER.  There are two linkage sections used to
  78. pass control and share data between the two modules:  one at 105H, containing
  79. a block of JMP instructions to routines in CP4KER which may be needed by
  80. CP4TYP; the other is at the beginning of the system-dependent overlay,
  81. containing a block of JMP instructions and variables shared by CP4KER and
  82. CP4TYP.  The formats of these areas are defined in CP4UTL and CP4LNK,
  83. although they really should be defined in only one place; the common subset
  84. of the assemblers used does not include a mechanism to do this.
  85.  
  86. CP4KER.ASM contains the following:
  87.     TRUE, FALSE - for selecting options
  88.     M80, MAC80, LASM - select the assembler to be used, since they require
  89.         different directives
  90.     CP4KER - defined TRUE so CP4DEF can link to the correct module
  91.     for LASM, a LINK directive to chain to CP4DEF.ASM
  92.     for MAC80 and M80, INCLUDE directives to include the remainder of
  93.         the files in the module.
  94.  
  95. CP4DEF.ASM
  96.     Definitions for ASCII characters
  97.     Definitions for BDOS calls
  98.     Definitions for constants used in command tables
  99.  
  100. CP4MIT.ASM
  101.     entry linkage section (routines needed by CP4TYP: kermit, and nout)
  102.     start - system-independent initialization
  103.     kermit - main command loop
  104.     bye command
  105.     exit command
  106.     help command
  107.     log command
  108.     set command (and all its subcommands)
  109.     show command
  110.     status command
  111.     version command (new - this displays the version strings stored in
  112.         many of the files)
  113.     The command tables and help messages are also here, next to the
  114.     commands which reference them.
  115.  
  116. CP4UTL.ASM
  117.     utility routines:
  118.         escpr - prints the escape character
  119.         keycmd - parses a keyword; jumps to main loop if error.
  120.         cfmcmd - confirms a command; jumps to main loop if error.
  121.         nout - decimal output of number in HL.
  122.         prtstr - call bdos to output a string.
  123.         rskp - do "skip return" - return to PC on stack plus 3.
  124.         r - do "nonskip return" - return to PC on stack. (This is
  125.         needed because calls to routines with skip returns must
  126.         be followed by a 3-byte instruction, such as a JMP).
  127.         getfil - call bdos to open a file, and set up variables for
  128.         reading it.
  129.         inbuf - read a sector from the file opened by getfil.
  130.         outbuf - output a sector.
  131.     text (99.44% pure storage):
  132.         Kermit's name and version;
  133.         prompts;
  134.         error messages;
  135.         status messages;
  136.     impure storage:
  137.         for parser;
  138.         for just about everybody else (break this down!)
  139.     linkage section (overlaid by CP4TYP):
  140.         consistency check info (3 words); initialized to zero here
  141.         so we can detect absence of CP4TYP.
  142.         jump tables for routines in CP4TYP
  143.         data shared between CP4KER and CP4TYP:
  144.         pointer to VT52 emulation strings
  145.         pointer to command table for SET BAUD
  146.         pointer to help table for SET BAUD
  147.         pointer to command table for SET PORT
  148.         pointer to help table for SET PORT
  149.         various parameters whose defaults are system-dependent
  150.          (including protocol parameters)
  151.         other variables shared between CP4KER and CP4TYP:
  152.             bmax, bmask, bshiftf, nnams
  153.  
  154. Routine-by-routine changes:
  155. For each file, the order here more or less follows the order of routines
  156. in the sources.  The primary exceptions are the system-dependent routines,
  157. which are described with the routines that call them.  Other possible
  158. exceptions are routines that were moved, which may still be described where
  159. they used to be, due to oversight.
  160.  
  161. CP4CMD.ASM:
  162. cmblnk:
  163.     deleted; clrtop is now called directly.
  164. cmnb12:
  165.     To erase current line, call clrlin instead of printing clrlin.
  166.     Use prtstr instead of setting c=prstr and calling bdos.
  167. cminb2:
  168.     To adjust for the delete key, call delchr instead of printing delstr.
  169.     Move Kaypro dependency to CP4TYP.
  170. cmnb32:
  171.     To erase character, call clrspc instead of printing clrspc.
  172.  
  173. CP4CPM.ASM
  174. Move definition of NPL into this module.
  175. Call sysspc to calculate free space; algorithm is different for CPM3.
  176.  
  177. sysspc:
  178.     Use CPM3 algorithm (supplied by Bruce Tanner) for CPM3 systems, the
  179.     old algorithm for all the others (CPM2 systems).
  180.  
  181. CP4DEF.ASM:
  182. Move SOH to ASCII character section.
  183. Move BDOS next to BDOS calls.
  184. Separate CPM2-only and CPM3-only calls; add getfs for CPM3
  185. Delete DIASW, nobody uses it.
  186.  
  187. CP4MIT.ASM:
  188. general changes (formatting only)
  189.     blank line added after unconditional transfers of control;
  190.     indent some error (non-skip) returns;
  191.     space or tab added between some labels and instructions.
  192.  
  193. entry linkage table (new):
  194.     ASEG/ORG moved to immediately before table, so nothing gets in between.
  195.     jump to start, around entry linkage table, added.
  196.  
  197. start:
  198.     print Kermit's version (Kermit-80 v4.00)
  199.     (we do this as soon as possible, for identification if it quietly
  200.     dies later)
  201.     do consistency checks to see if we have a good configuration loaded.
  202.     if so, call sysinit to do the system-dependent stuff.
  203.     remove reenter label; proper re-entry point is now kermit:
  204.     jump to kermit, instead of call; it never returns.
  205.  
  206. sysinit:
  207.     the system-dependent code was generalized where possible; this resulted
  208.     in some changes to baud rate handling.  Also, this made printing the
  209.     version a bit easier.  As with start:, we print the version as soon
  210.     as possible to identify the victim.
  211.  
  212.     print "configured for <system name>" (after Kermit's version).
  213.     if a specific terminal is being supported, print "with <terminal type>".
  214.     for iobyte systems,
  215.     get bios addresses so we can bypass bdos for I/O to console and modem.
  216.     get current iobyte and save as console iobyte.
  217.     for osbrn1, move I/O routines above 4000H, read current baud rate, and
  218.     set comm-line parity.
  219.     for kpII and bbII, output command string to SIO chip to initialize
  220.     comm-line.  (correct documentation of SIO chip commands)
  221.     for mikko, copy command string to (memory-mapped) SIO chip to initialize
  222.     comm-line; set data mask to 0ffH (all 8 bits).
  223.     for brain, get current comm-line speed.
  224.  
  225. kermit:
  226.     reload the stack pointer, as some error handlers jump back to kermit
  227.     without cleaning up the stack.  This is now the reentry point used
  228.     when control-C is typed during file transfer.  Also re-select the
  229.     console, for iobyt systems.
  230.     
  231. bye:
  232.     call sysbye to do system-dependent connection termination.
  233.  
  234. sysbye:
  235.     for apple, drop carrier on modem.
  236.  
  237. exit:
  238.     call sysexit to do system-dependent program termination
  239.  
  240. sysexit:
  241.     for mikko, restore comm-line parameters altered in sysinit.
  242.  
  243. setcom:
  244.     added SET DEBUG ON/OFF command (note: no corresponding display in
  245.     SHOW command (yet))
  246.     Added SET TACTRAP ON/OFF/CHARACTER for TAC support (from Toad Hall).
  247.     Added subroutines onoff and chkkey to simplify SET subcommands.
  248.  
  249. vt52em:
  250.     if vtflg contains 0FFH, say "(not implemented)" and jump back to command
  251.     loop.
  252.     otherwise, accept an "ON" or "OFF" and set vtflg accordingly.
  253.  
  254. setdbg:
  255.     Since the debugging code could no longer be conditionally assembled,
  256.     the SET DEBUG ON/OFF command was added.  The debugging code is always
  257.     present, and tests dbgflg to see if any debugging output should be
  258.     produced.  dbgflg is initialized to 0 (OFF) in CP4LNK.ASM.
  259.  
  260. baud:
  261.     If spdtab is non-zero, it points to a command table of speed keywords
  262.     to be used to process the speed command, and spdhlp points to the
  263.     corresponding help text.  All bits of the value obtained from
  264.     the speed table is stored in 'speed' for the STATUS command, and
  265.     sysspd is called with the 16-bit value in DE.
  266.     If spdtab contains zero, "(not implemented)" is printed.
  267.  
  268. sysspd:
  269.     The speed selection menus for brain and osbrn1 have been replaced
  270.     with a keyword table.  Brain now uses the same table as kpII, allowing
  271.     the selection of 19200 baud; I'm not sure this speed will work, but
  272.     decided to try it anyway.  Osbrn1 uses a two-entry command table,
  273.     allowing 300 and 1200 baud;  the values returned are OSBR03 and OSBR12,
  274.     simplifying the sysspd routine.
  275.  
  276.     for the brain, get the saved baud rates (stored by the bios?) and 
  277.     replace the left nibble with the low 4 bits of DE.  Save the
  278.     new value (for the bios?) and output it to the baud rate generator
  279.     port.
  280.     for the osbrn1, reset the ACIA, delay a while, and output the low
  281.     byte of the speed to the ACIA.
  282.     for the bbII, load the specified time constant into the appropriate
  283.     channel of the CTC chip.
  284.     for the kpII, output the speed to the channel A baud rate generator port.
  285.     for the mikko, write the 16-bit baud rate multiplier into both the
  286.     receive clock and transmit clock generators.
  287.  
  288. prtset:
  289.     SET PORT is handled in the same manner as SET BAUD: if prttab contains
  290.     zero, "(not implemented)" is printed; otherwise, prttab contains a
  291.     pointer to the command table, and prthlp contains a pointer to the
  292.     help text.  After getting the keyword from the user, sysprt is
  293.     called with the keyword's value.
  294.  
  295. sysprt:
  296.     The processing here is essentially unchanged from version 3.9: the
  297.     value is the address of a 3-byte entry which gives the iobyte value,
  298.     the BDOS function, and (for robin) the hardware port address.
  299.  
  300. status:
  301.     trivial change to command confirmation; it now looks just like the
  302.     SHOW command.
  303.  
  304. stat01:
  305.     this is the actual status display, called by the SHOW and STATUS
  306.     commands, and by the <escape>S command in terminal mode.
  307.  
  308.     Each parameter is now displayed by a separate routine, so we can
  309.     eventually support a "SHOW <parameter>" command.
  310.  
  311.     if vtflg, the VT52 emulation flag, contains 0FFH (not implemented),
  312.     don't say anything about VT52 emulation; otherwise, report
  313.     VT52-Emulation ON or OFF.
  314.  
  315.     if spdtab is non-zero, baud rate setting is supported, so report
  316.     baud rate: if speed is 0FFFFH, report "speed is indeterminate",
  317.     else look up speed in spdtab.  If found, print speed, else report
  318.     "speed is indeterminate".  This should now work for all systems with
  319.     SET BAUD capability.
  320.  
  321. CP4PKT.ASM
  322. general:
  323.     Calls with prtstr with DE containing one of scrend, screrr, scrfln,
  324.     scrnp, scrnrt, scrst, rppos, and sppos were replaced with calls
  325.     to these routines, which will typically position the cursor to
  326.     the desired place and clear the remainder of the line.
  327. init:
  328.     Instead of printing outlin and outln2, sysscr is called with DE
  329.     containing the address of Kermit's name and version.
  330.     Move initialization done by init1 to receive command; send command
  331.     doesn't need it (getfil does all necessary file initialization)
  332.  
  333. sysscr:
  334.     print banner (outlin)
  335.     for systems with cursor positioning support,
  336.     print Kermit's version (from DE)
  337.     print system name (sysver)
  338.     print field names (outln2)
  339.     (the system name is enclosed in square brackets; the open bracket
  340.         is printed here, and the close bracket is in outln2)
  341.     if dbgflg is set, print debug field names (outln3)
  342.  
  343. spack:
  344.     Delete debug code that terminated packet with a $, as a routine (dmptxt:)
  345.     was added to output the whole packet (null-terminated).
  346.  
  347. outpkt:
  348.     Replace the sequence:
  349.     IF iobyt
  350.     lda    prtiob        ;Set up for output to go to the comm port
  351.     sta    iobyte        ;Switch byte directly
  352.     ENDIF;iobyt
  353.      with:
  354.     call    selmdm        ; Set up for output to comm port if iobyt
  355.     Likewise, replace
  356.     IF iobyt
  357.     lda    coniob        ;Set up for output to go to the console port
  358.     sta    iobyte        ;Switch directly
  359.     ENDIF;iobyt
  360.     with:
  361.     call    selcon        ; set up for output to console port
  362.     Selmdm and selcon are in CP4SYS.ASM; they contain the loads and stores
  363.     from above, conditionally assembled under IOBYT, followed by a ret.
  364.     At outpk6:, replace conditionally assembled debug code with test of
  365.     dbgflg.  Also call dmptxt instead of prtstr, so we print the whole
  366.     packet.
  367.     TACtrap support added: if tacflg is non-zero, it's the TAC intercept
  368.     character, and must be doubled when seen in an outbound packet.
  369.     Replace calls to outchr with calls to outmdm or outcon, depending on
  370.     whether we want to talk to comm line or console.  Outmdm and outcon
  371.     are in CP4SYS.ASM.  Note that parity must be set before calling
  372.     outmdm; outchr used to do it, but outmdm does not.
  373.  
  374. inpkt:
  375.     At inpkt6:, replace conditionally assembled debug code with test of
  376.     dbgflg.  Also call dmptxt instead of prtstr, so we print the whole
  377.     packet.
  378.  
  379. inchr:
  380.     Fuzzy timer support has been generalized.  The initial value should
  381.     be system-dependent, based on system speed and the time required
  382.     to get an input character from the modem.  If we get a control-C,
  383.     jump to kermit instead of reenter.
  384.  
  385. error:
  386.     changing screrr to a subroutine from a string made error9 unnecessary.
  387.  
  388. dmptxt:
  389.     this routine is prints the null-terminated string pointed to by HL.
  390.  
  391. CP4SYS.ASM:
  392. Integrated ap6551 (ACIA) support from Jon Beeson and Francis Wilson
  393.     and numerous fixes from Bruce Tanner.
  394. Add delimiters around text in .printx's so M80 is happy too.  (Currently,
  395.     the M80/MAC80 assembly flags are used only to decide whether or not
  396.     we should do the .printx's; if either is true, the .printx's are
  397.     included).
  398. Add definitions for bbII.  Although the bbII supports a builtin console,
  399.     I've left that out for now; it looks like a superset of the ADM3A.
  400. Add support for Digicomp Delphi 100 and Netronics Smartvid terminal.
  401.     (courtesy Bdale Garbee)
  402. Modify selection of defesc: for systems or terminals where ']' is a shifted
  403.     character, use '\' instead (some of these are just guesses...).
  404. Define vtval: initial value of VT52 emulation flag.  If generic CRT, can't
  405.     do VT52 emulation; if terminal uses VT100 sequences (i.e. Robin, dmII),
  406.     default to VT52 emulation off (but we can do it); for others, default
  407.     VT52 emulation on.
  408. Things like defesc and vtval probably belong in CP4TYP.ASM, so the user can
  409.     override them without modifying CP4SYS.ASM.
  410.  
  411. outchr:    replaced by outmdm (but parity must be set first):
  412. inpchr:    replaced by inpmdm:
  413. prtout:    replaced by outmdm:
  414. baudtb:    replaced by command table (brain, osbrn1)
  415. sysexit, syscon, syscls, sysinh, sysint, sysflt, sysbye, sysspd, sysprt,
  416. sysscr, sysspc:
  417.     described elsewhere (where they are called)
  418.  
  419. selmdm, selcon:
  420.     For iobyt systems, these routines update IOBYTE appropriately.  For
  421.     the Morrow Decision I, they cause the correct port to be selected.
  422.     For the other systems, they do nothing.
  423.  
  424. inpcon:
  425.     gets a byte from the console, via dconio bdos call for non-iobyte
  426.     systems, or by calling the bios for iobyte systems.  Zero is
  427.     returned if no character is available.
  428.  
  429. outcon:
  430.     outputs a byte to the console.
  431.     For the Kaypro, it uses the bdos conout function for tabs, and dconio
  432.     for all other characters.  I haven't looked into this yet, but
  433.     suspect that calling dconio will result in not knowing the current
  434.     column, which in turn will cause the wrong number of spaces to be
  435.     generated for tabs.
  436.     For iobyte systems, we call the bios; for the rest, except the Kaypro,
  437.     we use the dconio bdos function.
  438.  
  439. outmdm:
  440.     outputs a byte to the modem.  This routine preserves bc and hl, although
  441.     outcon doesn't.  This will be reconciled eventually; I think we
  442.     ought to make outmdm and outcon the same for iobyte systems.
  443.  
  444. inpmdm:
  445.     gets a byte from the modem.  Returns zero if nothing there yet.  Again,
  446.     this ought to be the same as inpcon for iobyte systems.
  447.  
  448. flsmdm:
  449.     flushes any pending data at the modem.
  450.  
  451. outlpt:
  452.     outputs a byte to the printer.
  453.  
  454. csrpos:
  455.     given desired row in B and column in C, moves the cursor.  Home position
  456.     is (1,1).  Since this routine is referenced by the linkage section,
  457.     a dummy routine is provided for the OSI and CRT systems, although
  458.     it should never be called.
  459.  
  460. scrnp:
  461.     For systems with cursor positioning, call csrpos with the desired screen
  462.     position.  For OSI and CRT systems, just print a space.
  463.  
  464. scrnrt:
  465.     For systems with cursor positioning, call csrpos with the desired screen
  466.     position.  For OSI and CRT systems, just print " %".
  467.  
  468. scrfln, screrr, scrst, scrend:
  469.     For systems with cursor positioning, these routines call csrpos with the
  470.     desired screen position.  For OSI and CRT systems, print a crlf.
  471.  
  472. rppos, sppos:
  473.     For systems with cursor positioning, these routines call csrpos with the
  474.     desired screen position.  For OSI and CRT systems, print a header
  475.     ("RPack:" or "SPack:").
  476.  
  477. clreos:
  478.     For systems with cursor positioning, print the erase-to-end-of-screen
  479.     string from the VT52 emulation table.
  480.  
  481. clreol:
  482.     For systems with cursor positioning, print the erase-to-end-of-line
  483.     string from the VT52 emulation table.
  484.  
  485. delchr:
  486.     If echoing 'del' to the screen does nothing, just print a backspace.
  487.     Otherwise, print delstr to clean the mess off the screen.
  488.  
  489. clrspc:
  490.     output space,backspace to erase the character at the current cursor
  491.     position.
  492.  
  493. clrlin:
  494.     print eralin to erase the current line.
  495.  
  496. clrtop:
  497.     print erascr to clear the screen and move to the home position.
  498.  
  499. prtstr:
  500.     Duplicate for CP4TYP.  We could put prtstr in the linkage section, but
  501.     I was trying to restrict that to JMP instructions, to avoid having
  502.     to calculate where everything is.
  503. rskp:
  504.     Another duplicate.
  505.  
  506. Terminal tables:
  507. general:
  508.     define screen format (outln2, outln3)
  509.     replace outlin + versio with sysver, outlin.
  510.     clrlin becomes eralin.
  511.     clrtop becomes erascr.
  512.     for escape sequences with no translation, print nothing.
  513.  
  514. brain: 
  515.     add curldn.
  516.     remove rppos, sppos.
  517.  
  518. heath/z100/telcon:
  519.     make vt52-compatible: clear screen is $H$J, not $E$H; erase to EOL is $K,
  520.     not $l.
  521.  
  522. trs80lb:
  523.     graphics mode?
  524.  
  525. adm3a, tvi925, vt52, vt100:
  526.     add ttytyp (terminal name string) for initialization
  527.  
  528. kpii:
  529.     The Kaypro echoes DEL as a printing character; it uses delstr (backspace,
  530.     space, backspace, backspace) to erase it.
  531.     for ti: (reverse linefeed) use insert line rather that cursor up, in the
  532.     hope that it will only be used on the top line.  (True for VMS EDT and
  533.     Unix vi)
  534.  
  535. CP4TT.ASM
  536. xmit:
  537.     getfil no longer has a skip return: remove following "jmp kermit".
  538.  
  539. xnext:
  540.     Add calls to selmdm to select proper output port. This allows us to
  541.     use the same output routine for terminal mode and file transfer mode.
  542.     Use inbuf to get next buffer, instead of xbuf.
  543.  
  544. xbuf:
  545.     deleted; xmit calls inbuf instead.
  546.  
  547. telnet:
  548.     Drop what appears to be an extra call to ckdial (apple only); ckdial is
  549.     called again as part of the system-dependent code for starting the
  550.     session.
  551.     Replace code for robin, apple, osbrn1 with call to syscon.
  552.  
  553. syscon:
  554.     For robin, print an extra message about control-S
  555.     For apple, do dial support.
  556.     For the osborne, patch BIOS so back-arrow generates DELETE code.
  557.     
  558. prtchr:
  559.     made system-independent.  To get character, it calls selmdm and inpmdm.
  560.     system-specific code changed to generic: NUL, DEL, XON, and XOFF are
  561.     not sent to the terminal.
  562.     (We should alter this to support HANDSHAKE and TURNAROUND options.)
  563.     added call to sysflt - system-dependent filter to take care of any other
  564.     characters we don't want to send to the terminal.
  565.     If vtflg is positive, VT52 emulation is enabled. (negative means VT52
  566.     emulation is not supported for this system; zero means supported but
  567.     currently disabled)
  568.  
  569. vt52:
  570.     generalized.  we accumulate a whole cursor positioning sequence, and
  571.     evaluate the row and column, then call csrpos to do it for the console.
  572.     If the escape sequence is not recognized, we swallow the escape and the
  573.     following character, just like a real VT52, so as not to screw up the
  574.     console.
  575.     We now respond to 'Z' (query terminal type), claiming to be a VT52 without
  576.     a local printer (I vaguely recall some commands to control the optional
  577.     printer, as well as a different response saying we've got one, but I'll
  578.     leave that to someone who needs to emulate a VT52 with printer).
  579.     Still not supported (besides printer): '>' and '=' (alternate keypad
  580.     support); '[' and '\' (hold-screen support). 
  581.  
  582. logit:
  583.     Use setpar, outmdm instead of prtout.  Note that we still assume host does
  584.     XON/XOFF support, and can react to XOFF within a few character times
  585.     (unreasonably fast).
  586.  
  587. prtout:
  588.     deleted. use outmdm instead (call selmdm and setpar as appropriate).
  589.     other system dependencies are taken care of by sysflt.
  590.  
  591. conchr:
  592.     Made system-independent - calls I/O routines in CP4TYP.
  593.  
  594. intchr:
  595.     When <escape>C is seen, call syscls to do system-dependent stuff
  596.     for return to local system.
  597.     While printing help text, call sysinh to print extra system-dependent
  598.     help.
  599.     For <escape>0, send null with proper parity.
  600.  
  601. syscls:
  602.     For Osborne, re-patch BIOS so backarrow generates backspace.
  603.  
  604. sysint:
  605.     For apple, 'D' is Disconnect Modem command.
  606.     For robin, dmII, bbII, and kpII, 'B' is Send Break command
  607.  
  608. CP4TYP.ASM
  609.     Remove DEBUG conditional.
  610.     Add MAC80, M80, and LASM, for those assemblers.
  611.     Add OVLADR, address at which overlay is linked.  This is set from the value
  612.     of LNKFLG in CP4KER.
  613.     Set TRS80 equal to TRS80LB OR TRS80PT, so it doesn't need to be set by the
  614.     user.
  615.     Add BBII, for Ferguson Big Board II.  If using the built-in terminal of
  616.     the bbII, define ADM3A EQU TRUE.
  617.     Add VT52 and VT100 as supported terminal types for systems without an
  618.     integrated terminal.  (I don't know how many micro owners have
  619.     VT52's; I added it for my Heathkit H-19)
  620.  
  621. CP4UTL.ASM:
  622. Utility routines:
  623.     compp, countp, ackp, and tryagn were moved to CP4PKT.ASM.
  624.     inbuf and outbuf were modified to support a large buffer used by the
  625.     SEND, RECEIVE, and TRANSMIT commands.  The beginning of the buffer
  626.     and the size of the buffer are defined dynamically in sysinit.
  627.  
  628. Text:
  629.     The string "Kermit-80 Vx.y " was moved from the system version string
  630.     (versio:) to version: in CP4UTL.ASM.  I also extended the minor
  631.     version to 2 digits so I can keep track of interim releases during
  632.     testing.
  633.     outln2 was moved to CP4SYS.ASM, as it is used only for systems with
  634.     cursor positioning.
  635.     erms20, erms21 added for consistency checks at initialization.
  636.     infms8 no longer includes TRS-80 help text; that is printed by syscon
  637.     in CP4SYS.ASM
  638.     inms11 was moved to CP4SYS.ASM.
  639.     sethlp was changed to include line for the SET DEBUG command; minimum
  640.     abbreviations changed.  (sethlp and tophlp don't follow the same
  641.     conventions...).
  642.     prthlp was moved to CP4SYS.ASM.
  643.     inthlp was modified to remove system-dependent text; sysinh will
  644.     describe the additional commands (including B for dmII).
  645.     vtemst unconditionally generated.
  646.     osbmsg removed; no longer needed.
  647.     spdst, spdust unconditionally generated.
  648.  
  649. COMND tables:
  650.     SET DEBUG added to SET keyword table
  651.     prttab, spdtab now contain address of SET PORT, SET SPEED command
  652.     tables in CP4SYS.ASM.
  653.  
  654. Impure data:
  655.     ecoflg moved to linkage section.
  656.     vtvflg, vctccc are no longer needed; replaced by vtyval.
  657.     vtflg moved to linkage section.
  658.     prtfun, prtiob, coniob, prtadr moved to CP4SYS
  659.     flwflg, ibmflg, cpmflg, parity, escchr moved to linkage section.
  660.     spsiz, rpsiz, stime, rtime, spad, rpad, spadch, rpadch, seol, reol,
  661.     squote, rquote, chktyp moved to linkage section.
  662.     curchk, inichk not initialized.
  663.     speed moved to linkage section.
  664.     bmax, bmask, bshiftf, nnams moved to linkage section, for sysspc.
  665.     mfreq, mfflg1, mfflg2 moved to CP4WLD.ASM.
  666.     osbaud replaced by speed.
  667.     osbrn1 I/O routines (starting at osmove) moved to CP4SYS.ASM
  668.     kpstbl, miotbl, mintbl moved to CP4SYS.ASM
  669.     filflg removed; file handling code no longer needs it.
  670.  
  671. linkage section: (new)
  672.     this section starts at the next available page boundary (to lessen its
  673.     chances of moving from version to version, allowing the same configuration
  674.     overlay to be used).  OVLADR in CP4TYP.ASM must be set to the address of
  675.     lnkflg in CP4KER (from the listing).  The linkage section contains:
  676.     lnkflg:    one word, initialized to zero by CP4UTL.ASM.  CP4LNK.ASM
  677.         overwrites this with what it believes is the length of this
  678.         linkage section; CP4KER verifies this value at startup and
  679.         refuses to run if the value is incorrect.
  680.     lnkent:    one word, again initialized to zero by CP4MIT.ASM.  CP4LNK.ASM
  681.         overwrites this with the expected length of the entry section
  682.         starting at 0103H; CP4KER refuses to run if this value is
  683.         incorrect.
  684.     ovlver: one word, initialized to zero.  This is overwritten with the
  685.         address of a string giving the version of the overlay, in
  686.         the same format as the other module version strings.
  687.     The jump table follows the three-word header.  After the jump table,
  688.     space is saved for variables used by both CP4KER and CP4TYP.
  689.  
  690. CP4WLD.ASM:
  691. mfname:
  692.     Changed a few occurences of 'push a/pop a' to 'push psw/pop psw'.
  693.