Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Delphi Z80 emulator ( z80 core ) (https://www.delphipraxis.net/63805-z80-emulator-z80-core.html)

sharpals 23. Feb 2006 07:39


Z80 emulator ( z80 core )
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich poste hier mein Z80 Kern. Für alle, die immer wissen wollten, was ein Z80 so macht, oder auch für eigene EMU projekte.

Er ist Bestandteil mein MZ80x emulator.

Robert Marquardt 23. Feb 2006 08:42

Re: Z80 emulator ( z80 core )
 
Kann er auch die undokumentierten Opcodes?

sharpals 23. Feb 2006 09:10

Re: Z80 emulator ( z80 core )
 
Theoretisch sollte er sie alle kennen, soweit ich ihrer habhaft wurde.

Da er aber modular aufgebaut ist , füge ich fehlendes gerne zu.

Dann bitte um Info, oder den kodevorschlag.

Da gerade beim spectrum und Coleco welche verwendet wurden, können nicht mehr viele fehlen.

Er berücksichtigt auch das in/OUT(C) mit dem B register ( also 16 Bit IO-ADressen) auch in OUT(i) ... usw

Mavarik 23. Feb 2006 09:45

Re: Z80 emulator ( z80 core )
 
Cool MZ800 :dancer2: Damit habe ich mein 1. Geld verdient und ein eigenes Disketten Betriebssystem geschrieben...

Vielleicht hast Du ja von FL-DOS gehört?

LG Frank

sharpals 23. Feb 2006 12:40

Re: Z80 emulator ( z80 core )
 
ja habe ich, hast du es als DSK image ? Würde mich intressieren , ob es läuft. AUf wunsch , stelle ich den EMU zur verfügung und maile ihn.

Mavarik 23. Feb 2006 16:22

Re: Z80 emulator ( z80 core )
 
Sorry... Leider nicht...

Höchstens auf 5 1/4" Diskette im MZ-800 Format :hello:

Frank

DP-Maintenance 11. Mär 2006 10:13

DP-Maintenance
 
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Open-Source" verschoben.
Eher ein OpenSource-Projekt als ein konkreter Source für die Code-Lib.

sharpals 4. Jul 2006 19:34

Re: Z80 emulator ( z80 core )
 
Zitat:

Zitat von Robert Marquardt
Kann er auch die undokumentierten Opcodes?

hallo, nochmal: Ja er kann nahezu alle ablaufen lassen, auch die exotischen 4 byte befehle !!!

Gruß Michael

Mavarik 26. Feb 2007 16:55

Re: Z80 emulator ( z80 core )
 
Zitat:

Zitat von sharpals
ja habe ich, hast du es als DSK image ? Würde mich intressieren , ob es läuft. AUf wunsch , stelle ich den EMU zur verfügung und maile ihn.

Hi!

Noch interesse?

Hab mein FL-DOS im Internet gefunden - lol

Siehe : hier

Grüsse Frank :coder:

shmia 26. Feb 2007 17:24

Re: Z80 emulator ( z80 core )
 
Gibt es eigentlich einen besonderen Grund, weshalb TProcessor ein Record und keine Klasse ist???
Ich denke, das Umschreiben in objektorientierten Code dürfte die Emulation eher beschleunigen,
da ich überall im Code das Fragment aProcs[cpu_nr]. finde.
Der Zugriff einer Klasse über den Self-Parameter ist da effizienter.
Zusätzlich bekommt man gratis noch die Möglichkeit hinzu, beliebig viele CPUs (nur begrenzt duch den Hauptspeicher) zu emulieren. (einfach TObjectList verwenden)
Ausserdem kann man auch dynamisch zur Laufzeit weitere CPUs hinzufügen oder auch entfernen.

sharpals 26. Feb 2007 19:29

Re: Z80 emulator ( z80 core )
 
Hallo, es hat mit seiner geschichte zu tun. Er war in maschinencode geschrieben !!!

Das interface ist zu dem alten noch kompatibel. Für eine komplete neuentwicklung , wäre die objektvariante eleganter.

Da der code ja frei verfügbar ist, wäre es auch schön wenn sich jemand anderes dieser sache annimmt und es mit seinen namen versieht.

Gruß michael

sharpals 26. Feb 2007 19:34

Re: Z80 emulator ( z80 core )
 
Hi!

Noch interesse?

Hab mein FL-DOS im Internet gefunden - lol

Siehe : hier

Grüsse Frank :coder:[/quote]


Hallo, danke :-) Er läuft auf meinem Emu :-). Das Bild , das du auf der seite siehst, wurde dammit erstellt.

Gruß michael

Reinhard Kern 27. Feb 2007 00:56

Re: Z80 emulator ( z80 core )
 
Zitat:

Zitat von sharpals
Hallo, ich poste hier mein Z80 Kern. Für alle, die immer wissen wollten, was ein Z80 so macht, oder auch für eigene EMU projekte.

Er ist Bestandteil mein MZ80x emulator.

Hallo,
kann man damit M80/L80 laufen lassen?

Hintergrund: ich habe noch manche alte Z80-Assembler-Files, die noch gelegentlich gebraucht werden (sogar für neue Hardware mit eZ80), aber M80 mag auf meinem neusten Entwicklungrechner (GHZ, W2000) nicht mehr in der Dos-Box laufen (um genau zu sein: nicht unter CP/M-Emulation in der DOS-Box). Manches habe ich schon auf DOS-basierten Z80-Assembler umgestellt, aber der kann nicht alles, z.B. keine .PHASE-Anweisung. M80 war der beste Z80-Assembler, der je existiert hat.

Gruss Reinhard

Mavarik 27. Feb 2007 07:21

Re: Z80 emulator ( z80 core )
 
Zitat:

Zitat von Reinhard Kern
M80 war der beste Z80-Assembler, der je existiert hat.

Ja ja der gute "Masm"... Damit habe ich auch alles Programmiert. Inkl. unseres mForth 800 Compilers...

Kann ich mit Deinem Emulator die alten CP/M Diskette auf einem PC lesen?

Grüsse Frank :coder:

Reinhard Kern 27. Feb 2007 16:16

Re: Z80 emulator ( z80 core )
 
Zitat:

Zitat von Mavarik
Zitat:

Zitat von Reinhard Kern
M80 war der beste Z80-Assembler, der je existiert hat.

Ja ja der gute "Masm"... Damit habe ich auch alles Programmiert. Inkl. unseres mForth 800 Compilers...

Kann ich mit Deinem Emulator die alten CP/M Diskette auf einem PC lesen?

Grüsse Frank :coder:

Ja, wenn du das Format kennst, man muss eine Definition wie folgt erstellen:
Delphi-Quellcode:
NOTE   THIS IS THE DATABASE FOR VERSION 1.30 OF 22DISK BY SYDEX.
NOTE
NOTE           MARCH 20, 1989
NOTE
NOTE                   SYDEX
NOTE                   153 NORTH MURPHY AVE.
NOTE                   SUNNYVALE, CA 94086
NOTE                   (408) 739-4866


BEGIN RK30  RK Solitaire 3.5 inch 64 Dir Ent.
DENSITY MFM,LOW
CYLINDERS 80
SIDES 2
SECTORS 10,512
SIDE1 0 1,5,9,3,7,2,6,10,4,8
SIDE2 1 1,5,9,3,7,2,6,10,4,8
ORDER SIDES
LABEL RK30
BSH 4  BLM 15  EXM 0  DSM 384  DRM 63  AL0 080H AL1 0  OFS 6
END

BEGIN RK50  RK Solitaire 5.25 inch 64 Dir Ent.
DENSITY MFM,LOW
CYLINDERS 40
SIDES 2
SECTORS 10,512
SIDE1 0 1,5,9,3,7,2,6,10,4,8
SIDE2 1 1,5,9,3,7,2,6,10,4,8
ORDER CYLINDERS
LABEL RK50
BSH 4  BLM 15  EXM 1  DSM 191  DRM 63  AL0 080H AL1 0  OFS 3
END


BEGIN SUP3  Superbrain QD - DSDD 48 tpi 5.25"
DENSITY MFM,LOW
COMPLEMENT
CYLINDERS 35
SIDES 2
SECTORS 10,512
SIDE1 0 1,3,5,7,9,2,4,6,8,10
SIDE2 1 1,3,5,7,9,2,4,6,8,10
ORDER CYLINDERS
BSH 4  BLM 15  EXM 1  DSM 169  DRM 63  AL0 080H AL1 0  OFS 2
END
Ausserdem habe ich mal eine Software zum Zugriff unter DOS in Pascal (nicht Delphi, nicht Turbo) geschrieben, die wie folgt anfängt, dient aber nur zum KOMPLETTEN Lesen und Schreiben und v.a. Formatieren, also zum Archivieren von CP/M-Disketten meiner Machart. Sollte den Kunden und den Kundendienst unabhängig von einem realen CP/M-System machen.

Delphi-Quellcode:
 PROGRAM rkcpm; {read/write/format rk cp/m disks into/from dos file}

 CONST skewstr = '01050903070206100408';
       maxsector = 10;
       strategy = 1; { side 0 up, then side 1}
       deblock = 4; { 4 cpm sect = 1 dos sect }
       offset = 3;
       direntries = 64;
       allocunit = 16; { cpm sect / block entry }
       systemtracks = 3; { only head 0 used ! }

       dir_offset = 3;

 {$I cnc\biosiod.pas}

 {$I doslib.pas}

 TYPE
      sector = array[0..127] of byte;
      sstring = string[76];
      genstring = string [255];
      st = (norm,sel1,sel2,sel3,skip);
      maddr = record case boolean of
              false : (ad : integer);
              true : (ofs,seg : word);
              end;
      hexcar = array[0..15] of char;
      dskparams = array [0..10] of byte;
{....}
Bei weiterem Interesse melden.

Gruss Reinhard

sharpals 27. Feb 2007 19:17

Re: Z80 emulator ( z80 core )
 
Hallo, ich habe zwar einige CP/M´s unter dem Emu laufen, er benutzt aber *.DSK files. AUsserdem scheint die WD17xx emulation ein flagproblem zu haben.

DIe CP/M´s können ohne probleme lesen, aber beim schreiben ( MZ80B ) erscheint ein BDOS fehler.


Wenn ihr lust habt, gebe ich euch den quellcode des emus und ihr baut einen CP/M Bdos emulator, der dann direkt auf die Files zugreift.


Die Z80 ist auf jedemfall schnell genug, der kern solltebei 75 Mhz mit 3Mhz laufen.


Wir müssten also ein VTx oder TTY emulation schreiben, was wohl nicht das drama ist, da man den call 5 ja abfangen kann.

Wirklich aufwendig ist sind die filefunktionen.

Der vorteil ist, du hättest ein anpassbares system.

Reinhard Kern 28. Feb 2007 09:20

Re: Z80 emulator ( z80 core )
 
Zitat:

Zitat von sharpals
Hallo, ich habe zwar einige CP/M´s unter dem Emu laufen, er benutzt aber *.DSK files. AUsserdem scheint die WD17xx emulation ein flagproblem zu haben.

DIe CP/M´s können ohne probleme lesen, aber beim schreiben ( MZ80B ) erscheint ein BDOS fehler.


Wenn ihr lust habt, gebe ich euch den quellcode des emus und ihr baut einen CP/M Bdos emulator, der dann direkt auf die Files zugreift.


Die Z80 ist auf jedemfall schnell genug, der kern solltebei 75 Mhz mit 3Mhz laufen.


Wir müssten also ein VTx oder TTY emulation schreiben, was wohl nicht das drama ist, da man den call 5 ja abfangen kann.

Wirklich aufwendig ist sind die filefunktionen.

Der vorteil ist, du hättest ein anpassbares system.

Hallo,

hab mir gerade meine alten MAC-Files mal wieder angesehen: 1300 Zeilen für Disk Access, geschrieben für EPRom/RAMFloppy und reale Disketten, ist also nicht so schlimm, und bei Zugriff auf ein anders (DOS-) Filesystem wird es entsprechend weniger.

Für mich lohnt sich kein grösserer Aufwand, weil ich ja über funktionierende Systeme verfüge, ich muss bloss im Zweifelsfall auf einen alten DOS-Rechner zurückgreifen. Die meisten Sachen lassen sich aber sogar unter W2000 noch übersetzen. Ausserdem habe ich das Diskettenproblem umgekehrt gelöst: für meine Werkzeugmaschinensteuerungen unter CP/M gab es ein CP/M-Programm, das DOS-Disketten formatieren, lesen und schreiben kann (in Z80-Pascal), der Datenaustausch ist also gewährleistet (das meiste lief sowieso über DNC).

Falls aber jemand Interesse hat, ein komplettes CP/M-BDOS inklusive Grafikausgabe kann ich zur Verfügung stellen. Das wird wohl kaum jemand noch kommerziell nutzen, ausserdem ist es wie unter CP/M üblich eben an spezielle Hardware angepasst: WD-Disk-Controller, Cherry serielles Keyboard oder eigenes, NEC-Grafik usw.

Gruss Reinhard

sharpals 11. Mär 2007 09:23

Re: Z80 emulator ( z80 core ) update [wie ?]
 
Hallo, erstmal eine Frage: Wei kann ich das Update hochladen ?

Der kern ist etwas verbessert und hat eine 6502 zugesellt bekommen .

Und zurück zum thema, ich habe in meinen emu ein blanken Z80 mit Call 5 abfang gemacht.

Ich dachte immer, das, die cp/m programme immer via call 5 arbeiten. Demm ist leider nicht so (?).

Das idealste wäre einen cp/m ccp zu verwenden und das bdos nachzubilden.

Wie könnte mann das ganze lösen ?


Gruß Michael

Reinhard Kern 11. Mär 2007 17:29

Re: Z80 emulator ( z80 core ) update [wie ?]
 
Zitat:

Zitat von sharpals
Hallo, erstmal eine Frage: Wei kann ich das Update hochladen ?

Der kern ist etwas verbessert und hat eine 6502 zugesellt bekommen .

Und zurück zum thema, ich habe in meinen emu ein blanken Z80 mit Call 5 abfang gemacht.

Ich dachte immer, das, die cp/m programme immer via call 5 arbeiten. Demm ist leider nicht so (?).

Das idealste wäre einen cp/m ccp zu verwenden und das bdos nachzubilden.

Wie könnte mann das ganze lösen ?


Gruß Michael

Hallo Michael,
das ist die BIOS Jmp Table aus meinem BDOS, daraus siehst du, was zu implementieren ist:
Delphi-Quellcode:
 ist es natürlich nicht, sondern Z80
;
;   BIOS JUMP TABLE
   JP   BOOT
WBOOTE:   JP   WBOOT
   JP   CONST
   JP   CONIN
   JP   CONOUT
   JP   LIST
   JP   PUNCH
   JP   READER
   JP   HOME
   JP   SELDSK
   JP   SETTRK
   JP   SETSEC
   JP   SETDMA
   JP   READ
   JP   WRITE
   JP   LISTST
   JP   SECTRAN
   JP   CONOST   ;CON OUTP STATUS
   JP   READST   ;READER STATUS
   JP   PUNST   ;PUN STATUS
   JP   0
;
Ist alles trivial bis auf die Disketten-Funktionen wie SETTRK: da muss man wohl Pseudofloppies nachbilden aus dem Current Dir unter Windows und auch für Boot-Images sorgen, weil der Zugriff von CP/M aufs BDOS eben nur auf der Ebene Disk/Track/Sector mit CP/M-Format erfolgt. Booten heisst also die ersten Sectoren der Disk einlesen und von dort starten, das muss man nachbilden. Und einen Dir-Inhalt von MSDOS muss man wohl in ein CP/M-Dir umwandeln, damit CP/M was damit anfangen kann.

Gruss Reinhard

Reinhard Kern 12. Mär 2007 01:03

Re: Z80 emulator ( z80 core ) update [wie ?]
 
Zitat:

Zitat von Reinhard Kern
Hallo Michael,
das ist die BIOS Jmp Table aus meinem BDOS, daraus siehst du, was zu implementieren ist:
Delphi-Quellcode:
 ist es natürlich nicht, sondern Z80
;
;   BIOS JUMP TABLE
   JP   BOOT
WBOOTE:   JP   WBOOT
.........
;
Ist alles trivial bis auf die Disketten-Funktionen wie SETTRK: da muss man wohl Pseudofloppies nachbilden aus dem Current Dir unter Windows und auch für Boot-Images sorgen, weil der Zugriff von CP/M aufs BDOS eben nur auf der Ebene Disk/Track/Sector mit CP/M-Format erfolgt. Booten heisst also die ersten Sectoren der Disk einlesen und von dort starten, das muss man nachbilden. Und einen Dir-Inhalt von MSDOS muss man wohl in ein CP/M-Dir umwandeln, damit CP/M was damit anfangen kann.

Nachtrag zum vorherigen Posting: ich habe gerade mal einen Blick auf die BDOS-Funktionen von CP/M geworfen - es dürfte doch wesentlich einfacher sein, diese direkt zu implementieren, da man Funktionen wie Read File ziemlich direkt auf MSDOS umsetzen kann, ohne sich um die Struktur einer CP/M-Diskette zu kümmern. Dazu kommt noch, dass man dann keinen Originalcode benutzt und auch die theoretische Möglichkeit von Lizenzproblemen ausgeschlossen ist.

Gruss Reinhard

sharpals 25. Mär 2007 09:12

Re: Z80 emulator ( z80 core )
 
Hallo, ich habe es mal testweise gemacht, leider springen die programme nicht so , wie es soll.

Wie müssten die speicherbereiche unterhalb von $100 gesetzt werden ?

Ich gehe mal davonn aus, das die programme den start über die adresse 00 ermitteln ?

Gruß michael

Lukas92 29. Mär 2007 18:10

Re: Z80 emulator ( z80 core )
 
Hallo, ich bin neu hier..
Ich habe einen TI 84 Plus, kann aber das TI-Basic nicht leiden. Ich wollte fragen, ob ihr eine seite oder ein Buch über Z80 Assembler kennt. Ich möchte nämlich diese Sprache lernen und hab schon so ziemlich überall gesucht.
Danke im Voraus
MfG Lukas

sharpals 30. Mär 2007 09:13

Re: Z80 emulator ( z80 core )
 
Hallo, hier bei wiki stehen die bücher.

Z80 info

Das beste ist dann

Programming the Z80 von Rodney Zaks (SYBEX, ISBN 0-89588-094-6)
Programmieren des Z80 (SYBEX, ISBN 388745099X)

In meine emu ist übrigens ein z80 assembler eingebaut. Für den fall, daß du ihn haben möchtest, schick ich ihn dir.

Wenn du möchtest kannst du auch einen TI85 Port dafür schreiben.

Ich habe einen, aber das gerät frisst die accus sehr schnell leer :-(

Das ist der Sharp EL220 Besser.

Gruß Michael

Reinhard Kern 30. Mär 2007 09:18

Re: Z80 emulator ( z80 core )
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von sharpals
Hallo, ich habe es mal testweise gemacht, leider springen die programme nicht so , wie es soll.

Wie müssten die speicherbereiche unterhalb von $100 gesetzt werden ?

Ich gehe mal davonn aus, das die programme den start über die adresse 00 ermitteln ?

Gruß michael

Hallo,

soweit ich mich erinnern kann, wird der Bereich 0 - 100H von CP/M bein Booten gesetzt. Ich habe aber mal einen CP/M-Emulator geschrieben für diesen Bereich, um nicht für Messgeräte usw. ein komplettes CP/M verwenden zu müssen. Vielleicht hilft das weiter, Source angehängt. Möglicherweise liegen irgendwo im Keller noch die Entwicklungshandbücher von Digital Research, kann ich im Moment aber nicht suchen, wg. Geld verdienen. Ich hatte Entwicklungs- und Vertriebslizenz für CP/M 2.2.

Gruss Reinhard

PS umbenannt in .txt ("Die Erweiterung mac ist hier verboten")

Lukas92 30. Mär 2007 13:39

Re: Z80 emulator ( z80 core )
 
Zitat:

Zitat von sharpals
Hallo, hier bei wiki stehen die bücher.

Z80 info

Das beste ist dann

Programming the Z80 von Rodney Zaks (SYBEX, ISBN 0-89588-094-6)
Programmieren des Z80 (SYBEX, ISBN 388745099X)

In meine emu ist übrigens ein z80 assembler eingebaut. Für den fall, daß du ihn haben möchtest, schick ich ihn dir.

Wenn du möchtest kannst du auch einen TI85 Port dafür schreiben.

Ich habe einen, aber das gerät frisst die accus sehr schnell leer :-(

Das ist der Sharp EL220 Besser.

Gruß Michael

Ja danke, das wär gut. Da hätte ich noch eine Frage: Kann man damit auch einen TI84 Port dafür schreiben?

MfG Lukas

sharpals 31. Mär 2007 20:38

Re: Z80 emulator ( z80 core )
 
ja klar, da er ein Z80 hat und aus sonst keine exotischee hardware hat.

Du brauchst aber ein TI84 rom.

Einzig der serial link wird ein wenig arbeit machen. Ich beteilige mich auch gerne darann.

In dem Emuteil wird dann dein name auftauchen.

Du kannst von mir den vollen emu bekommen, oder ein übungsteil auf deren basis du dann den emu schreiben kannst. Und ich integriere ihn dann in den großen emu.

Da hast du denn einen Assembler, einen Dissasembler , speichermonitor und debbugger.

Gruß Michael

Lukas92 2. Apr 2007 14:19

Re: Z80 emulator ( z80 core )
 
Danke. Ich glaub, ich nehme lieber den vollen emu. Könnte ich den auch den Quellcode für den emu haben? Dann könnte ich später ein eigenen schreiben.
MfG Lukas

sharpals 3. Apr 2007 08:36

Re: Z80 emulator ( z80 core )
 
hallo, ich habe din kernemulator mal hier test emu
eingestellt.

Bitte die Fragen dann auch da zu stellen.

Als ausführbare datei, ist der volle emu etwas größer. Den könnte dann per mail zusenden.

Wenn du also auf basis des testemus deinen eigenen entwirfst, kann ich ihn dann in den multiemulator (mit deinem namen ) einbauen und du kannst dann automatisch den assembler und alles andere benutzen.

hier die übersicht dafür :

MZx emu

achtung noch kein download, da freenet nur 1Mb große Dateien mag.

Aber ich schike ihn gerne.

sharpals 6. Mär 2008 20:11

Re: Z80 emulator ( z80 core ) was macht das M-basic ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo, ich habe jetzt eine Bios und Bdos Emualation geschrieben.

Turbo und WS startet , aber wenn ich ein M-Basic starte , hängt der emu.
Es scheint, daß das M-basic etwas im CPP sucht.

Es fragt die CP/M version ab und steigt dann mit einen Bdos 0 aus.

Kennt vieleicht jemand den effekt ?

Gruß Michael


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz