005
08.06.2015, 17:55 Uhr
timetube
|
Zitat: | Ronald postete Hi Jürgen,
|
Hi Ronald,
Zitat: | vielen Dank für das viele Lob. Tut gut, vor Allem wenn man diese Projekte eigentlich nur "just for fun" für sich selbst umsetzt.
|
Lob wem Lob gebührt
Zitat: | Mein Emulator EMUZ80 war eigentlich nicht meine Hauptmotivation, ist dann aber im Laufe der Zeit mein Hauptprojekt geworden. Eigentlich wollte ich einen Z80 Emulator auf Kommandozeileneben schreiben. So etwa in der Art von "22NICE.COM" (sehr hilfreich). Ich habe diesen Kommandozeilen-Emulator genutzt um meine Z80 Quelltexte zu übersetzen (M80.COM, L80.COM, LINKMT.COM usw.). Alles standesgemäß, wie man es eben damals auch gemacht hat. Der "22NICE.COM" hat aber 2 große Nachteile. Er ist nicht Freeware und er ist noch ein DOS-Tool (das es ja inzwischen auch nicht mehr gibt und meist auch schon emuliert wird). Daher die Motivation es selber zu machen. Im Quelltext meines Emulators habe ich für alle Emulationsschritte des Z80 darum zusätzliche Compilerschalter eingebaut, um im Kommandozeilenmodus alle grafischen Ausgaben auszublenden. So entstand dann "KEM80.exe" (Konsolen-Emulator für Z80). Wichtig: Dies ist kein DOS-Programm sondern ein Windows-Konsolenprogramm!
Hier ein kleiner Test: http://www.daleske.de/projekte/KEM80.ZIP
So nun zu Deinen Fragen und Hinweisen:
# es freut mich sehr, dass Dir das Projekt gefällt. Ich weiß ja nicht wie Deine Emulation arbeitet, auf jeden Fall musst Du das BIOS auf Dein System anpassen. Den Bootloader auch. Das CP/M 2.2 ist das Original, so wie man es hier bei Gaby downloaden kann. Das BIOS ist eine Anpassung des Skeleton, auch von hier runter geladen. Dann, sollte es aber auch für Deinen Emulator gehen. Es sei denn, das Du die BDOS Funktionen emulierst, also kein Z80 (8080) CP/M lädst.
Die BIOS-Anpassung ist mir schon klar. Eigentlich wollte ich damit nur die Windows-Nutzer hier im Forum auf Deine interessanten Quelltexte neugierig machen.
# Schade, dass Du keine Source-Level-Distribution publizierst, hätte mich mal interessiert, wie Du das in Pascal gelöst hast.
Eigentlich veröffentliche ich die meisten Projekte recht ausführlich kommentiert auf meinen Internetseiten. Dazu muss das Projekt aber einen gewissen Entwicklungsstand haben. Dazu gehört natürlich auch ein gewisses Mindestmaß an Dokumentation. Diesen Stand habe ich aber bis jetzt noch nicht. Bin sozusagen noch im Alpha-Stadium. Ehrlich gesagt, erreichen einige meiner Projekte aber nie den Stand der Veröffentlichung, da die Vorbereitungen dazu auch wieder recht umfangreich sind. Die Quellen (ohne Formulare) sind hier:
http://www.daleske.de/projekte/EMUZ80_Quellen.zip
(Eine dokumentierte Internetseite zum Emulator ist in Planung ...)
|
Habe mir Dein Projekt angesehen, bin nun nicht der große Pascal-Versteher, meine letzten Projekte in Pascal waren 1989 auf einem Kontron CP/M 2.2 (Turbopascal). Hat sich viel getan an diese Hochsprache, damit sie mithalten kann, mit den modernen Sprachen
Habe Dein Projet auch in Lazarus IDE compilieren können, indem ich die fehlenden Dateien mit deinen Z80 Code-Arrays Dummy-mäßig selber erstellte.
Quellcode: | { missing file }
Const CPD7_ARR : Array [1..2] of Char = ('0','1'); Laenge_CPD7_Array : Integer = 2;
|
Das klappte für die fehlenden Dateien
BDO_TXT.INC CCP_TXT.INC CPD7_TXT.INC
auch ganz gut, da deren Zweck und damit Inhalt aus Deine Codes gut erkenntlich wurde.
Nicht hat es mit der Datei
MainForm_EMUZ80.ifm
geklappt, da dort die Ressource für die Main-form gespeichert ist, was sehr viel Aufwand machen würde sie zu rekonstruieren.
Vielleicht magst Du die Dateien ja noch "nachliefern"?
Jedenfalls ist damit sicher gestellt, dass Deine Applikation binnen Minuten unter Linux und wohl auch allen anderen Plattformen, die Lazarus bereits portierte, erstellt und ausgeführt werden könnte
Zitat: | # Was ich auch immer gerne mache ist zwei Emulationen, meine und z.B. den YAZE Opcode kompatible Z80 Software ausführen lasse und nach jedem Opcode alle Register und das RAM vergleiche, um Abweichungen in der Ausführung zu finden. Leider habe ich noch keine Emulation gefunden, die alle undokumentierten Befehle auch ausführen kann.
|
Versuch mal die beiden Programme
zexall und zexdoc
beides Z80 Assembler Programme, die unter CP/M laufen und wenn Deine Z80-EMU die fehlerfrei absolvieren, hasst Du eine ausreichend genau Emulation.
Zitat: | ... ... Habe als Referenz-Emulator meist den Altair 8800 Emulator von Peter Schorn genutzt (tolles Programm).
http://schorn.ch/altair.html
|
kenne ich, wirklich einer der ersten und besten emus.
Zitat: | Undokumentierte Befehle habe ich bisher noch nicht berücksichtigt. Bisher liefen die meisten Programme auch ohne diese Befehle. Mein mit Abstand wichtigstes Referenzprogramm ist dabei immer das Turbo Pascal 3.01 von Borland. Läuft auf meinem Emulator übrigens bestens. Auch im Edit-Modus (ist bei der Fehlersuche sehr wichtig und wird von den meisten anderen Emulatoren nicht sauber unterstützt).
# Leider, wie Du sehen kannst, stimmen die Fonts von WINE nicht wirklich gut mit denene vom MS-Windows überein ...
Diesen Effekt habe ich auch schon erlebt, wenn ich Windows-Pascal-Quelltexte unter RaspberryPI Raspbian übersetze. Meine Vermutung ist, dass die unter Linux üblicherweise verwendeten Grafikbibliotheken (qt, gtk1, gtk2 usw.) doch etwas anders funktionieren als die entsprechenden Grafikroutinen unter Windows. WINE wird wahrscheinlich (wie Free-Pascal unter Linux) versuchen die Schnittstellen möglichst direkt anzusprechen (ist aber nur eine Vermutung). An dieser Stelle habe ich übrigens durch das Emulatorprojekt wieder etwas mehr Verständnis für diese Art von Schnittstellenproblemen bekommen. Denn meist wird man versuchen bei einem Emulator (auch WINE ist ja ein Emulator) nicht alles zu emulieren, sondern möglichst viele definierte Schnittstellen direkt zu bedienen. Beim CP/M-Emulator sind das dann z.B. die BIOS-Aufrufe.
|
WINE greift letztendlich auf den Font-Server des Host-System zurück. Der bekommt ja nur so "ungefähr" Angaben (Größe,Type,Stile....), sucht dann selber den auf diese Angaben seiner Meinung nach besten Font heraus. Das klappt bei Linux Apps gut, bei Interoperabilität zwischen Windows (WINE) und X11 leider nicht.
Zitat: | # Versuch doch auch mal meinen HP41CV unter ...
werde ich testen. Bin aber momentan etwas knapp mit meiner Freizeit, so dass es etwas dauern kann.
Gruß Ronald |
Ja, lass Dir Zeit und überlege mal ob Du die fehlenden Dateien noch herausgeben magst. Bekommst dafür von mir (wenn alles klappt) Dein Projekt Linux und Andriod fähig gemacht zurück -- "Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt." Ein Stein. Dieser Post wurde am 08.06.2015 um 17:56 Uhr von timetube editiert. |