home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-09-07 | 39.6 KB | 1,148 lines |
- ****************************************************************************
- * *
- * Dokumentation zu CPCEMU (v0.8) - dem CPC-Emulator für den PC *
- * *
- ****************************************************************************
-
- Dies ist die deutsche Dokumentation zu CPCEMU , für die englische siehe
- im File CPCEMU_E.DOC nach.
-
-
- Wenn Du Fragen oder Anregungen hast, schreibe an
-
- Marco Vieth
- Auf dem Ükern 4
- 33165 Lichtenau
-
- Oder per E-Mail :
- ali@uni-paderborn.de
-
-
-
- 1. WICHTIG :
- ============
-
- CPCEMU ist Copyright 1993 von Marco Vieth, Auf dem Ükern 4,
- 33165 Lichtenau, Germany.
- Telefon: 05292/1366
- Internet-Adresse:
- ali@uni-paderborn.de
-
- Dieses Dokument und die darin aufgeführten Files dürfen frei
- kopiert werden, ohne Gebühren, vorausgesetzt, der Copyright-
- Vermerk bleibt erhalten.
- Alle Software und Dokumentation wird "wie sie ist" zur Verfügung
- gestellt, ohne irgendwelche Gewähr.
-
- Obwohl dieses Programm Freeware ist, bin ich einer finanziellen
- oder ideellen Unterstützung natürlich nicht abgeneigt.
-
-
-
- 2. EINFÜHRUNG :
- ===============
-
- 2.1 Warum einen Emulator ?
- ---------------------------
-
- Es wurde und wird noch viel geredet über Geschwindigkeits-
- steigerungen älterer Computer, z.B. durch Einbau einer schnelleren
- CPU, aber meistens sind dem enge Grenzen gesetzt (Timing, ...).
- Warum also nicht ein wesentlich leistungsfähigeres System als
- Plattform nehmen und darauf den älteren Computer emulieren ?
- So wird mit Verbesserung des neuen Systems auch das ältere
- verbessert, nicht nur hinsichtlich der Geschwindigkeit, auch
- hinsichtlich der Ergonomie (z.B. Monitor mit mindestens 70 Hz,
- komfortablere Tastatur) und sonstiger Vorzüge (z.B. Festplatte).
-
- Außerdem ist es recht schade, seine selbstgeschriebenen
- Programme auf dem neuen System nicht mehr verwenden zu
- können. Vor ein paar Jahren hätte ich einen EPROM-Simulator
- gebrauchen können, mit dem man EPROM-Code im RAM testen kann.
- Mit diesem Emulator kein Problem.
- Wenigstens ist es doch faszinierend, bekannte Programme
- auf einem völlig anderen System laufen zu sehen.
-
- Das alles (und noch viel mehr) ist mit einem Emulator wie
- CPCEMU möglich.
-
-
- 2.2 Was ist ein CPC ?
- ----------------------
-
- Kurz:
- Der AMSTRAD-CPC (Colour Personal Computer) ist ein 8-Bit Computer
- mit Z80A-CPU, 3" Diskettenlaufwerk, den Betriebssystemen AMSDOS
- (manchmal übersetzt mit Advanced MSDOS, ist aber eher nur
- Amstrad DOS), CP/M 2.2 und CP/M Plus. Ein leistungsfähiges
- BASIC ist eingebaut, mit dem fast alle Hardwareeigenschaften
- ausgenutzt werden können.
- Weitere Informationen im Anhang "Informationen zum CPC" (A1.6).
-
-
-
- 2.3 Was ist CPCEMU ?
- ---------------------
-
- CPCEMU ist der erste wirklich ernst zu nehmende Emulator der
- CPC-Computer.
- Auf einem 386/33 ist die Emulation fast so schnell wie das
- Original, vorausgesetzt, Du benutzt nur wenig Banking.
-
- CPCEMU wurde in C und Assembler geschrieben, dabei wurden
- Borland C 3.1 (mit 386er-Optimierung) und TASM benutzt.
-
-
-
- 3. VORAUSSETZUNGEN FÜR CPCEMU :
- ================================
-
- 3.1 Hard- und Softwarevoraussetzungen :
- ----------------------------------------
-
- - PC (mindestens 386er, nach oben wie immer keine Grenzen)
- - VGA-Grafik
-
- - MSDOS (bestimmt auch DRDOS) oder
- - OS/2 2.x Dos-Box
-
-
- 3.2 Files im CPCEMU - Paket :
- ------------------------------
-
- CPCEMU.CFG Konfigurationsdatei (6.4)
- CPCEMU_E.DOC englische Dokumentation
- CPCEMU_G.DOC dieses File
- CPCEMU.EXE das ausführbare Programm (4.1)
-
- CPCPD1.DSK Beispieldiskette mit PD-Programmen (6.2)
-
- CPCREAD.C Quellcode zu CPCREAD.EXE
- CPCREAD.EXE Programm zum Lesen von CPC-Disketten (6.2)
-
- CPMDISKS.DEF Datei mit CPC-Formaten für 22DISK (4.2.1)
-
- INSTALL.BAT Installationsprogramm (4.1)
-
- PARALLEL.PAS Transferprogramm für eine parallele
- Schnittstelle (4.2.2)
-
- README_E.DOC englisches LIESMICH
- README_G.DOC deutsches LIESMICH
-
- ROMGET.ASC CPC-Basic-Programm zum Speichern der ROMs (4.2.1)
-
- Z80CPC.ROM das "Not-ROM" (4.3)
- Z80DISK.ROM das Programm "Copymate" (unbenutzt)
- (Diese beiden ROMs durch die original-ROMs ersetzen.)
-
-
-
- 4. INSTALLATION :
- =================
-
-
- 4.1 Installation von CPCEMU :
- ------------------------------
-
- Wahrscheinlich hast Du es schon gemacht:
- Einfach das Archiv CPCEMUxx.xxx in ein Verzeichnis auf der
- Festplatte kopieren und entpacken.
- Danach INSTALL.BAT benutzen, wodurch die drei Unterverzeichnisse
- ROM, TAPE, DISC mit den benötigten Dateien angelegt werden,
- in denen CPCEMU nach ROM-Abbildern, "Kassetten"-Files und
- Disketten-Abbildern sucht.
- Nun kannst Du CPCEMU.EXE aufrufen, aber warte mal ...
-
-
- 4.2 Woher ein ROM bekommen ?
- -----------------------------
-
- Problem :
- ---------
- Die originalen CPC-ROMs sind NICHT dabei !
- Leider hat mir AMSTRAD keine Erlaubnis dafür gegeben.
- Siehe Anhang "Brief von AMSTRAD" (A1.7).
- Du mußt Dir also die ROMs von irgendwoher besorgen. Im folgenden
- einige Möglichkeiten:
-
- 4.2.1 Du hast einen CPC mit 5.25" oder 3.5" (Zweit-)Laufwerk :
- ---------------------------------------------------------------
- Mit dem Hilfsprogramm 22DISK von SYDEX kannst Du auf dem PC
- Fremdformate lesen und beschreiben, eine Spezifikation der
- CPC-Formate habe ich beigelegt.
- Kopiere also einfach ROMGET.ASC (ein Programm zum Abspeichern
- der CPC-ROMs) auf eine CPC-Diskette, renne zum CPC und starte es.
- Die ROMs OS, BASIC, AMSDOS werden automatisch abgespeichert (falls
- vorhanden). Zurück am PC, kopiere sie in das Verzeichnis .\ROM .
- Falls Du weitere ROMs besitzt, kannst Du diese durch leichte
- Modifikation von ROMGET.ASC auch kopieren. Außerdem ist es Dir so
- möglich, Deinen gesamten CPC-Datenbestand auf den PC zu
- "retten".
-
- 4.2.2 Mit paralleler Schnittstelle :
- -------------------------------------
- Nachdem Du ein einfaches Centronics-Kabel gebastelt und
- Deinen CPC und PC zusammengeschoben hast, kannst Du das Transfer-
- programm von Gilles Molinari benutzen.
- In der Datei PARALLEL.PAS kannst Du dir beiden Pascal-
- quellcodes 'getfile.pas' und 'sendfile.pas' finden.
-
-
- 4.2.3. Mit serieller Schnittstelle :
- -------------------------------------
- Ist wahrscheinlich mindestens genauso einfach, ich habe aber
- keine Erfahrung damit.
-
-
- 4.2.4. Nichts dergleichen :
- ---------------------------
- Tja, was kannst Du da tun, um doch noch in den Genuß eines CPC
- zu kommen ?
- - Tippe das ROM einfach ab (vielleicht aus einem ROM-Listing).
- Das Buch ROM-Listing CPC 464/664/6128 vom Markt & Technik
- Verlag ist da sehr empfehlenswert, enthält aber nur das
- CPC 464-ROM.
- - Schreibe selbst ein kleines Betriebssystem (das bleibt wohl
- den Spezialisten vorbehalten, ich würde mich aber freuen,
- eine Kopie davon zu bekommen).
- - Setze eine Annonce in ein Computermagazin mit dem Inhalt
- "Wer kopiert mir das CPC-ROM ?"
- (In einem bestimmten Magazin steht jetzt schon jemand
- zum 2.Mal drin. Obwohl noch einige CPC-Besitzer das Magazin
- lesen, hatte er anscheinend noch keinen Erfolg. Warum wohl
- nicht ?)
- - Frage AMSTRAD nach dem ROM
- (Vielleicht hast Du ja mehr Glück ...)
-
- Eigentlich kann ich dies nicht so recht empfehlen.
- Sei einfach erfinderisch ...
- ... und begnüge Dich solange mit dem "Not-ROM".
-
-
-
- 4.3 Das "Not - ROM" :
- ----------------------
-
- Für Menschen in der Not (d.h. ohne CPC-ROM) habe ich ein
- sogenanntes "Not-ROM" beigelegt.
- Es befindet sich im Verzeichnis .\ROM und wird automatisch
- benutzt, falls dort das Original-ROM nicht unter demselbem
- Namen installiert wurde.
- Es enthält nur ein Programm, was völlig ohne das originale
- ROM auskommt (bis auf den Zeichensatz), ist aber natürlich
- kein befriedigender Ersatz.
-
-
-
- 5. DER SOFTWARE - CPC :
- ========================
-
-
- 5.1 Das erste Mal :
- --------------------
-
- Herzlichen Glückwunsch , Du hast die größte Hürde vor dem
- sinnvollen Einsatz des Emulators bewältigt.
- (Du hast also die CPC-ROMs in das ROM-Verzeichnis kopiert.)
-
- Einfach CPCEMU.EXE starten, die Konfiguration wird geladen,
- der Speicher wird initialisiert und -- bitte anschnallen --
- der Software-CPC startet ...
- (Um in die Realität zurückzukehren, siehe auch Anhang
- "Kommandozeilenparameter" (A1.1).)
-
- Es erscheint der CPC-Eröffnungsbildschirm und Du kannst alles
- machen, was Du vom CPC her kennst.
- Mit F10 hält die Emulation an (im Debug-Menü), und Du kannst
- sie mit 'r' fortsetzen oder mit 'q' abbrechen.
- Siehe Anhang "Das Debug-Menü" (A1.2).
- Einige Besonderheiten beim Betrieb des emulierten CPCs sind
- jedoch zu beachten.
-
-
-
- 6. BESONDERHEITEN :
- ====================
-
-
- 6.1 Die Tastatur :
- -------------------
-
- Vielleicht hast Du schon gemerkt, daß manche Tasten ein anderes
- Zeichen auf dem Bildschirm hervorrufen, als ihre Beschriftung
- vermuten läßt.
- Das liegt daran, daß das CPC-Keyboard-Layout physikalisch auf
- das des PCs übertragen wurde, um alle Tastenkombinationen zu
- ermöglichen. Eventuell mußt Du ein bischen herumprobieren,
- nach dem Motto "Wer suchet, der findet ..."
- Es sind wirklich alle Tasten vom CPC irgendwo vorhanden (sogar
- noch eine mehr , die "Geheimtaste" ).
-
- 6.1.1 Besondere Tasten :
- -------------------------
- - ALT, ALTgr : COPY
-
- - F1 - F12 : Sonderfunktionen, im einzelnen:
- F1 : Hilfe (es erscheint wahrscheinlich dieser Text)
- F2 : wechselt zwischen CPC-Bildschirm (Standard-Sicht)
- und Meldungs-Bildschirm (der mit dem roten Rahmen).
- Auf dem Meldungs-Bildschirm werden einige Meldungen
- angezeigt (logisch), u.a. auch der Kassetten-Katalog.
- F3 : Einlegen einer Diskette. Jeweils ein File aus dem
- DISC_PATH wird angezeigt, und Du kannst durch
- 'A' <Ret> oder 'B' <Ret> die Diskette in das
- gewünschte Laufwerk legen. (Nicht sehr kompfortabel.)
- Bitte nicht benutzen, falls Diskette gerade benutzt
- wird.
- F4 - F7 : reserviert für zukünftige Verwendung
- F8 : Hard-Reset (wie Reset-Taster am CPC)
- (Benutze diese Taste, falls CTRL/SHIFT/ESC nicht
- mehr funktioniert.)
- F9 : reserviert für zukünftige Verwendung
- F10 : Debug-Menü (siehe Anhang "Das Debug-Menü" (A1.2) )
- F11 - F12: reserviert für zukünftige Verwendung
-
- - Du wirst Dich sicher fragen, wo dann die vom CPC her bekannten
- Funktionstasten sind. Versuche mal das Keypad (Zehnerblock) :
- Bei 'Num-Lock an' sind über das Keypad die Funktionstasten des CPC
- zu erreichen, andernfalls der Joystick.
-
- - Der Joystick:
- Anstatt des Keypads kann auch ein analoger PC-Joystick benutzt
- werden. Dazu muß in der Konfigurationsdatei 'USE_JOYSTICK = YES'
- eingetragen worden sein, dann kann auch der Joystick benutzt
- werden, falls einer vorhanden ist. Der "Keypad-Joystick" kann
- immer benutzt werden.
- (Leider ist meine derzeitige Joystickabfrage zu langsam, so
- funktionieren im Moment nur die Feuerknöpfe.)
-
- - Die PAUSE-Taste funktioniert auch (hält den PC an, bis sie
- erneut gedrückt wird).
-
-
- 6.2 Das Diskettenlaufwerk :
- ----------------------------
-
- Diskettenzugriffe per FDC (Floppy Disc Controller) werden auf
- die in der Konfigurationsdatei (s.u.) angegebene Datei
- umgeleitet (DISC_PATH + DRV_A bzw. DRV_B). Mit dem Programm
- CPCREAD kannst Du Dir selber solche Files aus CPC-Disketten
- erstellen.
- Die Datei CPCPD1.DSK enthält einige PD-Programme.
- Siehe Anhang "Aufbau von Disketten-Images" (A1,4).
-
-
- 6.3 Das Kassettenlaufwerk :
- ----------------------------
-
- Nach dem Befehl |TAPE, oder wenn Du kein AMSDOS-ROM besitzt,
- wird die "Kassette" angesprochen. Kassettenzugriffe werden
- dabei in Dateizugriffe auf die einzelnen Dateien im Ver-
- zeichnis TAPE_PATH umgeleitet.
- Der CATalog wird übrigens auf dem Message-Screen angezeigt
- (benutze F2, um die Sicht zu ändern).
- Nicht ASCII-Files besitzen übrigens einen vorangestellten
- AMSDOS-Header.
- Siehe Anhang "Aufbau des AMSDOS-Headers" (A1.5).
- Realisiert wird diese Umleitung mittels einen "ROM-Bypass".
- Siehe Anhang "Funktion des ROM-Bypass" (A1.3).
- Im Moment brauchst Du nur zu wissen, das dieser Bypass für
- Kassettenbetrieb eingeschaltet sein muß (durch den Eintrag
- 'TAPE_BYPASS = YES' in der Konfigurationsdatei) ...
-
-
-
- 6.4 Die Konfigurationsdatei :
- ------------------------------
-
- Jetzt endlich wird die mysteriöse Konfigurationsdatei erläutert.
- Aber eigentlich ist sie gar nicht so mysteriös.
-
- Allgemeines :
- Die Konfigurationsdatei CPCEMU.CFG sollte immer in demselben
- Verzeichnis wie CPCEMU.EXE stehen.
- Kommentare werden durch ein Semikolon ';' eingeleitet, der Rest
- der Zeile wird dann ignoriert.
- Blanks, Tabs, Newlines, ';' dienen als Trennsymbole und können
- beliebig zwischen Bezeichnern und Werten eingesetzt werden.
- Die meisten Definitionen besitzen die syntaktische Form
- <Bezeichner> {T} '=' {T} <Wert> {T}
- Dabei ist {T} eine Folge von mindestens einem Trennsymbol.
- Beispiel:
- 'ROM_PATH = .\ROM'
- Unzulässig wäre also 'ROM_PATH=.\ROM', da die Trennsymbole
- fehlen.
- Willst Du einige Bezeichner nicht (um-)definieren, schreibe ein
- Kommentarzeichen ';' davor, 'ROM_PATH = <nichts>' ist unzulässig.
-
- Folgende Konstrukte werden gleich zusätzlich verwendet:
- <Zahl> kann dezimal oder hexadezimal (0x) angegeben werden.
- <Pfad-Name> darf bis zu 60 Zeichen,
- <Dateiname> bis zu 20 Zeichen lang sein.
-
-
- Gültige Bezeichner:
- In Klammern angegebene Werte werden als Standardwerte angenommen,
- falls der betreffende Bezeichner nicht neu definiert wird.
-
- SHOW_CONFIG = {YES,NO} (YES)
- Um die Konfigurationsübersicht beim Starten der Emulation
- zu unterdrücken. Falls Fehler während der Konfiguration
- aufgetreten sind, wird sie immer angezeigt.
-
- ROM_PATH = <Pfadname> (.\ROM)
- Setzt den Pfad, wo sich die ROM-Abbilder befinden.
- (Siehe Bezeichner ROM_BLOCKS)
-
- TAPE_PATH = <Pfadname> (.\TAPE)
- Setzt den Pfad, wo sich die "Kassetten"-Dateien befinden.
- (Wird auch im Debug-Menü bei load, save benutzt; siehe
- Anhang "Das Debug-Menü" (A1.2).)
-
- DISC_PATH = <Pfadname> (.\DISC)
- Setzt den Pfad, wo sich die Disketten-Abbilder befinden.
- (Siehe Bezeichner DRV_A, DRV_B)
-
- DRV_A = <Dateiname> (DISC1.DSK)
- Die Diskette, die gerade im Laufwerk A liegt (ein Disketten -
- Image - File im Verzeichnis DISC_PATH).
-
- DRV_B = <Dateiname> ()
- Wie DRV_A, nur für Laufwerk B.
-
- PRINTER = <Dateiname> (PRINTER.PRN)
- Die Datei im TAPE_PATH, in die Druckausgaben umgeleitet werden.
- Bei jedem Start des Emulators wird sie neu erzeugt.
-
- TAPE_BYPASS = {YES,NO} (YES)
- Erlaubt (oder verbietet) den ROM-Bypass der Tape-Vektoren,
- falls ein bekanntes ROM vom CPC 464/664/6128 gefunden wurde.
- Der Bypass ist nötig, wenn Du Kassetten-Files benutzen
- möchtest.
- Vergleiche auch "Das Kassettenlaufwerk" (6.3) und den Anhang
- "Funktion des ROM - Bypass" (A1.3).
-
- DISC_BYPASS = {YES,NO} (NO)
- Erlaubt (oder verbietet) den AMSDOS-ROM-Bypass, bei dem die
- kassetten-kompatiblen Befehle nicht von AMSDOS gepatched
- werden. (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.
-
- DISC_SPEEDUP = {YES,NO} (YES)
- Erlaubt (oder verbietet) die AMSDOS-ROM-Modifikation, 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 Track 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 Track suchen
- poke &C7E2,&01 :'schnelles Track suchen )
-
- USE_JOYSTICK = {YES,NO} (YES)
- Erlaubt (oder verbietet) die Benutzung eines PC-Joysticks,
- falls vorhanden.
- Der "Keypad-Joystick" kann immer benutzt werden.
-
- VSYNC_CT = <Zahl> (1)
- Setzt Anzahl der Abfragen des Port B, bis das vsync-Signal
- wechselt. In Wirklichkeit ist dieses Bit nur beim vertikalen
- Strahlenrücklauf des Bildschirms gesetzt.
- Mögliche Werte sind 1 bis 255.
-
- GENINT = <Zahl> (300)
- Setzt die Frequenz, mit der Interrupts generiert
- werden (in Hz). Auf dem CPC immer mit 300 Hz.
- Auf langsamen Computern kann der Wert auf etwa 100 verringert
- werden (SCR_UPD_CT dann evtl. auf 2).
- Mögliche Werte: 18 Hz bis ca. 600 Hz.
-
- SCR_UPD_CT = <Zahl> (6)
- Setzt den Screen-Update-Counter. Nach jeweils <Zahl> Interrupts
- wird ein Screen-Update durchgeführt, falls nötig. Werden
- Interrupts mit 300 Hz generiert und <Zahl> = 6 angegeben,
- läuft die Bildschirm-Auffrischung also mit 50 Hz.
- (Zulässige Werte 1-255).
-
- PORT_B = <Zahl> (0x3F)
- Setzt den Eingangswert am Port B der PIO. Damit kann z.B. die
- Benutzung des Druckers untersagt oder ein anderer Firmenname
- gewählt werden. Im Moment ist "Amstrad" (0x3F) eingestellt.
- Für "Schneider" setze einfach 0x3B ein.
-
- Bedeutung der Bits:
- b7 = 0 (TTL-Signale von Kassette; unbenutzt)
- b6 = 0 (0= Drucker bereit, 1 = busy)
- b5 = 1 (EXP-Signal)
- b4 = 1 (1 = vsync mit 50 Hz oder 0 = mit 60 Hz; unben.)
- b3,b2,b1 = 111
- Firmenname :
- Isp (000), Triumph(001), Saisho(010), Solavox(011),
- Awa(100), Schneider(101), Orion(110), Amstrad(111)
- b0 = 1 (vsync wechselt zwischen 0 und 1 im Emulator,
- Dauer je nach VSYNC_CT)
-
-
- ROM_BLOCKS = <Anzahl> {T} (0)
- <ROM-Nummer> {T} <Dateiname> {T} <Offset> {T}
- (diese Zeile <Anzahl>-mal wiederholen !)
-
- Beschreibt, welche ROMs geladen werden sollen :
- - <Anzahl> ist Anzahl der im folgenden zu ladenden ROMs.
- Jedes ROM besitzt dabei eine Größe von 0x4000 Bytes.
- (Anzahl von 0 bis ca. 8, begrenzt durch den Speicher.)
-
- - <ROM-Nummer> ist die Nummer die das ROM bekommen soll,
- d.h., mit der es durch 'OUT &DF00,num' selektiert 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).
- 255 = Lower-ROM (z.B. OS, hat nur im Emulator diese
- Nummer.)
- - <filename> ist die Datei, in der sich das Rom-Abbild im
- Verzeichnis ROM_PATH befindet.
- - <Offset> ist eine Anzahl von Bytes, die in der Datei vor
- dem gewünschten ROM stehen. Ein AMSDOS-Header wird dabei
- automatisch überlesen, bleibt also unberücksichtigt.
- Mit Angabe dieses Offsets ist es möglich, mehrere ROMs
- in einem File zu haben. Bei den Einträgen
- 255 Z80CPC.ROM 0x0000
- 0 Z80CPC.ROM 0x4000
- befinden sich also Lower-Rom und Vordergrund-Rom direkt
- nacheinander in demselben File.
-
-
-
- 6.5 Kompatiblität des Emulators (oder: Was unterstützt wird) :
- ---------------------------------------------------------------
-
- 6.5.1 Die Z80 - CPU :
- ----------------------
-
- Alle Z80-Befehle, auch sogenannte illegale Befehle.
- Es gibt eine langsame Z80-Emulation in C und eine schnelle
- Emulation in Assembler von Jürgen Weber.
- Durch die "Co-CPU"-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 Programm-
- entwicklung benutzt.
-
-
- 6.5.2 Das Gate-Array :
- -----------------------
-
- - alle 32 Farben des CPC (27 verschiedene)
- - alle 3 Bildschirmmodi (x, y, Farben) :
- mode 0 = 160x200x16
- mode 1 = 320x200x4
- mode 2 = 640x200x2
- - ROM-Banking (16KB OS, 16KB BASIC, 16KB AMSDOS, und sonstige
- Zusatzroms)
-
-
- 6.5.3 Das PAL (Programmable Logic Array) :
- -------------------------------------------
-
- - Ram-Banking (8*16KB = 128KB)
- Banking kann sehr langsam werden, da Speicherblocke vertauscht
- werden müssen.
- Vielleicht könnte EMS-Memory helfen ...
-
-
- 6.5.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
-
-
- 6.5.5 Die PIO 8255 (Programmable Input-Output) :
- -------------------------------------------------
-
- - Keyboard (über den PSG)
- - vsync-Emulation
-
-
- 6.5.6 Der PSG (Programmable Sound Generator) :
- -----------------------------------------------
-
- (noch kein Sound)
-
-
- 6.5.7 Der FDC (Floppy Disc Controller) :
- -----------------------------------------
-
- - alle notwendigen FDC-Kommandos, um die Laufwerke A und B zu
- steuern (dazu gehören Sektor lesen/schreiben, Track suchen,
- Sektor-ID lesen, ... ; Track formatieren wird unterdrückt. )
- - sehr flexible Disketten-Formate (bis zu 18 Sektoren pro Track).
- Erzeuge sie mit CPCREAD.
-
-
- 6.5.8 Die Kassette :
- ---------------------
-
- - Besonders schnell durch ROM-BYPASS.
- Zugriff auf einzelne Files im TAPE_PATH.
- (Siehe Konfigurationsdatei.)
-
-
- 6.5.9 Die Centronics :
- -----------------------
-
- - Druckerausgabe auch mit 8-Bit-Druckerpatch, wird auf die
- Datei PRINTER im TAPE_PATH umgeleitet.
- (Siehe Konfigurationsdatei.)
-
-
-
- 6.6 Inkompatiblitäten (oder: Was nicht unterstützt wird) :
- ----------------------------------------------------------
-
- - Overscan (höchstens für ein paar dämliche Demos)
- (Wird nie eingabaut werden, da zu langsam)
- - verschiedene Modi gleichzeitig auf dem Bildschirm (flimmert)
- - Sound (noch kein einziger Ton)
- - PC-Joystick (nur Feuerknöpfe)
- - OS/2 Dos-Box: Flackern bei Farben setzen ( da kein hsync
- verfügbar.)
- - Programm Copymate: Laden/Speichern unmöglich, da es einen Trick
- benutzt, um die Sektoranzahl festzustellen)
-
- - Bitte melde alle aufgetretenen Fehler !
-
-
-
-
- A1. Anhang :
- =============
-
-
- A1.1 Kommandozeilenparameter :
- -------------------------------
-
- Du kannst CPCEMU auf verschiedene Arten aufrufen, indem
- Du Optionen angibst, die durch '-' oder '/' eingeleitet
- werden, z.B. 'CPCEMU /s'
-
- Folgende Optionen sind zulässig:
- CPCEMU /f : startet CPCEMU im Fast-Modus (Standard)
- CPCEMU /s : startet CPCEMU im Slow-Modus
- CPCEMU /d : startet CPCEMU im Debug-Modus
- (Siehe Anhang "Das Debug-Menü" (A1.2).)
- CPCEMU /h : zeigt einen Hilfsbildschirm
-
- Die Option '/d' wird auch automatisch verwendet, wenn
- eine unbekannte Option angegeben wurde.
-
-
-
-
- A1.2 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
- kann modifiziert werden, der Speicher kann "gedumped",
- disassembliert oder modifiziert werden, Speicherauszüge
- (Programme) können geladen oder gespeichert werden.
- Und das Interessanteste:
- Du kannst die Code-Ausführung im Single-Step-Mode verfolgen !
- (Ähnlich wie bei einem richtigen Debugger).
-
- A1.2.1 Aufbau des Debug-Menüs :
- --------------------------------
-
- R)un T)race S)tep A)ssem D)ump I)nput L)oad saV)e M)ode 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
- (benutze die Großbuchstaben). In den beiden nächsten Zeilen
- stehen die aktuellen Inhalte der Register. Darunter steht der
- disasemblierte aktuelle Befehl an Position PC.
- In der letzten Zeile wartet ein Prompt auf Deine Eingabe.
- ('f' zeigt an, daß Du gerade die fast-CPU benutzt.)
-
-
- A1.2.2 Vorbemerkungen :
- ------------------------
- In eckige Klammern eingeschlossene Parameter sind optional [opt.].
- Zahlenangaben alle hexadezimal, z.B. <Adresse> = 0000 bis ffff.
- "<ret>" zeigt an, daß Du in einem speziellen Modus bist und
- <Return> drücken sollst, um fortzufahren. <String><Return>
- verläßt diesen Modus (d.h. z.B. b<Return>).
- 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 Default-Wert PC (Programmzähler)
- angenommen.
-
-
- A1.2.3 Übersicht über die Kommandos :
- --------------------------------------
-
- R)un :
- r [<Adresse>] : 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 [<Adresse>] : führt wirklich nur den aktuellen Befehl aus,
- mit <Return> den nächsten, usw. <string><Return> 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 [<Adresse>] : 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 [<Adresse>] : disassembliert die nächsten 16 Befehle, mit
- <Return> die nächsten, usw. <string><Return> beendet den
- Disassemble-Modus.
-
- D)ump :
- d [<Adresse>] : zeigt einen Hex-Ascii-Speicherauszug der nächsten
- 256 Bytes ab PC oder Adresse an, <Return> die nächste Seite, usw.
- <string><Return> beendet den Dump-Modus.
-
- I)nput (Speicherstellen modifizieren) :
- i [<Adresse>] : zeigt die Speicherstelle mit aktuellem Inhalt an,
- der durch <Return> bestätigt oder durch <hexzahl><return>
- verändert werden kann. Verlassen wird der Input-Modus mit
- einer ungültigen Zahl, z.B. -1<Return>.
-
- L)oad (Laden eines Speicherbereichs) :
- l [<Adresse>] : fragt nach dem Dateinamen <name> und läd dann
- die Datei <name> aus dem Verzeichnis TAPE_PATH nach <Adresse>
- Ein AMSDOS-Header wird erkannt.
- Siehe Anhang "Aufbau des AMSDOS-Headers".
- Beispiele:
- -f-> l<Return> demo<Return> :
- läd Datei 'demo' an den aktuellen PC
- -f-> l a000<Return> myprog<Return> :
- läd Datei 'myprog' nach 0xA000
-
- saV)e (Speichern eines Speicherbereichs) :
- v [<Adresse>] : fragt nach dem Dateinamen <name> und der Länge
- des Speicherblocks. Dieser wird dann ab <Adresse> (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<Return> demo<Return> 4000<Return> :
- speichert "demo" ab PC mit der Länge 0x4000.
-
- M)ode (Setzen des Anzeigemodus) :
- m : Schaltet Registeranzeige, Befehlsdisassemblierung des
- aktuallen Befehls an/aus.
-
- 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.
-
-
- A1.2.4 Registermanipulationen :
- --------------------------------
-
- Neben den Buchstabenkommandos gibt es auch Befehle zum Setzen
- der Register mit der Syntax: '<Register>=<Hex-Wert>'
- Beispiele:
- - af=345 : setzt Register AF auf 0x0345
- - pc=a000 : setzt Programmzähler auf 0xA000
-
- Hier wird '=' als Trennsymbol verwendet, somit sind keine
- zusätzlichen Blanks erforderlichg (dadurch ist auch
- '<Register> <Hex-Wert>' möglich).
- Alle Register, die angezeigt werden, lassen sich verändern, also
- AF, BC, DE, HL, IX, IY, SP, PC, IR, AF', BC', DE', HL',
- zusätzlich IFF1, IFF2 und IMD.
-
-
-
- A1.3 Funktion des ROM - Bypass :
- ---------------------------------
-
- 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 : CAS INIT (BC65)
- 77 : CAS IN OPEN (BC77)
- 7A : CAS IN CLOSE
- 7D : CAS IN ABANDON
- 80 : CAS IN CHAR
- 83 : CAS IN DIRECT
- 86 : CAS RETURN
- 89 : CAS TEST EOF
- 8C : CAS OUT OPEN
- 8F : CAS OUT CLOSE
- 92 : CAS OUT ABANDON
- 95 : CAS OUT CHAR
- 98 : CAS OUT DIRECT
- 9B : CAS CATALOG
-
- Zusätzlich gibt es noch den User-Break-Befehl
- ED FC FC USER &BCFC , der die Emulation sofort anhält.
-
-
-
- A1.4 Aufbau von Disketten - Images :
- -------------------------------------
-
- Disketten-Image-Files bestehen aus einem 0x100-Byte langen
- Disketten-Informationsblock und für jeden Track aus einem
- 0x100-Byte langen Track-Informationsblock, an den sich die
- Daten des Tracks (zu jedem Sektor) anschließen.
-
- A1.4.1 Der Disketten - Informationsblock :
- -------------------------------------------
- Byte (hex) : Bedeutung:
- 00 - 21 MV - CPCEMU Disk-File\r\nDisk-Info\r\n
- (als Kennung)
- 22 - 2F unbenutzt (0)
- 30 Anzahl Tracks (40, 42, vielleicht 80)
- 31 Anzahl Heads (1, 2 noch nicht unterstützt)
- 32 - 33 Trackgröße (einschließlich 0x100-Bytes Track-Info)
- Bei 9 Sektoren * 0x200 Bytes + 0x100 Byte Trk.Info
- also 0x1300.
- 34 - FF unbenutzt (0)
-
- A1.4.2 Der Track - Informationsblock (für jeden Track) :
- ---------------------------------------------------------
- Byte (hex) : Bedeutung:
- 00 - 0C Track-Info\r\n
- 0D - 0F unbenutzt (0)
- 10 Track-Nummer (0 bis Trackanzahl-1)
- 11 Head-Nummer (0) (später vielleicht auch 1)
- 12 - 13 unbenutzt (0)
- Format-Track-Parameter:
- 14 BPS (Bytes pro Sektor) (2 für 0x200 Bytes)
- 15 SPT (Sektoren pro Track) (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 Tracknummer \
- 19+i Headnummer | 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)
-
- Anmerkungen:
- In der Reihenfolge der Sektor-ID's müssen nach der Track-Info
- die Sektordaten kommen. Es dürfen keine Tracks, Sektoren
- ausgelassen werden.
- CPCREAD dient zum Kopieren von CPC-Disketten in dieses Format.
-
-
-
- A1.5 Aufbau des AMSDOS - Headers :
- -----------------------------------
-
- Byte (hex:) Bedeutung:
- 00 User (0 , mögliche Werte 0-15)
- 01 - 0F Filename+Extension (evtl. mit Nullen aufgefüllt)
- 10 Blocknummer (0)
- 11 Letzter-Block-Flag (0)
- 12 File-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 Filelänge (1-FFFFFF)
- 43 - 44 Prüfsumme über Bytes 00-42
- 45 - 7F unbenutzt (zufällige Werte aus dem Sektorpuffer)
-
- Anmerkung:
- Der Header wird jeder nicht-ASCII-Datei vorangestellt.
- Er wird anhand der Prüfsumme erkannt.
- Bytes 00 - 3F stammen aus der Kassettenzeit, in der Files
- in Blöcke aufgeteilt wurden.
- Unbedingt notwendig sind die Bytes 12, 15-16, 1A-1B, 40-42, 43-44 .
-
-
-
- A1.6 Informationen zum CPC :
- -----------------------------
-
- Da gäbe es so viel zu sagen, es ließen sich mehrere Bücher
- schreiben. Vielleicht in einer späteren Dokumentation ...
-
-
-
- A1.7 Brief von AMSTRAD :
- -------------------------
-
- Folgenden (gekürzten) Brief habe ich an AMSTRAD geschrieben
- (übersetzt ins Deutsche) :
-
-
-
- Sehr geehrte ...
- Ich möchte Ihnen ein außergewögnliches Programm vorstellen !
-
- Einen CPC-Emulator für den PC.
-
- Sie mögen sagen, "CPC, den Heimcomputer, den wir vor Jahren
- entwickelt haben, das ist vorbei !"
- Aber es gibt immer noch Leute, die ihn benutzen, mögliche
- Käufer von Amstrad-PC's. Ein Emulator ist ein weiterer Grund,
- sich einen PC anzuschaffen, man kann weiterhin die alten
- gut bekannten Programme während einer Übergandsphase nutzen.
-
- Auch für jemanden, der schon einen PC hat, ist es faszinierend.
- Ich war total überrascht, als ich den CPC-Eröffnungsbildschirm
- das erste Mal auf einem völlig anderen Computer sah. Das
- trieb mich an, die Emulation zu verbessern (zuerst war sie
- nur schwarz-weiß ...), so würde ich sie heute als
- "Software-CPC" bezeichnen. Natürlich kann sie noch verbessert
- werden. Einige Details zum Emulator liegen als Anlage bei.
-
- Leider kann ich den Emulator ohne Unterstützung nicht
- weiterprogrammieren (ich bin nur ein Student). Alle
- Programme, die ich je geschrieben habe, sind Public
- Domain, genauso wie die aktuelle Version von CPCEMU.
-
- Wenn Sie interessiert sind, kann ich Ihnen den Emulator
- zum Testen schicken.
-
- Falls nicht (ich denke nicht), möchte ich wissen, unter
- welchen gesetzlichen Bedingungen ich das Original Amstrad-
- CPC-ROM in einem Shareware-Paket beilegen darf.
- (Einige Leute fragten mich danach.)
- .
-
- Es gab folgende Antwort :
-
- .
-
- Sehr geehrter ...
-
- Danke für Ihren Brief, der den CPC betraf.
-
- Bitte nehmen Sie den Rat an, daß das CPC ROM von einem
- Copyright geschützt ist, und wir Ihnen zu unserem Bedauern
- in diesem Fall keine Hilfe anbieten können.
-
- Wir bedauern, Ihnen in diesem Fall nicht behilflich sein
- zu können und Unstimmigkeiten hervorgerufen zu haben.
-
- .
-
- Somit darf ich ein ROM nicht beilegen. Ich frage mich nur,
- wer dann das Copyright hat.
-
-
-
-
- A1.8 Geschichte der Programmentwicklung (history) :
- ----------------------------------------------------
-
- A1.8.1 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 Co-CPU-Technik, um Fehler zu finden
- (mit seperatem Speicher für die CO-CPU).
- 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.
- Co-Z80-Error: Alle (ix+zz) mit negativer Distanz waren
- falsch ! Vergessen, signed char zu nehmen.
- - v2.2 (30.8.1992 - 3.9.1992)
- Neue Keyboard-Routine, Palettenänderung ohne Flackern (hsync).
- Einführung eines "Not-Rom" mit Copymate.
- - v2.3 (15.9.1992 - 19.9.1992)
- FDC-Emulation zum Laden von Sektoren.
- Co-Z80-Error: 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.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.
-
- A1.8.2 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 CAS 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 CAS 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)
- Disk-Image-Files jetzt mit Endung .DSK.
- CPCREAD.PAS korrigiert (vergessen, head mit 0 zu initialisieren)
- und in CPCREAD.C umgewandelt.
- Pio-8255-Port-Adressierung flexiblisiert (kann auch lesen,
- wenn Port auf Ausgabe geschaltet ist, ...)
- - v0.7 (26.7.1993 - 29.8.1993) (inoffiziell)
- Source völlig überarbeitet, modularisiert.
- Konfigurationsfile eingeführt, jetzt mehrere ROMs möglich.
- Änderung des Firmennamens von Schneider auf Amstrad.
- (Kann jetzt jeder selber einstellen.)
- Fehler im RAM-Banking beseitigt.
- Neue Dokumentation in Deutsch
- - v0.8 (30.8.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.
-
-
-
- A1.9 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
-
-
- - Dank auch an Arnt Gulbrandsen, aus dessen JPP-Source ich die
- Ideen für den Keyboard-Handler und die Joystickabfrage bekam.
- JPP ist übrigens ein sehr guter Spectrum-Emulator.
-
- - Dank an Gilles Molinari für sein Transferprogramm.
-
- - Dank an AMSTRAD für die Beantwortung meines Briefes
- (war mein erster englischer Geschäftsbrief).
-
- - Und Dank an die vielen Benutzer, die mir Verbesserungsvor -
- schläge geschrieben haben oder sonstige Ideen hatten.
-
-
-
-
- A1.10 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 and OS/2 sind von International
- Business Machines.
-
- CPC, AMSDOS ist von Amstrad,
- BORLAND C, TASM (Turbo Assembler) sind von Borland,
- 22DISK ist von SYDEX
- ...
-
-
-
- A1.11 Adresse von AMSTRAD :
- ----------------------------
-
- Amstrad plc, Brentwood House,
- 169 Kings Road, Brentwood,
- Essex CM14 4EF
-
-
-
- A1.12 Der Autor :
- ------------------
-
- Marco Vieth (22),
- Student an der Universität Paderborn
- 7.Semester (WS 93/94)
-
-
-
- Viel Spaß !
-
-
- ----------------------
-
-