Hardware

Zur Nutzung von CP/M ist ein Floppylaufwerk sinnvoll. Es ist auch möglich, CP/M ganz ohne Disketten auszuprobieren (→ Mini-CP/M-System), zum „richtigen“ Betrieb gehört aber ein Floppylaufwerk.

2010: Neu ist die Lösung mit dem Megamodul: Direkt im Mega-Modul steckt ein Mini-CP/M CPM, was ohne Floppys arbeitet. Mit einem Floppy-Modul, z.B. dem Modul für den BIC (gejumpert auf Z9001 und ohne EPROMs), einem umgebauten 3,5„-Laufwerk (s. http://honi.hucki.de/), und der Systemdiskette CPMZ9R.TD0 aus cpm-disks.zip kann mit BOOT CP/M von Diskette gestartet werden. Da in dieser Minimalkonfiguration nur 48K RAM zur Verfügung stehen, ist der TPA-Bereich kleiner als bei der u.a. Lösung mit zusätzlichem 64K-Modul, aber es reicht für viele Programme aus.

Als professionelle Varianten für den Betrieb von CP/M am Z9001 gibt es mindestens zwei Lösungen:

  • die „Diskettenstation“ von Robotron (drei Module + Diskettenbeistellgerät)

cpm-module-robotron.jpg

  • die drei Rossendorfer Module

eprom_5285.0010.jpg 64k_aussen.jpg floppy_5285.0020.jpg

Die Robotron-Variante basiert auf den Entwicklungen aus Rossendorf.

Eine Beschreibung dieser Systeme gibt es unter Beschreibung.

Beide Lösungen bestehen aus den gleichen drei Modulen (diese sind hardwaremäßig unterschiedlich realisiert, haben aber die gleiche Funktion):

  • ein BOOT-ROM-Modul: Das ist ein spezielles 10K-ROM-Modul, das abschaltbar ist, so dass der parallel dazu vorhandene RAM anstelle des ROMs genutzt werden kann (vergleichbar mit der Modul-Technik am KC-85/3).
    Im ROM-Modul steckt ein 2K großer „Bootstrap-Lader“. Dieses Programm enthält Treiber für das Floppy-Modul und lädt das eigentliche CP/M (eine CP/A-Implementierung) von der Boot-Floppy in das RAM-Modul, schaltet das Boot-Modul ab und initialisiert das CP/M.
  • Das 64K-RAM-Modul: Dieses Modul enthält RAM-Speicher von 4000h-E7FFh. Damit wird kein 16K-RAM-Modul benötigt. außerdem ist der Bereich von 4000h-7FFFh doppelt vorhanden. Dieser „Schatten-RAM“ wird vom CP/M-BIOS genutzt. Hier wir ein Großteil des BIOS abgelegt, außerdem befindet sich in diesem Bereich der Floppy-Disk-Puffer. Damit ist der im Hauptspeicherbereich liegende Teil des BIOS bedeutend kleiner und so steht viel mehr Speicher für CP/M zur Verfügung (d.h. ein größerer TPA-Bereich).
  • Das Floppy-Modul: An das Floppy-Modul werden 2 Floppy-Laufwerke (5 1/4-Zoll oder 3 1/2-Zoll) angeschlossen. Beide Module arbeiten mit dem U8272 (D765)-Floppy-Controller.

Weitere Lösungen sind aus der Literatur namentlich bekannt, leider fehlen weitergehende Informationen. Neben originaler Arbeit mit Floppies gibt es auch Lösungen, CP/M-Programme von Kassette zu nutzen. Beispielsweise können mit dem Zusatzmonitor ZM3 diverse CP/M-Programme in einer CP/M-BDOS-Emulation ausgeführt werden. Prinzipiell reicht eine beliebige (K1520-Bus-komaptible) Floppy-Karte aus (etwa vom Z1013), das 48K-CP/M muss nur im BIOS an diese konkrete Karte angepasst werden.

Von Robotron gab es zumindest Enwicklungsmuster eines Floppy-Moduls, eines Bootmoduls und eines dazugehörigen 64K-RAM-Moduls sowie ein Beistellgerät für 2 Floppy-Laufwerke (5 1/4“, max. 800 KByte).

Unterlagen zu den Robotron-Modulen gibt es auf den Seiten von U. Zander http://www.sax.de/~zander/ (Hobby»Z9001»Module»Diskettenbeistellung). Hier gibt es ebenfalls Bilder der originalen Module:

  • boot-Modul 1.6640.01090
    Mit einem Schreibzugriff auf Adresse FC00h wird der ROM abgeschaltet. („LD (0FC00h),A“)
    Mit einem Schreibzugriff auf Adresse F800h wird der ROM zugeschaltet. („LD (0F800h),A“)
    Nach Reset ist der ROM eingeschaltet.
    Der Adress-Bereich des ROM-Moduls ist C000h-E7FFh.
  • 64K-RAM-Modul 1.6640.02080
    Das Modul wird über I/O-Adressen abgesteuert
    Schreibzugriff auf Port 04h: Vordergrund-RAM aktiv (Bank 1)
    Schreibzugriff auf Port 05h: Hintergrund-RAM aktiv (Bank 2, Shadow-RAM)
    Schreibzugriff auf Port 06h: Abschaltung RAM-Bereich C000H-E7FFh (RAM ist nur beschreibbar (W/O))
    Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich C000H-E7FFh (RAM ist les- und schreibbar (R/W))
    Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich C000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv)
  • Floppy-Moduls 1.6640.02050 (meine bestückte Leiterplatte, s.a. weitere Module
    Das Modul wird über I/O-Adressen abgesteuert
    Port 98h: FDC Datenregister
    Port 99h: FDC Steueregister
    Port 0A0h: einfacher FF-Port (D175) (Motor Laufwerk 0 ein/aus, Motor Laufwerk 1 ein/aus, Terminal Count aktivieren/deakt., FDC Reset)

boot-modul_1_6640_01090_aussen.jpg 64k-ram.jpg fdmodul.jpg
Boot-Modul (außen und innen), 64K-RAM-Modul, mein Floppy-Modul mit 5 1/4„-Laufwerk K6301

Der Z9001 wird mit allen 3 Modulen bestückt (und evtl. noch ein Drucker-Modul gesteckt). Er meldet sich nach dem Einschalten mit „CPM-System>“. Mit „BOOT“ wird die Datei @CPMZ9.COM von der Boot-Diskette geladen und gestartet.

Anschluss der Laufwerke

ich nutze jetzt (2008) zwei 3,5“-Floppies vom Typ TEAC FD-235HF 4291. Anstelle eines 5 1/4„-Laufwerkes ist es günstiger, ein (leicht modifiziertes) 3.5“-Laufwerk zu nutzen. Die 3.5„-Disketten sind kleiner, robuster und leichter erhältlich.HONI hat eine ganze Webseite diesem Thema gewidmet http://honi.hucki.net/ ! Auch auf der Webseite von U. Zander http://www.sax.de/~zander/ und beim KC-Klub http://www.iee.et.tu-dresden.de/~kc-club/ gibt es Hinweise dazu.

An den TEAC FD-235HF 4291 ist A-B-2 und C-D-2 gejumpert (bei Laufwerke als Drive 0; die Zuordnung als Laufwerk A oder B erfolgt über das Kabel). Das Kabel ist etwas aufwändiger als bei der Rossendorfvariante, deshalb gibt es eine Beschreibung zum Kabel und folgende Bilder.

floppy4.jpg
Mein aktueller Stand (März 2008):
Ein 64K-Modul (Umbau eines 16K-Moduls durch U. Zander), mein Floppy-Modul und zwei 3,5“-LW sowie ein Boot-Modul (Umbau eines ROM-Moduls durch U. Zander).
Die Laufwerke stecken in einem Floppyrahmen aus einem alten PC. Das obere Laufwerk ist A, darunter B. Anstelle des 3.5„-A kann ich an den Steckverbinder auch mein 800K-5 1/4“-Laufwerk anschließen.
Das Kabel ist aus einem PC-Floppy-Kabel so gebaut, dass es zwei Laufwerke unterstützt. Dazu sind die Leitungen 10-13 an Laufwerk B vertauscht, und das drive-select Signal wird an das jeweilige Laufwerk geleitet. Wenn man auf Laufwerk B verzichtet, muss nix am Kabel verändert werden. Mein Floppy-Modul 1.6640.02050 ist mit einer männl. Buchse bestückt, deshalb sieht es bei mir wohl mit Pin1 und Pin13 vertauscht aus. Als Gegenstück ist am Floppykabel ein Aufpressstecker (weibl.) dran, wo ich die einzelnen Kabel alle so hingebogen habe, dass sie am richtigen Anschluss landen. In originalen Modulen gehört der weibl. Steckverbinder zur Floppy auf die Platine)

Ansonsten hilft ein Blick in den Stromlaufplan (U. Zander → z9_fdc_s.pdf) und in die Beschreibung der Diskettenstation (U. Zander → z9_disk.pdf).

Noch ein Hinweis: Das Netzteil des Z9001 hat genug Power, um ein 1.6er Laufwerk mit anzutreiben. Deshalb habe ich die benötigten Spannungen gleich mit am Modul herausgeführt.

Um 1988-1989 wurde am Zentralinstitut für Kernforschung der DDR, in Rossendorf von Dr. Frank Schwarzenberg und Dr. Fromm eine Implementierung das CP/A für den Z9001 entwickelt Beschreibung. In der Zeitschrift Mikroprozessortechnik gab es dazu einen Informations- und Nachnutzungsbeitrag mp 02/89, S.57.

Das Floppy-Modul aus Rossendorf ist im Gegensatz zur Robotron-Variante völlig anders aufgebaut (8 MHz, 4 Floppies anschließbar), bis auf die Portadressen aber gleich ansteuerbar. Auch die anderen beiden Module sind funktionskompatibel zu den Robotron-Äquivalenten.

eprom_5285.0010.jpg

Von links nach rechts: Eprom-Modul 5285.0010, 64K DRAM 5285.0015, Floppy-Disk-Modul 5285.0020, s.a. mp 02/89, S.57. Die Module stammen aus dem Besitz von Alexander Schön. Bei ihm gibt es auch weitere Unterlagen zu den Rossendorf-Modulen und Software.

  • EPROM-SCHALTBAR-Modul 5285.0010
    Mit einem Schreibzugriff auf Adresse FC00h wird der ROM abgeschaltet. („LD (0FC00h), A“)
    Mit einem Schreibzugriff auf Adresse F800h wird der ROM zugeschaltet. („LD (0F800h), A“)
    Nach Reset ist der ROM eingeschaltet.
    Der Adress-Bereich des ROM-Moduls ist C000h-E7FFh.
  • 64K-DRAM-Modul 5285.0015
    Das Modul wird über I/O-Adressen abgesteuert
    Schreibzugriff auf Port 04h: Vordergrund-RAM aktiv (Bank 1)
    Schreibzugriff auf Port 05h: Hintergrund-RAM aktiv (Bank 2, Shadow-RAM)
    Schreibzugriff auf Port 06h: Abschaltung RAM-Bereich C000H-E7FFh (RAM ist nur beschreibbar (W/O))
    Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich C000H-E7FFh (RAM ist les- und schreibbar (R/W))
    Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich C000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv)
  • FLOPPY-DISK-CTRL-Modul 5285.0020
    Das Modul wird über I/O-Adressen abgesteuert
    Port 10h: FDC Datenregister
    Port 11h: FDC Steueregister
    Port 12h: Terminal Count aktivieren

Die Kabelbelegung des Floppymoduls wurde so gewählt, dass ein Flachbandkabel vom Modul zum Floppy genommen werden kann:

cpmross_stecker.jpg cpmross_stecker2.jpg
Modul von hinten, (auf dem Kopf stehend!) Stecker für Floppy (von hinten)


Eigenbaukabel

Zum Selbstbau kann man auch einfach ein altes PC-Floppy-Kabel nehmen. Das verdrehte Ende für das zweite Laufwerk wird abgeschnitten, ebenso der Pfostenstecker am Ende zum Motherboard. Es bleibt ein Kabel ohne Verdrehungen übrig. Nun biegt man einige Leitungen am abgeschnittenen Ende beginnend mit 1 (rote Markierung) hoch: 2 hoch, 8 bleiben, 1 hoch, 2 bleiben, 2 hoch, 3 bleiben, 1 hoch, 5 bleiben, 1 hoch, 5 bleiben, 1 hoch, 3 bleiben. Die bleibenden Leitungen werden nun auf den Steckeverbinder im Modul aufgepresst.

Die Stromversorgung des Laufwerks erfolgt über einen TGL-Stecker. Nimmt man ein Standard-PC-Stromversorgungskabel, so kommen die Kabel wie folgt an das Modul, beginnend an der Gehäuseseite: gelb (12V), schwarz (GND), rot (5V). (Im Bild ist ein anderes (originales) Kabel zu sehen!!!)

Der Z9001 wird mit allen 3 Modulen bestückt (und evtl. noch ein Drucker-Modul gesteckt). Er meldet sich nach dem Einschalten mit „CPM-System>“. Mit „CPM“ wird die Datei @CPMZ9.COM von der Boot-Diskette geladen und gestartet.

Das 192K-Modul bzw. dessen Software ist für nativen und auch direkten CP/M-Betrieb vorbereitet. Leider ist diese Software nicht verfügbar. (Sie wurde von L. Elßner nicht komplett programmiert.)

Ich habe aber - aufbauend auf der Rossendorfer Lösung - ein BIOS geschrieben, das mit dem Robotron-Floppy-Modul arbeitet. Das 192K-Modul ersetzt das 64K-RAM-Modul und das BOOT-Modul. Mit dem bereits im Modul gebrannten CP/M-Starter BOOT wird

cpm-vp.jpg cpm-vp2.jpg

wie bei den obigen Lösungen eine Datei @CPMZ9 von Diskette geladen und gestartet. Als Alternative zum speziellen 64K-RAM-Modul werden in meiner Lösung die RAM-Speicherbänke des 192K-Moduls genutzt. Es steht sogar noch eine 24K-RAM-Disk zur Verfügung!

Eine weitere Variante ist der CP/M-Betrieb mit dem Floppy-Modul für den BIC. Die neuaufgelegte Platine von U.Zander ist durch Jumper auf 100% Kompatibilität zum robotron-Floppy-Modul umsteckbar.

Auf das Bootmodul kann man verzichten, wenn der Umbau des 64K-RAM-Moduls und des BIC-Floppy-Moduls nach einer Schaltung von J. Felgentreu erfolgt. Es wird lediglich 1 zusätzlicher Widerstand benötigt!

Das Floppy-Modul für den BIC besitzt einen Steckplatz für einen ROM. In diesen wird der BOOT-ROM gesteckt. Eine kleine zusätzliche Schaltung sorgt dann für das Abschalten des ROMs und die Freigabe als RAM-Bereich.

Details s. http://felgentreu.dyndns.org/Projekt/kc87.HTM


umgebautes BIC-Floppy-Modul mit BOOT-ROM, umgebautes 64K-RAM-Modul

Das Steuersignal zum Abschalten des ROMs wird vom RAM-Modul über die Signalleitung 27 an das Floppy-Modul durchgeleitet. Deshalb müssen diese Module in der Reihenfolge RAM-Modul - Floppy-Modul gesteckt werden!

Modul im KC87

Der Umbau umfaßt folgende Anpassungen zum Orginalkonzept:


Anpassung des 64K RAM Modules zur Teildecodierung der Adresse und zur Generierung des /ROMDI Signales (nur KC85.1 und KC87)


Anpassung des Adressdecoders auf dem FDC Modul und Installation eines Bootroms (U2764) auf der Adresse C000-C7FF