|
EMUZ80 ist ein CP/M-Emulator für den Z80 Prozessor. Das Programm liest den Ordner "CPM_LW_A" als CP/M-Laufwerk A: ein und startet CP/M in der Version 2.2. So können ohne weitere Installation schnell CP/M Programme genutzt oder getestet werden. Für Entwickler bietet der Emulator einen Einzelschrittbetrieb, einen Unterbrechungspunkt (Breakpoint), Anzeige der CPU-Register, Anzeige des Z80 Arbeitsspeichers (64 K RAM), Anzeige des jeweiligen Befehls im Quelltext (TRACE) soweit vorhanden. Der Monitor unterstützt die wichtigsten VT100 Steuerzeichen um Turbo Pascal 3.01 von Borland anzeigen und editieren zu können. |
Inhaltsverzeichnis1. Motivation und Zielsetzung2. Bedienung des Z80-Emulators 3. Zusatzfunktionen des Z80-Emulators 4. Downloads 5. Lizenz |
Ein Emulator bildet die Hardware einen anderen Prozessor auf einem Computer (meist einem PC) programmtechnisch nach (der Prozessor wird softwaremäßig emuliert). So kann man theoretisch jeden Prozessor und jedes Betriebssystem nachbilden. Ein wichtiger Nachteil dabei ist, dass dies sehr zeitaufwendig ist.
In den 1970er und 1980er Jahren arbeiteten die damaligen CP/M Computer mit Taktfrequenzen von etwa 1 bis 4 MHz. Heutige PCs (nach rund 35 Jahren) arbeiten üblicherweise mit 2 bis 3 GHz. Das bedeutet, dass ein Emulator etwa 1000 Takte Zeit hat um einen "ein Byte Befehl" abzuarbeiten. Das ist sehr viel Zeit und so kann man den Emulator auch in einer Hochsprache schreiben und das Ergebnis ist in der Regel immer noch scheller, als der originale CP/M Computer.
Im Internet kann man erstaunlich viele Z80- und CP/M-Emulatoren finden. Aber leider erfüllten viele Emulatoren meine persönlichen Vorgaben nicht. Wie schon gesagt, es sind an vielen Stellen
Hier fallen alle Testversionen, fehlerhafte Versionen und Alpha-Phasen heraus, auch wenn der Emulator sonst einen interssanten Eindruck gemacht hat.
Als sich in den 1980er Jahren das DOS-Betriebssystem gegenüber dem CP/M durchgesetzt hatte und auch die PCs immer schneller wurden, wurden viele Z80- und CP/M-Emulatoren für das Betriebssystem DOS entwickelt. Diese DOS-Programme konnten bis Windows XP recht zuverlässig genutzt werden. Aber ab Windows 7 gibt es mehr und mehr Probleme, so dass zukünftig DOS-Programme verstärkt nur noch in virtuellen Maschinen oder Emulatoren genutzt werden können. Aus diesem Grund ist es dann sinvoller den CP/M-Emulator nicht in einem DOS-Emulator laufen zu lassen, sondern gleich unter dem genutzten Betriebssystem Windows.
Erstaunlich viele DOS-Programme sind nicht Freeware oder Open-Source (oft Shareware) und können somit nicht uneingeschränkt rechtlich genutzt und verbreitet werden. Auch dies war ein wichtiges Kriterium.
Wiederum auffallend viele freie Programme (Freeware und Open-Source) werden für das Betriebssystem Linux entworfen. Der Vorteil liegt auf der Hand, wenn Du Deine Programme frei nutzen möchtest, dann verwende doch auch gleich ein freies Betriebssystem. Diese Denkweise ist sehr sympatisch, vor Allem wenn man die vielen Gängeleien berücksichtigt, die Microsoft seinen Kunden und Usern zumutet.
Auf der anderen Seite muss man akzeptieren, dass die meisten Programme unter Windows laufen. Nach meiner Erfahrung kennt sich so gut wie niemand in beiden Systemwelten (Windows und Linux) zu 100% aus. Daher vertrete ich die Meinung, dass auch die Programmierer eines Emulators ihr Programm immer nur primär für ein Betriebssystem entwickeln. Später werden manchmal einige Programme auch für andere Betriebssysteme bereitgestellt. Das ist dann aber immer das Zweitsystem und fast immer mit einigen Einschränkungen verbunden.
Entwicklungssystem und primäres Zielsystem ist Windows
für das schnelle Übersetzen und Linken von Assemblerquelltexten ist ein Windows-Kommandozeilen-Emulator sinnvoll (KEM80)
für das Arbeiten mit Turbo Pascal und anderen Programmen, die über textliche Dialoge gesteuert werden, ist ein CP/M-Terminal sinnvoll, das möglichst VT100 kompatibel sein sollte (Windows GUI-Programm EMUZ80)
der Emulator sollte möglichst sofort und ohne Installation lauffähig sein
ebenfalls wichtig für ein schnelles Arbeiten ist, dass alle benötigten CP/M-Dateien aus einen festen Ordner (hier CPM_LW_A) gelesen und die geänderten Dateien (nach Beendigung des Emulators) auch wieder in diesen Ordner abgelegt werden
Ein oft diskutiertes Thema in den Z80-Foren ist die Frage, ob ein Z80-Emulator auch die undokumentierten Befehlen unterstützen soll. Zum Hintergrund: der originale Z80-Prozessor der Firma ZILOG besteht (wie alle anderen digitale Schaltkreise) aus vielen logischen Gattern. Diese Gatter sorgen für die Umsetzung der geforderten und offiziellen Befehlstabelle (Instruction Set) des Z80-Prozessors.
Nun haben in den 1980er Jahren einige Leute (durch einfaches Probieren) herausgefunden, dass - bedingt durch die Z80 Gatterstrukturen - auch andere Befehls-Hexacode ausgeführt werden und dann irgendwelche Aktionen durchführen. Die ganze Sache hat aber einige Nachteile:
die undokumentierten Befehle werden durch die Firma Zilog nicht unterstützt
selbst bei Neu- oder Weiterentwicklungen des Z80 im Hause Zilog ist es möglich, dass diese Befehle auf Grund geänderter Gatterstrukturen nicht mehr so umgesetzt werden, wie beim Original Z80
Ein Z80-Prozessor eines anderen Herstellers, der zu 100% befehlskompatibel ist, aber den Befehlssatz mit einer anderen (eigenen) Gatterstruktur umsetzt, unterstützt diese Befehle nicht mehr so, wie damals empirisch ermittelt
Einige Tests haben bei mir ergeben, dass die "undokumentierten Befehle" in der Software, die ich derzeit nutze, nicht benötigt werden.
Wichtiger Hinweis:
Kann der Emulator einen Befehl nicht auflösen, so wird im Protokollfenster (links unten) sofort eine Fehlermeldung (mit der Adresse des Befehls) angezeigt.
Mein Fazit: Undokumentierte Befehle werden derzeit in diesem Z80-Emulator nicht unterstützt.
Das Programm benötigt keine Installation. Nach dem Entpacken der ZIP-Datei muss lediglich die Datei
EMUZ80.EXE
gestartet werden.
Die Bedienung des Programms ist genau so einfach, wie seine Installation. Alle Dateien, die sich im Unterordner "CPM_LW_A" befinden, werden beim Start des Emulators als CP/M-Laufwerk A: eingelesen. Mit dem Emulator wird auch das CP/M automatisch gestartet (und zwar im Modus "Start Auto o. Protokoll", das heisst im Dauerbetrieb).
Danach kann CP/M wie mit einer echten Hardware genutzt werden. Wird der Emulator mit "Schliessen" beendet, werden alle Dateien im CP/M-Laufwerk A: mit den Dateien im Ordner "CPM_LW_A" verglichen. Sollte sich etwas verändert haben (neue Datei, Datei verändert, Datei gelöscht), so werden die geänderten Dateien im Ordner "CPM_LW_A" aktualisiert.
Innerhalb des schwarzen Rahmens ("CP/M Monitor by Ronald Daleske") wird ein CP/M Monitor mit VT100 ESC-Sequenzen nachgebildet. Er ist derzeit für "Turbo Pascal" optimiert.
Unterhalb des Monitors (rechts) wird die Sektor-Belegung des Laufwerkes A: grafisch dargestellt. Dabei sind die roten Sektoren die CP/M Boot-Sektoren (hier aber nicht genutzt). Die blauen Sektoren stellen das Direktory dar und die grünen Sektoren sind die mit Daten und Programmen belegten Sektoren auf diesem Laufwerk. Die nicht genutzten Sektoren werden weiß dargestellt.
Die Zusatzfunktionen können in einem neuen Fenster durch Drücken des Button "Einstellungen anzeigen" genutzt werden.
Wie schon im Teil "Bedienung" beschrieben, startet der Emulator im Dauerbetrieb ( Modus "Start Auto o. Protokoll"). Um den Dauerbetieb zu beenden muss der Button "Stop Auto" gedrückt werden. Nun befindet sich der Emulator im Einzelschrittbetrieb. Durch Drücken auf den Button "einen Befehl abarbeiten" wird nun genau ein Befehl abgearbeitet (danach wird wieder gewartet). Der abgearbeitete Befehl wird im Protokollfenster angezeigt.
Wird im laufenden CP/M-Betrieb einfach auf den Einzelschrittbetrieb umgeschaltet, so befindet sich das BIOS meist in der Warteschleife für die Tastatureingabe (gut zu sehen mit "Trace anzeigen").
Anzeige der CPU-Register |
Anzeige des RAM-Speichers |
Anzeige des PRN-Quelltextes (TRACE) |
Die drei in der Tabelle aufgeführte Button aktivieren Fenster, die zusätzliche Statusmeldungen und Informationen des Emulators im Einzelschrittbetrieb anzeigen.
Nach dem Drücken dieses Buttons werden die PRN-Quelltexte im Ordner "Trace" in alphabetischer Reihenfolge eingelesen. Dann wir aus den hexadezimalen Zeileninformationen eine weitere Tabelle generiert. Bei jedem Einzelschritt wird die entsprechende Adresse gesucht und - wenn möglich - wird diese dann im TRACE-Fenster angezeigt.
Standardmäßig sind im "Trace" Ordner folgende PRN-Dateien hinterlegt:
50_CCP.PRN - der "console command processor (CCP)"
52_BDOS.PRN - das "Bdos Interface (BDOS)"
54_CPD7.PRN - das "BIOS des Emulators (BIOS)"
Es können aber auch eigene PRN-Dateien hier abgelegt werden, die dann im Einzelschrittbetrieb genutzt werden können (z.B. eigene CP/M Programme ab 0100H).
Emulator mit CP/M Beispielprogrammen: EMUZ80_V1.0.ZIP
Emulator mit allen Quelltexten: EMUZ80_Quelltexte_V1.0.zip
Diese(s)
Werk bzw. Inhalt von Ronald Daleske steht unter einer
Creative Commons Namensnennung-Nicht-kommerziell 3.0
Deutschland Lizenz.
keine Mängelgewähr
DIESE SOFTWARE WIRD VOM URHEBERRECHTSINHABER "OHNE MÄNGELGEWÄHR" BEREITGESTELLT. ALLE AUSDRÜCKLICHEN ODER STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN, EINSCHLIESSLICH DER STILLSCHWEIGENDEN GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK (JEDOCH NICHT DARAUF BESCHRÄNKT), WERDEN AUSGESCHLOSSEN. DER URHEBERRECHTSINHABER IST IN KEINEM FALL UND NACH KEINER HAFTUNGSTHEORIE (SEI ES AUF VERTRAGSBASIS, AUF DER BASIS STRENGER HAFTUNG ODER UNERLAUBTER HANDLUNGEN, EINSCHLIESSLICH FAHRLÄSSIGKEIT) FÜR BELIEBIGE VERURSACHTE DIREKTE, INDIREKTE, ZUFÄLLIGE, BESONDERE, EXEMPLARISCHE SCHÄDEN ODER FOLGESCHÄDEN (EINSCHLIESSLICH, JEDOCH NICHT BESCHRÄNKT AUF BESCHAFFUNG VON ERSATZPRODUKTEN ODER -LEISTUNGEN, NUTZUNGSAUSFALL, DATEN- UND GEWINNVERLUST ODER GESCHÄFTSAUSFALL) HAFTBAR, DIE AUFGRUND DER VERWENDUNG DIESER SOFTWARE ENTSTEHEN KÖNNEN. DIES GILT AUCH, WENN AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN HINGEWIESEN WURDE.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.