home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / KERMIT / CP411SRC.ARK / cp411bld.doc < prev    next >
INI File  |  1991-06-03  |  32KB  |  660 lines

  1. [CP411BLD.DOC Mike Freeman 31-May-1991]
  2. The following is excerpted with modifications from CPKERM.DOC.
  3.  
  4. 1.7. Installation of Kermit-80
  5.  
  6. Kermit-80  was written originally for the Intertec SuperBrain in lowest-common-
  7. denominator  8080 code with the standard assembler, ASM (single source  module,
  8. no  macros,  no  advanced  instructions),  so that it could be assembled on any
  9. CP/M-80 system (the 8080  assembler  is  distributed  as  a  standard  part  of
  10. CP/M-80,  whereas  the  fancier Z80 or macro assemblers are normally commercial
  11. products).  It has since been modified to run on many other  systems  as  well.
  12. Kermit-80  should be able to run on any 8080-, 8085- or Z80-based microcomputer
  13. under  CP/M with appropriate minor changes to reflect the port I/O  and  screen
  14. control for the system (see below).
  15.  
  16. The  proliferation  of new systems supported by Kermit-80 made the program grow
  17. so large and complicated that it had to be broken  up  into  system-independent
  18. and  system-dependent  modules,  as of version 4 (this was done by Charles Car-
  19. valho of ACC).  Each module is composed of multiple files.   This  has  reduced
  20. the time and disk space necessary for assembly; Kermit-80 may once again be as-
  21. sembled on a CP/M system with roughly 250Kbytes of space.  The majority of  the
  22. code  does  not need to be reassembled to support a new system.  Unfortunately,
  23. it can no longer be assembled with ASM, since ASM does not support multiple in-
  24. put  files.   To allow it to be assembled on any CP/M system, the public-domain
  25. assembler LASM is included in the distribution kit. Kermit-80 may also  be  as-
  26. sembled  with  Microsoft's  M80  (not supplied).  In theory, any 8080 assembler
  27. supporting the INCLUDE directive ought to work, as well.
  28.  
  29. All versions of Kermit-80 are assembled from the same set of sources, with sys-
  30. tem dependencies taken care of by assembly-time conditionals within the system-
  31. dependent module (eventually, the system-dependent module will itself be broken
  32. up into multiple files, one for each system).  The most important system depen-
  33. dencies are terminal emulation (when CONNECTed to the remote host)  and  screen
  34. handling,  which  are  dependent  on the individual micro's escape codes (these
  35. features are table driven and easily modified for other CP/M systems), and  the
  36. lowest  level  I/O  routines  for  the  serial  communications  port.  The port
  37. routines are best done only with BDOS calls, but  some  systems  do  not  allow
  38. this, primarily because the BDOS routines strip the parity bit during port I/O,
  39. and the parity bit is used for data when transmitting binary files.
  40.  
  41. Kermit-80's I/O routines must check the port status and go elsewhere if no  in-
  42. put  is available; this allows for virtual terminal connection, keyboard inter-
  43. ruption of stuck transmissions, etc.   On  systems  that  fully  implement  I/O
  44. redirection  via the optional CP/M IOBYTE facility, this may be done by switch-
  45. ing the IOBYTE definition.  On others, however, IN/OUT instructions  explicitly
  46. referencing the port device registers must be used.
  47.  
  48. CP/M-80  KERMIT  versions  3.8  and later include a "fuzzy timer" that allows a
  49. timeout to occur after an interval ranging from 5 to 20 seconds (depending upon
  50. the  speed of the processor and the operating system routines) during which ex-
  51. pected input does not appear at the port.  In this case, retransmission  occurs
  52. automatically.  In any case, you may type a carriage return during transmission
  53. to simulate a timeout when the transfer appears to be stuck.
  54.  
  55.  
  56. 1.7.1. Organization of Kermit-80
  57.  
  58. Kermit-80 consists of two modules, each of which  is  generated  from  multiple
  59. source  files.    The  first  module  contains the system-independent code; the
  60. second module is configured for a particular system and merged with the system-
  61. independent module to produce a customized Kermit-80.
  62.  
  63. The distribution kit contains:
  64.  
  65.    - the system-independent module, CPSKER.HEX;
  66.    - the system-dependent modules, CPV*.HEX (see table 1-2 and 1-3);
  67.    - the source files, CPS*.ASM and CPX*.ASM,
  68.    - the public-domain CP/M assembler, LASM.*,
  69.    - the public-domain CP/M load/patch utility, MLOAD.*
  70.  
  71. -------------------------------------------------------------------------------
  72.  
  73. Symbol  Filename System
  74. ACCESS  CPVACC  Access Matrix
  75. ADVANT  CPVADV  Northstar Advantage
  76. AP6551  CPVAPL  Apple II, Z80 Softcard, 6551 ACIA in serial interface
  77. AP6850  CPVA65  Apple II, Z80 Softcard, 6850 ACIA in Serial Iiterface
  78. APMMDM  CPVAPM  Apple II, Z80 Softcard, Micromodem II in slot 2
  79. APCPS   CPVCPS  Apple II, Z80 Softcard, with CPS multifunction card
  80. BASICNS CPVBNS  Northstar Horizon (terminal required)
  81. BBC     CPVBBC  Acorn "BBC" computer with Acorn Z80 second processor
  82. BBII    CPVBB2  BigBoard II (terminal required)
  83. BRAINM  CPVBRM  Intertec Superbrain using the main port
  84. BRAINA  CPVBRA  Intertec Superbrain using the Aux port
  85. CIFER2  CPVCIF  Cifer 1886 using the VL: Serial port and CP/M V2.2
  86. CIFER3  CPVCI3  Cifer 1886 using the VL: Serial port and CP/M V3.0
  87. CIFER2  CPVCA2  Cifer 1886 using the AUX: Serial port and CP/M V2.2
  88. CIFER3  CPVCA3  Cifer 1886 using the AUX: Serial port and CP/M V3.0
  89. CMEMCO  CPVCRO  Cromemco with TU-ART card. Terminal required)
  90. COMART  CPVCOM  Comart Communicator (terminal required)
  91. COMPRO  CPVPRO  Compupro with Interfacer 4 (or 3).  Terminal required.
  92. CPC     CPVCPC  Amstrad CPC 664 and 6128 and CP/M 3
  93. CPM3    CPVCP3  "Generic": CP/M 3.0 (CP/M Plus) systems (terminal req'd)
  94. CPT85XX CPVCPT  CPT-85xx wordprocessor with CP/M
  95. DELPHI  CPVDEL  Digicomp Delphi 100 (terminal required)
  96. DISC    CPVDIS  Action Computer Enterprises "Discovery" (terminal req'd)
  97. DMII    CPVDM2  DECmate II with CP/M option
  98. GENER   CPVGEN  "Generic": CPM 2.2 systems with IOBYTE (terminal req'd)
  99. GENIE   CPVGNI  Video Genie
  100. H8QUAD  CPVH8Q  Heath-8 with Quad 8 i/o board
  101. HEATH   CPVH89  Heath/Zenith H89
  102. HORIZON CPVHOR  Northstar Horizon (terminal required)
  103. KPII    CPVKPR  Kaypro-II (and 4; probably supports all Kaypro systems)
  104. LOBO    CPVLBO  Lobo Max-80
  105.  
  106. "symbol" is the symbol used to select the target system, in CPVTYP.ASM;
  107.  
  108. "filename" is the name under which the module is supplied in the distribution.
  109.  
  110.               Table 1-2:  Systems supported by Kermit-80 (Part 1)
  111.  
  112. -------------------------------------------------------------------------------
  113.  
  114. -------------------------------------------------------------------------------
  115.  
  116. Symbol  Filename System
  117. M2215   CPVMRL  British Telecom Merlin/Rair Black Box (terminal required)
  118. MDI     CPVMDI  Morrow Decision I (terminal required)
  119. MIKKO   CPVMIK  MikroMikko
  120. MMATE   CPVMM   PMC 101 Micromate (terminal required)
  121. MMDI    CPVUD   Morrow Micro Decision I (terminal required)
  122. NCRDMV  CPVDMV  NCR Decision Mate V.  (Terminal required?)
  123. NORTHS  CPVNS   Northstar Horizon with HSIO-4 card (terminal req'd)
  124. OSBRN1  CPVOSB  Osborne 1
  125. OSI     CPVOSI  Ohio Scientific
  126. PCI2651 CPVPCI  Ithaca Intersystems with VI0 card (terminal required)
  127. PCW     CPVPCW  Amstrad PCW 8256/8512 with serial interface
  128. PX8     CPVPX8  Epson PX-8
  129. RM380ZM CPVRMM  Research Machines 380Z with MDS (5.25" discs)
  130. RM380ZF CPVRMF  Research Machines 380Z with FDS (8" discs)
  131. ROBIN   CPVROB  DEC VT180
  132. S1008   CPVUSM  US Microsales S-100-8 (terminal required)
  133. SANYO   CPVSAN  Sanyo MBC-1100
  134. SB6     CPVSB6  Micromint SB-180 with 6Mhz CPU (terminal required)
  135. SB9     CPVSB9  Micromint SB-180 with 9Mhz CPU (terminal required)
  136. SCNTPR  CPVSCN  Screentyper
  137. TELCON  CPVTEL  TELCON Zobra portable
  138. TELETEK CPVTET  Teletek Systemaster
  139. TORCH   CPVTRC  Torch computers BBC-B with Z80 second processors
  140. TRS80LB CPVTLB  TRS-80 model II with Lifeboat 2.25C CP/M Display
  141. TRS80PT CPVTPT  TRS-80 model II with Pickles + Trout CP/M Display
  142. TRSM4   CPVTM4  TRS-80 model IV
  143. VECTOR  CPVVEC  Vector Graphics
  144. XER820  CPVXER  Xerox 820
  145. Z100    CPVZ00  Z-100 under CP/M-85
  146. Z80MU   CPVZ80  Z80MU development system on a PC
  147.  
  148. "symbol" is the symbol used to select the target system, in CPXTYP.ASM;
  149.  
  150. "filename" is the name under which the module is supplied in the distribution.
  151.  
  152.               Table 1-3:  Systems supported by Kermit-80 (Part 2)
  153.  
  154. -------------------------------------------------------------------------------
  155.  
  156. -------------------------------------------------------------------------------
  157.  
  158. Symbol  Terminal type
  159. CRT     Dumb terminal type.  Does not do cursor addressing
  160. ADM3A   Lear Seigler ADM 3A
  161. ADM22   Lear Seigler ADM 22
  162. AM230   Ampro 230
  163. H1500   Hazeltine 1500
  164. SMRTVD  Netronics Smartvid
  165. SOROQ   Soroq IQ-120
  166. TVI912  Televideo 912
  167. TVI925  Televideo 925 or Freedom 100
  168. VT52    Dec VT52 or equivalent (H19)
  169. VT100   Dec VT100 or equivalent
  170. WYSE    Wyse 100
  171.  
  172. "symbol" is the symbol used to select the target system, in CPXTYP.ASM;
  173.  
  174. "Terminal type" is the type of terminal "symbol" selects.
  175.  
  176.                  Table 1-4:  Terminals supported by Kermit-80
  177.  
  178. -------------------------------------------------------------------------------
  179.  
  180.  
  181. 1.7.2. Downloading Kermit-80
  182.  
  183. You'll need either a pre-configured .COM file or the system-independent module,
  184. CPSKER, in binary (.COM) or hex (.HEX) format and the system-dependent  overlay
  185. for your system (from Tables 1-2 and 1-3).  If your system is not listed in the
  186. table, get the generic CP/M 2.2 Kermit or the generic CP/M 3 Kermit.    If  you
  187. already  have  a  version of Kermit on your micro and you want to install a new
  188. version, simply use your present version to get the new files.    Transfer  the
  189. files to your system and skip ahead to "merging the modules".
  190.  
  191. If you do not have a copy of Kermit on your micro, and you cannot borrow a Ker-
  192. mit floppy but you do have access to a mainframe computer with a  copy  of  the
  193. Kermit-80 distribution, you should read this section.
  194.  
  195. There  are  several  ways  to get CP/M Kermit from a host system to your micro.
  196. The easiest is to "download" the necessary "hex" files into your micro's memory
  197. and  then  save  them  on the disk.  If you have a terminal emulator program on
  198. your micro which can save a copy of the session to disk, connect to your  host,
  199. and  type the necessary files.  Exit from the emulator, saving the session log,
  200. and edit the session log to extract the hex files.  Skip ahead to "merging  the
  201. files".
  202.  
  203. The following is a procedure which, though far from foolproof, should allow you
  204. to get a version of Kermit to your CP/M based micro.  It depends upon the  host
  205. prompt,  or at least the first character of the host prompt, being some charac-
  206. ter that cannot appear in a hex file (the valid characters for  hex  files  are
  207. the  digits  0-9, the upper case letters A-F, the colon ``:'', carriage return,
  208. and line feed).  As soon the prompt character is encountered, the transfer will
  209. terminate.    If  your  host does not issue a prompt that will accommodate this
  210. scheme, you can achieve the same effect by adding an atsign ``@'' to  the  very
  211. end  of  the hex file before sending it from the host.  The program below looks
  212. for an atsign (the normal DEC-20 prompt, hex 40).    DECSYSTEM-10  users  would
  213. look for a dot, hex 2E; VAX/VMS or UNIX users would look for a dollar sign, hex
  214. 24; UNIX C-Shell users would look for a percent sign, hex 26.
  215.  
  216.    1. For CP/M 2.2 systems, connect to a floppy disk with plenty  of  free
  217.       space.    Run DDT and type in the following (the comments should not
  218.       be typed in; they are there just  to  tell  you  what's  happening):
  219.       (Note that this wont work for CP/M Plus or 3.0 systems!)
  220.  
  221.       ----------------------------------------------------------------
  222. -a100                   ;Begin assembling code at 100
  223.       0100    LXI H,2FE       ;Where to store in memory
  224.       0103    SHLD 200        ;Keep pointer there
  225.       0106    MVI E,D         ;Get a CR
  226.       0108    MVI C,4         ;Output to PUNCH (send to HOST)
  227.       010A    CALL 5
  228.       010D    MVI C,3         ;Input from READER (read from HOST)
  229.       010F    CALL 5
  230.       0112    ANI 7F          ;Strip parity bit
  231.       0114    PUSH PSW        ;Save a and flags
  232.       0115    MOV E,A         ;Move char to E for echo
  233.       0116    MVI C,2         ;Output to screen
  234.       0118    CALL 5
  235.       011B    POP PSW         ;Restore A and flags
  236.       011C    CPI 40          ;(or 4E,24,26,etc) System prompt?
  237.       011E    JZ 127          ;Yes, have whole file in memory
  238.       0121    CALL 17A        ;No, store another byte
  239.       0124    JMP 10D         ;Read another byte
  240.       0127    MVI A,1A        ;Get a Control-Z (CP/M EOF mark)
  241.       0129    CALL 17A        ;Store it in memory
  242.       012C    LXI H,300       ;Get memory pointer
  243.       012F    SHLD 202        ;Store as DMA pointer
  244.       0132    LDA 201         ;Get 'HI' byte of memory pointer
  245.       0135    STA 200         ;and store it as 'LO' one
  246.       0138    XRA A
  247.       0139    STA 201         ;Zero 'HI' byte (slow *256)
  248.       013C    MVI C,16        ;Make NEW file
  249.       013E    LXI D,5C        ;With FCB1
  250.       0141    CALL 5
  251.       0144    CALL 15E        ;Write 128 bytes (sector)
  252.       0147    CALL 15E        ;Write another sector
  253.       014A    LXI H,FFFF      ;Get a 16-bit Minus One
  254.       014D    XCHG            ;into DE
  255.       014E    LHLD 200        ;Get 256-byte counter
  256.       0151    DAD D           ;Decrement
  257.       0152    SHLD 200        ;and store back
  258.       0155    MVI A,2         ;Check if
  259.       0157    CMP L           ; 256-byte counter down to offset
  260.       0158    JZ 183          ;Yes, we're done
  261.       015B    JMP 144         ;Keep writing..
  262.       015E    LHLD 202        ;Get file-pointer
  263.       0161    XCHG            ;into DE
  264.       0162    MVI C,1A        ;Set DMA-address
  265.       0164    CALL 5
  266.       0167    MVI C,15        ;Write sector (128 bytes)
  267.       0169    LXI D,5C        ;using FCB1
  268.       016C    CALL 5
  269.       016F    LHLD 202        ;Get file-pointer
  270.       0172    LXI D,80        ;128-bytes
  271.       0175    DAD D           ;added to file-pointer
  272.       0176    SHLD 202        ;and save
  273.       0179    RET             ;and return
  274.       017A    LHLD 200        ;Get Memory-pointer
  275.       017D    MOV M,A         ;Store character
  276.       017E    INX H           ;Increment Pointer
  277.       017F    SHLD 200        ;and save
  278.       0182    RET             ;and return
  279.       0183    MVI C,10        ;CLOSE file
  280.       0185    LXI D,5C        ;using FCB1
  281.       0188    CALL 5
  282.       018B    JMP 0           ;Force WARM BOOT
  283.       0179
  284.       -^C                     ;(Type Control-C) Return to CP/M
  285.       A>SAVE 1 FETCH.COM      ;Save program, we need to run it twice.
  286.  
  287.        Figure 1-1:  Bootstrap program for Kermit-80 and CP/M Version 2.2
  288.  
  289.       ----------------------------------------------------------------
  290.  
  291.       Alternatively,  an  assembler  source  file for this program is dis-
  292.       tributed with CP/M Kermit as CPKFET.ASM.  You might prefer  to  type
  293.       the  assembler version in and assemble and load it (ASM CPKFET, LOAD
  294.       CPKFET, or MASM CPKFET, MLOAD CPKFET),  to  let  the  assembler  and
  295.       loader catch any typing errors.
  296.  
  297.    2. Connect  to  your  host  using  a  terminal  or a terminal emulation
  298.       program.  Ensure that your host does not have your terminal in "page
  299.       mode" (does not pause at the end of each screenful).
  300.  
  301.    3. Tell  the host to display the first hex file (the system-independent
  302.       module) at your terminal, e.g. give a command like TYPE  CPSKER.HEX,
  303.       without a terminating carriage return.
  304.  
  305.    4. Return to your micro by switching the cable from the terminal to the
  306.       micro, or by terminating the micro's terminal program.
  307.  
  308.    5. Make sure your IOBYTE is set so that RDR: and PUN: correspond to the
  309.       I/O  port  that is connected to the host (this would normally be the
  310.       case unless you have done something special to change things).
  311.  
  312.    6. Load the program you entered in the first step with DDT, and use  it
  313.       to capture the first hex file:
  314.  
  315.           DDT FETCH.COM
  316.           -icpsker.hex            ;Setup FCB for file CPSKER.HEX
  317.           -g100,179               ;Execute the program.
  318.  
  319.       Now there should be a file CPSKER.HEX on your connected disk.
  320.  
  321.    7. Return  to the host, and tell it to display the second hex file (the
  322.       system-dependent module for your configuration).  Again, do not type
  323.       the terminating carriage return.
  324.  
  325.    8. Return to your micro, and run the capture program again:
  326.  
  327.           DDT FETCH.COM
  328.           -icpxovl.hex            ;Setup FCB to create CPXOVL.HEX
  329.           -g100,179               ;Execute the program.
  330.  
  331.       Now  there  should  be  a  file  CPXOVL.HEX  on your connected disk.
  332.       Replace CPXOVL.HEX in this example with the appropriate overlay file
  333.       for your system.
  334.  
  335. Merging the files:
  336.  
  337.    1. For  purposes  of  illustration, we will assume the system-dependent
  338.       overlay is called "cpxovl.hex".  The two hex files may  be  combined
  339.       with  MLOAD  or  DDT.  If you already have a running Kermit, you can
  340.       transfer MLOAD.HEX to your system and create  MLOAD.COM  by  running
  341.       LOAD.   If you're bootstrapping Kermit, you could transfer MLOAD.HEX
  342.       to your system the same way you got the other two  .HEX  files,  but
  343.       it's  probably  simpler  to  use  DDT to get Kermit running, and get
  344.       MLOAD later if you need it.
  345.  
  346.    2. Using MLOAD, the two pieces may be easily merged:
  347.  
  348.           A>mload kermit49=cpsker,cpxovl
  349.           (Some messages about program size, etc...)
  350.           A>
  351.  
  352.    3. If you don't have MLOAD running, it's a bit more complex:
  353.  
  354.           A>ddt cpsker.hex
  355.           NEXT  PC
  356.           3500 0100
  357.           -icpxovl.hex
  358.           -r
  359.           NEXT  PC
  360.           xxxx 0000
  361.           -^C
  362.           A>save dd kermit49.com
  363.  
  364.       The page count ("dd") used in the SAVE command  is  calculated  from
  365.       the last address ("xxxx") given by DDT in response to the R command:
  366.       drop the last two digits and add 1 if they were not zero, then  con-
  367.       vert  from  hexadecimal (base 16) to decimal (base 10): 684F becomes
  368.       69 hex, which is 105 decimal (5 times 16 plus 9) -- but 6700 becomes
  369.       67  hex,  or  103 decimal (consult an introductory computing book if
  370.       you don't understand number base conversion).
  371.  
  372.    4. If you are using the Z80MU CP/M and Z80 development  toolkit  on  an
  373.       IBM  PC or clone, then follow the same instructions as for a genuine
  374.       CP/M system.  When you have loaded your file, you will have to  ship
  375.       the  .COM  or  two  .HEX  files to the target CP/M system. (Possibly
  376.       using a previous issue of Kermit?)
  377.  
  378.    5. Note that CP/M hex files have checksums on each line.  If there were
  379.       any transmission errors during the downloading process, MLOAD or DDT
  380.       will notice a bad checksum and will report an error (something  like
  381.       "Illegal Format").  If you get any errors during loading, either fix
  382.       the hex file locally with an editor, or repeat the transfer.
  383.  
  384. You now should have a running version of Kermit-80, called KERMIT49.COM.
  385.  
  386. Test your new Kermit by running it.  If it gives you a prompt, it might be  OK.
  387. (don't  delete your old one yet...).  Instead of a prompt, you could get one of
  388. two messages indicating that the configuration information is invalid:
  389.  
  390.     ?Kermit has not been configured for a target system
  391.  
  392. or
  393.  
  394.     ?Consistency check on configuration failed
  395.  
  396. Of course, neither of these messages should appear if  you're  building  Kermit
  397. from  the  distribution  kit.  The first message indicates that the overlay was
  398. not found where the system-independent module expected to find it, probably be-
  399. cause  the  overlay address is incorrect; the second indicates that the version
  400. of CPXLNK used in the system-dependent module is incompatible with the  system-
  401. independent module.
  402.  
  403. Once  you  are  satisfied that KERMIT40 works correctly, you should rename your
  404. old KERMIT.COM to something else, like OKERMIT.COM, and rename KERMIT40.COM  to
  405. KERMIT.COM.
  406.  
  407.  
  408. 1.7.3. Assembling Kermit-80 from the sources
  409.  
  410. Kermit-80 is built in two pieces from the following files:
  411.  
  412. The system-independent files:
  413.   CPSKER.ASM    header file
  414.   CPSDEF.ASM    definitions for both KERMIT and KERSYS
  415.   CPSMIT.ASM    initialization,  main  loop, miscellaneous commands (BYE, EXIT,
  416.                 LOG, SET, SHOW, STATUS, and VERSION)
  417.   CPSCOM.ASM    second part of commands, status and set file
  418.   CPSPK1.ASM    part  1  of  the  KERMIT  protocol  handler   (SEND,   RECEIVE,
  419.                 LOGOUT,and FINISH commands)
  420.   CPSPK2.ASM    part 2 of the KERMIT protocol handler
  421.   CPSREM.ASM    REMOTE routines
  422.   CPSSER.ASM    SERVER routines (for the future)
  423.   CPSTT.ASM     the transparent commands (TRANSMIT, CONNECT)
  424.   CPSCPM.ASM    CP/M commands (DIR, ERA, USER, TYPE, PRINT, COPY)
  425.   CPSWLD.ASM    the wildcard handler
  426.   CPSCMD.ASM    the command parser
  427.   CPSUTL.ASM    utility routines and data
  428.   CPSDAT.ASM    data space and the overlay definitions
  429.   CPXLNK.ASM    linkage area description
  430.  
  431. The system-dependent files:
  432.   CPXTYP.ASM    system selection
  433.   CPXLNK.ASM    system overlay specification and jump table
  434.   CPXCOM.ASM    common routines for all systems
  435.   CPXSWT.ASM    system selector or switcher
  436.  
  437. One of:
  438.   CPXSYS.ASM    family file for some system-specific code
  439.     (now split into CPXSYS.ASM and CPXSY2.ASM)
  440.   CPXTOR.ASM    family file for Torch, Superbrain, PCI2651 etc
  441.   CPXNOR.ASM    family file for Northstar and Comart machines
  442.   CPXMRL.ASM    family file for British Telecom merlin/Rair Black Box
  443.   CPXSB.ASM     family file for Micromint SB-180 systems
  444.   CPXCIF.ASM    family file for Cifer systems
  445.   CPXHEA.ASM    family file for Heath/Zenith systems
  446.   CPXAPP.ASM    family file for Apple II systems
  447.   CPXPCW.ASM    family file for Amstrad PCW 8256/8512 machines
  448.   CPXBEE.ASM    Family file for Microbee systems
  449.   CPXBBI.ASM    family file for BigBoard, Kaypro and Xerox 820 systems
  450.   CPXSYO.ASM    family file for Sanyo MBS-1100 systems
  451.   CPXTM4.ASM    family file for Tandy Model 4 with CP/M systems
  452.   CPXGNI.ASM    family file for Video Genie systems
  453.   CPXPRO.ASM    family file for Compupro systems
  454.   CPXZ80.ASM    family file for the Z80MU development system
  455.  
  456. and if you use a terminal,
  457.   CPXVDU.ASM    display codes for VDUs etc.  Not always required
  458.  
  459. The  system-independent module contains all of the system-independent files ex-
  460. cept for CPXLNK.ASM, which is assembled into  the  system-dependent  module  to
  461. provide  the structures needed to connect the two modules.  As distributed, the
  462. system-independent module  is  named  CPSKER.HEX.    If  you  have  a  copy  of
  463. CPSKER.HEX, you do not need to reassemble the system-independent module to con-
  464. figure Kermit for your system.
  465.  
  466. The system-dependent module consists  of  CPXTYP.ASM,  CPSDEF.ASM,  CPXLNK.ASM,
  467. CPXSWT.ASM,  CPSCOM.ASM,  one  of  the  family  files  CPXSYS.ASM,  CPXTOR.ASM,
  468. CPXMRL.ASM,  CPXSB.ASM,   CPXCIF.ASM,   CPXHEA.ASM,   CPXBBI.ASM,   CPXTM4.ASM,
  469. CPXGNI.ASM,  CPXNOR.ASM,  CPXAPP.ASM,  CPXPCW.ASM,  or CPXPRO.ASM, and possibly
  470. CPXVDU.ASM, if your system uses a terminal for the console.  One  copy  of  the
  471. system-dependent  module  is supplied already assembled for each supported sys-
  472. tem; the filename may be obtained from tables 1-2 and 1-3.  If  a  terminal  is
  473. required for a system, a CRT (glass TTY device) has been selected.
  474.  
  475. After assembling the two pieces separately, they are combined with DDT or MLOAD
  476. into a system-specific Kermit.
  477.  
  478. If you want to rebuild the system-independent module, the only change  you  may
  479. need  to make is to select the assembler to be used, in CPSKER.ASM.  Define one
  480. of MAC80, M80, or LASM to TRUE to select it as the assembler; the others should
  481. be defined FALSE.
  482.  
  483. Assuming  you have the Microsoft Macro Assembler package (M80/L80), you'll need
  484. to do the following:
  485.  
  486.     A>m80 cpsker=cpsker.asm
  487.     A>l80 /p:100,cpsker,cpsker/n/e
  488.  
  489. This will produce CPSKER.COM.
  490.  
  491. If you are using LASM instead, do this:
  492.  
  493.     A>lasm cpsker
  494.  
  495. LASM will generate CPSKER.HEX and  CPSKER.PRN.    LASM  allows  options  to  be
  496. specified in the same way as the standard assembler, ASM, so the command
  497.  
  498.     A>lasm cpsker.abz
  499.  
  500. will  read  the  source  files from drive A, send the .HEX file to drive B, and
  501. suppress the listing file.
  502.  
  503. If you are using the Z80MU development system on an IBM PC or clone,  then  as-
  504. semble  your  files  using either LASM and MLOAD or M80 and L80, as if you were
  505. using a genuine CP/M-80 system.  Note that you will still have the  problem  of
  506. transferring your assembled files to the target CP/M system.
  507.  
  508. If  you want to generate a system-dependent overlay for a particular system, or
  509. want to change the terminal supported, you'll need  to  check  three  areas  in
  510. CPXTYP.ASM:
  511.  
  512. First,  the  overlay  start ADDRESS.  The symbol "ovladr" is EQUated to the ad-
  513. dress of "LNKFLG" in the system-independent module, as the starting address  of
  514. the overlay (7000H for version 4.11).  You'll need to know this value if you're
  515. building the overlay with M80/L80.  You won't  normally  need  to  change  this
  516. value.
  517.  
  518. Second, the assembler being used.  Again, define one of MAC80, M80, and LASM to
  519. be TRUE to select it, and define the others to  be  FALSE.    The  two  modules
  520. (system-independent and system-dependent) do not need to be built with the same
  521. assembler.
  522.  
  523. Third, the system configuration.  Locate your system in  tables  1-2  and  1-3,
  524. then  define  the  appropriate  symbol TRUE, and the rest FALSE.  If the system
  525. comes with a builtin console terminal, define all the terminal switches  FALSE.
  526. If  the system uses an external terminal as the console, locate the terminal in
  527. table 1-5 and define the appropriate symbol TRUE, and the remainder FALSE.   If
  528. the terminal is not listed in table 1-5, use the CRT switch; in this case, VT52
  529. emulation is not supported.
  530.  
  531. In addition, there are a few general and system-specific symbols which  may  be
  532. altered to fit your system:
  533.  
  534. APSLOT          For Apple with 6551 ACIA, defines the slot number of the serial
  535.                 card
  536.  
  537. CPUSPD          Processor speed in units of 100KHz  (currently  used  only  for
  538.                 bbII and kpII for timing loops)
  539.  
  540. TAC             For  users  connecting through ARPAnet TACs: set to TRUE if you
  541.                 wish the default TACTRAP status to be ON. (This may be overrid-
  542.                 den  with  the  SET TACTRAP command).  If you're not connecting
  543.                 through a TAC, set tac to FALSE and ignore tacval.
  544.  
  545. TACVAL          For ARPANET  TAC  users:  defines  the  default  TAC  intercept
  546.                 character (may be overridden with the SET TACTRAP command).
  547.  
  548. If  you  are  just  assembling  an  existing configuration, you'll need to edit
  549. CPXTYP.ASM only.  If you are adding support for a new system,  you  should  not
  550. modify  CPSDEF.ASM  or CPXLNK.ASM; if you do, you'll have to change the system-
  551. independent module also.  Eventually, CPXSYS.ASM will be  split  into  separate
  552. files, each of which will generate one or more related systems.  When this hap-
  553. pens, you'll want to pick the one closest to your system to use as  a  starting
  554. point.
  555.  
  556. After  editing  CPXTYP.ASM  as necessary, assemble and link the overlay as fol-
  557. lows:
  558.  
  559.    - With M80 (where "xxxx" is the hex value of ovladr from CPXLNK.ASM):
  560.  
  561.          A>m80 cpxtyp=cpxtyp.asm
  562.          A>l80 /p:xxxx,cpxtyp,cpxtyp/n/x/e
  563.  
  564.    - With LASM:
  565.  
  566.          A>lasm cpxtyp
  567.  
  568. With an IBM PC or clone using the Z80MU softwrae, follow the instructions as if
  569. you were using a real CP/M system.
  570.  
  571. The  overlay (CPXTYP.HEX) may then be merged with the system-independent module
  572. as described above (creating a runnable Kermit from the distribution kit).
  573.  
  574. If you are using the Z80MU development system on a PC, and already have a  run-
  575. ning Kermit-80 v3.9 or later, you can merge the two .HEX files into a .COM file
  576. with LINK80 (TOPS 10/20), MLOAD (Z80MU), L80 (Z80MU), and transfer the new .COM
  577. file to your micro with Kermit:
  578.  
  579.    - Z80MU on a PC and MLOAD:
  580.  
  581.          @MLOAD KERNEW=CPSKER,CPXTYP
  582.  
  583.    - Z80MU on a PC and C80:
  584.  
  585.          @L80 /P:xxxx,CPXTYP,CPXTYP/N/X/E
  586.  
  587. producing KERNEW.COM.
  588.  
  589. -------------------------------------------------------------------------------
  590.  
  591. Symbol         Terminal description
  592. crt            Basic CRT, no cursor positioning
  593. adm3a          ADM3A Display or lookalike
  594. adm22          ADM22 Display or lookalike
  595. am230          Ampro 230
  596. h1500          Hazeltine 1500
  597. smrtvd         Netronics Smartvid-80
  598. soroq          Soroq IQ-120
  599. tvi912         TVI 912
  600. tvi925         TVI 925, Freedom 100
  601. vt52           VT 52 or VT52 emulator such as Heath H19, H29, etc.
  602. vt100          VT 100 or emulator (most ANSI terminals should work)
  603. wyse           Wyse 100
  604.  
  605.                    Table 1-5:  Terminals known to Kermit-80
  606.  
  607. -------------------------------------------------------------------------------
  608.  
  609.  
  610. 1.8. Adding Support For A New System
  611.  
  612. Kermit-80  is  built  from  a  common set of source files; the system-dependent
  613. module makes heavy use of  conditional  assembly  (this  complication  will  be
  614. removed  in  future  releases).  The system dependencies arise from attempts to
  615. answer some questions:
  616.  
  617.    1. What kind of terminal is to be supported?
  618.  
  619.       For many micros, the console is an integral part of the system,  but
  620.       others  can  use an external terminal.  In either case, the commands
  621.       to manipulate the screen (position the  cursor,  erase  the  screen,
  622.       etc) must be defined.
  623.  
  624.    2. How is the serial line accessed?
  625.  
  626.       For systems supporting the IOBYTE function, this is straightforward;
  627.       the symbol "IOBYT" is defined TRUE.  If the serial line is  accessed
  628.       with  IN  and OUT instructions, it may be possible to use the simple
  629.       I/O routines provided.  In this case, the symbol "INOUT" is  defined
  630.       TRUE,  the  MNPORT and MNPRTS are defined to be the data and control
  631.       addresses, respectively, and bit masks for testing for  "input  data
  632.       available" and "output buffer empty" must be defined.  If the inter-
  633.       face is strange, leave IOBYT and INOUT set to FALSE, and provide the
  634.       I/O routines.
  635.  
  636.    3. What initialization is necessary?
  637.  
  638.       You  may  wish  to set the baud rate or configure the serial line at
  639.       startup.  Examples for a number of devices are present.
  640.  
  641.    4. What special features are to be supported?
  642.  
  643.       You may want to provide the capability  to  select  one  of  several
  644.       serial  lines  with  the SET PORT command, or to change the speed of
  645.       the serial line with the SET SPEED command.  To do this, you'll need
  646.       to build a command table, using the systems already supported as ex-
  647.       amples.  The ability to send a BREAK signal is  desirable.    Again,
  648.       examples  for  several  different  interfaces  (ACIA,  SIO, etc) are
  649.       present.
  650.  
  651.    5. Do you want to design an external terminal type?
  652.  
  653.       There is a jump entry in the overlay file  to  allow  users  to  add
  654.       their  own  termainl  emulator.    If you write the code for such an
  655.       emulator, you must load this jump address with the address  of  your
  656.       emulator, and SET TERMINAL EXTERNAL from within Kermit.  All charac-
  657.       ters will be passed to this routine during connect mode.
  658.  
  659. [End of CP411BLD.DOC]
  660.