######+ ########++ ######+ ########+ #### ####++ ##++ ##++ ##++++++ ##+++++##++ ##++++++ ##++++++ ##+## ##+##++ ##++ ##++ ##++ ##++ ##++ ##++ ##+++ ##++ ##++ ##++ ##++ ##++ ##++ ########++ ##++ ########+ ##++ +++ ##++ ##++ ##++ ##++ ##++++++ ##++ ##++++++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ##++ ######+ ##++ ######+ ########+ ##++ ##++ #########++ +++++++ ++++ +++++++ +++++++++ ++++ ++++ ++++++++++ v1.6 beta D O K U M E N T A T I O N (c) Marco Vieth 2001 DIESE ANLEITUNG ENTHÄLT NOCH NICHT DURCHGEHEND ALLE NEUEN INFORMATIONEN ÜBER DIE VERSION 1.6. ------------------------------------------------------------------------------- Inhaltsverzeichnis: 1. Einführung 1.1 Hinweise zur Benutzung dieser Dokumentation 1.2 Copyright, Gewährleistungen 1.3 Was ist ein CPC ? 1.4 Was bietet CPCEMU ? 2. Installation von CPCEMU 2.1 Dateien im CPCEMU-Paket 2.2 Voraussetzungen und Installation 2.3 Tips zum Speicher und zur Soundkarte 2.3.1 Verwenden Sie EMS-Speicher 2.3.2 Setzen Sie die BLASTER-Umgebung 2.3.3 Setzen Sie die ULTRASND-Umgebung 3. Unterschiede zum Original 3.1 Tastatur 3.2 Laden von Programmen, Menüs 3.2.1 Laden von Diskette, Menüs - Das Disketten-Wechsel-Menü - Das Datei-Auswahl-Menü 3.2.2 Laden von und Speichern auf Kassette 3.2.3 Laden und Speichern von Snapshots 4. Ändern der Konfiguration 4.1 Das Setup-Menü 4.2 Die Konfigurations-Datei 4.3 Kommandozeilen-Parameter 5. Datenübertragung CPC <-> PC 5.1 Diskette als Medium 5.1.1 Das Diskettentransferprogramm CPCTRANS 5.1.2 Das Formatier- und Kopierprogramm 22DISK von SYDEX 5.2 Parallele Schnittstelle - Der parallele Adapter 5.3 Serielle Schnittstelle 5.4 Sonstige Möglichkeiten 6. Bezugsquellen, Hilfe bei Problemen, Danksagungen 6.1 CPC Software, woher bekommen ? 6.2 Neuigkeiten, Erfahrungsaustausch 6.3 Wenn Sie Fragen oder Anregungen haben 6.4 Andere Amstrad CPC Emulatoren 6.5 Pläne für weitere CPCEMU-Versionen 6.6 Danksagungen 6.7 Geschützte Warenzeichen 7. Interne Informationen zu CPCEMU "Black Box", d.h. mit separatem Inhaltsverzeichnis Anhang: A.1 Glossar A.2 Literaturverzeichnis A.3 Index --------------------------- 1. Einführung ************** Willkommen im Reich der Emulatoren! Was, Sie wollen wissen, was CPCEMU ist? Und was man mit dem merkwürdigen Programm anfangen kann, welches bei gelber Schrift auf blauem Grund nach jeder Eingabe immer "Syntax Error" schreibt? Also, um Ihnen langes Suchen zu ersparen: CPCEMU emuliert einen Amstrad CPC 464, 664 oder 6128 mit zahlreichen Erweiterungen. Das Programm bildet also die Funktionsweise der älteren Amstrad-Computer auf Ihrem neuen PC nach. Was das für einen Zweck hat? Nun ja, wenn Sie das nicht schon wissen, benötigen Sie CPCEMU nicht. Hier noch ein paar Gründe: - Nostalgie (och, wie schön war doch mein CPC ...) - Bessere Performance gegenüber dem Original - Bessere Entwicklungsumgebung - z.B. zum Erlernen/Trainieren der Z80 Assemblersprache - Spielen - Arbeiten (ja, ein CPC reicht normalerweise für Textverarbeitung) - [ ] <- hier können Sie weitere Gründe eintragen. 1.1 Hinweise zur Benutzung dieser Dokumentation ================================================ Sie sollten zuerst die On-Line-Hilfe ausprobieren (F1), wenn Sie dann tiefergehende oder genauere Informationen wollen, können Sie dieses lesen... Ich habe versucht, die Dokumentation übersichtlich zu gestalten. Falls Sie (nach mehrmaligem Lesen?) doch noch Fragen haben, setzen Sie sich einfach mit mir in Verbindung. Natürlich dürfen Sie das auch, wenn Ihnen alles klar ist. Siehe Kapitel 6 (Bezugsquellen, ...). Im Kapitel 1 (Einführung) beschreibe ich Grundlagen zur Dokumentation, zum Copyright und zum CPC allgemein. Im Kapitel 2 (Installation) geht es dann endlich los. Sie erfahren, wie man CPCEMU installiert und startet. In Kapitel 3 (Unterschiede zum Original) führe ich einige Besonderheiten auf, die Sie beachten müssen, wenn Sie einen richtigen CPC kennen und den Emulator benutzen möchten. Dabei werde ich vor allem auf die Tastatur, Disketten, Kassetten und Snapshots eingehen. In Kapitel 4 (Ändern der Konfiguration) beschreibe ich, wie Sie CPCEMU an Ihre Bedürfnisse anpassen und vielleicht doch noch Ihr Lieblingsprogramm zum Laufen bringen können. Kapitel 5 (Datenübertragung CPC <-> PC) sollten Sie lesen, wenn Sie noch zahlreiche alte CPC Programme besitzen und nicht wissen, wie Sie diese auf den PC bekommen. In diesem Kapitel werden die dafür vorhandenen Zusatzprogramme beschrieben. In Kapitel 6 (Bezugsquellen, Hilfe bei Problemen) verrate ich Ihnen, wie Sie immer die neuste Version bekommen können und an wen Sie sich bei Fragen wenden dürfen. Kapitel 7 (Interne Informationen zu CPCEMU) ist für Profis gedacht. Der "offizielle" Teil ist vor diesem Kapitel vorbei, denn hier kommt das "Letzte". Falls Sie wissen möchten, wie man so einen Emulator programmiert und was man dabei beachten muß. Außerdem wird hier das in CPCEMU eingebaute Debug-Menü erklärt, mit dem Sie *jederzeit* den Prozessor und den Speicher analysieren können. Nur-Anwender sollten dieses Kapitel überspringen, wenigstens beim ersten Lesen. Im Anhang A.1 gibt es dann noch ein Glossar, mit Beschreibungen der wichtigsten Fachbegriffe, außerdem in A.2 ein Literaturverzeichnis und in A.3 einen Index. 1.2 Copyright, Gewährleistungen ================================ Die DOS-Version von CPCEMU wurde entwickelt von (siehe auch Abschnitt 6.3): Marco Vieth Auf dem Ükern 4 D-33165 Lichtenau Germany Die Versionen für die anderen Betriebssysteme (z.B. Linux und Windows) wurden auf der Basis der DOS-Version entwickelt von: Rainer Loritz Rosenbachweg 4/Whg. 1 D-37075 Göttingen CPCEMU ist Freeware, d.h. Sie dürfen das Programm *unentgeltlich* an Freunde und Bekannte weitergeben. Betreibern von Mailboxen ist es erlaubt, CPCEMU in Ihre Programmsammlungen zum "Downloaden" aufzunehmen. Shareware-Händler dürfen dieses Programm mit in Ihren Bestand aufnehmen, sofern sie von den Kunden nur eine geringe Kopiergebühr verlangen. Die Verbreitung darf nur in dem Archiv CPCEMUxx.xxx erfolgen. Im Gegensatz zu Public Domain bedeutet Freeware nicht, das das Programm "frei" ist und jeder damit machen kann was er will, sondern das Copyright bleibt bei uns! Gewährleistung: Wir lehnen jegliche Gewährleistung ausdrücklich ab. Schäden, die durch dieses Programm am Computer oder sonstwo entstehen, gehen zu Lasten des Benutzers. Auch gehen wir keinerlei Verpflichtung bzgl. Updates ein, obwohl wir normalerweise möglichst schnell versuchen, aufgetretene Fehler zu beseitigen. Wenn Sie von dem Programm begeistert sind, können Sie uns unterstützen. Wir sind für jede Rückmeldung und jeden Verbesserungsvorschlag dankbar. Auch finanzielle Unterstützung lehnen wir natürlich nicht ab. Siehe Kapitel 6 (Bezugsquellen, ...) 1.3 Was ist ein CPC ? ====================== Falls Sie schon wissen, was ein CPC ist, gehen Sie einfach zum nächsten Abschnitt über (1.4 Was bietet CPCEMU ?). Sie sind noch da? Hier soll nicht der CPC "auseinandergenommen" werden, sondern ich gebe nur eine grobe geschichtliche Beschreibung, damit Sie eine Vorstellung davon haben, was ein CPC überhaupt ist. CPC ist die Abkürzung für Colour Personal Computer. Computer dieser Modellreihe wurden ab 1984 von der englischen Firma Amstrad hergestellt und von Schneider in Deutschland vertrieben. Es war die Zeit der Homecomputer Commodore C64, Sinclair Spectrum, Atari 800XL, ..., als der CPC 464 auf den Markt kam. Er hatte genausoviel RAM wie der Commodore C64 (nämlich 64 KB), ein eingebautes Kassettenlaufwerk und Locomotive BASIC 1.0. Es folgte der CPC 664 mit eingebautem 3" Diskettenlaufwerk und leicht erweitertem Locomotive BASIC 1.1. 1985 kam dann der CPC 6128 mit 128 KB RAM und ansonsten gleichen Merkmalen wie der CPC 664 auf den Markt. Die 3" Disketten waren zwar sündhaft teuer, dafür aber stabiler als die damals gängigen 5.25" Disketten (etwa wie die heutigen 3.5"). Außerdem war eine deutliche Geschwindigkeitssteigerung im Vergleich zur Kassette zu bemerken, nicht wie beim C64... Alle drei Modelle wurden wahlweise mit Farb- oder Grünmonitor ausgeliefert, wobei das Computernetzteil im Monitor integriert war. Inzwischen gab es noch 2-3 andere Modelle (die CPC+ Modelle), darauf werde ich aber nicht eingehen. Das BASIC war mit etwa 178 Befehlen leistungsfähig und schnell. Man konnte damit Grafik, Sound und sogar Interruptbehandlung programmieren, ohne auf PEEKs und POKEs ausweichen zu müssen. Das Softwareangebot hat sich im Laufe der Jahre auch stark erweitert. 1.4 Was bietet CPCEMU ? ======================== Es folgt eine Kurzübersicht darüber, was CPCEMU bietet. Erst im Laufe der Dokumentation wird erklärt, was das alles bedeutet. CPC-Grafik in 3 Bildschirmmodi (X x Y x Farben): DOS: Modus 0: 180x200x16 Modus 1: 320x200x4 Modus 2: 640x200x2 (Mit VESA-BIOS kann diese Grafik in einer Auflösung von 640x400x16 bis 1280x1024x16 dargestellt werden, abhängig von Ihrem Monitor und Ihrer Grafikkarte.) Non-DOS: Die Fenstergroesse bzw. Bildschirmaufloesung (im Vollbildmodus) wird dynamisch angepaßt. Sound DOS: wahlweise über PC-Lautsprecher, Soundblaster (3 Kanal + Geräusche, Stereo), Soundblaster (3 Kanal FM, Stereo) oder Gravis UltraSound (3 Kanal + Geräusche, Stereo) Non-DOS: Ausgabe über Soundkarte (treiberabhängig) in Stereo Speicher: ROM: OS, BASIC, AMSDOS, bis zu circa 13 Zusatzroms (mit EMS) RAM: 64KB, 128KB, bis zu 576KB Dk'tronics kompatibles RAM (mit EMS) (Non-DOS: kein EMS nötig) Diskette: Spezielle Disketten-Abbilder, mit der Endung .DSK Kassette: Normale Dateien unter DOS, z.B. CPC BASIC- und Binärdateien mit den Endungen .BAS bzw .BIN . Snapshots: Es lassen sich Schnappschüsse von laufenden Programmen erzeugen, um sie später wieder fortsetzen zu können. Schnappschüsse haben normalerweise die Endung .SNA . Geschwindigkeit: DOS: Auf einem 386/33 mit EMS-Speicher ist CPCEMU normalerweise schneller als das Original. Durch einen Echtzeit-Modus kann der Emulator auf exakte CPC-Geschwindigkeit abgebremst werden. Dieser Echtzeit-Modus funktioniert aber erst richtig auf einem 486DX2/66. Non-DOS: Entscheidend ist die Qualität der Grafikkarte und ihrer Treiber. Im Framebufferbetrieb ist die Geschwindigkeit wesentlich niedriger. Grundsätzlich wird eine höhere CPU-Leistung benötigt als unter DOS, da wesentlich mehr Betriebssystem-Overhead zu bewältigen ist. Für Originalgeschwindigkeit werden _ca._ 200-300 MHz (CISC) benötigt. Exakte Tests wurden bis jetzt nicht durchgeführt. 2. Installation von CPCEMU *************************** In diesem Kapitel erfahren Sie, was Sie für CPCEMU benötigen, wie Sie das Programm installieren und starten. Außerdem gebe ich in Abschnitt 2.3 kurz Tips zum Speicher und zur Soundkarte. Umkonfigurationen werden erst später im Kapitel 4 (Konfiguration) beschrieben. 2.1 Dateien im CPCEMU-Paket ============================ Sie haben das CPCEMUxx.xxx-Paket mit den folgenden Dateien erhalten: (In Klammern steht das Verzeichnis, in dem die Datei nach der Installation steht.) COPYMATE.ROM ein ROM mit einem Kopierprogramm (ROM) *CPC464.BAT startet einen CPC 464 CPC464.ROM das ROM (Firmware+BASIC) eines CPC 464 (ROM) *CPC6128.BAT dito, nur CPC 6128 CPC6128.ROM (ROM) *CPC6128P.BAT dito, nur CPC 6128 plus *CPC664.BAT dito, nur CPC 664 CPC664.ROM (ROM) CPCADOS.ROM das AMSDOS für alle CPCs (ROM) CPCEMU.CFG die Konfigurationsdatei für alle CPCs (oder CPCEMU0.CFG) CPCEMU.DAT Daten-Datei für CPCEMU CPCEMU.DBF Datenbank mit Pokes CPCEMU.EXE der Emulator CPCEMU.HLP die On-Line-Hilfe, erscheint bei F1 CPCEMU.MSG Die Meldungsdatei (unbedingt notwendig) CPCEMU_D.TXT deutsche Dokumentation (diese Datei) CPCEMU_E.TXT englische Dokumentation CPCEMU_F.TXT französische Dokumentation CPCEMU_S.TXT spanische Dokumentation CPCPARA.BAS Locomotive-BASIC-Programm für parallelen Adapter (UTILITY) CPCPD1.DSK ein Disketten-Abbild mit Beispiel-Public-Domain (DISC) CPCREC.BAS Locomotive-BASIC-Programm zum Empfangen (UTILITY) CPCT0.BAT Batch-Datei zu CPCTRANS.EXE (Beispiel) (UTILITY) CPCTRANS.CFG Konfigurationsdatei für CPCTRANS (UTILITY) CPCTRANS.EXE Transfer von Disketten-Abbildern (UTILITY) CPMDISKS.DEF Datei mit Formatdefinitionen für 22DISK (UTILITY) DESCRIPT.ION Beschreibungsdatei für 4DOS FILE_ID.DIZ Paket-Beschreibung für BBS (Mailboxen) INSTALL.BAT Installationsdatei *KCC.BAT startet einen KC compact PCPARA.EXE Die PC-Seite für den parallelen Adapter (UTILITY) README_D.TXT deutsches Liesmich README_E.TXT englisches Liesmich README_F.TXT französisches Liesmich README_S.TXT spanisches Liesmich ROMGET.BAS Locomotive-BASIC-Programm zum Abspeichern von ROMs (UTILITY) SNA2GIF.EXE ein Snapshot nach GIF-Konverter: CPC-Bilder abspeichern unter unixartigen Betriebssystemen (z.B. Linux) zusätzlich: cpc464 startet einen CPC 464 cpc664 startet einen CPC 664 cpc6128 startet einen CPC 6128 (* nur in den DOS- und Windows-Versionen enthalten) Es sind auch die orginalen Amstrad-ROMs dabei. Die Firmware ist Copyright von Locomotive Software, das BASIC ist Copyright von Amstrad. Amstrad und Locomotive haben mir erlaubt, die ROMs dabeizulegen. 2.2 Voraussetzungen und Installation ===================================== Sie benötigen mindestens (nach oben wie immer keine Grenzen) - PC AT 386 mit VGA-Grafikkarte - ALTERNATIV ENTWEDER: MS-DOS, möglichst mit EMS, oder Novell DOS (DRDOS) oder Windows 95 (oder 3.1) DOS-Box oder OS/2 2.x DOS-Box. ODER: Linux mit glibc (libc6) ODER: Windows 95,98,ME,NT oder 2000 (XP nicht offiziell unterstützt) ODER: andere Betriebssysteme (noch nicht unterstützt) - Falls Sie Programme aus ZIP-Archiven starten wollen, brauchen Sie zum Entpacken das Programm PKUNZIP in Ihrem DOS-Suchpfad. Für Linux ist "unzip" in den meisten Distributionen enthalten. Die Installation selbst ist ganz einfach: Kopieren Sie das Archiv CPCEMUxx.xxx auf Ihre Festplatte und entpacken es z.B. durch 'PKUNZIP CPCEMUxx.ZIP'. Rufen Sie INSTALL.BAT auf, um ein paar Unterverzeichnisse zu erzeugen. Danach starten Sie einfach CPC464.BAT, CPC664.BAT oder CPC6128.BAT, je nachdem, was für einen CPC Sie am liebsten mögen. Beim ersten Start werden Sie nach der gewünschten Sprache gefragt. Antworten Sie mit "1" für Deutsch oder wählen eine andere Sprache. (Die Konfiguration wird im TMP-Verzeichnis als CPCEMU.CFG abgelegt.) Nach der Konfiguration erscheint der wohlbekannte CPC Eröffnungsbildschirm mit gelber Schrift auf blauem Grund. Mit F12 verlassen Sie den Emulator wieder. Mit F1 erreichen Sie die On-Line-Hilfe. Am besten probieren Sie das jetzt sofort einmal aus, und lesen anschließend hier weiter ... Vielleicht war Ihnen der CPC doch nicht so wohlbekannt, weil dort "Amstrad" anstatt "Schneider" in der Einschaltmeldung stand. Um das zu ändern, müssen Sie sich allerdings bis Kapitel 4 (Ändern der Konfiguration) gedulden. Dort wird auch beschrieben, wie Sie eine "deutschere" Tastatur einstellen können. Falls irgendwelche schwerwiegenden Fehler beim Start auftreten, landen Sie im sogenannten Debug-Menü, welches Sie mit 'q' wieder verlassen können. In solchen Fällen ist es manchmal nützlich, den Initialisierungsvorgang in eine Datei umzuleiten, z.B. durch 'CPCEMU > INIT.TXT'. Dann können Sie sich später das Problem in aller Ruhe ansehen. 2.3 Tips zum Speicher und zur Soundkarte (nur DOS-Version) =========================================================== Hier zwei Tips, falls Sie eine besonders schnelle Emulation haben wollen oder Ihre Soundkarte nicht erkannt wird. Falls Sie Windows 95 mit Standardeinstellungen benutzen, brauchen Sie sich darum keine Gedanken zu machen. Windows 95 bietet für DOS-Boxen automatisch EMS und die BLASTER-Umgebungsvariable bei Soundblaster-Karten. 2.3.1 Verwenden Sie EMS-Speicher --------------------------------- Sie sollten auf Ihrem PC möglichst echten oder emulierten EMS-Speicher haben (EMS=Expanded Memory System). Dadurch wird die Emulation besonders unter BASIC erheblich beschleunigt. Simuliertes EMS ist zu langsam. Alles was Sie dazu brauchen, ist ein EMM (Expanded Memory Manager) nach dem LIM 4.0 Standard (LIM EMS 4.0). Beim Start des Emulators wird dann "EMS xxx Bytes ok." angezeigt. Falls dort nicht "Sorry, using conventional memory" steht, dann wird EMS benutzt. Beispiel unter OS/2 2.x (Einstellungen im Setup des Fensters): EMS_FRAME_LOCATION = auto EMS_HIGH_OS_MAP_REGION = 32 (oder mehr) EMS_LOW_OS_MAP_REGION = 0 (oder mehr) Beispiel unter DOS in der CONFIG.SYS-Datei: DEVICE=C:\DOS\HIMEM.SYS DEVICE=C:\DOS\EMM386.EXE 1024 ... 2.3.2 Setzen Sie die BLASTER-Umgebung -------------------------------------- Damit CPCEMU Ihre Soundblaster-Soundkarte benutzt, müssen Sie die BLASTER-Umgebungsvariable entsprechend setzen. Starten Sie dazu das Programm 'SET-ENV.EXE' (oder 'SBTEST.EXE'), das dem Softwarepaket Ihrer Soundkarte beiliegen sollte. Oder schreiben Sie in Ihre AUTOEXEC.BAT die folgende Zeile, eventuell leicht modifiziert: SET BLASTER=A220 I7 D1 T3 Mit folgender Bedeutung: A setzt die Basis-Adresse (0x220) I setzt die Interrupt-Nummer IRQ (7) D setzt den DMA-Kanal (1) T setzt die Version der Soundkarte: 1 : Soundblaster 1.0/1.5 2 : Soundblaster Pro 3 : Soundblaster 2.0/2.5 4 : Soundblaster Pro 3/Pro 4.0 5 : Soundblaster Pro (Microchannel) 6 : Soundblaster 16 Bei den Versionen 2, 4, 5 und 6 erfolgt die Soundausgabe in Stereo. Es gibt noch einige zusätzliche Parameter, die aber ignoriert werden: H setzt den 16-Bit-DMA-Kanal für 16-Bit Karten M setzt die Basis-Adresse des Soundblaster-Mixers (224) P setzt die Port-Adresse für MIDI (330) Wenn Sie keinen Sound hören, nehmen Sie A388 (anstatt A220). Dieses funktioniert für die Media Vision Pro Audio Spectrum 16 und vielleicht auch anderen Soundkarten, die Soundblaster-Emulation verwenden. (Joe Cotroneo) 2.3.3 Setzen der ULTRASND-Umgebung: ------------------------------------ Um Sound auf Ihrer GUS (Gravis Ultrasound Classic / Max / ACE) zu hören, müssen Sie die ULTRASND-Umgebungsvariable entsprechend setzen. Ihre AUTOEXEC.BAT Datei sollte die folgende Zeile enthalten: SET ULTRASND=220,1,1,11,7 Mit der Bedeutung (in der entsprechenden Reihenfolge): 220 ist die Basis-Adresse (0x220) 1 ist der GUS DMA-Kanal 1 ist der SoundBlaster DMA-Kanal 11 ist der GUS IRQ 7 ist der SoundBlaster IRQ Wichtig sind die Basis-Adresse und der GUS IRQ. Alle anderen Werte müssen aber auch angegeben werden. 3. Unterschiede zwischen CPC und CPCEMU **************************************** In diesem Kapitel erläutere ich einige Besonderheiten, die CPCEMU vom Original unterscheiden. Da wäre zunächst die Tastatur, insbesondere die Belegung der Funktionstasten, dann das Laden von Diskette und Kassette. 3.1 Tastatur ============= Vielleicht ist Ihnen bei den ersten Experimenten schon aufgefallen, daß manche Tasten andere Zeichen auf dem Bildschirm hervorrufen. Das muß so sein! Um eine "deutschere" Tastaturbelegung zu bekommen, gedulden Sie sich bis Kapitel 4 (Konfiguration von CPCEMU). Außerdem haben Sie vielleicht bemerkt, daß die PC Funktionstasten nicht den CPC Funktionstasten entsprechen und "wirres Zeug" aufrufen. Vielleicht suchen Sie auch schon vergeblich die COPY Taste. Ich versichere Ihnen, es sind wirklich alle Tasten vom CPC irgendwo vorhanden. Hier wird das Geheimnis gelüftet: - ALT, ALTgr : COPY auf dem CPC {DOS} Pos1/Home {Non-DOS} - PAUSE-Taste : hält den PC an, bis sie erneut gedrückt wird. Falls also die PC-Funktionstasten nicht mehr reagieren, haben Sie vielleicht die PAUSE-Taste gedrückt. {nur DOS} - Keypad (Zehnerblock) : Je nach Zustand von "NUM-LOCK" erfüllt das Keypad verschiedene Funktionen. Bei "NUM-LOCK an" erreichen Sie die CPC- Funktionstasten, sonst können Sie Joystickbewegungen ausführen. Wollen Sie einen analogen PC-Joystick benutzen, erfordert das eine Konfiguration und Sie müssen sich bis Kapitel 4 (Ändern der Konfiguration) gedulden. - PrintScreen/Druck : erzeugt einen Screenshot ("screenshot.bmp") {nur Non-DOS} Der Vollständigkeit halber sei noch erwähnt: - Bild hoch/runter: Verschiebt den gesamten CPC Bildschirm (Fragen Sie mich nicht, wofür das gut sein soll.) Und natürlich die Funktionstasten: F1 : Die Online-Hilfe-Taste. Zu Beginn vielleicht die wichtigste Taste überhaupt. F2 : Wechsel zwischen CPC-Bildschirm (Standard-Sicht) und Meldungs- Bildschirm (der mit dem roten Rahmen). Auf diesem Bildschirm werden manchmal Kontrollmeldungen angezeigt. {nur DOS} F3 : Einlegen einer Diskette, siehe Abschnitt 3.2.1 F4 : Soundausgabe ein/aus F5 : Laden eines Snapshots (Schnappschusses), siehe Abschnitt 3.2.3 F6 : Speichern eines Snapshots, siehe Abschnitt 3.2.3 F7 : Setup-Menü, siehe Abschnitt 4.1 F8 : Hard-Reset, wie eine Reset-Taste am CPC. Benutzen Sie diese Taste, falls CTRL+SHIFT+ESC nicht mehr funktioniert. F9 : Farbänderungen erlauben/verbieten. F10 : Debug-Menü, wird im Kapitel 7 (Interne Informationen zu CPCEMU) erläutert. Falls Sie einmal aus Versehen darin landen, drücken Sie 'r' für R)un oder 'q' für Q)uit. F11 : reserviert für zukünftige Verwendung {Vollbildmodus, nur in Non-DOS} F12 : sofortiger Abbruch des Emulators 3.2 Laden von Programmen, Menüs ================================ In diesem Abschnitt erfahren Sie, wie Sie Programme von Diskette, Kassette oder aus Snapshots (Schnappschüssen) laden. Natürlich werden auch die entsprechenden Funktionen zum Abspeichern erklärt. Im folgenden Abschnitt wird zusätzlich erklärt, wie Sie in den Menüs Optionen ändern und auswählen. 3.2.1 Laden von Diskette, Menüs -------------------------------- Normalerweise ist nach dem Start des Emulators das sogenannte AMSDOS (Amstrad DOS) aktiv, d.h. alle Befehle zum Laden/Speichen sprechen die Diskette an. Sie brauchen nicht immer eine richtige CPC-Diskette in Ihr PC-Laufwerk legen, abgesehen davon, daß Sie vielleicht nur 3" CPC-Disketten haben. Um eine vernünftige Geschwindigkeit zu erreichen, befinden sich die CPC-Disketten in sogenannten Disketten-Abbildern. Diese Dateien dürfen sich irgendwo auf der Festplatte (oder auch einer High-Density- Diskette) befinden. Hier einige BASIC-AMSDOS-Befehle: - CAT : Es erscheint der Katalog - Durch 'RUN""' laden und starten Sie ein Programm. Sie dürfen die letzten Anführungsstriche auch weglassen. Dieser Befehl funktioniert sowohl für BASIC-Programme mit der Endung .BAS als auch für die meisten binären Programme mit der Endung .BIN . Hier eine einfache Möglichkeit, ein Programm zu starten: 1. Tippen Sie den Dateinamen ein, z.B. 'DISC', *nicht* 2. Halten Sie die CTRL-Taste fest und drücken Sie Cursor-links (dadurch wandert der Cursor in die 1. Spalte) 3. Halten Sie die CTRL-Taste immer noch fest und drücken sie die ENTER- Taste auf dem Zehnerblock (es erscheint RUN"DISC und das Programm wird gestartet) - LOAD"" lädt ein Programm, ohne es zu starten. BASIC-Programme lassen sich dann mit LIST auflisten und durch RUN starten. Binäre Programme lassen sich in den meisten Fällen nicht mit LOAD laden. Versuchen Sie, vorher einen MEMORY-Befehl anzugeben, z.B. 'MEMORY &1fff'. - SAVE"" speichert ein BASIC-Programm. Für Binärdateien sind mehrere Parameter nötig, z.B. speichert 'SAVE"",b,&c000,&4000' den Bildschirminhalt. - MERGE"" gibt es auch noch und fügt ein BASIC-Programm an ein schon im Speicher vorhandenes an. Speziell vom AMSDOS werden noch folgende Erweiterungs-Befehle angeboten, die durch einen senkrechten Strich eingeleitet werden: - |A, |B zur Wahl des Laufwerks (geht auch mit |DRIVE,0 bzw. 1) - |DIR,"" zum Anzeigen des Inhaltsverzeichnisses. Wichtig: Auf einem CPC 464 folgendes eingeben: a$="" : |DIR,@a$ - |ERA,"" zum Löschen einer Datei. Wichtig: Auf einem CPC 464 folgendes eingeben: a$="" : |ERA,@a$ - |REN,"","" zum Umbenennen einer Datei. Wichtig: Auf einem CPC 464 folgendes eingeben: a$="" : b$="" : |REN,@a$,@b$ - |TAPE um auf Kassette umzuschalten, wird im nächsten Abschnitt erläutert. - |DISC um auf Diskette umzuschalten. Es gibt auch noch ein paar andere Befehle, die nicht so wichtig sind. Das Disketten-Wechsel-Menü -------------------------- Bisher konnten Sie immer nur eine Diskette benutzen, nämlich diejenige, die schon die ganze Zeit im Laufwerk "liegt". Um eine andere Diskette einzulegen, drücken Sie F3. Es erscheint das Menü Diskette einlegen Laufwerks-Nummer 0 Disketten-Seite 0 Schreibschutz 0 Autostart 1 Mit den Cursortasten wählen Sie eine Zeile aus. Sie können dazu auch direkt Buchstaben eingeben (zurück mit ). Ändern Sie Zahlen durch oder durch Direkteingabe. in einer beliebigen Zeile (z.B. in der ersten) übernimmt die Änderungen, durch würden sie verworfen. "Laufwerks-Nummer" ist das gewünschte Laufwerk (0=A, 1=B); "disketten-Seite" ist ein Seitenauswahl-Schalter für doppelseitige Formate, bei einseitigen Formaten hat er keine Auswirkung. Mit "Schreibschutz" versehen Sie die Diskette mit einem Schreibschutz (0=Nein, 1=Ja, mit Schreibschutz). Falls "Autostart" aktiv ist, wird das erste BASIC-Programm auf der Diskette nach dem Einlegen automatisch gestartet (alternativ DISC.BAS). Das Datei-Auswahl-Menü ---------------------- Drücken Sie , dann erscheint ein Disketten-Inhaltsverzeichnis. Wählen Sie eine neue Diskette aus, mit den Methoden, wie oben beschrieben. Falls schon eine Diskette im Laufwerk liegt, brauchen Sie diese nicht vorher herauszunehmen, wie im richtigen Leben. Das passiert hier automatisch. Unten auf dem Bildschirm wird so eine Diskette aber angezeigt. Es werden immer höchstens 15 Dateinamen auf einmal angezeigt, bei mehr Dateinamen steht unten "[]". - geht zum ersten Dateinamen, zum letzten - blättert seitenweise durch die Dateinamen - übernimmt den angewählten Dateinamen, bricht ab. Auch hier wählen Sie die Namen direkt an, wenn Sie Anfangsbuchstaben drücken. Falls Sie die Maussteuerung bevorzugen, bedeutet "[]" , "[]" , "[<]" , "[>]" und [ok] ist . "[þ]" ist . Um eine Zeile zu markieren, benutzen Sie die rechte Maustaste. ".." ist das Eltern-Verzeichnis; [A], [B], ... sind die verfügbaren Laufwerke. Bitte wählen Sie nur Diskettenlaufwerke, wenn auch eine Diskette darin liegt, ansonsten kann es zu Komplikationen kommen. Es ist auch möglich, Disketten aus ZIP-Archiven einzulegen. Dazu wählen Sie ein ZIP-Archiv mit , worauf das Inhaltsverzeichnis wie ein normales Verzeichnis angezeigt wird. Wählen Sie dann eine Datei aus einem ZIP-Verzeichnis, wird sie automatisch in eine temporäre Datei entpackt. Dazu benötigen Sie das Programm PKUNZIP im CPCEMU-Verzeichnis oder im DOS-Suchpfad. Die temporären Dateien werden automatisch gelöscht, sobald sie nicht mehr gebraucht werden. Etwaige Änderungen werden *nicht* an dem ZIP-Archiv durchgeführt. Wenn Sie also auf einer Diskette aus einem Archiv etwas speichern und anschließend eine andere einlegen, ist der neue Inhalt wieder weg. Wenn Sie Disketten in Archiven ändern wollen, entpacken Sie diese vor dem Start von CPCEMU. Wie Sie selber Disketten-Abbilder erzeugen, erfahren Sie im Kapitel 5 (Datenübertragung CPC <-> PC). 3.2.2 Laden von und Speichern auf Kassette ------------------------------------------- Was ist überhaupt eine Kassette für CPCEMU? Nun, Dateien auf Kassette sind irgendwelche Dateien in den normalen DOS-Verzeichnissen. Nach dem Befehl '|TAPE' sprechen die BASIC-Befehle zum Laden/Speichern die Kassette an. Aber nur diejenigen, die nicht mit "|" beginnen. So können Sie also die im vorherigen Abschnitt beschriebenen Befehle CAT, RUN", LOAD", SAVE", MERGE" auf die Kassette anwenden. Hier dürfen Sie sogar den Dateinamen weglassen, es erscheint dann das Dateiauswahl-Menü, welches Sie schon aus dem letzten Abschnitt kennen. Bei SAVE"" können Sie entweder eine bestehende Datei überschreiben oder in der letzten Zeile bei "(new name)" einen neuen Namen eingeben. Natürlich können Sie auch hier Programme aus ZIP-Archiven laden, das Speichern wird ignoriert. So eine schöne Kassette haben Sie nur mit dem Emulator. 3.2.3 Laden und Speichern von Snapshots ---------------------------------------- Snapshots sind Schnappschüsse, in denen nicht nur der aktuelle Speicherinhalt, sondern auch die internen Zustände der anderen Hardwarebausteine festgehalten werden, z.B. von der CPU. Zu jeder Zeit können Sie das laufende Programm als Snapshot abspeichern und später wieder laden, um es an genau der Stelle fortzusetzen, wo es abgebrochen wurde. Mit F6 speichern Sie ein Snapshot. Sie legen dabei fest, ob es ein 64K oder ein 128K Snapshot sein soll. 128K Snapshots sind natürlich nur sinnvoll, wenn auch die zweite Speicherbank benutzt wird. Setzen Sie in dem Fall "128K Snapshot = 1", wobei 1=Ja bedeutet. Die Dateiauswahl erfolgt wie schon bei Diskette beschrieben, mit den zusätzlichen Kommentaren zur Kassette (3.2.1 und 3.2.2). Später können Sie ein Snapshot mit F5 wieder laden. 4. Ändern der Konfiguration **************************** In diesem Kapitel erfahren Sie, wie Sie CPCEMU an Ihre Bedürfnisse anpassen können. Es werden sowohl das Setup-Menü als auch die Konfigurationsdatei und die Kommandozeilen-Parameter beschrieben. 4.1 Das Setup-Menü =================== Dieses ist die einfachste Methode, Einstellungen von CPCEMU zu ändern. Fast alle Einstellungen lassen sich im Setup-Menü ändern und auch abspeichern. Nur wenn sie Pfade ändern oder zusätzliche ROMs benutzen wollen, müssen Sie sich mit der Konfigurationsdatei vertraut machen, die ich im Abschnitt 4.2 beschreibe. Wie bei der Beschreibung der Tastatur schon angedeutet, erreichen Sie das Setup-Menü mit der Funktionstaste F7. Es erscheint ein umfangreiches Menü, welches in mehrere Abschnitte unterteilt ist: Menüpunkt: Wert: Kurze Beschreibung: ----------------------------------------------------------------------- ___Emulation Emulations-Verzögerung 0 Emulations-Geschwindigkeit 1 Interrupt-Frequenz 300 Interrupts nachholen 1 Echtzeit 0 ___Bildschirm Farb-Bildschirm 1 Multimodes auffrischen 0 Paletten-Änderung 1 Bildschirm-Verschiebung 0 Video-Modus 0 VSYNC-Position 5 ___Sound Sound erlaubt 1 Sound-Ausgabegerät 2 SB-Verzögerung 35 SB-Verzögerung0 6 SB-DMA-Puffer 128 SB-Sampling-Rate 0 SB-Stereo 0 ___Steuerung Joy0 kalibrieren Joy1 kalibrieren Tastatur-Layout 1 Maus erlaubt 1 ___PPI-Einstellungen Firmenname 7 PPI_50Hz 1 PPI_EXP_Signal 1 ___Sonstiges AMSDOS abgeschaltet 0 AMSDOS-Beschleunigung 1 Unterbrechungs-Maske 3 EMS erlaubt 1 Sprache 1 Kassetten-Umleitung 1 CPC-Typ 2 Lade Konfiguration Neustart der Emulation Speichere Konfiguration Poke-Datenbank DOS-Shell Fortsetzen Die Menüpunkte wählen Sie genauso an, wie schon bei 3.2.1 (Laden von Diskette) beschrieben. Sie sind auch in der Online-Hilfe beschreiben. Emulations-Verzögerung Mit dieser Option bremsen Sie die Emulation ab, falls sie zu schnell ist. 0 bedeutet keine Verzögerung, 100 ist eine geringe Verzögerung, 300 entsprechend mehr. Emulations-Geschwindigkeit Geschwindigkeit der Emulation. 0 = langsame Z80-Emulation 1 = schnelle Z80-Emulation {nur DOS} Interrupt-Frequenz Hiermit ändern Sie die Frequenz, mit der Interrupts (Unterbrechnugen) generiert werden. Auf einem richtigen CPC sind das immer 300 Hertz. Wenn Sie diesen Wert erhöhen, laufen die meisten Programme schneller ab, es bleibt aber weniger Rechenzeit zwischen den Interrupts übrig. Falls Sie einen langsameren Rechner besitzen, ist es bei manchen Programmen sinnvoll, diesen Wert zu verringern, vielleicht auf 100 bis 200. Mögliche Werte sind 18 bis etwa 600. Weitere Informationen finden Sie im Kapitel 7. Interrupts nachholen Noch so eine Option, die man nicht erklären kann, ohne weiter auszuholen. Lassen Sie sie am besten so, wie sie ist. Ohne EMS (Expanded Memory) ist sie auf 0, d.h. Interrupts können schon mal vergessen werden. Das ist natürlich nicht wünschenswert, aber bei 1 würde die Emulation zu langsam. Mit EMS ist diese Option = 1, d.h. es wird versucht, keine Interrupts auszulassen. Wichtig: CP/M Plus scheint nur mit EMS und trotzdem ausgeschalteter Option zu laufen ! Weitere Informationen finden Sie im Kapitel 7. Echtzeit Aktiviert den Echtzeit-Modus, bei dem der Emulator Warteschleifen einlegt, um so schnell wie ein richtiger CPC zu sein. Farbbildschirm Emulation eines Grün- oder Farbmonitors, indem die Farbpalette angepaßt wird. Multimodes auffrischen Falls Programme mehrere Bildschirmmodi gleichzeitig auf dem Bildschirm verwenden, sollten Sie diese Option anschalten. Dann versucht CPCEMU, Bildschirmmodus-Änderungen auch anzuzeigen. Standardmäßig ist diese Option ausgeschaltet, da sie nicht immer richtig funktioniert. {DOS} Paletten-Änderung Falls Sie diese Option auf 0 setzen, werden Farben nicht mehr geändert. Das ist sinnvoll, wenn Sie vor lauter Farbflimmern nichts mehr erkennen. Bei einem Hardware-Reset durch die Funktionstaste F8 wird diese Option automatisch wieder gesetzt. Tip: Wenn Sie Farbänderungen verboten haben und völlig falsche Farben dargestellt werden, drücken Sie einfach 2 mal F2. Bildschirm-Verschiebung Gibt die Anzahl der Zeilen an, um die der Bildschirm verschoben werden soll. Diese Option wird normalerweise nicht benötigt. Den gleichen Effekt können Sie auch mit den Tasten und erreichen. Mögliche Werte reichen von 0=keine Verschiebung bis etwa 25 Zeilen Verschiebung. Video-Modus {nur DOS} Video-Modus der VGA-Karte setzen. 0 = 640x200x16 (Standard) 1 = 640x350x16 2 = 640x480x16 und falls Sie ein VESA-BIOS besitzen, meistens: 3 = 800x600x16 4 = 1024x768x16 5 = 1280x1024x16 ... WARNUNG: Schalten Sie Modi >= 3 nur ein, wenn Ihr Monitor diese unterstützt! Falls er merkwürdige Geräusche von sich gibt, sofort ausschalten! Dieses sollte aber nur bei älteren Monitoren passieren. VSYNC-Position Diesen Wert brauchen Sie normalerweise nicht zu verändern, es kann aber auch nichts Schlimmes passieren, wenn Sie es dennoch tun. Bei einem Monitor erfolgt einmal pro Bildaufbau der vertikale Strahlenrücklauf. Während dieser Zeit ist normalerweise ein bestimmtes Bit gesetzt, das sogenannte VSYNC-Bit (vertical synchronisation). Hiermit bestimmen Sie die Position, an der dieses Bit gesetzt sein soll. Mögliche Werte sind 0 bis 5 . Weitere Informationen finden Sie im Kapitel 7. Sound erlaubt Schaltet die Soundausgabe ein/aus, wobei 1=ein, 0=aus bedeutet. Stattdessen können Sie auch die Funktionstaste F4 drücken. Sound-Ausgabegerät {nur DOS} Setzt das Sound-Ausgabegerät. 0 = keines 1 = PC-Lautsprecher 2 = Soundblaster (Pro), FM-Sound 3 = Soundblaster (Pro), digitaler Sound, dank Ulrich Doewich 4 = GUS (Gravis Ultrasound), dank Ulrich Doewich SB-Verzögerung {nur DOS} Setzt eine Verzögerungszeit, die nach jedem Schreibzugriff auf die Soundkarte gewartet wird. Bei geringeren Werten (z.B. 0) wird die Soundausgabe beschleunigt. Falls Probleme mit Ihrer Soundkarte auftreten sollten, lassen Sie diesen Wert auf 35. SB-Verzögerung0 {nur DOS} Eine andere Verzögerungszeit für die Soundblaster-Karte. Lassen Sie diese auf 6. SB-DMA-Puffer {nur DOS} Setzt die DMA-Puffergröße für digitalen Soundblaster-Sound. SB-Sampling-Rate Setzt die Sampling-Rate für digitalen Soundblaster-Sound. 0=22kHz, 1=44kHz SB-Stereo {nur DOS} Setzt die Stereo-Option. Joystick 0 kalibrieren {nur DOS} Sie kennen es sicher von anderen Programmen, daß Sie einen analogen PC Joystick zuerst kalibrieren müssen. Wählen Sie diesen Menüpunkt mit , bewegen Sie dann den Joystick erst nach links oben, dann nach rechts unten. Es werden einige Parameter angezeigt. Falls Sie den Joystick immer betriebsbereit haben wollen, übernehmen Sie diese Parameter in die sogenannte Konfigurationsdatei (siehe nächster Abschnitt). Sie müssen die Kalibrierung allerdings wiederholen, wenn Sie z.B. die Taktfrequenz ändern. Joystick 1 kalibrieren {nur DOS} Wie "Joystick 0 kalibrieren", nur für Joystick 1. Tastaturlayout Mit dieser Option wählen Sie eine andere Tastaturbelegung. 0 = UK, d.h. Normaleinstellung 1 = GR, also "deutschere" Tastatur. Es ist leider nicht möglich, eine vollständig deutsche Tastenbelegung zu haben, da man Zeichen mit SHIFT nicht in Zeichen ohne SHIFT umwandeln kann. Auf jeden Fall sind aber 'Z' und 'Y' vertauscht, zusätzlich ein paar sonstige Zeichen. 2 = FR, also "französischere" Tastatur.also "französischere" Tastatur. Nachdem ich eine "deutschere" Tastenbelegung eingeführt hatte, wollten die Franzosen natürlich auch eine eigene haben. Hier gibt es die gleichen Probleme wie bei der deutschen. 3 = SP, also "spanischere" Tastatur. Maus erlaubt Erlaubt die Benutzung einer Maus zur Menüauswahl. Firmenname Firmenname auf dem Eröffnungsbildschirm. 0 = Isp 1 = Triumph 2 = Saisho 3 = Solavox 4 = Awa 5 = Schneider 6 = Orion 7 = Amstrad PPI 50Hz {bisher nur DOS} Der CPC wird mit 0 - 60 Hz, oder mit 1 - 50 Hz (Standard in Deutschland,Frankreich) betrieben werden. Dazu wird bei einem Reset das Bit 4 des Port B PPI abgefragt und der CRTC entsprechend initialisiert. Sollte auf 50 Hz bleiben. PPI EXP-Signal Erweiterungskarten können dieses Signal setzen. Beim CPC 464 normalerweise gesetzt, wenn eine Floppy angeschlossen ist. Beim CPC 6128 immer gesetzt. AMSDOS verboten Verbietet die Initialisierung des AMSDOS. Das ist sinnvoll, wenn Sie viele Programme von Kassette laden möchten, ohne vorher immer den Befehl '|TAPE' eingeben zu müssen. Natürlich könnten Sie auch einfach die entsprechende ROM_BLOCK-Zeile mit dem AMSDOS-ROM kommentieren (mit ROM_BLOCK legen Sie die zu ladenden ROMs fest), dann wäre aber gar kein AMSDOS ROM mehr vorhanden. So bleibt es für bestimmte Befehle noch erreichbar. AMSDOS-Beschleunigung Erlaubt eine AMSDOS-ROM-Modifikation, bei der Diskettenzugriffe beschleunigt werden. Dies wird durch Minimieren der Motor-Wartezeiten erreicht, die für den Emulator natürlich unnötig sind. Unterbrechungs-Maske Nur für Debugging-Zwecke. Durch die Maske in der Konfigurationsdatei (3) werden Fehlermeldungen bei unzulässigen Befehlen unterdrückt. Ändern Sie diesen Wert möglichst nicht! EMS erlaubt {nur DOS} Erlaubt der Benutzung von EMS-Speicher (Expanded Memory System). Falls kein EMS-Speicher vorhanden ist oder zu wenig zur Verfügung steht, wird automatisch konventioneller Speicher benutzt. Weitere Informationen zur EMS-Speichernutzung finden Sie in 2.3.1 und im Kapitel 7. Sprache Sprache, in der Hilfstexte angezeigt werden. Möglich sind 0=UK (Englisch) 1=GR (Deutsch) 2=FR (Französisch) 3=SP (Spanisch) Kassetten-Umleitung) Falls Sie die "Kassette" verwenden möchten, muß diese Option auf "YES" stehen. Weitere Informationen zum TAPE-Bypass finden Sie im Kapitel 7. CPC-Typ Setzt den gewünschten CPC-Typ 0 = CPC 464 1 = CPC 664 2 = CPC 6128 3 = CPC 464+ (?) 4 = CPC 6128+ (?) 5 = KC compact Um die Typen 3 bis 5 zu benutzen, müssen Sie zuerst entsprechende ROM-Abbilder in CPCEMU.CFG eintragen. Zeige Konfiguration Lade Konfiguration Läd eine Konfigurations-Datei, welche mit "Save_Configuration" abgespeichert wurde. Manche Parameter wirken erst, wenn Sie "Restart_Emulation" wählen. Neustart der Emulation Wenn Sie eine Konfiguration mittels "Load_Configuration" geladen haben, können Sie den Emulator mit diesen Werten neu starten. Speichere Konfiguration Speichert die aktuelle Konfiguration. Die Haupt-Konfiguration "CPCEMU.CFG" läßt sich nicht überschreiben. Poke-Datenbank Falls Sie gerade ein Spiel spielen und nicht weiterkommen, wählen Sie diesen Menüpunkt. Falls das Spiel sich in der Übersicht befindet, wählen Sie es aus und Sie bekommen eine Erleichterung, zum Beispiel unendliche Leben. Sie können die Liste (CPCEMU.DBF) auch um eigene Pokes erweitern. Der Aufbau der Datei steht in Kapitel 7. DOS-Shell {nur DOS} Öffnet eine DOS-Shell mit viel freiem Speicher, die Sie durch Eingabe von 'EXIT' wieder verlassen können. Fortsetzen Werte übernehmen und Programm fortsetzen. Die geänderten Werte werden übernommen und die Emulation wird fortgesetzt. Den gleichen Effekt bekommen Sie auch, wenn Sie auf einem beliebigen Menüpunkt (mit Zahl) drücken. 4.2 Konfigurationsdatei ======================== Mit einer Konfigurationsdatei können Sie CPCEMU auch konfigurieren. Beim Start liest CPCEMU standardmäßig die Konfigurationsdatei CPCEMU.CFG. Beachten Sie, daß diese Datei im TMP-Verzeichnis steht, falls Sie CPCEMU mit einer CPCxxx.BAT Datei starten. Das ermöglicht benutzerdefinierte Konfigurationen, auch wenn CPCEMU auf einer CD-ROM ist. Der Aufbau dieser Datei soll jetzt beschrieben werden, so daß Sie selber leicht z.B. eigene ROMs einbinden können, die Tastatur dauerhaft umstellen können, ... Werfen wir einmal einen Blick in die CPCEMU.CFG Datei: ;CPCEMU.CFG - The Configuration File for CPCEMU (v1.5) ;Marco Vieth, 20.11.1997 ; ;standard configuration for CPC 464, 664, 6128, 464+, 6128+, KC compact ; SHOW_CONFIG=0 ;should the configuration be displayed? CPC_TYPE = 2 ;CPC 6128, if no command line parameter -t ... Schon an diesen paar Zeilen läßt sich der einfache Aufbau erkennen: Kommentare beginnen mit einem Semikolon (";"). Optionen werden geändert, indem ein Schlüsselwort (hier SHOW_CONFIG, ROM_PATH) gefolgt von "=" gefolgt von einem stehen. kann je nach Schlüsselwort eine Zeichenkette oder auch ein numerischer Wert sein. Numerische Werte können nicht nur in dezimaler Form, sondern auch in hexadezimaler ("0x") oder binärer ("%") Zahlendarstellung angegeben werden. Sie brauchen also nur die Bedeutung der Schlüsselwörter zu kennen, um die Optionen leicht mit einem Texteditor an Ihre Bedürfnisse anzupassen. Die meisten Schlüsselwörter kennen Sie schon aus dem Setup-Menü. Sie müssen allerdings in Englisch angegeben werden. Zuerst eine alphabetische Übersicht, dann Erklärungen zu den speziellen: #ENDIF #IFCPC AMSDOS_DISABLED AMSDOS abschalten AMSDOS_SPEEDUP AMSDOS-Beschleunigung BREAK_MASK Unterbrechungs-Maske COLOUR_SCREEN Farbbildschirm COMPANY_NAME Firmenname CPC_TYPE CPC-Typ DATA_FILE Datendatei DRIVE_A Laufwerk A DRIVE_A_AUTOSTART Laufwerk A: Autostart DRIVE_A_SIDE Laufwerk A: Seite DRIVE_A_WRITEPROT Laufwerk A: Schreibschutz DRIVE_B Laufwerk B DRIVE_B_AUTOSTART Laufwerk B: Autostart DRIVE_B_SIDE Laufwerk B: Seite DRIVE_B_WRITEPROT Laufwerk b: Schreibschutz EMS_ENABLED EMS erlaubt EMULATION_DELAY Emulations-Verzögerung EMULATION_SPEED Emulations-Geschwindigkeit HELP_FILE Hilfs-Datei INTERRUPT_FREQUENCY Interrupt-Frequenz INTERRUPT_RESUME Interrupts nachholen JOY0_CALIBRATE Joystick 0 kalibrieren JOY1_CALIBRATE Joystick 1 kalibrieren KBD_LANGUAGE Tastatur-Layout LANGUAGE Sprache MOUSE_ENABLED Maus erlaubt MULTIMODE_UPDATE Multimodes sofort auffrischen PALETTE_CHANGE Palettenänderungen POKE_DATABASE Poke-Datenbank PPI_50HZ PPI-50Hz-Bit PPI_EXP_SIGNAL PPI-Expansions-Signal-Bit PRINTER Drucker RAM_SIZE RAM-Größe REALTIME Echtzeit-CPC ROM_BLOCK ROM-Block ROM_PATH ROM-Pfad SB_DELAY Soundblaster-Verzögerung SB_DELAY0 Soundblaster-Verzögerung 0 SB_DMA_BUF Soundblaster-DMA-Puffergröße SB_SAMPLE_RATE Soundblaster-Sampling-Rate SB_STEREO Soundblaster-Stereo SCREEN_OFFSET Bildschirm-Verschiebung SHOW_CONFIG Zeige Konfiguration SNAPSHOT Schnappschuß SOUND_DEVICE Sound-Ausgebegerät SOUND_ENABLED Soundausgabe erlaubt TAPE_BYPASS Kassetten-Umleitung TAPE_PATH Kassetten-Pfad TMP_PATH Temporäres Verzeichnis VIDEO_MODE Video-Modus VSYNC_POSITION Vertikale Sync-Position - #ENDIF, #IFCPC Diese Steuerbefehle ermöglichen eine bedingte Konfiguration je nach gewünschtem CPC: #IFCPC ... #ENDIF Als sind alle 4 Typen wie bei "CPC_TYPE" zulässig. Somit kommen Sie mit einer Konfigurationsdatei für alle CPCs aus. In den Batch-Dateien CPC464.BAT, CPC664.BAT, CPC6128.BAT wird der gewünschte CPC durch Kommandozeilen-Parameter gewählt. Diese werden im nächsten Abschnitt beschrieben. - DATA_FILE = "" Setzt die Daten-Datei (CPCEMU.DAT). - DRIVE_A = "" Setzt den Pfad, wo sich die Disketten-Abbilder befinden. Geben Sie als Pfad einen Dateinamen an, wird diese "Diskette" beim Start des Emulators automatisch in Laufwerk A "gelegt". Im Abschnitt 3.2.1 habe ich das Laden von und Speichern auf Diskette beschrieben. - DRIVE_A_AUTOSTART Startet automatisch das erste BASIC-Programm, wenn ein Disketten-Abbild eingelegt wird. Alternativ wird DISC.BAS gestartet, falls vorhanden. Mit dem AMSDOS-Befehl |DIR können Sie schauen, welches das erste BASIC-Programm ist. - DRIVE_A_SIDE Bei doppelseitigen Formaten kann mit dieser Option die Seite 1 (B) gewählt werden. - DRIVE_A_WRITEPROT Das Disketten-Abbild wird schreibgeschützt eingelegt. Das ist sinnvoll, wenn es nicht modifiziert werden soll oder sich auf einem Nur-Lese-Medium (z.B. CD-ROM) befindet. - DRIVE_B = "" Ist das gleiche wie DRIVE_A, nur für Laufwerk B. - DRIVE_B_AUTOSTART Ist das gleiche wie DRIVE_A_AUTOSTART, nur für Laufwerk B. - DRIVE_B_SIDE Ist das gleiche wie DRIVE_A_SIDE, nur für Laufwerk B. - DRIVE_B_WRITEPROT Ist das gleiche wie DRIVE_A_WRITEPROT, nur für Laufwerk B. - JOY0_CALIBRATE = , , , Hier geben Sie eine Joystick-Kalibrierung für Ihren Analog-Joystick an. Benutzen Sie die Werte, die nach der Joystick-Kalibrierung im Setup-Menü angezeigt werden (siehe Abschnitt 4.1). Dies ist ein Schlüsselwort, dem 4 Werte zugewiesen werden, diese müssen Sie auch immer angeben. Vier Nullen bedeutet nicht kalibriert. - JOY1_CALIBRATE = , , , Genauso wie JOY0_CALIBRATE. - POKE_DATABASE = "" Setzt die Poke-Datenbank-Datei (CPCEMU.DBF). - PRINTER = "" Hier legen Sie eine Drucker-Datei fest, in die Druckerausgaben umgeleitet werden. Beim jedem Start des Emulators wird sie gelöscht. Nachdem Sie den Emulator verlassen haben, schicken Sie diese Datei mit 'COPY prn:' zu Ihrem Drucker. Bei PRINTER="prn" wird ohne Druckerdatei auf dem Drucker ausgedruckt. Bei PRINTER="" wird die parallele Schnittstelle LPT1 direkt angesprochen. - ROM_BLOCK = , "", Beschreibt, was für ein ROM geladen werden soll. Sie müssen diese Zeile für jedes zu ladende ROM wiederholen. Jedes ROM besitzt dabei eine Größe von 0x4000 Bytes. Die maximale Anzahl der ROMs ist etwa 20, wenn Sie EMS-Speicher haben. - ist die Nummer die das ROM bekommen soll, d.h., mit der es durch 'OUT &DF00,num' ausgewählt wird. 0 = Vordergrund-ROM (z.B. BASIC) 1 - 251 = Hintergrund-ROMs. Auf einem CPC 664/6128 werden die ROMs 1-15 bei einem Reset automatisch initialisiert (bei einem CPC 464 nur 1-7). Das AMSDOS ROM hat immer die Nummer 7. 255 = Lower-ROM (z.B. OS, hat nur im Emulator diese Nummer.) - ist die Datei, in der sich das ROM-Abbild im Verzeichnis ROM_PATH befindet. - ist die Positon des ROMs innerhalb der Datei, 0 bedeutet 0.ROM, 1 bedeutet 1.ROM, usw... Es ist also möglich, mehrere ROMs in einer Datei zu haben. Bei den Einträgen ROM_BLOCK = 255, "CPC6128.ROM", 0 ROM_BLOCK = 0 , "CPC6128.ROM", 1 befinden sich also Lower-ROM und Vordergrund-ROM direkt nacheinander in derselben Datei. - ROM_PATH = "" Setzt den Pfad, wo sich die ROM-Abbilder befinden, aus denen CPCEMU beim Start die ROMs liest. Die Konfigurationsdatei setzt das Verzeichnis .\ROM . Die ROMs selber werden mit dem Schlüsselwort ROM_BLOCK festgelegt. - SNAPSHOT = "" Setzt den Pfad, wo sich die Snapshots befinden. Geben Sie als Pfad einen Dateinamen an, wird dieser Snapshot automatisch gestartet. Im Abschnitt 3.2.3 habe ich das Laden und Speichern von Snapshots beschrieben. - TAPE_PATH = "" Setzt den Pfad, wo sich die "Kassetten"-Dateien befinden. Die Konfigurationsdatei setzt das Verzeichnis ".\TAPE". Im Abschnitt 3.2.2 habe ich das Laden von und Speichern auf Kassette beschrieben. - TMP_PATH = "" Setzt den Pfad, in dem CPCEMU temporäre Dateien erzeugt. Dieser wird hauptsächlich benötigt, wenn Sie aus einem ZIP-Archiv Dateien auswählen und CPCEMU diese mit PKUNZIP entpackt. 4.3 Kommandozeilen-Parameter ============================= Wie bei vielen anderen Programmen üblich, können Sie auch bei CPCEMU Kommandozeilen-Parameter angeben. Zur Zeit sind jedoch nur einige wenige möglich. Rufen Sie CPCxxx.BAT einfach mit den folgenden Optionen auf: /f : startet die schnelle Emulation (Standardeinstellung) /s : startet eine langsame Emulation, die Sie normalerweise nicht benötigen. /d : startet den Debug-Modus, sehen Sie im Kapitel 7 nach. /x : verbietet EMS Benutzung /c : gibt eine andere Konfigurationsdatei an, falls nicht die Standard-Datei CPCEMU.CFG benutzt werden soll. Siehe vorherigen Abschnitt. /t : definiert den gewünschten CPC 464, 664, 6128, CPC 464+, CPC 6128+ oder KC compact durch /t 0 bis /t 5. /h : zeigt einen Hilfsbildschirm an Wenn Sie eine unbekannte Option angeben, wird automatisch "/d" verwendet. Anstatt dem "/" können Sie auch das UNIX-übliche "-" verwenden. 5. Datenübertragung CPC <-> PC ******************************* Was nützt Ihnen der schönste Emulator, wenn Sie keine Programme dafür haben oder keine Möglichkeit sehen, die Programme von Ihrem CPC zum PC zu bekommen? Im Kapitel 6 (Bezugsquellen) sind auch einige Quellen aufgeführt, wo Sie CPC-Software bekommen können. In diesem Kapitel soll es darum gehen, wie Sie eigene CPC-Software auf den PC transferieren. Für die verschiedenen Möglichkeiten (Diskette, über parallele oder serielle Schnittstelle) werden auch Hilfsprogramme vorgestellt. 5.1 Diskette als Medium ======================== Dies ist meistens die einfachste und schnellste Möglichkeit, die CPC-Software auf den PC zu bekommen. Sie brauchen dazu nur einen CPC mit Zweitlaufwerk in richtiger Größe. Richtige Größe bedeutet dabei, daß die Disketten von der Größe her in Ihr PC-Laufwerk passen müssen. Ansonsten könnten Sie versuchen, ein 3" Laufwerk an den PC anzuschließen. Der PC wird dann mit einem Zusatzprogramm überredet, die CPC-Diskettenformate zu lesen. Dieses Zusatzprogramm heißt CPCTRANS. 5.1.1 Das Diskettentransferprogramm CPCTRANS --------------------------------------------- Ich habe CPCTRANS geschrieben, um Disketten-Abbilder aus CPC-Disketten zu erstellen. Es werden sowohl die normalen CPC-Formate als auch das doppelseitige VORTEX-Format gelesen. CPCTRANS ist nicht dafür gedacht, kopiergeschützte Formate zu übertragen! Wenn Sie CPCTRANS ohne Parameter aufrufen, erhalten Sie eine kurze Übersicht. Rufen Sie CPCTRANS ähnlich wie den DOS COPY-Befehl auf: 'CPCTRANS '. Beispiele: 'CPCTRANS B: DISK1.DSK' kopiert die Diskette im Laufwerk B in das Disketten-Abbild DISK1.DSK. Falls diese nicht existiert, wird sie neu erzeugt. 'CPCTRANS DISK1.DSK B:' kopiert das Disketten-Abbild zurück auf die Diskette im Laufwerk B. Der erste Befehl funktioniert nur für das DATA-Format. Für andere Formate müssen Sie eine Option angeben: /f 0 : DATA-Format (Standard) /f 1 : DATA-Format, doppelseitig /f 2 : SYSTEM-Format /f 3 : SYSTEM-Format, doppelseitig /f 4 : VORTEX-Format, doppelseitig /f 5 : unbekannt, CPCTRANS versucht es selber zu erkennen. /f 6 : +3DOS Beachten Sie das Leerzeichen zwischen "/f" und der Zahl. Beim doppelseitigen DATA- und SYSTEM-Format wählen Sie die Seite A oder B im Disketten-Menü (3.2.1). Beim Zurückschreiben eines Disketten-Abbildes muß die Diskette schon mit dem richtigen Format formatiert sein! Dazu können Sie 22DISK benutzen, was im nächsten Abschnitt beschrieben wird. Wollen Sie die B-Seite einer Diskette kopieren, wählen Sie Seite B durch die Option "/s 1". Durch 'CPCTRANS B: DISK1.DSK /s 1' wird also nur die B-Seite der Diskette kopiert, mit 'CPCTRANS DISK1.DSK B: /s 1' wird sie wieder zurückgeschrieben. Durch die Option '/v' schalten Sie "verify" ein, d.h. es wird überprüft, ob die Daten korrekt kopiert wurden. Das ist zwar ein bißchen langsamer, erhöht aber die Sicherheit. Mit der Option '/t ' geben Sie an, wieviele Spuren (tracks) kopiert werden sollen. Normalerweise werden immer 40 Spuren kopiert, nur beim VORTEX-Format sind es 80. Eine Besonderheit ist die Option '/q' (Quick-Format). Hiermit formatieren Sie ein Disketten-Abbild, anstatt den Inhalt einer Diskette hineinzukopieren. Trotzdem müssen Sie als ersten Parameter ein gültiges Laufwerk angeben, auch wenn es nicht benutzt wird. Beispiel: 'CPCTRANS a: SYSTEM.DSK /f 2 /q' formatiert SYSTEM.DSK als SYSTEM-Format-Diskette. 5.1.2 Das Formatier- und Kopierprogramm 22DISK von SYDEX --------------------------------------------------------- Dieses Programm ist als Shareware erhältlich. Durch geeignete Definitionen können Sie sämtliche CP/M-Formate benutzen! Leider sind gerade die CPC-Formate in der Prüfversion von 22DISK nicht enthalten. Deshalb habe ich diese Formate in der Datei CPMDISKS.DEF definiert. Sie befindet sich auch im UTILITY-Verzeichnis. Was können Sie mit 22DISK machen? Sie können einzelne Dateien zwischen DOS und den Fremdformaten hin- und herkopieren, Disketten formatieren und so weiter. Kopieren Sie die CPC-Dateien einfach in das TAPE-Verzeichnis, und lesen Sie im Abschnitt 3.2.2 nach, wie Sie Programme von Kassette laden. 5.2 Parallele Schnittstelle ============================ Falls Sie noch einen CPC ohne Zweitlaufwerk besitzen, haben Sie die Möglichkeit, den Datentransfer über die parallele Schnittstelle zu tätigen. Ursprünglich hatte Gilles Molinari diese Idee und auch Turbo-Pascal Programme dazu geschrieben. Nur gehören Sie vielleicht zu den Benutzern, die keinen Turbo-Pascal Compiler auf den CPC haben, somit könnten Sie damit nicht viel anfangen. Ich habe sie deshalb in Locomotive-BASIC umgeschrieben und durch die zusätzliche Richtung PC->CPC ergänzt. Es ist also möglich, Programme vom CPC zum PC und umgekehrt zu übertragen! CPC und PC werden dabei an den Druckerschnittstellen gekoppelt. Wenn Sie einen CPC 6128 haben und sich die Anschlüsse mal genauer ansehen, werden Sie feststellen, daß Sie mit einem parallelen PC-Druckerkabel die beiden Computer hervorragend verbinden können! Doch tun Sie es noch nicht, lesen Sie erst weiter. Wenn Sie einen Amstrad CPC 6128 ohne Centronics-Buchse oder einen CPC 464/664 haben, benutzen Sie das Diagramm am Ende des Abschnitts. Zwei kleine Hürden müssen Sie überwinden: 1. Einen kleinen Adapter bauen 2. Ein kurzes Programm in den CPC eintippen Warten Sie! Blättern Sie nicht gleich weiter! Beide Schritte sind ganz einfach, denn 1. geht auch OHNE LÖTEN und 2. ist wirklich ziemlich kurz (etwa 30 Zeilen BASIC) Zu 2. Das Programm, was Sie brauchen, heißt CPCREC.BAS und befindet sich im UTILITY-Verzeichnis. Es ist in ASCII-Form abgespeichert, so daß Sie es problemlos ausdrucken und in Ihren CPC eintippen können. Es erfüllt in etwa die Aufgabe eines dünnen Seiles, das Sie durch ein Rohr schicken, um ein dickes Tau nachziehen zu können. Das dünne Seil ist hier CPCREC.BAS und empfängt (receive) Programme vom PC. Mit diesem "Progrämmchen" holen Sie das Programm CPCPARA.BAS (das dicke Tau) auf Ihren CPC. Damit können Sie sowohl Programme empfangen als auch senden. CPCREC.BAS brauchen Sie dann nicht mehr. Auf der PC-Seite haben Sie die ganze Zeit PCPARA.EXE. Natürlich sind auch diese beiden Programme im UTILITY-Verzeichnis. Doch bevor Sie CPCREC.BAS eintippen, kommen wir zu 1. Der parallele Adapter --------------------- Sie brauchen also einen Adapter zwischen dem PC-Druckerkabel und dem PC-Druckeranschluß. Am einfachsten geht das mit einer RS-232 Wiring-Box, die einen 25pin D-Sub Stecker und eine 25pin D-Sub Buchse hat. Durch Stecken von kurzen Drahtbrücken realisieren Sie damit beliebige Verbindungen zwischen den beiden Seiten. Normalerweise wird so eine Box - wie ihr Name schon sagt - zur Anpassung von RS-232 Schnittstellen benutzt. Serielle Verbindungen scheinen nämlich nie auf Anhieb zu funktionieren. Bei unserem Adapter benutzen Sie die Box einfach "andersherum", d.h. der Stecker kommt an den PC, in die Buchse kommt dann das PC-Druckerkabel. Stecken wir die Box eben zusammen: Stecker für den PC- Buchse für das Drucker- Druckeranschluß (links): kabel (rechts): Pin 2 --------------- Pin 11 Pin 10 --------------- Pin 8 Pin 11 --------------- Pin 1 Pin 12 --------------- Pin 7 Pin 13 --------------- Pin 6 Pin 15 --------------- Pin 5 Pin 19 --------------- Pin 19 Wie Sie sehen, brauchen Sie nicht alle 25 Drahtbrücken sondern nur 7. Meine Wiring-Box habe ich bei einem Elektronik-Versand für 13 DM bekommen. Sie können es natürlich auch günstiger haben, indem Sie eine sogenannte Jumper-Box verwenden, bei der Sie die Drahtbrücken festlöten müssen. Diese sollte etwa 7 DM kosten. Noch günstiger sind Stecker, Buchse, Adapter-Gehäuse und ein paar Drähte. Das hat mich etwa 3 DM gekostet. Sie haben jetzt mit dem Adapter die beiden Computer verbunden und das "Progrämmchen" CPCREC.BAS in den CPC eingetippt. Wie geht es nun weiter? 1. Auf dem CPC: CPCREC.BAS starten (nachdem Sie es abgespeichert haben) 2. Auf dem PC : 'PCPARA /s CPCPARA.BAS' starten. Jetzt wird es kritisch, denn wenn auf dem PC keine Fehler gemeldet werden, ist alles gut verlaufen, das Programm ist auf dem CPC. Falls der PC überhaupt nichts sendet und nur eine Fehlermeldung ausgibt, ist die Verbindung wahrscheinlich nicht in Ordnung. Falls er etwas sendet ("Sending block xx"), aber zwischendurch Fehler auftreten, ist Ihr PC vielleicht zu schnell oder zu langsam. Die Richtung PC->CPC ist nämlich ziemlich zeitkritisch. Auf meinem 386/33 darf ich kein EMS installiert haben, sonst ist es zu langsam. Auf einem besonders schnellen Computer könnte es aber nötig Sein, die Taktfrequenz herunterzuschalten. Benutzen Sie es unter DOS, nicht unter OS/2 oder Windows. Wenn es überhaupt nicht klappen sollte, benachrichtigen Sie mich. In der Zwischenzeit könnten Sie das etwas längere CPCPARA.BAS eintippen, die Richtung CPC->PC funktioniert nämlich immer, auch unter OS/2, da das nicht viel anders ist als ausdrucken. Der PC spielt dabei den Drucker. Ich nehme an, daß Sie jetzt CPCPARA.BAS auf Ihrem CPC haben. Übertragen Sie Dateien vom CPC zum PC folgendermaßen: 1. Auf dem PC: 'PCPARA /r' eingeben. 2. Auf dem CPC: CPCPARA starten, Menüpunkt S)end wählen, und nacheinander die zu übertragenden Dateien eingeben. (Rufen Sie 'PCPARA /r' für jede zu übertragende Datei erneut auf, CPCPARA hingegen läuft in einer Endlosschleife.) Sie benutzen also PCPARA folgendermaßen: - PCPARA /r : startet PCPARA im Empfangsmodus - PCPARA /s : sendet die zum CPC, falls Sie als Datei 'TRM:' angeben, bekommen Sie ein Terminal. Bei den meisten Programmen im UTILITY-Verzeichnis bekommen Sie übrigens eine Übersicht über die Optionen, wenn Sie nur den Dateinamen eingeben. WARNUNG: Auch wenn der Aufbau ganz simpel ist, kann ich doch nicht garantieren, daß Sie dabei nicht irgend etwas kaputtmachen. Wenn z.B. nachher Ihr CPC-Druckerport defekt ist, dann ist das schade und wohl eher ein dummer Zufall. Wahrscheinlich wäre er auch dann kaputtgegangen, wenn Sie nur Ihren Drucker angeschlossen hätten. Ich kenne z.B. einen ehemaligen CPC-Benutzer, dessen Tastatur mal nicht mehr funktionierte. Nach der Reperatur sagte man ihm, er dürfe den Joystick auch nicht bei angeschaltetem Computer einstöpseln! (Also ich mache das immer ?!?) Also: Der Adapter wurde nicht nur von mir schon mehrfach erfolgreich nachgebaut. Und auch Benutzer, die "mal vergessen" haben, den Adapter zwischen der Verbindung anzubringen, berichten von keinen Problemen. Diagramme von David Chapeau, falls Ihr CPC keinen Centronics-Anschuß hat: 34 <- - - - - - - - 18 \ ______________________ | | ________________ | | | |________________| | - | ---> Buchse für CPC-Druckeranschluß |______________________| | | 17 < - - - - - - - - 1 | | |||||||||||||||||| | |||||||||||||||||| \ |||||||||||||||||| > "CPC 464/664 nach DMP 2160"-Kabel |||||||||||||||||| / |||||||||||||||||| | | 1 - - - - - - - - > 18 | ________________________ | \ ______________ / | \ |______________| / - | ---> Centronics-Stecker \__________________/ | | 19 - - - - - - - -> 36 / 18 < - - - - - - - - 1 \ ________________________ | \ ______________ / | \ |______________| / - | ---> Centronics-Buchse \__________________/ | | 36 <- - - - - - - - 19 | | |||||||||||||||||| | |||||||||||||||||| \ |||||||||||||||||| > PC Parallel Adapter |||||||||||||||||| / |||||||||||||||||| | | 1 - - - - - - - - > 13 | ________________________ | \ .................. / | \ ................ / - | ---> Sub-D Stecker zum PC (LPT1) \__________________/ | | 14 - - - - - - - -> 25 / 13 < - - - - - - - - 1 \ ________________________ | \ .................. / | \ ................ / - | ---> Sub-D Buchse \__________________/ | | 25 <- - - - - - - - 14 | | |||||||||||||||||| | |||||||||||||||||| \ |||||||||||||||||| > RS-232 "Wiring-Box" |||||||||||||||||| / |||||||||||||||||| | | 1 - - - - - - - - > 13 | ________________________ | \ .................. / | \ ................ / - | ---> Sub-D Stecker zum PC (LPT1) \__________________/ | | 14 - - - - - - - -> 25 / Drucker Centronics Centronics Sub-D Sub-D Sub-D (Buchse) (Stecker) (Buchse) (Stecker) (Buchse) (Stecker) 1 --------- 1 1 --------- 1 11 --------- 2 . . 8 --------- 10 . . 1 --------- 11 . . 7 --------- 12 17 --------- 17 14 --------- 14 6 --------- 13 18 --------- 19 19 --------- 19 5 --------- 15 . 21 --------- 20 19 --------- 19 . 23 --------- 21 . 25 --------- 22 34 --------- 35 27 --------- 23 29 --------- 24 30 --------- 25 31 --------- 16 32 --------- 15 33 --------- 18 36 --------- 17 Übertragungsgeschwindigkeit CPCPARA -> PCPARA (v1.1): Mit der eingebauten Statistik wurden folgende Übertrangungsraten für einen 0x4000 Byte-Block vom CPC zum PC gemessen: Quelle auf dem CPC: Bytes/s: bit/s: ----------------------------------------------------------- Datei von Diskette: 1600 12800 Block aus dem Speicher: 2240 17920 Block aus Speicher,keine Int. 2445 19560 (poke &b941,&c9 auf CPC 6128) Das Senden eines Blocks wurde in BASIC folgendermaßen realisiert: defstr a:a="test.$$$":call sstr,@a a=string$(&80):for i=1 to &80:call sstr,@a:next:call sbyte,0:stop Weitere Informationen zum parallelen Adapter finden Sie im Kapitel 7. 5.3 Serielle Schnittstelle =========================== Falls Sie eine serielle Schnittstelle am CPC haben, können Sie die Daten natürlich auch seriell übertragen. 5.4 Sonstige Möglichkeiten =========================== Es gibt auch abenteuerlichere Methoden, an seine Software zu kommen. - 3" Diskettenlaufwerk an den PC anschließen. Manche (ältere) Modelle sollen direkt an den 5.25"-Anschluß passen. - Mit Hilfe des Spectrum+3 (oder so) die 3" Disketten einlesen, in das Spectrum-Format konvertieren und mit einem Hilfsprogramm auf den PC übertragen. Dieses Hilfsprogramm soll dem Spectrum-Emulator Z80 von Gerton Lunter beiliegen. - Als es noch nötig war, irgendwie an die ROMs zu kommen, hat mir ein Benutzer von seiner Methode berichtet: Er hat den ROM-Chip aus dem CPC ausgebaut und anstatt des VGA-BIOS in seine Grafikkarte eingesetzt. Mit einem kleinen Programm konnte er dann den Inhalt auslesen. - Vielleicht finden Sie noch Ihre eigene Methode? 6. Bezugsquellen, Hilfe bei Problemen, Danksagungen **************************************************** In diesem Kapitel erfahren Sie, woher Sie CPC-Software beziehen können und an wen Sie sich bei weiteren Fragen wenden können. Außerdem erwähne ich noch einige andere Amstrad-Emulatoren. 6.1 Sie möchten CPC Software ? =============================== Kein Problem. Wenn Sie Internet-Zugang oder ein Modem haben. Wie für die Spectrum-Emulatoren gibt es mittlerweile auch für den (oder die) CPC-Emulator(en) "anonyme" Archive, von denen Sie per FTP, oder WWW Software bekommen können. FTP --- - ftp.nvg.unit.no : /pub/cpc, Arnt Gulbrandsen hat das Archiv bereitgestellt und Noel Llopis verwaltet es; ROMs, CPC-Programme, Emulatoren. Eines der größten Archive mit CPC-Programmen. Eigene Programme können Sie unter /pub/cpc/incoming ablegen. - sunshine.informatik.uni-wuerzburg.de:/pub/joscho/cpcemu Ein Mirror von ftp.nvg.unit.no. Fragen, Bemerkungen und Ergänzungen richten Sie bitte an joscho@informatik.uni-wuerzburg.de. Wenn Sie Verbindungsprobleme nach Norwegen haben, können Sie es hier versuchen. - ftp://ftp.lip6.fr/pub/amstrad, dank an Remy Card, ftp://ftp.lip6.fr/pub/amstrad/frontend/menu.htm (HTML-Frontend) Alle Fragen zu diesem Archiv richten Sie bitte an roussin@genesis8.frmug.org. Alle Dateien kommen von 'Genesis the 8bit generation BBS' (siehe unten). - ftp.demon.co.uk:/pub/cpm, dank Paul Martin Hauptsächlich Amstrad CP/M-Programme. Paul Martin ist bereit, Ihnen seine "CP/M Plus ROMs" zuzuschicken, falls Sie das originale Amstrad CP/M Plus haben. Sie müssen das natürlich irgendwie beweisen. - oak.oakland.edu : /Simtel/msdos/emulator/cpcemu15.zip - Weitere Simtel-Mirrors: ftp.ibp.fr : /pub3/pc/SimTel/msdos/emulator/ ftp.demon.co.uk : /simtel/msdos. ftp.uni-paderborn.de WWW --- - http://andercheran.aiind.upv.es/~amstrad and an UK mirror: http://www.dcs.warwick.ac.uk/~divine/~amstrad/ - ...und viele weitere, die ich hier nicht aufführen möchte, da sie sich dauernd ändern BBS --- - Aspects 2:250/107 : +44 617920260, England - Genesis the 8bit generation (2:320/220) : +33 1 53 95 32 43 (modem/ISDN) & 44 (modem), Paris (FRANCE), sysop : Emmanuel Roussin. - ZNODE 51 : + 49 89 961 45 75, Deutschland, von 15:00 to 3:00 CET (MEZ), bis V32b, CPC-Programme - ...und einige mehr 6.2 Sie möchten immer auf dem laufenden bleiben ? ================================================== Sie möchten immer die neuste Version von CPCEMU haben? Sie möchten informiert werden, wenn eine neue veröffentlicht wird? Mittlerweile gibt es eine eigene CPC-Newsgruppe! Sie heißt comp.sys.amstrad.8bit. Dort finden Diskussionen rund um den CPC (und eben auch CPCEMU) statt. Hier können Sie natürlich ganz unverbindlich Ihre Erfahrungen austauschen. Es ist auch ein FAQ (frequently asked questions, häufig gestellte Fragen) zu dieser Newsgroup verfügbar (ftp://ftp.lip6.fr/pub/amstrad/amstrad.htm, FAQ in HTML). Falls Sie keine Möglichkeit haben, die Newsgruppe zu lesen, schreiben Sie mir kurz eine E-Mail. Meine Adresse steht im nächsten Abschnitt. Mit normaler Post können Sie bei mir (oder bei David, siehe unten) natürlich auch nachfragen, aber nicht das Rückporto vergessen. Falls Sie mir eine Anerkennung zukommen lassen haben, fühle ich mich normalerweise verpflichtet, Ihnen mindestens 1 bis 2 Mal die neuste Version zukommen zu lassen. 6.3 Wenn Sie Fragen oder Anregungen haben ========================================== Dann wenden Sie sich direkt an mich: Marco Vieth Auf dem Ükern 4 D-33165 Lichtenau Germany Tel./Fax: 05292/1366 Internet: cpcemu@hotmail.com (ali@uni-paderborn.de nur gültig bis 1.10.98) Wie Sie vielleicht schon wegen der Internet-Adresse vermuten, habe ich Informatik an der Uni Paderborn studiert. Ich habe das Studium im Frühjahr 1997 abgeschlossen und leiste jetzt Zivildienst. Falls Sie Englisch sprechen oder schreiben, können Sie sich auch an David Cantrell wenden: David Cantrell 116, London Road Bexhill-on-sea East Sussex TN39 4AA England Phone: +44-1424-221015 Internet: david@diablo.eimages.co.uk ftp://ftp.eimages.co.uk/users/davidc/cpc/ http://www.ThePentagon.com/NukeEmUp/uaug David hat mir angeboten, mich bei der "Flut von Anfragen" zu unterstützen. Er hat das Firmware-Manual für den CPC eingescannt und überarbeitet, so daß es jetzt jedem in einer elektronischen Form zur Verfügung steht. Ich akzeptiere jede Form von Unterstützung, ob ideell oder finanziell. (30 DM bis 50 DM wären angemessen.) Normalerweise ist auf die Post (wenigstens) soviel Verlaß, daß Geldscheine in zugeklebten Briefen auch ankommen. (Die "Unglücksfälle", die manchmal bei "Wie bitte ?" vorgestellt werden, sind hoffentlich nur die Ausnahme. Wenn z.B. ein Güterwaggon vollbeladen mit Postsendungen monatelang in einem Ausbesserungswerk vergessen wurde ...) Falls Sie den bargeldlosen Zahlungsverkehr bevorzugen: Marco Vieth, Sparkasse Paderborn, BLZ: 47250101, Kto.Nr: 54111091 Auch wenn Sie mir kein Geld schicken, beantworte und berücksichtige ich normalerweise alle Ihre Fragen und Anregungen (und David sicher auch). 6.4 Andere Amstrad CPC Emulatoren ================================== Noch Anfang 1994 hätte ich gesagt, CPCEMU ist der einzige Emulator für den Amstrad CPC. Mittlerweile sind mir jedoch drei andere bekannt: - SIMCPC: Vermutlich der erste CPC-Emulator überhaupt. CPC-Emulator für PC/XT/AT (c) 1989, 90 by GHE, Aachen Nur schwarzweiß, aber mit zusätzlichen ROMs; insgesamt nur eine "Bierlaune". - CPC2PCxx: Wird seit Oktober 1993 von Paco Lopez aus Spanien entwickelt. Ist jetzt auf einigen Archiven verfügbar. Ist vollständig im Protected Mode und benutzt dasselbe Disketten-Format wie CPCEMU. - CPE: In Entwickung von Bernd Schmidt aus Aachen. Durch einen speziellen 50 Hertz Bildschirm-Modus werden einige Farbbalken exakt nachgebildet. Außerdem werden Multi-Modes und Overscan unterstützt. Mit einer Spezialversion im 256-Farben-Modus werden exakte Farbbalken mit mehr als 50 Hertz dargestellt. Mittlerweile gibt es die Version v5.2. 6.5 Pläne für weitere CPCEMU-Versionen ======================================= - Overscan - Bessere Multi-Modes - Bildschirm zentrieren in höheren Auflösungen - Schnelles Hardware-Scrolling - wählbare Bildschirmvergrößerung - auf amerikanischen Tastaturen fehlt "<>", ALTgr - Expansions-Port des CPC nachbilden - direktes Laden von CPC-Disketten - Laden von CPC-Kassetten über die Druckerschnittstelle oder über eine Soundblaster-Karte - Übertragen von Disketten mit dem parallelen Adapter - Änderung der Soundblaster-Lautstärke - Digiblaster-Emulation - Joystick-Tasten selber definieren - Maus als Joystick benutzen - automatische Erkennung von .SNA und .DSK Vielleicht wird es nie eingebaut, da ich erst einmal meine Diplomarbeit schreiben muß und nebenbei ein wenig "richtig" arbeite... 6.6 Danksagungen ================= - Besonderen Dank an Jürgen Weber, der mir nicht nur sehr viele Tips gegeben und Verbesserungsvorschläge gemacht hat, sondern vor allem die schnelle Z80-Emulation aus seinem CP/M-Emulator ZSIM beigesteuert hat. Jürgen G. Weber Wiesentalstraße 1 74523 Schwäbisch Hall Federal Republic of Germany Email: weberj@dia.informatik.uni-stuttgart.de - Außerdem Dank an Bernd Schmidt. Da Bernd einen eigenen Emulator schreibt, standen wir oft vor denselben Problemen. Nur wer selber versucht, einen solchen Emulator zu schreiben, kann ermessen, welche Details überall Probleme bereiten. Es gibt eben keine Dokumentation zum CPC, in der die gesamte Spezifikation enthalten ist. Das meiste muß durch Probieren herausgefunden werden. - Dank an Ulrich Doewich, der die Sound-Ausgabe für Gravis UltraSound eingebaut und die englische Dokumentation dorchgelesen hat. Ulrich entwickelte ein ähnliches Tool wie CPCTRANS. Halten Sie Ausschau nach CPDREAD, dem "Copy-Protected-Disk-Reader", der auch kopiergeschützte Disketten lesen kann. - Dank an Emmanuel Roussin für seinen unermüdlichen Einsatz für den CPC. Er hat wesentlich bei der Erstellung der Newsgruppe mitgewirkt und mir monatelang sein Multiface II geliehen, damit ich es doch in den Emulator einbaue. - Dank auch an Arnt Gulbrandsen, aus dessen JPP-Quellcode ich die Ideen für den Keyboard-Handler und die Joystickabfrage bekam. JPP ist übrigens ein sehr guter Spectrum-Emulator. - Dank an Martin Zacho für die Joystick Routine. - Dank an Fernando J. Echevarrieta Fernandez, der als erster herausfand, daß Version v0.8 keinen CPC 664 emulierte. - Dank an Gilles Molinari für das Transferprogramm für den parallelen Adapter. - Dank an Paul Martin, der die englische Dokumentation zu Version 1.0 korrigiert hat. - Dank an Mark Haigh-Hutchinson, der durchgesetzt hat, daß Spiele der Firma Vortex nun legal in einem Archiv verfügbar sein dürfen. - Dank an Martin Young für seine außergewöhnlichen Ideen, einen Z80 zu emulieren. - Dank an Linh Hsiesh für zahlreiche Verbesserungsvorschläge, wovon die meisten mittlerweile realisiert sein dürften. - Dank an Fred Harris für den Brief, den er wegen der ROMs an AMSTRAD geschrieben hatte. - Dank an Amstrad, insbesondere an Cliff Lawson, daß ich das BASIC-ROM benutzen darf. Natürlich bleibt das Copyright bei Amstrad. Amstrad plc, Brentwood House, 169 Kings Road, Brentwood, Essex CM14 4EF - Dank an Richard Clayton von Locomotive, daß ich das Firmware-ROM benutzen darf. Natürlich bleibt das Copyright bei Locomotive Software. - Und Dank an die vielen anderen Benutzer, die mir Verbesserungs- vorschläge geschrieben haben oder sonstige Ideen hatten. Ohne sie wäre CPCEMU vermutlich nicht einmal bis Version 1.0 gekommen. 6.7 Geschützte Warenzeichen ============================ CP/M, CP/M 2.2 und DRDOS sind von Digital Research, MS-DOS ist von Microsoft, IBM PC, PC-XT, PC-AT und OS/2 sind von International Business Machines, CPC, AMSDOS sind von Amstrad, BORLAND C, TASM (Turbo Assembler) sind von Borland, 22DISK ist von SYDEX Soundblaster ist von Creative Labs ... ------------------------------------------------------------------------------ 7. Interne Informationen zu CPCEMU *********************************** Dieses Kapitel soll ein paar Hintergrundinformationen liefern und die Frage beantworten, WARUM muß ich jetzt dies und das machen. Auch wird das leistungsfähige Debug-Menü erklärt und die Datenformate zu den Disketten-Abbildern und den Snapshots aufgeführt. Ich gebe hier also Informationen, die Sie als Anwender von CPCEMU nicht unbedingt wissen müssen. Allerdings können sie manchmal ganz nützlich sein. Ich habe diese Informationen absichtlich an das Ende, noch nach den geschützten Warenzeichen gesetzt, damit die relative "relative Bedeutungslosigkeit" deutlich wird. Wenn Sie keinen Spaß an unverständlichen Sätzen und unstrukturierten Informationen haben, dann lesen Sie nicht weiter! WARNUNG: Weiterlesen auf eigene Gefahr! 7.1 Inhaltsverzeichnis zu Kapitel 7 ==================================== 7.2 Interne Übersicht über die Leistungsmerkmale von CPCEMU 7.2.1 Die Z80-CPU (Der Prozessor) 7.2.2 Das Gate-Array (Der "Hilfsprozessor") 7.2.3 Das PAL (Programmable Logic Array) 7.2.4 Der CRTC 6845 (Cathode Ray Tube Controller) 7.2.5 Die PIO 8255 (Programmable Input-Output) 7.2.6 Der PSG (Programmable Sound Generator) 7.2.7 Der FDC (Floppy Disc Controller) 7.2.8 Die Centronics-Druckerschnittstelle 7.3 Das Debug-Menü - Aufbau des Debug-Menüs - Vorbemerkungen - Übersicht über die Kommandos - Registermanipulationen 7.4 Die Speicherverwaltung 7.4.1 Noch einmal zur EMS-Konfiguration 7.4.2 Realisierung des Bankings 7.5 ROM-Modifikationen 7.5.1 ROM-Bypass für die Kassette 7.5.2 Modifikationen am AMSDOS-ROM 7.6 Verschiedenes 7.6.1 Noch einmal: Die Konfigurationsdatei 7.6.2 Der parallele Adapter - Richtung CPC->PC - Richtung PC->CPC 7.6.3 CPCTRANS 7.7 Aufbau einiger CPCEMU-Dateien 7.7.1 Disketten-Abbilder - Der Disketten-Informationsblock - Der Spur-Informationsblock 7.7.2 Snapshot-Dateien 7.7.3 AMSDOS-Header 7.7.4 Poke-Datenbank 7.8 Interne History 7.2 Interne Übersicht über die Leistungsmerkmale von CPCEMU ============================================================ Wie kompatibel ist CPCEMU wirklich? 7.2.1 Die Z80-CPU (Der Prozessor) ---------------------------------- + Es werden alle Z80-Befehle emuliert, auch sogenannte illegale Befehle. Es gibt eine langsame Z80-Emulation in C und eine schnelle Emulation in Assembler von Jürgen Weber. Durch die COCPU-Technik, bei der jeder Befehl von den beiden Emulationsarten gleichzeitig ausgeführt wird und danach die Register verglichen werden, wurden zahlreiche Fehler gefunden. Natürlich wurde dies nur während der Programmentwicklung benutzt. Die langsame Z80-Emulation können Sie vom Debug-Menü aus aktivieren. + Nur dem Emulator bekannte Zusatzbefehle der Form ED FC xx, darunter auch der User-Break ED FC FC USER &BCFC. - kein exaktes Timing der Befehle aber Zeit-Kalibrierung im Ectzeit-Modus 7.2.2 Das Gate-Array (Der "Hilfsprozessor") -------------------------------------------- + alle 32 Farben des CPC (27 verschiedene) + alle 3 Bildschirmmodi (X x Y x Farben): Modus 0 = 160x200x16 Modus 1 = 320x200x4 Modus 2 = 640x200x2 + einfache Multi-Modes + ROM-Banking (16KB OS, 16KB BASIC, 16KB AMSDOS, und sonstige Zusatzroms) - Farbbalken flimmern 7.2.3 Das PAL (Programmable Logic Array) ----------------------------------------- Das PAL ist zwar logisch über die gleiche Adresse wie das Gate-Array zu programmieren, hardwaretechnisch aber davon getrennt. + RAM-Banking (128 KB, bis zu 576 KB), mit EMS oder konventionellem Speicher. Mit emuliertem EMS ist es recht flott, da die die Umschaltung per Hardware geschieht. Sie können eine Dk'tronics kompatible Speichererweiterung mit bis zu 576 KB RAM benutzen. - Ohne EMS ist RAM Banking sehr langsam, da Speicherblöcke vertauscht werden müssen. Außerdem haben Sie ohne EMS höchstens 128 KB RAM zur Verfügung. 7.2.4 Der CRTC 6845 (Cathode Ray Tube Controller) -------------------------------------------------- + Bildschirmstart, -offset für Hardware-Scrolling + verschiedene Bildschirmgrößen von 0x0 bis 80x25 mittels CRTC-Register 1 und 6 + unterschiedliche Zeichengrößen (1..7) mit CRTC-Register 9 + für Multi-Modes werden noch einige andere Register benötigt. - Overscan wird noch nicht unterstützt. 7.2.5 Die PIO 8255 (Programmable Input-Output) ----------------------------------------------- + Keyboard (über den PSG) + VSYNC-Emulation: Bit zwischen zwei Interrupts während des Bildaufbaus gesetzt, die Position legen Sie fest. + Kassetten besonders schnell durch ROM-Bypass der den Zugriff auf beliebige DOS-Dateien ermöglicht. - VSYNC-Bit ist zu lange gesetzt - Kassetten-Bits werden nicht emuliert, somit können Sie die meisten Kassetten-Kopierprogramme nicht einsetzen, die direkt auf die Ports zugreifen. 7.2.6 Der PSG AY 3-8912 (Programmable Sound Generator) ------------------------------------------------------- + Entweder über den PC Lautsprecher (schrecklich, da 3 Kanäle auf einen gemischt werden müssen und die Lautstärke nicht geändert werden kann), eine GUS-Soundkarte oder eine Soundblaster-Karte. Von der Soundblaster-Karte wird entweder der digitale Teil benutzt, was perfekten Sound mit Geräuschen ergibt oder nur der Adlib-kompatible FM-Teil ohne Geräusche. - keine Digital-Sounds möglich oder zu langsam. 7.2.7 Der FDC 765 (Floppy Disc Controller) ------------------------------------------- + Alle notwendigen FDC-Kommandos, um die Laufwerke A und B zu steuern (dazu gehören Sektor lesen/schreiben, Spur suchen/formatieren, Sektor-ID lesen, ...) Sehr flexible Disketten-Formate (bis zu 18 Sektoren pro Spur). Darunter auch doppelseitige Formate, z.B. VORTEX. - Komplizierte kopiergeschützte Formate werden intern nicht verarbeitet. 7.2.8 Die Centronics-Druckerschnittstelle ------------------------------------------ + Druckerausgabe auch mit 8-Bit-Druckerpatch, wird auf die durch PRINTER definierte Datei umgeleitet. 7.3 Das Debug-Menü =================== Von sowas hätte ich damals auf dem CPC nur geträumt! Es wird der komplette CPU-Zustand des Z80 angezeigt und Sie können ihn modifizieren. Der Speicher kann "gedumped", disassembliert oder modifiziert werden, Speicherauszüge (Programme) lassen sich laden oder speichern. Und das Interessanteste: Sie können die Code-Ausführung im Single-Step-Mode verfolgen! (Ähnlich wie bei einem richtigen Debugger). Aufbau des Debug-Menüs ---------------------- R)un T)race S)tep A)ssem D)ump I)nput L)oad saV)e fiN)d F)ast Q)uit AF=0000 BC=0000 DE=0000 HL=0000 IX=0000 IY=0000 SP=0000 PC=0000 IR=0000 AF'=0000 BC'=0000 DE'=0000 HL'=0000 IFF1=0 IFF2=0 IMD=0 NZ NC PO P 0000 : 01 89 7F LD BC,&7F89 -f-> In der ersten Zeile werden die verfügbaren Kommandos angezeigt (die Großbuchstaben). In den beiden nächsten Zeilen stehen die aktuellen Inhalte der Register. Darunter steht der disassemblierte aktuelle Befehl an Position PC. In der letzten Zeile wartet ein Prompt auf Ihre Eingabe. ('f' zeigt an, daß Sie gerade die Fast-CPU benutzen.) Vorbemerkungen -------------- In eckige Klammern eingeschlossene Parameter sind optional [opt.]. Zahleneingaben alle hexadezimal, z.B. = 0000 bis ffff. "" zeigt an, daß Sie in einem speziellen Modus sind und drücken sollen, um fortzufahren. verläßt diesen Modus (d.h. z.B. b). Kommandos bestehen aus einem Buchstaben, meistens gefolgt von einer optionalen Adresse. Zwischen Kommando-Buchstabe und dieser Adresse muß dann ein Leerzeichen oder Tab stehen. Ohne Angabe einer Adresse wird als Standard-Wert PC (Programmzähler) angenommen. Übersicht über die Kommandos ---------------------------- R)un: r [] : startet die Emulation ab PC oder der optional angegebenen Adresse. Beispiele: -f-> r startet die Emulation ab PC -f-> r 100 setzt PC auf 0x100 und startet die Emulation T)race (Trace into): t [] : führt wirklich nur den aktuellen Befehl aus, mit den nächsten; beendet den Trace-Modus. Alle Einzelschrittbefehle werden von der Slow-CPU ausgeführt (selbst wenn "-f->" angezeigt wird), da in der Fast-CPU kein Zähler mehr existiert. S)tep (Step over): s [] : führt den aktuellen Befehl aus, eigentlich alle Befehle, bis PC auf dem direkt nachfolgenden Befehl steht, was z.B. bei einem 'Ret' recht lange dauern kann. In diesem Fall hilft (wie immer) F10. Alle Einzelschrittbefehle werden von der Slow-CPU ausgeführt (selbst wenn "-f->" angezeigt wird), da in der Fast-CPU kein Zähler mehr existiert. A)ssemble (eigentlich Disassemble): a [] : disassembliert die nächsten 16 Befehle, mit die nächsten; beendet den Disassemble-Modus. D)ump: d [] : zeigt einen Hex-Ascii-Speicherauszug der nächsten 256 Bytes ab PC oder Adresse an, die nächste Seite; beendet den Dump-Modus. I)nput (Speicherstellen modifizieren): i [] : zeigt die Speicherstelle mit aktuellem Inhalt an, der durch bestätigt oder durch verändert werden kann. Verlassen wird der Input-Modus mit einer ungültigen Zahl, z.B. -1. L)oad (Laden eines Speicherbereichs): l [] : fragt nach dem Dateinamen und lädt dann die Datei aus dem Verzeichnis TAPE_PATH nach Ein AMSDOS-Header wird erkannt. Siehe Anhang "Aufbau des AMSDOS-Headers". Falls Sie bei dem Dateinamenprompt nur eingeben, erscheint das schon bekannte Dateiauswahl-Menü. Beispiele: -f-> l demo : lädt Datei 'demo' an den aktuellen PC -f-> l a000 myprog : lädt Datei 'myprog' nach 0xA000 saV)e (Speichern eines Speicherbereichs): v [] : fragt nach dem Dateinamen und der Länge des Speicherbereichs. Dieser wird dann ab (oder eben PC) abgespeichert, und zwar im Verzeichnis TAPE_PATH als Binärdatei, d.h. mit AMSDOS-Header. Siehe Anhang "Aufbau des AMSDOS-Headers". Beispiel: -f-> v demo 4000 : speichert "demo" ab PC mit der Länge 0x4000. fiN)d (Suchen einer Bytefolge): n : Wie bei I)nput muß zuerst eine Bytefolge eingegeben werden, nach der gesucht werden soll. Dabei kann '??' (oder '?') als Platzhalter für ein beliebiges Byte eingesetzt werden. Das macht natürlich nur Sinn innerhalb einer Bytefolge. Es werden dann die gerade aktiven 64KB Speicher durchsucht und alle Adressen ausgegeben, wo diese Bytefolge beginnt. F)ast (Z80-Emulationsart wählen): f : Wechselt zwischen der schnellen Z80-Emulation (entwickelt in Assembler von Jürgen Weber, Standardeinstellung) und der langsamen (in C geschriebenen). Das Prompt-Symbol wechselt dann zwischen "-f->" für schnell (fast) und "-s->" für langsam (slow). Alle r, s, t-Kommandos beziehen sich dann auf die gewählte Z80-Emulationsart. Q)uit (Beenden des Programms): q : beendet den Emulator. Registermanipulationen ---------------------- Neben den Buchstabenkommandos gibt es auch Befehle zum Setzen der Register mit der Syntax: '=' Beispiele: - af=345 : setzt Register AF auf 0x0345 - pc=a000 : setzt Programmzähler auf 0xA000 Sie können auch einfach '' schreiben Alle Z80-Register lassen sich verändern, also AF, BC, DE, HL, IX, IY, SP, PC, IR, AF', BC', DE', HL', zusätzlich IFF1, IFF2 und IMD. 7.4 Die Speicherverwaltung =========================== 7.4.1 Noch einmal zur EMS-Konfiguration ---------------------------------------- Sie brauchen einen Expanded Memory Manager nach dem LIM 4.0 Standard (LIM EMS 4.0). Dieser Memory-Manager muß sogenannte erweiterte EMS-Seiten bieten. CPCEMU benötigt 6 solcher Seiten an zusammenhängenden Adressen. Unter OS/2 2.x wurde Ihnen vorgeschlagen, die folgenden Einstellungen zu benutzen: EMS_FRAME_LOCATION = auto EMS_HIGH_OS_MAP_REGION = 32 (oder mehr) EMS_LOW_OS_MAP_REGION = 0 (oder mehr) Was bedeuten die Einstellungen? Die Low-Region bezeichnet EMS-Seiten im konventionellen Speicher. Falls CPCEMU dortige EMS-Seiten benutzen soll, müssen mindestens 6*16KB = 84KB vorhanden sein. Die High-Region bezeichnet EMS-Seiten im Speicher oberhalb von 640K, der zum Standard-Rahmen von 64KB hinzugenommen wird, muß also mindestens 2*16KB = 32KB sein. Unter DOS wurde Ihnen vorgeschlagen, folgende Zeilen in CONFIG.SYS zu benutzen: DEVICE=C:\DOS\HIMEM.SYS DEVICE=C:\DOS\EMM386.EXE 1024 ... Die 1024 kann auch vergrößert oder verkleinert werden, je nach Hauptspeicher Ihres Rechners. Erläuterungen: EMM386 bietet zahlreiche zusätzliche Seiten im konventionellen Speicher. Die Untergrenze dieser Seiten kann mit der Option /B= geändert werden (Standard ist 4000). Mit /P= soll es auch möglich sein, einzelnen physikalischen Seiten andere Segmente zuzuweisen. 7.4.2 Realisierung des Bankings -------------------------------- Banking wird auf einigen Heimcomputern benutzt, die RAM und ROM an der gleichen Adresse haben. Lesezugriffe adressieren das ROM, Schreibzugriffe das RAM. Der Amstrad CPC hat 64K RAM und 16K ROM im Bereich 0-3FFF und ein weiteres ROM an C000-FFFF: 0 RAM 0000-3fff 1 RAM 4000-7fff 2 RAM 8000-bfff 4 RAM c000-ffff L ROM 0000-3fff U ROM c000-ffff Die wesentliche Idee ist, verschiedene Segmente zum Lesen und Schreiben zu haben. Bei jedem Lesezugriff wird ein Lese-Offset zu der gewünschten Adresse addiert, das gleiche wird mit einem Schreib-Offset für das Schreiben gemacht. Zustand 0 Zustand 1 block 5 M L c 0 < block 4 M W C c C c | vertauscht beim block 3 M W 8 b c W 8 a c | Zustands- block 2 M W 4 b c W 4 a c | wechsel block 1 M W 0 b W L a c < block 0 M U b W U a (M = konventioneller Speicher oder physikalische EMS-Seiten) a = Lrom ei, Urom ei b = Lrom di, Urom ei c = Lrom ei, Urom di W = Lrom di, Urom di Um zwischen den beiden Zuständen zu wechsen, müssen nur die '0' und 'L' Blöcke vertauscht werden. Für RAM Banking muß eine neue '0' mit der alten vertauscht werden. UROM Auswahl geschieht durch Kopieren des neuen ROMs nach 'U'. Mit EMS Speicher wird das gesamte Banking von der Hardware (oder deren Emulation) übernommen. Dieses erhöht die Geschwindigkeit besonders in BASIC und CP/M Plus. Jetzt verstehen Sie, warum 6 zusammenhängende physikalische EMS-Seiten notwendig sind und der Standard-Rahmen mit 4 Seiten nicht reicht. 7.5 ROM-Modifikationen ======================= 7.5.1 ROM-Bypass für die Kassette ---------------------------------- Nach dem Befehl '|TAPE', oder wenn Sie das AMSDOS-ROM ausgeschaltet haben, wird die "Kassette" angesprochen. Kassettenzugriffe werden dabei in Dateizugriffe auf die einzelnen Dateien eines speziellen Verzeichnisses umgeleitet. Realisiert wird diese Umleitung mittels eines "ROM-Bypass". Durch 'TAPE_BYPASS=1' schalten Sie den ROM-Bypass der TAPE-Vektoren ein. Falls ein bekanntes ROM vom CPC 464/664/6128 gefunden wurde, wird das ROM automatisch modifiziert. Der Bypass ist nötig, wenn Sie Kassetten-Dateien benutzen möchten. Es wurden Spezialbefehle eingeführt, die eine bestimmte Funktion des Emulators aufrufen. Diese Befehle werden direkt in das ROM eingetragen, so daß das Patchen der RAM-Vektoren auch weiterhin möglich ist. Als Befehle wurden eingeführt: ED FC xx USER &BCxx (nur gültig für einige RAM-Vektoren) Entspricht einem Call-Befehl zu einer internen Funktion, wobei für xx folgende Werte gültig sind: 65 : CASSETTE INIT (BC65) 77 : CASSETTE IN OPEN (BC77) 7A : CASSETTE IN CLOSE 7D : CASSETTE IN ABANDON 80 : CASSETTE IN CHAR 83 : CASSETTE IN DIRECT 86 : CASSETTE RETURN 89 : CASSETTE TEST EOF 8C : CASSETTE OUT OPEN 8F : CASSETTE OUT CLOSE 92 : CASSETTE OUT ABANDON 95 : CASSETTE OUT CHAR 98 : CASSETTE OUT DIRECT 9B : CASSETTE CATALOG Zusätzlich gibt es noch den User-Break-Befehl ED FC FC USER &BCFC , der die Emulation sofort anhält. 7.5.2 Modifikationen am AMSDOS-ROM ----------------------------------- - Durch 'AMSDOS_DISABLE=1' verbieten Sie die Initialisierung des AMSDOS. Dann werden die Kassetten-kompatiblen Befehle nicht von AMSDOS gepatched. (Es werden also weiterhin die TAPE-Vektoren verwendet.) Das ist nötig, wenn ein Programm zwischendurch das AMSDOS- ROM initialisiert, aber ohne |TAPE-Befehl von Kassette weiterladen soll. (Realisiert durch 'POKE &CCF2,&18: POKE &CCF3,&05' im AMSDOS-ROM.) Die Sektorbefehle bleiben unbeeinflußt, sie gehen immer auf Diskette. - 'AMSDOS_SPEEDUP=1' führt eine AMSDOS-ROM-Modifikation durch, bei der die Motor-Wartezeiten minimiert werden, um einen schnelleren Disk-Zugriff zu ermöglichen. (Die Sachen werden ja von DOS gesteuert, somit brauchen wir die Warteschleifen nicht.) (Folgende Speicherstellen im AMSDOS-ROM werden verändert: POKE &C5D4,&01 :'Zeit für Motor-Hochlauf POKE &C5D8,&01 :'Zeit bei Spur-Formatieren POKE &C5D9,&01 :'kürzer warten POKE &C5DA,&01 :'kürzer warten POKE &C602,&01 :'nur 1 Versuch bei Fehler POKE &C784,&01 :'schnelles Spur suchen POKE &C7E2,&01 :'schnelles Spur suchen ) 7.6 Verschiedenes ================== 7.6.1 Noch einmal: Die Konfigurationsdatei -------------------------------------------- Wie Sie vielleicht noch wissen, werden Kommentare durch ein Semikolon ';' eingeleitet, der Rest der Zeile wird dann ignoriert. Blanks, Tabs, Newlines, ';' dienen als Trennsymbole und können beliebig zwischen Schlüsselwörtern und Werten eingesetzt werden. Die meisten Definitionen besitzen die syntaktische Form '=' {T} Dabei ist {T} eine Folge von mindestens einem Trennsymbol. Beispiel: ROM_PATH = ".\ROM" Eine kann dezimal, hexadezimal (0x) oder binär (%) angegeben werden. darf bis zu 80 Zeichen, darf bis zu 20 Zeichen lang sein. Hier noch einige Ergänzungen zu ausgewählten Schlüsselwörtern: BREAK_MASK = (3) Nur für Debugging-Zwecke. Einige Ereignisse unterbrechen die normale Emulation. Mit dieser Maske verbieten Sie solche Ereignisse. Nicht unüberlegt verändern! Lassen Sie alle Bits gesetzt, bis auf diejenigen, deren Ereignisse Sie verbieten wollen. b2 = 0 -> verbietet Anzeigen von Port-Fehlern (mit 3) Die Bedeutung der Bits kann sich in Zukunft ändern! 7.6.2 Der parallele Adapter ---------------------------- Zuerst einmal der Aufbau des Adapters, jetzt mit Funktionsweise: PC D-SUB Cent. CPC Funktion -------------------------------- --------------------------- GND 19 ---- 19 GND GND BUSY 11 <--- 1 -STROBE Synchro (Daten verfügbar) -ACK 10 <--- 8 D6 | PE 12 <--- 7 D5 | Daten SELECT 13 <--- 6 D4 | -ERROR 15 <--- 5 D3 | D0 2 ---> 11 BUSY Synchro (empfangsbereit) Richtung CPC->PC ---------------- Für diese Richtung ist der Adapter normalerweise gedacht. Im Prinzip funktioniert das Senden auf dem CPC genauso, wie das Ausdrucken auf einen Drucker. Wenn der PC Nicht-BUSY anlegt, legt der CPC ein Nibble (Teil eines Bytes auf 4 Bits) auf den Port, setzt STROBE als Zeichen, daß etwas da ist und löscht es danach wieder. Der PC braucht also nur BUSY zu löschen (mittels D0), auf STROBE zu warten (über BUSY) dann das Nibble übernehmen (über die Einabeleitungen Drucker->PC) und BUSY zu setzen. Frage: Warum kann man denn nicht 8 Bits auf einmal übertragen? Antwort: 1. Der PC-Druckerport müßte auf Eingabe programmiert werden, das geht nicht mit jedem und 2. Der CPC hat nur einen 7-Bit Druckerport Richtung PC->CPC ---------------- Ich habe mir gedacht, daß es auch möglich sein müßte, Daten in die andere Richtung zu verschicken. Leider hat der CPC am Druckerport nur ein einziges Eingangssignal, nämlich das BUSY-Signal. Es würde also nichts bringen, einen besseren Adapter für diese Richtung bauen zu wollen. Also kann man auch gleich den Adapter nehmen, den man schon hat, und ein geschicktes Protokoll entwickeln. Immerhin funktioniert eine serielle Schnittstelle auch nur mit einer Datenleitung für jede Richtung. Doch: Bei seriellen Schnittstellen wird die Synchronisation normalerweise mit einem Quarz erreicht. Es muß auf beiden Seiten exakt dieselbe Übertragungsrate eingestellt sein (z.B. 1200 Baud). Softwaremäßig ist das schlecht zu realisieren. Was tun? Die Idee ist, den Geschwindigkeitsvorteil des PC gegenüber dem CPC auszunutzen. Jedes Byte wird in 8 Bit zerlegt und seriell übertragen, indem der PC den Zustand der BUSY-Leitung richtig setzt. Während dieser 8 Bit gibt der CPC die Geschwindigkeit vor und der PC muß sich danach richten. Der CPC schreibt die Bit-Anforderung mit einem Assembler-Befehl. Der PC muß jetzt schnell reagieren, und die BUSY-Leitung entsprechend des nächsten Bits setzen, denn schon mit dem übernächsten Assembler-Befehl wird der CPC dieses lesen wollen. Damit nicht immer die Interrupts ausgeschaltet bleiben müssen, erfolgt zuvor für jedes Byte ein "Verbindungsaufbau". Der CPC sagt "Schick mir mal was rüber!" und der PC antwortet "Na gut, ich warte jetzt, bis Du was haben willst.", indem er das BUSY-Signal wechselt. Die ganze Geschichte ist durch Timer abgesichert, damit kein Computer hängt, weil er auf irgendein Signal wartet, was dummerweise nicht kommt. Sie können die Programme also immer durch ESC bzw CTRL-BREAK abbrechen. 7.6.3 CPCTRANS --------------- Eine noch nicht erwähnte Option ist "/d 0" und "/d 1". Bei 1 wird der Double-Step Modus gesetzt, d.h. 80-Spur-Laufwerke springen immer 2 Spuren weiter, wenn sie 40-Spur Disketten bearbeiten. Die Option sollte unnötig sein, da CPCTRANS bei 5.25" 360KB Formaten auf 80 Spur-Laufwerken automatisch Double-Step einschaltet. Normalerweise ist es ganz einfach, mit dem BIOS Sektoren zu lesen und zu schreiben. Leider ist das BIOS aber nicht in der Lage, B-Seiten von Disketten mit Kopfseite=0 zu verarbeiten. Deshalb mußte ich die FDC-Routinen selber programmieren, wobei der Floppy-Teil des MINIX-Source-Codes als Vorlage diente. Leider enthält der MINIX-Code einige Fehler, und das Timing wurde an den kritischen Stellen durch simple Warteschleifen realisiert, die vermutlich für einen 8086 Prozessor ausreichten. 7.7 Aufbau einiger CPCEMU-Dateien ================================== 7.7.1 Disketten-Abbilder ------------------------- Disketten-Abbilder bestehen aus einem 0x100-Byte langen Disketten-Informationsblock und für jede Spur aus einem 0x100-Byte langen Spur-Informationsblock, an den sich die Daten der Spur (zu jedem Sektor) anschließen. Das neue erweiterte Disketten-Format ist hauptsächlich für kopiergeschützte Disketten gedacht. Änderungen für das erweiterten Format habe ich mit *E* gekennzeichnet (aus unserem "Extended DISK Format Proposal, Rev.5"). Der Disketten-Informationsblock ------------------------------- Byte (Hex): Bedeutung: 00 - 21 "MV - CPCEMU Disk-File\r\nDisk-Info\r\n" (als Kennung nur "MV - CPC" erforderlich) *E* "EXTENDED CPC DSK File\r\n\Disk-Info\r\n" *E* (als Kennung nur "EXTENDED" erforderlich) 22 - 2F unbenutzt (0) *E* DSK-Ersteller (Name des Utilities) (keine abschließende \0 !) 30 Anzahl Spuren (40, 42, vielleicht 80) 31 Anzahl Köpfe (1 oder 2) 32 - 33 Spurgröße (einschließlich 0x100-Bytes Spur-Info) Bei 9 Sektoren * 0x200 Bytes + 0x100 Byte Spur-Info also 0x1300. *E* unbenutzt (0) 34 - FF unbenutzt (0) *E* High-Bytes der Spurgrößen für alle Spuren (genauso berechnet wie 32-33 beim normalen Format). Für einseitige Formate enthält die Spurtabelle nur die Spurgrößen einer Seite, ansonsten alternierend für zwei Seiten. Spurgröße=0 bedeutet, der Track ist unformatiert. Spurgröße wird berechnet aus Tabelleneintrag * 256. Beachten Sie, daß die 256-Bytes der SPur-Info mit eingeschlossen sind. Der Spur-Informationsblock (für jede Spur) ------------------------------------------ Byte (Hex): Bedeutung: 00 - 0C Track-Info\r\n 0D - 0F unbenutzt (0) 10 Spur-Nummer (0 bis Spuranzahl-1) 11 Kopf-Nummer (0) 12 - 13 unbenutzt (0) Format-Spur-Parameter: 14 BPS (Bytes pro Sektor) (2 für 0x200 Bytes) 15 SPT (Sektoren pro Spur) (9, max. 18 möglich) 16 GAP#3 Format (Lücke beim Formatieren: 0x4E) 17 Filling-Byte (Füllbyte beim Formatieren: 0xE5) Sektor-Information (jeweils für jeden Sektoren): 18+i Spurnummer \ 19+i Kopfnummer | Sektor-ID-Informationen 1A+i Sektornummer | 1B+i BPS / 1C+i Status 1 Fehlercode (0) 1D+i Status 2 Fehlercode (0) 1E+i,1F+i unbenutzt (0) *E* Sektorlänge in Bytes (Little-Endian-Notation). Dies ermöglicht verschieden große Sektoren auf einer Spur. Die Länge wird berechnet aus (0x0080 << wirkliche_BPS). Anmerkungen: In der Reihenfolge der Sektor-ID's müssen nach der Spur-Info die Sektordaten kommen. Es dürfen keine Spuren, Sektoren ausgelassen werden. Bei doppelseitigen Formaten alternieren die Spuren, z.B. Spur 0 Kopf 0, Spur 0 Kopf 1, Spur 1 ... CPCTRANS dient zum Kopieren von CPC-Disketten in dieses Format. 7.7.2 Snapshot-Dateien ----------------------- Snapshot-Dateien bestehen aus einem 0x100-Byte Header mit angehängtem Speicherauszug. Der Snapshot Header: Byte (Hex): Bedeutung: 00 - 07 'MV - SNA' (als Kennung) 08 - 0F unbenutzt (0) 10 Snapshot Version (2, früher 1) 11 - 1A Z80-Register AF, BC, DE, HL, R, I 1B - 1C Z80-Flags IFF0, IFF1 (0=disabled, 1=enabled) 1D - 24 Z80-Register IX, IY, SP, PC 25 Z80 Interrupt Modus IMD (0 - 2) 26 - 2D Z80-Register AF', BC', DE', HL' 2E Gate Array: Ink-Nummer-Register 2F - 3F Gate Array: Ink-Wert-Register (0, 1, ..., 15, 16) 40 Gate Array: Multi-Konfigurations-Register 41 Gate Array: RAM-Konfigurations-Register 42 CRTC: Adreß-Register 43 - 54 CRTC: Daten-Register (0, 1, ..., 17) 55 Upper ROM Nummer 56 - 59 PIO: Port A, Port B, Port C, Port CTRL 5A PSG: Adreß-Register 5B - 6A PSG: Daten-Register (0, 1, ..., 15) 6B - 6C Speicherauszug-Größe (64K oder 128K) (die folgenden Parameter existieren erst ab Version 2.0 :) 6D CPC Typ, auf dem der Speicherauszug generiert wurde (0=CPC 464, 1=CPC 664, 2=CPC 6128, 3 = unbekannt) 6E Interrupt-Nummer (0..5), der zuletzt aufgetretene Interrupt während eines Bildaufbauzyklus. 6F - 74 6 Multi-Modes, d.h. Bildschirmmodi (0..2) während der Interrupts 0..5. 75 - FF unbenutzt (0), evtl. später für Emulator-Konfiguration 7.7.3 AMSDOS-Header -------------------- Byte (Hex): Bedeutung: 00 User (0 , mögliche Werte 0-15) 01 - 0F Dateiname+Endung (evtl. mit Nullen aufgefüllt) 10 Blocknummer (0) 11 Letzter-Block-Flag (0) 12 Datei-Typ (0=BASIC, 1=geschütztes BASIC, 2=Binär,...) 13 - 14 Blocklänge (0) 15 - 16 Ladeadresse (0-FFFF) 17 Erster-Block-Flag (0) 18 - 19 Logische Länge (0-FFFF) 1A - 1B Einsprungadresse (0-FFFF) 1C - 3F Frei für den Benutzer (0) 40 - 42 wirkliche Dateilänge (1-FFFFFF) 43 - 44 Prüfsumme über Bytes 00-42 45 - 7F unbenutzt (zufällige Werte aus dem Sektorpuffer) Anmerkungen: Der Header wird jeder nicht-ASCII-Datei vorangestellt. Er wird anhand der Prüfsumme erkannt. Bytes 00 - 3F stammen aus der "Kassettenzeit", in der Dateien in Blöcke aufgeteilt wurden. Unbedingt notwendig sind die Bytes 12, 15-16, 1A-1B, 40-42, 43-44 . 7.7.4 Poke-Datenbank: ---------------------- Ein Eintrag (ein Poke, eine Zeile) besteht aus 7 Teilen, jeder Teil in Anführungsstrichen eingeschlossen und mittels Komma abgetrennt. 1. Folgenummer (1 Zeichen 0-F): Der erste Eintrag besitzt die Nummer 0 und kann ausgewählt werden. Falls ein Programm mehrere Pokes gleichzeitig benötigt, müssen die Folgeeinträge mit 1,2,... numeriert werden. 2. Programmname (bis 20 Zeichen) 3. Beschreibung (bis 20 Zeichen) 4. Typ (1 Zeichen): Für was für eine Programmversion der Poke ist ('t'=Tape, 'd'=disk, 'a'=all), wird im Moment noch ignoriert. 5. Adresse des Pokes (4 Zeichen, hexadezimal): Die Speicherstelle, die geändert werden soll. 6. Byte für den Poke (2 Zeichen, hexadezimal oder '??'): Bei '??' soll der Benutzer einen Wert eingeben, z.B. gewünschte Anzahl der Leben. 7. Altes Byte (2 Zeichen, hexadezimal oder '??'): Dies ermöglicht festzustellen, ob der Poke korrekt eingesetzt werden kann. Falls das Byte an der Adresse damit nicht übereinstimmt, wird eine Warnung ausgegeben. Bei '??' findet keine Überprüfung statt. Beispiel: "0","Devils Crown","inf oxygen","t","863b","00","??" "1","","","t","863c","00","??" "2","","","t","863d","00","??" Der "unendliche-Sauerstoff"-Poke für das Programm "Devils Crown" besteht aus drei Teilen. Alte Werte sind nicht bekannt, deshalb ist altes Byte='??'. Name und Beschreibung brauchen in Folgeeinträgen nicht wiederholt zu werden. 7.8 Interne History ==================== Z80EMU (nur ein Z80 mit kaum CPC) --------------------------------- - v1.0 (1991) erste Version in Pascal (nur eine Z80-Emulation) - v1.2 (12.8.1992 - 16.8.1992) erste Version in C (mit TPTC umgewandelt). Z80-Probleme: P-Flag bei ADD HL..., DAA, ldir; Z-Flag bei BIT... Z,S-Flags bei Rotate; ROMs möglich - v1.3 (18.8.1992) Port-Adressierung im Lo-Byte war falsch. Neues Speichermanagement (128 KB RAM, 32 KB ROM) - v2.0 (18.8.1992 - 22.8.1992) Implementierung der COCPU-Technik, um Fehler zu finden (mit separatem Speicher für die COCPU). Z80-Probleme: H-Flag gesetzt nach AND... ; CPI... setzt N-Flag. Bildschirmfarben Farben Blau und Gelb (vorher schwarzweiß) - v2.1 (25.8.1992 - 27.8.1992) Alle Pens, Farben des CPCs in allen Modi; nur auf den sichtbaren Bildschirm wird geschrieben. COCPU-Fehler: Alle (ix+zz) mit negativer Distanz waren falsch! Vergessen, "signed char" zu nehmen. - v2.2 (30.8.1992 - 3.9.1992) Neue Keyboard-Routine, Farbänderung ohne Flackern (Warten auf HSYNC). Einführung eines "Not-ROM" mit COPYMATE. - v2.3 (15.9.1992 - 19.9.1992) FDC-Emulation zum Laden von Sektoren. COCPU-Fehler: LD XH... war LD H... - v2.3b (19.9.1992) Screen-Update nur auf Blöcken 0..3 (nicht 4..7); Port FCxx gleich wie FBxx (für CP/M Plus). Da wußte ich noch nicht, daß OUTI... das B-Register pre-dekrementiert. - v2.4 test (25.10.1992) Nur R-Register-Emulation, falls gewünscht (per "DEFINE"); Screen-Update jetzt jeden n-ten Interrupt und nicht für jedes Byte einzeln, was in den Speicher geschrieben wird. (Noch sehr langsam, da in C). Neue Speicherverwaltung mit Blöcken nur ab Segmentstart. - v2.5 test (31.10.1992) Geänderte Speicherzuweisung. Endlich Hardware-Scrolling und verschiedene Bildschirmgrößen möglich. - v2.6 test (5.11.1992) Neue Keyboard-Routine von Arnt Gulbrandsen, endlich alle Tasten erreichbar; Screen-Update in Assembler. - v2.7 test Versucht, die schnelle Emulation von Jürgen Weber einzubinden, klappt noch nicht. - v2.8 Verbesserter Screen-Update: Nur Bereiche, die sich verändert haben, werden auf den Bildschirm gebracht. - v2.9 Timer-Handler mit 300 Interrupts. Fast-Emulation läuft, wenn kein ROM (Banking) benötigt wird. CPCEMU (endlich ein CPC) ------------------------ - v0.2 (23.12.1992), Nachfolger von Z80EMU v2.9 Nach nahezu 4 Stunden mit dem Turbo-Debugger endlich den Grund gefunden, warum sich die fast-Emulation aufhängte: ES anstatt DS gepushed. - v0.3 (28.12.1992 - 29.12.1992) N-Flag bei INI,OUTI setzen. CPI im fast-Z80 setzte falsche Flags. RL(HL) benutzte Read-Segment(DS) anstatt Write-Segment(ES). LD A,R produziert jetzt Zufallszahlen; Alle Kassettenroutinen bis auf CASSETTE IN CHAR. - v0.4 (1.1.1993) IN A,(n): A nach b8..b15 (anstatt B); RAM-Konfiguration 0xc3: 0,3,2,7 (für CP/M Plus). KC-Compact (ein CPC-Kompatibler aus der ehem.DDR) benutzt Port EE00 - EE3D, nur wofür? - v0.5 (28.1.1993 - 8.2.1993) INIR,... R-Register-Erhöhung abhängig von B, nicht von BC. Endlich CASSETTE IN CHAR (falscher Patch beim CPC 6128 eingetragen). - v0.6 (23.3.1993 - 24.5.1993) Ein Amerikaner hat Jürgen darauf aufmerksam gemacht, daß die OUTI- Befehle das B-Register pre-dekrementieren! C-Teile jetzt auch im 386er-Code (mit Borland C++ v3.1) Disetten-Abbilder jetzt mit Endung ".DSK". CPCREAD.PAS korrigiert (vergessen, Kopfseite mit 0 zu initialisieren) und in CPCREAD.C umgewandelt. PIO-8255-PORT-Adressierung flexibilisiert (kann auch lesen, wenn Port auf Ausgabe geschaltet ist...) - v0.7 (26.7.1993 - 29.8.1993) (inoffiziell) Source völlig überarbeitet, modularisiert. Konfigurationsdatei eingeführt, jetzt mehrere ROMs möglich. Änderung des Firmennamens von Schneider auf Amstrad. (Können Sie jetzt selber einstellen.) Fehler im RAM-Banking beseitigt. Neue Dokumentation in Deutsch. - v0.8 (30.8.1993 - 9.9.1993) Slow-Emulation: Parity-Befehle durch Tabelle nicht nur für die Parität beschleunigt. Z80: ED xx mit illegalem xx wird ignoriert. Neue Dokumentation jetzt auch in Englisch. - v0.8a (10.9.1993 - 15.9.1993) Fataler Fehler in der Fast-Emulation: Wenn ein DD CB xx - Befehl ausgeführt wurde und gerade ein Interrupt auftrat, wurde der Befehl ignoriert! - v0.8b (16.9.1993 - 21.9.1993) "real"-VSYNC eingebaut, falls "VSYNC_CT" = 0. PIO Port A Problem korrigiert: OUT &F400,xx mit Port A im Eingabemodus wurde ignoriert. Neue Joystickroutine von Martin Zacho. - v0.8c (22.9.1993 - 13.12.1993) Dokumentation mit "ispell" überprüft. Emulation startete nicht, falls "USE_JOYSTICK=1" und kein Joystick angeschlossen war (PUSH AX an falscher Stelle). Slow-Emulation: DAA korrigiert (Klammern fehlten seit v0.8). Falscher Patch für CPC 664 in der Interrupt-Routine. Dieser Patch ersetzte EI durch NOP, um das EI-Problem zu umgehen (Interrupts erst einen Befehl später erlauben). Jetzt für alle CPCs. - v0.8d (14.12.1993 - 29.12.1993) FDC-Emulation für doppelseitige Formate umgeschrieben. CPCTRANS ersetzt altes CPCREAD und erlaubt Lesen von VORTEX-Disketten mit dem Patch 720KB.COM. Außerdem können Disketten-Abbilder jetzt auf Diskette zurückgeschrieben werden. Neues Datei-Auswahl bei F3; einige Port- Adressen Aliases eingeführt, z.B. &7000 - &7f00, um das Gate Array anzusprechen, &0c00,&1c00,&2c00,&3c00,&bc00 für den CRTC. R-Register Emulation eingeschaltet. - v0.9 alpha (30.12.1993 - 20.1.1994) EMS Speichernutzung möglich durch spezielle EMS/UMB-Konfiguration. Konfigurationsdatei um Binärzahlen erweitert. RAM-Banking Adressierung korrigiert: Der Emulator akzeptierte &d0-&ff als &c0-&c7. Jetzt bis zu 576 KB RAM mit EMS. - v0.9b (21.1.1994 - 31.1.1994) EMS-Benutzung vereinfacht durch erweitertes EMS (oder LIM EMS 4.0) mit mehr als 4 physikalischen EMS Seiten. Dateiauswahl jetzt auch bei 'l' (Debug Menü), RUN" . - v0.9c (1.2.1994 - 29.4.1994) Bißchen schrecklicher PC-Lautsprecher Sound (Ausschalten mit F4). Dateiauswahl auch bei 'v'; korrigierte englische Dokumentation; Soundblaster-Sound (noch verbesserungswürdig); neues CPCTRANS mit Kommandozeilen-Parameter und direktem FDC-Zugriff; paralleler Adapter getestet und die Software verbessert. Fast-Z80: inc/dec (hl), (ix+n) für RAM unter ROM korrigiert. Jetzt mit Bild hoch/runter übergroße Bildschirme verschieben; Teil von Overscan-Bildschirmen wird angezeigt. Jetzt möglich: 64K-'Snapshots'. - v0.9d (30.4.1994 - 12.5.1994) Interrupts während DI werden nicht mehr vergessen, und sie werden nicht mehr direkt nach einem EI-Befehl erlaubt. Neue Farb-Funktionen: ohne Schnee unter OS/2. Fast-Z80: beschleunigtes Code-Holen. - v1.0 (13.5.1994 - 20.5.1994) Verbesserter Screen-Part: Jetzt auch andere Zeichengrößen von 1 bis 8 möglich. Dateiauswahl auch bei SAVE" , Schnellauswahl durch Drücken von Anfangsbuchstaben. Verbessertes CPCTRANS mit Verify-Option. Neues Setup-Menü, wenn Sie F7 drücken. Darin können Sie z.B. Farbflimmern unterdrücken. - v1.0a (21.5.1994 - 9.6.1994) Setup-Menü verbessert: jetzt neben den Cursor-Tasten auch direkte Eingaben möglich. Nahezu deutsche Tastenbelegung, einfache Verzögerungsoption (delay). Kein "Müll" mehr bei verkleinertem Bildschirm (d.h. die Teile vom größeren Bildschirm werden korrekt gelöscht). Fast-Z80-Teil verbessert: schnellere RRA,RLA, ..., schnellere CP xx Befehle. Weitere illegale Befehle eingefügt (ED xx). Außerdem fehlten die undokumentierten Befehle LD D,XH und LD YL,YH (im CoZ80-Modus aufgefallen)! CPDR,CPIR mit BC=0 korrigert (0 heißt nämlich auf einem Z80 65536, aber es ist 0 bei dem 80x86-REPE-Präfix!). DAA-Flags korrigiert. Neue Software für den parallelen Adapter: Jetzt auch Senden zum CPC möglich. Dank an Bernd Schmidt, der anmerkte, daß ein Interrupt das R-Register um 1 erhöht. Außerdem konnte mit seiner Hilfe die Emulation des PIO-Port-C Registers verbessert werden. - v1.1a (10.6.1994 - 16.8.1994) Eine neue Ära von CPCEMU hat begonnen: Amstrad hat die ROMs freigegeben! Ein guter Anlaß, die Dokumentation umzuschreiben... Änderungen an der Konfigurationsdatei: ROM_BLOCKS -> ROM_BLOCK, DISC_BYPASS -> DISABLE_ADOS, keine Leerzeichen mehr vor und nach '=' nötig. Änderungen am Sound-Teil, Grafik-Teil: vertikale Größe durch VGA-CRTC. Joystick-Kalibrierung jetzt im Setup-Menü, TAPE-Routinen beim Speichern verbessert. FDC-Teil verbessert: jetzt läuft auch COPYMATE. Wechseln von Nicht-DATA-Disketten ohne "Read Error" möglich (es wurde immer Spur 0 gesucht). Eine weitere Verzögerung in CPCTRANS, ich hoffe, Sie müssen jetzt nicht mehr die Turbo-Taste betätigen; Formatieren von Disketten- Abbildern. Nochmal PIO-Port-C korrigiert: er wird nach OUT &F700,n gelöscht. Größere Änderungen an der Konfigurations-Datei: Jetzt mit bedingter Konfiguration (#IFCPC, #ENDIF). Einige Schlüsselwörter verändert (VSYNC_CT -> /, DISC_PATH -> /, SNAP_PATH -> SNAPSHOT, DRV_A -> DRIVE_A, DRV_B -> DRIVE_B). Laden von Programmen aus ZIP-Archiven. Sie brauchen PKUNZIP dazu. - v1.1b (17.8.1994 - 2.9.1994) Multi-Modes eingeführt, d.h. verschiedene Bildschirmmodi gleichzeitig. Dazu wird der Bildschirmaufbau in bis zu 6 Teile zerlegt, es erfolgt also eine teilweise Auffrischung bei jedem Interrupt. Klappt noch nicht immer. Jetzt möglich: 128K Snapshots, zusätzlich für Multi-Modes erweitert. CPCPARA verbessert: jetzt können Sie Binärdateien mit Header kopieren. Vollkommen neugeschriebene, hoffentlich besser verständliche Dokumentation. Erkennung des CPC 6128 Plus eingebaut. Noch mehr Port-Aliases eingebaut. - v1.2 (3.9.1994 - ) Diese Version wurde veröffentlicht. Es wurden hauptsächlich ein paar Änderungen an dem Hilfesystem vorgenommen. - v1.2a (27.9.1994 - ) (war verfügbar als UPD12A.ZIP) Datei-Auswahl: Nur die verfügbaren Laufwerke werde angezeigt. Und: Mit dem Treiber ANSI.SYS war der Hintergrund von Texten manchmal schwarz. TMP_PATH: Ein Laufwerk ohne Pfad angeben. DOS-Shell (F7): CPCEMU wird vorher ins XMS, EMS oder auf Festplatte ausgelagert, somit haben Sie viel Speicher im DOS-Shell. (Diese Neuerung wurde vom Public Domain Program SWAP300.ZIP von Marty Del Vecchio übernommen.) Bildschirm-Auffrischung konnte falsch sein, wenn die Bildschirmbreite nicht durch 4 teilbar war. Eine andere CPCEMU-Version für noch höhere Geschwindigkeit: C2.EXE. Diese Version benutzt eine andere Speicherverwaltung mit zwei 64KB EMS-Fenstern für Lesen bzw. Schreiben. Aber es funktioniert nur mit EMS. Die ROMs sind auch (c) von Locomotive Software, nicht nur von Amstrad. - v1.2b ( ) Auf Soundblaster Pro Karten wurde kein Stereo-Sound ausgegeben, obwohl es angezeigt wurde. Falls keine Soundblaster-Karte gefunden wurde, gab es überhaupt keinen Sound, bis USE_SB=0 geändert wurde. Schneller-Z80: Einige Wort-Zugriffe in Byte-Zugriffe umgeändert. Ist zwar ein bischen langsamer, aber der Computer hängt sich nicht bei jedem Zugriff an 0xffff auf. Schneller-Z80: Problem bei EI HALT DI korrigiert: Bei einem Interrupt wurde die Adresse von HALT 'gepushed' anstatt der von DI. Englische Dokumentation korrigiert. Verbessertes CPCPARA und PCPARA v1.1: Adapter-Test, wesentlich höhere Geschwindigkeit CPC->PC: Etwa 1600 Bytes pro Sekunde, von Diskette lesend! (486/66), Statistik. Jetzt kannst Du 16KB in 10 Sekunden übertragen! Dank an Klaus Weber, der anmerkte, das es zu langsam war. In PCPARA wurde nach jedem empfangenen Halbbyte mittels DELAY(1) eine Millisekunde gewartet. Dies ist überflüssig. - v1.2c (28.2.1995 - ) (war verfügbar als UPD12C.ZIP) CPCEMU umgeschrieben von C in C++. Dies erlaubt Inline-Funktionen und bessere Schnittstellen, um den Überblick behalten zu können. - v1.2d (16.3.1995 - ) (nur für Leser der 'mailing list') Schneller-Z80: Interne Änderungen, die unsichtbar für den Benutzer bleiben, außer einer kleinen Geschwindigkeitssteigerung. Alle Variablen werden jetzt im DATA-Segment anstatt im CODE-Segment gehalten. Endlich der unbedingt notwendige Modus für schnelle Computer eingeführt: 'Realtime-CPC' (Auswählbar im Setup-Menüoder mit REALTIME=1). - v1.3 (16.4.1995 - ) Poke-Datenbank zum einfachen 'Poken', französische Dokumentation, FDC-Format-Befehl (Re-formatieren von Disketten-Abbildern derselben Größe), neues Menüsystem mit Mausunterstützung (MOUSE=1), Disketten-Abbilder mit read-only DOS Attribut einlegen (als read-only), Debug-Menü: Suchfunktion ('find') eingebaut. - v1.3a (30.4.1995 - ) (war verfügbar als UPD13A.ZIP) Mit Version v1.3 lief Boulder Dash nicht mehr, obwohl es mit v1.2 noch funktionierte. Der Interrupt Modus 2 des Z80 wurde falsch simuliert (PUSH/POP vergessen). Auch in der langsamen Z80-Emulation funktionierte es wegen eines ähnliche Fehlers nicht. CPCTRANS: Option -f 6 erlaubt. - v1.3b (20.5.1995 - ) (ist verfügbar als UPD13B.ZIP) Einige Benutzer beschwerten sich, daß der Soundblaster-Sound seit Version 1.3 nicht mehr funktionierte. - v1.4a0 (21.3.1996 (v1.3c); veröffentlicht in der c't 6/97) GUS-Soundunterstützung von Ulrich Doewich; On-Line-Hilfe in Deutsch, Englisch, Französisch und Spanisch; komplette französische Dokumentation; Unterstützung für 2 Joysticks; VESA-Videomodes für hohe Auflösungen; Setup-Menü und Konfigurationsdatei überarbeitet; Konfigurationen laden und speichern vom Setup-Menü aus; verbesserte FDC-Routinen für Fremdformate; Erweitertes Disketten-Format; Benutzerdefinierte Farben und Tasten; CPCTRANS überarbeitet; neues SNA2GIF (v1.1); Schnelle Z80-Emulation: manchmal wurde nach einem Reset der Bildschirm nicht komplett gelöscht (Problem bei HALT); - v1.4a1 (4.4.1996) - v1.4a2 (5.7.1996) - v1.5b0 (8.6.1998; veröffentlicht in der c't 12/98) perfekter Soundblaster-Sound von Ulrich Doewich (dagitaler Sound mit Geräuschen); teilweise spanische Dokumentation dank Ismael Salvador Igual; Autostart von BASIC-Programmen aus Disketten-Abbildern; 4DOS-Beschreibungen bei der Datei-Auswahl; die Online-Hilfe erlaubt jetzt Themen mit Leerzeichen (und Sonderzeichen); Pfade in Konfigurationen werden jetzt relativ abgespeichert; Datenrate bei CPCTRANS v2.3g setzen; SNA2GIF v1.2: benutzerdefinierbare Farbpalette, bessere Autoskalierung; CPCPARA v1.2: schnelles Senden abschaltbar (z.B. für Vortex); Poke-Datenbank erweitert; erlaubt die Benutzung der VESA-Videomodi, auch wenn sie nicht vom VESA-BIOS angezeigt werden (wird für einige Noname S3 Virge Karten mit Standard-S3-BIOS benötigt); Die Batchdateien CPCxxx.BAT benutzen eine Konfigurationsdatei unter %TMP (dadurch kann CPCEMU auf einer CD-ROM aufgerufen werden und trotzdem die Konfiguration modifizieren); - v1.5b1 Vollständige spanische Dokumentation v1.5 dank Gerardo Briseño; Vollständige Französische Dokumentation v1.5 dank Jean-Pierre MARQUET; Problem mit dem Joystick behoben (er funktionierte mit v1.5b0 nicht); Dateiauswahl: Jetzt bis zu 1500 Verzeichnis-Einträge (vorher 500); direkte Druckerport-Ansteuerung bei PRINTER=""; vorzeitiges VSYNC-Löschen wieder beseitigt (Platoon reagierte bei v1.5b0 auf keine Eingabe); Mit EMS konnten Sie keinen 128K-Schnappschuß laden, der eine RAM-Konfiguration <> &C0 hatte (z.B. &C2 in CP/M Plus); CPCPARA v1.2: das Flag, um schnelles Senden auszuschalten, hatte 'negative Logik'; - v1.6 siehe zunächst noch "readme_d.txt" CPCEMU wurde in C++ und Assembler geschrieben. Zum Kompilieren wurden Borland C 3.1 mit 386er Optimierung und TASM benutzt. Zur Fehlersuche habe ich den Turbo Debugger benutzt. Die Farben wurden mit dem Programm VGAMETER von J. Stephen Shattuck, Jr. ausgewählt, indem sie mit denen eines CPCs verglichen wurden, der an einen Scart-Fernseher angeschlossen war. ------------------------------------------------------------------------ (Ab hier dürfen Sie wieder gefahrlos weiterlesen.) Anhang ****** A.1 Glossar ************ Hier werden einige Computer-Fachbegriffe erläutert. Ich erhebe keinen Anspruch auf Vollständigkeit oder präzise Definitionen. Die meisten Begriffe sind im Blickwinkel des CPC erklärt. Referenzen habe ich mit "»" markiert. 386/33 (AT 386/33) Kurzbezeichnung für einen »PC AT mit 80386 Prozessor, der mit 33 MHz getaktet wird. Wegen der "hohen" »Taktfrequenz kann man davon ausgehen, daß es sich um einen 386DX mit echtem 32-Bit Datenb