Base virtual hardware is currently 2 Z80-SIOs (serial data, keyboard, serial printer, modem), with two WD1943 Baud generators, WD1793 Floppy Disk Controller, System Port, Centronics Parallel Printer Port, and SY6545-based CRT Controller.
Default ROM may be overridden using a config file property.
Kaypro did not seem to have a strict relationship between advertised, or designated, models and specific hardware. The mainboard, and ROM, that was shipped under a givel model "label" might have varied over time. Later models all used the same mainboard, possibly with some parts missing.
Models 2X (2/84) and 4/84 used the same mainboard, with some parts left out in the case of 2X. Model 10 used a different mainboard but was generally software compatible. The early model 10 was incapable of hosting a built-in modem. Other (older) models (specifically, models 2/II and 4) do not have the same level of compatability, and are currently not supported. Currently, there are no restrictions on what ROM is used, since those earlier models are not supported. The user must ensure the CP/M version is compatible with ROM.
|ROM P/N||ROM Ver||Model(s)||CP/M Version(s)|
|81-292a||n/a||2X, 2/84, 4/84||2.2G, 2.2H, 2.20d|
|81-478a||2.01||10, 2X, 2/84, 4/84,|
4X, 12X, ROBIE
|81-478b||2.02||10, 2X, 2/84, 4/84,|
4X, 12X, ROBIE
|81-478c||2.03||10, 2X, 2/84, 4/84,|
4X, 12X, ROBIE
The ROM 81-478a v2.01 in my Kaypro was labeled simply "81-478".
The ROM 81-478b v2.02 is derived from UROM source code as available. It appears to fix a bug where initialization of the RTC/MODEM/PIO was being skipped. It is not known how it was labeled. This is the current default ROM for models that support it.
The ROM 81-478c v2.03 is a new version that fixes a CON: redirection bug where the user number and '>' from the prompt (e.g. "A0>") were always sent to the built-in CRT no matter how CON: had been redirected.
There are multiple aspects to ROM-CP/M compatability. Some subtle changes were made over time to the ROM entry points (older CP/M may not make correct ROM calls), plus the ROMs changed how they interpret the boot loader sector (e.g. 81-478a requires a checksum on the boot sector which older boot images do not have). Additionally, ROMs 81-302c and 81-478a differ in how the winchester disk uses directory/boot/spares layouts and are not compatible. Data on a winchester is lost when switching between these ROMs.
CP/M 2.20d was a special version I derived from 2.2G, I think mainly to use as a loader for CP/M 3. I need to look through the source code to see what my reasons were for making that.
The above matrix is based on "Kaypro Technical Manual 1484-F" (found on bitsavers) and some trivial tests on a virtual system. The manual, and schematics, also describes these model features:
|4 (IV, 4/83)||logic||Y||2*||2xDD||2.5MHz||81-232|
* One serial port for Keyboard; if 4 total then one dedicated to Modem (regardless of whether installed). Modem and RTC use a Z80-PIO which is otherwise not installed.
** One serial port for Keyboard, one unused/unavailable.
QD = hi-density 160-track drives, DD = standard 40-track drives.
Models 2 and 4 use Z80-PIOs for Centr and system port. Half of each is unused.
Models shown with yellow background are not supported by the Virtual Kaypro.
The model string used for the later models VirtualKaypro may have an "E" appended, in which case memory will be upgraded to 256K (and RTC added if not already present).
There seemed to be a lot of variation in model designations, and later production of early models seemed to use newer, different, boards. There seemed to be an effort to converge the entire 8-bit product line into a single mainboard design, and schematics show a later design that would work in all models and require only a jumper to select between standard and high-density floppies, along with optionally populating modem/rtc and/or winchester interface sections. Theoretically, case designs had to change as well, for example early model 10s (or model 2) had a different backside connector arrangement.