Forum: Mikrocontroller und Digitale Elektronik Z180-Stamp Modul


von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch User
von Harald N. (haraldn)


Lesenswert?

Ja das mach ich auch. Aber es kommt eben nur Kauderwelsch....

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

von Harald N. (haraldn)


Lesenswert?

Hab keinen entsprechenden Befehl gesehen?
Aber memtest ist OK und der CPU test (mit HLT) auch...

von Holm T. (Gast)


Lesenswert?

@leo: (sorry für OT) hast Du indessen irgendwo mal eine 
Referenzimplementation eines interruptbasierten Z180 serial- Treibers 
gefunden?

Gruß,

Holm

von Marcel A. (dl1ekm)


Lesenswert?

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...

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

von Harald N. (haraldn)


Lesenswert?

Danke für das Testimage. Vielleicht komme ich am Wochenende dazu.

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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}'
6
setenv bootdelay '3'
7
setenv cpm3_file '0:/cpm3.sys'
8
setenv pin_alias '0:PG5,1:PG4,2:PB4,3:PB5,4:PB6,5:PB7,6:PG3,7:PG2,8:PG1,9:PG0,10:PE7'
9
setenv pins '2,8 low 9 high 3 2'
10
setenv startaddress '0'
11
=>

Der output kann dann per Copy&Paste in eine Datei übernommen und 
editiert werden.

von Leo C. (rapid)


Lesenswert?

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...

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

von Harald N. (haraldn)


Lesenswert?

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....

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

@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.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

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. :-(

von Harald N. (haraldn)


Lesenswert?

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...

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

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.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

@ 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

von Leo C. (rapid)


Lesenswert?

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"

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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…

von Holm T. (Gast)


Lesenswert?

@Leo: Ich habe gerade die EUMEL Sourcen Rolf-Dieter Klein für den 64180 
geschickt bekommen. Die Sios werden da interuptgesteuert betrieben.

Gruß,

Holm

von Leo C. (rapid)


Lesenswert?

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"

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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) :-(

von Marcel (Gast)


Lesenswert?

Ok, da bei mir aber "alles" funktioniert - besteht da Handlungsbedarf? 
Muss ich an A19 jetzt etwas anlöten?

von Leo C. (rapid)


Lesenswert?

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".

von Marcel (Gast)


Lesenswert?

Ok, also A19-Anschluss auf der AVR-Stamp mit 10k auf GND ziehen?

von Leo C. (rapid)


Lesenswert?

Ja, besser ist das.

von Marcel A. (dl1ekm)


Lesenswert?

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

von Leo C. (rapid)


Lesenswert?

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.

von Marcel A. (dl1ekm)


Lesenswert?

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
6
    Size: 256000 Sectors (128000 KiB)
7
    I: CP/M partition at: 2048, size: 8192KiB
8
    J: CP/M partition at: 18432, size: 8192KiB
9
    K: CP/M partition at: 34816, size: 8192KiB
10
    L: CP/M partition at: 51200, size: 8192KiB
"SHOW" ist auch ok, aber ich habe damit das gleiche Problem wie Joe
Beitrag "Re: Z180-Stamp Modul"
1
I>dir
2
I:   :   :   :   :
3
I:   :   :   :   :
4
I:   :   :   :   :
5
I:   :   :   :   :
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

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Hast du das Wipe Program von Leo C. mal versucht?
Beitrag "Re: Z180-Stamp Modul"

DDTZ
Beitrag "Re: Z180-Stamp Modul"

: Bearbeitet durch User
von Marcel A. (dl1ekm)


Lesenswert?

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"

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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).

von Marcel A. (dl1ekm)


Lesenswert?

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?

von Leo C. (rapid)


Lesenswert?

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/

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Drei Tage ohne Internet. Das kommt dabei raus.
Mehr dazu später.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Da bin ich gespannt :-)

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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?

von Erich (Gast)


Lesenswert?

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

von Leo C. (rapid)


Lesenswert?

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

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

Hmm...16Mhz? CPU abschaltbar? Ist das die Peripherie deren Fehlen mich 
an der Z180 Stamp als Einziges stört?

Gruß,

Holm

von Günther S. (guenther_sch)


Lesenswert?

Hallo Joe,
gibt es noch SIDE Platinen?
Danke
Günther

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Ja, sowohl SIDE Platinen als auch DOM-Module.

von Günther S. (guenther_sch)


Lesenswert?

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

von Günther S. (guenther_sch)


Lesenswert?

Sind eigentlich die Quellcodes fürs CPM3 BIOS auch irgendwo im SVN?

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

normalerweise hier:
Beitrag "Re: Z180-Stamp Modul"

Der Server scheint jedoch gerade nicht zu laufen. Leo C. kann sicher 
dazu eine Auskunft geben.

von Günther S. (Gast)


Lesenswert?

Hallo Leo,
kann man die BIOS-Quellen von dir bekommen?
Besten Dank
Günther

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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.

von Leo C. (rapid)


Lesenswert?

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. :-)

von Holm T. (Gast)


Lesenswert?

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

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

kleiner Hinweis auf einen CP/M-Explorer
Beitrag "Re: CP/M auf ATmega88"

von Leo C. (rapid)


Lesenswert?

Mein kleiner Server ist wieder online und der Z180-Stamp Sourcecode 
wieder unter http://cloudbase.mooo.com/cgit/ erreichbar.

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)



Lesenswert?

Hilft Dir das weiter?

von Raph (Gast)


Lesenswert?

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...

von Holm T. (Gast)


Lesenswert?

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

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

..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

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

..nu gucke an..
1
        dseg                    ; init done from banked memory^M
2
^M
3
hwinit:^M
4
        ld      a,(INIDONE)^M
5
        and     80h^M
6
        cp      INIDONEVAL^M
7
;       jr      z,hwini_skip^M
8
        nop
9
        nop
10
        ld      hl,hwini_tab^M
11
        call    ioini1l^M

Wenn ich verhindere das die Hardwareinitialisierung ausgelassen wird, 
macht die CPU ganz plötzlich was sie soll:
1
CP/M Version 3.0, Z180-Stamp BIOS v0.6.8-24-dirty
2
Estimated CPU clock [Hz]: 18070588
3
sdio: SD Card driver
4
cfio: CompactFlash Memory Card driver: No Card
5
A>dir
6
A: BDOS3    SPR : BNKBDOS3 SPR : CCP      COM : COPYSYS  COM : CPMLDR   REL 
7
A: DATE     COM : DEVICE   COM : DIR      COM : DUMP     COM : ED       COM 
8
A: ERASE    COM : GENCOM   COM : GENCPM   COM : GET      COM : HELP     COM 
9
A: HELP     HLP : HEXCOM   COM : PATCH    COM : PIP      COM : PUT      COM 
10
A: README       : RENAME   COM : RESBDOS3 SPR : SAVE     COM : SET      COM 
11
A: SETDEF   COM : SHOW     COM : SID      COM : SUBMIT   COM : TYPE     COM 
12
A: DEVICE   PLM : HELP     DAT : CPMLDR   COM 
13
A>

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

von Holm T. (Gast)


Lesenswert?

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

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

@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!

von Holm T. (Gast)


Lesenswert?

..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

von Fpgakuechle K. (Gast)


Lesenswert?

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,

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Fpgakuechle K. (Gast)


Lesenswert?

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,

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

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
H>type MKBCPM3.sub                                                              
2
; generate CP/M 3 banked version                                                
3
slr180 bioskrnl/M,boot/M,chario/M,msgbuf/M,conbuf/M,asciih/M,drvtbl/M,sdio/M    
4
slr180 cfio/M,stampf/M,move/M,time/M,fifo/M,utils/M,mm/M,misc/M,scb/M           
5
link80 bnkbios3[b]=bioskrnl,boot,chario,msgbuf,conbuf,asciih,drvtbl,sdio,cfio,s]
6
era bioskrnl.rel                                                                
7
era boot.rel                                                                    
8
era chario.rel                                                                  
9
era msgbuf.rel                                                                  
10
era conbuf.rel                                                                  
11
era asciih.rel                                                                  
12
era drvtbl.rel                                                                  
13
era sdio.rel                                                                    
14
era cfio.rel                                                                    
15
era stampf.rel                                                                  
16
era move.rel                                                                    
17
era time.rel                                                                    
18
era fifo.rel                                                                    
19
era utils.rel                                                                   
20
era misc.rel                                                                    
21
era mm.rel                                                                      
22
era scb.rel
23
24
gencpm AUTO                                                                     
25
era bnkbios3.spr                                                                
26
                                                                                
27
H>

..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
# gdb ld80 /home/holm/src/MICROS/avr-cpm/z180-stamp-cpm3/z180-stamp-cpm3/cbios/ld80.core
2
GNU gdb 6.1.1 [FreeBSD]
3
Copyright 2004 Free Software Foundation, Inc.
4
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.
16
done.
17
Loaded symbols for /libexec/ld-elf.so.1
18
#0  getopt (nargc=5, nargv=0x800e4a000, ostr=0x4049bc "-lD:P:C:")
19
    at /usr/src/lib/libc/stdlib/getopt.c:70
20
70                      if (optind >= nargc || *place++ != '-') {
21
(gdb) where
22
#0  getopt (nargc=5, nargv=0x800e4a000, ostr=0x4049bc "-lD:P:C:")
23
    at /usr/src/lib/libc/stdlib/getopt.c:70
24
#1  0x0000000000401217 in ?? ()
25
#2  0x0000000000000009 in ?? ()
26
#3  0x0000000100000001 in ?? ()
27
#4  0x0000000000000000 in ?? ()
28
Current language:  auto; currently minimal
29
(gdb)


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

von Leo C. (rapid)


Lesenswert?

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
$ zxcc link80 -testl=bioskrnl,boot,chario,msgbuf,conbuf,ascii,drvtbl,\
2
sdio,cfio,stampf,move,time,fifo,utils,misc,mm,scb[DAD00,PF900,q,'$OZ']
3
LINK 1.31
4
5
?AUXI    F915   ?AUXIS   F936   ?AUXO    F912   ?AUXOS   F939   
6
?BANK    FBB6   ?BNKSL   F951   ?BOOT    F900   ?CI      FB21   
7
?CINIT   FB18   ?CIST    FB27   ?CO      FB2D   ?CONIN   F909   
8
?CONO    F90C   ?CONOS   F933   ?CONST   F906   ?COST    FB33   
9
?DEVIN   F93F   ?DRTBL   F942   ?DVTBL   F93C   ?FLUSH   F948   
10
?HOME    F918   ?INIT    AE27   ?LDCCP   FA65   ?LIST    F90F   
11
?LISTS   F92D   ?MLTIO   F945   ?MOV     F94B   ?MOVE    FBAA   
12
?READ    F927   ?RLCCP   FA9D   ?SCTRN   F930   ?SLDSK   F91B   
13
?STBNK   F954   ?STDMA   F924   ?STSEC   F921   ?STTRK   F91E   
14
?TIM     F94E   ?TIME    FBFE   ?WBOOT   F903   ?WRITE   F92A   
15
?XMOV    F957   ?XMOVE   FBA5   @ADRV    ADF2   @AIVEC   FE26   
16
@AOVEC   FE28   @CBNK    FA64   @CIVEC   FE22   @CNT     ADFB   
17
@COVEC   FE24   @CTBL    FAFF   @DBNK    ADFA   @DMA     ADF8   
18
@DTBL    FB43   @LOVEC   FE2A   @MXTPA   FE62   @OP      ADF1   
19
@RDRV    ADF3   @SECT    ADF6   @TRK     ADF4   @XDPH    ADEF   
20
BOOT     AD00   BS$STAC  FDD7   HWINIT   ADFC   IJPHL    FC4A   
21
IOCTL    FB1B   STAMPF   FB85   CPU_FRQ  C578   F_CPU    FAFB   
22
GS_RTC   C21A   INTINIT  C55A   IOINI1L  C39C   MSGINIT  AFAE   
23
PR.CRLF  C431   PR.DECL  C466   PR.INLN  C429   PRT0INI  C276   
24
AS0_DEV  B183   AS1_DEV  B29C   FF_DEV   B133   _B0CALL  FCF2   
25
BUFINIT  C2B8   FIFOLST  C2B0   HWL2PHY  FCC1   MRX.FIF  AF6E   
26
MSG.REC  B02D   MSG.SM   B0C8   MTX.FIF  AF2A   PHY2LOG  FCE2   
27
CI.FIFO  B0E5   CO.FIFO  B109   FF_EMPT  C2F4   FF_FULL  C33B   
28
FF_GET   C2FE   FF_PUT   C349   ADD_HLA  C3AC   B_LD_A   C5C5   
29
B_ST_A   C5E3   DIV32_R  C3B1   FF_GECH  C317   FF_PUTH  C364   
30
ISV_SW   FD45   S0.INBU  B18E   S0.OUTB  B212   S1.INBU  B2A7   
31
S1.OUTB  B32B   CF0      BAAF   CF1      BAD2   CF2      BAF5   
32
CF3      BB18   SD0      B707   SD1      B72A   SD2      B74D   
33
SD3      B770   SD4      B793   SD5      B7B6   SD6      B7D9   
34
SD7      B7FC   BNK2PHY  FCA3   PR.ERRO  C504   PR.IDX   C410   
35
?PMSG    C3FE   GSTIMER  C257   BNK2LOG  FC93   @DATE    FE58   
36
@HOUR    FE5A   @MIN     FE5B   @SEC     FE5C   DIV32_1  C3BB   
37
GTIMER   C261   I$STACK  FD85   FF_CNT   C382   @ERMDE   FE4B   
38
IOINIML  C38D   PHEX2    C43D   PHEX4    C438   PR.DEC   C45D   
39
GET_TMR  C5A7   B_LD_HL  C5C9   B_ST_HL  C5E8   MMUINIT  FC8D   
40
?ERJMP   FE5F   @BFLGS   FE57   @BNKBF   FE35   @CRDMA   FE3C   
41
@CRDSK   FE3E   @ERDSK   FE51   @FX      FE43   @MEDIA   FE54   
42
@MLTIO   FE4A   @RESEL   FE41   @USRCD   FE44   @VINFO   FE3F   
43
44
ABSOLUTE     0000
45
CODE SIZE    04D9 (F900-FDD8)
46
DATA SIZE    192F (AD00-C62E)
47
COMMON SIZE  0000
48
USE FACTOR     2E

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.

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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ß.

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

..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

von Fpgakuechle K. (Gast)


Lesenswert?

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,

von Leo C. (rapid)


Lesenswert?

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/

von Leo C. (rapid)


Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

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

von Günther S. (guenther_sch)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

Falls Du Dich noch umentscheidest, so Eins würde ich nehmen:

https://www.retrobrewcomputers.org/doku.php?id=boards:sbc:cpu280:start

Gruß,

Holm

von Günther S. (guenther_sch)


Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

Danke LEO..ich werds mal testen, der ARM-Scheiß funktioniert endlich.

Hast Du die Xon/Xoff Geschichte mal ausprobiert?

Gruß,

Holm

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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.

von Leo C. (rapid)


Lesenswert?

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.

von Fpgakuechle K. (Gast)


Lesenswert?

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,

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Lesenswert?

> 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
E>type pip2.txt                                                                               
2
        public @dtbl                                                                          
3
        extrn sd0,sd1,sd2,sd3                                                                 
4
        extrn sd4,sd5,sd6,sd7                                                                 
5
        extrn cf0,cf1,cf2,cf3                                                                 
6
                                                                                              
7
        cseg                                                                                  
8
                                                                                              
9
@dtbl   dw sd0,sd1,sd2,sd3      ; drives A-D                                                  
10
        dw sd4,sd5,sd6,sd7      ; drives E-H                                                  
11
        dw cf0,cf1,cf2,cf3      ; drives I-L                                                  
12
        dw 0,0,0,0              ; drives M-P                                                  
13
                                                                                              
14
        end
1
E>type pip3.txt
2
        public @dtbl
3
    extrn sd0,sd1,sd2,sd3
4
        extrn sd4,sd5,sd6,sd7
5
      extrn cf0,cf1,cf2,cf3
6
7
        cseg
8
9
@dtbl  dw sd0,sd1,sd2,sd3      ; drives A-D
10
        dw sd4,sd5,sd6,sd7      ; drives E-H
11
        dw cf0,cf1,cf2,cf3      ; drives I-L
12
    dw 0,0,0,0              ; drives M-P
13
14
        end

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Lesenswert?

> einen LA kann ich auch dran hängen.

Es gibt auch noch jpnevulator:
https://jpnevulator.snarl.nl/

von S. R. (svenska)


Lesenswert?

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...

von Leo C. (rapid)


Lesenswert?


von S. R. (svenska)


Lesenswert?

Leo C. schrieb:
> Gut genug?

Ja, danke!

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

Danke Leo...das wäre meine nächste Aktion gewesen :-)

Gruß,

Holm

von Leo C. (rapid)


Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

..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

von Wolfram K. (proof80)


Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

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

von Wolfram K. (proof80)


Angehängte Dateien:

Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

@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

von Leo C. (rapid)


Lesenswert?

Die Version ist im Repo im branch asci-int-driver.

Mehr kann ich später schreiben. Sitze gerade auf einem Zahnarztstuhl.

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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'.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Bei mir läuft die cpm3_0.6.9-1.sys korrekt wie beschrieben. Das Byte 
0x3F ist wie gewünscht 0.

von Holm T. (Gast)


Lesenswert?

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

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

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).

von Günther S. (guenther_sch)


Lesenswert?

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

von Holm T. (Gast)


Lesenswert?

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

von Günther S. (guenther_sch)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.