Günstig ist der Betrieb auf zwei Konsolen. Wenn nach der Monitorausgabe 60K TPA Loaded: Resident: 0x1E300-0x1EDFF, Banked: 0x07F00-0x0EFFF ## Starting application at 0xad00 ... => die Ausgabe auf CON1 kommt, wird CP/M ordentlich gestartet.
Gast
#5464450
Ja das mach ich auch. Aber es kommt eben nur Kauderwelsch....
Um die Fehler auf der seriellen Seite zunächst mal auszublenden, könntest du die CP/M Konsole auf die AVR Monitorkonsole legen. Ich weiß den Monitorbefehl gerade nicht aus dem Kopf, nutze mal HELP im Monitor. Mit dem Umschalten befindest Du dich dann im CP/M.
Gast
#5464483
Hab keinen entsprechenden Befehl gesehen? Aber memtest ist OK und der CPU test (mit HLT) auch...
Gast
#5464502
@leo: (sorry für OT) hast Du indessen irgendwo mal eine Referenzimplementation eines interruptbasierten Z180 serial- Treibers gefunden? Gruß, Holm
Joe G. schrieb: > önntest du die CP/M Konsole auf die AVR Monitorkonsole legen. Geht mit "con". Aber dazu muss in der CPM-Submit-Datei (Autostart) die Aussage per Assign umgelegt sein...
Harald N. schrieb: > Hab keinen entsprechenden Befehl gesehen? > Aber memtest ist OK und der CPU test (mit HLT) auch... Ich bin leider nicht früher dazu gekommen :-( Nun habe ich dir mal ein CP/M Bootimage erzeugt, welches nach dem Bootvorgang die Console wieder auf den USB-Port legt. Wenn der Monitor also komplett durchgelaufen ist, einfach den Befehl "connect" eingeben. Dann verbindet sich der USB-Port mit der CP/M-Console mit der folgenden Meldung: => connect Connecting to CPU. Escape character is '^€'. Physical Devices: I=Input,O=Output,S=Serial,X=Xon-Xoff USB0 NONE IO ASCI0 19200 IOS ASCI1 115200 IOS Current Assignments: CONIN: = USB0 CONOUT: = USB0 AUXIN: = Null Device AUXOUT: = Null Device LST: = Null Device A> Verlassen kannst du das CP/M mit dem vorher definierten esc_char des Monitors.
Gast
#5469103
Danke für das Testimage. Vielleicht komme ich am Wochenende dazu.
Schön, daß hier wieder ein bisschen was los ist. Ich würde mich auch gerne etwas mehr beteiligen, bin aber z.Zt. mit anderen Dingen völlig ausgelastet. Danke Joe, für die tolle Anleitung und die Disk-Images. Joe G. schrieb: > Schritt 5 > Environmentvariable im Monitor setzen (Beispiel) Beim Versuch, diesen Schritt etwas zu automatisieren, bin ich leider auf einen Fehler im Stamp-Monitor gestoßen. Seit einiger Zeit kann der Monitor ja Befehle aus einer Script-Datei lesen und ausführen. Dabei wurden Zeilen, die nur aus Kommentar bestehen leider als Fehler behandelt, und so verhindert, daß man Script-Dateien sinnvoll kommentieren kann. Den Fehler habe ich jetzt behoben (Anhang1). Anhang2 ist ein Beispielscript, daß im wesentlichen die Einstellungen von Joe übernimmt, und noch ein paar Sachen zeigt, die ich für nützlich halte. > baudrate=115200 > bootdelay=3 Diese Einstellungen werden automatisch gesetzt, wenn das EEPROM noch leer ist, oder die CRC nicht stimmt und durch den Befehl "defaultenv". > cpm3_commonbase=f000 > cpm3_scb=1e800 > startaddress=ad00 Diese Variablen werden durch den Befehl loadc automatisch gesetzt. Um die aktuellen Einstellungen leichter in ein Script übernehmen zu können, habe ich dem Befehl printenv eine Option [-s] spendiert, durch die die Variablen im Format "setenv VARIABLE 'WERT'" ausgegeben werden.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Der output kann dann per Copy&Paste in eine Datei übernommen und editiert werden.
Holm T. schrieb: > @leo: (sorry für OT) hast Du indessen irgendwo mal eine > Referenzimplementation eines interruptbasierten Z180 serial- Treibers > gefunden? Referenzimplementation kenne ich keine, nichtmal andere interruptbasierte Beispiele. Meine eigenen Versuche findest Du in den Sourcen von Stamp-Monitor und CP/M 3 Bios:
1 | |
2 | |
Die sind aber schlecht kommentiert, von vielen Teilen des jeweiligen sonstigen Systems abhängig, die Monitor- (DDTZ-) Variante zu simpel, und die BIOS-Variante etwas "overengineered", unfertig, und auch sonst kaum als Beispiel zu gebrauchen...
Vielen Dank für die neue Monitorversion. Ich werde sie am Wochenende gleich mal testen und natürlich die Dokumentation um die Beschreibung erweitern. Die Möglichkeit die Environmentvariable automatisiert durch eine Datei zu setzen, hatte ich aus Faulheit (lief ja alles ;-) nicht genutzt. Jetzt werde ich es jedoch auch integrieren. Weiterhin hat sich gezeigt, dass ein Neueinsteiger ja recht hilflos vor dem nun schon komplexen System steht. Der erste Schritt für komplette Inbetriebnahmepakete ist ja schon getan. Hier werde ich mal weiter dran arbeiten.
Ich habe jetzt mal die neue Monitorversion in den Flash gebracht und das Laden der Variablen per Script getestet. Der Befehl printenv -s ist tatsächlich sehr nützlich :-) spart viel schreiben. Ansonsten läuft die Übernahme problemlos und bietet somit auch eine prima Variante unterschiedliche Einstellungen zu laden.
Gast
#5477395
Hall Joe! Könntest du nochmal die jumpersetzung zeigen, damit beide stamps auf dem ecb zusammen mit dem flash-modul funktionieren? Entweder habe ich Fehler auf den Platinen oder die jumper sind falsch gesetzt....
Es sind zwei Betriebsvarianten möglich. Eine 5V Variante und eine 3.3V Variante. Ich beschreibe die 5V Variante über USB. 1. AVR-Stamp Die Stromversorgung (5V) erfolgt über die USB-Schnittstelle. Der AVR-Stamp benötigt jedoch neben den 5V auch 3.3V welche vom Z180-Stamp erzeugt werden. Aber der Reihe nach… JP1 schließen JP2 PIN2 und PIN3 brücken In der Doku (Seite 4) ist das die Variante V1-B Damit kommen die 5V vom USB-Steckverbinder über JP1 und JP2 an Vcc. Vcc liegt somit auch an B2 und sollte dort gemessen werden können. 2. Z180-Stamp Hier kommen die 5V von B2 über das ECB-Bord und werden mittels eines Reglers auf 3.3V umgesetzt. Hier gibt es zwei Layoutvarianten, die Version 1.0 und die Version 1.1 In der Layoutvariante 1.0 wird JP2 und JP3 geschlossen. Damit liegen 3.3V an B1 und sollten dort auch gemessen werden können. Weiterhin muss JP2 und JP4 geschlossen sein, damit der Z180 seine 3.3V bekommt. Da beide Varianten so nicht gesteckt werden können (Layoutfehler), ist für eine der beiden Brücken eine Lötstelle zu setzen. Variante C (Seite 3) Ist alles korrekt gebrückt, so muss am Bus B1 3.3V und B2 5V liegen. In der Layoutvariante 1.1 ist der Fehler behoben. Hier ist JP3 und JP6 zu schließen (Variante 1, Seite5). Auch hier muß nach korrekter Beschaltung am Bus B1 3.3V und am Bus B2 5V liegen. Weiterhin benötigt der Z180 einen Takt. Dieser kommt im „Normalfall“ vom AVR über CLKO (A28). Das bedeutet, dass JP1, Pin2 und Pin3 verbunden werden müssen. Ansonsten hat die CPU kein Takt. 3. ECB Das ECB-Board kann wiederum mit 3.3V oder 5V betrieben werden. Für die 3.3V Variante ist JP1 Pin2 und Pin1 zu brücken. Damit wird das Board komplett mit 3.3V versorgt. JP2 (Monitor) bleibt offen. JP3 bestimmt woher die Z180 CPU den Takt bekommt. Da wir über CLKO vom AVR takten wollen, ist JP3 Pin1 und Pin2 zu schließen. JP4 und JP6 bleiben offen. Weiterhin kann der RS232 Treiber deaktiviert werden. Wollen wir aber nicht und so bleibt JP5 auch offen. Nun sollte das System korrekt gesetzt sein.
Ergänzend zu den gestrigen Beschreibungen noch einige wichtige Hinweise. Einige der freien AVR-Pins müssen ebenfalls korrekt gesetzt sein, ansonsten ist möglicherweise die CPU im WAIT oder Halt über die Single-Step-Logik. Da man das File für die Environment Variablen nun prima dokumentieren kann (danke Leo ), habe ich es um die Beschreibung dazu erweitert. Weiterhin habe ich noch die Testbefehle für die externe SD-Card (FAT_1 und SD_1) eingefügt. Nach dem Bootvorgang des CP/M muss die CPU (Z180) in den Haltzustand gehen. Das korrekte Verhalten wird durch die zweifarbige LED angezeigt. Sie MUSS vollständig in der Farbe des Haltzustandes leuchten. Kommt hier, wenn auch schwach, die andere Farbe durch, ist etwas nicht in Ordnung.
@Harald Es gibt noch eine Minimalversion für die Inbetriebnahme. Dazu benötigst du nur den AVR-Stamp und den Z180-Stamp. Beide werden übereinander gesteckt. Unten der Z180, oben der AVR. Bei dieser Variante musst du jedoch beachten (!), dass nicht alle Pins verbunden sein dürfen. Die betroffenen Pins sind in der Doku im Anhang A mit „do not stack“ gekennzeichnet. Ich habe sie einfach auf dem Z180 abgeknipst. Das ist unproblematisch, da ja auch in der ECB-Version bis auf das SIDE-Interface nichts auf dem Z180 steckt. Im SIDE-Interface wird allerdings /DREQ1 benötigt, das Pin muss man dann wieder anlöten. In dieser Minimalversion kann das CP/M nun vollständig gebootet werden. Die AVR-Monitorausgabe und dann später die CP/M-Konsole laufen über die USB-Schnittstelle. Um die notwendigen Einstellungen und Testtools nutzen zu können, habe ich ein Skript (naked.sh) erstellt. Du bringst dieses Skript auf die Micro SD. Dazu noch cpm3.sys und cpm3_a.dsk (alles als ZIP im Anhang). Zur Installation musst du nun noch folgendes tun: => source naked.sh Nun muss die folgende Ausschrift erscheinen: Executing script: 'naked.sh'... ## Resetting to default environment ++ setenv cpm3_file 0:/cpm3.sys ++ setenv bootcmd pin ${pins}; reset; run attach_drives; loadc; go ${startaddress} ++ setenv d0 0:/cpm3_a.dsk ++ setenv d1 0:/cpm3_b.dsk ++ setenv d2 0:/cpm3_c.dsk ++ setenv d3 0:/cpm3_d.dsk ++ setenv d4 0:/cmp3_e.dsk ++ setenv attach_drives at -da; at dsk0 ${d0};at dsk1 ${d1};at dsk2 ${d2};at dsk3 ${d3};at dsk4 ${d4} ++ setenv singlestep 1 ++ setenv pin_alias 0:CSTART,1:SD1_CS,2:PB4,3:OC1A,4:V24_EN,5:PB7,6:SD1_CD,7:WAIT,8:RUN,9:ST EP,10:CLKO ++ setenv pins 2,8 low 9 high 3 2 ++ setenv esc_char 0x40 ++ setenv test_fat_0 fatstat 0:; fatls 0: ++ setenv test_fat_1 fatstat 1:; fatls 1: ++ setenv test_sd_0 sd status 0; sd init 0; sd info 0 ++ setenv test_sd_1 sd status 1; sd init 1; sd info 1 ++ setenv ddtz pin 3 2; loadf; mw 3 0; g 0; con ++ setenv debug-dsk at -o reattach,debug dsk0;at -o reattach,debug dsk1;at -o reattach,debug dsk2 ++ setenv cli Env setup completed successfully. Enter "saveenv" to make changes permanent. Jetzt speicherst du die Einstellungen dauerhaft im AVR EEPROM mittels => saveenv Saving Environment ... Dann startest du das System über die RESET-Taste neu. =========================< (RE)START DEBUG >========================= ### Reset reason(s): External. ATmega1281+Z8S180 Stamp Monitor - Version: 0.6.8.3 ### main_loop entered: bootdelay=3 ### main_loop: bootcmd="pin ${pins}; reset; run attach_drives; loadc; go ${startaddress}" Hit any key to stop autoboot: 0 CPU now in reset state. Attachment of '0:/cmp3_e.dsk' to dsk4 failed: Error opening file! Loading: '0:/cpm3.sys'... BNKBIOS3 SPR F900 0500 BNKBIOS3 SPR AD00 4300 RESBDOS3 SPR F300 0600 BNKBDOS3 SPR 7F00 2E00 60K TPA Loaded: Resident: 0x1E300-0x1EDFF, Banked: 0x07F00-0x0EFFF ## Starting application at 0xad00 ... -> Du befindest dich immer noch im Monitor, aber das CP/M hat schon gebootet und eine Konsolenausgabe auf CON1 getätigt, du siehst sie nur nicht auf der USB-Schnittstelle. Eine korrekte Ausschrift auf CON1 müsste so aussehen: CP/M Version 3.0, Z180-Stamp BIOS v0.6.8-23 Estimated CPU clock [Hz]: 18432000 sdio: SD Card driver cfio: CompactFlash Memory Card driver Model: PQI IDE DiskOnModule, S/N: DOM3C00004268, Rev: 060729DA Size: 256000 Sectors (128000 KiB) I: CP/M partition at: 2048, size: 8192KiB J: CP/M partition at: 18432, size: 8192KiB K: CP/M partition at: 34816, size: 8192KiB L: CP/M partition at: 51200, size: 8192KiB A>device CON:=USB0 Jetzt kannst du die USB-Schnittstelle mit dem CP/M verbinden. -> connect Connecting to CPU. Escape character is '^€'. Physical Devices: I=Input,O=Output,S=Serial,X=Xon-Xoff USB0 NONE IO ASCI0 19200 IOS ASCI1 115200 IOS Current Assignments: CONIN: = USB0 CONOUT: = USB0 AUXIN: = Null Device AUXOUT: = Null Device LST: = Null Device A> Du befindest dich jetzt im CP/M und kannst dort arbeiten. Um das CP/M wieder zu verlassen und zum Monitor zurückzukehren gibst du einfach das ESC-Char ein (eingestellt ist alt gr + @). [ESC Char] => Jetzt bist du wieder im Monitor. Ich hoffe, du kommst mit dieser Beschreibung nun etwas weiter.
Harald N. schrieb: > Könntest du nochmal die jumpersetzung zeigen, damit beide stamps auf dem > ecb zusammen mit dem flash-modul funktionieren? Hier noch eine brücke für das Z180 Modul in der Version 1.1. Ist mir leider nicht aufgefallen, da ich gerade mit der Version 1.0 arbeite. :-(
Gast
#5479165
Joe G. schrieb: > Hier noch eine brücke für das Z180 Modul in der Version 1.1. Ist mir > leider nicht aufgefallen, da ich gerade mit der Version 1.0 arbeite. :-( Ist das nicht der Bug der in 1.1 behoben sein sollte? Weil von dieser 3er Brücke höre ich zum ersten Mal...
Theoretisch ja, in der Schaltung. Im Layout ist aber das zugehörige Pin um ein Platz versetzt, so dass der Jumper nicht gesetzt werden kann :-( Es hilft tatsächlich nur eine Lötbrücke im 3.3V Betrieb.
@ Leo C. Ich habe hier bei einer fehlerhaften CPU (Z180) Platine ein merkwürdiges Problem. Betreibe ich sie alleine (nur mit Versorgungsspannung) scheint sie zu laufen. Adresszähler läuft los, RAM Zugriff erfolgt, Daten werden gelesen… Im Zusammenhang mit dem AVR-Monitor tritt jedoch das folgende Problem auf: Z180 im RESET, Reset ist LOW MTEST gestartet RESET geht auf HIGH BUSRQ geht auf LOW CPU bestätigt mit BUSAK auf LOW Jetzt kommt der Fehler: Das MTEST Programm läuft los aber es werden keine Adressen von AVR auf den Bus gelegt, auch das WR und RD Signal kommt nicht, jedoch werden die Testdaten zum RAM-Test von AVR auf den Datenbus gelegt (HALT ist übrigens HIGH). Natürlich schlägt damit der MTEST fehl [1]. Bei einer lauffähigen Platine kommt ist dieses Verhalten nicht zu beobachten. Warum verhält sich der Monitor so merkwürdig? Ich kann beim besten Willen den Fehler nicht eingrenzen :-( [1] FAILURE (data line): Is 55, should be aa FAILURE (data line): expected aa, actual 55 FAILURE (data line): Is aa, should be 55 FAILURE (data line): expected 54, actual ab FAILURE (data line): Is 54, should be ab FAILURE (data line): expected a8, actual 57 FAILURE (data line): Is a8, should be 57 FAILURE (data line): expected 50, actual af FAILURE (data line): Is 50, should be af FAILURE (data line): expected a0, actual 5f FAILURE (data line): Is a0, should be 5f FAILURE (data line): expected 40, actual bf
Sehr seltsam, daß der AVR zwar Daten auf den Bus legt, aber Addressen und RD/WR nicht. MREQ? Ich würde ja auf einen Buskonflikt tippen. Dem widerspricht aber, daß BUSACK low ist. Leider kann ich z.Zt. nichts ausprobieren, da ich zwar ein Stamp-System hier habe, aber keinerlei Meßmittel. Du könntest probeweise mal die Monitorversion 0.6.8.1 ausprobieren. Ich hatte noch gar nicht erwähnt, daß es seit Version 0.6.8.2 (die hier nicht veröffentlicht wurde), einen Workaround für das ZRESET-Problem[1] gibt. Vielleicht funktioniert der nicht wie gedacht. [1] Beitrag "Re: Z180-Stamp Modul"
Ich konnte den Fehler etwas eingrenzen. Es ist nicht ganz wie beschrieben. Da der Ramtest einige ms dauert, hat der Oszi den nächsten Zyklus nicht mehr in den Speicher bekommen. Das Verhalten sieht nun tatsächlich so aus: Z180 im RESET, Reset ist LOW MTEST gestartet RESET geht auf HIGH BUSRQ geht auf LOW CPU bestätigt mit BUSAK auf LOW genau nach einem M1 Zyklus (also korrekt) MREQ kommt korrekt, weiterhin WR und RD Die Adressen A0 bis A17 zappeln bis auf A1 A1 ist immer HIGH (hier liegt offensichtlich irgendwo der Fehler) Ohne AVR läuft A1 jedoch korrekt – merkwürdig… Ich hatte auch mal die alte Monitorversion getestet, kein Unterschied. Wobei mir schon seit einiger Zeit ein Problem mit dem HALT aufgefallen ist. Nicht immer bootet das System so, dass es im HALT bleibt. Irgendwie wird zyklisch dieser Zustand verlassen. Überschreibe ich den RAM und starte neu, geht alles wieder. Aber erstmal die erste Baustelle…
Gast
#5527649
@Leo: Ich habe gerade die EUMEL Sourcen Rolf-Dieter Klein für den 64180 geschickt bekommen. Die Sios werden da interuptgesteuert betrieben. Gruß, Holm
Die letzte Zeit habe ich mich wieder etwas mit der Hardware beschäftigt und dabei leider noch einen peinlichen Fehler (wieder-) entdeckt: Der RAM-Addressdecoder bezieht A19 mit ein, aber auf der AVR-Stamp ist A19 nicht angeschlossen. Keine Ahnung wieso uns das durch die Lappen gegangen ist. Zumal ich das beim Aufbau des Systems bemerkt haben muß, da ich A19 mit einem Pulldown "provisorisch" auf 0 gezogen habe. Der Widerstand ist auf dem Foto im Beitrag [1] über C9 zu sehen. @Joe Bei Dir oben scheint ja A1 ein Problem zu haben. Kannst Du überprüfen, ob das Problem evtl. auch mit A19 zu tun hat? [1] Beitrag "Re: Z180-Stamp Modul"
Stimmt, dumme Sache! Auf dem Z180 Stamp geht zwar A19 auf den Steckverbinder A3 aber ab da geht es nicht weiter :-( Auf dem AVR bleibt Steckverbinder A3 offen. Somit habe ich den Fehler nicht bemerkt, zumal bei mir der 7410 (zufällig) richtig dekodiert hat. Jetzt ist aber auch ein Widerstand drin :-) Mein Problem ist anderer Art und auch mit dem Widerstand nicht behoben. Nach dem Bootvorgang ## Starting application at 0xad00 ... startet das CP/M mit einer falschen Baudrate, eigentlich total fehlerhaft. Das Haltsignal vom Z180 kommt periodisch mit kurzen Impulsen. Nun muß ich Z180 Reset drücken und den AVR nochmals booten und erst dann (meistens jedenfalls) wird das CP/M richtig gestartet (keine Haltimpulse mehr). Diesen Fehler habe ich tatsächlich nie eingrenzen können. Das A1 Problem hatte ich auf einer weiteren Platine, das ist behoben (fehlende Lötstelle) :-(
Gast
#5555397
Ok, da bei mir aber "alles" funktioniert - besteht da Handlungsbedarf? Muss ich an A19 jetzt etwas anlöten?
Offene Eingänge sind nie gut für die Betriebssicherheit. Hier ist es wohl so, daß der Z180 die meiste Zeit auf 0 zieht. Wenn der AVR zugreift, behält die Leitung offensichtlich ziemlich lange diesen Pegel bei. Falls jemand auf die Idee käme, das RAM auf 1Mbyte zu erweitern, würde er aber wahrscheinlich Probleme bekommen. Wenn der AVR sich dann den Bus schnappt, während der Z180 die A19 auf 1 hält, wird sie auch während dem AVR-Zugriff auf 1 bleiben. Der Pulldown ist sicher die einfachste und schnellste Möglichkeit , um das System zuverlässiger zu machen. In einem nicht erweiterten System auch ohne Nachteile. In einem erweiterten System würde der Pulldown den Bus belasten und/oder vielleicht zu langsam "schalten".
Gast
#5555511
Ok, also A19-Anschluss auf der AVR-Stamp mit 10k auf GND ziehen?
Ja, besser ist das.
Hallo zusammen,
da ich gerade meine HP "aktualisiere" bin ich noch über folgende Dinge
gestolpert:
SingleStep
Wie ist/war denn da der letzte Stand? Ich sehe, das Joe die
Umgebungsvariable "singlestep = 1" verwendet - meines Wissen geht das
aber (noch) nicht? Wenn ja, was wäre denn da zu tun?
JP2 auf ECB-Board ("Monitor")
Der hat laut meinen Unterlagen (immer noch) keine Funktion?
ZReset-Bug
Da gabe es ja eien Bug in der HW - wurde der inzwischen in einer Version
beseitigt? Ich kann mich nicht mehr daran erinnern, hier etwas
nachgelötet zu haben... Wenn ich ZReset drücke resetet sich die CPU (ein
geladener DDTZ startet erneut bei 0 ...)
Vinculum
Ja... :-) gibts da was neues?
CSIO-Ports
Wenn ich die Beschreibung von Leo richtig lesen dann muss man noch ein
paar Kabel am Z180 an die Leitungen CKS/RXS/TXS anlöten?
Besten Gruß
Marcel
Marcel A. schrieb: > SingleStep Da steht was dazu: Beitrag "Re: Z180-Stamp Modul" > JP2 auf ECB-Board ("Monitor") > Der hat laut meinen Unterlagen (immer noch) keine Funktion? Das ist richtig. Die Kaltstart-Funktion ist immer noch nicht implementiert. Den entprellten ZReset-Taster (s.u.) könnte man auch noch damit machen. Beitrag "Re: Z180-Stamp Modul" > ZReset-Bug Hier ausführlich dargestellt: Beitrag "Re: Z180-Stamp Modul" > Da gabe es ja eien Bug in der HW - wurde der inzwischen in einer Version > beseitigt? Jeder der den Taster ausgebaut oder erst gar nicht bestückt hat, hat den Fehler beseitigt. ;) Der Monitor erkennt die Variante mit dem Transistor seit Version 0.6.8.2 automatisch. Platinen dafür gibts (noch) nicht. > Ich kann mich nicht mehr daran erinnern, hier etwas > nachgelötet zu haben... Wenn ich ZReset drücke resetet sich die CPU und der Port am AVR wird kurzgeschlossen... > (ein geladener DDTZ startet erneut bei 0 ...) Aber nicht immer zuverlässig, weil der Taster nicht entprellt ist. > CSIO-Ports > Wenn ich die Beschreibung von Leo richtig lesen dann muss man noch ein > paar Kabel am Z180 an die Leitungen CKS/RXS/TXS anlöten? Oder an der Basiskarte.
So, ich will endlich mal meinen Z180 fertig bekommen (sofern man davon sprechen kann :-)) und habe mal die SIDE gebaut - und gleich auf eine Karte für den ECB-Bus gepackt - nicht schön, aber geht :-) Ich habe zwar einen USB-IDE-Adapter - aber sowohl das DOM als auch der Adapter sind weiblich :-( - passen also nicht zusammen. Nun habe ich das "Formatierprogramm" für CPM aus Beitrag "Re: Z180-Stamp Modul" genommen - und siehe da:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
"SHOW" ist auch ok, aber ich habe damit das gleiche Problem wie Joe Beitrag "Re: Z180-Stamp Modul"
1 | |
2 | |
3 | |
4 | |
5 | |
Ich hatte mir damals selber 10 DOMs bei Pollin geholt, daher sind die "leer" gewesen... Komme ich da irgendwie weiter oder muss ich das Ding in einen alten IDE-Rechner einbauen? Ach so - wo finde ich denn den DDTZ für CPM wie hier verwendet: Beitrag "Re: Z180-Stamp Modul" Ich habe DDT, DDT180 und DDTZ (meldet sich mit "DDTZ v2.7M by CB Falconer. CPU=Z80") - DDTZ habe ich nur als Image für "loadf"... Besten Gruß Marcel
Hast du das Wipe Program von Leo C. mal versucht? Beitrag "Re: Z180-Stamp Modul" DDTZ Beitrag "Re: Z180-Stamp Modul"
Danke - hatte ich glatt übersehen! Der Link zum DDT geht ja zu dem DDT180 - den habe ich ja auch - beim Screenshot von Leo zum SIDE meldet sich aber ein "DDTZ"... Zum Thema USB: Ich hatte gar nicht mehr auf dem Schirm, dass das ja eigentlich fertig ist? Beitrag "Re: Z180-Stamp Modul" So wie ich das sehe hast du ein Vinculum rund um den VNC2 nachgebaut und eine andere Firmware eingebracht? Bin mir nicht mehr sicher, ob ich die Platine habe.. Kann man da auch ein "richtiges" Vinculum nehmen? Ich habe auch noch so einen Nachbau von "Bübchen" (mit VNC2), die gehen aber im NKC nicht richtig (parallel mode), vielleicht hier aber (da seriell). Sind die UTools denn auch gefixt? Stichwort 5. Zeichen? Und noch was: Wenn ich das richtig verstanden habe wird das USB-Modul an die serielle Schnittstelle vom Monitor zum PC-Terminal/VT100 auf dem ECB-Board angeschlossen wo auch der AVR-Monitor und per "CON" die Konsole direkt zum Z180 liegt? Nicht die 2 seriellen Schnittstellen des Z180? Wie komme ich denn dann bei gestecktem USB-Modul an die AVR-Monitor-Konsole (Knoten um Hirn :-)=)? Beitrag "Re: Z180-Stamp Modul"
Ich hatte eine Platine für den VNC2 erstellt, welcher ein USB Anschluss (zwei sind möglich) und eine serielle Schnittstelle + Stromversorgung beinhaltete. Weiterhin habe ich die Firmware (USB to Seriell)auf ein externes USB-Laufwerk angepaßt. Die UTools aus dem KC85 Projekt habe ich nie verwendet. Meine Platine wird also komplett seriell angesteuert. An welcher seriellen Schnittstelle sie liegt ist eigentlich egal. Im Z180 Projekt sitzt die Platine an der seriellen Schnittstelle des Z180, vor dem RS232 Wandler! Diese Variante ist jedoch ungünstig, da der Jumper, der den Wandler inaktiv schaltet, gleich beide Schnittstellen außer Betrieb nimmt. So habe ich in einem weiteren Testaufbau dem Modul noch einen eigenen Max232 gespendet und zusätzlich das Pin RI der seriellen Schnittstelle mit 5V beschaltet um das Modul gleich mit zu versorgen. Dazu gibt es allerdings keine neue Leiterplatte (ist jedoch noch geplant).
Danke Joe, war mein Denkfehler. Die USB-Console vom AVR Monitor geht ja direkt auf eine eigene USB-Buchse (da habe ich optional noch einen RS232-Wandler schaltbar für den Anschluss eines externen VT100-Terminals). SIO1 macht ja die Startausgaben bei CPM vor dem Assign-Befehl in der Profile.SUB. Damit wäre SIO0 sinnvoll. Welche Tools setzt du denn jetzt letztlich unter CPM ein, um das als Laufwerk zu nutzen, wenn es nicht die UTools sind?
Marcel A. schrieb: > Ach so - wo finde ich denn den DDTZ für CPM wie hier verwendet: Wahrscheinlich habe ich ihn in den Diskimages zum SIMH Altair Simulator (wieder) gefunden (cpm2.dsk, cpm3.dsk). In den üblichen CP/M Archiven findet man immer nur den anderen DDTZ. > Ich habe DDT, DDT180 Dieser DDT180 ist ja nur ein etwas erweiterter DDTZ von oben. Funktioniert also auch genau so. > und DDTZ (meldet sich mit "DDTZ v2.7M by CB > Falconer. CPU=Z80") - DDTZ habe ich nur als Image für "loadf"... Das ist der "andere" DDTZ. Davon findet man verschiedene Versionen im Netz. Marcel A. schrieb: > Der Link zum DDT geht ja zu dem DDT180 - den habe ich ja auch - beim > Screenshot von Leo zum SIDE meldet sich aber ein "DDTZ"... Spielt aber keine Rolle, weil Programm laden und starten funktioniert bei beiden gleich. Diese Funktionen können natürlich auch alle anderen Debugger für CP/M. Ich würde Dir allerdings gleich den DDT180 von hier empfehlen: Beitrag "Re: Z180-Stamp Modul" oder noch besser: http://cloudbase.mooo.com/cgit/ddt180/
Marcel A. schrieb: > Welche Tools setzt du denn jetzt letztlich unter CPM ein, um das als > Laufwerk zu nutzen, wenn es nicht die UTools sind? Selbstgeschriebene, habe aber nie alle Funktionen realisiert. Ich müßte mir nochmals alles ansehen.
Drei Tage ohne Internet. Das kommt dabei raus. Mehr dazu später.
Da bin ich gespannt :-)
Joe G. schrieb: > Da bin ich gespannt :-) Eigentlich gibts dazu ja nicht mehr viel zu sagen, oder? Es ein Prototyp für eine weitere Alternative für die Z180 Karte. Den 10MHz TMPZ84C015[1] gibt bei Aliexpress für ca. 3€. Da konnte ich nicht widerstehen. Der TMPZ84C015 ist ein Z80 Chip von Toshiba mit integriertem CTC, PIO und SIO. Außerdem sind noch ein Watchdog-Timer und ein Taktgenerator, der verschiedene Strompar-Modi unterstützt, eingebaut. Der Clou: Die MPU kann abgeschaltet und der Rest als Peripherie an einer anderen CPU, z.B. Z180-Stamp, genutzt werden. Um diese Betriebsart zu testen, sind die Jumper J2 - J5 auf der Karte. Die SIO-Anschlüsse dürfen dann auch nicht auf die Steckerleiste A durchverbunden werden. Diese Leitungen habe ich deshalb auch noch nicht verlötet. [1] z.B. http://datasheets.chipdb.org/Toshiba/Z80/TMPZ84C015B.pdf
Die MCU mittels Evaluator-Signal abzuschalten ist tatsächlich eine höchst interessante Funktion. Somit hat man PIO,SIO,CTC und Watchdog in einem Chip, an einem Bus. Leider habe ich den TMPZ84C015 bei Aliexpress nur in größeren Abnahmemengen gefunden. Hast du dazu eine Quelle?
Gast
#5614398
Joe G. schrieb: > TMPZ84C015 Joe G. schrieb: > Hast du dazu eine Quelle? Einfach neu kaufen bei Digikey https://www.digikey.de/products/de?keywords=%20%09269-3906 auch als 16 MHz Version https://www.digikey.de/product-detail/de/zilog/Z84C1516FSG/269-3908-ND/ Gruss
Erich schrieb: > Einfach neu kaufen bei Digikey > https://www.digikey.de/products/de?keywords=%20%09269-3906 > > auch als 16 MHz Version > https://www.digikey.de/product-detail/de/zilog/Z84C1516FSG/269-3908-ND/ Das ist der Zilog-Nachbau, der sogar noch etwas besser ist. Allerdings nicht für 3€, sondern eher das 4-fache Joe G. schrieb: > Leider habe ich den TMPZ84C015 bei Aliexpress > nur in größeren Abnahmemengen gefunden. Du kannst gerne einen von mir haben, auch wenn keine Platine draus wird. Und dann habe ich noch einige zum Preis von 2,8€ + Versandkosten abzugeben. :-) > Hast du dazu eine Quelle? Meine habe ich von hier: https://www.aliexpress.com/item/Free-shipping-10pcs-lot-Tmpz84c015bf-10-TMPZ84C015BF-TMPZ84C015-QFP-100-IC/32472094972.html
Leo C. schrieb: > Du kannst gerne einen von mir haben, auch wenn keine Platine draus wird. > Und dann habe ich noch einige zum Preis von 2,8€ + Versandkosten > abzugeben. :-) Leider erst jetzt die Antwort. Das AVR CP/M System hatte mich gerade etwas beansprucht. Danke für das Angebot! Ich nehme gernen in IC.
Gast
#5622201
Hmm...16Mhz? CPU abschaltbar? Ist das die Peripherie deren Fehlen mich an der Z180 Stamp als Einziges stört? Gruß, Holm
Hallo Joe, gibt es noch SIDE Platinen? Danke Günther
Ja, sowohl SIDE Platinen als auch DOM-Module.
Hallo Joe, dann hätte ich gerne 1 SIDE und je nach Vorrat 2-5 DOM. Schick mir doch deine Kontodaten per mail. Vielen Dank Günther
Sind eigentlich die Quellcodes fürs CPM3 BIOS auch irgendwo im SVN?
normalerweise hier: Beitrag "Re: Z180-Stamp Modul" Der Server scheint jedoch gerade nicht zu laufen. Leo C. kann sicher dazu eine Auskunft geben.
Gast
#5660418
Hallo Leo, kann man die BIOS-Quellen von dir bekommen? Besten Dank Günther
Joe G. schrieb: > Der Server scheint jedoch gerade nicht zu laufen. Leo C. kann sicher > dazu eine Auskunft geben. Der Server ist schon einige Wochen down (bootet nicht mehr). Eigenlich wollte ich sowiso die Hardware ersetzen, aber da ich wenig Zeit habe, und ihn bisher niemand vermisst hatte, habe ich mich noch nicht darum gekümmert. Mal sehen, ob ich ihn nächste Woche wieder ans Laufen kriege. Günther S. schrieb: > Hallo Leo, > kann man die BIOS-Quellen von dir bekommen? Bin z.Zt. nicht zu Hause, deshalb im Anhang nur der Stand, den ich auf meinem Laptop rumliegen habe.
Holm T. schrieb: > Hmm...16Mhz? CPU abschaltbar? Ist das die Peripherie deren Fehlen mich > an der Z180 Stamp als Einziges stört? Ich muß zugeben, daß Deine Nörgelei über fehlende (Standard-) Peripherie eine der Triebfedern war, mich mit dem Chip zu beschäftigen. :-)
Gast
#5661441
Leo C. schrieb: > Holm T. schrieb: >> Hmm...16Mhz? CPU abschaltbar? Ist das die Peripherie deren Fehlen mich >> an der Z180 Stamp als Einziges stört? > > Ich muß zugeben, daß Deine Nörgelei über fehlende (Standard-) Peripherie > eine der Triebfedern war, mich mit dem Chip zu beschäftigen. :-) Och Menno.. ich nörgele doch nicht. Ich hätte nur gerne für mich zum Spielen ein paar Drähte dran. Es ist zwar cool mit ziemlicher Geschwindigkeit Compilerläufe und Wordstar durchlaufen lasen zu können, das sind aber Dinge die ich auf solcher Hardware eher nicht zu erledigen habe. Trotzdem Dank für Deine viele Arbeit. Wenn ich Dir mit dem Server irgendwie behilflich sein kann, sag es, ich habe Hardware bei Hetzner im RZ unter FreeBSD laufend. Gruß, Holm
kleiner Hinweis auf einen CP/M-Explorer Beitrag "Re: CP/M auf ATmega88"
Mein kleiner Server ist wieder online und der Z180-Stamp Sourcecode wieder unter http://cloudbase.mooo.com/cgit/ erreichbar.
Gast
#5668920
Leo C. schrieb: > Mein kleiner Server ist wieder online und der Z180-Stamp Sourcecode > wieder unter http://cloudbase.mooo.com/cgit/ erreichbar. Danke! Gruß, Holm
Gast
#5803267
Leo ich habe mal ne Frage..
Ich hatte zum Robotron Treffen in Garitz meine Z180 Stamp mit und es
gibt da noch Interessenten..nach Rücksprache mit Joe lege ich evtl. mal
noch Platinen auf, schaunmermal..
Aber..ich habe in Garitz eine komische Industrieplatine mit einem
Z18S18020VSC geschenkt bekommen und habe das Ding heute mit Heißluft
runter gelötet, sauber gemacht und in die PLCC Fassung gesteckt..geht
..aber seltsam, sie ASCI 1 läuft als Console mit 115200 Baud:
CP/M Version 3.0, Z180-Stamp BIOS v0.6.8
Estimated CPU clock [Hz]: 18432000
sdio: SD Card driver
cfio: CompactFlash Memory Card driver: No Card
A>
Auf der CPU steht noch SL1960 und 9836 H3.
Ich habe noch weitere 5 Z8S18020VSC, eine davon gelasert Date Code 0721
PF und 4 gelb bedruckt 9921 IY. Diese 5 Starten mit
CP/M Version 3.0, Z180-Stamp BIOS v0.6.8
Estimated CPU clock [Hz]: 18432000
sdio: SD Card driver
cfio: CompactFlash Memory Card driver: No Card
A>
..und 19200 Baud, genauso wie eine Z8S18033VSC mit DateCode 0228.
Des Weiteren habe ich nun noch 4 Z8018010VSC mit Datecode zwischen 9123
und 9346 die mit
CP/M Version 3.0, Z180-Stamp BIOS v0.6.8
Estimated CPU clock [Hz]: 9216000
sdio: SD Card driver
cfio: CompactFlash Memory Card driver: No Card
A>
starten und mit 57600 Baud auf der ASCI1 laufen. Das verwundert mich
nicht, da die Z180 keinen Baudratengenerator wie die S und L Versionen
haben.
..aber was ist mit der Z8S180 los, die da mit 115200 Baud hoch kommt
anstatt mit 19200 wie die restlichen Z8S180? Ich habe nicht die letzte
Version CP/M auf dem Ding, das sind noch Deine älteren polled Treiber..
Hast Du ne Idee?
Das noch:
=> printenv
attach_drives=at dsk0 ${dsk0};at dsk1 ${dsk1};at dsk2 ${dsk2};at dsk3
${dsk3};at dsk4 ${dsk4};at dsk5 ${dsk5};at dsk6 ${dsk6};at dsk7 ${dsk7}
baudrate=115200
bootcmd=pin 8 low 3 9MHz; run attach_drives;loadcpm ${cpm3_file}; go
${startaddress}
bootdelay=3
cpm3_commonbase=f000
cpm3_file=0:cpm3_0.6.8.sys
cpm3_scb=1e900
dsk0=0:/cpm3test.dsk
dsk1=0:/diskb.dsk
dsk2=0:/diskc.dsk
dsk3=0:/diskd.dsk
dsk4=0:/diske.dsk
dsk5=0:/diskf.dsk
dsk6=1:/diskg.dsk
dsk7=1:/diskh.dsk
esc_char=0x40
pin_alias=0:PG5,1:PG4,2:PB4,3:PB5,4:PB6,5:PB7,6:PG3,7:PG2,8:PG1,9:PG0,10
:PE7
startaddress=b300
Environment size: 574/1597 bytes
=>
Gruß,
Holm
Hilft Dir das weiter?
Gast
#5803298
Joe G. schrieb: > Alle Unterlagen wie immer hier: > http://www.mikrocontroller.net/svnbrowser/avr-cp-m/trunk/stamp/z180_stamp/docs/ Scheisse, da sind ja sogar Schaltpläne im Eagle dabei! Jetzt kann man nicht mal mehr meckern...
Gast
#5803372
Leo C. schrieb: > Hilft Dir das weiter? Jepp, danke Dir. Ich wußte nicht das es eine SL1960 Version gibt die sich von den anderen unterscheidet. Gruß, Holm
Raph schrieb: > Scheisse, da sind ja sogar Schaltpläne im Eagle dabei! Jetzt kann man > nicht mal mehr meckern... Wobei Side und ECB noch fehlen. Wie mit Holm schon besprochen gibt es die Tage einen Link zu Github mit allen relevanten Daten für den Nachbau.
Gast
#5804719
..wegen meinem alten Elend mit der Peripherie...eine PIO hab ich nicht gefunden (bisher) aber eine PPI: http://www.cpcwiki.eu/index.php/VHDL_implementation_of_the_8255_PIO Evtl. ist ja dem Ding mit einem CPLD Beine zu machen das es schnell genug wird? Man müßte mal Einen fragen der sich damit auskennt.. Ich werde auch mal die Truppenteile mit dem Verilog SPI Master anmailen ob die das für "nonprofit" evtl. rausrücken..mehr als Nein können die ja schlecht sagen. Gruß, Holm
Gast
#5805184
Mir ist da noch was eingefallen, hier bei mc.net lief doch mal dieses Retrocomputing Projekt auf einem FPGA, der Z1013 und ein Z1013 enthält eine PIO...ergo: https://www.mikrocontroller.net/svnbrowser/redz0mb1e/src/vhdl/PIO.vhd?revision=104&view=markup&sortby=date gibts da eine Z80 PIO in VHDL. Ich habe mit FPGA noch nie was gemacht und mit CPLDs sehr begrenzt. Ich werde mal versuchen den Autor zu kontaktieren ob er es für möglich hält diese PIO einzeln in ein CPLD zu planzen, immerhin hat die PIO die Möglichkeit IM2 zu unterstützen. Edit: Möchte Jemand evtl. eine ECBbackplane mit 4 Slots haben? Ich werde wahrscheinlich Solche machen lassen: https://www.retrobrewcomputers.org/doku.php?id=boards:ecb:backplane-4:start Ich würde die dann für den Selbstkostenpreis + Porto abgeben. ..hab 10 Stk. bestellt, die haben ne Macke. "Special Discount" bei JLCPCB, die 10 Platinen kosten: 1,77..mit Versand 17,97 Euro.. soll angeblich in 14 Tagen hier sein. Für den Preis kann man die nicht mal klauen lassen. Die kleine 3er gefällt mir angesichts unseres hektischen Systems besser..aber da gibts keine Daten, die müßte ich erst nachbauen. Gruß, Holm
Gast
#5805673
Ich habe mich mal an eine Aktualisierung gemacht, habe stamp-monitor_hexrel-6.8.3.zip geflashed und z180-stamp-cpm3_0.6.8-24-dirty_src-only.zip gebootet.. nebenbei das Environment angepaßt, aberdann war die Baudrate vergriesgnaddelt, es kam nix Vernünftiges mehr heraus. Der SL1960 war der Einzige dem ich was entlocken konnte, der erzählte mit 57600 Baud bei 3,88Mhz Taktfrequenz. Ich habe mich deshalb mal über die Einstellungen gemacht: cpm3_file=0:cpm3_0.6.8-24-dirty.sys pin_alias=0:CSTART,1:SD1_CS,2:PB4,3:OC1A,4:V24_EN,5:PB7,6:SD1_CD,7:WAIT, 8:RUN,9:STEP,10:CLKO pins=2,8 low 9 high 3 9M singlestep=1 -> pin -s 0 CSTART Pullup Low 1 SD1_CS Output High 2 PB4 Output Low 3 OC1A Clock 8999936 2 4 V24_EN Pullup High 5 PB7 Pullup High 6 SD1_CD Pullup Low 7 WAIT Pullup High 8 RUN Output Low 9 STEP Output High 10 CLKO Pullup High CP/M Version 3.0, Z180-Stamp BIOS v0.6.8-24-dirty Estimated CPU clock [Hz]: 18432000 sdio: SD Card driver cfio: CompactFlash Memory Card driver: No Card A> Am Z8S180 liegen (Quarzfassung) 18,432 MHz an ..hab ich noch einen Jumper falsch? Ich dachte da müßten 9,216Mhz auflaufen..und wiso denkt sich de AVR so eine krumme Clock? ok .. setenv pins '2,8 low 9 high 3 9216K' geht auch. ..nanu..jetzt kommt wieder nur Kauderwelsch... Gruß, Holm
Gast
#5805797
Leo was stellt denn Deine z180-stamp-cpm3_0.6.8-24-dirty_src-only.zip für eine Baudrate bei welcher Taktfrequenz des Z180 ein? Ich komme damit nicht klar. Ich habe die Jumperei untersucht und erst mal den Takt auf OC1A umgejumpert, hab auch (wieder) gelernt das man einen Teilerfaktor angeben muß im pin cmd, es liegen 9,216 Mhz an der Z180 an ,damit zeigt cpm3_0.6.8.sys auch 9 Mhz an: CP/M Version 3.0, Z180-Stamp BIOS v0.6.8 Estimated CPU clock [Hz]: 9216000 sdio: SD Card driver cfio: CompactFlash Memory Card driver: No Card A> Mit der z180-stamp-cpm3_0.6.8-24-dirty bekomme ich überhaupt keine nachvollziehbare Baudrate. Was ist denn da voreingestellt? Gruß, Holm
Gast
#5806313
Holm T. schrieb: [..] > ..hab 10 Stk. bestellt, die haben ne Macke. "Special Discount" bei > JLCPCB, > die 10 Platinen kosten: 1,77..mit Versand 17,97 Euro.. soll angeblich in > 14 Tagen hier sein. Für den Preis kann man die nicht mal klauen lassen. > > Die kleine 3er gefällt mir angesichts unseres hektischen Systems > besser..aber da gibts keine Daten, die müßte ich erst nachbauen. > > Gruß, > Holm Streß haben die wohl gerade nicht, siehe Anhang... Gruß, Holm
Gast
#5806524
Ich habe hier echt Sorgen mit dem Takt. Aus dem AVR kommen 9,2 Mhz raus, die leigen auch an EXTAL und XTAL an, an PHI erscheinen aber 4,6Mhz. In boot.180 ist definiert: dseg hwini_tab: db (hwini0_e-$)/2 ;count db rcr,CREFSH ;configure DRAM refresh db dcntl,CWAITIO ;wait states db ccr,M_NCD ;No Clock Divide db cmr,PHI_X2 ;X2 Clock Multiplier db omcr,~M_IOC ;Operation Mode Control Register hwini0_e: db 0 ;stop mark PHI_X2 ist aber in config.inc per default 0, der Kommetar sagt das das für verdoppelten Takt auf PHI_X2 equ M_X2CM ;set to M_X2CM to enable the clock doubler gesetzt werden soll. Woher kommt M_X2CM? Definiert ist das nirgends, bastelt das irgend ein Makro? Mit Joes CP/M das die console auf USB0 umleitet sehe ich was, das System läuft aber extrem langsam, über den Daumen gepeilt mit 2,5Mhz. Ich kann leider nicht sehen was die Z180 über ihrn eigenen Clock denkt, da auf der ASCI1 wirklich nur Kauderwelsch raus kommt. Ich habe das mit Leos 24-dirty und auch mit dem Zeug aus dem Git probiert. Was ist denn da los? Ich würde das hier in boot.180 gerne mal tot legen: call msginit call cpu_frq ld (f_cpu),hl ld (f_cpu+2),de Weil da offensichtlich Käse für die Baudratenkalkulation heraus kommt, was muß da für 18,432 Mhz rein? Ich habe leider auch kein funktionierendes ld80 binary..und so kein map file. Gruß, Holm
Gast
#5806612
..nu gucke an..
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Wenn ich verhindere das die Hardwareinitialisierung ausgelassen wird, macht die CPU ganz plötzlich was sie soll:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
Wo wird denn INIDONE mal gelöscht Leo? # fgrep -i INIDONE *.180 ascii.180: ld a,(INIDONE) ascii.180: cp INIDONEVAL boot.180: ld a,(INIDONE) boot.180: cp INIDONEVAL conbuf.180: ld a,(INIDONE) conbuf.180: cp INIDONEVAL msgbuf.180: ld a,(INIDONE) msgbuf.180: cp INIDONEVAL Gruß, Holm
Gast
#5807245
Leo Du hast offensichtlich mit einem ROM Boot der Z180 experimentiert, mit 9Mhz Takt ohne Multiplier. Die Hardwareinitialisierung in ldrbios.180 ist nicht mit INIDONE und INIDONEVAL verriegelt und funktioniert deshalb, die in boot.180 die aber beim Booten aus dem .sys File benutzt wird ..nur manchmal INIDONE ist die Speicherzelle 03fh und irgend ein Inhalt mit gesetztem Bit 7 da drin reicht aus, das der Prozessor nicht vernünftig initialisiert wird.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
So wie Du das machst kann ja da nur 080h oder 0 drin stehen, was bei einem leeren Speicher mit 0ffh oder auch zufälligem Inhalt eine hohe Chance ergibt, das die Initialisierung weg fällt und man wie ich mit obskuren Taktfrequenzen und Baudraten kämpft. Andererseits scheint auch das ldrbios.180 nach erfolgreicher Initialisierung das Flag in INIDONE nicht zu setzen...das ist wohl ne angefangene Baustelle (wie der Name -dirthy auch suggeriert). Ich schlage vor nicht 7 Bit einsparen zu wollen und ein Flag wie 55h, 0aah, oder 5ah, 0a5h zu setzen, das macht eine Fehlfunktion etwas unwahrscheinlicher.... andererseits ist das in boot.180 eher fehl am Platz, da das Label boot: ein Kaltstart Entry sein sollte und ein Kaltstart davon ausgehen sollte das initialisiert werden muß. Hab ich dabei was übersehen? Was wolltest Du einsparen? Ich bin wie schon erwähnt bei CP/M 3 nicht fit... Gruß, Holm
@Holm Super analysiert! Ich hatte mir schon einen Wolf bei meinem System gesucht, warum die Initialisierung mal geht und mal nicht. Da ich immer den Fehler auf der Hardwareseite gesucht hatte, habe ich irgendwann aufgegeben. Aufgrund deines Hinweises schnell das System auf den Tisch geholt und getestet. 0x3F = AC – unleserliche Terminalausgabe – auch RESET hilft nicht. 0x3F mit 00 beschrieben und RESET – alles ist gut!
Gast
#5807873
..danke für die Blümchen Joe..ich hatte mir schon Gedanken um meine Selbstgespräche gemacht :-) Ich habe mir indessen mal einen Überblick verschafft was Leo in den ASCI Treibern so macht..whow, er hat ein termios ioctl Interface angefangen zu implementieren. Ich hatte mich gewundert warum keine Flußkontrolle auf der Console funktioniert..ASCI1 kann ja nur xon/xoff ..aber das gibts noch nicht. Jetzt bin ich am Grübeln ob ich mich da ran traue.. Leos Programmierkünste in Z80 Assembler liegen noch 2 Etagen über meinen..mal gucken. Ich brauche ne Merkzelle, mal gucken in welcher Bank ich Platz dafür finde.. Gruß, Holm
Gast
#5807920
Holm T. schrieb: > Mir ist da noch was eingefallen, hier bei mc.net lief doch mal dieses > Retrocomputing Projekt auf einem FPGA, der Z1013 und ein Z1013 enthält > eine PIO...ergo: > > https://www.mikrocontroller.net/svnbrowser/redz0mb1e/src/vhdl/PIO.vhd?revision=104&view=markup&sortby=date > > gibts da eine Z80 PIO in VHDL. > > Ich habe mit FPGA noch nie was gemacht und mit CPLDs sehr begrenzt. Ich > werde mal versuchen den Autor zu kontaktieren ob er es für möglich hält > diese PIO einzeln in ein CPLD zu planzen, immerhin hat die PIO die > Möglichkeit IM2 zu unterstützen. Die Anfrage ist beim Autor angekommen ;-) Eine Antwort ging auch raus, allerdings an den holm auf robotrontechnik.de -> ich bin tatsächlich urlaubsreif. Also mit den üblichen Alt-CPLD's sehe ich wenig Chancen, da die wenig Flipflops bieten (1-2 pro pin) und lt. letztem Synthesereport 90 davon benötigt werden (und die Z1013 Retro PIO ist schon abgespeckt). Man könnte mal das Design für einen Xilinx XC950xxx durchlaufen lassen, ich erwartet das das höchstens für eine festkonfigurierte (bspw Richtung) PIO passt. Überlegenswert ist aber IMHO ein Lattice "Crossover" CPLD (MachXO?) mit Levelshiftern. Das wäre dann ein kleines 5V geeignetes CPLD. Preis für den kleinsten liegt bei 2-3$ der nächstgrösser (640LUT) so um die 10€, als levelshifter könnte man 24bit busswitches für ca. 3$ verwenden. IMHO wäre es überlegenwert da einen DIL-Module zu machen, das man auch für andere Peripherie wie TIMER verwenden könnte. Die 10 MHz sollten kein Problem sein. So ein DIL-Ersatz auf FPGA-Basis gibt es bereits als GODIL https://shop.trenz-electronic.de/de/Produkte/OHO-Elektronik/GODIL/ Der steht da aber mit ca. 50€ im Katalog und ist hier nur als Prinzipbeispiel verlinkt. Mit Selbstausbeutung und den passenden CPLD scheint mir als Forumsprojekt ein Z80-Peripherieersatz um 15€ möglich. MfG,
Gast
#5808041
Fpga K. schrieb: > Holm T. schrieb: >> Mir ist da noch was eingefallen, hier bei mc.net lief doch mal dieses >> Retrocomputing Projekt auf einem FPGA, der Z1013 und ein Z1013 enthält >> eine PIO...ergo: >> >> > https://www.mikrocontroller.net/svnbrowser/redz0mb1e/src/vhdl/PIO.vhd?revision=104&view=markup&sortby=date >> >> gibts da eine Z80 PIO in VHDL. >> >> Ich habe mit FPGA noch nie was gemacht und mit CPLDs sehr begrenzt. Ich >> werde mal versuchen den Autor zu kontaktieren ob er es für möglich hält >> diese PIO einzeln in ein CPLD zu planzen, immerhin hat die PIO die >> Möglichkeit IM2 zu unterstützen. > > Die Anfrage ist beim Autor angekommen ;-) > Eine Antwort ging auch raus, allerdings an den holm auf > robotrontechnik.de -> ich bin tatsächlich urlaubsreif. Na ob der wohl was damit anfangen kann...soviel ich weiß hat der auch da geantwortet. :-) > > Also mit den üblichen Alt-CPLD's sehe ich wenig Chancen, da die wenig > Flipflops bieten (1-2 pro pin) und lt. letztem Synthesereport 90 davon > benötigt werden (und die Z1013 Retro PIO ist schon abgespeckt). Man > könnte mal das Design für einen Xilinx XC950xxx durchlaufen lassen, ich > erwartet das das höchstens für eine festkonfigurierte (bspw Richtung) > PIO passt. der von mir als Beispiel genannte alt CPLD EPM7160 (MAX7000) hat 160 Makrozellen an 64 User I/O Pins und 3200 Gates. Probiere das mal mit der Synthese. > > Überlegenswert ist aber IMHO ein Lattice "Crossover" CPLD (MachXO?) mit > Levelshiftern. Das wäre dann ein kleines 5V geeignetes CPLD. Preis für > den kleinsten liegt bei 2-3$ der nächstgrösser (640LUT) so um die 10€, > als levelshifter könnte man 24bit busswitches für ca. 3$ verwenden. IMHO > wäre es überlegenwert da einen DIL-Module zu machen, das man auch für > andere Peripherie wie TIMER verwenden könnte. Die 10 MHz sollten kein > Problem sein. 10Mhz? 20! Eine 10Mhz PIO bekommt man noch zu kaufen. > > So ein DIL-Ersatz auf FPGA-Basis gibt es bereits als GODIL > https://shop.trenz-electronic.de/de/Produkte/OHO-Elektronik/GODIL/ > Der steht da aber mit ca. 50€ im Katalog und ist hier nur als > Prinzipbeispiel verlinkt. > > Mit Selbstausbeutung und den passenden CPLD scheint mir als > Forumsprojekt > ein Z80-Peripherieersatz um 15€ möglich. > > MfG, Das geht IMHO noch .. Gruß, Holm
Gast
#5808135
Ich hab ein Bisschen in den asii Treibern herum gehackt um ein IXOFF auf der ASCI1 hin zu kriegen. Irgendwie geht das langsam und bei mir sind temporär ein Haufen Ausrufezeichen (unter Wordstar!?) auf dem Bildschirm zu sehen die verschwinden wenn Alles einkopiert ist, aber es war möglich Joes scb.pas Programm mit Friß und Kotz aus dem Firefox nach Wordstar zu transportieren und das Ding fehlerfrei mit Turbo 3.02A zu kompilieren. Ich kann das auch direkt nach Turbo in den Editor fallen lassen syntaktisch ist das Programm einwandfrei und läßt sich kompilieren, aber wahrscheinlich auf Grund der Terminalemulation sind da die Zeilen treppenförmig seitlich versetzt. Ich habe minicom unter FreeBSD verwendet, mit 57600 8N1 und XON/XOFF Flußkontrolle. Wers mal probieren will, die wesentlichen Dateien sind im Anhang, Makefile oder Submit Dateien anpassen oder Dateinamen ändern. Leo wird da nochmal drüber gucken müssen, das ist mit Sicherheit nicht das Optimum, es erscheint mir zu langsam zu gehen beim paste aber besser als gar nicht... IXOFF in den iflags ist defaultmäßig eingeschaltet und nur bei ASCI1 aktiv... Gruß, Holm
Gast
#5808455
Holm T. schrieb: >> Die Anfrage ist beim Autor angekommen ;-) >> Eine Antwort ging auch raus, allerdings an den holm auf >> robotrontechnik.de -> ich bin tatsächlich urlaubsreif. > > Na ob der wohl was damit anfangen kann...soviel ich weiß hat der auch da > geantwortet. :-) Jup, angekommen, und die robotrontechnik-Hirnhälfte hat auch der mikrocontroller-Hirnhälfte Bescheid gegeben ;-) > der von mir als Beispiel genannte alt CPLD EPM7160 (MAX7000) hat 160 > Makrozellen an 64 User I/O Pins und 3200 Gates. > Probiere das mal mit der Synthese. 160 MC sind 160FF, das sieht nicht hoffnungslos aus(wie gesagt 90 im letzten report) Hab mir grad die passende Software aus dem Downloadkeller geholt (Quartus Web 13.0sp1) und schau mal was in der anstehenden Urlaubswoche in der Oberlausitz wird. Ich hab jetztz nicht den ganzen Briefmarkenthread gelesen, bin aber schon mal drüber gestolpert, das wohl für Stamp Features (M2-IRQ(?)) drin sein müßen, die so noch nicht implementiert sind. Ich bin die PIO nach der U855 Beschreibung im Buch von Kieser/Meder nach. Falls es davon Abweichungen gibt (ist halt nicht die Originale Z80-PIO) bitte Bescheid geben. MfG,
Gast
#5808497
Fpga K. schrieb: > Holm T. schrieb: > >>> Die Anfrage ist beim Autor angekommen ;-) >>> Eine Antwort ging auch raus, allerdings an den holm auf >>> robotrontechnik.de -> ich bin tatsächlich urlaubsreif. >> >> Na ob der wohl was damit anfangen kann...soviel ich weiß hat der auch da >> geantwortet. :-) > > Jup, angekommen, und die robotrontechnik-Hirnhälfte hat auch der > mikrocontroller-Hirnhälfte Bescheid gegeben ;-) > > >> der von mir als Beispiel genannte alt CPLD EPM7160 (MAX7000) hat 160 >> Makrozellen an 64 User I/O Pins und 3200 Gates. >> Probiere das mal mit der Synthese. > > 160 MC sind 160FF, das sieht nicht hoffnungslos aus(wie gesagt 90 im > letzten report) Hab mir grad die passende Software aus dem > Downloadkeller geholt (Quartus Web 13.0sp1) und schau mal was in der > anstehenden Urlaubswoche in der Oberlausitz wird. Ich habe wohl auch noch kleinere (7128,7064). > > Ich hab jetztz nicht den ganzen Briefmarkenthread gelesen, bin aber > schon mal drüber gestolpert, das wohl für Stamp Features (M2-IRQ(?)) > drin sein müßen, die so noch nicht implementiert sind. Ich bin die PIO > nach der U855 Beschreibung im Buch von Kieser/Meder nach. Falls es davon > Abweichungen gibt (ist halt nicht die Originale Z80-PIO) bitte Bescheid > geben. > > MfG, Nein, kein Grund zur Aufregung, die sind ausreichend identisch.. Ich bin neugierig was Du da zusammenbastelst. Gruß, Holm
Gast
#5808704
Hab gerade mal das System unter cp/m selbst gebaut, die Argumentliste für SLR180 im Submit-File wird zu lang, ich habe den Assemblerlauf in 2 Teile aufteilen müssen, sonst klappt das aber. Hat Jemand ein funktionierendes Linux Binary des LD80 und könnte mir das mal zukommen lassen? Der Linuxulator von FreeBSD funktioniert i.A. ganz gut, aber der auf meinem System gebaute LD80 wirft ne core, ich würde mich später drum kümmern wollen...aber hätte zwischenzeitlich gerne ein MAP file des BIOS. Man müßte mal probieren ob man den Kram auch mit dem SRLink oder dem L80 zusammen bekommt... Gruß, Holm
Holm T. schrieb: > Hab gerade mal das System unter cp/m selbst gebaut, die Argumentliste > für SLR180 im Submit-File wird zu lang, ich habe den Assemblerlauf in 2 > Teile aufteilen müssen, sonst klappt das aber. Wie wärs mit der I-Option? | The I option is a special case option used for indirect | command file input. If this option is used, it can be the only | option specified. The /I option causes SLR180 to read the file | <FILENAME>.SUB on the default drive (or the selected source drive) | for its command lines. This is similar to using SUBMIT and XSUB | except that 1) it is much faster, 2) it can be used from within | a SUBMIT file, 3) it can be used without XSUB and SUBMIT leaving | more RAM available for the assembly, and 4) it can be used while | A: is not the default drive. > Hat Jemand ein funktionierendes Linux Binary des LD80 und könnte mir das > mal zukommen lassen? Im Anhang. > aber der auf meinem System gebaute LD80 wirft ne core, ich würde > mich später drum kümmern wollen Darf ich fragen von wo Du den Sourcecode hast? Die originale Version 04b hatte bei mir die gleiche Krankheit. Das habe ich gefixed und noch ein paar Kleinigkeiten geändert. > ...aber hätte zwischenzeitlich gerne ein MAP file des BIOS. Der ld80 wird ja wirklich nur für das Mapfile verwendet. Das bios an sich wird mit dem Linker von DR (link80) generiert. Dieser produziert ein Symbolfile namens 'bnkbios3.sym'. Vielleicht reicht Dir das. > Man müßte mal probieren ob man den Kram auch mit dem SRLink oder dem L80 > zusammen bekommt... Mit dem L80 bestimmt nicht. Der link80 von DR wird benötigt, um das spezielle spr-Format (System Page Relocatable) zu erzeugen. Der SRLink kann das wahrscheinlich auch nicht. Zu den anderen Sachen werde ich heute auch noch was schreiben.
Gast
#5808952
Leo C. schrieb: > Holm T. schrieb: >> Hab gerade mal das System unter cp/m selbst gebaut, die Argumentliste >> für SLR180 im Submit-File wird zu lang, ich habe den Assemblerlauf in 2 >> Teile aufteilen müssen, sonst klappt das aber. > > Wie wärs mit der I-Option? > | The I option is a special case option used for indirect > | command file input. If this option is used, it can be the only > | option specified. The /I option causes SLR180 to read the file > | <FILENAME>.SUB on the default drive (or the selected source drive) > | for its command lines. This is similar to using SUBMIT and XSUB > | except that 1) it is much faster, 2) it can be used from within > | a SUBMIT file, 3) it can be used without XSUB and SUBMIT leaving > | more RAM available for the assembly, and 4) it can be used while > | A: is not the default drive. ..lohnt doch nicht.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
..der 2. Aufruf ist zeitmäßig nicht wirklich zu spüren, linken dauert länger. > > >> Hat Jemand ein funktionierendes Linux Binary des LD80 und könnte mir das >> mal zukommen lassen? > > Im Anhang. Danke. > >> aber der auf meinem System gebaute LD80 wirft ne core, ich würde >> mich später drum kümmern wollen > > Darf ich fragen von wo Du den Sourcecode hast? http://48k.ca/ld80.html ..das ist die 2. Version die ich zwischen den Fingern habe. Ich werde Deine Version mal testen. > Die originale Version 04b hatte bei mir die gleiche Krankheit. > Das habe ich gefixed und noch ein paar Kleinigkeiten geändert. Das hatte ich vor, aber ich spare mir die Arbeit gerne wenn das jemand Anderes schon getan hat. Allerdings ist es auch etwas krank 3 verschiedene Linker von 2 Betriebssystemen für ein und die selbe Sache zu verwenden... :-) > >> ...aber hätte zwischenzeitlich gerne ein MAP file des BIOS. > > Der ld80 wird ja wirklich nur für das Mapfile verwendet. Ich weiß. > Das bios an > sich wird mit dem Linker von DR (link80) generiert. Dieser produziert > ein Symbolfile namens 'bnkbios3.sym'. Vielleicht reicht Dir das. Wenn ich debuggen möchte wäre es schon hybsch zu wissen auf welchen Adressen die Symbole liegen. > >> Man müßte mal probieren ob man den Kram auch mit dem SRLink oder dem L80 >> zusammen bekommt... > > Mit dem L80 bestimmt nicht. Der link80 von DR wird benötigt, um das > spezielle spr-Format (System Page Relocatable) zu erzeugen. Der SRLink > kann das wahrscheinlich auch nicht. > > > Zu den anderen Sachen werde ich heute auch noch was schreiben. Das ist das Spannendste :-) Edit: hab mal einen LD80 aus Deinen Quellen gebaut:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
Wohl irgendwie inkompatibles getopt, ich komme nicht drum herum mir das anzugucken. Dein Binary machts anders hübsch: $ ld80 -o bnkbios3.o -ms bnkbios3.map -P 0 -D F000 bioskrnl.rel boot.rel chario.rel msgbuf.rel conbuf.rel asciih.rel drvtbl.rel sdio.rel cfio.rel stampf.rel move.rel time.rel fifo.rel utils.rel misc.rel mm.rel scb.rel ld80: Program too large $ Gruß, Holm
Holm T. schrieb: > Allerdings ist es auch etwas krank 3 verschiedene Linker von 2 > Betriebssystemen für ein und die selbe Sache zu verwenden... :-) Punkt für Dich. > Wenn ich debuggen möchte wäre es schon hybsch zu wissen auf welchen > Adressen die Symbole liegen. Ach, jetzt weiß ich wieder, warum das sym-File aus dem link80 (fast) nicht zu gebrauchen ist. Die entgültigen Adressen liegen da ja noch garnicht fest. Die Code- und Data-Segmentadresse aus dem fertigen cpm3.sys zu klauben, und damit den Linker nochmal laufen zu lassen, könnte aber auch mit link80 funktionieren. Moment... Es geht:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
Um das auch unter CP/M zu bauen brauchts dort nur noch dd und awk. ;-) Oder ein kleines Progrämmchen, das die Segmentadressen aus cpm3.sys ließt, und damit den Linker-Befehl zusammen baut. Das könnte ich morgen mal versuchen.
Interruptgesteuerte Serial-Treiber (ASCII) Holm T. schrieb: > Ich hab ein Bisschen in den asii Treibern herum gehackt um ein IXOFF auf > der ASCI1 hin zu kriegen. Respekt dafür, daß Du Dir den spärlich kommentierten Code antust. > Irgendwie geht das langsam und bei mir sind > temporär ein Haufen Ausrufezeichen (unter Wordstar!?) auf dem Bildschirm > zu sehen die verschwinden wenn Alles einkopiert ist, aber es war möglich > Joes scb.pas Programm mit Friß und Kotz aus dem Firefox nach Wordstar zu > transportieren und das Ding fehlerfrei mit Turbo 3.02A zu kompilieren. Wenn ich das richtig verstehe, funktioniert Deine XON/XOff-Erweiterung, aber die Übertragung ist ziemlich langsam. (Aber die Übertragung zu verlangsamen, ist ja auch der Sinn von Flußsteuerung.) Wenn ich mich richtig erinnere, bringt WS die ! auf den Bildschirm, wenn sein Inputbuffer überzulaufen droht, er also mit der Bearbeitung nicht nachkommt. Statt den zu aktualisieren, gibt er dann nur noch ! aus. Aber wenns funktioniert, ist ja erst mal gut. Mir persönlich gefallen die Polling-Schleifen für das TDRE-Bit nicht so gut, da dann Bedienung durch Interrupt und Polling gemischt sind. Könnte zu Race conditions führen. Und wenn nicht, in der Inputroutine (asci1_inp) ohne Interruptsperre pollen, ist das gleiche, als das XON ans Ende des Sedepuffers anzuhängen. TDRE wird an der Stelle ja erst dann 1, wenn die Interruptroutine alle Zeichen gesendet hat. Meiner Meinung nach müßten die XON/XOFF am Anfang des Sendepuffer eingefügt werden (umständlich bis schwierig, zumal der Sendepuffer ja auch voll sein kann), oder Kommuniktion von Sender und Empfänger-Routinen über Flags. Holm T. schrieb: > Ich habe mir indessen mal einen Überblick verschafft was Leo in den ASCI > Treibern so macht..whow, er hat ein termios ioctl Interface angefangen > zu implementieren. Angefangen schon 2015. Leider immer noch weit davon entfernt, fertig zu sein. Liegt sicher auch daran, daß es (für CP/M) etwas over-enginered ist. Heutzutage wird wahrscheinlich niemand mehr Programme für diese Schnittstelle schreiben. Aber ich wollte halt endlich mal ein hardwareunabhängiges Interface, über das man die Seriellen auch voll nutzen kann. In CP/M 2 gabs garnix, und in CP/M 3 kann man nur die Baudrate und Parity einstellen. Eigentlich gibts da auch noch XON/XOFF für die Output-Richtung. Aber die Implementierung ist völlig Banane. Und statt etwas völlig neues zu erfinden, habe ich mich umgeschaut, was es schon gibt... > Ich hatte mich gewundert warum keine Flußkontrolle > auf der Console funktioniert..ASCI1 kann ja nur xon/xoff ..aber das > gibts noch nicht. Es wird dich aber wahrscheinlich nicht wundern, daß es für die Einstellungen ein passendes stty.com gibt, mit dem dann auch Dein xon/xoff ein- und ausgeschaltet werden kann. Anhang nur als Binary, weil es natürlich auch noch nicht fertig ist, und der Sourcecode noch aufgeräumt werden muß.
Gast
#5809709
Leo C. schrieb: > Interruptgesteuerte Serial-Treiber (ASCII) > > Holm T. schrieb: >> Ich hab ein Bisschen in den asii Treibern herum gehackt um ein IXOFF auf >> der ASCI1 hin zu kriegen. > > Respekt dafür, daß Du Dir den spärlich kommentierten Code antust. :-) Naja, ich habs wenigstens versucht, ging ja sonst nicht weiter und ich hab bisher nicht viel beigetragen.. > >> Irgendwie geht das langsam und bei mir sind >> temporär ein Haufen Ausrufezeichen (unter Wordstar!?) auf dem Bildschirm >> zu sehen die verschwinden wenn Alles einkopiert ist, aber es war möglich >> Joes scb.pas Programm mit Friß und Kotz aus dem Firefox nach Wordstar zu >> transportieren und das Ding fehlerfrei mit Turbo 3.02A zu kompilieren. > > Wenn ich das richtig verstehe, funktioniert Deine XON/XOff-Erweiterung, > aber die Übertragung ist ziemlich langsam. (Aber die Übertragung zu > verlangsamen, ist ja auch der Sinn von Flußsteuerung.) Wenn ich mich > richtig erinnere, bringt WS die ! auf den Bildschirm, wenn sein > Inputbuffer überzulaufen droht, er also mit der Bearbeitung nicht > nachkommt. Statt den zu aktualisieren, gibt er dann nur noch ! aus. Ja, so siehts aus. Das was Wordstar da wegfängt, ist syntaktisch korrekt und vereinfacht doch ziemlich den Transport von Quellen auf das System. WS aktualisiert den Bildschirm wenn es sich dann mal ausgekäst hat und das File sieht dann auch korrekt aus. Was Turbopascal nicht paßt weiß ich aber (noch?) nicht. Anzumerken ist freilich das Wordstar deutlich mehr tut, als zur blanken Datenübertragung notwendig wäre, PIP auszuprobieren wäre wohl mal angebracht... > > Aber wenns funktioniert, ist ja erst mal gut. > Mir persönlich gefallen die Polling-Schleifen für das TDRE-Bit nicht so > gut, da dann Bedienung durch Interrupt und Polling gemischt sind. Könnte > zu Race conditions führen. Das war mir bewußt, deswegen wollte ich eigentlich die Interrupts auch an der Stelle sperren, ging aber nicht, das hing endlos und warum habe ich noch nicht untersucht. Dazu müßte ich mir die Senderoutine genauer ansehen, wahrscheinlich blockiert da was, wenn ein Senderpuffer leer - Int kam und dann der Puffer doch nicht leer ist, weil ein XOFF eingefügt wurde. Andererseits hat die Übertragungsstrecke vom CP/M zu Host zu der Zeit eigentlich kaum Last. > Und wenn nicht, in der Inputroutine > (asci1_inp) ohne Interruptsperre pollen, ist das gleiche, als das XON > ans Ende des Sedepuffers anzuhängen. TDRE wird an der Stelle ja erst > dann 1, wenn die Interruptroutine alle Zeichen gesendet hat. TDRE sollte inaktiv werden wenn der Interne Puffer (4 Bytes?) leer ist, das hatte ich als die früheste Möglichkeit angesehen überhaupt Bescheid zu geben, das ich "die Nase voll" habe. Streng genommen müßte man einen indessen auftretenden Interrupt wieder entschärfen wenn man XOFF eingeschmuggelt hat. Ich stehe aber zugegebenermaßen nicht tief genug in der Materie.. evtl. solltest Du da mal sehen was Du machen kannst. Ggf. kann man TIE Rücksetzen wenn TDRE nicht gesetzt ist um die Auslösung des Ints zu verhindern, nach XOFF dann wieder einschalten? Eine Race Condition bleibts trotzdem.. > > Meiner Meinung nach müßten die XON/XOFF am Anfang des Sendepuffer > eingefügt werden (umständlich bis schwierig, zumal der Sendepuffer ja > auch voll sein kann), oder Kommuniktion von Sender und > Empfänger-Routinen über Flags. Das war der Sinn des Pollings, ich wollte eigentlich verhindern das der Sendepuffer in der ASCI vom Interrupt nachgefüllt wird, um frühest möglich das XOFF einzuschmuggeln, ohne den eigenen Senderpuffer im RAM umräumen zu müssen, was IMHO auch zu viel Performance fressen würde. > > Holm T. schrieb: >> Ich habe mir indessen mal einen Überblick verschafft was Leo in den ASCI >> Treibern so macht..whow, er hat ein termios ioctl Interface angefangen >> zu implementieren. > > Angefangen schon 2015. Leider immer noch weit davon entfernt, fertig zu > sein. Liegt sicher auch daran, daß es (für CP/M) etwas over-enginered > ist. Das war zugegebenermaßen auch einer meiner Gedanken.. > Heutzutage wird wahrscheinlich niemand mehr Programme für diese > Schnittstelle schreiben. Aber ich wollte halt endlich mal ein > hardwareunabhängiges Interface, über das man die Seriellen auch voll > nutzen kann. In CP/M 2 gabs garnix, und in CP/M 3 kann man nur die > Baudrate und Parity einstellen. Eigentlich gibts da auch noch XON/XOFF > für die Output-Richtung. Aber die Implementierung ist völlig Banane. > Und statt etwas völlig neues zu erfinden, habe ich mich umgeschaut, was > es schon gibt... Das ist sicher nicht der falsche Weg, allerdings erzeugt er halt ordentlich CPU Last. > >> Ich hatte mich gewundert warum keine Flußkontrolle >> auf der Console funktioniert..ASCI1 kann ja nur xon/xoff ..aber das >> gibts noch nicht. > > Es wird dich aber wahrscheinlich nicht wundern, daß es für die > Einstellungen ein passendes stty.com gibt, mit dem dann auch Dein > xon/xoff ein- und ausgeschaltet werden kann. Anhang nur als Binary, weil > es natürlich auch noch nicht fertig ist, und der Sourcecode noch > aufgeräumt werden muß. Na mal sehen was das so macht.. vllt. heute Abend. Momentan stochere ich in Headern für den arm-none-eabi-gcc herum.. Gruß, Holm
Gast
#5809777
..hab PIP ausprobiert, geht deutlich schneller (so wie man sich das vorstellt) allerdings klaut mir das die Linefeeds aus dem Datenstrom und ich habe trotz [O] und [Qendestring] noch keine Möglichkeit gefunden das zu verhindern... Muß erst mal weiter arbeiten.. BTW: die 10 Rückverdrahtungsplatinen aus China sind heute gekommen, Donnerstag bestellt, Montag hier für 20 Euro..verrückte Welt.. Es sind allerdings keine mehr übrig. Gruß, Holm
Gast
#5810342
Holm T. schrieb: > Fpga K. schrieb >>> der von mir als Beispiel genannte alt CPLD EPM7160 (MAX7000) hat 160 >>> Makrozellen an 64 User I/O Pins und 3200 Gates. >>> Probiere das mal mit der Synthese. >> >> 160 MC sind 160FF, das sieht nicht hoffnungslos aus(wie gesagt 90 im >> letzten report) Hab mir grad die passende Software aus dem >> Downloadkeller geholt (Quartus Web 13.0sp1) und schau mal was in der >> anstehenden Urlaubswoche in der Oberlausitz wird. > > Ich habe wohl auch noch kleinere (7128,7064). > Habs jetzt für den 160 angepasst und durchgefittet. Das passt zwar mit 141 Macrocells ins Device und ist mit 80 MHz ausreichend schnell, dafür drückt der Schuh beim freiwählbaren Umschalten der Portrichtung. Der CPLD gestattet lediglich 6 unabhängige Output enable signale, so dass es im Einzelbitbetrieb nicht möglich ist, für jede Portleitung die Richtung durch die SW zu ändern. Bytemodus kein Problem, ebenso kein Problem bei Einzelbit mit "festverdrahteter" Richtung. (wie beispielsweise beim Z1013 mit seinem festverdrahteten Port B.) MfG,
Die Init-Misere (INIDONE) Joe G. schrieb: > @Holm > Super analysiert! Dem schließe ich mich gerne an. Holm T. schrieb: > Leo Du hast offensichtlich mit einem ROM Boot der Z180 experimentiert, Nur dieser Schluß stimmt nicht ganz. Ich habe das fallweise Überspringen der Initialisierung eingebaut, damit ich den Bootvorgang und das Bios mit dem DDTZ aus dem AVR-Flash debuggen kann. Wenn das Bios alle Schnittstellen neu initialisiert, hängt es mir den Debugger ab. Die Implementierung ging aber offensichtlich daneben. Anfangs war es nicht ganz so schlimm, da das ganze Byte auf der Adresse 3Fh auf 80h geprüft wurde. Im Changlog vom Juni 2016 findet sich dieser Eintrag:
1 | |
Und seit dem wird in der ASCI Initialisierung nur noch das Bit 7 getestet. > So wie Du das machst kann ja da nur 080h oder 0 drin stehen, was bei > einem leeren Speicher mit 0ffh oder auch zufälligem Inhalt eine hohe > Chance ergibt, das die Initialisierung weg fällt und man wie ich mit > obskuren Taktfrequenzen und Baudraten kämpft. Tut mir leid. Vielleicht habe ich die Größe des Problems nicht bemerkt, weil ich den Speicher vor dem Start oft komplett mit 00 oder 76h fülle. Andererseits hatte ich selbst schon das Problem und dann immer eine Weile gebraucht, um dahinter zu kommen. Leider bin ich nicht auf die Idee gekommen, das es anderen genau so gehen könnte. Ok, ich werde die Stelle so umbauen, daß die Initialisierung nur noch dann ausgelassen wird, wenn man das wirklich braucht. > Andererseits scheint auch > das ldrbios.180 nach erfolgreicher Initialisierung das Flag in INIDONE > nicht zu setzen... Vielleicht sollte das Flag besser DONTINIT heißen. Für das ldrbios hatte ich keinen Debugger gebraucht. Das, und der zugehörige cpmldr wird ja eh nur gebraucht, wenn man von CF-Karte booten möchte. > das ist wohl ne angefangene Baustelle (wie der Name > -dirthy auch suggeriert). Das -dirty kommt von der Versionsverwaltung [1]. Es bedeutet, daß die Version, die gerade gebaut wird, nicht im VCS eingecheckt ist. > Ich schlage vor nicht 7 Bit einsparen zu wollen und ein Flag wie 55h, > 0aah, oder 5ah, 0a5h zu setzen, das macht eine Fehlfunktion etwas > unwahrscheinlicher.... s.o. > andererseits ist das in boot.180 eher fehl am > Platz, da das Label boot: ein Kaltstart Entry sein sollte und ein > Kaltstart davon ausgehen sollte das initialisiert werden muß. Aber nicht, wenn man debuggen will... > Hab ich dabei was übersehen? Was wolltest Du einsparen? Ich wollte wohl mehrere Varianten der Initialisierungsauslassung mit Flags in einem Byte realsieren. [1] genauer: Autorevision: https://autorevision.github.io/
Holm T. schrieb: > BTW: die 10 Rückverdrahtungsplatinen aus China sind heute gekommen, > Donnerstag bestellt, Montag hier für 20 Euro..verrückte Welt.. > Es sind allerdings keine mehr übrig. Aber wirklich. Hier kostet ja allein der Versand schon fast so viel. Und schade, ich hatte mich inzwischen dazu durchgerungen, auch eine haben zu wollen.
Gast
#5810376
Fpga K. schrieb: > Holm T. schrieb: >> Fpga K. schrieb >>>> der von mir als Beispiel genannte alt CPLD EPM7160 (MAX7000) hat 160 >>>> Makrozellen an 64 User I/O Pins und 3200 Gates. >>>> Probiere das mal mit der Synthese. >>> >>> 160 MC sind 160FF, das sieht nicht hoffnungslos aus(wie gesagt 90 im >>> letzten report) Hab mir grad die passende Software aus dem >>> Downloadkeller geholt (Quartus Web 13.0sp1) und schau mal was in der >>> anstehenden Urlaubswoche in der Oberlausitz wird. >> >> Ich habe wohl auch noch kleinere (7128,7064). >> > > Habs jetzt für den 160 angepasst und durchgefittet. Das passt zwar mit > 141 Macrocells ins Device und ist mit 80 MHz ausreichend schnell, dafür > drückt der Schuh beim freiwählbaren Umschalten der Portrichtung. Der > CPLD gestattet lediglich 6 unabhängige Output enable signale, so dass es > im Einzelbitbetrieb nicht möglich ist, für jede Portleitung die Richtung > durch die SW zu ändern. Bytemodus kein Problem, ebenso kein Problem bei > Einzelbit mit "festverdrahteter" Richtung. (wie beispielsweise beim > Z1013 mit seinem festverdrahteten Port B.) > MfG, Hmm..Volker das ist zwar irgendwie traurig, aber dann wohl nicht zu ändern, dann gibts eben eine PIO mit im Bitbetrieb 2 festen Eingangsbits, immer noch deutlich besser als gar keine Schnittstelle oder aus TTL Logik bestehend. Wie sieht das denn bei den von Dir gewöhnten Xilinx Chips aus? Hast Du Lust spaßeshalber mal zu checken ob die 8255 auch paßt? http://www.cpcwiki.eu/index.php/VHDL_implementation_of_the_8255_PIO Ich denke aber die Restriktion wird auch dort zuschlagen und das Ding hat noch mehr Portbeine. Gruß, Holm
Gast
#5810389
Leo C. schrieb: > Die Init-Misere (INIDONE) > > Joe G. schrieb: >> @Holm >> Super analysiert! > > Dem schließe ich mich gerne an. > > Holm T. schrieb: >> Leo Du hast offensichtlich mit einem ROM Boot der Z180 experimentiert, > > Nur dieser Schluß stimmt nicht ganz. > Ich habe das fallweise Überspringen der Initialisierung eingebaut, damit > ich den Bootvorgang und das Bios mit dem DDTZ aus dem AVR-Flash debuggen > kann. Wenn das Bios alle Schnittstellen neu initialisiert, hängt es mir > den Debugger ab. Ok, das ist freilich auch ein Grund. > Die Implementierung ging aber offensichtlich daneben. Anfangs war es > nicht ganz so schlimm, da das ganze Byte auf der Adresse 3Fh auf 80h > geprüft wurde. Im Changlog vom Juni 2016 findet sich dieser Eintrag: >
1 | |
2 | |
..das habe ich gelesen, konnte das aber nicht deuten, speziell wegen der "1" der "81" und den ands die ich so gefunden hatte. > Und seit dem wird in der ASCI Initialisierung nur noch das Bit 7 > getestet. > >> So wie Du das machst kann ja da nur 080h oder 0 drin stehen, was bei >> einem leeren Speicher mit 0ffh oder auch zufälligem Inhalt eine hohe >> Chance ergibt, das die Initialisierung weg fällt und man wie ich mit >> obskuren Taktfrequenzen und Baudraten kämpft. > > Tut mir leid. Kein Grund zur Aufregung, Du hast shließlich den ganzen Senf geschrieben, da darf doch auch mal was daneben gehen. Ich hatte allerdings zugegebenermaßen langsam an mir gezweifelt, ich habe ja verschiedene Prozessoren, Z18010, dann diesen ominösen SL1960 und dann die späteren Z8S180 und irgendwie ging immer mal was, aber manchmal mit 3,88 Mhz CPU Takt..den ich mir nun gar nicht erklären konnte...deswegen hab ich nachgeguckt. > Vielleicht habe ich die Größe des Problems nicht bemerkt, > weil ich den Speicher vor dem Start oft komplett mit 00 oder 76h fülle. Das hab ich natürlich eher nicht gemacht. Das erinnert mich an ein gekipptes Bit in einem Eprom wodurch die Speicherinitialisierung eines alten Homemade-Computers (vor der Wende, aufgebohrter MC80) den Speicher mit 00 und nicht mit ff initialiserte. Ich habe mich mehrere Wochen gewundert wieso der Basic Interpreter beim Start abstürzte.. Ich habe den Eprom noch richtig ausgelesen nach dem die Ksite Jahrzehnte lang stand, im Disassembler war Alles korrekt.. > Andererseits hatte ich selbst schon das Problem und dann immer eine > Weile gebraucht, um dahinter zu kommen. Leider bin ich nicht auf die > Idee gekommen, das es anderen genau so gehen könnte. > Ok, ich werde die Stelle so umbauen, daß die Initialisierung nur noch > dann ausgelassen wird, wenn man das wirklich braucht. > >> Andererseits scheint auch >> das ldrbios.180 nach erfolgreicher Initialisierung das Flag in INIDONE >> nicht zu setzen... > > Vielleicht sollte das Flag besser DONTINIT heißen. > Für das ldrbios hatte ich keinen Debugger gebraucht. Das, und der > zugehörige cpmldr wird ja eh nur gebraucht, wenn man von CF-Karte booten > möchte. ...das ist im Endffekt gehuppt wie gesprungen... > >> das ist wohl ne angefangene Baustelle (wie der Name >> -dirthy auch suggeriert). > > Das -dirty kommt von der Versionsverwaltung [1]. Es bedeutet, daß die > Version, die gerade gebaut wird, nicht im VCS eingecheckt ist. > >> Ich schlage vor nicht 7 Bit einsparen zu wollen und ein Flag wie 55h, >> 0aah, oder 5ah, 0a5h zu setzen, das macht eine Fehlfunktion etwas >> unwahrscheinlicher.... > > s.o. > >> andererseits ist das in boot.180 eher fehl am >> Platz, da das Label boot: ein Kaltstart Entry sein sollte und ein >> Kaltstart davon ausgehen sollte das initialisiert werden muß. > > Aber nicht, wenn man debuggen will... > >> Hab ich dabei was übersehen? Was wolltest Du einsparen? > > Ich wollte wohl mehrere Varianten der Initialisierungsauslassung mit > Flags in einem Byte realsieren. > > > [1] genauer: Autorevision: https://autorevision.github.io/ Ok...mach nur wie Du denkst, bis jetzt wars hübsch.. :-) Gruß, Holm
Hallo, Durch das Backplane bin ich auch aus dieses Projekt gestossen: https://www.retrobrewcomputers.org/doku.php?id=boards:sbc:z180_mark_iv:z180_mark_iv Hat irgendjemand Interesse an Leiterplatten? Ich würde 5 Stück bestellen (kosten zusammen ca 40EUR, 4-fach Multilayer) Viele Grüße Günther
Gast
#5810923
Falls Du Dich noch umentscheidest, so Eins würde ich nehmen: https://www.retrobrewcomputers.org/doku.php?id=boards:sbc:cpu280:start Gruß, Holm
Ich denke mal drüber nach, die Software die Tilmann damals entwickelt, war schon ziemlich gut, allein dafür lohnt sich der Aufbau, automatische Diskettenformaterkennung usw. Allerdings waren die ersten CPUs fehlerhaft und es sind ZIP RAM Bausteine und GALs drauf. Vielleicht mache ich auch mal eine neue Z180 Platine, aber das wird noch dauern.
Gast
#5811209
Günther S. schrieb: > Ich denke mal drüber nach, die Software die Tilmann damals entwickelt, > war schon ziemlich gut, allein dafür lohnt sich der Aufbau, automatische > Diskettenformaterkennung usw. Allerdings waren die ersten CPUs > fehlerhaft und es sind ZIP RAM Bausteine und GALs drauf. Vielleicht > mache ich auch mal eine neue Z180 Platine, aber das wird noch dauern. Die Gals brenne ich Dir ..aber ob ich ausreichend RAMs für Dich und für mich habe, weiß ich nicht. Da sind noch andere Eier drauf, der FDC ist wohl ziemlich kitzlig. Ob die CPU Fehler hat? Sagen wir mal so, es ist zumindest kein undurchsichtiges Management Interface mit möchtegern-USB zu Spionagezwecken drin... Ich habe noch 2 Z28010 da liegen. Gruß, Holm
Zur BIOS Symbol-Tabelle Leo C. schrieb: > Die Code- und Data-Segmentadresse aus dem fertigen cpm3.sys zu klauben, > und damit den Linker nochmal laufen zu lassen, könnte aber auch mit > link80 funktionieren. Moment... Wenn man die Segment-Basisadressen aus cpm3.sys lesen kann/soll/muss, dann kann man auch das SYM-File, das der DR Linker schon erzeugt hat, gleich auch noch lesen, und die Segmente selbst addieren. Im Anhang ist das Programm dafür, als CP/M (HI-TECH C) und Linux (GCC) Binary. Source kommt noch. Ohne Argumente nimmt es die CP/M Dateinamen: BNKBIOS3.SYM und CPM3.SYS für Input, und BNKBIOS3.ASY für Output. Wie üblich, -h für Hilfe. Die Methode ist nicht ganz zuverlässig, da absolute Symbole, die zufällig im PSEG oder DSEG liegen, auch convertiert werden. Kommt z.Zt. aber nicht vor.
Gast
#5813352
Danke LEO..ich werds mal testen, der ARM-Scheiß funktioniert endlich. Hast Du die Xon/Xoff Geschichte mal ausprobiert? Gruß, Holm
Gast
#5813445
Dein Linux Binary läuft unter meinem FreeBSD: F915 ?AUXI F936 ?AUXIS F912 ?AUXO F939 ?AUXOS FBB6 ?BANK F951 ?BNKSL F900 ?BOOT FB21 ?CI FB18 ?CINIT FB27 ?CIST FB2D ?CO F909 ?CONIN F90C ?CONO F933 ?CONOS F906 ?CONST FB33 ?COST F93F ?DEVIN F942 ?DRTBL F93C ?DVTBL F948 ?FLUSH F918 ?HOME AE2E ?INIT FA65 ?LDCCP F90F ?LIST F92D ?LISTS F945 ?MLTIO F94B ?MOV FBAA ?MOVE F927 ?READ FA9D ?RLCCP F930 ?SCTRN F91B ?SLDSK F954 ?STBNK F924 ?STDMA F921 ?STSEC F91E ?STTRK F94E ?TIM FBFE ?TIME F903 ?WBOOT F92A ?WRITE F957 ?XMOV FBA5 ?XMOVE ADFB @ADRV FE26 @AIVEC FE28 @AOVEC FA64 @CBNK FE22 @CIVEC AE04 @CNT FE24 @COVEC FAFF @CTBL AE03 @DBNK AE01 @DMA FB43 @DTBL FE2A @LOVEC FE62 @MXTPA ADFA @OP ADFC @RDRV ADFF @SECT ADFD @TRK ADF8 @XDPH AD00 BOOT FDD7 BS$STAC AE05 HWINIT FC4A IJPHL FB1B IOCTL FB85 STAMPF C5A2 CPU_FRQ FAFB F_CPU C244 GS_RTC C584 INTINIT C3C6 IOINI1L AFB7 MSGINIT C45B PR.CRLF C490 PR.DECL C453 PR.INLN C2A0 PRT0INI B18C AS0_DEV B2A5 AS1_DEV B13C FF_DEV FCF2 _B0CALL C2E2 BUFINIT C2DA FIFOLST FCC1 HWL2PHY AF77 MRX.FIF B036 MSG.REC B0D1 MSG.SM AF33 MTX.FIF FCE2 PHY2LOG B0EE CI.FIFO B112 CO.FIFO C31E FF_EMPT C365 FF_FULL C328 FF_GET C373 FF_PUT C3D6 ADD_HLA C5EF B_LD_A C60D B_ST_A C3DB DIV32_R C341 FF_GECH C38E FF_PUTH FD45 ISV_SW B197 S0.INBU B21B S0.OUTB B2B0 S1.INBU B334 S1.OUTB BAD9 CF0 BAFC CF1 BB1F CF2 BB42 CF3 B731 SD0 B754 SD1 B777 SD2 B79A SD3 B7BD SD4 B7E0 SD5 B803 SD6 B826 SD7 FCA3 BNK2PHY C52E PR.ERRO C43A PR.IDX C428 ?PMSG C281 GSTIMER FC93 BNK2LOG FE58 @DATE FE5A @HOUR FE5B @MIN FE5C @SEC C3E5 DIV32_1 C28B GTIMER FD85 I$STACK C3AC FF_CNT FE4B @ERMDE C3B7 IOINIML C467 PHEX2 C462 PHEX4 C487 PR.DEC C5D1 GET_TMR C5F3 B_LD_HL C612 B_ST_HL FC8D MMUINIT FE5F ?ERJMP FE57 @BFLGS FE35 @BNKBF FE3C @CRDMA FE3E @CRDSK FE51 @ERDSK FE43 @FX FE54 @MEDIA FE4A @MLTIO FE41 @RESEL FE44 @USRCD FE3F @VINFO Gruß, Holm
Holm T. schrieb: > Dein Linux Binary läuft unter meinem FreeBSD: Gut, allerdings habe ich nochmal etwas nachgebessert. Die Linuxversion produziert jetzt auch CP/M Zeilenenden (CRLF), und hängt den EOF-Marker an. Ohne das sah die Symboltabelle im CP/M komisch aus, und der Debugger konnte sie nicht laden. In dem Zip sind der Quellcode und die beiden Binaries.
Holm T. schrieb: > Hast Du die Xon/Xoff Geschichte mal ausprobiert? Hab's jetzt mal ins Repo integriert. Das IXOFF-Flag habe ich von iflags (wo es ja eigentlich hingehört) nach fflags verschoben. Dort liegt das Flag, weil die Flag-Speicher bei mir nur jeweils ein Byte groß sind (eh nur 3) und iflags schon voll war. Jetzt klappt auch das Ein- und Ausschalten mit stty. Richtig getestet habe ich aber noch nicht, und das werde ich leider diese und die nächste Woche auch nicht schaffen.
Gast
#5819115
Holm T. schrieb: > Fpga K. schrieb: >> Der >> CPLD gestattet lediglich 6 unabhängige Output enable signale, so dass es >> im Einzelbitbetrieb nicht möglich ist, für jede Portleitung die Richtung >> durch die SW zu ändern. Bytemodus kein Problem, ebenso kein Problem bei >> Einzelbit mit "festverdrahteter" Richtung. (wie beispielsweise beim >> Z1013 mit seinem festverdrahteten Port B.) >> MfG, > > > Hmm.. das ist zwar irgendwie traurig, aber dann wohl nicht zu > ändern, > dann gibts eben eine PIO mit im Bitbetrieb 2 festen Eingangsbits, immer > noch deutlich besser als gar keine Schnittstelle oder aus TTL Logik > bestehend. Denke ich auch, und so häufig sollte man die Richtung auch nicht ändern, notfalls muss halt der CPLD neu programmiert werden. > Wie sieht das denn bei den von Dir gewöhnten Xilinx Chips > aus? Lt. Datenblatt f. XC9500 etwas schlechter: " There are 2 global output enables for devices with up to 144 macrocells, and 4 global output enables for the rest of the devices." Dagegen solltes es bei den FPGA's (Spartan2,3,...) kein Problem sein, jedes Pin individuell zu schalten. Allerdings können FPGA's eher keine 5V ohne Levelshifter/Schutzmassnahmen ab. > Hast Du Lust spaßeshalber mal zu checken ob die 8255 auch paßt? > > http://www.cpcwiki.eu/index.php/VHDL_implementation_of_the_8255_PIO Erst mal nicht, hab jetzt erstmal die PIO so zerlegt, das es a) einfacher sein sollte Fehlendes zu ergänzen und b) teile für CTC und SIO abzuleiten. Falls das Projekt genügend "Eigenleben" entwickelt werde ich es als eigenes Projekt aus diesem Thread abspalten. In 1500 Posts zu navigieren ist am Smartphone nicht so einfach. PS: Wahrscheinlich bin ich am kommenden Wochenende beim "Computer Vintage Festival" in München dabei. Vielleicht trifft man ja jemanden mit ähnlichen themen... MfG,
Holm T. schrieb: > Hast Du die Xon/Xoff Geschichte mal ausprobiert? Jetzt aber. Meiner Meinung nach funktioniert Dein XON/XOFF korrekt, bis auf einen Schönheitsfehler. Gelegentlich wurden 2 oder 3 XOFF hintereinander gesendet. Beim Test mit WS war es immer nur das erste XOFF, das verdreifacht wurde (Bild 1). Etwas besser wurde es, nachdem ich den Test, ob XOFF gesendet werden soll, von "> 75% Buffer voll" auf == umgestellt hatte. Trotzdem habe ich das direkte Senden von XON und XOFF in den Inputroutinen auf Setzen von Flags umgestellt, die dann in der Sende-Interruptroutine abgearbeitet werden. Das ist imho sauberer, und XON wird auch dann sofort gesendet, wenn im Sendepuffer noch Zeichen sind. Der aktuelle Stand ist auf meinem Server im Branch "asci-int-driver" zu finden. Holm T. schrieb: > Irgendwie geht das langsam und bei mir sind > temporär ein Haufen Ausrufezeichen (unter Wordstar!?) auf dem Bildschirm > zu sehen die verschwinden wenn Alles einkopiert ist, aber es war möglich > Joes scb.pas Programm mit Friß und Kotz aus dem Firefox nach Wordstar zu > transportieren und das Ding fehlerfrei mit Turbo 3.02A zu kompilieren. Man kann also sagen, daß WS für Dateitransfer reichlich ungeeignet ist. Dafür ist er aber für die Eingabe durch einen Menschen sehr gut optimiert (besser als der Turbo-Editor), und wenn er mal nicht hinterher kommt, nervt er den Tipper durch die !!! und Gepiepse (Bild 2, nach jedem ! kommt auch noch ein <BEL>). Der Piepser ist bei mir abgeschaltet, deswegen habe ich das auch erst in der Aufzeichnung gesehen. In Bild 3 sieht man die Übertragung einer 260 Byte kurzen Datei mit 115200 Baud. Die Übertragung würde ohne XOFF ca. 23ms dauern. An WS wird sie in 3 kurzen Blöcken, mit dazwischen liegenden langen XOFF-Pausen, in denen WS hauptsächlich mit ! und Piepsen beschäftigt ist, gesendet. Das dauert insgesammt ca. 2,8 Sekunden. WS braucht danach nochmal ca. 2,6s, unter Rufen und Piepsen den Empfangsbuffer zu leeren, den Bildschirm aufzuräumen und die Statuszeile zu aktualisieren. Man kann das langsam finden, aber ich z.B. würde es nicht schaffen, 260 Zeichen in 3-5 Sekunden einzutippen. :-) > Ich kann das auch direkt nach Turbo in den Editor fallen lassen > syntaktisch ist das Programm einwandfrei und läßt sich kompilieren, aber > wahrscheinlich auf Grund der Terminalemulation sind da die Zeilen > treppenförmig seitlich versetzt. Das liegt wohl an der Autoindent-Funktion des TP-Editors. Ganz schlimm war es bei mir, wenn Autointent aktiv, und in der Datei auch noch Tabs enthalten waren. TP hat zwar nicht die lästige !-Pieps-Warnmimik, aber die Bildschirmausgeabe ist nicht so optimiert, wie bei WS. Im LA war zu sehen, daß TP vor jedem einzelnen Zeichen den Cursor zwei mal positioniert, und nach dem Zeichen die Zeile bis zum Ende löscht.
Gast
#5828049
Danke Leo das Du wiedermal Zeit investiert hast. Ich hatte schon am Repository gemerkt das sich was verändert hatte :-) Sicher funktioniert Deine Flag-Geschichte mit Behandlung in der ISR besser, Du kennst ja den Code besser und ich hatte da schon meine Sorgen mich rein zu denken. Zu WS/TP..ja sicher..das sind aber eigentlich nur Notlösungen. PIP sollte auch von der Console auf ein File kopieren können, seltsamer Weise läßt das aber bei mir Linefeeds verschwinden so das die Textdatei dann eine einzige lange Zeile mit Carriage-Return drin ist, das Kopieren selbst ist freilich deutlich schneller. (Ein Filter sollte das beheben können, aber wo kommt das her?) Ich habe aber nicht näher untersucht woran das liegt oder ob der von mir verwendete Terminal-Emulator (seyon) Schuld ist, IMHO ging es aber mit miniterm auch nicht anders. Ich brauche noch ein paar Tage ehe ich mich da wieder ran setzen kann.. >TP hat zwar nicht die lästige !-Pieps-Warnmimik, aber die >Bildschirmausgeabe ist nicht so optimiert, wie bei WS. Im LA war zu >sehen, daß TP vor jedem einzelnen Zeichen den Cursor zwei mal >positioniert, und nach dem Zeichen die Zeile bis zum Ende löscht. ..na toll...war wohl die Billigvariante um einen konsistenten Bildschirminhalt anzuzeigen.... Evtl. sollte man das mal (auch bei WS) mit verschiedenen Terminalemulationen ausprobieren, evtl. ist die gerade verwendete hinsichtlich der Sequenzen etwas "vergriesgnaddelt"... Gruß, Holm
> PIP > sollte auch von der Console auf ein File kopieren können, seltsamer > Weise läßt das aber bei mir Linefeeds verschwinden so das die Textdatei > dann eine einzige lange Zeile mit Carriage-Return drin ist, das Kopieren > selbst ist freilich deutlich schneller. Kann ich hier nicht nachvollziehen. Ich habe gerade 3 Versionen einer Datei mit verschiedenen Zeilenenden mit PIP kopiert: 1. CR Diese Variante habe ich auch für die WS- und TP-Tests genommen. 2. CRLF 3. LF Alle 3 hat pip unverändert gespeichert. Wenn man sich die Dateien mit TYPE anschaut, sieht nur Nr. 2 gut aus (Überraschung). Bei Nr. 1 werden alle Zeilen überenander gedruckt (ach), und Nr. 3 sieht komisch aus.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Gast
#5828217
Ja schon möglich Leo, ich schrieb ja das ich es nicht für unwahrscheinlich halte das seyon das versaut, das CR/LF Handling ist da unvollständig implementiert. Ich werde mir die uralte Software wohl mal auf den Tisch ziehen müssen, außer mir ändert dort wohl Niemand mehr was. Ein "richtig gutes" Terminalprogramm als Alternative ist mir aber auch nicht bekannt, schon gar nicht eins, das auch noch ADM3A unterstützen würde..und das könnte ich gut gebrauchen (wegen P8000 WEGA und CP/M) Cutecom ist hybsch für Debugging, aber sonst nicht zu gebrauchen..Minicom..naja.. Ich werde hier mit PIP noch mal testen, einen LA kann ich auch dran hängen. Gruß, Holm
> einen LA kann ich auch dran hängen. Es gibt auch noch jpnevulator: https://jpnevulator.snarl.nl/
Holm T. schrieb: > Ein "richtig gutes" Terminalprogramm als Alternative ist > mir aber auch nicht bekannt, schon gar nicht eins, > das auch noch ADM3A unterstützen würde.. Gibt es ein gutes Dokument, wo die ADM3A-Sequenzen aufgelistet sind? Ich hatte mal gesucht, aber nichts Gutes gefunden. VT52 und VT100 findet man zuhauf...
Leo C. schrieb: > Gut genug? Ja, danke!
Gast
#5828580
S. R. schrieb: > Holm T. schrieb: >> Ein "richtig gutes" Terminalprogramm als Alternative ist >> mir aber auch nicht bekannt, schon gar nicht eins, >> das auch noch ADM3A unterstützen würde.. > > Gibt es ein gutes Dokument, wo die ADM3A-Sequenzen aufgelistet sind? Ich > hatte mal gesucht, aber nichts Gutes gefunden. VT52 und VT100 findet man > zuhauf... Naja, die Termcap oder Terminfo Dateien gängiger Unix Systeme sollten da ausreichend Daten enthalten eine halbwegs brauchbare Emulation auf die Beine stellen zu können... Ansonsten ist das sicher auch aufzutreiben (Bitsavers?).. edit: Uups..ich bin spät dran... Gruß, Holm
Der Serial-Treiber kann jetzt auch für die Senderichtung XON/XOFF Flußsteuerung. Könnte für Peripheriegräte (Drucker, Stanze, ...) nützlich sein. Theoretisch auch für die Konsole. Man könnte längere Bildschirmausgaben mit CTRL-S (XOFF) anhalten, und mit CTRL-Q weiterlaufen lassen. Praktisch ist das kaum nutzbar, da man die Steuercodes für Wordstar und Konsorten und für die CCP Befehlszeile haben möchte.
Gast
#5830395
Danke Leo...das wäre meine nächste Aktion gewesen :-) Gruß, Holm
Aha, dann habe ich ja einen Tester. Meine eigenen Tests waren bisher recht oberflächlich. Interessant wirds, wenn XON/XOFF für beide Richtungen gleichzeitig aktiv ist, und auch Daten in beide Richtungen gleichzeitig fließen.
Gast
#5830418
..naja, das werden wir nur theoretisch brauchen, es schadet aber wohl nix wenn der Treiber ordentlich funktioniert. Interessanter wird das wohl bei Datentransfer über die andere Schnitte, mit Kermit o.Ä. z.B. da müßte an mal explizit XON/XOFF testen mit 7 Bit.. Gruß, Holm
Hallo zusammen, falls jemand noch Lust zum Löten hat - ich bin leider nie dazu gekommen und bei mir stauben ein paar wunderhübsche, praktisch neue Platinen vom Z180-Stamp Modul ein, von denen ich mich nun einfach trennen möchte. Wenn jemand Interesse hat, schau ich mal nach, welche es sind und ob ich damals schon ein paar passende Teile dazu gekauft habe (ist schon zu lange her). Die kämen dann auch dazu - für's Porto und gern noch was obendrauf - muss aber kein Vermögen sein. Bitte melden, dann kommen weitere Infos. Viel Spaß weiterhin. Gruß, W.
Gast
#5841553
Wolfram K. schrieb: > Hallo zusammen, > > falls jemand noch Lust zum Löten hat - ich bin leider nie dazu gekommen > und bei mir stauben ein paar wunderhübsche, praktisch neue Platinen vom > Z180-Stamp Modul ein, von denen ich mich nun einfach trennen möchte. > > Wenn jemand Interesse hat, schau ich mal nach, welche es sind und ob ich > damals schon ein paar passende Teile dazu gekauft habe (ist schon zu > lange her). Die kämen dann auch dazu - für's Porto und gern noch was > obendrauf - muss aber kein Vermögen sein. Bitte melden, dann kommen > weitere Infos. > > Viel Spaß weiterhin. > Gruß, W. Jo mach mal bitte, ich habe zumindest Einen, wenn nicht gar zwei Interessenten.. Joe G. wollte eigentlich die Gerber Files hochladen damit ich Platinen anfertigen lassen kann, hat er aber wohl vergessen. Gruß, Holm
Hallo Holm, bin inzwischen fündig geworden. Anscheinend habe ich doch schon mit Löten angefangen, aber keinen Tests gemacht und auch nicht fertig geworden (s. Fotos). Dazu habe ich noch (nicht verbaut) den PLCC-Sockel, einen Quarz 18,432 MHz, 2x 22pF, 1x 100nF (SMD groß), 3x 100nF (SMD klein), 14x 10k und einen PL-2303. Schick mir Deine Adresse und dann gehen die Teile 'raus. Gruß, Wolfram
Gast
#5848913
@Leo: Ich habe heute mal Deine letzte Version cpm3_0.6.8-35-asci-int-driver.sys auf die sd Karte kopiert und Deine Utilities einkopiert..und stolpere wieder über die Consolenparamter des Z180, bekomme nur Sauerkraut auf den Monitor. Was hast Du denn da standardmäßig eingestellt? Die cpm3_0.6.8-26.sys hatte ich aus den Git Sourcen selbst gebaut, hatte aber dann festgestellt das 0.35 doch ein ganzes Stück höher ist und halt das verwendet. Kannst Du bitte Dein Repository mal auf den aktuellen Stand bringen? Nochwas..ich hatte das gerade oben noch gelesen, willst Du noch so eine ECB Bus Platine haben? Dann laß mir bitte Deine Adresse zukommen. Mailadresse findest Du auf tiffe.de .. Gruß, Holm
Die Version ist im Repo im branch asci-int-driver. Mehr kann ich später schreiben. Sitze gerade auf einem Zahnarztstuhl.
Gast
#5849016
Leo C. schrieb: > Die Version ist im Repo im branch asci-int-driver. > > Mehr kann ich später schreiben. Sitze gerade auf einem Zahnarztstuhl. ..arme Sau.. :-) Gruß, Holm
Holm T. schrieb: > Ich habe heute mal Deine letzte Version > cpm3_0.6.8-35-asci-int-driver.sys auf die sd Karte kopiert und Deine > Utilities einkopiert..und stolpere wieder über die Consolenparamter des > Z180, bekomme nur Sauerkraut auf den Monitor. Was hast Du denn da > standardmäßig eingestellt? Consolenparamter ? Console ist auf ASCI1 mit 115200 Baud. Der Z180 Takt ist auf 18.432 MHz vom AVR gejumpert, und das berühmt-berüchtigte Byte 3f sollte 0 sein. Bei mir sieht das dann so aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
> Die cpm3_0.6.8-26.sys hatte ich aus den Git Sourcen selbst gebaut, hatte > aber dann festgestellt das 0.35 doch ein ganzes Stück höher ist und > halt das verwendet. > Kannst Du bitte Dein Repository mal auf den aktuellen Stand bringen? Die aktuelle Version war (wie schon geschrieben auf dem Server im Branch "asci-int-driver". Eigenlich wollte ich im master Branch bis auf weiteres den Polling-Treiber lassen. Jetzt habe ich gemerkt, das im master doch schon der Interrupt-Treiber von vor ein paar Wochen war. Deshalb habe ich den master jetzt auf den neuesten Stand gebracht, die Version auf 0.6.9 erhöht, und den asci-int-driver branch gelöscht. Anhang, der Code ist aber der gleiche als in '0.6.8-35-asci-int-driver'.
Bei mir läuft die cpm3_0.6.9-1.sys korrekt wie beschrieben. Das Byte 0x3F ist wie gewünscht 0.
Gast
#5849972
Ok, ich werde mich heute später noch mal ran setzen. Ich hatte das Problem das überhaupt keine der üblichen Baudraten paßte weder mit 8N1,7E1 oder 7O1. Es gab immer nur Kauderwelsch im Terminal. Joe..darf ich Dich mal an die Gerber Daten zur ECB Platine erinnern? Gruß, Holm
Leo C. schrieb: > Die Init-Misere (INIDONE) ... ist Geschichte. > Ok, ich werde die Stelle so umbauen, daß die Initialisierung nur noch > dann ausgelassen wird, wenn man das wirklich braucht. Ich habe den Test jetzt ganz rausgeschmissen. Man brauchts nicht (mehr).
Ich bin gerade dabei die Hardware zu überarbeiten. Der Z180 soll mit SIDE und einer 8255 PIO, WDC37C65, SD-Karte, MAXen und etwas TTL Logik auf die Bus-Platine. Es gibt dann nur einen Steckplatz für die AVR Stamp. Zusätzlich ist noch ein EPROM/EEPROM vorgesehen. Es ist noch nicht ganz fertig, in 1-2 Wochen bin ich soweit. Ist das für irgendjemand interessant? Dann kann ich Wünsche noch berücksichtigen. Viele Grüße Günther
Gast
#5858353
Günther S. schrieb: > Ich bin gerade dabei die Hardware zu überarbeiten. Der Z180 soll mit > SIDE und einer 8255 PIO, WDC37C65, SD-Karte, MAXen und etwas TTL Logik > auf die Bus-Platine. Es gibt dann nur einen Steckplatz für die AVR > Stamp. Zusätzlich ist noch ein EPROM/EEPROM vorgesehen. Es ist noch > nicht ganz fertig, in 1-2 Wochen bin ich soweit. Ist das für > irgendjemand interessant? Dann kann ich Wünsche noch berücksichtigen. > Viele Grüße > Günther Woher nimmst Du einen 20Mhz-fähigen 8255 PPI? Gruß, Holm
Es lassen sich für den IO Zugriff 4 Waitstates (DCNTL-Register) einschalten, entspricht dann ca 250ns Zugriffszeit, was mit Standard Bausteinen gehen müsste. Für eine Z80PIO kann man den Clock halbieren. Bei mir geht das mit 12 Mhz CPU Takt (24Mhz Quarz) und 6Mhz PIO jedenfalls. IM2 habe ich nicht getestet, da kommen dann aber nochmals 2 Waits dazu. Viele Grüße Günther
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.











