Z180SoftSystem

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

Z180SoftSystem

Beitrag von HobbyProgrammer »

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 und ein einfaches Textterminal (ohne besondere erweiterte
Steuerzeichen) emuliert. Es sollen noch ein Festplattenlaufwerk (damals PATA HDD mit 200MB)
und ein Uhrenchip (DS12887A) hinzukommen. Auch habe ich noch vor das bei CP/M mögliche List-Device
auf einen auswählbaren Drucker am Hostsystem umzuleiten.
Vielleicht gibts ja noch Mitglieder oder Gäste die hier ins Forum schauen, die mit dem Programm etwas
anfangen können. Konstruktive Kritik ist jedenfalls gerne willkommen. Ich habe fertige Binarys für
Linux-64bit und Windows Systeme zum Download eingestellt. Getestet habe ich kurz unter WindowsXP, Windows7 und Windows10 sowie unter Ubuntu-18.04-64bit, Debian-Buster-64bit und Linux-Mint-LMDE4-64bit.
Bei Interesse kann ich auch gerne per PN den Sourcecode zusenden.
Grüße HobbyProgrammer
Dateianhänge
Windows-7.jpeg
Windows-7.jpeg (76.1 KiB) 6619 mal betrachtet
Debian-Buster-64bit.jpeg
Debian-Buster-64bit.jpeg (73.01 KiB) 6619 mal betrachtet
Z180SoftSystem_Windows.zip
(835.26 KiB) 284-mal heruntergeladen
Z180SoftSystem_Linux.7z
(856.08 KiB) 288-mal heruntergeladen
CPM-Testdaten.zip
(169.83 KiB) 274-mal heruntergeladen
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 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Z180SoftSystem

Beitrag von Mathias »

Cooles Projekt.

Hast du auch schon mit Lazarus Z80 Programme geschrieben ?
Leider sind die Disketten von damals unbrauchbar und neue konnte ich mit den mir
verfügbaren Laufwerken nicht mehr erstellen.
Ich hatte mal einen NCR-PC, in dem war ein Z80 und 8088er verbaut. Die Diskettenlaufwerke waren auf beiden Systemen die selben. Nur das Dateisystem war nicht kompatibel.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Z180SoftSystem

Beitrag von HobbyProgrammer »

Code: Alles auswählen

Cooles Projekt.
Danke.

Code: Alles auswählen

Hast du auch schon mit Lazarus Z80 Programme geschrieben ?
Wie meinst Du das? Lazarus ist Pascal und nicht Z80 Assembler.

Ich habe die Tools die ich damals benutzt habe in einer WindowsXP VM noch am laufen. Inclusive
aller Sripte zum Bauen einer CP/M Version. Leider scheinen die Tools um Disketten im CP/M Format
zu Formatieren in einer VM bzw. mit einem in die VM durchgereichten USB-Diskettenlaufwerk nicht
zu funktionieren.

Achja, sehe gerade das ich vergessen habe zu schreiben mit welchem Tool ich die Disketten Images
erstellt habe.
Das sind die Wild-Turkey CPM-Tools: https://www.cpm8680.com/cpmtools/
mit diesen Image Definitionen:

Code: Alles auswählen

diskdef SYS720
  seclen 512
  tracks 160
  sectrk 9
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 2
  os 3
# DENSITY MFM ,HIGH 
# BSH 4 BLM 15 EXM 0 DSM 359 DRM 254 AL0 248 AL1 0 OFS 2
end
diskdef DATA720
  seclen 512
  tracks 160
  sectrk 9
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 0
  os 3
# DENSITY MFM ,HIGH 
# BSH 4 BLM 15 EXM 0 DSM 359 DRM 254 AL0 248 AL1 0 OFS 0
end
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 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Z180SoftSystem

Beitrag von Mathias »

Wie meinst Du das? Lazarus ist Pascal und nicht Z80 Assembler
Du kannst einen Crosscompiler für Z80 bauen.
Dann sollte es möglich sein mit Lazarus Z80 Programme zu entwickeln.
So wie es bei AVR der Fall ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Z180SoftSystem

Beitrag von Mathias »

Leider scheinen die Tools um Disketten im CP/M Format
zu Formatieren in einer VM bzw. mit einem in die VM durchgereichten USB-Diskettenlaufwerk nicht
zu funktionieren.
Google mal nach folgendem, vielleicht hilft dir dies weiter.
"5 1/4 floppy arduino"
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Z180SoftSystem

Beitrag von HobbyProgrammer »

Du kannst einen Crosscompiler für Z80 bauen.
Dann sollte es möglich sein mit Lazarus Z80 Programme zu entwickeln.
So wie es bei AVR der Fall ist.
Achso, jetzt verstehe ich. :D
Da hab ich nicht im entferntesten dran gedacht. Zumal ich die Tools von damals doch sehr lieb gewonnen habe. :lol:

Ich hab vor das SoftSystem soweit zu bringen, das das Image der noch zu programmierenden virtuellen HDD auf eine reale HDD oder CF-Karte kopiert werden kann um damit das reale System versuchsweise wiederzubeleben.
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 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

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 »

Cool!

Wer CP/M Sources und Disk-Images benötigt, der wühlt bei Gaby:

http://www.gaby.de/

Grüße, Winni

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Z180SoftSystem

Beitrag von PascalDragon »

HobbyProgrammer hat geschrieben:
Fr 12. Jun 2020, 14:46

Code: Alles auswählen

Hast du auch schon mit Lazarus Z80 Programme geschrieben ?
Wie meinst Du das? Lazarus ist Pascal und nicht Z80 Assembler.
Free Pascal unterstützt in der Entwicklungsversion 3.3.1 seit etwa März Z80 als Ziel. Aktuell unterstützte Systeme sind ZX Spectrum und MSX-DOS, sowie die Embedded Platform (also ohne OS). Das Backend ist noch experimentell, könnte also noch Bugs enthalten (ich hab zumindest noch den ein oder anderen entdeckt, als ich den MSX-DOS Port implementiert habe).
Ein Implementierung eines CP/M Ziels ist auch geplant.
FPC Compiler Entwickler

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

Re: Z180SoftSystem

Beitrag von HobbyProgrammer »

Wow, das finde ich jetzt mal mächtig Stark. Zumal die Z80 Platform ja schon einige Jahre auf dem Buckel hat.
Die Z80 Assembler Sprache hat mir mächtig Spaß gemacht. Und ich habe das Z180SoftSystem unter anderem auch aus dem Grund ins Leben gerufen um mich mit dem Z80 (Z180) weiterhin beschäftigen zu können ohne jedesmal die ganze Hardware reaktivieren zu müssen.
Falls es der Z80 Port in eine Stable Version des FPC schafft, würde ich den bestimmt benutzen wollen. :D
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 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Z180SoftSystem

Beitrag von Mathias »

Free Pascal unterstützt in der Entwicklungsversion 3.3.1 seit etwa März Z80 als Ziel. Aktuell unterstützte Systeme sind ZX Spectrum
Erst seit Diesen März, ich dachte dies sei viel länger her.
Ich hatte mal vor ein paar Jahren etwas von GameBoy Unterstüzung gelesen und dieser läuft meines Wissens auch mit einem Z80.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Z180SoftSystem

Beitrag von PascalDragon »

HobbyProgrammer hat geschrieben:
Sa 13. Jun 2020, 16:27
Wow, das finde ich jetzt mal mächtig Stark. Zumal die Z80 Platform ja schon einige Jahre auf dem Buckel hat.
Hat uns noch nie aufgehalten. Es wurde ja auch 16-bit x86 implementiert. ;) Und die Hoffnung ist auch noch den 6502 in Zukunft zu unterstützen. :mrgreen:
HobbyProgrammer hat geschrieben:
Sa 13. Jun 2020, 16:27
Falls es der Z80 Port in eine Stable Version des FPC schafft, würde ich den bestimmt benutzen wollen. :D
Das wird aber noch ne ganze Weile dauern. Aktuell sind wir in den letzten Zügen für die 3.2.0 (welche Z80 nicht enthält) und das nächste große Release, das von Trunk abgezweigt wird, ist 3.4, was ich schätze, was in zwei Jahren der Fall sein wird. Es wäre also sinnvoller da jetzt schon damit zu spielen, da auf diese Weise hoffentlich noch ein paar Bugs gefunden werden können. ;)
Mathias hat geschrieben:
Sa 13. Jun 2020, 16:38
Free Pascal unterstützt in der Entwicklungsversion 3.3.1 seit etwa März Z80 als Ziel. Aktuell unterstützte Systeme sind ZX Spectrum
Erst seit Diesen März, ich dachte dies sei viel länger her.
Ich hatte mal vor ein paar Jahren etwas von GameBoy Unterstüzung gelesen und dieser läuft meines Wissens auch mit einem Z80.
Florian hatte den Z80 Port in einem Branch schon im März 2017 angefangen, aber in Trunk integriert und weiter finalisiert wurde es erst Anfang diesen Jahres.
Bei GameBoy musst du aufpassen: Free Pascal unterstützt schon seit langem GameBoy Advance und Nintendo DS, diese sind jedoch ARM Plattformen und keine Z80 Plattformen. Außerdem ist der Prozessor des GameBoy kein Z80, sondern etwas zwischen Z80 und Intel 8080, dem leider die IX und IY Register fehlen, welche FPC auf dem Z80 stark ausnutzt (zum Beispiel als Framepointer). Siehe auch hier.
FPC Compiler Entwickler

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Z180SoftSystem

Beitrag von Mathias »

Das wird aber noch ne ganze Weile dauern. Aktuell sind wir in den letzten Zügen für die 3.2.0 (welche Z80 nicht enthält) und das nächste große Release, das von Trunk abgezweigt wird, ist 3.4, was ich schätze, was in zwei Jahren der Fall sein wird. Es wäre also sinnvoller da jetzt schon damit zu spielen, da auf diese Weise hoffentlich noch ein paar Bugs gefunden werden können. ;)
Das ist meistens bei den Cross-Compilern der Fall, bei AVR und ARM muss man auch (noch) die Trunk nehmen.
Wer weis, vielleicht lässt sich eines Tages sogar fp (Konsole IDE von fpc) auf CP/M kompilieren. :wink:

Bei Cross-Compiler von Linux/Win, kann man getrost die stable nehmen.


Nachtrag:
Hat nicht auch MSX Gemeinsamkeiten mit CP/M ?
https://svn.freepascal.org/cgi-bin/view ... n&view=log
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Z180SoftSystem

Beitrag von PascalDragon »

Mathias hat geschrieben:
So 14. Jun 2020, 15:34
Das wird aber noch ne ganze Weile dauern. Aktuell sind wir in den letzten Zügen für die 3.2.0 (welche Z80 nicht enthält) und das nächste große Release, das von Trunk abgezweigt wird, ist 3.4, was ich schätze, was in zwei Jahren der Fall sein wird. Es wäre also sinnvoller da jetzt schon damit zu spielen, da auf diese Weise hoffentlich noch ein paar Bugs gefunden werden können. ;)
Das ist meistens bei den Cross-Compilern der Fall, bei AVR und ARM muss man auch (noch) die Trunk nehmen.
Brauchst du mir ja nicht zu sagen, da ich ja eigentlich nur in Trunk entwickle. :mrgreen:
Mathias hat geschrieben:
So 14. Jun 2020, 15:34
Wer weis, vielleicht lässt sich eines Tages sogar fp (Konsole IDE von fpc) auf CP/M kompilieren. :wink:
Da kann ich dir mit ziemlicher Sicherheit sagen, dass das nichts wird. Der Compiler ist einfach viel zu fett, um auf nem Z80 zu laufen. Selbst einen i8086 kann man da eigentlich als zu schwach ansehen. Was ich hoffe hinzubekommen ist FreeVision (also das Toolkit, das die IDE verwendet), aber das war's dann auch schon wieder. :?
Mathias hat geschrieben:
So 14. Jun 2020, 15:34
Nachtrag:
Hat nicht auch MSX Gemeinsamkeiten mit CP/M ?
https://svn.freepascal.org/cgi-bin/view ... n&view=log
MSX-DOS ist quasi ein Superset von CP/M. Sieht man zum Beispiel an dieser Liste an DOS-Aufrufen, die von MSX-DOS 2 unterstützt werden (und wo auch angegeben ist, welche für MSX-DOS 1 und welche für CP/M verfügbar sind). Ein CP/M-Port könnte also einen Teil des MSX-DOS Ports nutzen, könnte aber noch einfacher werden, da einige Funktionen (wie Verzeichnisse) gar nicht unterstützt werden.
FPC Compiler Entwickler

Mathias
Beiträge: 6165
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Z180SoftSystem

Beitrag von Mathias »

Weis das jemand.
Die MSX Heimcomputer gingen beim einschalten in ein GW-Basic.
Was dieses Basic auch ein Interpreter, so wie es auf dem IBM-PC der Fall war ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6200
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 »

Es war kein GW-Basic, sondern speziell an die Eigenschaften vom MSX angepasst. Der Vorläufer vom MSX war übrigends der Spectravideo. Und beim einschalten wurde das Betiebssystem geladen, welches gesteckt wurde. Das konnte auch MSX-Dos mit SCSI-.Festplatte sein. Oder auch CP/M bzw. ASCII-Dos.

Ja es war ein tokenezierender Interpreter. Daher das Programm wurde nicht als Klartext intern gespeichert, sondern beim Einlesen durch einen Parser bereits in Token zerlegt. Beim Speichern natürlich wieder als Text erweitert.

Der Basic Interpreter ist fix im Mainbereich gewesen, 0x0000 bis 0x7ffff (Bank 0 und Bank 1). RAM-Speicher stand IMHO auf Bank 2 und 3 zur Verfügung (abzüglich eines Systembereiches am Speicherende). RAM in Bank 2 nur wenn man mehr Geld ausgegeben hat. Ich habe damals die Rechner auf 64k Ram umgebaut :-)

BTW: Ich kann den heute noch fast auswendig :-) War sehr schlau organisiert mit dem Bank mapping. Hatte somit keine 64k Grenze, sondern in der Basisstufe 256k.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten