{home}Li-Pro.Net{/home}
Das Familiennetzwerk
Home | Stephan Linz | Projekte | Hobby | Kontakt | Nutzerzugang


Inhalt

> Allgemeines
> CPMTOOLS, FDUTILS und YAZE
> PC/M Tools

CP/M for Linux (CPM4L)

Werkzeugsammlung rund um CP/M unter Linux

"CP/M for Linux", alias CPM4L, ist eine angehende Sammlung von freien Werkzeugen rund um das Thema CP/M. Die hier zusammengefassten Werkzeuge sind allesamt frei im Sinne von Open Source und speziell für das Betriebssystem Linux zusammengestellt. Der Komfort der hier für Linux vorgestellten Werkzeuge ist oft mit denen unter DOS nicht vergleichbar, immerhin handelt es sich dabei um ausschließlich freie Programme. Da der Einarbeitungsaufwand doch beträchtlich sein kann und sich die Erzeugung der Programme aus den Quellen heraus diffizil gestalten kann, habe ich eine Tool Chain auf Basis von RPM Paketen aufgesetzt. Unter dem Namen "CP/M for Linux" werden sich so nach und nach alle von mir verwendeten und ausgetesteten Werkzeuge zum Thema CP/M unter Linux wiederfinden.

Inhalt


1 Paketübersicht
2 Installation
3 Neuerstellung aus den Quellen
4 Aussichten

1 Paketübersicht

cpm4l-base-0.2-20050323.i586.rpm

Basispacket (Laufzeitumgebung)
rpm, 8.1K, 05/11/24, 1713 downloads

Besispaket (Laufzeitumgebung)

cpm4l-base-0.2-20050323.src.rpm

(Quellpaket)
rpm, 133.6K, 12/04/05, 1294 downloads

Quellen: Besispaket (Laufzeitumgebung)

cpm4l-fdutils-5.5-20050323.i586.rpm

Floppy Disk Werkzeug
rpm, 84.9K, 12/04/05, 1513 downloads

Floppy Disk Werkzeug

cpm4l-fdutils-doc-5.5-20050323.i586.rpm

(Dokumentationspaket)
rpm, 664.4K, 12/04/05, 999 downloads

Dokumentation: Floppy Disk Werkzeug

cpm4l-fdutils-5.5-20050323.src.rpm

(Quellpaket)
rpm, 183.6K, 12/04/05, 1595 downloads

Quellen: Floppy Disk Werkzeug

cpm4l-cpmtools-2.4-20050323.i586.rpm

CP/M Dateisystem Werkzeug
rpm, 68.2K, 12/04/05, 1829 downloads

CP/M Dateisystem Werkzeug

cpm4l-cpmtools-doc-2.4-20050323.i586.rpm

(Dokumentationspaket)
rpm, 18.9K, 12/04/05, 1445 downloads

Dokumentation: CP/M Dateisystem Werkzeug

cpm4l-cpmtools-2.4-20050323.src.rpm

(Quellpaket)
rpm, 136K, 12/04/05, 2175 downloads

Quellen: CP/M Dateisystem Werkzeug

cpm4l-yaze-1.14-20050324.i586.rpm

Yet Another Z80 Emulator
rpm, 100.7K, 12/04/05, 1379 downloads

Yet Another Z80 Emulator

cpm4l-yaze-doc-1.14-20050324.i586.rpm

(Dokumentationspaket)
rpm, 21.8K, 12/04/05, 1814 downloads

Dokumentation: Yet Another Z80 Emulator

cpm4l-yaze-1.14-20050324.src.rpm

(Quellpaket)
rpm, 131.8K, 12/04/05, 1940 downloads

Quellen: Yet Another Z80 Emulator

cpm4l-pcmtools-20050419-20050424.i586.rpm

PC/M Werkzeuge
rpm, 158.2K, 12/04/05, 1398 downloads

PC/M Werkzeuge

cpm4l-pcmtools-20050419-20050424.src.rpm

(Dokumentationspaket)
rpm, 165.1K, 12/04/05, 1888 downloads

Quellen: PC/M Werkzeuge

cpm4l-libdsk-1.1.4-20050323.i586.rpm

Diskettenbibliothek ( E X P E R I M E N T A L )
rpm, 51.5K, 12/04/05, 1293 downloads

Diskettenbibliothek

cpm4l-libdsk-tools-1.1.4-20050323.i586.rpm

(Werkzeugpaket)
rpm, 14.2K, 12/04/05, 2199 downloads

Werkzeuge: Diskettenbibliothek

cpm4l-libdsk-doc-1.1.4-20050323.i586.rpm

(Dokumentationspaket)
rpm, 249.3K, 12/04/05, 1230 downloads

Dokumentation: Diskettenbibliothek

cpm4l-libdsk-devel-1.1.4-20050323.i586.rpm

(Entwicklungspaket)
rpm, 58.9K, 12/04/05, 2004 downloads

Entwicklung: Diskettenbibliothek

cpm4l-libdsk-1.1.4-20050323.src.rpm

(Quellpaket)
rpm, 702.4K, 12/04/05, 978 downloads

Quellen: Diskettenbibliothek

cpm4l-cpmtools-2.4-20050323_libdsk.i586.rpm

CP/M Dateisystem Werkzeug mit LIBDSK ( E X P E R I M E N T A L )
rpm, 67.6K, 12/04/05, 1714 downloads

CP/M Dateisystem Werkzeug mit LibDsk Benutzung

cpm4l-cpmtools-doc-2.4-20050323_libdsk.i586.rpm

(Dokumentationspaket)
rpm, 18.9K, 12/04/05, 1792 downloads

Dokumentation: CP/M Dateisystem Werkzeug mit LibDsk Benutzung

cpm4l-cpmtools-2.4-20050323_libdsk.src.rpm

(Quellpaket)
rpm, 136.2K, 12/04/05, 1859 downloads

Quellen: CP/M Dateisystem Werkzeug mit LibDsk Benutzung

cpm4l-yaze-ag-2.01-20050325.i586.rpm

Yet Another Z80 Emulator AG Version ( E X P E R I M E N T A L )
rpm, 1.4M, 12/04/05, 877 downloads

Yet Another Z80 Emulator (Andreas Gerlich Version)

cpm4l-yaze-ag-doc-2.01-20050325.i586.rpm

(Dokumentationspaket)
rpm, 78.7K, 12/04/05, 1263 downloads

Dokumentation: Yet Another Z80 Emulator (Andreas Gerlich Version)

cpm4l-yaze-ag-2.01-20050325.src.rpm

(Quellpaket)
rpm, 1.3M, 12/04/05, 882 downloads

Quellen: Yet Another Z80 Emulator (Andreas Gerlich Version)

2 Installation

Je nach Wunsch werden die notwendigen RPM Pakete aus der Paketübersicht aus Abschnitt 1 herunter geladen. Für eine minimale und von mir bisher auch halbwegs getestete Umgebung sind mindestens folgende Pakete notwendig:
  • Basispacket (Laufzeitumgebung)

  • Floppy Disk Werkzeug

  • CP/M Dateisystem Werkzeug

  • Yet Another Z80 Emulator

  • PC/M Werkzeuge

Hierbei sind die Dokumentationspakete nur zur Vollständigkeit wichtig. Die Quellpakete werden nur für die Kurzanleitung in Abschnitt 3 benötigt. Alternativ können zu einigen Paketen auch die experimentellen Weiterentwicklungen installiert werden. Oft benötigen diese noch andere von mir bisher kaum untersuchte/geprüfte Programmteile, wie z.B. die Diskettenbibliothek LIBDSK für die CPMTOOLS. Alle hier genannten experimentellen Pakete sind ebenfalls in der Paketübersicht in Abschnitt 1 enthalten.

Die RPM Pakete werden nach dem herunter laden mit Rootrechten installiert. Dabei muss die Reihenfolge eingehalten werden, da die Pakete teilweise aufeinander aufbauen. In vielen Linux Distributionen kann man hierzu spezielle grafische Werkzeuge benutzen, wie z.B. YAST(2) unter SuSE Linux. Da ich die RPM Pakete von CPM4L so weit wie möglich unabhängig von einer speziellen Linux Distribution halten will, werde ich hier nur kurz eine Anleitung für die Kommandozeile angeben. Diese funktioniert dann in aller Regel immer, vorausgesetzt, das Verwaltungswerkzeug rpm ist vorhanden und voll funktionsfähig.

Alle RPM Pakete sind ausführbar auf Pentium Systemen und wurden erstellt und getestet unter Mandrake Linux 10.0. Die Installation erfolgt durch:
[user@host downloads]$ su -
Password:
[root@host downloads]# rpm -hiv cpm4l-base-0.2-yyyymmdd.i586.rpm
Preparing...            ########################################### [100%]
   1:cpm4l-base         ########################################### [100%]
[root@host downloads]# rpm -hiv cpm4l-fdutils-5.4-yyyymmdd.i586.rpm
Preparing...            ########################################### [100%]
   1:cpm4l-fdutils      ########################################### [100%]
[root@host downloads]# rpm -hiv cpm4l-cpmtools-2.1-yyyymmdd.i586.rpm
Preparing...            ########################################### [100%]
   1:cpm4l-cpmtools     ########################################### [100%]
[root@host downloads]# rpm -hiv cpm4l-yaze-1.14-yyyymmdd.i586.rpm
Preparing...            ########################################### [100%]
   1:cpm4l-yaze         ########################################### [100%]
[root@host downloads]# rpm -hiv cpm4l-pcmtools-yyyymmdd-yyyymmdd.i586.rpm
Preparing...            ########################################### [100%]
   1:cpm4l-pcmtools     ########################################### [100%]
[root@host downloads]# rpm -hiv cpm4l-*-doc-*.rpm
Preparing...            ########################################### [100%]
   1:cpm4l-cpmtools-doc ########################################### [ 33%]
   2:cpm4l-fdutils-doc  ########################################### [ 66%]
   3:cpm4l-yaze-doc     ########################################### [100%]
[root@host downloads]# exit
[user@host downloads]$ _
Durch das Basispaket cpm4l-base werden einige systemnahe Setupscripte installiert, die bei jedem Login abgearbeitet werden. Um sicherzustellen, dass alle hier gemachten Beschreibungen funktionieren, sollte man sich jetzt als Root abmelden und gleich wieder als normaler Benutzer anmelden und mit diesen Rechten alle weiteren Operationen durchführen. Dieser muss natürlich lesende und schreibende Erlaubnis auf Diskettenlaufwerke /dev/fd0 und/oder /dev/fd1 besitzen. Das lässt sich am Besten über Gruppenrechte erreichen. Viele Linux Distributionen sind dafür schon vorbereitet.

Die Pakete cpm4l-fdutils und cpm4l-cpmtools sind bereits mit Konfigurationen für Robotron CP/M Diskettenformate, speziell die vom PC/M, ausgestattet und voreingestellt. Mit der Benutzung und dem Umgang mit diesen Werkzeugen beschäftigt sich ein witerer Artikel von mir: "CPMTOOLS und FDUTILS zusammen mit YAZE".

3 Neuerstellung aus den Quellen

Sollten aus Gründen fehlender Binär- oder Systemkompatibilität die vorgefertigten Pakete nicht verwendbar sein, kann man mit folgenden Angaben aus den Quellpaketen eigene Binär- und Dokumentationspakete erzeugen. In aller Regel kann dieser Schritt als unproblematisch angesehen werden, da in den Quellpaketen bereits alle notwendigen Schritte und eventuell notwendige Fehlerkorrekturen enthaltet sind. Die Quellpakete werden in Abschnitt 1 in der Paketübersicht mit aufgelistet und müssen zuvor von dort herunter geladen werden. Danach werden die Pakete mit Hilfe des Verwaltungswerkzeuges rpm neu übersetzt, wobei man die Reihenfolge für die aufeinander aufbauenden Pakete berücksichtigen muss; z.B. ist das experimentelle Paket cpm4l-cpmtools-2.4-yyyymmdd_libdsk von der zuvor übersetzten (und installierten) Diskettenbibliothek cpm4l-libdsk abhängig!

In vielen neueren Linux Distributionen muss für die Verarbeitung von RPM Quellpaketen (*.src.rpm) das Kommandowerkzeug rpmbuild anstatt rpm benutzt werden. Daher werde ich hier nur noch mit rpmbuild arbeiten. Die Argumente sind aber identisch zum ehemaligen Aufruf über das Kommando rpm selbst. Die Neuübersetzung muss nicht zwangsläufig mit Rootrechten ausgeführt werden, insofern man sich das Verwaltungswerkzeug rpm (bzw. rpmbuild) über die persönliche Konfigurationsdatei ~/.rpmmacros im Heimatverzeichnis entsprechend eingerichtet hat. Hier ein abstraktes Beispiel zum Adaptieren:

~/.rpmmacros

%_topdir                                <users_home>/RPM
%_tmppath                               %{_topdir}/tmp
%_signature                             gpg
%_gpg_path                              <users_home>/.gnupg
%_gpg_name                              <users_gpg_key_string>
%_unpackaged_files_terminate_build      1
%debug_package                          %{nil}
Wie bereits erwähnt, werden dei RPM Quellpakete mit dem Kommando rpmbuild übersetzt. Für das Besispaket (Laufzeitumgebung) sehe die Kommandozeile folgendermaßen aus:
[user@host downloads]$ rpmbuild --rebuild cpm4l-base-0.2-yyyymmdd.src.rpm

...
...
...

Nach erfolgreicher Neuübersetzung, kann das am Ende der Übersetzung angezeigte RPM Binärpaket mit Rootrechten installiert werden. Äquivalent wird mit allen anderen Quellpaketen umgegangen. Die Installation des(der) neuen Binärpaket(e) kann bei vielen Paketen entfallen, insofern nicht Teile davon zur Übersetzung anderer CPM4L Quellpakete benötigt werden. Entsprechende Fehlermeldungen über Konflikte zu benötigten Paketen sollten also ernst genommen und entsprechend aufgelöst werden! Hat man vor, die selbst erzeugten RPM Pakete sowieso zu installieren, dann kann man das nach jeder Neuübersetzung immer sofort machen und geht damit Problemen aus dem Weg.

4 Aussichten

Je nach meinem Zeitrahmen werde ich mich in Zukunft verstärkt der Bereitstellung von Hochsprachen wie Pascal, C und Modula-2 witmen. Diese Compiler liegen heute nur noch als lauffähige CP/M Programme vor, müssen also auf einem Fremdsystem wie Linux innerhalb eines Emulators ausgeführt werden. Das Ziel ist somit die transparente Kapselung solcher Programme innerhalb eines CP/M Emulators, damit die Programmaufrufe wie gewöhnliche Linux Programme aussehen und innerhalb von GNU Makefiles oder Shellscripten benutzt werden können. Ob hierfür der bereits untersuchte Emulator YAZE bzw. AZE-AG geeignet ist, wird sich zeigen. Eventuell werden auf diesem weg auch noch andere Emulatoren Einzug in CPM4L halten.

Ferner wird die Thematik PC/M ebenso mit nachdruck behandelt. Zusätzlich zu den bereits integrierten PC/M Tools, welche auch weiter ausgebaut werden, sollen in naher Zukunft alle PC/M Systemquellen zusammen mit einem geeigneten Z80 Assembler und Linker für Linux bereitgestellt werden.

Autor:Stephan Linz
Revision:2021/01/14 - 00:04 - © Li-Pro.Net