Hallo hier im Forum,
ich bin schon seit ca. 15Jahren immer wieder mal als Gast hier gewesen.
Nun habe ich mich angemeldet, um euch mein Programm Z180SoftSystem
vorzustellen.
Das Programm emuliert einen 8Bit-Microcomputer auf Basis einer Zilog
Z180MPU.
Das emulierte System existiert real und wurde von mir im Jahre 2005
designt und
Handverdrahtet aufgebaut. Es hatte damals die Möglichkeit 2
Diskettenlaufwerke sowie eine PATA Festplatte zu benutzen. Ich habe nun
mehr aus Spaß vor einigen Jahren angefangen dafür eine Emulation zu
schreiben. Herausgekommen ist nun dieses Programm.
Derzeit werden 2 Diskettenlaufwerke unterstützt. Eine Festplatte und ein
Uhrenchip sollen noch folgen.
Entwickelt habe ich das ganze mit Lazarus / Free Pascal, daher liegt
auch der Haupt-Diskussionstread im Deutschen Lazarus Forum.
Die Disketten Images habe ich mit den Wild-Turkey CPM-Tools
(https://www.cpm8680.com/cpmtools) erstellt.
Vielleicht hat ja jemand Verwendung dafür. Über konstruktive Kritik
würde ich mich sehr freuen.
Wie schnell ich mit Änderungen/Ergänzungen vorankommen kann ich nicht
sagen, da dies ein Hobbyprojekt ist und meine Zeitfenster dafür sehr
begrenzt sind.
Grüße
Hobbyprogrammer
Schönes Projekt!
Da hier im Forum von einigen Nutzern ein reales Z180 System [1]
aufgebaut und betrieben wird, wäre das dort unterstütze SIMHD-Format
recht nützlich.
# SIMH AltairZ80 Harddisk
diskdef simhd
seclen 128
tracks 2048
sectrk 32
blocksize 4096
maxdir 1024
skew 0
boottrk 6
os p2dos
end
[1] Beitrag "Z180-Stamp Modul"
> Gibt es dazu Bilder? :)
Gerne doch. Daran solls nicht liegen. :-)
> Schönes Projekt!
Danke.
> Da hier im Forum von einigen Nutzern ein reales Z180 System [1]> aufgebaut und betrieben wird, wäre das dort unterstütze SIMHD-Format> recht nützlich.
Das werde ich mir gerne ansehen. Hast Du mir genauere Informationen oder
Dokus?. Evtl. auch einen Link wo ein Tool zu haben ist mit welchen
dieses Image-Format erstellt werden kann.
Joe G. schrieb:> Uwe M. schrieb:>> Evtl. auch einen Link wo ein Tool zu haben ist mit welchen>> dieses Image-Format erstellt werden kann.>> Ich benutze immer den TotalCommander mit einem CP/M Plugin [1].> Eine zugegeben etwas alte Doku des Z180 Projektes findest du hier [2].> Ein aktuelles Handbuch dazu kann ich dir gerne per Mail zusenden.>> [1] https://hc-ddr.hucki.net/wiki/doku.php/cpm/disketten_xp2> [2]> https://www.mikrocontroller.net/svnbrowser/avr-cp-m/trunk/stamp/z180_stamp/
Ich hab mir jetzt das Diskformat von Dir angesehen. Das kann ich mit den
Wild Turkey Tools auch erstellen. Ich weis jetzt nicht ob Du Dir das
Z180SoftSystem schon angesehen hast. Da gibt es für die
Diskettenlaufwerke einen Einstellungsdialog in welchem die Imagedatei
angegeben wird und auch für jedes Laufwerk die Diskgeometrie eingestellt
werden kann.
So wird es bei der Festplattenanbindung auch sein. Auch dort wird es
einen Dialog geben wo die Imagedatei und die Geometrie der emulierten
Festplatte eingestellt werden kann. Die eigentliche Verarbeitung muß
dann ja im CP/M-Bios entsprechend erfolgen. Somit denke ich das es kein
Problem sein sollte das von Dir vorgeschlagene Imageformat mit dem
Z180SoftSystem zu verwenden.
Uwe M. schrieb:> Ich weis jetzt nicht ob Du Dir das> Z180SoftSystem schon angesehen hast. Da gibt es für die> Diskettenlaufwerke einen Einstellungsdialog in welchem die Imagedatei> angegeben wird und auch für jedes Laufwerk die Diskgeometrie eingestellt> werden kann.
Ja, ich habe mir deine Software mal angesehen. Der Eingabedialog für die
Diskgeometrie ist jedoch sehr rudimentät. Ich wollte z.B.
diskdef avrcpm
seclen 128
tracks 77
sectrk 26
blocksize 1024
maxdir 64
skew 1
boottrk 2
os p2dos
end
einstellen, kann aber z.B. bei den sektoren nur 8,9,15 und 18 auswählen.
Joe G. schrieb:> kann aber z.B. bei den sektoren nur 8,9,15 und 18 auswählen
Ok, verstehe. Das was bis jetzt implementiert ist wird als Standard
Floppy-Diskformat behandelt. Angesprochen werden diese "Laufwerke" über
einen emulierten Disketten-Controller welcher WD1770 kompatibel ist.
Daher auch nur die begrenzte Auswahl.
Das zuvor beschriebene Format:
1
# SIMH AltairZ80 Harddisk
2
diskdef simhd
3
seclen 128
4
tracks 2048
5
sectrk 32
6
blocksize 4096
7
maxdir 1024
8
skew 0
9
boottrk 6
10
os p2dos
11
end
hat ja eine Kapazität von 8MB und wird im Z180SoftSystem als HDD
implementiert. Da bin ich gerade dabei den Konfigurationsdialog zu
erstellen. Angesprochen wird dieses "Laufwerk" dann über einen
emulierten IDE-Controller der dann ATA-1 kompatibel sein soll. Dabei
habe ich zu Anfang folgende Einstellungsmöglichkeiten vorgesehen: Köpfe
0 - 15 , Spuren 0 - 2047 , Sektoren 1 - 63 , Bytes pro Sektor 128 , 256
oder 512.
Ich habe mal die beiden beliebten Programme Wordstar und Turbo Pascal
auf eine Disk gebracht und versucht zu starten. WS macht nichts und TP
bricht mit einem Fehler ab.
Moin, -
das ist schoen (sowohl der Emulator/Simulator) und die Hardware-
Loesung.
Koenntest Du den Schaltplan von der CPU-Platine teilen?
Viele liebe Gruesse
Th.
Joe G. schrieb:> Ich habe mal die beiden beliebten Programme Wordstar und Turbo Pascal> auf eine Disk gebracht und versucht zu starten. WS macht nichts und TP> bricht mit einem Fehler ab.
Vielen Dank für die Info. Ich bin bis jetzt leider noch nicht dazu
gekommen größere CP/M Programme zu testen. Ich wollte erstmal die
Datenträger Anbindung ans Laufen bringen.
Die Meldung von Turbopascal wird von einem TRAP der Z180MPU ausgelöst.
Verwendet Turbo Pascal undefined Z80 Op-Codes? Ich denke eher nicht. Ich
werde mich dann sobald ich ein größeres Zeitfenster habe auf die
Fehlersuche im Prozessor machen.
Thomas W. schrieb:> Koenntest Du den Schaltplan von der CPU-Platine teilen?
Schaltplan der CPU-Platine ist angehängt. :-)
Moin, -
vielen Dank fuer den Schaltplan. Das war auch mein Ansatz (muss nur
mal Bleistift -> KiCAD-Transformation starten)
Kleiner Kommentar noch zu dem Simulator: Ich bin ja sehr beeindruckt
ueber
den Lazarus Compiler. Eine einzige Exe, keine Bibliotheken mit ihren
Abhaegigkeiten. Hat schon Charme. Schoen einfach.
Viele Gruesse
Th.
Thomas W. schrieb:> Moin, ->> vielen Dank fuer den Schaltplan. Das war auch mein Ansatz (muss nur> mal Bleistift -> KiCAD-Transformation starten)
Gerne doch.
> Kleiner Kommentar noch zu dem Simulator: Ich bin ja sehr beeindruckt> ueber> den Lazarus Compiler. Eine einzige Exe, keine Bibliotheken mit ihren> Abhaegigkeiten. Hat schon Charme. Schoen einfach.
Ich hatte das Projekt vor einiger Zeit mit Qt(C++) angefangen. Aber
genau die vielen
Bibliotheken die man mitschleppen muß nur das so ein kleines Programm
funktioniert
haben mich auch gestört. Deshalb hab das ganze dann ende letzten Jahres
nach Pascal
transformiert.
Joe G. schrieb:> Ich habe mal die beiden beliebten Programme Wordstar und Turbo Pascal> auf eine Disk gebracht und versucht zu starten. WS macht nichts und TP> bricht mit einem Fehler ab.
Mir hats keine Ruhe gelassen und ich hab mich auf die Fehlersuche
gemacht. Es lag nicht am Z180SoftSystem sondern an einem nicht korrekt
gesetzten relokatierbaren Sprungvektor im CP/M-BIOS. Der ist mir auf der
original Hardware garnicht aufgefallen. Ich habe neue CP/M Daten
angehängt. Damit startet Turbopascal. Wordstar tut auch etwas, aber
evtl. ist da doch noch ein weiterer Fehler vorhanden.
Was jetzt zuschlägt ist die noch fehlende Unterstützung für erweiterte
Steuerzeichen des Terminals. Ich denke ich werde diese als nächstes
einbauen, bevor ich das IDE-Platten Interface emuliere.
Uwe M. schrieb:> Damit startet Turbopascal. Wordstar tut auch etwas, aber> evtl. ist da doch noch ein weiterer Fehler vorhanden.
Dir ist hoffentlich klar, daß beide Programme einen Patchbereich
besitzen, wo die diversen Steuersequenzen für die Bildschirmausgabe und
andere Dinge geregelt sind. Die mitgelieferten Setup-Programme
(TINST.COM und INSTALL.COM) sind für Eigenbauer ein bissel doof, denn
was nützt einem solchen die Abfrage, ob man denn ein Lear-Siegler
Terminal oder einen Kaypro mit oder ohne Hilite hat? Da ist dann bei
beiden Programmen ein Patchen am PC aussichtsreicher. Anbei ein Beispiel
für sowas.
Und da du offenbar ein CP/M-3 benutzt, mußt du drauf achten, daß auch
Programme wie TP oder WS ganz einfach die BIOS Aufrufe benutzen, ohne
"durch" das BDOS zu gehen. Deshalb darf die Bank-Umschaltung im BIOS
nicht annehmen, daß das BIOS vom BDOS aus gerufen wird und deshalb der
Stack auch im Common liegt. Siehe als Beispiel den angehängten Auszug.
Nochwas:
CP/M verträgt von der Konsole nur CR und kein LF. Aber zur Konsole
hin muß es sowohl CR (nur X=0 setzen) als auch LF (nur Y eine Zeile
weiter bzw. unten scrollen) sein. Und keine Zeichen über $7F.
W.S.
Das Test CP/M ist noch ein ungebanktes System, von daher denke ich das
es hier nicht wirklich klemmt. Dennoch vielen Dank für den Tip mit der
Bankumschaltung. Davor muß ich aber erst sicherstellen das die MMU in
der emulierten CPU auch richtig funktioniert.
Das Thema Console CR und LF ist mir bekannt. Mit der Konfiguration von
Wordstar und Turbopascal unter CP/M hab ich leider keine Erfahrung. Aber
was nicht ist kann ja noch werden. :-)
W.S. schrieb:> Dir ist hoffentlich klar, daß beide Programme einen Patchbereich> besitzen, wo die diversen Steuersequenzen für die Bildschirmausgabe und> andere Dinge geregelt sind.
Meine beigefügte 720K Floppy beinhaltet schon das WS und TP mit den
VT100 Einstellungen, sollte also mit einem kompatiblen VT100 Terminal
korrekt funktionieren.
Nun ja, VT100 finde ich nun nicht wirklich nett. Eine der häufigste
Sequenzen - nämlich das Cursor-Positionieren - läuft da über zwei- oder
dreistellige Dezimalziffernfolgen für X und Y. "Bäh" kann man dazu nur
sagen, denn eben dieses Verfahren setzt eine Ausgabekonvertierung und
gleich danach eine Eingabekonvertierung voraus - und das bei einem
kleinen Z80 System, was womöglich noch mit 4 MHz Systemtakt läuft. Da
ist das ältere Verfahren esc=xy mit x=char(32+Xkoordinate) und
y=char(32+Ykoordinate) wesentlich effektiver.
Und ja, ich weiß, daß es inzwischen Z80 mit 20 MHz Takt gibt. Das
erleichtert das ganze etwas, gilt aber m.W. nicht für den Z180 und
aufwärts.
W.S.
W.S. schrieb:W.S. schrieb:> Und ja, ich weiß, daß es inzwischen Z80 mit 20 MHz Takt gibt. Das> erleichtert das ganze etwas, gilt aber m.W. nicht für den Z180 und> aufwärts.
Mein System läuft mit 18 MHz.
Beitrag "Re: Z180-Stamp Modul"
W.S. schrieb:> Die mitgelieferten Setup-Programme (TINST.COM und INSTALL.COM)> sind für Eigenbauer ein bissel doof, denn was nützt einem> solchen die Abfrage, ob man denn ein Lear-Siegler> Terminal oder einen Kaypro mit oder ohne Hilite hat?
Wenn der Emulator (bzw. die eigene Hardware) kompatibel zu einem dieser
Terminals ist, dann funktionieren diese Programme ausgezeichnet. Mein
System konvertiert deswegen z.B. zwischen ADM-3A (CP/M-seitig) und VT100
(Nutzerseitig) umher. Ich hab die C-Datei mal angehängt.
W.S. schrieb:> Nun ja, VT100 finde ich nun nicht wirklich nett.
Das hat mehrere Facetten, von denen ich die Dezimalzahlendarstellung
eher als unwichtiges Detail betrachte.
Erstens kam das VT100 für CP/M recht spät und wird daher direkt von
vielen Anwendungen nicht unterstützt, oder nur in neueren Versionen.
Also muss man die Programme patchen.
Zweitens ist das ANSI-Protokoll sehr erweiterbar und wurde mit den
Jahrzehnten auch deutlich erweitert: Farben, mehr Tasten, etc. Ich würde
mich nicht wundern, wenn CP/M-Programme damit nicht ordentlich umgehen
können.
Drittens: Die Idee, ESC einerseits als Escapezeichen im Protokoll zu
benutzen, andererseits aber eine ESC-Taste ohne Escaping
bereitzustellen, ist hochgradig genial. Viele DOS- und CP/M-Anwendungen
benutzen ESC aber als Taste statt als Sequenz. Ich kann garnicht so
viel fressen, wie ich deswegen kotzen möchte.
Wie man ESC von einer Pfeiltaste unterscheidet? Klassisch natürlich mit
einem Timeout, damit sich das System auch richtig schön langsam anfühlt.
Und über das Internet natürlich auch nicht zuverlässig funktioniert.
(Der Code oben erwartet "ESC ESC" für die Escape-Taste.)
Es scheint auch noch Probleme bei der Abarbeitung der Z80 Befehle zu
geben. Der Z80 exerciser wirft sehr schnell Fehler
Z80all instruction exerciser
<adc,sbc> hl,<bc,de,hl,sp>.... ERROR **** crc expected:d48ad519
found:f39089a0
add hl,<bc,de,hl,sp>.......... ERROR **** crc expected:d9a4ca05
found:1165fc90
add ix,<bc,de,ix,sp>.......... ERROR **** crc expected:b1df8ec0
found:c359f7a2
Joe G. schrieb:> Es scheint auch noch Probleme bei der Abarbeitung der Z80 Befehle zu> geben. Der Z80 exerciser wirft sehr schnell Fehler>> Z80all instruction exerciser>> <adc,sbc> hl,<bc,de,hl,sp>.... ERROR **** crc expected:d48ad519> found:f39089a0>> add hl,<bc,de,hl,sp>.......... ERROR **** crc expected:d9a4ca05> found:1165fc90>> add ix,<bc,de,ix,sp>.......... ERROR **** crc expected:b1df8ec0> found:c359f7a2
Das liegt daran, das der Zexall Test nicht nur die undokumentierten Z80
Op-Codes sondern auch die undokumentierten Bits im Flag Register F
auswertet.
Weder die undokumentierten Z80 Op-Codes noch die undokumentierten Bits
im Register F werden von der Emulation abgedeckt. Bei undefinierten
OP-Codes löst der Z180 einen TRAP Interrupt aus.
Ich habe nun nochmals aktuell den Zexdoc Test durchlaufen lassen und das
Terminal Logfile angehängt. Da sieht die Sache schon sehr viel besser
aus.
Die gemeldeten Fehler bei RLD und RRD sind duch das Dokument 'Z180
Family Questions and Answers' Seite 6-2 Abschnitt
'INSTRUCTIONS(Continued)' zu erklären. Alle anderen Fehler sind dann
wohl auf die undokumentierten Z80 Op-Codes zurückzuführen.
Der Zexdoc Test läuft nur dann, wenn das Z180 Modul mit dem
Compilerschalter 'NOTRAP' kompiliert wird.
Du könntest testweise die beim Z80 undokumentierten Flags (und evtl.
auch Opcodes) ausmaskieren. Das gibt zwar andere CRC-Werte, aber wenn du
mit einem echten Z80 vergleichst...
Ein Vorschlag um deinen Terminal nicht VT100, VT220, DEC oder ähnliches
beizubringen könntest du doch das bisher nicht unterstütze Umschalten
der E/A Kanäle (DEVICE.COM) implementieren. Somit könnte man die Konsole
z.B. auf einen virtuellen COM-Port schalten und diesen per virtuellem
Nullmodemkabel wieder auf ein Terminalprogram seiner Wahl, welche eine
Terminalemulation unterstützt.
Uwe M. schrieb:> Ich habe nun nochmals aktuell den Zexdoc Test durchlaufen lassen
Ich denke mal, daß etwaige Fehler bzw. Absturz von CP/M-Programmen eher
durch irgend etwas Vergessenes oder falsch Gedachtes beim BIOS zu suchen
sind. Die damaligen Programme benutzen m.W. niemals irgendwelche
undokumentierten Befehle und viele benutzen nur das, was der 8080 auch
kann.
Was mir bei deinem Projekt aufgefallen ist: du scheinst für den
Interpreter keinen separaten Thread zu benutzen. Ich hab dir hier mal
was drangehängt. Die Display-Terminalfunktioalität läuft in IoStream als
separater Thread und kann deshalb stinke-prozedural programmiert sein.
Ist ne Erleichterung. Ich hab dort sowohl etwas VT-100 als auch etwas
'MicroBee VDU' eingebaut. Das war aber eher die
Versuch-und-Irrtum-Methode.
W.S.
Joe G. schrieb:> Ein Vorschlag um deinen Terminal nicht VT100, VT220, DEC oder ähnliches> beizubringen könntest du doch das bisher nicht unterstütze Umschalten> der E/A Kanäle (DEVICE.COM) implementieren. Somit könnte man die Konsole> z.B. auf einen virtuellen COM-Port schalten und diesen per virtuellem> Nullmodemkabel wieder auf ein Terminalprogram seiner Wahl, welche eine> Terminalemulation unterstützt.
Ich möchte das Z180SoftSystem erstmal in sich funktionierend haben,
zumal ich bei dem Terminal schon recht weit bin. Denke mal nächste Woche
müsste ich es fertig bekommen. Aber Dein Vorschlag kommt auf jeden Fall
auf die Todo Liste. Dort hab ich schon stehen, das LIST Device von CP/M
auf einen auswählbaren Drucker am Host System verbinden zu können, und
auch das AUX Device auf einen wählbaren COM Port am Host System legen zu
können. Dann wäre das Drucken und auch ein Datenaustausch für Programme
die im Z180SoftSystem laufen möglich. ?
W.S. schrieb:> Was mir bei deinem Projekt aufgefallen ist: du scheinst für den> Interpreter keinen separaten Thread zu benutzen.
Das stimmt. Ich habe schon mal dran gedacht die CPU und/oder das
Terminal in eigenen Threads laufen zu lassen. Aber mit der Thread
Programmierung habe ich noch keinerlei Erfahrung oder Berührung gehabt,
von daher ist das etwas was vielleicht irgendwann später einmal als
Optimierung verwirklicht wird.
Uwe M. schrieb:> vielleicht irgendwann später einmal
Ist doch easy. Mach's lieber gleich, das erspart dir eine Menge
Hakeligkeiten. Und wie das im Prinzip geht, kannst du in meinem
geposteten Terminalprogramm sehen. Das sollte auch unter Linux gehen,
man muß dort lediglich eine Linux-Version des TComPort haben.
W.S.
Nun, ists doch schneller gegangen als gedacht. Ich habe die Version 1.2
angehängt. Der Sourcecode ist wieder bei Github zu finden:
https://github.com/ProgrammingHobby/Z180SoftSystem
Das Terminal kann nun mit Escape Steuersequenzen umgehen. Und es ist
auch eine neue CP/M Testversion dabei. Im CP/M-Bios hatten sich 2 Fehler
eingeschlichen die den Start von TurboPascal sowie WordStar verhindert
haben.
Falls noch ESC-Steuerzeichen fehlen oder nicht richtig funktionieren,
bitte melden. :)
Phuu, gut. Hatte schon befürchtet ich hätte doch nen Fehler beim Packen
gemacht.
Hatte gestern Abend noch selbst mit TP und WS ein wenig herumgespielt.
Ich werd heut oder morgen auch die Binarys bei Github einpflegen. Dann
können die auch von dort heruntergeladen werden. :-)
Mir ist heute aufgefallen das einige Tastaturcodes im Terminal wohl
nicht richtig umgesetzt werden. Also z.B. # , ? , < , > , ^ .
Ich befürchte das das ein generelles Problem ist. Ist das bei euch auch
so? Wäre schön wenn mir jemand da Feedback geben könnte und vielleicht
auch die Zeichen nennen welche nicht richtig kommen. Evtl. auch ob bei
der Windows oder Linux Version.
Ich habe gerade aus dem Lazarusforum mitbekommen das das von Linux auf
Windows anders ist mit den Tastaturcodes. Habe das dann auch schnell in
meinen beiden Programmier-VMs nachvollzogen und belegen können.
Ich werde in den nächsten Tagen eine entsprechend Fehlerbereinigte
Version zur Verfügung stellen.
Hallo,
ich habe nun die Fehlerbereinigte Version fertig. Jetzt sind die
Sonderzeichen auch unter Linux so wie unter Windows mit 'ALTGR'
erreichbar.
Die neue Version ist 1.2.1. Ich habe diese so wie die Sourcen auch bei
Github zum Download eingestellt.
https://github.com/ProgrammingHobby/Z180SoftSystem
Danke für das Feedback.
Ich habe die Version 1.2.1 kurz in folgenden VMs getestet: WinXP 32bit ,
Win7 64bit , Win10 64bit , Debian Buster 64bit , Mint LMDE 4 64bit und
KUbuntu 18.04 64bit.
Hallo,
ich habe heute nochmal ein wenig getestet. Dabei habe ich festgestellt
das der CP/M Befehl 'Initdir' nicht läuft. Dieser überschreibt den BDOS
Einsprungvektor an Adresse 0006h mit 0001h und bleibt dann bei Adresse
ED8Ch mit eine OP-Code TRAP hängen.
Kann mir da jemand kurz auf die Sprünge helfen? Hab ich da noch einen
Fehler im CP/M-BIOS oder muß ich eher in der CPU-Emulation nach dem
Fehler suchen?
Grüße
HobbyProgrammer
Uwe M. schrieb:> das der CP/M Befehl 'Initdir' nicht läuft.
daß
und Initdir ist kein üblicher CP/M-Befehl - jedenfalls keiner von CP/M
2.2. Es ist also ein separates Programm - und da weiß man aus der Ferne
erstmal nicht, was dieses denn so tut. Ich tippe darauf, daß dieses
Programm der emulierten Laufwerksverwaltung ins Gehege kommt.
Also Frage: läuft dieses Programm denn korrekt auf einem nativen
CP/M-System?
W.S.
W.S. schrieb:> Initdir ist kein üblicher CP/M-Befehl
Bei CP/M 3 schon, darum gehts ja hier.
Vielleicht ist noch etwas mit dem Abspeichern von Zeit- und
Datumseinträgen nicht korrekt.
W.S. schrieb:>> Also Frage: läuft dieses Programm denn korrekt auf einem nativen> CP/M-System?>
Das kann ich leider nicht nachprüfen. Ich meine damals vor 15Jahren als
ich das Z180 System aufgebaut habe, hab ich Initdir benutzt. Mangels
Boot-Medien kann ich meine Hardware leider derzeit nicht reaktivieren.
Joe G. schrieb:> Vielleicht ist noch etwas mit dem Abspeichern von Zeit- und> Datumseinträgen nicht korrekt.
Das würde dann heisen das ich den Fehler im CP/M-BIOS suchen muß.
Joe G. schrieb:> Bei CP/M 3 schon, darum gehts ja hier.
Nö. Ist es nicht. Hab grad mal näher nachgesehen: Initdir ist ein
separates Programm. Es hat wohl zum Lieferumfang von CPM3 gehört, aber
das ist etwas anderes als ein üblicher CPM-Befehl. Die sind nämlich im
CCP eingebaut.
So. Und weil Initdir ein separates Programm ist, muß man davon ausgehen,
daß es eben NICHT wie der CCP nur ganz brav auf die Funktionen des BDOS
zugreift. Das macht alles komplizierter.
Ich hab grad nochmal gesucht und die beigefügten Quellen gefunden.
Initdir ist in PL1 geschrieben und scheint ja doch über das BDOS (BDOS
Funktion 50) auf das BIOS zuzugreifen.
W.S.
Ich kann Entwarnung geben. Initdir läuft. Ich habe gestern nur so aus
einer Idee heraus das Initdir aus dem C't Prof80 Projekt versucht und
dieses läuft. Das Initdir welches in den bisher hatte läuft nicht. Ich
weis jetzt auch nicht woher ich das hatte. Ist ja schon 15Jahre her das
ich diese Daten angefasst habe...
W.S. schrieb:> Initdir ist ein> separates Programm. Es hat wohl zum Lieferumfang von CPM3 gehört, aber> das ist etwas anderes als ein üblicher CPM-Befehl. Die sind nämlich im> CCP eingebaut.
Ja, es ist ein separates Programm, gehört aber zu CP/M, genauso wie SET,
SETDEF, TYPE, DATE, DEVICE usw. Nach deiner Logik dürfte DIR auch nicht
zu CP/M gehören, denn es ist ja auch ein separates Programm. Sobald du
nämlich irgendeine Option angibst, mach das nicht mehr der CCP.
W.S. schrieb:> Initdir ist in PL1 geschrieben...
Nein, PL/M
Sinus T. schrieb:> Nach deiner Logik dürfte DIR auch nicht> zu CP/M gehören, denn es ist ja auch ein separates Programm.
DIR ist gerade kein separates Programm, sondern (wie auch z.B. ERA)
fester Bestandteil von CCP. Und CCP ist ein elementarer Bestandteil von
CP/M; ASM oder SYSGEN hingegen nicht - auch, wenn beide mitgeliefert
werden.
Bei CCP kannst du davon ausgehen, dass es das von DR gelieferte
Standardprogramm ist. Bei SYSGEN kannst du davon ausgehen, dass es
nicht das von DR gelieferte Standardprogramm ist. Beide gehören zu
CP/M.
Du siehst das Problem?
S. R. schrieb:> DIR ist gerade kein separates Programm, sondern (wie auch z.B. ERA)> fester Bestandteil von CCP.
Wenn du einfach nur "DIR" eintippst, dann macht dass der CCP. Wenn du
jedoch Optionen angibst, z.B. "DIR [FULL]", dann macht dass das externe
DIR, zu finden auf der System-Disk.
Edit: Wie gesagt, wir reden hier von CP/M 3
Hallo zusammen,
seit ein paar Minuten steht die Version 2.0.0 zum Download bei GitHub
bereit. Als Laufwerk ist nun auch ein HDD-Drive verfügbar das über einen
ATA-1 kompatiblen Kontroller angesprochen werden kann. Auch ist die
'virtuelle Taktfrequenz' der CPU in 4 Schritten einstellbar. Und im
Hilfemenü gibt es nun eine Auflistung der Emulierten Hardware mit
Portadressen und Befehls/Steuercodes.
Zu finden wie gehabt unter:
https://github.com/ProgrammingHobby/Z180SoftSystem
Grüße
HobbyProgrammer
Uwe M. schrieb:> Ich hatte das Projekt vor einiger Zeit mit Qt(C++) angefangen. Aber> genau die vielen> Bibliotheken die man mitschleppen muß nur das so ein kleines Programm> funktioniert> haben mich auch gestört. Deshalb hab das ganze dann ende letzten Jahres> nach Pascal> transformiert.
mal mit wxwidgets probiert?
Prima!
Die von dir bereitgestellte HD läuft bei mir. Nun wollte ich jedoch das
8 M AltairSIMH Format verwenden und bin gescheitert. Dazu hatte ich die
folgenden Einstellungen vorgenommen:
Köpfe 1
Spuren 2048
Sektoren 32
Byte/Sektor 128
macht genau 8MB. Es kommt jedoch bei mir der Fehler CP/M Error On C:
Diskt I/O
Habe ich was übersehen?
Das in den Testdaten vorhandene CP/M BIOS kennt nur das Format welches
ich zum Test mitgeliefert habe. Für andere Formate muß das BIOS mit den
Drive Parameter Blöcken angepasst werden.
Joe G. schrieb:> Prima!> Die von dir bereitgestellte HD läuft bei mir. Nun wollte ich jedoch das> 8 M AltairSIMH Format verwenden und bin gescheitert. Dazu hatte ich die> folgenden Einstellungen vorgenommen:>> Köpfe 1> Spuren 2048> Sektoren 32> Byte/Sektor 128>> macht genau 8MB. Es kommt jedoch bei mir der Fehler CP/M Error On C:> Diskt I/O>> Habe ich was übersehen?
Ich habe mir Dein Z180 Projekt nun mal genauer angesehen. 1:1 wird es
nicht gehen, da die zugrundeliegende Hardware zu unterschiedlich ist.
Wenn es Dir nur darum geht von meinem Emulator aus auf das Simh-Image
zugreifen zu können um darauf zu Arbeiten sollte das möglich sein.
Booten über ein FDD-Image und dann auf Dein Image zugreifen. Allerdings
passen Deine HDD Einstellungen nicht ganz. Das BIOS in den Testdaten
geht von 16 Köpfen aus. Da CP/M aber keine Köpfe kennt sondern nur
Sektoren und Spuren werden die unteren 4Bit der jeweiligen Spur als
Kopfadresse benutzt. Die Einstellungen müssten also eher sein: Köpfe 16,
Spuren 128, Sektoren 32 und 128Byte/Sektor. Dennoch fehlt dann die
passende DBP Definition im BIOS. Ich kann Dir anbieten das Du mir ein
solches Image von Dir zukommen lässt. Dann baue ich Dir eine
Konfiguration damit Du das Image im Z180SoftSystem lesen und schreiben
kannst.
Uwe M. schrieb:> Wenn es Dir nur darum geht von meinem Emulator aus auf das Simh-Image> zugreifen zu können um darauf zu Arbeiten sollte das möglich sein.
Ja, genau um diesen Punkt würde es mir gehen. Das SIHM-HD Format wird ja
in vielen Projekten verwendet und so könnte man diese Immage-Datein
problemlos verwenden. Das Format hatte ich ja hier
Beitrag "Re: Z180SoftSystem"
schon mal angegeben. Anbei auch ein Immage im SIHM-HD Format.
Wie es der Zufall so will hatte ich heute schon um 12Uhr Feierabend und
konnte mich um das SIMHD Format kümmern. Viel mußte ich am BIOS nicht
ändern. Bitte Testen! :)
Hallo zusammen,
ich habe soeben die Version 2.1.1 hochgeladen. Was geändert wurde steht
wie immer in der Version.txt.
In der Version 2.1.1 funktioniert nun auch die DMA-Kontroller Emulation.
Ein in 2005 geschriebenes CP/M-BIOS das für den xmove den Z180
DMA-Controller benutzt läuft darauf ohne Änderungen am BIOS-Code.
Auch die DMA-Kanal 0 Memory <-> ASCI funktion habe ich eingebaut. So wie
in der Z180 Dokumentation beschrieben funktioniert dieses auch. Da ich
leider im Augenblick noch keine Möglichkeit habe mein reales Z180-System
mal eben mit Test-Code über EEPROM oder EPROM-Simulator zu reaktivieren,
kann ich diese Funktion leider nicht überprüfen.
Vielleicht hat ja jemand hier im Forum die Möglichkeit das mal an einem
realen System gegenzuprüfen und mir dann Feedback zu geben.
Die Version 2.1.1 ist wie immer bei GitHub zu finden:
https://github.com/ProgrammingHobby/Z180SoftSystem
Grüße
Hobbyprogrammer
Für Windows und Linux sind im Ordner Releases kompilierte Binarys
eingestellt.
Entwickelt habe ich das Z180SoftSystem unter Linux (Ubuntu 18.04LTS) mit
Lazarus 2.0.10 und FPC 3.2.
Es kompiliert mit der Lazarus Standardinstallation ohne zusätzliche
Packages.
Hallo zusammen,
es ist wieder eine neue Version des Z180SoftSystems fertig geworden.
Diese trägt die Versions Nummer 2.2.0.
Zu finden wie immer bei GitHub:
https://github.com/ProgrammingHobby/Z180SoftSystem
Grüße
HobbyProgrammer
Bei mir bleibt das CP/M in beiden Bootvarianten (FDD und HDD mit dem
jeweiligen Boot ROM) nach dem Bootvorgang hängen. Es sind keine Eingaben
über die Tastatur möglich.
Nachtrag: Version 2.2.0
Schau mal nach ob Du den Arbeitsspeicher auf 256KB eingestellt hast.
Habs gerade nochmals bei mir (Linux) mit der Version 2.2.0 und den CP/M
Testdaten (beide extra von GitHub heruntergeladen) probiert.
Wenn der Speicher auf weniger als 256KB eingestellt ist, dann bleibt das
System nach dem Booten hängen.
Hab die Version auch nochmals unter Win7 getestet. Läuft mit 256KB
Arbeitsspeicher.
Kein Problem. Gerne.
Hätte ja durchaus sein können das mir etwas durchgegangen ist. Wollte
die kleinen Verbesserungen noch herausgeben bevor es kommendes
Wochenende für 3 Wochen in Urlaub geht.
Hallo zusammen,
es ist wieder eine neue Version des Z180SoftSystems fertig geworden.
Diese trägt die Versions Nummer 2.3.0.
Hauptsächlich habe ich in dieser Version die Terminal-Emulation
dahingehend geändert,
als das diese nun in einem eigenen Thread läuft und somit von der
eigentlichen CPU-Emulation
entkoppelt ist. Desweiteren habe ich die Disketten-Emulation
überarbeitet. Diese läuft
nun deutlich schneller. Allgemein wurde auch die
Emulationsgeschwindigkeit unter Windows verbessert.
Zu finden wie immer bei GitHub:
https://github.com/ProgrammingHobby/Z180SoftSystem
Grüße
HobbyProgrammer
>es ist wieder eine neue Version des Z180SoftSystems fertig geworden.
Keliner Tipp für die Darstellung auf GitHub: Wenn Du mit Markdown in
einem Readme.md kurz beschreibst, was das Projekt macht, hast Du mehr
Interessenten.
Folgende Punkte sollten beantwortet werden:
What?
Why?
How? ( compilation, installation instructions )
Gruss,
chris_
chris_ schrieb:> Keliner Tipp für die Darstellung auf GitHub: Wenn Du mit Markdown in> einem Readme.md kurz beschreibst, was das Projekt macht, hast Du mehr> Interessenten.
Danke für die Erinnerung. Das hatte ich schon eine ganze Weile vor. Ist
aber leider immer wieder untergegangen. Seit heute aber vorhanden. :-)
Hallo an alle,
ich bin gerade dabei für mein Z180SoftSystem die Möglichkeit zu schaffen
über das CP/M List-Device auf einen Drucker am Hostsystem zu drucken.
Nun hätte ich dazu eine Frage: Könnt Ihr mir evtl. Dateien von z.B.
Supercalc,WordStar zukommen lassen, damit ich damit die Druckerfunktion
testen kann? Das würde mir die Arbeit ersparen mich erst in diese
Programme einarbeiten zu müssen, um z.B. bestimmte Formatierungen oder
Schriften zu Testen.
Vielen Dank.
Grüße
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