z80 emulieren

  • Es wird Dich schockieren, aber so seltsam ist die Idee gar nicht. Immerhin hat das vor ~25 Jahren schonmal jemand umgesetzt. Da läuft sogar das C64-CP/M drauf (was wohl Hauptanliegen damals war) und mit einer Turbokarte oder im Warp-Mode von VICE macht das sogar richtig Spaß, wenn auch der Arbeitsspoeicher ein wenig begrenzt ist.
  • Das erinnert mich an das (umgesetzte) Projekt der CoCo-Gemeinde, die unter OS-9 für die 6809-CPU einen Z80-Emu gebastelt haben, der CP/M-Programme lauffähig macht. Dabei läuft aber CP/M selbst nicht in der Emulation, sondern die CP/M-Calls werden auf OS-9 abgebildet. Da hat man freilich etwas andere, also komfortablere Voraussetzungen: OS-9 kann man doch eher als Obermenge von CP/M sehen und 6809 bringt doch schon Einiges mit, einen Z80, zwar nicht ebenbürtig, aber doch halbwegs brauchbar zu emulieren. Zudem laufen die Betriebssystemaufrufe "native" auf der 6809-CPU (aber eben unter OS-9).
  • mc71 schrieb:

    Es wird Dich schockieren, aber so seltsam ist die Idee gar nicht. Immerhin hat das vor ~25 Jahren schonmal jemand umgesetzt. Da läuft sogar das C64-CP/M drauf (was wohl Hauptanliegen damals war) und mit einer Turbokarte oder im Warp-Mode von VICE macht das sogar richtig Spaß, wenn auch der Arbeitsspoeicher ein wenig begrenzt ist.



    Damit ist nicht zufällig dieser "CP/M-Emulator" gemeint, der in irgendeiner Version auch mal von Rossmöller vertrieben wurde?
  • @GenerationCBM: Doch, genau der. Nicht zu verwechseln mit dem ZX Spectrum Emulator, das ist nach heutigem Verständnis 'nur' ein Interpreter für das Sinclair-BASIC; von Z80-Maschinencode versteht der absolut nix.


    @daybyter: Umgekehrt gilt das aber genauso. Versuch mal ein 6502-Programm auf Z80 umztusetzen, das ausgiebig Gebrauch von den Index-Adressierungsarten macht. Da verhält sich der 6502 auf einmal wie ein Monster mit 128 Pointer-Registern und läßt den Zeddy ziemlich alt aussehen.
  • daybyter schrieb:


    Hab ne seltsame Idee. Möchte einen z80 mit dem 6510 emulieren. Hat jemand Lust mitzubasteln?

    Klasse Idee. :ilikeit:

    Aber meine Kenntnisse in Z80 und 6510 sind leider nicht ausreichend für ein Mitarbeiten am Projekt. :schande:

    Testen werde ich es aber bestimmt. :thumbup:
    Mitwäre das nicht passiert! :prof:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Sammlung | 102 Bücher bzw. 28.009 Buchseiten mit Z80/8080/8085 Power
  • Tale-X schrieb:

    Kurze Zwischenfrage: es gab' doch auch mal ne CP/M-Cartridge mit Z80-Prozessor für den C64 - ist das vielleicht der Z80-Emulator?


    Nope, das ist wie von ZeroZero erwähnt Commodores "richtige" CP/M-Cartridge für den C64. Funktioniert mehr schlecht als recht (also, eigentlich kaum...), war aber nötig nicht zuletzt weil Commodore anfänglich mit der CP/M-Kompatibilität des C64 ausdrücklich geworben hat.

    Der genannte Emulator ist z.B. sowas hier:
    csdb.dk/release/?id=95482
    Die Version von Rossmöller sieht sehr sehr ähnlich aus (gelbe Schrift auf schwarz), lediglich der Disketteninhalt unterscheidet sich noch ein wenig. Spassigerweise basieren diese Emulatoren anscheinend relativ weitgehend auf der Systemdiskette der obigen Cartridge.
  • Die Emulation dürfte relativ langsam werden. Zudem macht CP/M ohne 80 Zeichenkarte kaum Spass; zahlreiche Programme setzen 80 Zeichen voraus. Das Z80 Modul von Commodore selber hat funktioniert, war bereits recht langsam. Die Hardware war mit der Z80 Softcard von Microsoft (!) für den Apple II vergleichbar. Das grösste Manko war neben der fehlenden Software im 1541 Format eben die fehlende 80 Zeichenkarte. Commodore hatte mal eine geplant, aber auch nie in Serie gebracht. Schaltplan findet sich im Netz. Zudem war der verfügbare Speicherbereich auch knapp, da keine Adressübersetzung für den ungenutzten Speicherbereich unterhalb des Kernal-ROMs stattfand.

    Das ganz gäbe es auch in schneller Hardware mit einem 8 MHz Z80 und 80 Zeichenkarte. Hier ein Link auf einen Thread von mit. Bilder auf der dritten Seite:
    CP/M für C64

    Ich suche noch immer jemanden, der gegen Geld die Platinen neu layoutet.

    Wünsch aber viel Erfolg!
    Gruss
  • Das wird ohne Hardware dann einfacher? Da fehlen immer noch die 80 Zeichen und der Speicher, um CP/M Programm sinnvoll nutzen zu können.

    Welches CP/M BIOS hast du denn im Sinn? Um CP/M auf dem C64 sinnvoll nutzen zu können, waren vor 25 Jahren auch ein paar Erweiterungen am Commodore CP/M BIOS nötig: RAM-Anpassung; soweit machbar. Aber der I/O Bereich liegt ohne Adressübersetzung im Weg; mehr als 48K geht nicht ohne Hardware. Der Offset Z80/6502 entfällt, dafür muss dein Emulator noch irgendwo liegen.

    Das wichtigste war eine Terminal Emulation (ADM-3A genügt) für eine Cursor-Steuerung durch CP/M Programme wie Wash oder Wordstar. Support für zwei kleine oder grosse Laufwerke (1001/8250). Centronics Routine für den Drucker am Userport; RS-232 auf einen "richtigen" Baustein waren noch nette Goodies.

    Bin neugierig, was daraus wird. Viel Glück!
  • Asklia schrieb:


    Da fehlen immer noch die 80 Zeichen und der Speicher, um CP/M Programm sinnvoll nutzen zu können.

    Es geht dem TE ja nicht um CP/M oder 80 Zeichen, sondern als Projekt nur um die Emulation eines Z80.

    Mir gefällt die Idee sehr gut. Geschwindigkeit ist egal, solange man kleine Routinen dort zum Laufen bekommt und wo man dann schön sehen kann was die CPU mit jedem Befehl genau macht.
    In meinen Z80 Büchern gibt es einige Befehle mit denen ich mich schwer tue. Wenn er es in seinem Projekt visualieren kann, um so besser. Bilder sagen oft mehr als 1000 Worte.
    Mitwäre das nicht passiert! :prof:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Sammlung | 102 Bücher bzw. 28.009 Buchseiten mit Z80/8080/8085 Power
  • Ich arbeite nach dem Buch von Rodney Zaks und hab bei 0 gestartet. Ist auch nicht an eine Implementierung angelehnt.

    Ich hab die z80 Cartridge hier, aber sie läuft mit keinem meiner 4 cevis hier. Sie ist halt arg wählerisch, was die Hardware angeht. Ich hatte sie auch damals, als ich meinen ersten c64 hatte, aber auch damals war sie eher instabil.

    Die 8Mhz Variante aus der C't sollte unbedingt (evtl. mit paar aktualisierten Chips) wiederbelebt werden. Leider hab ich kein Eagle oder ähnliches. Mach meine kleinen Arduino Projekte mit KiCad. Evtl. könnte man ja mal damit starten, darin den Schaltplan zu rekonstruieren.
    Ich konnte mir vor kurzem übrigens eine 80z Karte von Dirk Vroomen an einem vc20 anschauen und ich hab die Vermutung, dass diese Karte evtl. was mit der Karte aus dem Projekt zu tun hat?
    Wir haben da schon kurz drüber gesprochen, ob es nicht sinnvoller wäre, gleich einen VGA Ausgang o.ä. zu integrieren.
    Auch das z180 Projekt aus dem Mikrocontroller Forum sollte man sich anschauen, weil dort gleich einige 'moderne' Hardware integriert wird, wie SD Karten usw. Das will früher oder später eh jeder haben. Aber für USB und Lan braucht man halt mehr Speicher, womit man beim ez80 wäre, was aber dann nicht mehr so richtig 'retro' ist.

    Alles in allem lernt man bei so einem Projekt mal auf jeden Fall die Unterschiede zwischen den Chips kennen. Man kann versuchen die Zyklen zu minimieren, ohne dass man gleich ein Spiel programmieren muss.
    Hier könnte ihre Signatur stehen!
  • Wenn es dir wirklich nur um Spiele geht, dann nimm doch Vice C128 und Boote CP/M 3.0. Lege dazu das Image ein, wechsle mit ESC-X (am Pc F1 und X) um in den 80Z Modus zu kommen und gib dann BOOT ein.
    Wem es beim Bit zählen schwindelig wird, der hat zuviel davon.

    Alt werden ist schön, das Altern nicht.
  • Nach meiner Erfahrung benötigt man - zumindest für meine 8 MHz-Variante (die in der c't veröffentlicht wurde) einen C64 mit VIC-II 6596 R3.

    Ich habe die Versionen R4, R5 sowie mit Spannungsumrüstung die 5 Volt 8565 R2 Version mehrfach mit verschiedenen (SX) Boards und Bausteinen getestet: Verschiedene PALs inklusive PLAnkton, ROMs, SIDs oder 6526/8520er haben keinen entscheidenden Einfluss. Mit einem 6596 R3 läuft es immer stabil, R4 und R5 lassen die Z80 Karte aus dem Takt geraten.

    Das dürfte auch das Problem des originalen Z80 Moduls am C64 sein. Hatte aber davon schon lange keines mehr in der Hand.

    Aber Z80 Programme ohne Betriebssystem? Na, das ist eine weitere Herausforderung ;)