KAYPRO KAYPRO4

Page content

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.

20260504_201715.jpg

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:

20260503_103445.jpg

20260503_103440.jpg

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) Bildschirmfoto_20260430_111402.png

Im Character ROM sind keinerlei Strings enthalten.

Details

20260429_173459.jpg

20260429_173827.jpg 20260429_173838.jpg

Die Lithium Batterie ist nach den vielen Jahren definitiv leer.

20260429_173844.jpg

Beim OS-ROM ist leider der Aufkleber abgefallen.

20260429_174013.jpg

Das Character-ROM. 20260429_173933.jpg

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: 20260430_094141.jpg

Pin 6 (5 inverted), VIDEO: 20260430_094403.jpg

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

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 alternative-composite.png

Weiterer Ansatz:

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: cmpvid.gif

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. 20260501_114512.jpg

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.

20260501_115015.jpg

Platine wurde ausgebaut und unter der Brause grundgereinigt.

20260501_120302.jpg

20260501_120451.jpg

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.

20260501_132643.jpg

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.

20260502_202959.jpg

20260502_203008.jpg

Gefixte Leiterbahnen:

20260503_094136.jpg 20260503_094149.jpg 20260503_094155.jpg 20260503_094202.jpg

nach dem Wiedereinbau erfolgte ein erstes Booten.

Weitere Infos zum Thema Video Hardware:

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.

20260503_113907.jpg

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”.

20260503_114431.jpg

20260503_114445.jpg

Zangenspuren aus der Vergangenheit:

20260503_114457.jpg

20260503_114510.jpg

20260503_114521.jpg

20260503_114531.jpg

20260503_114541.jpg

20260503_114713.jpg

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

20260503_114724.jpg

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

20260503_114845.jpg

Tastatur

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

20260512_210808.jpg

20260512_210849.jpg

20260512_210900.jpg

20260512_210919.jpg

Power Supply Board

Boschert XL60-3601

20260501_120233.jpg

20260501_120240.jpg

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:

20260519_140312.jpg

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

20260519_140401.jpg

Netzteil ausgebaut für Kondensatortausch:

20260523_105303.jpg

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

20260523_110107.jpg

20260523_110143.jpg

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:

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:

serial-schema.png

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:

https://forum.vcfed.org/index.php?threads/serial-transfer-to-from-kaypro-2x-4-to-windows-10-laptop-possible.1238429/

Serial IO Setup

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:

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.

20260510_123643.jpg

20260510_123714.jpg

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.

PIP redirection Infos:

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”.

20260510_180119.jpg

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.

20260510_181005.jpg

20260510_181012.jpg

20260510_181017.jpg

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.

kermit-linux.png

Retro File/Image handling

LBR

Archive Format von CPM (eines von vielen).

IMD (und weitere Disk Image Formate)

Installiere:

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

Siehe extra Datei

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).

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

emulator.png

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

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

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

Wifi Modem

Noch anzusehen:

Status

Offene Todos:

  • ROMs auslesen done
  • Videomodul reparieren done
  • Laufwerk B: fixen und Wiedereinbau Laufwerk done
  • Ersetzen Ventilator durch leises Exemplar done
  • Download vom Kaypro funktioniert bisher nicht (MODEM7), warum? done
  • Analyse, warum HW Handshake nicht geht und Lösung hierfür done
  • Vorgehen für Datentransfer Kaypro<->neue Welt done
  • Ersetzen Batterie für Uhr done
  • Herumspielen mit der mitgelieferten Software und dem System done
  • Wechseln der drei Rifa-Kondensatoren (4700pF) in der PSU done
  • 4-Floppy Hack; vorher abchecken:
    • welches ROM dafür erforderlich ist
    • Kompatibel mit Original-ROM?

Hilfen für Reparatur

Weiterführendes

Manuals:

Historisches

Werbung, Artikel, Reviews:

Links:

Video topics:

Youtubes:

ROMs:

Dokumentierte BIOS / CPM Sourcen (und vieles mehr)

Z80 CPU:

Kayplus:

Software:

Programming:

BASIC:

C:

Word Star Keyboard Overlay: kaypro-keyboard-overlay.jpeg

CP/M generell:

Datentransfer:

Gotek: