Z180SoftSystem

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
HobbyProgrammer
Beiträge: 168
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Z180SoftSystem

Beitrag von HobbyProgrammer »

Hallo,

ich habe soeben die Version 2.4.0 meines Z180SoftSystems hochgeladen.
Nachdem ich seit ein paar Wochen im Besitz eines TL866-II Plus und eines MEMSIM2 bin,
konnte ich mein reales Z180-System wiederbeleben und den ein oder anderen Testcode
laufen lassen um so die Emulation näher an die Hardware heranzuprogrammieren.
Das emulierte Terminal wurde auf 80x30 Zeichen vergößert. Außerdem sind 4 Darstellungsmodi
auswählbar. Ebenso sind einige neue ESC Sequenzen hinzugekommen.

In den Release Files ist auch ein neues CP/M mit dabei. Dieses wird komplett aus dem
ROM gebootet. Auf den Laufwerken wird keine CPM3.SYS mehr benötigt.
Das BIOS ist noch eine Entwicklungsversion. Diese ist modular aufgebaut. Derzeit funktionieren
die Timestamps und Device Redirection funktionieren. Das BIOS erkennt anhand den Einstellungen
im Festplatten Dialog 4 verschiedene Festplatten Images (siehe Read.me). Die Disketten Laufwerke
sind noch auf 720KB (Laufwerk A:) und 1,44MB (Laufwerk B:) festgelegt. Auch wird der CCP derzeit
noch fix von Laufwerk A: geladen.

Zu finden ist das Z180SoftSystem wie immer unter: https://github.com/ProgrammingHobby/Z180SoftSystem

Viele Grüße

HobbyProgrammer
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Re: Z180SoftSystem

Beitrag von thosch »

Hallo,

Klasse Arbeit. Nun wäre es aber schön, wenn ich auch irgendwas in den RAM schreiben könnte. Der eingebaute Memory Editor zeigt nur das Boot ROM und man kann nichts editieren. Registerinhalte kann ich auch nicht verändern. Wie soll ich da die CPU prorammieren? Dazu brauchte ich mindestens einen Editor für den RAM.

Ich habe von 1980 bis 1983 in der DDR in Görlitz "Industrielle Elektronik" studiert. Im Rahmen meiner Ausbildung gab es da einen Mikrorechner K1520, mit U880 CPU, dem DDR Äquivalent des Z80. Der wurde bitweise programmiert. Assembler konnte der noch nicht. Es gab stattdessen 8 Taster für die Bits. So musste man den OpCode jedes Befehles einzeln eingeben und zum Schluss zwcks Start des Programmes den Befehlszähler richtig setzen. Wenn ich mich richtig erinnere, war das HL Register 16 Bit breit. Dort musste zuerst der niederwertige Teil, dann der höherwertige Teil der 16 Bit eingegeben werden.

Hätte man nun eine passende Dokumentation der Opcodes der Maschinenbefehle des Z80, könnte man im MemoryEditor die Maschinenbefehle eingeben und zum Schluss den Befehlszähler auf den Programmanfang setzen und das Programm dann starten wobei hier dann die Vorgehensweise an der CPU simuliert werden könnte. Soweit ich noch weiß, muss dazu die CPU aus dem Halt Zustand per Interrupt in den Befehlsabarbeitungszustand gebracht werden.

Aber entweder muss dieser Teil hier noch programmiert werden oder ich habe noch nicht verstanden wie ich diesen virtuellen Rechner dazu bringe, Werte für den RAM anzunehmen und Registerinhalte zu verändern.

Wenn das alles schon funktioniert, wie bekommen ich das Programm in diese Modi?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Z180SoftSystem

Beitrag von af0815 »

thosch hat geschrieben:
So 7. Feb 2021, 10:05
Hätte man nun eine passende Dokumentation der Opcodes der Maschinenbefehle des Z80, ...
Programming the z80 von Rodney Zaks kann ich aus dem Antiquariat wärmsten empfehlen. Das was DIE Bibel zum Z80. Mithilfe des Buches konnte ich mir meinen Assembler, Disassembler selbst bauen. Und auch meinen eigen EPROM Burner :-)
Es gab übrigends mehr 16 Bit Register (Man konnte einige 8 Bit Register zu 16 Bit zusammenfassen) und auch spezielle Indexregister (IX,IY). Außerdem war ein kompletter 2ter Satz an Registern auch verfügbar.

BTW: Da gib es einen Link, wo der Author folgendes gemeint hat:
From: "Rodnay Zaks" <xxxx@xxxxx.org>
To: "'Gaby Chaudry'" <xxx@xxxx.de>
Subject: RE: z80 request
Date: Sat, 17 Jan 2009 11:47:16 -0800


Dear Gaby:

I have no objection to the proposed posting as long as I feel the web
site retains its current character.

Please include the contact xxxxxx@xxxxxx.org

This permission may be withdrawn an any time.

Regards,

Rodnay Zaks
Siehe https://freecomputerbooks.com/Programmi ... ition.html und http://www.z80.info/zip/programming_the ... dition.pdf

Super Bursche :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Z180SoftSystem

Beitrag von Winni »

Hi!

Rodney Zaks schreibt wirklich sehr verständlich.

Er hat u.a. auch ein Buch über den 6502 geschrieben.
Und eine grundlegende Einführung in UCSD Pascal.

Ein empfehlenswerter Autor!

Winni

HobbyProgrammer
Beiträge: 168
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: Z180SoftSystem

Beitrag von HobbyProgrammer »

thosch hat geschrieben:
So 7. Feb 2021, 10:05
Hallo,

Klasse Arbeit. Nun wäre es aber schön, wenn ich auch irgendwas in den RAM schreiben könnte. Der eingebaute Memory Editor zeigt nur das Boot ROM und man kann nichts editieren. Registerinhalte kann ich auch nicht verändern. Wie soll ich da die CPU prorammieren? Dazu brauchte ich mindestens einen Editor für den RAM.

Ich habe von 1980 bis 1983 in der DDR in Görlitz "Industrielle Elektronik" studiert. Im Rahmen meiner Ausbildung gab es da einen Mikrorechner K1520, mit U880 CPU, dem DDR Äquivalent des Z80. Der wurde bitweise programmiert. Assembler konnte der noch nicht. Es gab stattdessen 8 Taster für die Bits. So musste man den OpCode jedes Befehles einzeln eingeben und zum Schluss zwcks Start des Programmes den Befehlszähler richtig setzen. Wenn ich mich richtig erinnere, war das HL Register 16 Bit breit. Dort musste zuerst der niederwertige Teil, dann der höherwertige Teil der 16 Bit eingegeben werden.

Hätte man nun eine passende Dokumentation der Opcodes der Maschinenbefehle des Z80, könnte man im MemoryEditor die Maschinenbefehle eingeben und zum Schluss den Befehlszähler auf den Programmanfang setzen und das Programm dann starten wobei hier dann die Vorgehensweise an der CPU simuliert werden könnte. Soweit ich noch weiß, muss dazu die CPU aus dem Halt Zustand per Interrupt in den Befehlsabarbeitungszustand gebracht werden.

Aber entweder muss dieser Teil hier noch programmiert werden oder ich habe noch nicht verstanden wie ich diesen virtuellen Rechner dazu bringe, Werte für den RAM anzunehmen und Registerinhalte zu verändern.

Wenn das alles schon funktioniert, wie bekommen ich das Programm in diese Modi?
Das Z180SoftSystem emuliert eine Z180MPU. Das ist im Kern eine Z80CPU mit einigen zusätzlichen Befehlen. Bis auf 3 Befehler welche von der Z180MPU leicht anders behandelt werden (z180qa.pdf) werden alle Z80 Befehle wie gehabt ausgeführt. Desweiteren besitzt die MPU OnChip noch eine Memory Management Unit, 2 DMA-Kanäle, 2 Programmierbare Timer und 2 Asyncrone Serielle Schnittstellen.

Die Eingabe von Werten direkt in die 'Prozessor Register' ist nicht vorgesehen. Standardmäßig ist nach einem Reset das Boot-ROM eingblendet. Es gibt jedoch im Menü 'Datei' den Menüpunkt 'Lade Binärdatei ins RAM'. Damit wird eine Datei (Vorgabeendung .bin) ab Adresse 0000h ins RAM geladen und das Boot-ROM wird abgeschaltet.
Diese Datei (Programm) kann dann entweder im Einzelschritt, im Slow-Run oder im Run-Modus gestartet werden.
Für kleine Änderungen kann im Memory-Editor durch einen Doppelklick auf eine Speicherzelle dieser Wert geändert und mit Enter hineingeschrieben werden.
Solche Binärdateien kann man z.B. sehr gut mit der ASIDE von Tassilo Heeg erstellen. Mit diesem ASIDE habe ich sämtliche Textprogramme für mein reales Z180 System als auch für das Z180SoftSystem geschrieben. Auch den
Boot-Code um das CP/M komplett aus dem ROM ins RAM zu kopieren und dann dort zu starten habe ich mit dieser wirklich sehr guten Software geschrieben.
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.0.0 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Antworten