Creating a runnable Kermit from the distribution kit: You will need two of the .HEX files from the distribution kit: CP4KER.HEX (the system-independent module) and one of the system-dependent overlay modules. The name of the system-dependent overlay may be obtained from table 1 below. For systems which require an external terminal as console, the distribution kit overlays use the generic "crt" selection; after getting Kermit running, you may wish to reconfigure it to make use of your specific terminal. For purposes of illustration, we will assume the system-dependent overlay is called "foo.hex". The two hex files may be combined in two ways: if you do not have MLOAD (a public-domain enhanced version of LOAD), you will have to use DDT, as follows: A>ddt cp4ker.hex NEXT PC 3500 0100 -ifoo.hex -r NEXT PC xxxx 0000 -^C A>save dd kermit40.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: divide this number by 100 hex, rounding up, then convert to decimal: 384F becomes 39 hex, which is 57 decimal; but 3700 becomes 37 hex, or 55 decimal. Be careful not to overwrite your running Kermit, if any, with this new version until you've tested it. If you do have MLOAD, the process is simpler: A>mload ker403=cp4ker,foo This produces ker403.com, which may be run directly. 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 CP4LNK used in the system-dependent module is incompatible with the system- independent module. Table 1 Systems supported by Kermit-80 Symbol Filename System ap6551 cp4apl Apple II with Z80 Softcard and 6551 ACIA in serial interface apmmdm cp4apm Apple II with Z80 Softcard and Micromodem II in slot 2 bbII cp4bb2 BigBoard II (terminal required) brain cp4brn Intertec SuperBrain. cpm3 cp4cp3 "generic": CP/M 3.0 (CP/M Plus) systems (terminal required) delphi cp4del Digicomp Delphi 100 (terminal required) dmII cp4dm2 DECMATE II gener cp4gen "generic": CPM 2.2 systems supporting IOBYTE (terminal required) heath cp4h89 Heath/Zenith H89. kpII cp4kpr Kaypro-II (and 4; probably supports all Kaypro systems) mdI cp4mdi Morrow Decision I (terminal required) mikko cp4mik MikroMikko mmdI cp4udi Morrow Micro Decision I (terminal required) osbrn1 cp4osb Osborne 1 osi cp4osi Ohio Scientific robin cp4rob DEC VT180 telcon cp4tel TELCON Zorba portable trs80lb cp4tlb TRS-80 model II with Lifeboat 2.25C CP/M Display trs80pt cp4tpt TRS-80 model II with Pickles + Trout CP/M Display vector cp4vec Vector Graphics. z100 cp4z00 Z-100 under CP/M-85 Table 2 Terminals known to Kermit-80 Symbol Terminal description crt Basic CRT, no cursor positioning adm3a Adm3a Display or lookalike smrtvd Netronics Smartvid-80 tvi925 TVI925, Freedom 100 vt52 VT52 or VT52 emulator such as Heath H19, H29, etc. vt100 VT100 or emulator (most ANSI terminals should work) Assembling Kermit-80 from the sources: Kermit-80 is built in two pieces from the following 12 files: The system-independent files: CP4KER.ASM - header file CP4DEF.ASM - definitions for both KERMIT and KERSYS CP4MIT.ASM - initialization, main loop, miscellaneous commands (BYE, EXIT, LOG, SET, SHOW, STATUS, and VERSION) CP4PKT.ASM - the KERMIT protocol handler (SEND, RECEIVE, LOGOUT, and FINISH commands) CP4TT.ASM - the transparent commands (TRANSMIT, CONNECT) CP4CPM.ASM - CP/M commands (DIR, ERA) CP4WLD.ASM - the wildcard handler CP4CMD.ASM - the command parser CP4UTL.ASM - utility routines and data CP4LNK.ASM - linkage area description The system-dependent files: CP4TYP.ASM - system selection CP4SYS.ASM - system-specific code The system-independent module contains all of the system-independent files except for CP4LNK.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 CP4KER.HEX. The system-dependent module consists of CP4TYP.ASM, CP4DEF.ASM, CP4LNK.ASM, and CP4SYS.ASM. One copy of the system-dependent module is supplied already assembled for each supported system; the filename may be obtained from table 1. 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 CP4KER.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 cp4ker=cp4ker.asm A>l80 /p:100,cp4ker,cp4ker/n/e This will produce CP4KER.COM. If you are using LASM instead, do this: A>lasm cp4ker LASM will generate CP4KER.HEX. If you have access to a TOPS-10 or TOPS-20 system, you can cross-assemble Kermit there with MAC80, producing CP4KER.HEX: .run mac80 *=cp4ker.asm If you want to generate a system-dependent overlay for a particular system, you'll need to check three areas in CP4TYP.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 (3400H for version 4.03). You'll need this 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 table 1, 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 2 and define the appropriate symbol TRUE, and the remainder FALSE. If the terminal is not listed in table 2, 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 CP4TYP.ASM only. If you are adding support for a new system, you should not modify CP4DEF.ASM or CP4LNK.ASM; if you do, you'll have to change the system- independent module also. Eventually, CP4SYS.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 CP4TYP.ASM as necessary, assemble and link the overlay as follows: With M80 (where "xxxx" is the hex value of ovladr from CP4LNK.ASM): A>m80 cp4typ=cp4typ.asm A>l80 /p:xxxx,cp4typ,cp4typ/n/x/e With LASM: A>lasm cp4typ With MAC80 on TOPS-10 or TOPS-20: @run mac80 *=cp4typ.asm The overlay (cp4typ.hex) may then be merged with the system-independent module as described above (Creating a runnable Kermit from the distribution kit). If you have a TOPS-10 or TOPS-20 system and already have a running Kermit-80 v3.9 or later, you can merge the two .HEX files into a .COM file with LINK80, and transfer the new .COM file to your micro with Kermit: TOPS-20: .COPY KERNEW.HEX=CP4KER.HEX,CP4TYP.HEX .LINK80 KERNEW TOPS-20: @APPEND (SOURCE FILE) CP4KER.HEX,CP4TYP.HEX (TO) KERNEW.HEX @LINK80 KERNEW producing KERNEW.COM. If LINK80 says "?Data overlaid", you have an old version of LINK80, and will have to transfer the .HEX files to the micro and merge them there. Adding support for your system to Kermit: To be supplied. Basically, you'll only need to add a switch it CP4TYP.ASM to select your system, and add the system-dependent code to CP4SYS.ASM (I hope I've put enough hooks to allow this to be done easily). Adding new features to Kermit: To be supplied. If you're feeling industrious, I've got this list of pending requests...