Nativer Zugriff auf CP/M-Disketten unter Windows XP

Auch unter Windows XP ist es möglich, nicht nur mit Disketten-Images zu arbeiten, sondern auch direkt CP/M-Disketten zu lesen und zu beschreiben!

Natürlich ist das nicht auf meinem Mist gewachsen. Es gibt 3 Quellen für die hier aufgeführten Tools:

  • Simon Owen hat eine genialen Diskettentreiber fdrawcmd.sys für Windows 2000/XP/2003/Vista/2008/7 geschrieben, der erst den physischen Zugriff auf Nicht-Dos-Disketten ermöglicht (http://simonowen.com/fdrawcmd)
  • John Elliot hat eine Bibliothek libdsk geschrieben, die den Umgang mit verschiedenen Diskettenimage-Formaten wie Teledisk, CopyQM u.a. und echten CP/M-Disketten erlaubt (http://www.seasip.demon.co.uk/Unix/LibDsk/)
  • Michael Haardt hat schließlich die cpmtools geschrieben, die das Dateisystem vom CP/M 2 und 3 beherrschen und den Zugriff auf einzelne Dateien ermöglichen.

Meine Aufgabe war „nur“, dies alles unter Windows XP mittels MINGW/MSYS zu kompilieren und zum Laufen zu bringen.

:!: Das ganze gibt es auch mit grafischer Oberfäche via Total Commander: CP/M und TotalCommander.

Alles Benötigte liegt im Download-Paket cpmtools-xp.zip bereit!

Es muss ein spezieller Treiber installiert werden, die die direkte Programmierung des Floppycontrollers (das ist ein 765er Nachfolger) unter Windows XP (und NT, 2000, 2003, …) ermöglicht.

Den Treiber gibt es bei http://simonowen.com/fdrawcmd. Es ist die Datei FdInstall.exe zu starten. Nach Ende der Installation muss der Rechner einmal neu gestartet werden, dann steht der erweiterte Treiber für Disketten zur Verfügung.

Im Gegensatz zu anderen Lösungen wie OmniFlop wird der Windows-eigene Floppytreiber nicht ersetzt, sondern es wird ein sogenannter „lower class filter“ installiert. Damit laufen alle Programme, die die Floppy nutzen, weiterhin wie gewohnt, nur der Zugriff mit den u.a. Tools erfolgt über diesen Filter.

cpm_di1.jpg cpm_di2.jpg

Nun müssen nur noch Konfigurationsdateien verschoben werden:

  • Die Datei .libdskrc muss in den Ordner „Eigene Dateien“ kopiert werden.
  • Die Datei diskdefs muss in aktuelle Arbeitsverzeichnis kopiert werden.
  • Die Programme des Download-Pakets sollten in einen Ordner kopiert werden, der in der Umgebungsvariable „PATH“ steht, z.B. c:\windows, oder in einen Extra-Ordner, der in der Umgebungsvariable „PATH“ ergänzt wird.

Das war es schon! Jetzt können die libdsk- und cpmtools genutzt werden!

Hinweis: Die Beispiel-Konfigurationsdateien sind primär für 800K-CP/A-Disketten ausgelegt, wie sie am Z9001 verwendet werden. Dieses Format ist auch als Standard hinterlegt. Damit muss man bei den Programmen nicht immer das Format mit angeben, sondern kann bei 800K-Disketten die Kurzform verwenden. Die Programme sind Kommandozeilenprogramme.

  • Umkopieren eines Teledisk-Images in ein raw-Image
> dsktrans.exe -format z9001 -itype tele -otype raw k87cpmok.td0 k87cpmok.dmp
  • Erstellen eines Disketten-Images (nutzt fdrawcmd.sys)
> dsktrans.exe -format z9001 -otype raw a: k87cpmok.dmp
  • Schreiben eines Disketten-Images auf Diskette (nutzt fdrawcmd.sys)
> dsktrans.exe -format z9001 -itype tele -otype ntwdm k87cpmok.td0 a: 
  • Erstellen eines neuen Images
> dskform -format z9001 -type raw test.dmp
  • Formatieren einer Diskette
    Nach dem Formatieren muss man die Diskette aus dem Laufwerk nehmen und neu einstecken, damit sie vom Rechner korrekt erkannt wird!
> dskform -format z9001 -type ntwdm a:
  • Auflisten eines Z9001-Diskettenimages
> cpmls -f z9001 -T tele k87cpmok.td0\\
Kurzform: cpmls k87cpmok.td0
  • Kopieren von Diskettenimage in ein Windows-Unterverzeichnis windir
    Achtung: vorhandene Dateien werden ohne Warnung überschrieben! Die CPM-Dateien werden mit „user:file.typ“ selektiert. 0:*.* bedeutet also alle Dateien von User 0
> cpmcp -f z9001 -T tele k87cpmok.td0 0:*.* windir\\
Kurzform: cpmcp k87cpmok.td0 0:*.* windir
  • Direktzugriff auf CP/M-Disketten (mit installiertem fdrawcmd.sys)
> cpmls -f z9001 a:\\
Kurzform: cpmls a:
  • Kopieren aller Textdateien von Diskette in ein Verzeichnis
> cpmcp a: 0:*.txt subdir
  • kopieren einer Textdatei auf Diskette
> cpmcp a: beispiel.txt 0:
  • Löschen einer Datei von Diskette
> cpmrm a: 0:beispiel.txt

im Download-Paket liegen die Dokumentationen aller Tools als HTML-Dateien bei. Außerdem gibt es ein Textdokument programme.txt, in dem alle Tools kommentiert sind.

Hinweis: Bei Teledisk-Images unterstützt libdsk derzeit nur das einfache Format. Teledisk-Images mit „advanced compression“ können aber mit TDCONV ins einfache Format konvertiert werden (http://www.fpns.net/willy/wteledsk.htm)

todo: Hinweise für Selbstkompilierer

24.02.10: CPMTools erneuert: Basis ist jetzt Version 2.12. Ein Fehler in meiner modifizierten libdsk-Anbindung, der dazu führte, dass einseitige Disketten falsch gelesen wurden, ist behoben.