KAYPRO KAYPRO4
Kaypro Computer
Der Kaypro war ein Komplett-Computer der frühen 1980er. Mit Floppies und Bildschirm sowie Mainboard in einem Gehäuse. Die Tastatur kann am Gehäuse befestigt werden, so dass ein kompaktes System entsteht.

Vom Kaypro 1 über 4 bis 16 sind viele verschiedene Systeme entstanden. Der Kaypro 4 hat eine Z80 CPU und wurde mit CP/M betrieben. Mit einem Update des OS-ROMs ist es möglich, sogar eine Festplatte anzuschliessen (der Kaypro 4 wird so zum Kaypro 10). 80x25 Character integrierter Bildschirm, das Gerät kann auch 160x100 “Grafik-Modus”. Im Textmodus implementiert die Hardware ein “Lear-Siegler ADM-3A” Terminal.
Dieses Gerät wurde als defekt gekauft. Der Verkäufer sagte, es würde booten, aber der Bildschirm zeige nichts an.
Mein Modell ist vom Motherboard her ein Kaypro 4/84 mit dem “Universal Board”. Es besitzt eine Echtzeituhr und Hardware zur Ansteuerung einer Harddisk. Die Batterie der Echtzeituhr ist leer.
Bild unten nach abgeschlossenen Reparaturen:


ROMs
2 ROMs, jedes ROM hat 4KBytes:
- U34 - Firmware ROM, Version unbekannt, weil Aufkleber fehlt, Hitachi HN82732AG-25
- U9 - Character ROM, Version 81-278, Datum 1983, Hitachi HN82732AG-25
Die Firmware enthält kaum ASCII-Text, ein String ist “=? KAYPRO v 0.2U(F) *=-4”. Dies gibt mir leider keinen Hinweis auf eine valide Firmware Version. Allerdings scheint das wirklich die Version zu sein, hier eine spätere Bildschirmausgabe vom Booten:
(Das folgende Bild wurde noch mit defektem Videoboard gemacht. Die Ausgabe
kommt von einem angeschlossenen GBS-8220 Video-Adapter, der aber das
Kaypro Bild nicht stabil synchronisieren kann, daher sieht es so seltsam aus.
Der Text scheint auch falsch zu sein, siehe spätere Ausgaben mit
funktionierendem Videoboard)

- Inhalt meines U34: kaypro4-firmware.bin
- Inhalt meines U9: kaypro4-charrom.bin
Im Character ROM sind keinerlei Strings enthalten.
Details


Die Lithium Batterie ist nach den vielen Jahren definitiv leer.

Beim OS-ROM ist leider der Aufkleber abgefallen.

Das Character-ROM.

Video
Der Kaypro zeigt kein Bild an. Daher habe ich mir als erstes die Elektronik zur Aufbereitung des Videobilds angesehen.
Auf dem Motherboard wird ein CRT Controller SY6545A verwendet. Dieser ist pin-kompatibel zum SY6548. SY6545-1_CRT_Controller_Synertek.pdf
Aus dem CRT Controller gehen die Video-Signale via IC U1 (7406) an das Video Board. 7406=Hex Inverter, Open Collector.
Details zum Video-Signal hier Lokal, Teil 1 sowie und online https://retrocmp.de/kaypro/tcj_74_composite-video.pdf. Aus dieser Doku:
- U1-Pin6: Video Signal (Pin5=Input, Pin6=Output). Das Signal (Pin 6) liegt im Bereich -40mV und 5.16 Volt. Sollen vermutlich 0 und 5 Volt sein. Taktung mit der Zeilenfrequenz von U1-Pin11. Pro Zeile werden 47.56µs verwendet.
- U1-Pin2: Vertical Sync (Pin1=Input, Pin2=Output). Das Signal (Pin 2) liegt im Bereich
- 360mV und 5.08 Volt. Soll vermutlich LO und HI sein. Frequenz = 50 Hz.
- U1-Pin11: Inverted Horizontal Sync (Pin11=Input, Pin10=Output) (Beachte das bei Pin11 der Eingang angegeben wird, bei Pin6 und Pin2 der Ausgang). Das Signal (Pin 11) liegt im Bereich 160mV und 5.08 Volt. Soll vermutlich LO und HI sein. Frequenz = 21 KHz.
Bei Zeilenfrequenz 47.56µs und 80 Zeichen mit 8 Pixeln resultiert eine Pixelfrequenz von ~13.46 MHz. Laut Literatur sind es allerdings 18 MHz.
Das bedeutet 108 Zeichen statt 80. Formel findet sich hier: https://retrocmp.de/kaypro/tcj_74_composite-video.pdf Dann kommt man auf die 18 MHz.
SN7406: 7406.pdf
Fazit bis hier: Grundsätzlich sehen die Signale an den relevanten Pins gut aus. Es wird vermutlich ein Videosignal komplett erzeugt. Der Fehler liegt daher eher auf dem Videoboard.
Ich habe versucht, das Signal mit einem speziellen Gerät aufzubereiten und sichtbar zu machen, einem GBS-8220. Dieser kann in einem weiten Bereich Videosignale verarbeiten und diese auf einem VGA-Bildschirm ausgeben.
Anschluss an GBS-8220 *-to-VGA Konverter:
| Kaypro U1 Pin | GBS-8200 J11 Connector Pin | Bemerkung |
|---|---|---|
| Pin 6 (Video) | Grün - Video Grün | |
| Pin 1 (VSYNC) | Gelb - Vertical Sync | |
| Pin 10 (HSYNC) | Grau - Horizontal Sync | |
| Pin 7 (Ground) | Ground |
Signale an Pins:
Pin 1, VSYNC, ca 50 Hz:

Pin 6 (5 inverted), VIDEO:

Pin 11 (10 inverted), HSYNC. Ca. 21 KHz:

Fazit bis hier: Der GBS-8220 kann auf das Signal vom Kaypro4 nicht synchronisieren. Man sieht aber manchmal den Text, der nach dem Booten erscheint, kurz aufleuchten. Zusätzliche Infos siehe hier: https://oldcrap.org/2018/03/11/cga-to-vga-scaling-with-gbs-8220-board/
Ich habe noch weitere, historische Ansätze verfolgt, um das Bild auf einem externen Monitor anzuzeigen, alle erfolglos.
Alternative Schaltung: https://www.reddit.com/r/AskElectronics/comments/1qlkyhp/voltage_levels_for_composite_video/?tl=de

Weiterer Ansatz:
- https://www.youtube.com/watch?v=gAsZ92Yc68A
- GenericCompositeOutV2.5.zip und KayproVideoOutput.zip
- Github: https://github.com/RudyRetroIntel/Universal-Video-Adapter
- Doku dazu: Universal Composite and RGB2HDMI-Manual.pdf
- verwendetes RGB2HDMI Board TexElect - https://texelec.com/product/rgbtohdmi-ttl/ cd4066.pdf
basiert auf: https://github.com/hoglet67/RGBtoHDMI - https://github.com/hoglet67/RGBtoHDMI/wiki - https://www.c0pperdragon.com/
Fertiges Modul: https://www.c0pperdragon.com/shop Profile für KayproII: KayPro_II-Profile.zip
Besserer Ausdruck der Schaltung: https://petlibrary.tripod.com/COMPVID.HTM
und lokal: 
Alle diese Ansätze hatten keinen Erfolg. Ich habe mir dahe dann das Video-Board vom Kaypro genauer angesehen.
Video Board
Toshiba Video Board. Die Bildröhre wird mit Hochspannung, die typischerweise zwischen 11.000 und 16.000 Volt liegt, betrieben. Man muss daher bei der Fehlersuche sehr vorsichtig arbeiten.
Mit meinem 40KV-Hochspannungstastkopf von Beckmann bestätigt sich
meine Vermutung: An der Bildröhre liegt keine Hochspannung an.

Zur Sicherheit wurde vor dem weiteren Arbeiten die Bildröhre sachgemäß entladen, wie auf dem folgenden Bild zu sehen. Auch dabei wurde bestätigt, dass sie nicht geladen war.

Platine wurde ausgebaut und unter der Brause grundgereinigt.


Der verwendete Zeilentransformator (flyback transformer) ist ein Toshiba “TFB1035 3129DS”. Der Zeilentransformator erzeugt die Hochspannung, und kann bei älteren Geräten kaputt gehen. Ein Ersatz ist selten zu finden und eine Reparatur kaum möglich.
Ein spezieller Chip TA7634 erzeugt auf der Platine H- und V-Signale.

Alle Elkos und alle Dioden durchgemessen, alle ok.
2SC1617 Leistungstransistor auch ok.
Dann bei genauerem Hinsehen unter der Lupe- festgestellt, dass zwei Bereiche der Platine sehr feine Risse haben. Vermutlich durch einen Sturz. Alle Risse um den Zeilentrafo herum, der ja ein sehr schweres Teil darstellt. Und tatsächlich war eine der Leiterbahnen durch einen Riss unterbrochen. Diese und einige andere angerissene Leiterbahnen wurden mit Drähten gebrückt.
Übrigens waren auf der Platinenunterseite eine Menge Farbstriche, in rot und blau, als ob schon jemand vorher eine Reparatur versucht hätte.


Gefixte Leiterbahnen:

nach dem Wiedereinbau erfolgte ein erstes Booten.
Weitere Infos zum Thema Video Hardware:
- Must see repair - https://forum.vcfed.org/index.php?threads/kaypro-ii-crt-adjustment-help.1239633/
- profiles_88-01_crt-adjusting-video-board_ocr.pdf
- TA7634AP discussion - https://forum.vcfed.org/index.php?threads/repairing-oliveti-m24-monitor.77734/page-2
- 2SC1617 power transistor ds.pdf und 2SC1617.pdf
Erstes erfolgreiches Booten
Beim langsamen Hochregeln der Betriebsspannung ab 0 Volt bis ca. 180 Volt konnte ich schon spüren, dass nun Hochspannung vorhanden war (Handrücken an der Sichtseite der Bildröhre). Beim Neueinschalten bootete das Gerät dann erstmals korrekt. Das CP/M ist komplett im ROM, und die “Arbeitsdiskette” muss im Laufwerk A: liegen.

Man sieht nun die OS-Version: “KAYPRO CP/M 2.2 (GMv3.02UII4)”. “GM” bedeutet wohl deutsche Version. Ich habe im Internet neuere deutsche Versionen gesehen, zumindest für Kaypro 10, nämlich " CP/M 2.2 (GMv3.20K10F)" hier: https://retrocmp.de/updates.htm
Deutsche ROMS: von hier http://www.retroarchive.org/maslin/disks/kaypro/kp-u-mac.zip lokal hier abgelegt: K484_ROM.zip
Deutsche BOOT Disk, mit Umlauten: kay484g.zip kommt von retrocmp.de .
Laufwerk B wirft Disketten nicht aus
Bei ersten Tests frisst B: die Disketten, sie können nicht mehr ausgeworfen werden. Der Auswurfknopf bleibt ganz eingedrückt, so dass man ihn nicht mehr bedienen kann.
Nach Ausbau des Laufwerks und Neueinfetten der Auswurfmechanik funktionierte dann auch Laufwerk B: wie es soll. Zangenspuren am Auswurfknopf deuten darauf hin, dass das Problem schon länger bestanden hatte.
Das Laufwerk ist ein “EPSON 1/2 HI Floppy” “EPSON SD-521” von 1984. Direkt Drive, daher ohne Gummi-Riemen. DS / DD 360K. “1/2 HI” bedeutet “Half Height”.


Zangenspuren aus der Vergangenheit:






DS/SS1 Jumper ist unkonventionell auf “Double Sided” gebrückt.

Leicht verharzte, und dadurch zu schwergängige Mechanik. Hier wurde zur Fehlerbehebung neu gefettet.

Tastatur
SMK Keyboard. Die Tastatur funktioniert einwandfrei. Ein 8049 Mikrocontroller macht die Arbeit, die Verbindung zum Kaypro ist eine serielle Kommunikation mit 300 Baud.




Power Supply Board
Boschert XL60-3601


Messung: +5V, +12V, -12V sind vorhanden. Gemessen am Motherboard-Connector.
Platine kann RIFA-Kondensatoren enthalten, nämlich C1, C3, C4. Leider kann man in meinen Fotos diese nicht sehen, so dass ich mir das noch einmal genauer ansehen muss. Update: es sind die drei Rifa-Kondensatoren drin, sollten gewechselt werden.
X-Kondensatoren, 250 Volt, 4700pF, Rastermaß 10mm.
Ersetzen durch Y2-Kondensatoren.
In folgendem Bild alle drei Kondensatoren:

Hier kann man schön die Risse sehen. Sie sind in allen drei Kondensatoren drin.

Netzteil ausgebaut für Kondensatortausch:

Und die ersetzten Kondensatoren. Die Risse sind nicht sehr stark, ich habe schon deutlich aufgequollenere Exemplare gesehen.


Details:
Parallel IO
Via 74373 chip(s). Für Drucker. Output only.
RTC
MM58167A chip. Batteriepufferung.
Der Kaypro MBasic Diskette liegt ein clock.bas bei, das Setzen der Uhrzeit+ Auslesen erlaubt:
https://oldcomputers.dyndns.org/public/pub/rechner/kaypro/program/mbasic/clock.bas
Es gibt ein t.com, welches die Zeit digital anzeigen kann.
Serial IO
Serial Data I/0
Es sind zwei ZSIO Chips eingebaut: ZSIO1 und ZSIO2. Jeder Chip hat zwei SIO Module.
Das interne Modem verwendet TMS99531 Dialer und TMS99532 Modem Chips.
ZSIO1:
- Channel A: Serial Data I/0
- Channel B: Keyboard
ZSIO2:
- Channel A: Serial printer I/0
- Channel B: Internal Modem
Taktgenerator Baudraten:
- WD1943
- COM8116 Sheet 1 und COM8116 Sheet 2
- Serial Data I/0 via ZSIO1, Channel A
Auf meinem Motherboard:
- U24 - WD1943
Jeder serielle Port hat zwei Register. Eines für Data IO, eines für Status.
Beim Serial Data I/O sind es die Register 04 und 06. Die Baudrate wird in Register 00-03 geschrieben.
Auf meinem Motherboard:
- U11 - Z80 SIO/0
- U17 - Z80 SIO MK3884N-4
Schaltplanauszug mit SIO für Serial I/O:

Gemäß Schaltplan wäre für einen HW Handshake RTS/CTS zuständig. Es sind aber auch die Kontakte DCD und DTR herausgeführt. Der DSR-Pin ist über einen Widerstand fest nach Vcc geführt.
RTS vom Kaypro DB25-4 ist ein Ausgang. CTS DB25-5 ist ein Eingang.
Zu den Signalnamen:
NOTE - In many publications, circuit 133 (Ready for receiving) is,
incorrectly, referred to as circuit 105 (Request to send). These two
interchange circuits are significantly different in their respective
definitions and functions. The source for confusion may be that, due
to a lack of free poles on the interface connectors standardized in
ISO/IEC 2110 and ISO/IEC 11569, both interchange circuits
are allocated to the same pole (i.e. pole 4) of these connectors.
"
Der eigentliche Grund für viele Missverständnisse
ist es also, das Signal an Pin 4 des 25poligen Steckers
RTS/105 zu nennen, obwohl es in der Funktion RFR/133 verwendet wird.
Diskussion mit Kabelbelegung Kaypro DB25<->DB9:
Serial IO Setup
- Hardware Verschaltung gemäß monitor.pdf
BAUDM.COM setzt Baudrate um, 300-19200 Baud. “M”=Modem. Es gibt auch ein BAUDP.COM, vermutlich für die serielle Drucker-Schnittstelle.
An Pin 2 habe ich TxD vom Kaypro. Pin 3 ist RxD von Kaypro. Mit Nullmodemkabel und allen nötigen 1:1-Gender-Changern geht Kommunikation mittels minicom.
- Software zum Testen: bmodem.bas, WalnutCD, /CPM/STARTKIT/BMODEM.BAS.
- Doku hierzu: ./CPM/STARTKIT/BMODEM.DOC
Weiteres zur seriellen Schnittstelle weiter unten.
Datentransfer Kaypro<->neue Welt (serielle Kommunikation)
Alle hier erwähnten Programme sind, oft im Quellcode, auf der Walnut CD Distribution unter “CPM/STARTERKIT” zu finden.
Einige habe ich lokal abgelegt, schon mit Änderungen für Kaypro:
- MBOOT3 MBOOT3.ASM
- MODEM7 Source MODM700.ASM
- MODEM7 Overlay für Kaypro M7KP-1.ASM
- MODEM7 Manual MODM700.DOC
Ein geniales Video zum Vorgehen von Null an ist hier zu sehen: https://www.youtube.com/watch?v=32oxnyERDgI
Schritt 1: rudimentäres Transferprogramm installieren (BMODEM.BAS)
Ausgangspunkt sind die Dateien:
Das Program BMODEM.BAS verwendet Register MODEM=04 und STATUS=06. Also wird der Anschluss “Serial Data I/O” verwendet.
Infos in Datei BMODEM.DOC:
THIS IS A VERY BASIC MODEM PROGRAM FOR THOSE WHO DON'T HAVE
THE PATIENCE FOR DEALING WITH MBOOT3. THE ONLY LINE THAT NEEDS
ALTERING IS 280 IN WHICH YOU PUT MODEM PORTS IN (HEX OR DEC) AND THE
RECIEVE & SEND BIT MASKS.
When you run the program it will act like a very dumb terminal
Use it to log on and setup XMODEM to send you a better modem program
or USQ. CTRL E asks you for the filename to be received. An ESC will
transmit CTRL C to the remote machine. A tilde will transmit a CTRL
S.To dial the Hayes modem enter ATDT <phone number>
Altered for the Xerox 820,820-II, and 16/8 on 12/07/84
-Arun Baheti
Das Basic Programm “BMODEM.BAS” hat bei mir so wie es war nicht funktioniert. Es dient dazu, allererste, bessere Transfer-Programme auf den Kaypro zu bringen. Leicht abgewandelt habe ich es dann doch verwenden können, um Textdateien (insbesondere die MBOOT3.ASM) auf den Kaypro zu bringen.
Unten “mein” BMODEM.BAS. Es wird ein sequenzielles File F$ erzeugt, in das zeilenweise die via RS232 einkommenden Zeichen geschrieben werden. Die Zeichen werden in einer Variablen LIN$ angesammelt. Wenn ein CR-Zeichen eintrifft, wird die Zeile ins File geschrieben. Es werden die Steuerzeichen STX und ETX verwendet. STX (Start Text) bedeutet, dass danach die Zeichen der zu übertragenden Datei folgen. ETX (End Of Text) bedeutet, dass alle Zeichen der Datei übertragen wurden.
Es war ursprünglich angedacht, auch den Zieldateinamen und eine Checksum zu übertragen und diese Kaypro-seitig zu verwenden, aber letztlich habe ich die paar Code-Zeilen nur verwendet, um das MBOOT3.ASM zu übertragen. Daher ist das BASIC-Programm in seinem Rohzustand verblieben.


Alternativer Weg mit “pipmodem”
Ähnlich BMODEM.BAS, aber als Assembler Source. Es wird ausserdem das Feature von pip verwendet, die Ein/Ausgabe umleiten zu können. PIP redirection hat bei mir nicht funktioniert.
- PIPMODEM.ASM
- PIPMODEM.DOC
- Video hierzu: https://www.youtube.com/watch?v=32oxnyERDgI
- Diskussion hierzu: https://forum.vcfed.org/index.php?threads/kaypro-serial-data-transfer.1250471/page-2
PIP redirection Infos:
- pip redirection https://mark-ogden.uk/mirrors/www.cirsovius.de/CPM/Projekte/Artikel/DFUE/SerialPIP.html
- pip redirection https://groups.google.com/g/comp.os.cpm/c/NMCrkNdxsmg
- Dieser User hat es geschafft, zumindest Ausgabe mit Kaypro - https://hackaday.io/project/20151-omni-4-a-kaypro-2x-logic-analyzer/log/67368-serial-transfer
Schritt 2: Installation von MBOOT3 (XMODEM-fähiges Download zum Kaypro)
Mit BMODEM.BAS kann man also MBOOT3.ASM auf den Kaypro ziehen.
Das Programm MBOOT3 kann XMODEM senden und empfangen. Für den Kaypro sind einige wenige Zeilen abzuändern. Hier in etwa was zu tun ist:
FASTCLK EQU TRUE ;TRUE FOR 4 MHZ CLOCK
PMMI EQU FALSE ;TRUE, IS PMMI MODEM
DCH EQU FALSE ;TRUE, IS D.C. HAYES MODEM
...
PORT: EQU 04H ;Kaypro II serial output port
MODCTL1: EQU PORT+2 ;Modem control port
MODDATP: EQU PORT ;Modem data port
MODCTL2: EQU PORT+2 ;Modem control port
MODRCVB: EQU 01H ;Your bit to test for receive
MODRCVR: EQU 01H ;Your value when receive ready
MODSNDB: EQU 04H ;Your bit to test for send
MODSNDR: EQU 04H ;Your value when send ready
...
Auf der OS-Disk ist der Assembler drauf, und assemblieren geht so:
a:asm b:mboot3.asm
# oder ohne generierung von Zwischendateien
a:asm b:mboot3.aaz
“aaz” sind hier Optionen für den Assembler…
Schritt 3: Installation eines vollwertigen Modem-Programms (MODEM7)
Es gibt mehrere denkbare Programme, u.a. Kermit. Ich habe erstmal MODEM7 probiert, und es funktioniert.
Upload der Source Dateien
CPM/MODEM7/MODM700.ASM (oder gleich MODM700.COM) auf den kaypro bringen. Ebenso das “Overlay” CPM/MODEM7/M7KP-1.ASM holen.
Falls ASM Source geholt wurde, diese übersetzen, mit asm MODM700.AAZ.
Das entstehende .HEX File in ein CMD File wandeln mittels “load MODM700.HEX”.

Nun noch das “Overlay” CPM/MODEM7/M7KP-1.ASM übersetzen, auch mit asm. Dort musste ich den Wert PMMIMODEM auf FALSE setzen.
Das Overlay M7KP-1.HEX muß ins Binary MODM700.COM implantiert werden.
In der Datei CPM/MODEM7/M7KP-1.ASM ist im Header beschrieben, wie man dieses Overlay im Binary MODM700.COM implantiert. Entgegen der Angaben sind bei “SAVE 66 …” folgendes zu nehmen “SAVE 73 …”
Danach sollte das MODEM7 laufen. Testdownloads mit Binaries waren erfolgreich.
Auf der Gegenseite habe ich minicom verwendet, mit 9600 Baud. Es scheint egal
zu sein, ob ganz ohne Flow Control oder SW Flow Control.
HW Flow Control funktioniert bisher nicht. Auch Download vom Kaypro nach Linux
geht noch nicht. MODEM7 kann nur XON/XOFF (kann man im Sourcecode sehen),
also Software Flow Control.~~
Ist dies eingeschaltet (auch auf Linux-Seite) gehen auch Downloads nach Linux.
Also beide Richtungen.



Die Kermit Version 4.11 könnte auch HW Handshake. Ist noch zu testen.
Fazit für MODEM7: Upload+Download geht mit Software Handshake. Hardware Handshake wird vom MODM700 nicht unterstützt. MODM700 hat Maximum Baudrate einstellbar auf 9600, 19200 wird nicht angeboten. Das wäre aber erstmal so ok.
Kermit
Kermit:
- Kermit everything archive - [http://www.columbia.edu/kermit/fixed/archive.html
- 4.11 läuft, kann aber zunächst aber nix übertragen…
Kermit geht mittlerweile auch. Starte Kermit auf Linux als root, ja leider wg. /var/lock-Thema. Daher gehts aus minicom heraus eben nicht.
Kermit verwendet das “Kermit” Protokoll. Dies ist nicht XMODEM oder so. Daher müssen auf beiden Seiten Kermits laufen.
Von: https://retrocmp.de/transfer/kermit.htm Die Kermit Parameter auf Kaypro-Seite:
SET SPEED 19200
SET FILE-MODE DEFAULT
SET FLOW-CONTROL OFF
SET PARITY NONE
SET LOCAL-ECHO ON
SET DIRECTORY-FILE-SIZE OFF
Der Kermit, den ich für den kaypro habe, kann nur maximal 9600 Baud. Das langt
erstmal, aber später muss ich noch die 19200 Baud Version besorgen.
Der Kermit, den ich für den kaypro habe, kann immerhin bis zu 19200 Baud. Bei den Optionen werden zwar nur Werte bis 9600 angegeben, aber man kann einfach hinschreiben:
set speed 19200
Und es funktioniert.
Aufruf auf Linux Seite:
kermit /usr/dennis/.kermrc
Die Linux-seitig verwendete .kermrc:
set line /dev/ttyUSB0
set speed 19200
set carrier-watch off
set handshake none
set flow-control xon/xoff
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
Dann “r” für receive. Auf Senderseite dann z.B. “S .”, das sendet die komplette Diskette :-).
Man kann auch “server” auf Linux-Seite eingeben und dann Kermit komplett vom Kaypro aus steuern. Dann kann man auf dem kaypro mittels “remote ” Kommandos absetzen, die der Linux-Kermit ausführt. Beispiel “remote DIR” und “remote type ”. Es gibt viele schöne Wege nach Rom.

Retro File/Image handling
LBR
Archive Format von CPM (eines von vielen).
- Installiere lbrate - https://www.svgalib.org/rus/lbrate.html
- https://github.com/ogdenpm/mlbr
IMD (und weitere Disk Image Formate)
Installiere:
- libdsk https://www.seasip.info/Unix/LibDsk/index.html
- cpmtools (rufe ./configure –with-libdsk auf) https://github.com/lipro-cpm4l/cpmtools
libdsk installiert einige Tools, deren Name alle mit “dsk” beginnen.
Das .IMD Format konnte ich mit cpm* Tools nicht direkt lesen. Man kann aber mittels “dskconv” von IMD nach RAW konvertieren. Damit können cpm* Tools dann umgehen.
# Konvertiere von IMD nach RAW
dskconv -otype raw KAYPRO1.IMD KAYPRO1.RAW
Input driver: IMD file driver
Output driver:Raw file driver (alternate sides)
# Beispiel:: cpmls
./cpmls -f kpiv -T raw -d KAYPRO1.RAW
ASM COM : BASICLIB REL : CONFIG COM : COPY COM
D COM : DDT COM : DPLAY BAS : DUMP ASM
DUMP COM : ED COM : FAC BAS : LOAD COM
MFDISK COM : MOVCPM COM : OVERLAYB COM : PIP COM
SBASIC COM : SSCOPY COM : STAT COM : SUBMIT COM
SYSGEN COM : USERLIB REL : XAMN BAS : XSUB COM
ST COM : STDOW COM : BAUDP COM : TERM COM
BAUDM COM
# Manchmal fehelen Dateien, das hier geht besser:
cpmls KAYPRO1.RAW
# also ganz ohne args
# Eine andere Disk...
dskconv -otype raw Kaypro_4_Wordstar.imd Kaypro_4_Wordstar.raw
Input driver: IMD file driver
Output driver:Raw file driver (alternate sides)
# Wieder 'cpmls'
../cpmtools-2.23/cpmls -f kpiv -T raw -d Kaypro_4_Wordstar.raw
WS COM : WSOVLY1 OVR : WSMSGS OVR : WS INS
WINSTALL COM : PRINT TST : MAINDICT CMP : TW COM
SPELL COM : REVIEW COM : MARKFIX COM : FIND COM
LOOKUP COM : ANAGRAM COM : WC COM : DICTSORT COM
WORDFREQ COM : HOMONYMS TXT : HYPHEN COM : HYEXCEPT TXT
UPDICT CMP
Ich möchte nun eine 360KB Kaypro Image erstellen, dass im Emulator läuft. Ausgangsmaterial ist eine IMD Datei BORTP20.IMD mit 180KB…
Mit cpmcp:
% dskconv -otype raw BORTP20.IMD BORTP20.raw
% ls -l
insgesamt 816
-rw-r--r--. 1 dennis dennis 162477 14. Apr 2007 BORTP20.IMD
-rw-r--r--. 1 dennis dennis 256256 13. Mai 17:20 BORTP20.raw
cpmls BORTP20.IMD
0:
mc-mod00.inc
mc-mod01.inc
mc-mod02.inc
mc-mod03.inc
mc-mod04.inc
mc-mod05.inc
mc.hlp
mc.pas
mcdemo.mcs
read.me
tinst.com
tinst.dta
tinst.msg
tinstmsg.ovr
tlist.com
turbo.com
turbo.msg
turbo.ovr
turbomsg.ovr
cpmls ../BORTP20.raw
0:
mc-mod00.inc
mc-mod01.inc
mc-mod02.inc
mc-mod03.inc
mc-mod04.inc
mc-mod05.inc
mc.hlp
mc.pas
mcdemo.mcs
read.me
tinst.com
tinst.dta
tinst.msg
tinstmsg.ovr
tlist.com
turbo.com
turbo.msg
turbo.ovr
turbomsg.ovr
% cpmcp BORTP20.raw 0:* .
% ls
BORTP20.IMD mc.hlp mc-mod02.inc mc-mod05.inc tc301.imd tinst.msg turbo.com turbo.ovr
BORTP20.raw mc-mod00.inc mc-mod03.inc mc.pas tinst.com tinstmsg.ovr turbo.msg
mcdemo.mcs mc-mod01.inc mc-mod04.inc read.me tinst.dta tlist.com turbomsg.ovr
# Es geht aber auch ohne "raw" direkt aus dem IMD file heraus:
mkdir x
cd x
cpmcp ../../BORTP20.raw 0:* .
ls
mcdemo.mcs mc-mod00.inc mc-mod02.inc mc-mod04.inc mc.pas tinst.com tinst.msg tlist.com turbo.msg turbo.ovr
mc.hlp mc-mod01.inc mc-mod03.inc mc-mod05.inc read.me tinst.dta tinstmsg.ovr turbo.com turbomsg.ovr
cpmcp blankddds.logdisk content/* 0:
cpmls blankddds.logdisk
0:
mc-mod00.inc
mc-mod01.inc
mc-mod02.inc
mc-mod03.inc
mc-mod04.inc
mc-mod05.inc
mc.hlp
mc.pas
mcdemo.mcs
read.me
tinst.com
tinst.dta
tinst.msg
tinstmsg.ovr
tlist.com
turbo.com
turbo.msg
turbo.ovr
turbomsg.ovr
% mv blankddds.logdisk tc301.logdisk
—- > tc301.logdisk ist aber leider defekt, so geht es nicht
Lösung: Hinweis aus dem Netz, verwende format.jar von hier: http://sebhc.durgadas.com/mms89/format.jar
% java -jar format.jar
Usage: format [options] <file> [format-options]
format show [options] [format-options]
format list
Options:
files=d = preload image with files from directory 'd'
h8d=file = preload image from H8D image
imd=file = preload image from IMD image
td0=file = preload image from TD0 image
nores = Do not reserve hidden blocks (breaks cpmtools)
hdos = Setup disk for HDOS
lab=str = (hdos only) disk label string
list = List all known formats
show = Show geometry(s) (do not format)
("hdos" with "h8d=" zeroes volume ID)
Format-Options:
5 | 8
DD | SD
DS | SS
DT | ST
MMS | Z17 | M47 | Z37 | Z47 | Z67 | Z37X | Z47X | Kaypro | HiDens
# Wir probieren es:
% java -jar format.jar files=../disk-images/TurboPascal/content test.logdisk Kaypro 5 dd ds
Formatted test.logdisk successfully.
Reserved hidden directory blocks
Preloaded partition 0 from /home/dennis/kaypro4/emulator/../disk-images/TurboPascal/content, 19 files
Das erzeugte logdisk-File funktioniert im Emulator. Das Beispiel mit TurboPascal hat gezeigt, wie man aus einem 180KB-Image ein funktionsfähiges 360K Image erzeugt!
Turbo Pascal
dBASE II
Dem Computer lag eine Original-Diskette dBASE 2.4 bei. Die Datendisketten enthalten einige Datenbanken.
https://jefftranter.blogspot.com/2014/04/running-dbase-ii-on-cpm.html
Emulatoren
Beispiel: Durgadas Emulator. Eine Java-Applikation. Sie akzeptiert das Einbinden von Floppy-Images im “logdisk” (“SectorFloppyImage” Raw Format).
- Emulator JAR: http://sebhc.durgadas.com/kaypro/VirtualKaypro.jar
- Disk File: http://sebhc.durgadas.com/kaypro/disks/kaypro-cpm22g.logdisk
- Viele weitere Disks: http://sebhc.durgadas.com/kaypro/disks/
- format.jar: http://sebhc.durgadas.com/mms89/format.jar
Weiter oben ist unter “Retro File/Image Handling” beschrieben, wie man mit den Tools format.jar/cpmtools/libdisk (disk*) solche Floppy-Images unter Linux erzeugen kann.
Ein leeres Floppy Image ist z.B. blankddds.logdisk von http://sebhc.durgadas.com/kaypro/disks/ .
Solch ein Image kann aber auch das Tool “format.jar” selbst erzeugen, und dabei
schon optional Dateien ins Image hineinkopieren.
Vorgehen:
Virtual Kaypro Quick-Start Guide
Operational Note: To mount a diskette on a drive, use either the "Disks"
menu or click on the associated area on the front panel. A floppy drive
area on the front panel will become highlighted when the mouse pointer
moves over it. A file selection dialog will allow selection of a
floppy disk image. To remove a diskette from a drive (leaving the drive
empty), select the "Unmount" checkbox and click the CANCEL button.
Example 1: Kaypro 4/84
A quick example to run a Kaypro 4/84.
Create a working directory, change to that directory.
Download VirtualKaypro.jar
Download disks/kaypro-cpm22g.logdisk
Start the virtual computer:
java -jar VirtualKaypro.jar 4/84
The ROM should show the splash message. It will quickly show "I cannot read your diskette.".
Click on drive A to open dialog, select "kaypro-cpm22g.logdisk".
Reset the computer by selecting "Reset" in the "System" menu.
The virtual computer should boot CP/M 2.2G.
java -jar VirtualKaypro.jar 4/84
No config file found
No Monitor ROM specified, using 81-292a.rom
mounted 5" floppy /home/dennis/kaypro-cpm22g.logdisk: sides=2 tracks=40 spt=10 DD=yes RW

- http://sims.durgadas.com/kaypro/kaypro.html
- https://forum.vcfed.org/index.php?threads/a-proper-kaypro-emulator.1256420/
- https://github.com/ivanizag/izkaypro
- ROMs - https://github.com/eneilson-zz/izkaypro/tree/main/roms
4 Floppies anschliessen
Basisinformationen in Micro Cornucopia #21, 12/1984: Micro_Cornucopia_21_Dec84.pdf , dort Seite 45.
Kabel herstellen: https://retrocmp.de/fdd/general/floppy-cable.htm
Info mit PCB https://retrocmp.de/kaypro/kay-p2_hrdw.htm#kII-4drives
- Gerber Datei https://retrocmp.de/dwnld/plus-4_decoder_v1-1.zip
- und LOKAL: plus-4_decoder_v1-1.zip
DD Board: https://aisler.net/40ek05-spurtikus/sandbox/plus-4-decoder-v1-1-kaypro-t-brase/board?revision_no=2
Abchecken (kopiert von https://retrocmp.de/kaypro/kay-p2_hrdw.htm#kII-4drives):
Important notes:
(1) This PLUS4 board I constructed based on the pictures above works fine in
my modified Kaypro II. The decoder should also work in the
Kaypro 4 ('83), because both boards are nearly the same.
(2) It does NOT work with the Kaypro 10 because the (floppy)
DRIVE SELECT B signal is used by the system to access the hard disk.
(3) You must use a 63K CP/M. You possibly have to reconfigure
your CP/M with MOVCPM and SYSGEN.
(2) ist kein Problem für meinen 4/84, da ohne HD. Für (1) ist zu prüfen, ob beim 4/84 alles wie beim 4/83 ist. Ich denke schon. Für (3) muss ich checken, was dafür zu tun ist. Unabhängig davon brauche ich ein ROM, welches die 4 Drive-Selects unterstützt.
Gotek Floppy
- https://www.youtube.com/watch?v=kWjjKSXMqYk
- https://github.com/imsaiguy/Kaypro
- Welche Gotek Versionen sind geeignet? - https://github.com/keirf/flashfloppy/wiki/Gotek-Models
FlashFloppy is directly compatible with most Gotek devices
with a 34-pin header, all of which share the SFR model prefix
(eg SFR1M44-U100K, SFRM72-U100;
Gotek devices have featured three generations of MCU:
STM32F105,
Artery AT32F415, and
Artery AT32F435.
If buying a new Gotek you are most likely to receive one of
the Artery models, and of these I highly recommend the 435!
Harddisk
50-poliger Anschluss auf MoBo vorhanden. Historisch kann dieser Anschluss mit einem WD1002 Disk Controller verbunden werden. Einige MFM-Drives können damit verbunden werden. Disk-Größen waren damals so 5-11MB. Mit verbesserten 3rd Party ROMs konnten größere Disks angesprochen werden. Wenn eine HD eingebunden wird, kann das 2. Floppy-LW nicht mehr verwendet werden. Man benötigt dann eine HW-Erweiterung, die aus 2 Drive Select Signalen vier solche Signale macht. Dann gehen wieder 3 (sogar 3) Floppies und 1 HD.
WD1002-05_Winchester_Controller_19xx_Western_Digital.pdf
ZCPR3
- Intro - http://kc85.info/index.php/morrow-owners-review/113-the-wonderful-world-of-zcpr3.html
- Für Kaypro (10) - https://dflund.se/~pi/cpm/files/ftp.mayn.de/pub/cpm/archive/kaypro/k10z33/ geht aber auch auf non-HD-Kaypros. Installationsfile: https://dflund.se/~pi/cpm/files/ftp.mayn.de/pub/cpm/archive/kaypro/k10z33/instal10.doc.txt
- …
Wifi Modem
Noch anzusehen:
Status
Offene Todos:
ROMs auslesendoneVideomodul reparierendoneLaufwerk B: fixen und Wiedereinbau LaufwerkdoneErsetzen Ventilator durch leises ExemplardoneDownload vom Kaypro funktioniert bisher nicht (MODEM7), warum?doneAnalyse, warum HW Handshake nicht geht und Lösung hierfürdoneVorgehen für Datentransfer Kaypro<->neue WeltdoneErsetzen Batterie für UhrdoneHerumspielen mit der mitgelieferten Software und dem SystemdoneWechseln der drei Rifa-Kondensatoren (4700pF) in der PSUdone- 4-Floppy Hack; vorher abchecken:
- welches ROM dafür erforderlich ist
- Kompatibel mit Original-ROM?
Hilfen für Reparatur
- Hardware Details (retrocmp.de) - https://retrocmp.de/kaypro/kay-p2_hrdw.htm#video
- Repair Manual - kaypro150dpigrayscale.pdf
Weiterführendes
Manuals:
- User Guide (KUG_7_9_May_1984)
- Kaypro Users Guide Addendum mit wichtigen Ergänzungen
- KayproOperation.pdf
- Technical Manual - 1484-D_KayproTechnicalManual_Dec84.pdf
- Technical Manual - 1484-E_KayproTechnicalManual_Ch1-15_Jun85.pdf
- Technical Manual - 1985_1484-E_KayproTechnicalManual.pdf
- Schaltplan - Kaypro_II_schematics.pdf
- CPM OS Manual (July 1982)
- MITE User Guide (7 9 1985 F
- ONLINE: https://kayprojournal.com/index.php/Kaypro_Manuals
- profiles_88-01_crt-adjusting-video-board_ocr.pdf
Historisches
- MicroCornucopia Magazine - https://archive.org/details/microcornucopia
Werbung, Artikel, Reviews:
- mc_14_Oct83_The-Kaypro.pdf
- Artikel - kaypro2_de.pdf
Links:
- Top Site - https://retrocmp.de/kaypro/kay-p0_info.htm
- Top Site 2 - https://kayprojournal.com/
- Kaypro (2) FAQ - https://retrocmp.de/kaypro/kay-p21_faq.htm
- Bitsavers Verzeichnis - https://www.bitsavers.org/pdf/kaypro/
- https://community.element14.com/members-area/personalblogs/b/blog/posts/kaypro-10-with-mfm-hard-drive-reader-emulator
- PSU - https://www.classic-computers.org.nz/blog/2010-01-15-fixing-blown-caps-on-kaypro.htm
- http://ftp.oldskool.org/pub/drivers/Miscellaneous/vintagecomputer.ca/files/Kaypro/Kaypro%20Review%20from%20Byte.htm
- http://www.z80.eu/kaypro.html und https://ftpmirror.infania.net/sites/www.z80.eu/kaypro.html
- https://www.classic-computers.org.nz/ und https://www.classic-computers.org.nz/blog/2010-03-24-kaypro-software-acquisition.htm
- https://www.microcodeconsulting.com/z80/index.htm
Video topics:
-
Video Forum Discussion https://forum.vcfed.org/index.php?threads/how-does-the-kaypro-video-work.1238108/
-
https://forum.vcfed.org/index.php?threads/kaypro-4-83-graphic-overlay.78458/
-
Composite video - https://retrocmp.de/kaypro/tcj_74_composite-video.pdf
-
https://forums.parallax.com/discussion/120749/kaypro-ii-green-screen-analog-monitor
-
Graphics Enthusiast on kaypro hardware deep dive - https://www.chrisfenton.com/exploring-kaypro-video-performance/
-
Deep Dish 9 - https://www.chrisfenton.com/dd9-kaypro-edition/
-
Good old doc “Kaypro Graphics” - https://web.archive.org/web/20190218181203/http://skookumpete.com/KayproGraphics.htm
-
Another deep dive - https://www.dougmahugh.com/scs-draw/
Youtubes:
- https://www.youtube.com/watch?v=dqPSVG7zbs4
- https://www.youtube.com/watch?v=nlJoUjOot6M
- https://www.youtube.com/watch?v=X_Izotl9EMY
- https://www.youtube.com/watch?v=6AaXQMqcxm8
- https://www.youtube.com/watch?v=JiEQsFsECIs
ROMs:
- http://www.retroarchive.org/maslin/roms/index.html
- https://www.mrynet.com/FTP/os/Kaypro/kaypro_roms/
Dokumentierte BIOS / CPM Sourcen (und vieles mehr)
Z80 CPU:
Kayplus:
Software:
- Software Manuals: https://kayprojournal.com/index.php/Kaypro_Manuals
- Intro to software - Intro_to_software_7_9_Mar_1984.pdf
- incl Kermit and ROMs - http://www.retroarchive.org/maslin/disks/kaypro/index.html
- https://www.mrynet.com/kaypro/software.html and index file: https://www.mrynet.com/FTP/os/Kaypro/Dists-2/00-index.txt
- https://oldcomputers.dyndns.org/public/pub/archiv/maslin/masl-dsk/images-97/kpro/index.html
- MS Basic User Guide MS_Basic_UG_8.5_11_full.pdf
- CBasic User Guide CBasic_Manual_7_9.pdf
- Wordstar_Mailmerge_Users_Guide_Jul_1985.pdf
- Sourcen: https://dflund.se/~pi/cpm/files/ftp.mayn.de/pub/cpm/archive/kaypro/
- Walnut CD - https://oldcomputers.dyndns.org/public/pub/cdrom/walnut_creek_cdrom/00-index.txt
- http://www.gaby.de/ftp/
- https://www.bitsavers.org/bits/Kaypro/
- IMDs - http://dunfield.classiccmp.org//img42841/system.htm
Programming:
- https://kayprojournal.com/images/2/23/Graphics_Programming.pdf
- and here: https://kayprojournal.com/index.php/Graphics_Programming
- RS232 Connection - monitor.pdf
- CRT + RS232 DOC - kaypro.doc
BASIC:
- BASIC-80 MBASIC Manual - BASIC-80_MBASIC_Reference_Manual_text.pdf
C:
- Aztec C https://www.aztecmuseum.ca/compilers.htm
- Aztec C Manual (Local) Aztec_C_1.06_User_Manual_Mar84.pdf
- Hi-Tech C Compiler https://techtinkering.com/2008/10/22/installing-the-hi-tech-z80-c-compiler-for-cpm/
- Editor VEDIT https://github.com/johnsonjh/VEDIT
Word Star Keyboard Overlay:

CP/M generell:
- Playing with CP/M – part 1 - https://eerielinux.wordpress.com/2025/12/12/playing-with-cp-m-part-1/
- Playing with CP/M – part 2 - https://eerielinux.wordpress.com/2025/12/30/playing-with-cp-m-part-2/
- https://www.seasip.info/Cpm/index.html
- Tim Olmstead Memorial Digital Research CP/M Library - https://www.cpm.z80.de/drilib.html
- Meine eigenen Infos zu CP/M beim Amstrad NC100/200
Datentransfer:
- pip, STAT VAL: etc. https://forum.vcfed.org/index.php?threads/kaypro-serial-data-transfer.1250471/
- RS232 Connection - monitor.pdf
- pip… .asm https://dflund.se/~pi/cpm/files/ftp.mayn.de/pub/cpm/archive/kaypro/
- http://cpmarchives.classiccmp.org/cpm/Software/WalnutCD/index_dirHTML.html
- https://oldcomputers.dyndns.org/public/pub/cdrom/index.html
Gotek: