• Hallo Forengemeinde,


    ich möchte euch heute mein in Lazarus Free Pascal geschriebenes Programm vorstellen. Angefangen hat alles vor einigen Jahren als Spielerei. Mittlerweile ist daraus ein richtiges Projekt geworden.


    Das Programm emuliert einen CP/M fähigen 8bit Microcomputer auf Basis einer Zilog Z80180 MPU.


    Das emulierte System existiert real und wurde im Jahr 2005 von mir designt und handverdrahtet aufgebaut. Leider sind die Disketten von damals unbrauchbar und neue konnte ich mit den mir verfügbaren Laufwerken nicht mehr erstellen. Und so ist dann aus einer Programmier Spielerei dieses Projekt entstanden. Es erhebt keinen Anspruch auf Vollständigkeit, aber es funktioniert mittlerweile so gut, das eine CP/M Version aus dem Jahre 2005 ohne Änderungen am CP/M-BIOS läuft. Bis jetzt werden 2 Diskettenlaufwerke, eine IDE-Festplatte und ein VT100 kompatibles Textterminal emuliert. Es soll noch ein DS12887 kompatibler Uhrenchip hinzukommen. Die Z180-MMU läuft und somit auch ein gebanktes CP/M. Die Z180-DMA Kanäle werden auch emuliert. Zumindest der Memory <-> Memory Transfer funktioniert. Der mögliche Memory <-> ASCI Transfer ist implementiert aber noch nicht abschließend getestet. Da meine Z180 Hardware derzeit leider (noch) nicht reaktivierbar ist, kann ich auch keine Tests fahren um die Emulation zu überprüfen. Ich habe noch vor das bei CP/M mögliche LIST-Device auf einen auswählbaren Drucker am Hostsystem umzuleiten, und auch das CP/M AUX-Device soll noch über einen virtuellen COM-Port verfügbar gemacht werden. Da der Emulator offen gestaltet ist, sollte es auch möglich sein darauf andere Z80 basierte Systeme laufen zu lassen.


    Konstruktive Kritik ist gerne willkommen.



    Zu finden sind die Sourcen und Binarys hier:

    https://github.com/ProgrammingHobby/Z180SoftSystem



    Diskussionen zum Z180SoftSystem sind auch hier zu finden:
    https://www.lazarusforum.de/viewtopic.php?f=11&t=12987
    https://www.mikrocontroller.net/topic/498386



    Grüße Hobbyprogrammer

  • Kurze Antwort per Händi.


    Du hast die aktuelle Version. Auch die CP/M Testdaten Version passt.

    Kannst Du mir bitte die Einstellungen für den Speicher ( Boot ROM ) und für die Laufwerke zeigen?

    • Offizieller Beitrag

    Das emulierte System existiert real und wurde im Jahr 2005 von mir designt und handverdrahtet aufgebaut.

    Das System gibt's noch?

    Mach doch bitte mal ein paarBilder.

  • Ja, das System gibt es noch. Bilder davon sind in dem Thread im Microkontroller.net Forum zu sehen. Aber ich kann gerne, wenn ich wieder Zuhause bin, auch hier welche hochladen.

    • Offizieller Beitrag

    Wenn du einen Link angibst, soll das erstmal reichen.

    Ich find's gerade nicht.


    Doch, hier sind 4 Bilder. Oder gibt's mehr?

  • Booten von harddisk bleibt nach A> DIR [ENTER] im A-Prompt stehen.



    diskdef z180hdd

    seclen 512

    tracks 246

    sectrk 63

    blocksize 4096

    maxdir 512

    skew 1

    boottrk 1

    os 3

    end

    #DD-Geometrie: 121.08MB , 16 Köpfe , 246 Spuren, 63 Sektoren , 512 Byte/Sektor (entspricht 128MB CF-Card)



    Mit freundlichen Grüßen


    fritz

  • Stell die Arbeitsspeichergröße auf 256KB ein, dann sollte alles laufen.

    Werde diese Einstellung noch in der Read.me im CPM-Testdaten.zip ergänzen.

    Das in den Testdaten verwendete BIOS ist nur zu Testzwecken schnell zusammengestrickt. :)


    Grüße

    HobbyProgrammer

  • Guten Morgen,

    bin zwar grad schonwieder unterwegs und wir bekommen heut Nachmittag auch Besuch,

    aber ich denke das ich mich vor dem Besuch mal an den PC setzen, und mir das Problem anschauen kann. Denke aber das es am CP/M Testbios liegt.


    Grüße

    HobbyProgrammer

  • Es eilt nicht,


    ich wünsche dir einen schönen Sonntag mit nettem Besuch.

    Plaudern, lecker essen ... entspannen.

    Mit freundlichen Grüßen


    fritz

  • Hallo,


    kann es sein das Du beim Booten von Laufwerk C: als Laufwerk A: das Z180_CPM_Data.fdd angegeben hast?

    Dann tritt der von Dir beschriebene Fehler auf. Im Laufwerk A: werden gemäß dem dazugehörenden Disk Parameter Block

    2 Spuren (18Sektoren) als Bootloader erwartet. Diese sind beim dem Data-Image nicht vorhanden. Dadurch findet CP/M das

    Directory nicht. Das Z180_CPM_Data.fdd muß daher als Laufwerk B: eingetragen werden.


    Wie gesagt, das Test-BIOS ist einfach zum Testen der Hardware schnell zusammengetrickt und sehr vieles Hart Codiert. :)


    Grüße

    HobbyProgrammer

  • Zitat

    kann es sein das Du beim Booten von Laufwerk C: als Laufwerk A: das Z180_CPM_Data.fdd angegeben hast?

    Ja, genau das habe ich gemacht. Das erklärt dann auch das Phänomen.


    Schön wäre natürlich eine Erkennung des Diskettenformates oder einfacher auf Datendisketten zu verzichten.

    Möglich wäre zum Beispiel auf Systemspur zu testen und falls nicht vorhanden den DPB für die Datendiskette anzuwenden.

    Früher war wegen Platzmangel sicher die Unterscheidung von System.- und Datendisketten sinnvoll, aktuell aber verwirrt das nur und führt zu Irritationen.


    Ich denke für eine einfache Handhabung ohne Spezialitäten kann man gerne auf den Platz von 18Sektoren = 9kb verzichten,

    vor allem wenn eine Harddisk eingebunden werden kann.

    Mit freundlichen Grüßen


    fritz

  • Ich hab' das mal meinem Lazarus auf dem Mac (MacOS Catalina) vor die Füße geworfen.


    Lief im Prinzip (fast) auf Anhieb, ein paar Sachen musste ich machen (und muss noch):

    1. Einige Forms werden erst sauber dargestellt, wenn man das Property "AutoSize" für das Form setzt. Ich weiß nicht, ob du das auf Linux und Windows prinzipiell nicht setzen mußt, oder ob das "auf dem Weg" in mein Lazarus verlorengegangen ist.
    2. Die System Settings werden nicht ordentlich gespeichert, das Programm will die XML-Datei immer ins root-Verzeichnis pflanzen. Ich habe dafür das untenstehende in SystemSettings.pas eingefügt
    3. Im Terminal funktionieren viele Zeichen garnicht - z.B. der für CP/M nicht ganz unwichtige Doppelpunkt - Das muß ich mir nochmal anschauen.

    Ansonsten: Tolles Programm, macht anscheinend, was es soll. Gratuliere!


    Tobias

  • Es sieht so aus, als kämen from Mac ganz andere Keycodes als von den anderen Rechnern rein. Der Doppelpunkt ist z.B. "186" - Füge ich das in den großen CASE-Verteiler bei TSystemTerminal.getKeyBoardInput ein, dann geht der Doppelunkt auch.

    Warum das so ist, muß man wohl die Lazarus-Entwickler fragen...

  • Daran habe ich jetzt, nachdem Du so auf das Phänomen gestoßen bist, auch gedacht. Ich dachte da dann auch gleich an eine Erkennung ob 720KB oder 1,4MB Images geladen sind. Das kommt auf jeden Fall auf die ToDo Liste für ein neues BIOS. :)



    Ich hab' das mal meinem Lazarus auf dem Mac (MacOS Catalina) vor die Füße geworfen.


    Lief im Prinzip (fast) auf Anhieb, ein paar Sachen musste ich machen (und muss noch):

    1. Einige Forms werden erst sauber dargestellt, wenn man das Property "AutoSize" für das Form setzt. Ich weiß nicht, ob du das auf Linux und Windows prinzipiell nicht setzen mußt, oder ob das "auf dem Weg" in mein Lazarus verlorengegangen ist.
    2. Die System Settings werden nicht ordentlich gespeichert, das Programm will die XML-Datei immer ins root-Verzeichnis pflanzen. Ich habe dafür das untenstehende in SystemSettings.pas eingefügt
    3. Im Terminal funktionieren viele Zeichen garnicht - z.B. der für CP/M nicht ganz unwichtige Doppelpunkt - Das muß ich mir nochmal anschauen.


    Danke für das Feedback im Bezug auf den Apple Mac Port von Lazarus. Ich habe zu Apple keinen Bezug. Mein Hauptsystem ist Linux und Windows (WinXP, Win7, Win10) habe ich noch in virtuellen Maschinen am laufen.


    Es sieht so aus, als kämen from Mac ganz andere Keycodes als von den anderen Rechnern rein. Der Doppelpunkt ist z.B. "186" - Füge ich das in den großen CASE-Verteiler bei TSystemTerminal.getKeyBoardInput ein, dann geht der Doppelunkt auch.

    Warum das so ist, muß man wohl die Lazarus-Entwickler fragen...

    Das habe ich von Linux auf Windows auch gehabt. Wenn Du in meinen Quelltext schaust findest Du so einige Platform Abhängige Bedingte Compilierungen.

    Wenn Du magst kannst Du mir Deine Anpassung für Apple Mac zukommen lassen. Dann pflege ich diese gerne in das Gesamtprojekt mit ein.


    Ansonsten: Tolles Programm, macht anscheinend, was es soll. Gratuliere!

    Danke. Freut mich. :)

  • Wenn du einen Link angibst, soll das erstmal reichen.

    Ich find's gerade nicht.


    Doch, hier sind 4 Bilder. Oder gibt's mehr?

    Guten Morgen,

    sorry, ist gestern komplett untergegangen.

    Mehr Bilder gibt es davon nicht. Ich hatte damals noch ne 3. Platine in Arbeit. Das sollte eine Terminaĺkarte werden mit einem alten Notebook LCD als Display. Ist aber nie fertig geworden.

  • Hallo zusammen,


    es ist wieder eine neue Version des Z180SoftSystems fertig geworden.

    Diese trägt die Versions Nummer 2.2.0.

    Ist nicht boese gemeint - aber soll der so langsam sein?

    Habe ihn hier unter Windows mit einem Quadcore 3GHz getestet.

    Allerdings lastet der Emulator die CPU auch nicht aus.

    Oder soll der Emulator 100% Z180-Speed zeigen?

  • In der Tat hab ich versucht der realen Geschwindigkeit nahe zu kommen. Bei der Disketten Emulation habe ich die Spindel Hochlaufzeit und die Seekzeiten versucht zu emulieren.

  • Hallo zusammen,



    es ist wieder eine neue Version des Z180SoftSystems fertig geworden.


    Diese trägt die Versions Nummer 2.3.0.



    Hauptsächlich habe ich in dieser Version die Terminal-Emulation dahingehend geändert,
    als das diese nun in einem eigenen Thread läuft und somit von der eigentlichen CPU-Emulation
    entkoppelt ist. Desweiteren habe ich die Disketten-Emulation überarbeitet. Diese läuft
    nun deutlich schneller. Allgemein wurde auch die Emulationsgeschwindigkeit unter Windows verbessert.


    Zu finden wie immer bei GitHub: https://github.com/ProgrammingHobby/Z180SoftSystem



    Grüße


    HobbyProgrammer

  • Diese trägt die Versions Nummer 2.3.0.

    Diese läuft nun deutlich schneller. Allgemein wurde auch die Emulationsgeschwindigkeit unter Windows verbessert.

    sehr schoen - laeuft schon viel besser ;)
    Wie kann man eigene Daten/Programme in die Emulation bekommen?

    Und evtl. in Wunsch?
    Anstatt nur weisse Schrift - evtl. koennen wir auch gruen und amber/orange haben? :)


    Vielen Dank fuer das Programm!