![]() |
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. |
Re: Z80 emulator ( z80 core )
Kann er auch die undokumentierten Opcodes?
|
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 |
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 |
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.
|
Re: Z80 emulator ( z80 core )
Sorry... Leider nicht...
Höchstens auf 5 1/4" Diskette im MZ-800 Format :hello: Frank |
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. |
Re: Z80 emulator ( z80 core )
Zitat:
Gruß Michael |
Re: Z80 emulator ( z80 core )
Zitat:
Noch interesse? Hab mein FL-DOS im Internet gefunden - lol Siehe : ![]() Grüsse Frank :coder: |
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. |
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 |
Re: Z80 emulator ( z80 core )
Hi!
Noch interesse? Hab mein FL-DOS im Internet gefunden - lol Siehe : ![]() 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 |
Re: Z80 emulator ( z80 core )
Zitat:
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 |
Re: Z80 emulator ( z80 core )
Zitat:
Kann ich mit Deinem Emulator die alten CP/M Diskette auf einem PC lesen? Grüsse Frank :coder: |
Re: Z80 emulator ( z80 core )
Zitat:
Delphi-Quellcode:
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.
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
Delphi-Quellcode:
Bei weiterem Interesse melden.
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; {....} Gruss Reinhard |
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. |
Re: Z80 emulator ( z80 core )
Zitat:
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 |
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 |
Re: Z80 emulator ( z80 core ) update [wie ?]
Zitat:
das ist die BIOS Jmp Table aus meinem BDOS, daraus siehst du, was zu implementieren ist:
Delphi-Quellcode:
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.
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 ; Gruss Reinhard |
Re: Z80 emulator ( z80 core ) update [wie ?]
Zitat:
Gruss Reinhard |
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 |
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 |
Re: Z80 emulator ( z80 core )
Hallo, hier bei wiki stehen die bücher.
![]() 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 |
Re: Z80 emulator ( z80 core )
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
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") |
Re: Z80 emulator ( z80 core )
Zitat:
MfG Lukas |
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 |
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 |
Re: Z80 emulator ( z80 core )
hallo, ich habe din kernemulator mal hier
![]() 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 : ![]() achtung noch kein download, da freenet nur 1Mb große Dateien mag. Aber ich schike ihn gerne. |
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