Programmier-Projekte
Lazarus / Free Pascal
von Ronald Daleske

Homepage Übersicht vorherige Seite nächste Seite Kontakt Impressum Warenzeichen

KEM80 - CP/M Konsolen-EMulator für Z80

KEM80 ist ein Konsolen-CP/M-Emulator für den Z80 Prozessor (Windows32-Konsole). Das Programm liest den Ordner "CPM_LW_A" als CP/M-Laufwerk A: ein und startet CP/M in der Version 2.2 mit den übergebenen Programm-Parametern wird ein CP/M Programm gestartet. Sollten CP/M-Dateien verändert worden sein, so werden diese in den Ordner "CPM_LW_A" zurückgeschrieben.

Inhaltsverzeichnis

1. Beschreibung
2. Syntax
3. Parameter
4. Beispiele
5. Stand der Softwareentwicklung
6. Downloads
7. Lizenz
8. Hinweis zu den Compilereinstellungen

1. Beschreibung

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.

KEM80 ist ein Z80-Emulator mit dessen Hilfe das CP/M-Betriebssystem emuliert wird.

Das Programm KEM80 ist ein Windows-Konsolenprogramm (Win32) und läuft ohne Einschränkungen auf allen Windows Betriebssystemen. Es ist kein DOS-Programm.

Arbeitsweise

Nach dem Start von KEM80 wird im Arbeitsspeicher des PCs ein virtueller Z80 Emulator gestartet. Er reserviert für den Z80 einen Arbeitsspeicher von 64 KByte sowie die Z80 Register. Dann wird (wie im CP/M) ein Programmloader ab Adresse 0000H geladen und es beginnt die Abarbeitung des Z80-Programmcodes in den Registern des Z80 wie es der Instruction-Set vorsieht.

Das BIOS-Kaltstart Unterprogramm lädt das BDOS und das CCP (aus dem Programmcode des KEM80) in den Arbeitsspeicher.

Weiterhin liest der KEM80 den Inhalt des Ordners "CPM_LW_A" in ein virtuelles CP/M-Laufwerk ein und stellt es dem CP/M als Laufwerk A: zur Verfügung.

Beim Aufruf des KEM80 (von der Windows Konsole) muß mindestens ein weiterer Parameter mit angegeben werden. Dieser Parameter ist das aufzurufende CP/M-Programm (siehe Punkt "2. Syntax"). Dieses CP/M-Programm wird als Parameter dem CCP übergeben, das dann das CP/M-Programm (ab Adresse 100H) lädt und startet. Wurden noch weitere Parameter übergeben, werden diese an das geladene CP/M-Programm als CP/M-Parameter übergeben.

Die Abarbeitung eines CP/M-Programms endet immer mit einem BIOS-Warmstart. Dieser wird abgefangen und der Emulator KEM80 wird beendet.

Während der Abarbeitung des CP/M-Programms werden alle (Windows) Konsolenein- und ausgaben an die CP/M-BIOS-Schnittstelle CONIN und CONOUT umgeleitet. Somit kann die Abarbeitung des CP/M-Programms an der Windows-Konsole verfolgt werden.

Wichtige Hinweise:

1. Der Ordner "CPM_LW_A" ist zwingend erforderlich. Alle diese Dateien werden in das CP/M-Laufwerk A: eingelesen.

2. CP/M verwaltet die Textdateien anders als Windows (siehe ...). Wenn Text-oder Programmdateien unter Windows verändert wurden, so sollten diese unbedingt mit dem Programm "WIN2CPM.exe" in das CP/M-Format umgewandelt werden (ansonsten kann es zu unerklärlichen Fehlermeldungen im CP/M kommen).

ausführliche Beschreibung des Emulatorkerns

Der Emulator KEM80 ist eine Auskopplung eines größeren Z80-Emulatorprogramms mit dem Namen EMUZ80. Dabei ist der Emulator vollständig identisch. Unterschiede bestehen nur im Rahmenprogramm. KEM80 ist ein Windows-Konsolen-Programm, dass nur die Grundfunktionen enthält und EMUZ80 ist ein Windows-Programm mit einer grafischen Oberfläche (GUI) die einen wesentlich größeren Funktionsumfang aufweist.

2. Syntax

KEM80 <CP/M-Programm> <Parameter1 (für CP/M-Programm)> <Parameter2 (für CP/M-Programm)> ...

3. Parameter

Der erste Parameter nach KEM80 ist das aufzurufende CP/M Programm. Dieser Parameter ist zwingend notwendig (ansonsten wird der Emulator ohne Start des CP/Ms beendet).

Nun können weitere Parameter folgen (müssen aber nicht). Diese weitern Parameter werden an das CP/M-Programm weitergereicht.

4. Beispiele

in Konsole eingeben:

KEM80 M80 CPD7.ERL,CPD7.PRN=CPD7BAT/M/Z

Mit KEM80 wird der Emulator gestartet. Als Parameter werden "M80 CPD7.ERL,CPD7.PRN=CPD7BAT/M/Z" übergeben. Im CP/M wird mit diesen Parametern der Assembler M80.COM gestartet. An den Assembler M80.COM wird der Parameter "CPD7.ERL,CPD7.PRN=CPD7BAT/M/Z" übergeben. Für den Assembler bedeutet das, dass er die Quelldatei "CPDBAT.MAC" übersetzen und die Objektdatei "CPD7.ERL" erzeugen soll. Zusätzlich soll der Assembler die Druckdatei "CPD7.PRN" erstellen (siehe Parameterbeschreibung des CP/M-Assemblers M80).

Hinweis:

Nach dem Entpacken der Datei "KEM80.ZIP" befindet sich im Programmordner eine Datei namens "a1.bat". Diese Batch-Datei kann einfach gestartet werden. Sie führt folgendes Beispiel aus.

Das Beispiel zeigt das Assemblieren und Linken des CP/M-Bios für den KEM80. Ergebnis ist die Datei "CPD7.COM".


5. Stand der Softwareentwicklung

Der KEM80-Emulator wurde bis zum heutigen Zeitpunkt für die Übersetzung der eigenen Z80-Assemblerquellen genutzt. Die Softwareentwicklung befindet sich noch in der Beta Phase.

Der Emulator ist für die kommerzielle Entwicklung nicht geeignet, da er noch nicht umfangreich getestet wurde. Daher wird eine kommerzielle Nutzung ausgeschlossen (siehe Lizenzbedingungen).

Für kleinere private Projekte kann er aber mit Einschränkungen genutzt werden.

Eine Softwarepflege und eine Unterstützung bei Problemen wird nicht gewährleistet. Die Weiterentwicklung erfolgt ausschliesslich nach "Lust und Laune" des Autors.

6. Downloads

6.1. Version 1.1 für Windows (vom 08.09.2015)

Emulator mit Beispieldaten: KEM80_CPD7.ZIP

Emulator mit Beispieldaten: KEM80_CPMLDR.ZIP

Emulator mit Quelltexten: KEM80_Quelltexte.zip


6.2. Raspian-Version (auf Raspberry PI 2)

Testweise wurde der KEM80 auch auf dem Raspberry PI 2 compiliert und lief ohne Probleme.

Unter RASPIAN mit tar gepackt.

Emulator mit Quelltexten unter Raspian (TAR): RPI_KEM80.tar


Mit Hilfe einer Samba-Freigabe unter Windows mit ZIP gepackt.

Emulator mit Quelltexten unter Raspian (ZIP): RPI_KEM80.ZIP


7. Lizenz

Creative Commons Lizenzvertrag
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.


8. Hinweis zu den Compilereinstellungen

Lazarus / Free Pascal erzeugt mit den Grundeinstellungen des Compilers recht grosse EXE-Dateien. Das liegt an den vielen Debug-Informationen, die in das Programm eingebettet werden. Damit die Zieldatei recht klein wird, habe ich unter:

Projekt Projekteinstellungen Compilereinstellungen Linken

die "Debugger-Informationen für GDB erzeugen (Verlangsamt das Kompilieren)" abgeschaltet.

Compilereinstellungen ohne Debugger (kleine EXE-Datei)

Compilereinstellungen mit Debugger (grosse EXE-Datei)

Für das Debuggen des Programms muss diese Schalter wieder aktiviert werden (auch "Zeilennummern in Laufzeitfehler-Backtraces anzeigen (-gl)").



Homepage Übersicht vorherige Seite nächste Seite Kontakt Impressum Warenzeichen