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.
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.
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.
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
=> defaultenv
2
## Resetting to default environment
3
-> printenv -s
4
setenv baudrate '115200'
5
setenv bootcmd 'pin ${pins}; loadcpm3; go ${startaddress}'
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
z180-stamp/z180/asci1-i.180
2
z180-stamp-cpm3/cbios/ascii.180
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.
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. :-(
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…
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) :-(
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".
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
CP/M Version 3.0, Z180-Stamp BIOS v0.6.8
2
Estimated CPU clock [Hz]: 18432000
3
sdio: SD Card driver
4
cfio: CompactFlash Memory Card driver
5
Model: PQI IDE DiskOnModule, S/N: DOM3B00003949, Rev: 060729DA
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
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.
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?
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.
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. :-)
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
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
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.
..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
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
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
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
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
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
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
dseg ; init done from banked memory
2
3
hwinit:
4
ld a,(INIDONE)
5
and 80h
6
cp INIDONEVAL
7
jr z,hwini_skip
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!
..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
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,
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
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
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,
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
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.
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.
..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:
GDB is free software, covered by the GNU General Public License, and you are
5
welcome to change it and/or distribute copies of it under certain conditions.
6
Type "show copying" to see the conditions.
7
There is absolutely no warranty for GDB. Type "show warranty" for details.
8
This GDB was configured as "amd64-marcel-freebsd"...Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module /usr/home/holm/src/MICROS/ld80-leo/ld80]
9
10
Core was generated by `ld80 -o bnkbios3.map -ms bnkbios3.map -P 0 -D F000'.
11
Program terminated with signal 11, Segmentation fault.
12
Reading symbols from /lib/libc.so.7...Reading symbols from /usr/lib/debug//lib/libc.so.7.debug...done.
13
done.
14
Loaded symbols for /lib/libc.so.7
15
Reading symbols from /libexec/ld-elf.so.1...Reading symbols from /usr/lib/debug//libexec/ld-elf.so.1.debug...done.
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:
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ß.
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
..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
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
BIOS debugging with ddtz: Set 3F to 81 to en fifo inits.
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.
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
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
> BIOS debugging with ddtz: Set 3F to 81 to en fifo inits.
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
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.
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.
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.
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.
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.
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
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...
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.
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.
..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.
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
@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
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
CP/M Version 3.0, Z180-Stamp BIOS v0.6.8-35-asci-int-driver
2
Estimated CPU clock [Hz]: 18432000
3
sdio: SD Card driver
4
cfio: CompactFlash Memory Card driver: No Card
5
6
A>device
7
8
Physical Devices:
9
I=Input,O=Output,S=Serial,X=Xon-Xoff
10
USB0 NONE IO ASCI0 19200 IOS ASCI1 134 IOS
11
12
13
Current Assignments:
14
CONIN: = ASCI1
15
CONOUT: = ASCI1
16
AUXIN: = Null Device
17
AUXOUT: = Null Device
18
LST: = Null Device
19
20
Enter new assignment or hit RETURN
21
22
A>stty asci1
23
speed 115200 baud;
24
-BRKINT
25
IXOFF
26
27
A>
> 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'.
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
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