die Ausbaustufe CP/M ist im Buch nicht vollständig beschrieben. Die abgedruckten Programme passen nicht ganz zusammen. Das ganze ist eher ein Rezeptbuch als eine Nachbauanleitung, aber als solche ist es im Buch auch nicht gedacht. Dr. Fuhrmann hat seinen Nachbau 2019 ausgebaut und CP/M-fähig gemacht.
Vielen Dank an Dr. Fuhrmann für die Arbeit, die Bilder und die ganzen Unterlagen!
Karten von vorn nach hinten:
Der Bus ist über Flachbandkabel realisiert.
April 2020. Dr. Fuhrmann schreibt:
Die Bildschirmkarte habe ich modifiziert, mittels Jumpern kann die Platine jetzt zwischen 1kB und 2kB Bildwiederholspeicher, also 32 Zeilen x 64 Zeichen, umgesteckt werden, siehe Schaltplan. Eine ordentliche Anschlussbuchse für den Monitor gibt es noch immer nicht. Die CPU-Platine hat noch einen 4MHz Quarz bekommen, ein externes FF für die Speicherumschaltung und eine RESET-Taste. Neu sind die Platinen Einzelschrittsteuerung und natürlich die Floppy-Steuerung. Die Einzelschrittsteuerung hat eine einfache Anzeige mit einer Diode pro Bit sowie 7-Segmentanzeigen mit V40511 für Adress- und Datenbus. Als Diskettenlaufwerke benutze ich zwei nach https://honi.hucki.net/ umgebaute 3,5„-Laufwerke. Das Kramer-CP/M benutzt nur ein Laufwerk, Ihr FORMATZ beide. Die Formatierung mit Ihrem Programm, hatte ich ja bereits erwähnt, funktioniert zur Zeit nur mit dem zweiten Laufwerk.
Die Platzierung der Bauelemente auf der Floppy-Platine habe ich dem Modul von Herrn Sander nachempfunden. https://www.sax.de/~zander/index2h.html
Anbei auch die Programme.
Es gibt jetzt 4 EPROM/GAL-Versionen:
Zur Erzeugung des EPROM-Abbildes gibt es jeweils Batch-Dateien mit dem JKCemu.
CP/M
Das CBIOS/CPP/BDOS sowie der Monitor werden mittels Kopierprogramm copy2.asm (Aufruf G1000) vom EPROM in den RAM geladen. Zur Zeit wird das CP/M danach durch zwqeimaligen Sprung auf 0EA00H (CBIOS) gestartet. Dadurch wird BDOS und CPP nochmal von der Systemdiskette geladen.
Formatierung einer Diskette:
G1000 CBIOS/CPP/BDOS und Hilfsprogramme in den RAM laden.
GEA00 einmal ausführen
G8800 Disketten-init starten
Erstellung der Systemdiskette:
CBIOS/CPP/BDOS mit G1000 in den RAM laden. Im CBIOS RFLOP Call zu WFLOP ändern wie in den Kommentaren im Kramer-CBIOS beschrieben:
Mit dem S(ubstitute) Kommando dazu ab 0EB0FH
CD 6C EB CALL RFLOP ändern in CD C6 EB CALL WFLOP
und das CP/M mit GEA00 starten.Systemspuren werden auf die formatierte Diskette geschriebenkann man eine Systemdiskette erzeugen.
Einige transiente CP/M-Kommandos aus http://www.classiccmp.org/cpmarchives/cpm/Software/rlee/D/DIGITAL%20RESEARCH/CPM_2-2/SYSTEM/ habe ich zunächst nacheinander auf EPROM gebrannt, mit dem Monitorkommando Move auf Adresse 100H kopiert und dann im CP/M mit dem save-Kommando auf Diskette gespeichert. Ebenfalls auf der Diskette ist das Formatierungsprogramm aus dem Buch Disketten-Init (KRFORMAT.COM) ab Adresse 100H.
Mit dabei mein Z80-Crossassembler von 1991, mit Delphi7 neu übersetzt, sowohl für die Kommandozeile als auch mit grafischer Umgebung. Den habe ich aktualisiert, um die Listfiles zu erzeugen und bedingte Compilierung zu ermöglichen, weil das der JKCemu nicht leistet.
Alle Karten sind auf Lochrasterplatten aufgebaut und handverdrahtet (gefädelt).
Der EPROM auf der CPU-Karte ist zum einfachen Wechsel über einen kleinen Adapter nach oben herausgeführt:
Floppy-Anschluss. Zum Anzeigen der Motorsignale gibt es 4 LEDs
CP/M-Start
Informationen aus dem Buch zur dort beschriebenen Ausbaustufe CP/M.
Die orig.Programme aus dem Buch (korrigiert bzw. ergänzt) sind im Basis-Download-Paket enthalten (→ downloads)
Ausbaustufe CP/M (S.119)
Nach Einschalten ist Monitor auf 0000 ansprechbar, der RAM ist deaktiviert. Ein Sprung auf Adresse F003 schaltet den Monitor auf Adresse F000 und aktiviert den RAM.
Einbeziehung Kassetteninterface mit USART nach Bild 4.1 in die Monitorroutinen RI und WO. Das CBIOS wird von Kassette geladen.
Das Listing im Buch auf S. 199 ist falsch. Der Bereich 400h-7FFh (rechtes Listing) ist DE.ASM der originalen Version. Das kann so nicht funktionieren!!
nicht beschriebene externe Kommandos:
FDC-Laufwerk K5600.10 (MFS 1.2)
32 Records/Spur, 3 Systemspuren mit CP/M 74 Blöcke a 2K = 148K Disk
Phys. Sektoren a 256 Byte, 40 Spuren mit 16 Sektoren
RAM-Disk 7000h-BFFFh
26 Records/Spur, 20 Blöcke a 1K = 20K Disk