"Generic Kermit-80" is a implementation of Kermit that should run on many 8080-compatible CP/M-80 2.2 system with little or no modification. (There's also a generic Kermit-80 for CP/M-80 3.0). Unlike other Kermit-80 implementations, it contains no system-dependent manipulation of the serial port or screen. All I/O is done with standard CP/M BIOS calls, switching devices by manipulating the IOBYTE. Whether Generic Kermit runs, or can be made to run, on a particular micro depends upon two things: (1) Did the manufacturer fully implement the "optional" CP/M IOBYTE? (2) Is the IOBYTE implemented "correctly?", that is, are the four fields defined correctly and in the right order, and do the CON:, LST:, PUN:, and BAT: devices indicate the devices that KERMIT expects? KERMIT wants the serial port to correspond to the RDR: and PUN: devices, and wants to be able to switch the console between the CRT: and BAT: devices, where BAT: should be defined to use RDR: for input and LST: for output. Generic Kermit is known to run without modification on the DEC VT180 (up to 9600 baud) and other DEC micros. It was tested on the Intertec Superbrain and failed to work because the IOBYTE did not point to the CRT screen in the expected way. Similarly for the DECmate-II CP/M option, but in this case the correct IOBYTE definitions were discovered, and a "specific" version of generic Kermit-80 was built for the DECmate II; if you look for DMII in the CPMGENERI.ASM source file, you'll see that only a couple definition statements were necessary to do the trick. The other way in which generic Kermit-80 is generic is that it does not assume anything about terminal; it does not attempt to emulate a VT52 or any other type of terminal, and it does not use fancy screen control when updating the screen during file transfer. It assumes the micro has the ability to auto- matically wrap long lines around on the screen. The present VT180 and DECmate Kermits are actually generic Kermit slightly modified to do VT100 display screen updating during file transfer. To get Generic Kermit on to your system (if you can't get it on a floppy disk), use whatever procedure is available to you on your micro to download the file KER:CPMGENERIC.HEX. The DDT program listed in the Kermit Users Manual will do the trick on most systems, or use MODEM7 or some other file transfer package if you have it. To modify Generic Kermit to run on a new system on which it does not run as distributed, see the instructions in the section "Generic Kermit-80" in the back of the Kermit User Guide. How did it get done (in the words of Bernie Eiben, "inventor"): The "standard" CP/M system allows limited assignment of "logical" devices to physical devices. This is handled by the I/O byte. The I/O byte allows one to "assign" 4 "physical" devices to 4 "logical" devices. This allows one to use the CP/M call CONSTAT ( is there a Input at the "logical" CONSOLE-device ? ) to be used for any of the "other" four assignable devices for CONSOL. One of these devices is BAT:, the BATCH device ( Input comes from "logical" device READER, Output goes to "logical" device LIST ). We use in GENERIC Kermit during CONNECT-state (terminal-emulation) and SEND/RECEIVE state the CONSOLE=BAT: assignment, to be able to "poll" for pending character-input from the physical device READER=RDR: , which is for the DEC-VT180 (aka ROBIN) and the DEC-RAINBOW the COMM-Port. To circumvent BDOS-implementation differences, we call the BIOS directly. This is accomplished in routine INIADR, which grabs location 1 and 2 ( at 0 is a JMP WARMSTART ), adds increments of 3 ( we got the second entry of the BIOS-JMP vector -- the next three entries are JMP CONSTAT, JMP CONIN and JMP CONOUT ) and plugs them into our BIOS-CALL routines.