cpc4x

Amstrad CPC Emulator für X11

(c) 1999, 2000, 2001, Ulrich Cordes

Dokumentation

(Design und aktualisiert von David Mehrmann)


0. Inhalt


0.  Inhalt

1.  Über cpc4x
  1.1 Im Überblick
  1.2 Was ist ein CPC
  1.3 Was ist ein CPC Emulator

2.  cpc4x Übersetzen
  2.1 Vorgehen
  2.2 Was wird zum Übersetzen benötigt

3.  Benutzung von cpc4x
  3.1 Schnelleinstieg
  3.2 Spezielle Tastaturzuweisungen PC->CPC
  3.3 Funktionstasten
  3.4 Die Komandozeilen-Parameter
  3.5 Der Setup-Dialog
  3.6 Die Konfigurationsdatei .cpc4xrc
  3.7 Der integrierte Z80-Debugger

4.  Software für den cpc4x
  4.1 Wie macht man CPC-Software auf dem Emulator nutzbar?
  4.2 Links zum Thema CPC

5.  History
  5.1 Was geht mit dem Emulator und was geht nicht
  5.2 Entstehungsgeschichte von cpc4x
  5.3 Programm-Author und Mitwirkende

6.  Kopierrechte und Haftungsausschluß


 

1. Über cpc4x

1.1 Im Überblick


Die Abkürzung cpc4x steht für CPC-for-X. Dieses Programm emuliert die Heim-Computer Schneider CPC 464, CPC 664 bzw. CPC 6128. Es ermöglicht, die Programme der CPC's auf UNIX-ähnlichen Plattformen unter der grafischen Benutzeroberfläche X11 weiter zu benutzen.

Für die Dialoge, z.B. zum Aussuchen und Einlegen der Disketten-Abbild-Dateien, verwendet der Emulator die Skript Sprache TcL/Tk. Diese ist jedoch nicht zwingend erforderlich. Ist bei Ihnen TcL/Tk nicht installiert, wird der Emulator automatisch auf das Text-Interface der Shell, mit der Sie cpc4x gestartet haben, zurückgreifen und Sie darüber zu Eingabe auffordern.

 

 

1.2 Was ist ein CPC?


Der CPC ist ein 8 Bit Heim-Computer, der 1984 von der Firma AMSTRAD entwickelt und produziert wurde. Da AMSTRAD damals kein internationales Vertriebsnetz besaß, wurde der CPC z.B. in Deutschland über der Firma Schneider verkauft. Der CPC erhielt somit auch den Namen Schneider CPC. Die Abkürzung CPC bedeutet "Colour Personal Computer".

Zu dieser Zeit waren die meisten Heim-Computer mit etwa 16 bis 64 kByte RAM bestückt, hatten Folien- oder Radiergummi-Tastaturen und benötigten Fehrnseher, an die man sie anschließen mußte. Der Sinclair ZX Spectrum war z.B. einer dieser Computer.
 
 

CPC 464 Der erste CPC (hier ein Foto), genannt CPC 464, hatte eine recht gute Tastatur, ein eingebautes Kassetten-Laufwerk und man konnte ihn wahlweise mit einem Grün- oder einem Farbmonitor kaufen. Sein Herz war ein Z80A Microprozessor und seine Seele 64kBytes RAM plus 32 kByte ROM. Extern konnte über ein Interface ein 3" Disketten-Laufwerk angeschlossen werden, somit war der CPC ein ernstzunehmender Konkurrent zum Commodore 64.

In der ersten hälfte des ROM's war das Betriebssystem des CPC untergebracht und in der zweiten das sehr gute Locomotive BASIC 1.0. Das ROM wurde parallel zum RAM betrieben und bei Bedarf ein- oder ausgeblendet.

Der Video Chip kennt 3 Standard-Modi (Nicht-Standard-Modi sind auch möglich). Da wären 20x25 Zeichen bei 160x200 Bildpunkten und 16 Farben, 40x25 Zeichen bei 320x200 Bildpunkten und vier Farben sowie 80x25 Zeichen bei 640x200 Bildpunkten und zwei Farben. Mit Hilfe von Software Tricks können diese Modis auch gemischt werden. Zudem besitzt der CPC echten Stereo-Sound, den andere 8 Bit Computer nur vortäuschten.

Da der CPC 464 nur ein eingebautes Kassetten Laufwerk hatte, mußte es eine Möglichkeit geben eine externe Floppy anzuschließen. Das DDI-1 3" Floppy Disc Laufwerk, ebenso von Amstad gebaut, wird über ein externes Interface, welches hinten auf den Expansionsport aufgesteckt wird, angeschlossen. Als Software gab es das Betriebssystem CP/M 2.2 (Control Program for Microcomputers) und Dr.LOGO mit dem Disketten-Laufwerk dabei. Im Interface ist der Floppy-Disk-Controller sowie ein zusätzliches ROM für das CPC-Basic eingebaut. Auf eine Seite der 3"-Disketten passen etwa 170 kBytes Daten. Bei zwei Seiten macht das etwa 340 kBytes.

Die zweite Generation folgte im Frühjahr 1985, mit dem CPC 664. Er hatte an Stelle eines Kassetten-Laufwerkes ein eingebautes 3" Disketten-Laufwerk. Natürlich konnte man an ihm extern auch ein Kassettenlaufwerk anschließen und somit kompatibel bleiben.

Ansonsten war er mit dem CPC 464 nahezu identisch. Als er hergestellt wurde, war nicht sicher welches Floppy-Format (3", 3.5" oder 5.1/4") sich durchsetzten würde. AMSTRAD entschied sich das 3" Laufwerk. Auch das Keyboard hatte sich mit einem gräulich-blauen Look etwas verändert. Der CPC 664 hatte ebenso wie sein kleiner Bruder 64 kByte RAM (42 kB unter BASIC) sowie 48 kBytes ROM. Die zusätzlichen 16 kBytes ROM enthielten das Disketten-Betriebssystem welches dem CPC neue BASIC-Befehle für Diskettenzugriffe zur Verfügung stellte. Der CPC wurde so ausgelegt, daß an ihm theoretisch 4MB ROM angeschlossen werden konnten! Das wäre dann aber wohl der Overkill!?!

Die dritte Generation erweckte AMSTRAD schon gegen Ende des Jahres 1985 zum Leben. Der Nachfolger des CPC 464 und 664, hieß CPC 6128 und besaß zweimal soviel RAM, nämlich 128 kBytes! AMSTRAD hielt an den 3" Laufwerken fest, so daß es auch diesem CPC eingebaut wurde. Neben dem Betriebssystem CP/M 2.2 lieferte AMSTRAD diesen Rechner auch mit dem für eben diese 128 kBytes konzipierte CP/M Plus aus.

Auch hier war ein externes Kassetten-Laufwerk anschließbar, Kompatiblität war somit gewahrt. Jedoch sind nicht alle Programme, die für den 6128 geschrieben wurden, garantiert auch auf den CPC 464 oder 664 lauffähig, weil es neben den größeren RAM-Speicher auch ein paar Erweiterungen im BASIC gab. Dem RAM-Problem konnten Besitzer der CPC 464 und 664 jedoch mit einer RAM-Erweiterung auf bis zu 576 kBytes aus dem Wege gehen.


Die CPC Monitore hatten eine angepaßte Auflösung und verarbeiteten die VIDEO Signale des CPC wesentlich besser als ein Fehrnseher das je konnte. Es gab entweder einen Grün- oder einen Farbmonitor mit dabei, der wie im Bild direkt mit dem CPC verbunden wurde. Im Grunde mußte man den CPC an den Monitor anschließen, denn der Monitor war zugleich auch die Stromversorgung des CPC. Später dann gab es auch HF-Modulatoren, ein zusätzliches Gerät, mit dem man den CPC auch einen normalen Farbfehrnseher anschließen konnte.

Der CPC hatte einen I/O-Expansion-Port, einen Centronics-Port mit nur 7 Daten-Bits, einen Joystick-Anschluß an dem man bis zu 2 Joysticks anschließen konnte sowie einen Stereo-Audio-Ausgang. Alle drei Generationen sind zum größten Teil untereinander kompatibel.

 

 

1.3 Und was ein CPC-Emulator?


Cpc4x ist ein Programm welches die Hardware der AMSTRAD/Schneider CPC in Software emuliert. Das bedeutet, Sie benötigen keine Original-Hardware, um Programme, die für den CPC geschrieben wurden, auf modernen Systemen zu benutzen.

Die Hardware, die ein CPC-Programm zum laufen benötigt, wird hier einfach virtuell zur Verfügung gestellt. Alle Computer brauchen z.B. mindestens einen Prozessor (CPU). Cpc4x nutzt eine Zilog Z80 CPU Emulation als Herzstück. Diese virtuelle CPU wird mit den selben Instruktionen und Befehlen gesteuert wie eine echte CPU.

Ihre Befehle erhält eine CPU aus dem Speicher-Bausteinen RAM und ROM. Hier erhält die virtuelle CPU ihre Befehle aus virtuellem RAM bzw. aus ROM-Dateien. Somit macht die virtuelle CPU genau das Gleiche wie die echte CPU im CPC.

Das ist eine recht einfache Erklärung für so einen komplexen Prozess. Um das Unmögliche möglich zu machen, muß der Emulator exakt so programmiert sein, daß die emulierte CPC Hardware genau dem der Original Hardware entspricht, bis in die trickreichsten Details.

Imagine a computer - INSIDE of another computer

Der echte CPC nutzt normale 3" Disks und Kassetten um Daten zu speichern und wieder zu laden. Wie bereits erwähnt, ist es nicht nötig echte CPC-Hardware mit dem Emulator zu benutzen. Es existiert Software, mit deren Hilfe Sie einzelne Disketten als Abbild auf der Festplatte ihres Computers speichern können. Diese Abbilder, auch Disk-Images genannt, können vom Emulator aus wie echte Disketten genutzt werden, in dem man sie in das emulierte Disk-Laufwerk 'einlegt'.


 

2. cpc4x übersetzen

2.1 Vorgehen

Wenn Sie den Emulator übersetzen möchten, lesen Sie sich bitte die Datei README_GERMAN.txt in dem Quelltext-Packet durch. Hier werden zwei Methoden beschrieben, wie sie den Emulator übersetzen können. Die erste Methode als System-Administrator (root) für eine system-globale Installation und die zweite als Einzel-Benutzer, falls Sie keine administrativen Rechte auf Ihrem System besitzen.

 

 

2.2 Was wird zum Übersetzen benötigt


Wenn Sie den Emulator auf anderen Systemen als hier aufgelistet erfolgreich übersetzen und starten können, senden Sie mir bitte ein paar Informationen hierüber zu. Ihre Informationen werden in dieser Liste angefügt. Sie können somit anderen Benutzern helfen, die versuchen den Emulator auf dem gleichen System wie das Ihre zum Laufen zu bringen. Auch ich nehme solche Hilfe dankend an. Ferner hätte dies den Vorteil, daß ich Sie automatisch informiere, wenn eine neue Version des Emulators verfügbar ist. Die Versions-Nummern der verwendeten Komponenten des Compilers oder von make finden Sie wie folgt heraus:

Geben Sie gcc -v und make -v in einer Shell ein und lesen Sie auch die Informationen in der Datei ~/.X.err Wenn Sie TcL/Tk verwenden, finden Sie deren Verzeichnis oft unter /usr/lib/tcl* oder /usr/local/lib/tcl* und dort dann auch die verwendete Versionsnummer.
 
 
 
Intel-Linux-Voraussetzungen
    GNU C Compiler

    X-Windows-Oberfläche (X11R6)

    Ein Window-Manager Ihrer Wahl (z.B. KDE, GNOME, fvwm, AfterSTEP, Window Maker, etc.)

    Die X11-Dateien (Linux-Packet "xdevel")

    make
     

    TcL/Tk 7.6 und Tk 4.2 oder höherer Version, WENN Sie grafische Dialoge benutzen wollen.

Version:0.11 compiled on distribution: SuSE 6.2 (Jammet
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) 
XFree86 Version 3.3.3.1 ; GNU Make version 3.77 ; TcL/Tk 8.0


 

3. Benutzung von cpc4x

3.1 Wie ging das doch gleich noch? Ein Schnelleinstieg

Cpc4x können Sie aus einer Shell heraus einfach mit dem Kommando cpc starten. Wenn Sie den Emulator das erste mal starten, dann wird in Ihrem Home-Verzeichnis automatisch das Unterverzeichnis cpc/ erstellt und ein paar Daten in dieses hinein kopiert. Im Verzeichnis cpc/icons finden Sie einige Icons, die Sie für Ihren Window-Manager verwenden können.

Mit dem Start wird dann auch ein Info-Dialog angezeigt, der Sie über den Programm-Author (also mich) informiert und mit dem Sie dieses Hilfe-Dokument öffnen können. Mit dem Button Goto emulation erhalten Sie schließlich in einem Fenster die Einschaltmeldung des CPC.

cpc4x main window

Wenn der Emulator läuft, können Sie z.B. eine virtuelle Diskette in das emulierte Disketten-Laufwerk einlegen (damit meine ich kein echtes Laufwerk). Drücken Sie hierzu die Taste F3 und es erscheint ein Dialog, über den Sie dann eine Disketten-Image-Datei auswählen und diese somit 'einlegen' können. In dem cpc-Verzeichnis befinden sich schon ein paar solcher Disketten-Image-Dateien. Versuchen Sie es doch einfach mal mit "balli.dsk".

Nach dem Sie dies gemacht haben, stellen Sie sich einfach vor, sie sitzen vor einem echten CPC mit einer eingelegten Diskette. Dann gibt es den Basic-Befehl CAT, mit Sie sich den Inhalt einer Diskette ansehen können, ähnlich wie DIR unter DOS, ls -al unter Linux oder LOAD"$",8 & LIST auf dem Commodore 64.

Um das Programm BALLI.BAS zu starten, müssen Sie LOAD "BALLI.BAS" und dann RUN eingeben, wobei der Befehl RUN "BALLI" genau das Selbe bewirkt! Warten Sie nun, bis der Ladevorgang beendet ist und spielen Sie ein kleines nettes Spiel.

 

 

3.2 Spezielle Tastaturzuweisungen PC->CPC

Das Tastaturlayout der Emulation entspricht genau dem Ihres PC's bzw. dem Ihrer Unix-Workstation. Dies hat den Vorteil, daß Sie keine Buchstaben irgendwie suchen müssen. Ein paar spezielle Funktionen gibt es trotzdem noch. Bei eingeschaltetem Numlock entspricht die 10er-Tastatur des PC's genau dem 10er-Block des CPC's, bei ausgeschaltetem Numlock wird hier der Joystick nachgebildet.

CPC
PC-Tastatur
COPY
ALT
10er-Block 1
(Numlock ein) 10er-Block 1
10er-Block 2
(Numlock ein) 10er-Block 2
10er-Block 3
(Numlock ein) 10er-Block 3
10er-Block 4
(Numlock ein) 10er-Block 4
10er-Block 5
(Numlock ein) 10er-Block 5
10er-Block 6
(Numlock ein) 10er-Block 6
10er-Block 7
(Numlock ein) 10er-Block 7
10er-Block 8
(Numlock ein) 10er-Block 8
10er-Block 9
(Numlock ein) 10er-Block 9
10er-Block 0
(Numlock ein) 10er-Block 0
CPC
Emulator
Joystick 1 Hoch
(Numlock aus) 10er-Block 8
Joystick 1 Runter
(Numlock aus) 10er-Block 2
Joystick 1 Links
(Numlock aus) 10er-Block 4
Joystick 1 Rechts
(Numlock aus) 10er-Block 6
Joystick 1 Feuer
(Numlock aus) 10er-Block 5
   
   
   
   
   
   

 

 

3.3 Funktionstasten

Alle Emulator-Funktionen werden über die F-Tasten erreicht. Diese entsprechen etwa denen des DOS-CPC-Emulators CPCEMU von Marco Vieth. Mit dem kleinen Unteschied, das cpc4x dann das X11-Windows-System für die Dialoge benutzt und diese vielleicht hübscher aussehen (das ist natürlich Geschmacksache).

F1 Zeigt den INFO-Dialog. Dieser enthält Informationen über den Programm-Author (also mich), zeigt diese Liste der Funktionstasten an und bietet Ihnen die Möglichkeit, dieses HTML-Hilfedokument mit einem Browser Ihrer Wahl zu lesen.
F3 Öffnet einen Dialog zum Einlegen einer Disketten-Image-Datei in eines der emulierten Laufwerke A: oder B:. Wenn bei Ihnen kein TcL/Tk installiert ist, wird hiermit eine Diskette in A: eingelegt.
F4 Genau wie F3, nur daß hiermit das Laufwerk B: voreingestellt wird. Wenn bei Ihnen kein TcL/Tk installiert ist, wird hiermit eine Diskette in B: eingelegt.
F5 Hiermit können Sie den CPC-Sound ein- bzw. ausschalten
F6 Speichert den Bildschirminhalt des emulierten CPC's als XPM-Bild ab. Hierzu kann in einem Tcl/Tk-Dateidialog der Dateiname des Bildes eingegeben werden.
F7 Ruft den SETUP-Dialog auf. Hier können Sie die Sprache, den CPC-Typ, den Speicher, externe ROM-Dateien, den Monitor-Typ, die Komandozeile zur Druckerausgabe und den Distributor einstellen.
F8 Dies ist der RESET-Taster des emulierten CPC's
F9 Schließt die aktuelle Drucker-Datei und sendet diese zum Drucker. Danach wird eine neue Druckerdatei erstellt.
F10 Startet den integrierten Z80-Debugger
F12 Beendet cpc4x. Es sollte auch immer über F12 beendet werden, da es sein kann, daß sonst die Tastatur-Wiederholung ausgeschaltet bleibt.

 

 

3.4 Die Kommandozeilen-Parameter

Wenn bei Ihnen TcL/Tk nicht installiert ist, erhalten Sie mit der F7-Taste keinen Setup-Dialog. Jedoch können Sie dem Emulator einige Kommandozeilen-Parameter mit übergeben, so daß Sie diesen auch so nach ihren Wünschen einrichten können. Natürlich funktionieren die Kommandozeilen-Parameter auch mit installiertem TcL/Tk. Geben Sie cpc -help ein und Sie erhalten die folgende Übersicht auch in Ihrer Shell.

Parameter Bedeutung
-noinfo Startet cpc4x ohne zuerst den Info-Dialog anzuzeigen
-cpc464
-cpc664
-cpc6128
Setzt den CPC-Typ auf CPC 464, 664 oder 6128
-mem64
-mem128
-mem576
Der emulierte CPC hat 64 kbytes, 128 kbytes oder 576 kbytes RAM
-ger
-eng
-fra
Deutsch-, englisch- oder fanzösisch-sprachige Dialoge
-color
-mono
Emuliert einen Farb- oder einen Grünmonitor
-nodebug Dieser Parameter unterdrückt die Ausgabe von Debug-Informationen in einem Terminal. Dies ist dann sinnvoll, wenn cpc4x z.B. über ein KDE-Icon gestarted wird. Mit dieser Option kann auch der integriert Debugger nicht gestartet werden.
-help Zeigt diese Kommandozeilen-Parameter in Ihrer Shell an

Der Befehl  cpc -cpc6128 -mem576 -color -ger -noinfo -nodebug   startet einen CPC 6128-Emulator mit 576 kBytes RAM, in Farbe, mit deutschsprachigen Dialogen und ohne den Info-Dialog anzuzeigen. So ein Kommando kann auch im Zusammenhang mit einem KDE- oder GNOME-Icon benutzt werden.

Wenn Sie einen Parameter mehrfach verwenden, z.B.  cpc -mem128 -mem64, wird der letzte der beiden Parameter verwendet, also in diesem Fall die Emulation mit 64 kByte RAM gestartet.

 

 

3.5 Der Setup-Dialog

Allegemin

Der Setup-Dialog bedarf eigentlich nur wenige Erklärungen. Die meißten Parameter werden mit Check-Buttons ausgewählt, so daß Sie wohl sofort die Bedeutung Ihrer Änderungen erkennen sollten.

CPC Einstellungen

ROM-Einstellungen

Etwas näher sollten die Einstellungen für die ROM-Dateien betrachtet werden. Der CPC wurde so konzipiert, daß er bis zu 256 ROM's mit jeweils 16 kByte in den oberen Speicherbereich von 48 bis 64 kByte einblenden konnte. Verwaltet wurden diese mit Hilfe von Speicher-Bank-Umschaltung. Real genutzt wurden für den CPC meißt nur die ROMS 1 bis 7, denn diese wurden auch vom BASIC des CPC nach Befehlserweiterungen durchsucht und unterstützt. In dem ROM mit der Nummer 0 war das BASIC untergebracht und das ROM mit der Nummer 7 war für das AMSDOS-Disketten-Betriebssystem reserviert. Im Setup-Dialog können sieben ROM-Dateinamen eingegeben werden. Diese ROM-Dateien müssen sich im Verzeichnis $HOME/cpc/rom befinden. Für das ROM Nummer 7 ist schon gleich das AMSDOS-ROM eingetragen.

ROM Einstellungen

Drucker

Cpc4x gibt Drucker-Ausgaben nicht direkt an die parallele Schnittstelle weiter, sondern druckt zunächst in eine Datei. Für jede Seite, die Sie mit cpc4x drucken, wird eine neue Druckerdatei angelegt. Diese Druckerdateien befinden sich im Verzeichnis $HOME/cpc und heißen fortlaufend 000001.prn. Jedes mal, wenn das Zeichen  chr$(12)  ausgedruckt wird (dies ist der Form-Feed oder kurz FF), wird dieses Zeichen an die Druckerdatei angehängt, die Druckerdatei darauf hin geschlossen und über den Druckerspooler zum Drucker gesendet. Mit welchem Befehl die Druckerdatei dann an den UNIX/Linux-Druckerspooler geschickt wird, können Sie in dem Feld Kommandozeile für Druckerausgaben eintragen. Beispiel lpr -Praw.

Drucker Einstellungen

Es kann sein, daß der Drucker-Spooler nach dem Druck einer Seite diese auch automatisch auswirft. In dem Fall können Sie das Anhängen des FF-Zeichens an die Druckerdatei durch cpc4x unterdrücken. Somit wird nicht immer nach jeder bedrucketen Seite noch ein leeres Blatt ausgeworfen. Der CPC druckt am Ende jeder Zeile die beiden Zeichen Wagenrücklauf (LF) und Zeilenvorschub (CR). Es ist möglich, daß Ihr Druckerspooler mit dem Wagenrücklauf auch gleichzeitig einen Zeilenvorschub durchführt. Dies hat zur Folge, daß zwischen jeder Textzeile eine Leerzeile gedruckt wird. In so einem Fall sollten Sie das Feld CR im Setup-Dialog markieren und somit verhindern, daß das CR-Zeichen mit gedruckt wird.

Wenn Sie cpc4x beenden oder während der Emulation die Taste F9 drücken, wird die evtl. noch geöffnete Druckerdatei geschlossen und dem Druckerspooler übergeben. Beim Beenden werden danach auch alle prn-Dateien in Ihrem cpc-Verzeichnis gelöscht.

Disketten-Images

Disketten werden von cpc4x nur virtuell behandelt. Das heißt, Sie haben in einem Unterverzeichnis diese Disketten als Images abgelegt. Nun war es aber häufig Sitte, daß am Original CPC ein externes 720 kByte Zweit-Laufwerk angeschlossen wurde. Cpc4x kann auch solche Disketten-Images verwalten, jedoch haben diese ebenfalls die Endung dsk. Damit Sie hier ein bißchen Ordnung halten können, ist es möglich für die Laufwerke A: und B: jeweils unterschiedliche Verzeichnisse anzugeben, in denen die normalen 180 kByte oder 720 kByte Disketten-Images abgelegt werden können. Somit haben Sie z.B. alle 180 kByte Disketten in einem Verzeichnis und alle 720 kByte Disketten in einem anderen Verzeichnis.

Disketten-Laufwerke

Einstellungen übernehmen

Wenn Sie auf den Button Übernehmen und Emualtion zurücksetzen werden Ihre soeben geänderten Einstellungen in der Datei .cpc4xrc in Ihrem HOME-Verzeichnis gespeichert und der CPC per Reset mit diesen Einstellungen neu gestartet. Das bedeutet, alle Daten im emulierten CPC gehen verloren!

 

 

3.6 Die Konfigurationsdatei .cpc4xrc

Die aktuellen Einstellungen speichert cpc4x in einer Konfigurationsdatei. Diese heißt .cpc4xrc, ist durch den vorangestellten Punkt versteckt und eigentlich eine Binärdatei. Sie finden diese Datei in ihrem HOME-Verzeichnis. Diese Binärdatei können Sie zwar mit einem Editor einsehen und ändern, jedoch hat ihre Syntax überhaupt nichts mit einer herkömmlichen INI-Datei zu tun. Ein Beispiel:

/usr/lib/cpc
/home/uli/cpc
1
576
 
 
 
 
 
 
amsdos.rom
disc
disc/80track
0
10
ger
2
lpr -Praw
1
0
1

Wenn Sie diese Datei ändern wollen, dann dürfen Sie dort keine beliebige Syntax benutzen und dort leider auch keine Kommentare eingeben!! Diese Datei zu ändern dürfte für Sie nur dann interessant sein, wenn Sie kein TcL/Tk besitzen und somit keinen Setup-Dialog erhalten. An dieser Stelle sollen die einzelnen Zeilen der Datei beschrieben werden:

Zeile Bedeutung
1 Installationsverzeichnis von cpc4x. Kann nicht geändert werden, da diese von den Dialogen benutzt wird.
2 Arbeitsverzeichnis von cpc4x. Kann auch nicht geändert werden.
3 Eine Variable, die nur vom Setup-Dialog benutzt wird.
4 Emulierter CPC-Speicher (64, 128 oder 576 kByte)
5 bis 11 ROM-Datei-Namen, die in der Emulation als ROM 1 bis 7 benutzt werden.
12 Standard-Verzeichnis für Disketten-Images, die in A: eingelegt werden sollen.
13 Standard-Verzeichnis für Disketten-Images, die in B: eingelegt werden sollen.
14 0=Farb-Monitor, 1=Grün-Monitor
15 Customer: 0=ISP, 2=Triumph, 4=Saisho, 6=Solavox, 8=AWA, 10=Schneider, 12=Orion und 14=AMSTRAD
16 Sprache: ger=Deutsch, eng=Englisch, fra=Französisch
17 CPC-Typ: 0=CPC 464, 1=CPC 664 und 2=CPC 6128
18 Kommandozeile für Druckerausgaben
19 1=Zeilenvorschub (CR) nicht in die Druckerdatei schreiben
20 1=Wagenrücklauf (LF) nicht in die Druckerdatei schreiben
21 1=Seitenvorschub (FF) nicht in die Druckerdatei schreiben

3.7 Der integrierte Z80-Debugger

Mit der Taste F10 starten Sie den integrierten Z80-Debugger. Hierzu müssen Sie jedoch cpc4x aus einem Terminal heraus gestartet haben. Mit dem Debugger können Sie die Emulation im Einzelschrittverfahren ausführen und die Register überwachen. Dieses Werkzeug ist nur dann sinnvoll, wenn Sie die Programmierung in Assembler beherrschen.

Zur Steuerung des Debuggers stehen Ihnen folgende Tastatur-Kommandos zur Verfügung.
Kommando Bedeutung
c Zurück zu cpc4x
[RETURN] Aktuellen Befehl einzeln ausführen.
= [addr] Haltepunkt an die Adresse [addr] setzen und bis dorthin das Programm automatisch fortsetzen.
+ [offset] Haltepunkt an die aktuelle Adresse plus [offset] setzen und bis dorthin das Programm automatisch fortsetzen.
j [addr] Zur Speicheradresse [addr] springen.
m [addr] Speicherinhalt ab der Adresse [addr] anzeigen.
d [addr] Disassemblieren und ab [addr] die nächsten 16 Z80-Quelltext-Zeilen anzeigen.
f [num] Disassembliert ab der aktuellen Adresse die nächsten [num] Z80-Quelltext-Zeilen und speichert diese in die Datei debugZ80.txt.
?,h Zeigt einen Hilfetext zum Debugger an
q Beendet cpc4x


 

4. CPC Software

4.1 Wie macht man CPC-Software auf dem Emulator nutzbar?


Am einfachsten ist es, erst mal im Internet nach Programmen zu suchen. Viele Spiele und auch komerzielle Programme findet man dort als ZIP-gepackte Disketten-Images. Diese können dann mit unzip dateiname.zip entpackt und ins disc-Verzeichnis des Emulators kopiert werden. Im Kapitel 4.2 (Links zum Them CPC) finden Sie ein paar passende Internet-Adressen.

Wenn Sie Ihre eigenen Disketten übertragen wollen, wird das Ganze schon etwas schwieriger. Sie benötigen in jedem Fall ein 3.5 Zoll- oder 5.25 Zoll-Zweitlaufwerk mit 80 Spuren (720 kByte) an ihrem CPC. Sie müssen dann zunächst Ihre Disketten auf dieses neue Format umkopieren. Mir ist nicht bekannt, ob man 3 Zoll-CPC-Laufwerke direkt an einen PC anschließen kann.

Unter UNIX/Linux gibt es den Befehl dd, mit dem beliebig formatierte Disketten in Linux-konforme Disketten-Images kopiert werden können (wenn dies der Floppy-Controller im PC auch handhaben kann). Jedoch kann cpc4x diese Images (noch) nicht lesen, so daß diese dd-Images zunächst noch in das DSK-Format der CPC-Emulatoren umgewandelt werden müssen.

Ich weiß jedoch noch nicht so genau, wie das geht!! Nur so viel, daß es für den Sinclair Spectrum Emulator xzx ein Tool namens ddtrans gibt, mit dem das wohl gehen soll. Ich muß hier erst noch ein paar Nachforschungen anstellen und bitte daher um etwas Geduld. Vielleicht baue ich das Ganze ja auch Menügesteuert in cpc4x ein.

 

 

4.2 Links zum Thema CPC

Hier sollten Sie wohl ausreichend CPC-Software finden können.

Meine eigene Homepage unter http://www.schneider-cpc.de
Ein umfangreiches FTP-Archiv mit CPC-Software in Frankreich ftp://ftp.lip6.fr/pub/amstrad
Ein weiteres FTP-Archiv mit CPC-Software ftp://ftp.nvg.unit.no/pub/cpc
Genesis8 Amstrad CPC Seite http://www.multimania.com/genesis8/indexe.html
Englisches Tutorial zum Locomotive BASIC http://www.sean.co.uk/bidea0.htm
Eine weitere deutsche CPC Seite http://www.opperer.com/ascd/


 

5. History

5.1 Was geht mit dem Emulator und was geht nicht


Die Version 1.00 kann:
 

MODE 0, MODE 1, MODE 2
Diskettenbenutzung per Disk-Image-Dateien (.dsk)
Bis zu sieben ROM-Dateien können benutzt werden.
Bis 576 kByte RAM kann mit cpc4x emuliert werden.
Sogar einige Spiele, die keine Hardware-Tricks benutzen, laufen
Drucken in Printer-Dateien
Kommandozeilen-Parameter
Grafische Oberfäche für Dialoge unter X11 mit TcL/Tk
Sound-Ausgabe
Große Disketten-Formate mit dem XDDOS-ROM
RAM-Disk mit RDOS


Was geht zur Zeit noch nicht (1.00):
 

Hardware-Scrolling ist nur Zeilenweise in vertikaler Richtung möglich
Das Erhöhen der Farbauflösung mit besonderen Tricks ist nicht möglich
Das Rollen des Borders sieht eher bescheiden aus.

.....

Wenn Sie erfahrungen mit cpc4x gemacht haben, was geht oder was nicht geht, oder wenn der Emulator abstürzt, dann können Sie mir das gerne schreiben. Mich interessiert auch Ihre Meinung.

Sie können davon ausgehen, daß alle Basic-Programme und die meisten Anwendungsprogramme laufen. Sogar einige Spiele, die keine Hardware-Tricks benutzen, laufen. Mit beiden Versionen von CP/M können Sie ebenfalls arbeiten.

 

 

5.2 Entstehungsgeschichte von cpc4x

Auf der Suche nach einem freien CPC-Emulator für Linux habe ich Ende 1998 auf der Homepage von Marat Fayzullin einen Z80-Pozessor-Emulator incl. C-Quelltext entdeckt. Weil ich keinen freien CPC-Emulator gefunden habe, beschloss ich selbst einen zu schreiben und verwendete ab März 1999 Marat's Z80-Emulation als Basis hierfür.

24.3.99 Erste Schritte mit der Z80-Emulation, Grundgerüst des Makefiles. Darstellung eines MODE 1-CPC-Screens in einem X11-Fenster mit Hilfe von XDrawPoint(). Mann war ich danach stolz!
26.3.99 Die Funktion XDrawPoint ist sehr langsam, daher wird der CPC-Screen jetzt als Image erzeugt und bei Expose sowie bei Bedarf mit XPutImage() ausgegeben. Ferner habe ich das Hauptfenster etwas größer als das Image gemacht so daß der Emu einen Border erhält.
Beschleunigung des Bildaufbaus durch die Gewinnung der X- und Y-Koordinaten aus einer Speicher- Tabelle. Dabei geht nur gelbe Farbe auf blauem Grund.
29.3.99 Erste Erfole, das System-ROM sowie das BASIC-ROM des CPC 464 einzubinden. Der emulierte CPC hängt jedoch in einem Dauer-Reset. Nach der Einschaltmeldung kommt kein READY sondern ein der Reset. Die 16-Bit-IN/OUT-Makros der Z80 Emulation in CodesED.h auf wirkliche 16 Bit erweitert.
31.3.99 Die Anpassung der Makro-Aufrufe zu den Z80-IN-Befehlen in den CodesED.h wurde von mir zubnächst fehlerhaft beseitigt. An statt die Aufrufe des Makros in CodesED.h mußte das Makro in der Codes.h selbst verbessert werden. In der mem.h wurde das RdZ80 so korrigiert, daß bei einem eingeschaltetem ROM 0 das BASIC-ROM ausgelesen wurde und nich wie bisher bei ROM-Nr. 252-255. Jetzt funktioniert die Emualtion bis zur READY-Meldung
5.4.99 Der Emulator führt jetzt 13333 Befehls-Zyklen aus, bis er die Funktion LoopZ80() anspringt. Diese Anzahl erhält man aus

BefZykl = SystemTakt / IntFreq ===> 4.000.000 / 300 = 13333

In der Funktion LoopZ80 wird jetzt die Event-Steuerung des Emulators durchgeführt. Dabei wird die Tastatur ausgewertet und die entsprechenden Zeichen an die emulierte Tastaturmatrix geschickt (es gehen noch nicht alle Tasten!!)

Der Emulator ist um einen 50 Hz-Timer ergänzt worden. Dieser wird mit jedem 6. Aufruf von LoopZ80() dazu benutzt, den Emualtor in Echtzeit zu synchronisieren. Im allgemeinen kann davon ausgegangen werden, daß der emulierte CPC (wesentlich) schneller läuft als das Original, so daß der Timer mit jedem 6. LoopZ80()-Aufruf dazu benutzt wird, die Emulation zu verzögern. Für den Anwender scheint die Emualtion demnach in Echtzeit zu laufen.

Ab jetzt können kleine Basic-Programme eingegeben und gestartet werden. Bisher geht immer noch nur Mode 1 wobei ein Hochscrollen des Bildschirms fatale Folgen auf die Bilddarstellung hat.

22.4.99 Der Emulator kennt jetzt alle drei Bildschirm-Modis und Farbe. Dabei hat mir Tim Riemann etwas unter die Arme gegriffen. Es wird etwa 10 mal je Sekunde geprüft, ob sich die Farbregister des Gate-Arrys verändert haben, und wenn dies der Fall ist, wird der Bildschirm neu gezeichnet. Dies bedeutet, daß in dem Fall der Bildschirm Pixel für Pixel neu dargestellt wird. Die Einschränkung auf etwa 10 Farbwechsel je Sekunde ist notwendig, damit der Emulator überhaupt noch läuft. Bisher ist mir jedoch das Hardware-Scrolling nicht gelungen.

Die Farbwerte habe ich mit freundlicher Genemigung der Datei cpcemu.dat, welche zu Marco Vieth's CPCEMU gehört, entnommen. Danke Marco.

20.6.99 Nach nächtelanger Forschungsarbeit ist habe ich nun endlich eine Lösung für ein zeilenweilses Hardware-Scrolling gefunden.
8.9.99 (Release 0.10) Die Sommerpause ist kaum zu Ende und die Floppy-Unterstützung ist resalisiert. Es funktionieren die wichtigsten Floppy-Befehle zum Lesen und Beschreiben von Disketten-Images.
25.10.99 (Release 0.11) Erste X11-Dialoge zum Öffnen von Disketten-Images sowie ein Setup-Dialog. Diese wurden mit TCL/Tk erstellt.
25.11.99 Ein Info-Dialog, mit der Möglichkeit, dieses Hilfedokument mit einem beliebigen Browser zu lesen.
2.12.99 (Release 0.11b) Unterstützung der Sprachen Deutsch und Englisch.
26.2.00 (Release 0.20) Druckerausgaben werden jetzt in eine PRN-Datei geschrieben. Druckt der CPC das Zeichen chr$(12), also ein Seitenvorschub, oder wird die Taste F9 gedrückt, wird die Druckerdatei geschlossen und zum Drucker gesendet.

Auswertung von Kommandozeilen-Parametern.

Neuorganisation der Verzeichnisstruktur und der Makefiles. Cpc4x kann jetzt sowohl vom Endanwender als auch durch den Benutzer root übersetzt werden. Die Übersetzung durch root ermöglicht eine systemglobale Installation von cpc4x.

Eine Umfangreiche und hübsche HTML-Dokumentation in deutsch und englisch dank David Mehrmann.

10.3.00 (Release 0.20b) Ein paar weitere Drucker-Optionen, mit denen ausgewählt werden kann, ob bestimmte Sonderzeichen mit gedruckt werden oder nicht.
13.3.00 (Release 0.20c) Verbesserungen in der Tastatur-Auswertung und -Zuweisung.

Die PRN-Dateien werden jetzt nur gelöscht, wenn auch ausgedruckt wurde. Somit gibt es beim Löschen keine Fehlermeldungen, wenn keine PRN-Dateien vorhanden sind.

16.5.00 (Release 0.21) Mit der F6-Taste kann der emulierte CPC-Bildschirm als XPM-Datei abgespeichert werden. Hierzu wird der Datei-Dialog TCL/Tk aufgerufen, in der der Name und das Zielverzeichnis der zu speichernden XPM-Datei gewählt werden kann.
21.10.00 (Release 0.22 - nicht veröffentlicht) Der CPC-Emulator unterstützt jetzt auch Sound. Hierzu gibt es eine eher lustige Geschichte, denn die Sound-Ausgabe wurde gleich zwei mal entwickelt.

  • Michael Mustun (CH) schickte mir im Frühjar 2000 eine erste Version mit Sound zu. Er hatte die Soundausgabe aus dem ATARI-ST-Emulator STonX ausgeschnitten und in meinen Emualtor eingebaut. Zudem hat er noch sehr nützliche Anpassungen an der Grafikausgabe der CPC-Emulation gemacht.

    Leider konnte ich den Autor von STonX nicht erreichen, um mir seine Zustimmung einzuholen. Somit ist hier die rechtliche Situation nicht richtig geklärt. Also konnte ich diese Sound-Version leider nicht veröffentlicht, was mir natürlich für Michaels Arbeit sehr leid tut.

    Ferner hat Michael diesen Sound in die Version 0.11 eingearbeitet. Beim Umsetzen auf meine inzwischen neuere Version 0.20c bin ich nicht so gut zurechtgekommen, so daß ich es erst mal aufgegeben hatte.

  • Dann war da noch ein Michael, der da selbst was geschrieben hat. Michael Rajot (F) schickte mir kurze Zeit später seine Version zu, die zwar noch etwas ruckelig läuft, jedoch gegenüber der STonX-Version etwas CPC-ähnlicher klingt. Weil es hier keine rechtlichen Fragen gibt, habe ich diese Version in meinem Emulator veröffentlicht.
7.1.01 (Release 0.23) Die Z80-Emulation von Marat Fayzullin unterstützte nicht die beiden illegalen Op-Codes NEG (ED-7C) und RETI (ED-7D). Ferner wurde das Refresh-Register in der Z80-Emulation nur stiefmütterlich behandelt. Beides wird jedoch z.B. vom XDDOS-ROM benötigt.

Integrierter Z80-Debugger

14.7.01 (Release 0.24) Einige Bugs in der Disketten-Controller-Emulation beseitigt. Somit kann CP/M Plus nun auch große 720 k-Disketten im Laufwerk B: lesen. Ein entsprechender Patch liegt auf einem Diskettenimage bei. Für weitere Informationen starten Sie README.COM auf dem Patch-Diskettenimage.

In den Menüs und in der Hilfe wird nun auch die französische Sprache unterstützt.

Anpassungen in den Makefiles.

 

 

5.3 Programm-Author und Mitwirkende


 

6. Kopierrechte und Haftungsausschluß

Obwohl der Emulator von mir incl. Quelltext zur Verfügung gestellt wird, bedeutet dies noch lange nicht, daß jeder damit machen darf was er (sie) will. Die Kopierrechte verbleiben bei Ulrich Cordes.

Jeder darf den Emulator auf beliebigen Systemen übersetzen und unentgeltlich benutzen. Sie müssen also hier keine Registriergebühr oder so etwas ähnliches bezahlen. Eine Weitergabe des Emulators muß im weitesten Sinne unentgeltlich erfolgen. Distributoren für Unix-, GNU- oder Linux-Betriebssysteme dürfen cpc4x in Ihrer Sammlung aufnehmen. Das gilt natürlich auch für Betreiber von FTP-Servern oder Mailboxen.

Wenn Sie Änderungen am Emulator durchführen, bitte ich Sie mir dies schriftlich oder per Email mitzuteilen. Ihre Ideen und Änderungen sind bei mir willkommen, denn nur somit kann ich diese auch in neueren Versionen berücksichtigen und cpc4x besser machen.

Dieser Emulator ist in meiner Freizeit entstanden. Daher übernehme ich keinerlei Haftung für die Funktion des Emulators bzw. auch keine Haftung für evtl. aus dessen Benutzung resultierende Schäden. Ich stelle hiermit nur ein Werkzeug meines privaten Interesses der Allgemeinheit unentgeltlich zur Verfügung.

Ferner übernehme ich auch keine Haftung für den Inhalt der Internet-Links dieses Hilfetextes. Diese Links dienen nur als Nachweis der Quellen und Hilfsmittel, die ich für die Erstellung meines Emulators benutzt habe.

Die Kopierrechte der ROM-Dateien cpc464.rom, cpc664.rom, cpc6128.rom und amsdos.rom liegen bei AMSTRAD Consumer Electronics plc. und Locomotive Software Ltd.
Marco Vieth, Autor von CPCEMU für DOS, sowie Fred Harris haben bei AMSTRAD mit Erfolg die Freigabe der ROMs für die Benutzung in Emulatoren erbeten, so daß diese auch mit cpc4x weiter gegeben werden dürfen (siehe Marco's Dokumentation zum CPCEMU).

Ich habe mal irgendwo gelesen, daß auch CP/M allgemein freigeben sein soll. Da mir jedoch die rechtliche Situation der CP/M-Disketten, die beim CPC dabei waren, noch unklar ist, liegen diese Disketten-Images dem Emulator nicht mit bei.

-Ulrich Cordes


 

Ich habe fertig!