Hier mal ein paar Bilder meines Aufbaus mit meinen beschränkten
mechanischen Möglichkeiten.
Es fehlen noch ein paar Verdrahtungen, die Backplane ist auch noch nicht
drin. Links kommt dann demnächst noch die VGA-Platine rein.
Etwas Sorgen bereitet mir der USB-Abschluss auf der AVR-Platine. Ich
suche immer noch ein passendes Kabel mit Winkel-Stecker (oder einen
Winkel-Adapter), da man das Board mit Stecker dran nicht in den Rahmen
schieben kann.
> Etwas Sorgen bereitet mir der USB-Abschluss auf der AVR-Platine. Ich> suche immer noch ein passendes Kabel mit Winkel-Stecker (oder einen> Winkel-Adapter), da man das Board mit Stecker dran nicht in den Rahmen> schieben kann.
Die Winkeladapter, die ich bisher gefunden habe, waren alle zu groß und
in eine falsche Richtung abgewinkelt. Jetzt habe ich diese [1] Adapter
gekauft und will einen davon hinter die Frontplatte montieren. Auf der
AVR-Stamp wird dann ein Kabel direkt angelötet.
[1] http://www.ebay.de/itm/201414916073
Marcel A. schrieb:> Etwas Sorgen bereitet mir der USB-Abschluss auf der AVR-Platine. Ich> suche immer noch ein passendes Kabel mit Winkel-Stecker (oder einen> Winkel-Adapter), da man das Board mit Stecker dran nicht in den Rahmen> schieben kann.
Das Teil von Delock/Reichelt ist wahrscheinlich zu dick, oder?!:
http://www.reichelt.de/USB-Adapter/DELOCK-65096/3/index.html?ARTICLE=100945
Läuft soweit alles prima, auch die seriellen Schnittstellen, die externe
SD usw.
Jetzt kämpfe ich "nur" noch mit meinem alten Problem. Ich habe ja auch
ein "echtes" VT100 an CON angeschlossen - das super geht, aber sowohl im
AVR-Modus als auch unter CP/M reproduzierbar "Müllphasen" hat, die den
Bildschirmaufbau durcheinander bringen.
Interessanterweise geht an der AVR Console der USB- und
Seriell-Anschluss gleichzeitig, senden wie empfangen. So ist das Bild im
Anhang entstanden. Auf dem FTDI kommt alles sauber an, am VT100 (MAXxxx)
tritt der Fehler auf. Den Max-Baustein hatte ich schon mal geprüft, der
schein ansonsten ok zu sein. Die Fehler tauchen auch auf, wenn ich den
USB-Anschluss still lege (JP auf AVR Stamp) und nur zur Stromversorgung
nehme.
Das einzige, was ich noch nicht probiert hatte, ist reine 5V Versorgung
von extern (also nix mehr im USB-Port).
Hat noch jemand eine Idee?
Marcel A. schrieb:> Hat noch jemand eine Idee?
Lasse doch mal parallel zum VT100 einen "Serial Port Analyser" [1]
mitlaufen. Dann siehst du ja was gesendet wird und was das Terminal
damit macht.
[1] http://www.serial-port-monitor.com/
Habe mal eine "echte" serielle Schnittstelle des PCs angeschlossen -
damit ist das Problem auch nicht vorhanden.
Muss wohl dann ein Problem des HP VT100-Terminals sein - auch eine
Verringerung der Geschwindigkeit bringt keine Abhilfe. Immer an der
gleichen Stelle (bzw. bei bestimmten Codes) kommt es zu "Müll".
Als wenn da ein Puffer nicht richtig arbeitet...
EDIT: Ich glaube, ich habe in den 1Mio Einstellungen gerade eine Kombi
gefunden, die geht :-)
Marcel A. schrieb:> Immer an der> gleichen Stelle (bzw. bei bestimmten Codes) kommt es zu "Müll".
Das sieht doch nach Handshake aus. Was macht die CTS-Leitung vom
Terminal? Möglicherweise signalisiert sie Puffer voll, warten. Wenn dann
der Sender munter weiter Zeichen sendet kommt es natürlich zu Fehlern.
So, habe mein erstes richtiges Z80 HelloWorld sowohl auf der Stamp als
auch in der ZXCC-Umgebung ans Laufen gebracht :-)
Dann habe ich mal mein altes Pollin AVR NetIO Board ausgekramt und eine
Firmware von Ulrich Radig drauf gebracht. Nachdem ich die Original-CPU
(Mega32) durch eine 644er getauscht hatte und damit den USART-Buffer
hochschrauben konnte, dient dieser als Seriell zu Telnet Konverter an
der AVR CON.
Somit könnte ich den Rechner von meinem Arbeits-PC aus bedienen.
Leider ist die Firmware noch etwas eigenwillig hinsichtlich der
Übertragung von CTRL-Codes und ESC-Sequenzen. Auch ist es gar nicht so
einfach, nur auf 1 Taste zu reagieren (Menüs...) anstatt alles mit CR zu
bestätigen.
Das wird sicher wieder eine weitere Baustelle - irgendwann.
So, hier mal der aktuelle HW-Stand meiner "Grafikkarte".
Die "Firmware 1.7.3 test serial 3" macht aber noch Probleme (CRTL wie
SHIFT, Absturz beim Start von TP).
Die RTC schein noch einen Bug zu haben, könnt ihr den Fehler auch
nachstellen?
im AVR-Monitor
=> date
Sat Jan 23 14:39:38 2015
im CP/M
A>date
Fri 01/23/2015 14:38:53
Den Jahreswechsel von 2015 auf 2016 scheint die RTC vergessen zu haben.
Nachtrag:
Nach dem Stellen der RTC ist wieder alles korrekt...
A>date
Sat 01/23/2016 14:53:29
=> date
Sat Jan 23 14:53:32 2016
Joe G. schrieb:> Die RTC schein noch einen Bug zu haben, könnt ihr den Fehler auch> nachstellen?
Ja, leider.
Ich habe es nicht bemerkt, weil mein Stamp dieses Jahr noch garnicht in
Betrieb war.
Die RTC hat nur einen 2-Bit Jahreszähler. Deshalb wird das aktuelle Jahr
im RTC-RAM gespeichert, aber beim Jahreswechsel (noch) nicht
aktualisiert. Außerdem wird wg. eines dämlichen Fehlers das Jahr auch im
AVR-RAM nicht aktualisiert, wenn der 2-Bit Zähler von 3 nach 0
überläuft, was dieses mal der Fall war.
> Nach dem Stellen der RTC ist wieder alles korrekt...
Aber nur für die nächsten 3 Jahre, wenn der Strom nicht abgeschaltet
wird.
Merkwürdiges RAM Fehlerbild auf dem Z180-Stamp
Leitungen (Adressen, Daten, Steuerleitungen )scheinen alle korrekt, kein
Schluss, keine offene Leitung ...
Z180 ist im RESET, alle sind Leitungen hochohmig.
Wird nun der RAM nur auf EINER Zelle beschrieben (egal welcher), so ist
beim Auslesen dieser Inhalt auf ALLEN Zellen. Das ist unabhängig davon
auf welcher Adresse geschrieben oder gelesen wird. Die Adressen beim
Lesen und Schreiben liegen korrekt an, auch CE, OE und WE.
Ich bin etwas ratlos und tippe auf RAM defekt. Hatte schon mal jemand so
ein Verhalten? Ach ja, das ist ein zweiter Neuaufbau, der RAM ist also
frisch aus der Verpackung.
Nachtrag:
Ich kann mir eigentlich nur vorstellen, dass der interne Adressdecoder
des IC nicht korrekt arbeitet.
Hallo,
ich wollte mich mal wieder melden. Ich war etwas abgetaucht in den
Tiefen des NDR Klein Computers...
Habe dort das BIOS umgeschrieben für ein drittes "GOTEK USB
Floppy-Laufwerk" und dabei glatt nach 30 Jahren einen Fehler im FLOMON
(den Basisroutinen des NKC) gefunden :-)
Dann habe ich es noch geschafft, auch dort ein Terminal an die serielle
Schnittstelle zu bekommen - gar nicht so leicht, denn das IOBYTE ist
nicht implementiert.
Nun wollte ich mir als nächstes die AVR STAMP in der Version 1.1
aufbauen, damit ich alles mit 5V betreiben kann. Da waren doch keine
"Bugs" mehr drin, oder? Habe auf die Schnelle keine Hinweise gefunden.
Bin auch mal gespannt, wie es mit dem USB Stick weitergeht. Die KC-Leute
und die NDRler haben das ja auch umgesetzt mit den "U-Tools", also
Programmen im TPA aus. NeuLinux: "user space" :-)
Und ja, das Frontpanel reift noch in meinem Kopf.
Habe inzwischen auch einen MFA/BZA-Rechner im Keller mit einer ganzen
Kiste voll Karten und dann noch von einem anderen ehemaligen
Z80-Entwickler (der es im Gegensatz zu Leo leider aufgegeben hat) einen
TRS-80 Nachbau im 19" Rahmen mit einem Wäschekorb voll Literatur. Das
wird für ein paar Jahre reichen. Joe - ich muss gerade an deinen Hinweis
" nicht zu viele Baustellen..." denken.
Gruß in die Runde
Marcel
Marcel A. schrieb:> Nun wollte ich mir als nächstes die AVR STAMP in der Version 1.1> aufbauen, damit ich alles mit 5V betreiben kann. Da waren doch keine> "Bugs" mehr drin, oder? Habe auf die Schnelle keine Hinweise gefunden.
Der AVR-Stamp ist ohne Hardwarefehler. Die LP kann so bestückt werden
und funktioniert mit 3.3V und 5V.
Beim Z180 Stamp (V1.1) habe ich diesen merkwürdigen RAM-Fehler. Nachdem
RAM Wechsel ist der Fehler immer noch da, es scheint also nicht der RAM
zu sein. Bisher bin ich jedoch mangels Zeit noch nicht fündig geworden.
Bis nächste Woche Mittwoch läuft nach das Ballonprojekt [1] mit
Hochdruck.
[1] Beitrag "Stratosphärenballon"
Joe G. schrieb:> [1] Beitrag "Stratosphärenballon"
Hallo Joe - tolle Sache.
Ich hatte in unserem OV auch mal eine Technik-Gruppe als
Kontrastprogramm zum sonstigen Gelaber gegründet - aber es kamen immer
nur dir gleichen 2-3 Leute und für Jugendarbeit konnte ich keinen
begeistern - maximal "müsste man mal machen" - meistens aber "oh Gott,
stell dir mal vor, da kommen tatsächlich junge Leute". Es war
frustrierend.
So, das war etwas OT, zurück zum Z180 :-)
Ich baue gerade die AVR Stamp 1.1 zusammen. Dabei sind mir bisher
folgende Unterschiede zwischen Schaltplan und BOM, beides V1.1.
Z.b. Sind R6-8 anders und IC2 und IC5 sind vertauscht....?
Oder habe ich mir vor einigen Wochen eine falsche Version ausgedruckt?
Ich habe da noch 2 Fragen. Aufgrund der besseren Verfügbarkeit habe ich
wie empfohlen den ATMEGA2561V eingebaut. Wenn ich die Datenblätter so
vergleiche, müssten eigentlich die gleichen FUSE-Bits gelten, oder?
Dabei ist mir aber in der Dokumentation aufgefallen, dass dort steht,
dass BOOTSZ1, BOOTSZ2 und BOOTRST auf 1 stehen sollen, in der Tabelle
der Doku stehen aber "Defaults", die nicht diese Werte haben - das
könnte verwirrend sein.
Und noch ein Tipp, da ich dafür genau in den Layout-Plan schauen musste:
Für JP4 (ISP) bitte im Bestückungsplan einen richtigen Wannenstecker
nehmen, damit man den auch anstelle der Stiftleiste nimmt und dann auch
gleich "richtig herum" einbauen kann - das kann sonst böse Folgen haben,
wenn man das ISP-Kabel falsch herum ansteckt :-)
Gruß
Marcel
Marcel A. schrieb:> vergleiche, müssten eigentlich die gleichen FUSE-Bits gelten, oder?
Sieht so aus.
> in der Tabelle> der Doku stehen aber "Defaults", die nicht diese Werte haben - das> könnte verwirrend sein.
Ja, in der Tabelle stehen nur die Defaults. Darunter steht in Hex der
"richtige" Wert (0xD6).
Den Bootloader wirst Du auf jeden Fall anpassen und neu übersetzen
müssen. Der Monitor könnte vielleicht unverändert laufen.
Ja, da werde ich mich wohl noch mal reinfuchsen :-)
Wo finde ich denn den Source für den "STAMP Monitor V6.5 8 Drives"? Du
hattest mir dazu mal eine HEX-Datei gegeben - die SEHR GUT läuft.
Die "normale" V6.5 habe ich gefunden.
> Wo finde ich denn den Source für den "STAMP Monitor V6.5 8 Drives"? Du
Nirgens.
> hattest mir dazu mal eine HEX-Datei gegeben - die SEHR GUT läuft.> Die "normale" V6.5 habe ich gefunden.
Es sollte ausreichen, in der datei z180-serv.c das Makro MAX_DRIVE
anzupassen.
Ich bin schon recht weit, aber es klemmt noch.
Ich habe den bootloader von hier
https://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_DanneggerBeitrag "Re: Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain"
genommen (für die AVR-GCC toolchain), die scripte wie dort beschrieben
ausgetauscht und das makefile auf den 2561 angepasst.
Es entstand das HEX. Das habe ich geflashed (ACHTUNG: Beim 2561 meckert
AVRDUDE über EFUSE=F5 - er setzt das auf FD - das bezieht sich aber nur
auf die Brown-Out detection).
Danach minicom und fboot gestartet - das Stamp-Monitor-Hex wird
geladen!!!
Nur startet er danach den Monitor nicht.
Obwohl der fastboot ja eigentlich nur 0,3 Sekunden auf mein fboot warten
sollte kann ich zu jedem beliebigen Zeitpunkt fboot starten und eine
hex-datei übertragen. Das ist doch nicht normal?
Oder muss ich den Stamp Monitor doch für den 2561 übersetzen? Aber
irgendwie kommt mir der bootloader komisch vor.
Ein Flash-Dump zeigt mir aber, dass er etwas übertragen hat. Er scheint
es nur nicht zu starten.
Leo, du hattest da doch auch "rumgefummelt" - hast du eine Idee?
Gruß
Marcel
> (ACHTUNG: Beim 2561 meckert> AVRDUDE über EFUSE=F5 - er setzt das auf FD - das bezieht sich aber nur> auf die Brown-Out detection).
Macht nichts, bzw. FD ist eigentlich "richtiger".
> Obwohl der fastboot ja eigentlich nur 0,3 Sekunden auf mein fboot warten> sollte kann ich zu jedem beliebigen Zeitpunkt fboot starten und eine> hex-datei übertragen. Das ist doch nicht normal?
Das muß nicht am Bootloader liegen. Auch wenn der Hexdump nicht so
aussieht, kann es sein daß das geladene Programm nicht richtig läuft,
sondern immer in den Bootloader springt.
> Oder muss ich den Stamp Monitor doch für den 2561 übersetzen?
Vielleicht. Ich probier's mal aus.
Versuch doch mal, den Monitor direkt zu flashen, ohne Bootloader.
> Leo, du hattest da doch auch "rumgefummelt" - hast du eine Idee?
Wo habe ich rumrefummelt?
Zum 2561:
Ich habe mir tup manuell installiert - aber ich habe noch nicht raus,
wie ich nur den avr-zweig übersetzen kann.
Zum "rumfummeln":
Es gab doch mal hier massive Probleme, dass der bootloader das fboot
nicht zuverlässig erkannt hat. Da hast du damals glaube ich etwas
angepasst. Ich meine auch etwas mit speziellem Bootloader-Support
Beitrag "Re: Z180-Stamp Modul"
Hab gerade mal das HEX direkt geflashed: Dann passiert nicht - also wird
es wohl daran liegen, dass ich erst ein HEX für den 2561 erzeugen muss.
Marcel A. schrieb:> Für JP4 (ISP) bitte im Bestückungsplan einen richtigen Wannenstecker> nehmen, damit man den auch anstelle der Stiftleiste nimmt und dann auch> gleich "richtig herum" einbauen kann
Passt der vom Layout? Ich hatte das nicht überprüft, weil im Normalfall
der AVR ja nur einmal mit dem Bootloader geflasht wird. Ich dachte mir,
dass der Nachnutzer in diesem Fall genau weiß, was er tut ;-)
Ja, der passt :-). Und da weit vom SD-Card-Reader entfernt auch super.
Da ich mit Leo's Hilfe den ATmega2561 gerade zum Laufen gebracht habe,
brauchte ich den mehr als gedacht.
Anbei ein Bild.
Die 20µH Spule ist schon etwas breit für das 1206 Footprint. Aber da
drumherum Platz ist wird es wohl gehen. Die 1206 Spulen vom Reichelt
haben entweder zu wenig Induktivität oder zu viel Widerstand.
Ich habe noch einen Vorrat von [1]. Bei CSD gekauft, aber da gibts kein
Datenblatt. Die 10µH reichen bei mir aus.
[1] http://www.tme.eu/de/details/nl322522t-100k/smd-drosseln/yageo/
Ok... geteilte Meinungen. Muss aber sowieso was bei CSD bestellen. Du
hast die gezeigte auf dem Board in Verwendung?
Dachte 1210 wegen der Teilebezeichnung in der BOM.
Ich habe eine mit 18µH, 1.1 Ohm, Bauform 1210 in Verwendung [1]. Das
Footprint ist für 1210 ausgelegt. Leo's Modell geht aber auch.
[1] Würth 744032180
So geteilt finde ich die Meinungen garnicht. Keine Ahnung wie ich auf
1206 gekommen bin. Meine Spule ist 2,5 mm breit, die vom Reichelt 3,0 mm
(Dachte es wäre noch mehr). Die Reichelt-Spule hat auf jeden Fall die
besseren Werte.
Hallo nochmal!
Noch eine Frage habe ich. Ich kann die 74LV138D und 74LV10D nicht
finden. Kann ich stattdessen die HC-Typen hernehmen?
Weiters finde ich den MAX3241 nicht. Hat vlt jemand 2 Stück über, die er
mir verkaufen könnte?
Danke
> Noch eine Frage habe ich. Ich kann die 74LV138D und 74LV10D nicht> finden. Kann ich stattdessen die HC-Typen hernehmen?
Prinzipiell ja. Aber LV, LVX, HVC, etc. sind wesentlich schneller als
die alten HC. Das könnte beim '10 evtl. eine Rolle spielen, vor allem
bei 3,3V und 18,432MHz Taktfrequenz. Sollte man mal durchrechnen.
Also für den 138er hätte ich nun den 74LVC138AD gefunden. Für den 10er
leider nur 74HC10D oder 74HCT10D.
Den Max gibts tatsächlich auf Ebay als MAX3241CAI.
Dann werd ich das mal so probieren und zur Not die ICs von den alten
Stamps auslöten versuchen...
> Dann werd ich das mal so probieren und zur Not die ICs von den alten> Stamps auslöten versuchen...
Bevor Du das machst, löte besser den 74HC10D ein. Wenn der für die
höchste Taktfrequenz wirklich zu langsam sein sollte, kannst Du ihn
immer noch auslöten. Der HCT geht auf keinen Fall.
Jetzt habe ich gestern die Nachricht geschrieben und dann offenbar gar
nicht abgeschickt... MIST.
Also, ich habe ein dickes Problem mit der AVR STAMP 1.1
Nur AVR-Betrieb (keine ECB):
Ich habe sie auf USB-Power und 5V eingestellt. Dann erscheint bei B1
(sollte 3,3V sein) immer 4,3V (komischerweise genau 0,7V
"Diodenspannung" weniger).
Ob das über den MISO-Ausgang und die LED am SD-Reader kommt?
Betreibe ich die AVR Stamp auf der ECB und stecke auch die Z180 (dort
wird ja eigentlich die 3,3V produziert, ändert sich daran auch nichts -
am Spannungsregler liegen dann auch 4,3V an!
Die Z180 CPU habe ich erst mal gar nicht mit Strom versorgt.
Der Zugriff auf SD (beide!) klappt aber - trotz der hohen Spannung. Aber
das kann doch nicht gut sein?
Nur wenn ich die AVR (und die ECB) auf 3,3V jumpere ist alles ok von den
Spannungspegeln her.
Irgendwie muss da der Wurm drin sein. Ich habe alles gefühlt 100x
überprüft. Habt ihr eine Idee?
Gruß
Marcel
Die 3.3V kommen doch vom Z180-Stamp. Der AVR-Stamp hat nichts mit den
3.3V zu tun. Wenn du die +5V über USB beziehst, dann werden sie über JP1
an B2 gelegt. Von B2 holt sich dann der Z180-Stamp die +5V, macht 3.3V
daraus und legt sie wieder an B1 an. Ob der AVR-Stamp nun mit 5V oder
3.3V versorgt werden soll, legt JP2 auf dem AVR-Stamp fest.
Wenn du also nur den AVR in Betrieb hast, dann sollte an B1 nichts
anliegen.
Nachtrag:
Ich habe nochmal in die Schaltung geschaut. Wenn du keine 3.3V für die
SD-Card bereit stellst, dann wird der 74HC125 nicht mit Spannung
versorgt. Es wird also ein Strom über die Gattereingänge auf die 3.3V
Leitung fließen. Das ist nicht gut :-(
Auch beim 5V Betrieb sollten also auf jeden Fall an B1 3.3V extern
anliegen!
Genau so waren auch meine Überlegungen.
Der AVR-Stamp holt sich (solange die ECB nicht wieder im Rahmen steckt)
die 5V vom USB. Diese 5V gehen auch auf B2 und versorgen auch den AVR
mit Strom
Die 3,3V für die SD-Karte wird vom Z180-Stamp aus den 5V auf B2 geholt
und in eben 3,3V umgewandelt und auf B1 gelegt. Der Z180 selber wird
wieder mit 5V versorgt.
Mich wundert nur, dass der Z180-3,3V-Regler die Spannung auf B1 nicht
"runterregelt".
Offenbar übersteuert da irgendwas die 3,3V - sehr komisch. Ich raff das
nicht...
Wie gesagt, mit 3,3V klappt alles wunderbar, soweit ich das bisher sehen
kann. Ich habe den Jumper für die CPU Spannungsversorgung auf der Z180
derzeit nicht gesetzt (nutze also nur die 3,3V Versorgung der Z180
Stamp).
Als ob sich die 3,3V dann doch von "Vcc" geholt werden und nicht von B1?
In einer älteren Version des Schaltplans gab es da mal eine Änderung,
siehe Anhang... In der "alten" Version waren auch die Widerstände anders
nummeriert...
(Ein anderer Effekt: Früher konnte ich immer einen MAX... RS232-Wandler
auf den RX/TX des AVR parallel zum FTDI mitlaufen lassen - jetzt geht
das nur noch in Richtung Terminal, aber nicht mehr in Richtung AVR. Auch
nicht MEHR mit dem alten AVR 1.0, wo es immer ging. Komisch. Na, hab das
auf jeden Fall mal abgeklemmt.)
Marcel A. schrieb:> In einer älteren Version des Schaltplans gab es da mal eine Änderung,> siehe Anhang... In der "alten" Version waren auch die Widerstände anders> nummeriert...
Die ältere Version wurde nur mit 3.3V betrieben. Dort lagen alle
Pullup/down Widerstände natürlich auf Vcc. Data0/MISO ist ein Ausgang
der SD-Card. Die Spezifikation der SD-Card [1] sagt dazu: „external
pull-up resistor value to prevent bus floating“. Da die maximale
Spannung einer SD-Card nur 3.6V betragen darf, liegt der Widerstand R5
(100k) also auf 3.3V. Der AVR erkennt jedoch noch sicher den Pegel.
> Als ob sich die 3,3V dann doch von "Vcc" geholt werden und nicht von B1?
Wenn ein Fehler auf der AVR-Platine vorliegt und somit eine Spannung
größer 3.3V an B1 anliegt, dann kann der Regler natürlich nicht regeln.
Er hat ja dann am Ausgang schon eine höhere Spannung. Es muss also erst
der Fehler auf dem AVR-Stamp beseitigt werden. Die einzige Verbindung
die ich sehe, sind der 74HC125 und die SD-Card. Da DAT0 ein Ausgang ist,
kann ich mir das nicht vorstellen. Das kannst du jedoch testen, indem du
die SD-Card entfernst. Somit bleibt nur noch der Pegelwandler. Das
kannst du testen indem du entweder die LED oder R2 entfernst. Wenn jetzt
noch Spannung auf der 3.3V Leitung liegt, muss der Pegelwandler defekt
sein.
[1] http://www.nxp.com/documents/application_note/AN10911.pdf
Ich habe beide Boards noch mal auf meiner Lochraster-Basisplatine
getestet - gleicher Effekt - dann kann ich das ECB Board ausschließen.
SD-Karten sind (sicherheitshalber) im Moment eh nicht gesteckt - daher
dürfte da auch nichts in Richtung MISO gehen.
Dann habe ich R2 und R5 auf dem AVR Board ausgelötet - dann ist "nur"
noch der 125er mit B1 verbunden.
Kein Unterschied.
Dann habe ich noch mal den 3,3V Regler im Leerlauf arbeiten lassen -
3.3V - passt.
Dann habe ich ihn wieder an B1 angeschlossen (auf der Z180 Stamp): 4,3V.
Dann habe ich ihn mal mit 220Ohm "belastet" -> B1=3,6V
Dann mit 100Ohm (immer zwischen B1 und GND)-> B1=3,1V
Hä??? :-)
Muss ich also wirklich den 125er auslöten...:-( Komisch.
Marcel A. schrieb:> Muss ich also wirklich den 125er auslöten...:-( Komisch.
Schau dir mal an welche Leitung den Strom liefert. Es kommen ja nur SS,
SCK ode MOSI in Frage. An welcher Leituung geht der Pegel runter, wenn
du die 3.3V belastest?
SS geht auf 4,3/3,6/3,1V
SCK und MOSI haben immer 0V
Wie gesagt, R2 und R5 sind ausgelötet im Moment. Und die LED hatte
geblinkt beim Zugriff auf die SD-Karte.
Dumme Sache :-(
Ich habe es gerade auf deinem Foto gesehen. Du hast einen 74Hc125
eingelötet und ich habe auch die ganze Zeit davon geschrieben. Der
74HC... ist nicht 5V tolerant! Bei diesem Type darf der Eingang nicht
größer als Vcc+0.5V sein. Es muss ein 74LVC... oder 74AHC... sein. Das
IC muss also tatsächlich runter. Ich ändere das auch gleich im
Schaltplan, das steht auch der falsche Type drin.
Nachtrag: Kommando zurück - in der Schaltung ist ein 74AHC125
Danke - MIST!!! Hattest zu geschrieben...
Auf dem ECB Board habe ich auch einen 74LV125 - den muss ich dann wohl
auch austauschen?
Damit nicht noch mehr Baustellen schlummern (Board soll 3,3 und V5
können, der AVR 1.1 am besten auch), hier mal die Liste. Ich glaube
aber, die sind alle für 3,3 und 5V geeignet, nur der 125er muss 3,3 V im
Ausgang und 5V im Eingang unterstützen.
Auf dem ECB Board habe ich sonst so an ICs:
Element SOLL IST (Reichlt) Reichelt neu
IC1 74AHC125D SMD HC 125 ?? 74LVX 125 D oder 74ABT
125D-SMD?
IC3 74LV74D SMD HC 74 --> sollte ok sein oder 74AC
74D-SMD?
IC4 74LV00D 74VHC 00 D --> sollte ok sein
Laut dem Datenblatt hätte ich jetzt gesagt, dass die SMD HC Serie 2-7V
abkann... Das Thema Differenzspannung hatte ich da gar nicht gesehen.
Beim AVR ist noch relevant
IC 4 74LV138D SMD HC 138 oK? oder besser 74AC 138D-SMD?
Mein Fazit: Der hier von Reichrlt sollte gehen, da seine Eingänge bis 7V
können und explizit als Anwendung die Anbindung von 5V Systemen an 3V
genannt wird?
http://www.reichelt.de/ICs-74LVX-74VHCT-/74LVX-125-D/3/index.html?ACTION=3&GROUPID=2936&ARTICLE=40619&SEARCH=74%20125&OFFSET=16&
Ich hoffe da ergibt sich jetzt keine böse Überraschung für mich. Hab
letzte Woche bestellt und mich streng an den Schaltplan gehalten. Mit
Mühe wie man oben sieht...
So, bis ich den richtigen 125er habe betreibe ich alles erst mal auf
3,3V.
Nun habe ich noch einen komischen Effekt. Beim Start kommt folgende
Ausgabe:
### main_loop: bootcmd="reset; loadf; go ${startaddr}"
9
Hit any key to stop autoboot: 0
10
CPU nnw in reset state.
11
z80_memfifo_init: $i, 0
12
z80_memfifo_init: $i, 1
13
z80_memfifo_init: $i, 2
14
z80_memfifo_init: $i, 3
15
Bus timeout
16
Command failed, result=1
17
Command failed, result=-1
18
go - start apphacation at address 'addr'
19
Usage:
20
go addr
21
- start application at address 'addr'
22
=>
Stört euch nicht an den Fehlermeldungen, die Parameter sind noch nicht
gesetzt, die SD nicht drin und die CPU nicht angeklemmt.
Immer an EXAKT der gleichen Stelle kommt es zu Rechtschreibfehlern:
"CPU nnw in reset state""
"start apphacation at"
Ich habe den Quelltext noch mal überprüft und noch mal neu geflashed
(über den bootloader) - keine Änderung.
War mir erst gar nicht aufgefallen. Jemand eine Idee?
Die AVR Stamp 1.0 macht das nicht:
Marcel A. schrieb:> Auf dem ECB Board habe ich sonst so an ICs:Harald N. schrieb:> Ich hoffe da ergibt sich jetzt keine böse Überraschung für mich.
Bei den anderen IC's gibt es keine Probleme. Die liegen ja komplett auf
3.3V oder auf 5V. Nur der Pegelwandler muss mit beiden Spannungen klar
kommen, deshalb auch 74AHC... oder 74LVC...
Marcel A. schrieb:> War mir erst gar nicht aufgefallen. Jemand eine Idee?
Sieht mir nach einem Timing Problem aus. Bestücke doch erst mal komplett
CPU und RAM damit die Busübernahme vom AVR korrekt durchgeführt werden
kann.
Ich werde bekloppt...
Zunächst mal: mit dem AVR 1.0 auf dem ECB und der Z180-Stamp (alles
3.3V) geht es prima - auch die beiden SD-Karten. Zugriff auf CPM ok.
A: BDOS3 SPR : BNKBDOS3 SPR : CCP COM : COPYSYS COM : CPMLDR REL
48
A: DATE COM : DEVICE COM : DIR COM : DUMP COM : ED COM
49
A: ERASE COM : GENCOM COM : GENCPM COM : GET COM : HELP COM
50
A: HELP HLP : HEXCOM COM : PATCH COM : PIP COM : PUT COM
51
A: README : RENAME COM : RESBDOS3 SPR : SAVE COM : SET COM
52
A: SETDEF COM : SHOW COM : SID COM : SUBMIT COM : TYPE COM
53
A: FC INI : FC80 COM : DISKCOPY COM : KERMIT COM : PROFILE BAK
54
A: PROFILE SUB
55
A>
Nun die AVR 1.1 (gleiche Environment-Einstellungen und Karten) - und
später auch im gleichen ECB.
Wenn ich die AVR Stamp mit der 2561er firmware flashe und "standalone"
betreibe (3,3V oder 5V Einstellung), sieht die Startmeldung gut aus
(keine "Rechtschreibfehler", mehr aber auch nicht, da keine SD-Karte
verfügbar).
### Reset reason(s): Power on, External, Brown out.
3
4
ATMEGA2561+Z8S180 Stamp Monitor V6.5 (8.3.2016)
5
6
### main_loop entered: bootdelay=5
7
8
### main_loop: bootcmd="reset; pin 8 low; loadcpm3; go ${startaddress}"
9
Hit any key to stop autoboot: 0
10
CPU now in reset state.
11
z80_memfifo_init: 0, 0
12
z80_memfifo_init: 1, 0
13
z80_memfifo_init: 2, 0
14
z80_memfifo_init: 3, 0
15
Error: failed to open '1:/cpm3+8drives.sys'
16
Command failed, result=1
17
## Starting application at 0xc600 ...
18
=>
Wenn ich die AVR Stamp dann auf 3,3V jumpere und in das Basisboard
einsetze, erscheinen wieder die "Rechtschreibfehler" (siehe nnw statt
now) an immer genau der gleiche Stelle.
Auch meldet er BUS TIMEOUT und kann angeblich das CPM.SYS nicht laden.
Ebenfalls sehen die z80 memfifo-Zeilen ganz anders aus...
### main_loop: bootcmd="reset; pin 8 low; loadcpm3; go ${startaddress}"
9
Hit any key to stop autoboot: 0
10
CPU nnw in reset state.
11
z80_memfifo_init: $i, 0
12
z80_memfifo_init: $i, 1
13
z80_memfifo_init: $i, 2
14
z80_memfifo_init: $i, 3
15
Loading: '0:/cpm3+8drives.sys'...
16
17
BNKBIOS3 SPR F900 0500
18
BNKBIOS3 SPR C600 2A00
19
RESBDOS3 SPR F300 0600
20
BNKBDOS3 SPR 9800 2E00
21
22
60K TPA
23
Bus timeout
24
Error: failed to read '0:/cpm3+8drives.sys'
25
Command failed, result=1
26
## Starting application at 0xc600 ...
27
=>
Zugriff auf die SD geht aber soweit ich das testen kann:
1
=> sd init 0
2
rc=00
3
=> fatls 0:
4
----A 2015/09/23 20:51 8388608 ws33.dsk
5
----A 2015/09/24 19:46 8388608 basic.dsk
6
----A 2015/09/23 21:05 8388608 bdsc.dsk
7
----A 2015/06/12 09:14 22784 cpm3_4d.sys
8
----A 2015/09/24 10:57 25600 cpm3_8d.sys
9
----A 2015/09/23 22:00 25600 cpm3+8drives.sys
10
----A 2015/03/13 18:35 8388608 CPM3SY~1.DSK
11
----A 2015/05/21 08:16 14548992 cpm3test.dsk
12
----A 2015/09/23 20:54 8388608 dbaseii.dsk
13
----A 2015/09/20 17:57 8388608 development.dsk
14
----A 2015/08/27 15:49 8388608 editor.dsk
15
----A 2015/06/01 16:41 8388608 kermit.dsk
16
----A 2015/09/23 20:57 8388608 multiplan.dsk
17
----A 2014/12/12 19:54 8388608 neu.dsk
18
----A 2015/12/20 21:54 8388608 turbo3.dsk
19
----A 2008/04/12 19:19 1113536 vedit.dsk
20
----A 2015/09/24 14:33 8388608 mp.dsk
21
----A 2015/09/24 13:58 8388608 ws.dsk
22
----A 2015/12/18 18:40 8388608 ws4.dsk
23
19 File(s), 133177024 bytes total
24
0 Dir(s), 3720128K bytes free
25
=> fatstat 0:
26
FAT type: 3
27
Bytes/Cluster: 32768
28
Number of FATs: 2
29
Root DIR entries: 0
30
Sectors/FAT: 941
31
Number of clusters: 120320
32
FAT start (lba): 14502
33
DIR start (lba,cluster): 2
34
Data start (lba): 16384
35
Volume name: CPM
36
Volume S/N: 3A09-FE1C
37
38
19 files, 133177024 bytes.
39
0 folders.
40
3850240 KB total disk space.
41
3720128 KB available.
42
=>
Nehme ich an dieser Stelle die cpm3_4d.sys (von früher) lande ich einer
Bootschleife.
Es macht auch keinen Unterschied, ob ich die Datei von 0: oder 1: lese.
Noch eine Info wg. Bus Timeout. Die Duo-Led geht nach kurzer Zeit von
Orange auf grün und die WAIT Led geht dann aus - so wie es sein soll.
Auf zum Z180 Board ist allerdings noch ein Quarz drauf. Der Jumper steht
aber auf "Taktversorgung von Extern" und auf dem ECB steht der Jumper
auf ACLK0. Ich messe an dem Jumper (Mitte) auch genau den Takt.
Umjumpern auf intern Quarz macht aber auch keinen Unterschied.
Mit der AVR 1.0 macht der Quarz hier keine Zicken. Oder muss der raus
(Thema hatten wir oben schon mal...)
Bei "Rechtschreibfehlern" in der Ausgabe würde ich auf grenzwertiges
Taktsignal tippen, obwohl dafür wieder sehr wenige Fehler drin sind.
Die Bus Timeouts könnten auch von einem unzuverlässigen Clock verursacht
sein. Würde dem Z180 der Takt ganz fehlen, müßte der Fehler schon viel
früher kommen.
Die AVRs werden bei 3,3V ja deutlich übertaktet.
Hast Du einen ATmega2561 (Ausgabe von avrdude weiter oben) oder doch
einen ATmega2561V (Hast Du oben mal geschrieben)? Letzterer ist nur bis
8MHz spezifiziert.
Jedenfalls:
- Welcher Taktoszillator wird verwendet? (fuses)
- Oszillator und CLKO pin mit Oszi anschauen.
- Taktfrequenz runtersetzen. Wenn kein passender Quarz vorhanden,
den Prescaler umprogrammieren: In main.c, Funktion setup_avr() :
CLKPR = _BV(CLKPCE);
CLKPR = 0; // --> CLKPR = 1;
Leo C. schrieb:> Bei "Rechtschreibfehlern" in der Ausgabe würde ich auf grenzwertiges> Taktsignal tippen, obwohl dafür wieder sehr wenige Fehler drin sind.>> Die Bus Timeouts könnten auch von einem unzuverlässigen Clock verursacht> sein. Würde dem Z180 der Takt ganz fehlen, müßte der Fehler schon viel> früher kommen.
Ich habe mal den Quarz auf dem Z180 ausgelötet - keine Änderung.
>> Die AVRs werden bei 3,3V ja deutlich übertaktet.> Hast Du einen ATmega2561 (Ausgabe von avrdude weiter oben) oder doch> einen ATmega2561V (Hast Du oben mal geschrieben)? Letzterer ist nur bis> 8MHz spezifiziert.
Den "ohne" V - aber laut Datenblatt sieht es so aus, dass der bei 16MHz
eh nur einen "Safe"-Bereich von 4,5 - 5,5V hat. (Wieso ich oben
geschrieben habe, dass das Board auch bei 3,3V standalone läuft, kann
ich nicht sagen, denn dafür ist ja gar keine Spannung auf dem Board :-))
Hätte ich doch mal den 1281er genommen, aber den gibts bei Reichelt
nicht (mehr). Aber eigentlich will ich ja eh bei 5V betreiben - da muss
ich nur noch die 125er austauschen...
>> Jedenfalls:> - Welcher Taktoszillator wird verwendet? (fuses)
Exakt wie bei 1281 bzw. in der Doku. AF D6 FD
> - Oszillator und CLKO pin mit Oszi anschauen.
Kann ich nicht - das schafft wohl mein altes Teil nicht mehr...
> - Taktfrequenz runtersetzen. Wenn kein passender Quarz vorhanden,
Das muss ich dann wohl mal testen. Wäre ja übel.
> den Prescaler umprogrammieren: In main.c, Funktion setup_avr() :> CLKPR = _BV(CLKPCE);> CLKPR = 0; // --> CLKPR = 1;
> den Prescaler umprogrammieren: In main.c, Funktion setup_avr() :> CLKPR = _BV(CLKPCE);> CLKPR = 0; // --> CLKPR = 1;
Das hat aber zur Folge, dass die serielle Ausgabe Müll macht - offenbar
wird dann eine andere Übertragungsrate eingestellt? (115200/8) = 14.400?
Mein Held :-)
CLKPR und F_CPU haben es gebracht - alles ok bei 3,3V.
Gut dass du mir gezeigt hast, wie ich die Buildumgebung einrichten
musste!
Jetzt hoffe ich mal, dass ich bei 5V dann auch wieder den Takt
verdoppeln kann.
Jetzt ist die Frage, ob Du einen Ausreißer hast, oder ob sich der 2561
grundsätzlich schlechter übertakten läßt, als der 1281. Das die neue
Layoutversion (1.1) mehr Probleme macht als die alte, schließe ich mal
aus, das sie bei Joe mit ATmega1281 ja einwandfrei zu laufen scheint.
> Jetzt hoffe ich mal, dass ich bei 5V dann auch wieder den Takt> verdoppeln kann.
Gerade beim ATmega2561 sollte die maximale Taktfrequenz unabhängig von
der Betriebsspannung sein, siehe Anhang. Auf jeden Fall gibt es aber
einen Unterschied zwischen ATmega2561 und dem Rest der Familie.
Das Bild hatte ich auch gesehen, da hatte mich gewundert, dass die
X-Achse erst bei 4,5 V anfängt.
Wie du schon sagtest, auf jeden Fall etwas anders. Wir werden sehen.
Leo C. schrieb:> Das die neue> Layoutversion (1.1) mehr Probleme macht als die alte, schließe ich mal> aus, das sie bei Joe mit ATmega1281 ja einwandfrei zu laufen scheint.
Ist nicht repräsentativ, aber die zwei Versionen(1.1) die ich aufgebaut
habe laufen mit dem ATmega1281 und 3.3V stabil. Bei der Version 1.0 gab
es hin und wieder Probleme beim Einlesen des BIOS von der SD-Card. Das
Taktsignal jitterte sehr. Erst mit "Full-Swing-Crystal" war Ruhe.
Während ich noch auf die 125er warte... habe ich noch zwei weitere
Z80-Systeme in Betrieb genommen:
Den "Microprofessor": http://retro-compi.de/index.php/mpf1
Und den Z80 mini EMUF: http://retro-compi.de/index.php/z80-mini-emuf
Bei letzterem war auch ein sehr schönes MSR-Basic dabei - echtzeitfähig,
guter IO-Zugriff usw.
Ich habe fast keine Informationen darüber gefunden (soll von der Uni
München sein, speziell für den EMUF angepasst, aber auch für DOS und
CP/M verfügbar gewesen sein).
Im Handbuch zum EMUF steht, dass man darauf (ist ja fast wie die Z180
Stamp) ein CP/M realisieren "könnte" :-)
So die 74LVX125 von Reichelt sind angekommmen und nun geht es problemlos
mit 3,3V und 5V. Danke für eure Hilfe!
Bitte diesen Hinweis für die oben mal von mir veröffentlichte BOM
(Reichelt) beachten!
So, nun komme ich endlich zu meinem Frontpanel-Projekt.
Zuvor wollte ich aber dann noch die Funktionweise der
LED/Einzelschrittsteuerung auf der ECB verstehen - das wurde zwar glaube
ich oben schon mal diskutiert, aber ich habs noch nicht...
Zunächst WAIT:
ich gehe davon aus, PG2/WAIT auf dem AVR ist ein Ausgang - der direkt
mit WAIT auf dem Z180 verbunden ist. Wann setzt der AVR das Signal auf
Low? Es ist ja ein Befehl im BootCmd - ist das egal oder erst wenn die
Speicheroperationen fertig sind?
Das Wait-Signal wird ja auch von der Steuerlogik auf der ECB bestimmt.
Wobei die LED ja an der Basis des Transistors hängt und daher nicht
direkt den Zustand von Wait anzeigt sondern nur den über die ECB
gesteuerten Zustand?
Dass der Transistor dann ggf. ein High-Ausgang des AVRs auf LOW zieht
ist egal?
Nun auch die Frage, wie das ECB Wait entsteht. Wenn ich die Logikstufen
richtig verstanden habe: Die CPU "läuft", wenn entweder RUN Lowactiv
gesetzt wird (aktiv vom AVR, wann genau?) oder der Rest der Schaltung
"0" ausgibt. Das passiert glaube ich nur dann, wenn das D-FlipFlip (Takt
aus MREQ/IORQ) mit der STEP-Leitung vom AVR auf 0 gesetzt wird (Reset).
D.h. ein "Schritt" ist immer der Abstand zwischen zwei
Speicher-Aktionen?
Wozu ist der Kondensator C8 vor CLR?
DuoLed HALT/RUN:
Bisher sehe ich in der Praxis nur den Zustand Grün oder Orange. Rot
würde sie ja nur werden, denn HALT auf activelow wäre (und ZRESET high
ist). Für "RUN" ergibt sich der Status ebenfalls aus den Gattern.
Auch hier zeigt "RUN" ja nicht den echten Status des RUN-Signals des
AVRs...? Wird also RUN/STEP nur für die Einzelschrittsteuerung genutzt?
Gehe ich recht in der Annahme, dass ZRESET auch vom AVR gesteuert wird
in der Startphase, um erst den Speicher zu füllen?
> ich gehe davon aus, PG2/WAIT auf dem AVR ist ein Ausgang - der direkt> mit WAIT auf dem Z180 verbunden ist.
Nein, /WAIT ist am AVR nur als Eingang gedacht, um den Zustand abfragen
zu können.
> Wobei die LED ja an der Basis des Transistors hängt und daher nicht> direkt den Zustand von Wait anzeigt sondern nur den über die ECB> gesteuerten Zustand?
Ja. Wäre die Led auf der anderen Seite des Transistors, könnte man
sehen, wenn andere Busteilnehmer die CPU ausbremsen. Diese gibt es aber
bisher nicht, und die Led hätte noch einen Treiber gebraucht.
> Dass der Transistor dann ggf. ein High-Ausgang des AVRs auf LOW zieht> ist egal?
Das ist nicht vorgesehen, da der AVR-Port ja nicht mit der Z180-CPU
synchronisiert ist. Genau dafür gibt es ja die Single-Step Logik auf der
ECB-Karte.
Das ganze funktioniert so:
/RUN = 0 :
Single Step ist abgeschaltet, CPU läuft
/RUN = 1 :
Durch /MREQ=0 oder /IOREQ=0 wird das D-FF gesetzt
--> /WAIT wird 0, CPU wird angehalten.
Durch einen Low-Impuls an /STEP wird das FF zurückgesetzt
--> /WAIT wird wieder 1, CPU läuft bis zum nächsten
Memory- oder I/O-Zugriff.
Der Kondensator sorgt (zusammen mit dem Widerstand) dafür, das an /CLR
des FF nur ein kurzer Impuls erzeugt wird. Sonst könnte es passieren,
dass /CLR beim nächsten MEM- oder I/O-Zugriff noch aktiv ist, und das FF
nicht gesetzt werden kann.
> DuoLed HALT/RUN:
Die Duoled ist unabhängig von der Single-Step-Logik.
Orange: CPU außer Betrieb, AVR-Monitor hat Kontrolle über das System.
Grün: CPU läuft.
Rot: CPU steht auf HALT-Befehl. Das kommt in die Interupt-gesteuerten
I/O-Treiber rein. Dann sieht man an der Led, ob die CPU auf Eingaben
wartet, oder beschäftigt ist. Oder ob das Programm abgestürzt ist, und
in einer Endlosschleife hängt...
> Gehe ich recht in der Annahme, dass ZRESET auch vom AVR gesteuert wird> in der Startphase, um erst den Speicher zu füllen?
Ja. Und es gibt Monitor-Befehle um einen Reset-Impuls auszulösen, oder
den Reset dauerhaft zu aktivieren.
Ich muss mich auch noch mal mehr mit der Speicheraufteilung
beschäftigen. Die Darstellung ganz weit oben weicht ja schon vom
"Standard CPM 3" ab. Im Moment bin ich froh, dass die Aufteilung bei
einem normalen Z80 (hier NDR NKC) verstanden habe :-)
Falls ich mal eine "echte" IO-Baugruppe einbauen möchte ("so wie
früher"), würde ich dieser doch eine Adresse in der Page-0 geben (mit
nem einfachen Addessdekoder?
Ich bin mal ein paar Dateien durchgegangen - aber ich finde keine
Übersicht der belegten Adressen?
Hier hier sind ja die I2C-Routinen auch drin - die Uhr ist daran ja
angebunden - ich glaube Adresse 50?.
Kann man den Bus auch "generisch" vom Z180 aus zugreifbar machen?
Ach ja - wie stehts eigentlich um das Vinculum?
Marcel A. schrieb:> Ach ja - wie stehts eigentlich um das Vinculum?
Der läuft gerade auf Sparflamme. Mein Verlag erwartet von mir noch in
diesem Jahr ein 350seitiges Manuskript. Der nächste Schritt beim
Vinculum ist erst mal eine kleine Zusatzplatine, damit jeder Interessent
sich diese Hardware anstecken kann.
Marcel A. schrieb:> Ich muss mich auch noch mal mehr mit der Speicheraufteilung> beschäftigen. Die Darstellung ganz weit oben weicht ja schon vom> "Standard CPM 3" ab.
Wo gibt es denn ein "Standard CP/M 3" mit einem 512 KByte RAM-Chip?
> Falls ich mal eine "echte" IO-Baugruppe einbauen möchte ("so wie> früher"), würde ich dieser doch eine Adresse in der Page-0 geben (mit> nem einfachen Addessdekoder?
I/O wird in Z80-Systemen üblicherweise über I/O-Adressen angesprochen,
hat also mit der Speicher-Adressierung nichts zu tun.
> Ich bin mal ein paar Dateien durchgegangen - aber ich finde keine> Übersicht der belegten Adressen?
Bisher haben wir ja nur die Peripherie, die bereits im Z180 eingebaut
ist. Die Belegung findest Du also in den Z180 Handbüchern. (Und in der
Datei z180reg.inc) Die Z180-Peripherie belegt die ersten 64 Byte des
I/O-Adressraums.
> Hier hier sind ja die I2C-Routinen auch drin - die Uhr ist daran ja> angebunden - ich glaube Adresse 50?.> Kann man den Bus auch "generisch" vom Z180 aus zugreifbar machen?
Das ist angedacht.
Leo C. schrieb:> I/O wird in Z80-Systemen üblicherweise über I/O-Adressen angesprochen,> hat also mit der Speicher-Adressierung nichts zu tun.
Schon klar, so war das auch gemeint.
> Bisher haben wir ja nur die Peripherie, die bereits im Z180 eingebaut> ist. Die Belegung findest Du also in den Z180 Handbüchern. (Und in der> Datei z180reg.inc) Die Z180-Peripherie belegt die ersten 64 Byte des> I/O-Adressraums.
Das hatte ich gesucht. Aber warum nur 64 bytes? Das sind doch "sonst"
256 Bytes? Bis 3F ist ja schon alles voll :-)
Marcel A. schrieb:> Das hatte ich gesucht. Aber warum nur 64 bytes?
Warum denn nicht? Was fehlt Dir denn?
> Das sind doch "sonst"> 256 Bytes?
Wo denn?
>Bis 3F ist ja schon alles voll :-)
2 Adressen, bzw. Adressbereiche hatte ich noch vergessen. 40-5F werden
auf der AVR-Stamp ausdekodiert, um dem AVR 2 Interrupt-Signale senden zu
können.
Mit dem IORQ werden doch A0 - A7 adressiert. Das sind 256 IO Asressen.
Du nutzt doch selbst mit 5F Adressen jenseits 64, vermutlich haben wir
aneinander vorbei gesprochen.
Ich würde meiner IO Karte dann z.B. Die IO Adresse 70h geben... Und
müsste die dan mit den in und out Befehlen ansprechen können?
http://home.mit.bme.hu/~benes/oktatas/dig-jegyz_052/Z80-kivonat.pdf
Letzte Seite.
So, ich habe hier einmal meine Idee einer Bussignal-Anzeige skizziert
mit der Bitte um Feedback.
Falls man davon wirklich eine Platine machen sollte, muss ich mir noch
etwas für die Verbindungen der Basis- und Anzeigeeinheit überlegen.
Für die Anzeige verwende ich derzeit TIL311 - diese haben die
Treiber/Dekoderlogik schon eingebunden - ich hatte einige günstig
erstanden.
Eine Alternative wären vielleicht später noch "normale"
7-Segment-Anzeigen mit eine D345D (ex DDR) Dekoder (habe ich auch welche
hier) - oder eben mit einem AVR als Dekoder-IC.
Im Moment sind alle Signale gepuffert.
Die Status-LEDs sind 1:1 verdrahtet - ohne Monoflop.
Für die Adress-Anzeige habe ich einen Latch aus MREQ und IORQ gebildet.
Wahrscheinlich kann man den auch für die Datenanzeige verwenden,
ansonsten ist ein Latch aus RD/WR vorhanden.
Dann habe ich noch einmal die SingleStep-Logik des ECB Basisboards
übernommen und an "richtige" Schalter für einen manuellen Betrieb
angeschlossen.
Ich habe mich mal gezwungen, KiCad zu nehmen, da Eagle in der
Free-Version ja auch halbe Euro-Platinengröße begrenzt.
Marcel A. schrieb:> So, ich habe hier einmal meine Idee einer Bussignal-Anzeige skizziert> mit der Bitte um Feedback.
Bin unterwegs, deshalb kann ich die Pläne nicht richtig anschauen.
Adressen und Daten sollten imho gleichzeitig gelached werden. Da unser
Adressbus 20 Leitungen hat, würde ich für die Anzeige 5 Stellen
vorschlagen.
Der Step-Taster muß entprellt werden.
Wenn man Displays mit Hexdecoder selber bauen will, wären die 8x8
Matrix-Displays, die man bei den Chinesen in vielen Varianten mit und
ohne Treiber findet vielleicht einen Blick wert.
Gleich kommt Karlsruhe, da könnte ich den Text ja beinahe persönlich
abgeben. :-)
Frohe Ostern
Karlsruhe? - Das ist nicht meine Ecke :-)
5-stelliger Adressbus - ok. Wahrscheinlich wären dann auch noch die
anderen Signale des Z180 wie INT1 und INT2 und ... sinnvoll? Ich habe
mich halt derzeit auf den "Standard"-Z80 beschränkt - das ist mir schon
komplex genug.
Entprellen - reicht das C da nicht? Sonst habe ich noch Schaltungen mit
Doppel-NAND (oder so) zur Entprellung gesehen - meinst du so was?
Und ich habe noch etwas Stress mit dem FTDI (wobei ich immer wieder
schwören könnte, dass ich das vorher nicht hatte).
Solange ich die ECB über USB Power versorge, klappt es wunderbar. Auch
die Umschaltung auf RX/TX-MAX232 auf "echte" serielle (Reset des FTDI)
klappt gut mit einem kleinen Schalter auf der Frontplatte.
Es geht auch weiterhin gut, wenn ich die ECB in den Rahmen stecke,
natürlich den Jumper für BUS Power ziehe aber weiterhin ein USB-Kabel am
FTDI lasse.
Nur wenn ich das USB Kabel nun abziehe (und RESET gegen GND schalte) und
Spannung einschalte, gegen bei beiden LEDs am FTDI auf Dauerlicht. Am
RX/TX kommt zuerst etwas Müll, aber dann kommt die Anzeige. Eingaben
gehen dann aber nicht mehr.
Stecke ich kurz das USB-Kabel in die Buchse, "berappelt" sich der FTDI
(Lampen gehen aus) und ich kann wunderbar über RX/TX und COM1 arbeiten.
Als wenn der FTDI ohne USB-Verbindung in einen undefinierten Zustand
gehen würde beim Power-on. Ich habe aber mit FT-Prog keine mir sinnvolle
erscheinende Einstellung gefunden, das zu ändern.
Vergesst das FT232-Problem. Ich hatte mal (weil es damit besser ging)
einen Widerstand in die TX-Leitung des Moduls eingebaut - ohne geht es
(jetzt) super :-)
Zum Entprellen habe ich (wie auch an vielen anderen Stellen) das hier
gefunden:
http://www.loetstelle.net/praxis/entprellen/entprellen.phphttps://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster
Im S100 Frontpanel wird der Wechselschalter verwendet - ich würde hier
aber die Integrations-Methode (RC + Inverter) nehmen - reicht die
einfache Variante mit R=33k und C=100n?
Beim Testen/Aufräumen meiner "Disk-Images" ist mir aufgefallen, dass man
im AVR Monitor zwar zur Laufzeit neue Images auf Drives legen kann, wenn
man die austauscht, hat das aber zur Laufzeit im CPM keine Auswirkungen.
Marcel A. schrieb:> reicht die einfache Variante mit R=33k und C=100n?
Das kann so pauschal nicht beantwortet werden. Es hängt stark von der
qualität der Schalter (Taster) ab. ich würde es mal mit den vorhandenen
Tastern auf einem Steckbrett erproben.
Marcel A. schrieb:> Entprellen - reicht das C da nicht? Sonst habe ich noch Schaltungen mit
Das C (mit dem R) ist ein Hochpass und macht damit gerade das Gegenteil.
> Doppel-NAND (oder so) zur Entprellung gesehen - meinst du so was?
Ja, wobei man hier auch das 2. FF im 7474 nehmen könnte (Set- und
Reset-Eingang).
Marcel A. schrieb:> Im S100 Frontpanel wird der Wechselschalter verwendet - ich würde hier> aber die Integrations-Methode (RC + Inverter) nehmen
Das geht notfalls auch, aber der Inverter muß ein Schmitt-Trigger sein.
Und wie Joe geschrieben hat, hängt das RC-Glied vom verwendeten Taster
ab.
Für den RUN/STOP-Schalter reicht übrigens ein einfacher Schließer plus
Pullup.
Marcel A. schrieb:> Beim Testen/Aufräumen meiner "Disk-Images" ist mir aufgefallen, dass man> im AVR Monitor zwar zur Laufzeit neue Images auf Drives legen kann, wenn> man die austauscht, hat das aber zur Laufzeit im CPM keine Auswirkungen.
Hast Du nach dem "Disk-Wechsel" auch Ctrl-C gedrückt?
Ja.
CP/M kann ab Version 3 stattdessen auch ein Disk-Change-Signal
auswerten. Dieses Signal müßte vom AVR-Monitor beim Ändern der
Environment-Variable an den Z180 übermittelt werden. Das ist bisher noch
nicht implementiert.
CompactFlash Interface ganz einfach.
Vor kurzem bin ich zufällig darüber gestolpert, daß alle CF-Karten im
'True IDE Mode' 8 Bit Datenübertragung unterstützen. Bei IDE Festplatten
ist das wohl nur bei den allerersten der Fall, aus der Zeit, als noch
PC-XTs verkauft wurden. Eine CF-Karte und einige 'DiskOnModule'[1], die
auch nur einen CF-Controller enhalten, liegen hier schon seit Jahren
rum. Aber ein performantes 16-Bit Interface war mir immer zu
aufwendig[0].
Leider hatte ich keine Decoder (74HC138 oder '139) vorrätig. Damit
könnte man das Gattergrab deutlich reduzieren. Die Buffer in den
Adressleitungen A0-A2 sind leider notwendig. Grundsätzlich funktioniert
das Interface bei 3.3V. Allerdings habe ich bisher nur mit 9,2MHz
getestet. Ob die HC-Gatter bei 18,432MHz (oder mehr) und 3.3V noch
schnell genug sind, habe ich noch nicht getestet.
Der CP/M 3 Treiber funktioniert grundsätzlich. Für den Datentransfer
kann ein DMA-Kanal verwendet werden. Dadurch wird das IF sauschnell.
Allerdings habe ich einen dicken Fehler noch nicht gefunden. Deshalb
gibts dieses Wochenende noch keine Software.
[0] Z.B hier http://www.gaby.de/gide/index.htm
und hier: Beitrag "Spikes, Designproblem ?"
Etwas einfacher, aber nicht mehr performant, ist das hier:
http://www.retroleum.co.uk/electronics-articles/an-8-bit-ide-interface/
[1] Die Teile gibts spottbillig bei Pollin, billiger als die günstigsten
CF-to-IDE Adapter:
http://www.pollin.de/shop/dt/OTAyODkyOTk-/Computer_und_Zubehoer/Hardware/Festplatten_intern/DiskOnModule_PQI_IDE_128_MB.html
Das Kabel, das man optional mitbestellen kann, braucht man nicht, da das
Modul auch über Pin 20 versorgt werden kann. Scheint auch mit 3.3V zu
laufen, aber gründliche Tests stehen noch aus.
Prima Sache!
Die CF wird dann unter CP/M (wie genau?) angesprochen? Was ist denn da
für ein Filesystem drauf?
Leider gibts ja kaum noch CF-Karten (in meiner uralten Kamera steckt
glaube ich noch eine :-)) Von daher bin ich auch sehr auf das USB
Vinculum Projekt gespannt.
Marcel A. schrieb:> Die CF wird dann unter CP/M (wie genau?) angesprochen?
Wie eine IDE-Festplatte. Unter den o.g Links (GIDE und Retroleum) ist
das ausführlich erklärt.
Der Datentransfer erfolg mit voller CPU-Busgeschwindigkeit. Das dürfte
(zumindest beim Lesen) kaum langsamer als eine RAM-Disk sein.
> Was ist denn da für ein Filesystem drauf?
Das halt, das man drauf macht.
Das ist ebenfalls genauso wie auf Festplatten oder SD-Karten. CF-Karten
können nicht im laufenden System gesteckt oder gezogen werden, wenn sie
im Tue-IDE-Mode betrieben werden. Deshalb kann man sie wirklich wie eine
Festplatte behandeln und das Dateisystem kann auch irgendwas spezielles
für diesen einen Computer sein.
Ich habe vor, die Karte genauso zu partitionieren, wie auf dem
AVR-CP/M-System, also MBR mit Partitionstabelle und 1 bis 4
CP/M-Partitionen. Der Rest der Karte kann dann für andere Dateisysteme
genutzt werden (FAT). Nicht geplant ist, CP/M-Dateisystem-Images auf
einer FAT-Partition zu unterstützen. Dafür haben wir ja noch die
SD-Karten.
> Leider gibts ja kaum noch CF-Karten
Da wäre ja vielleicht das Pollin DiskOnModule Teil eine Möglichkeit.
Leo C. schrieb:> Da wäre ja vielleicht das Pollin DiskOnModule Teil eine Möglichkeit.
Sehr schöne Arbeit Leo!
Über Reroleum bin ich vor einiger Zeit auch schon mal gestolpert und
habe in einem Anflug von "Hamstern" bei Max Pollin zugelangt :-)
Wenn also jemand die Versandkosten sparen möchte... für einige (viele)
CP/M Systeme reicht mein Vorrat. Vielleicht gleich mit einer kleinen
Platine, dann lohnt sich der Aufwand auch bei Elecrow die USB-Platine zu
bestellen.
Aber Hallo! ;-)
Ich hatte mich mit 3 Stück begnügt. Damals hatten sie aber noch 1,50
€/Stck gekostet.
> Vielleicht gleich mit einer kleinen Platine
Eine kleine Platine, auf die nur so ein DoM passt, könnte man als
Huckepack-Platine für das Stamp-Modul machen. Für einen
CF-to-IDE-Adapter reicht der Platz nicht. Die Adapter bestehen
eigentlich auch nur aus der Verbindung zweier Stecker. Könnte man auch
weglassen. Aber die 50 poligen CF-Sockel sind einzeln wahrscheinlich
teurer, und vor allem schwer zu löten.
Europakarte (ECB) ist eigentlich überdimensioniert. Es sei denn, wir
finden noch was anderes, was mit drauf passen könnte. Andererseits
könnte man eine ECB-Karte auch für andere Systeme verwenden.
Leo C. schrieb:> Eine kleine Platine, auf die nur so ein DoM passt, könnte man als> Huckepack-Platine für das Stamp-Modul machen.
So war damals schon mein Plan, einfach Huckepack auf den Stamp als
Festplatte.
> Vielleicht noch einen Parallelport zum Steuern und Regeln, 8255.
Z80 PIO?
Allerdings geht damit kein 3.3V Betrieb. Ein paar Latches und Buffer?
> Was ist denn U5 für ein Baustein? 245/541?
HC126. War in der Bastelkiste. Jeder andere Buffer geht aber auch. Man
hätte auch die 3 freien Gatter nehmen können, aber da 2 davon
invertieren, wäre die Reihenfolge der IDE-Register nicht mehr Standard.
Außerdem gings mit dem Extra-Baustein schneller.
Leo C. schrieb:> Bank 0: 00000 - 0EFFF> Bank 1: F0000 - 1DFFF (+ F000)> common: 1E000 - 1EFFF (+ F000)> Bank 2: 1F000 - 2DFFF (+ F000 + 1000)> usw. (+ F000)
ich kämpfe mich gerade durch die Speicherarchitektur.
Muss es bei Bank 1 nicht heißen:
Bank 1: 0F000 - 1DFFF (+ F000) ?
Joe, ich glaube in deinem Anhang A sind ein paar Fehler in der
PIN-Beschreibung:
- A12/A13 ist laut AVR Schaltplan PG5/PG4 (nicht PG4/PG5)
- B26 ist ja beim AVR RXD0
- B27 ist ja beim AVR RXD1
- Müssten B3-B5 nicht bei Z180 und AVR A16-A18 sein (statt PE2-PE4)?
Marcel A. schrieb:> - A12/A13 ist laut AVR Schaltplan PG5/PG4 (nicht PG4/PG5)
Das verstehe ich nicht. Im AVR-Schaltplan steht:
B8 - A13 - PC5
B9 - A12 - PC4
ist doch korrekt so.
> - B26 ist ja beim AVR RXD0> - B27 ist ja beim AVR RXD1
B26 /WAIT - RXD0
B27 /PHI - TXD0
> - Müssten B3-B5 nicht bei Z180 und AVR A16-A18 sein (statt PE2-PE4)?
B3 - A18 - PE4
B4 - A17 - PE3
B5 - A16 - PE2
ist doch auch korrekt, oder?
Joe G. schrieb:> Marcel A. schrieb:>> - A12/A13 ist laut AVR Schaltplan PG5/PG4 (nicht PG4/PG5)> Das verstehe ich nicht. Im AVR-Schaltplan steht:> B8 - A13 - PC5> B9 - A12 - PC4> ist doch korrekt so.
Sorry, ich meinte A12/A13 auf der PIN-Leiste der AVR-Stamp. Das ist im
obigen Übersichtsbild anders als im AVR Schaltplan. Da ist PG4/PG5
anderes herum.
>>> - B26 ist ja beim AVR RXD0>> - B27 ist ja beim AVR RXD1> B26 /WAIT - RXD0> B27 /PHI - TXD0
Genau - da hatte ich wohl das SVN nicht aktualisiert.
>>> - Müssten B3-B5 nicht bei Z180 und AVR A16-A18 sein (statt PE2-PE4)?> B3 - A18 - PE4> B4 - A17 - PE3> B5 - A16 - PE2> ist doch auch korrekt, oder?
In deinem Bild schon. Ich bezog mich aber auf dieses hier (da wo die
gemeinsamen Anschlüsse grün sind). Da müsste B3-B5 doch auch grün sein?
Marcel A. schrieb:> Sorry, ich meinte A12/A13 auf der PIN-Leiste der AVR-Stamp. Das ist im> obigen Übersichtsbild anders als im AVR Schaltplan. Da ist PG4/PG5> anderes herum.
Bin immer noch verwirrt. Im AVR Schaltplan liegen
B8 - A13 - PC5
B9 - A12 - PC4
und am Z180 Schaltplan liegen
B8 - A13
B9 - A12
alles so wie in der Beschreibung.
> Da müsste B3-B5 doch auch grün sein?
ja, dürfen grün sein.
Ich habe mal eine Frage zur Inbetriebnahme..es ist ziemlich schwierig
sich durch den ellenlangen Thread zu fräsen..
Ich habe die Version 1.1 von den Platinen, noch keine SD Karte dran,
weil mir der Slot auf der AVR-Stamp noch fehlt.
Auf der Z180-Stamp befindet sich ein Z8S18020VSG, der war bei mir noch
in der Ramschkiste und den gibts wohl auch noch bei Darisus...
Die ECB Platine ist mir Einzelschrittmimik bestückt, deshalb habe ich
ins bootcmd pin 8 low aufgenommen.
Auf dem AVR 1281 befindet sich hexrel6.5, mir ist es aber noch nicht
gelungen einen "Piep" vom Z180 zu sehen, werde als nächstes mal testen
ob der ein Halt ausführt. Die Versorgung steht jetzt komplett auf 3,3V
von der Z180 Stamp, ich hoffe der Z180 läuft da mit 18Mhz und 3,3V
noch..?
Wie ist das bei hexrel-6.5, ich nehme an der DDTZ ist da noch drin, ist
der auf Startadresse 0 so dass ich nach connect mal einen Prompt sehen
müßte?
Die seriellen Schlipse sind auch noch nicht dran, bestellt ist das Zeug,
hoffe das kommt noch vor dem WE..
edit:
mtest und Z180 auf Halt schicken scheint zu funktionieren, warum bekomme
ich auf der USB Strippe keine Verbindung?
BTW: connect sagt escape char währe ^^ ist aber bei mir ^X ??
Gruß,
Holm
> ob der ein Halt ausführt. Die Versorgung steht jetzt komplett auf 3,3V> von der Z180 Stamp, ich hoffe der Z180 läuft da mit 18Mhz und 3,3V> noch..?
Laut Datenblatt sollte er.
> Wie ist das bei hexrel-6.5, ich nehme an der DDTZ ist da noch drin, ist> der auf Startadresse 0 so dass ich nach connect mal einen Prompt sehen> müßte?
Der Prompt kommt defaultmäßig an ASCI1. 115200 Baud bei 18,432MHz.
Um die Verbindung zu der AVR-Console zu leiten, mußt Du nach dem loadf
das IOBYTE auf RAM-Adresse 3 auf 0 setzen (mm- oder mw.Befehl).
> ### main_loop: bootcmd="reset; pin 8 low; loadf; go ${startaddr}"
"go ${startaddr}"
Die Variable heißt eigentlich "startaddress" und das funktioniert nur
mit dem loadcpm3-Befehl (Könnte man auch mal ändern). Also "go 0"
stattdessen (in "bootcmd" oder manuell).
> startaddr=0
Na gut, wenn in startaddr zufällig 0 steht, gehts auch.
> => go 0> ## Starting application at 0x0000 ...> => connect> Connecting to CPU. Escape character is '^^'.>> ...da passiert dann nix mehr. Die DuoLED grinst grün...
Hm, sollte eigentlich so aussehen:
1
=> g 0
2
## Starting application at 0x0000 ...
3
=> z80_memfifo_init: 0, 2e67
4
z80_memfifo_init: 1, 2eab
5
z80_memfifo_init: 2, 2eef
6
z80_memfifo_init: 3, 2f13
7
con
8
Connecting to CPU. Escape character is '^^'.
9
DDT/Z - HD64180 (ROM)
10
>
> Das mit dem A17 Pulldown an der Z180 Stamp hatte sich indessen erledigt?
Ja.
Nachtrag:
Du könntest versuchsweise auf der ECB-Karte den Jumper JP3 auf 2/3
stecken und über PIN3 einen langsameren Takt einstellen.
...ich kriege die Männeln...
Leo mir ist der Zusammenhang mit den Clocks nicht klar und
offensichtlich liegt hier das Problem.
Ich habe sowohl ein 18,432Mhz Quarz da liegen als auch mit den Jumpern
(JP3 auf ECB und JP1 auf Z180 Stamp) experimentiert. (Joe,
bitte...bitte! kennzeichne das nächste Mal jeweils die Position 1 an
Steckverbindern und Jumpern, Du kriegst vom Platinenhersteller kein Geld
zurück wenn Du das weg läßt!) und habe jetzt irgendwie da durcheinander.
Ich habe in dessen irgend ein China PL2303 Viech an Con 3 angeprömpelt
und JP5 auf der ECB Platine gesetzt, damit dürfte der MAX abgeschaltet
sein.
Ich habe nun gemerkt das die Schnittstelle mit 115200 sendet und nicht
mit 57600 wie ich erwartet hatte. Mir sind ja etliche Details noch nicht
klar und ich dachte die Z180 wird immer mit 18,432 betrieben, CLK0 tut
das aber natürlich mit 9,2Mhz...
Ich habe jetzt also endlich ein Farbbild:
1
=> conn
2
Connecting to CPU. Escape character is '^^'.
3
4
>
5
> ?
6
DDT/Z180 (ROM) Commands:
7
> @ examine/substitute the displacement register @
8
> A [address] Assemble
9
> B[X] display [or clear] all Breakpoints
10
B breakp [:count] [breakp..] set Breakpoints
11
BX address [address..] clear Breakpoints
12
>>C[N][J] [count] trace over Calls [No lit] [Jumps only]
13
C[N][J] W|U expression trace over Calls While|Until ...
14
>>D [startadr] [ndadr] Display memory in hex and ascii
15
> G [startadr] [;breakp..] Go [to start] [temprary breakpoints]
16
> H [expression [expression]] compute expressions / show High/max load adr.
Ich habe noch seltsame Effekte..
Da ich noch einige Z8018010VSC habe, habe ich mal einen von denen in die
Fassung gesteckt (und weil der PLCC Zieher in der anderen Werkstatt
liegt, darf ich nun die Fassung wechseln :-|).
Offensichtlich arbeitet der bei 9Mhz Takt nur mit 4,5Mhz und erzeugt
eine Baudrate von 14400 die ich mir nicht angucken kann.
Mit 18,4 Mhz vom AVR scheint der aber mit 9,2Mhz zu laufen und 57600
Baud zu erzeugen, während der Z8S18020VSC da 115200 Baud erzeugt, also
sehr wahrscheinlich mit 18,4Mhz Takt tackert..
Ist das in Ordnung so?
Leo wenn ich die Schnittstelle durch beschreiben des IO Bytes von ASCI1
auf AVR USB umstelle, bekomme ich so lange keine Ausgabe am AVR bis ich
auf der ASCI1 nicht wenigstens noch mal Enter gedrückt habe..??? Wo
klemmt das denn?
Gruß,
Holm
Erst mal herzlichen Glückwunsch zu Deinem nun laufenden System. Bei
Deinem vorherigen Artikel ist mir nicht ganz klar geworden, ob Du zum
Z180-Clock noch konkrete Fragen hast. Die verschiedenen Varianten sind
zugegebenermaßen etwas verwirrend.
> Z8018010VSC
Dem fehlt das S im Typnamen und damit offensichtlich auch das "Clock
Multiplier Register", CMR. Also ist der Systemtakt PHI immer (nur) die
Hälfte des Input-Clocks EXTAL.
> Ist das in Ordnung so?
Scheint so.
> Leo wenn ich die Schnittstelle durch beschreiben des IO Bytes von ASCI1> auf AVR USB umstelle, bekomme ich so lange keine Ausgabe am AVR bis ich> auf der ASCI1 nicht wenigstens noch mal Enter gedrückt habe..??? Wo> klemmt das denn?
Von welcher Schnittstelle das nächste Zeichen zu lesen ist, wird halt
nur beim Eintritt in die Consoleneingaberoutine abgefragt, nicht in der
Schleife, die dann den entsprechenden Port pollt.
Naja, die Fragen mit dem Clock sind weitestgehend geklärt, zumindest
wurde mir das klar als ich mit dem Oszi geguckt habe was los ist.
Problematisch ist halt bei der Erstinbetriebnahme das man nicht weiß wo
bei Jumpern oder Steckern gerade die 1 ist, auch ein Blick in die Doku
hilft da nicht wirklich. Ich habe mir weiter oben im Thread schon die
Augen gebrochen um auf den Bildern raus zu finden wo die Jumper stecken.
Den Unterschied Z180 und ZS180 hatte ich vermutet, kirre machen kann
eines das aber schon, wenn man im Terminalprogramm nur Sauerkraut
angezeigt bekommt weil die Baudrate 28800 oder 14400 als Teil von 57600
einfach mal nicht einstellbar ist, oder wie ich das ich mit 57600 eben
keine Daten bekomme weil ich ein Quarz mit 18Mhz gesteckt hatte...
Eine Kurz-BDA wäre deshalb wirklich nicht schlecht.
Diese Art IO-Byte Auswertung habe ich schon mal wo gesehen (Zapple
Monitor?), aber so optimal ist das wohl nicht wenn das Ding auf einer
toten Schnittstelle im Kreis herum tritt, ich weiß, man kann sich da
ganz leicht zum Ei machen wenn man alle Eventualitäten berücksichtigen
will.
Danke einstweilen, ich warte jetzt ob die Post die SD Fassungen
bringt..oder ich hänge ne Andere mit Drähten freitragend an.. :-)
Gruß,
Holm
An dem Thema mit den Jumpern bin ich auch schon verzweifelt. Ich baue
gerade eine Doku dazu auf (www.retro-compi.de), bin aber noch nicht bei
der ECB angekommen (intern schon vorbereitet) mit der Doku.
Marcel A. schrieb:> An dem Thema mit den Jumpern bin ich auch schon verzweifelt.
Da muss ich wohl nochmals ran... Aber ihr habt natürlich Recht, für mich
ist die Funktion der Jumper ja klar, weil ich sie genau so eingebaut
habe.
Ja Joe, ich will keinesfalls nörgeln..aber der Bestückungsdruck
ermöglicht doch problemlos z.B. Pin 1 zu kennzeichnen. Das nützt nun
zwar rückwirkend nix mehr aber den Nächsten :-)
Pollin Paket ist gekommen und der SD Adapter aufgelötet, Karte scheint
zu funzen nun muß CP/M drauf.
Kann ich irgendwo "disks" mit Programmen schnorren, abgesehen von
Turbopascal und Turbo Modula?
(BTW: ich bin mir recht sicher früher mit TP 3.02A gearbeitet zu haben,
ich finde das sich auch noch, der nächste CP/M Rechner steht rechts
neben mir, links liegen die Stamps und viele Disketten habe ich auch
noch) der übernächste im Nebenzimmer und der A7150 noch 2 weiter kann
auch SCP86(CP/M86)..achso, unterm Tisch steht noch eine P8000...
Man bräuchte halt so Power 3.07, M80/L80/Linkmt/Tubo,WS,Irgendwas-C,
(BDS gefällt mir wegen den Sourcen..) ggf. ein Basic, einen Reassembler
wie Rezilog etc..pp..
Ich habe das Alles da, die cpmutils sind auch installiert, auch simh
samt altair... aber Jeder macht die Arbeit immer wieder?
Mit CP/M 3.0 habe ich allerdings das erste Mal zu tun.
Gruß,
Holm
Ich kenne nur TP 3.01a - damit bin ich auf dem PC groß geworden.
Und den Rest findet Google, da gibt es tolle Seiten mit endlos Software.
Habe bei mir inzwischen vieles zusammengestellt. Nimm dir einfach ein
8mb leeres Images und packe das mit den cpmtools drauf. Ist hier im
Thread oder auf meiner HP erklärt.
Ja, 3.01A auf DOS ist mir auch bekannt, ich habe aber die Kiste rechts
mal angeworfen:
TURBO Pascal system Version 3.02A
..ok, ich mache meinen eigenen Stiefel..
Gruß,
Holm
Leo gibts statt z180-stamp-cpm3-0.0.zip ein aktuelles Binary?
Ich habs versucht selber zu bauen aber dazu muß ich erst mal den zxcc
auf FreeBSD portieren, der erzeugt Müll:
Hier mal der aktuelle Stand meines "Speicherbildes", welches ich im
Rahmen meines "CP/M Selbststudiums" unter Leo's Anleitung erstellt habe.
Es passt zu folgender Einstellung hinsichtlich BDOS:
BNKBIOS3 SPR F900 0500
BNKBIOS3 SPR C600 2A00
RESBDOS3 SPR F300 0600
BNKBDOS3 SPR 9800 2E00
(Leo's aktuelles CPM hat das BDOS erst bei F400, so dass sich ein paar
100 Bytes mehr ergeben für den TPA).
Jetzt muss ich noch meine "Hausaufgabe" lösen, warum die top page FE ist
statt FF und was in den obersten 256 Bytes steckt. Fudel-Tipps
willkommen :-)
Der DDTZ wird auf ASCI1 sauber mit 115200 Baud angezeigt wenn geladen,
memtest is ok aber weder das cpm3.sys noch das cpm364d.sys (aus dem Zip
oben) spucken auf der ASCI0 irgend etwas aus. Wenn ich das richtig
verstanden habe muß die Schnittstelle auf 19200 Baud stehen (18Mhz
Takt).
Ist das richtig?
Ich habe eine Weile gekämpft weil ich erstens gedacht hatte das Joe den
Fehler mit der "männlichen Belegung" der RS232 Pfostenstecker in der
Version 1.1 schon korrigiert hatte..dem war nicht so, dann hatte ich den
MAX freundlicherweise verkehrt herum aufgelötet weil das weder aus dem
Bestückungsdruck noch aus der PDF zu erkennen war und mir falsch herum
halt wahrscheinlicher erschien :-|
Der MAX scheint es aber überlebt zu haben weil die ASCI1 nun
funktioniert und auf der ASCI0 auch mit dem OSZI an A15/A16 der Z180
Stamp beim besten Willen nichts zu erkennen ist.
Funktionieren die beiden cpm.sys Files überhaupt mit der hexrel 6.5 auf
dem AVR?
Mit dem zxcc bin ich noch nicht viel weiter, ich habe ein olles Debian
Wheezy in einer VM ...da ist aber git zu alt und es geht auch nicht
weiter. Ich habe noch ein FreeBSD 10.1 32 Bit System und will das dort
auch noch mal checken (das läuft noch mit UFS, ich schiebe zxccs
Probleme darauf das das ZFS auf meiner Kiste einfach ein Bisschen zu
modern für diese Linuxsoftware ist, daher die vfs/statfs
Probleme..dürfte zu beheben sein ..aber doch nicht alles auf allen
Fronten auf einmal bitte..)
..ich hätte nur gerne mal ein CP/M auf den Stamps booten gesehen damit
ich eine Referenz habe auf die ich mich beziehen kann, warum macht Ihr
das so kompliziert und warum sind modernere Binaries nicht verfügbar?
Ich verstehe es einfach nicht warum ihr nicht ein komplettes
"Starterkit" mal irgendwo abwerft.
Gruß,
Holm
Marcel A. schrieb:> Nimm doch mal die Files von meiner HP, die funktionieren (bei mir).
...nicht wirklich, oder?
"Not Found
The requested URL
/mages/retrocompi/z180/avr/stamp-monitor-6.5+8drives-1281.hex was not
found on this server.
Apache/2.2.22 (Debian) Server at www.retro-compi.de Port 80"
Wo finde ich die genau?
...ahh..ok, mit einem "i" mehr siehts besser aus, mal gucken.
>> Startadresse D100? Das ist bei mir C600....
Die setzt das cpm354d.sys doch selbst beim Laden ins Environment, daran
habe ich doch gar nix geändert.
Gruß,
Holm
Ok, ich habs mit Deinen Files
cpm3+8drives.sys
stamp-monitor-6.5+8drives-1281.hex
probiert, geht immernoch nicht.
(kein bootlader im AVR, programmiert mit ISP/avrdude)
Muß ich mehrere (8) Disks definieren damit das läuft?
Ich habe A15 und A16 an der Z180 Stamp mal mit dem Schraubenzieher
gebrückt, dann werden die Zeichen aus meinem Terminalprogramm auch
geechoet, der Kanal 0 vom Max ist also sowohl Sender als auch
Empfängerseitig in Ordnung.
jetzt fällt mir langsam nix mehr ein, was könnte ich noch probieren?
>Und stimmt, in Leos neuer Firmware holt er sich das aus dem sys, die>Version nutze ich aber noch nicht.
..könntest aber wie es aussieht, denn die c600 hat er auch selber
rausgekriegt, das ist also im Lader schon drin.
Gruß,
Holm
Hm, eigentlich kann man nichts falsch machen...
Hast du die Environment Variablen mal so belegt wie bei mir?
Und bei mir geht alles mit 18Mhz.
Und du lädst ja auch nicht das cpm 8 Drives sondern ein Test.sys?
Marcel A. schrieb:> Stimmt, na dann, viel Spaß. Sehe gerade, die 9 MHz liegt an deiner CPU> ohne Verdoppler?
Ich habe JP9 rechts stecken, da kommt wohl 18Mhz vom AVR (ACLK0).
Das CP/M behauptet ja auch "Estimated CPU clock [Hz]: 18432000".
BTW: Ich habe tinst von Turbopascal angeworfen, VT100 existiert ja als
Auswahl da nicht, habe Ansi ausgewählt, scheint erst mal zu
funktionieren.
Gibts eine bessere Auswahl für ein XTerm?
1
---------------------------------------
2
TURBO Pascal system Version 3.02A
3
CP/M-80, Z80
4
5
Copyright (C) 1983,84,85 BORLAND Inc.
6
---------------------------------------
7
8
Terminal: ANSI
9
10
11
12
Include error messages (Y/N)?
Sogar das Highlighting der Menüauswahl klappt ( Dir Quit compiler
Options etc).
WS3.3 läuft auch, da gibts ja auch vt100 in der Auswahl, werde aber den
DDR (Robotron) Clone TP auch mal testen, da sind Druckerdefinitionen für
Typenraddrucker drin und ich habe Sowas :-)
Nochwas: Ich habe 3 4Gig SD Karten, eine davon MicroSD mit Adapter die
problemlos mit den Stamps zu funktionieren scheinen, allerdings weder
mit WinXP noch mit meinem FreeBSD über einen Hama Card Reader.
Ich bekomme da im Prinzip Device Timeouts. Hat Jemand ne Idee wie ich
die zum wirtschaften bekomme? Fehler bekomme ich mit dem fat und sd*
Zeug nicht.. kann auch Daten dumpen etc...
Ich kann aber z.B. mit dd nix davon lesen oder hinschaffen..
Noch ein Problem:
das mkfs.cpm legt ja "sparse" Disks an wie Leo oben schon mal erklärt
hat,
d.h. wenn die disk nicht voll ist, dann ist die Filesize kleiner als die
Diskkapazität. Das führt aber unter CP/M zu Fehlern, mit Power und dem
Kommando test kann man eine ganze Disk probelesen und eine Checksumme
generieren, promt hagelt das Fehler. dieses mkfs.cpm ist wohl daher eher
mit vorsicht zu genießen, bei mir ist das z.B. auch nicht in der Lage
auf einer Floppy ordentlich zu arbeiten, wahrscheinlich kommt das genau
von diesem "Feature".
Kopiert lieber die cpm3 Testdisk und macht die unter CP/M dann mit Erase
leer..
1
00030: 84 a5 9e 2e 33 f5 76 5d 7a c8 68 78 e6 cf 3c 03 ....3.v]z.hx..<.
Holm T. schrieb:> Ich habe eine Weile gekämpft weil ich erstens gedacht hatte das Joe den> Fehler mit der "männlichen Belegung" der RS232 Pfostenstecker in der> Version 1.1 schon korrigiert hatte..dem war nicht so
Wo ist das Problem? Die Belegung ist doch korrekt. Auf die Wannenstecker
kommen Crimp-Buchsen mit Flachbandkabel welches wiederum genau an die
9-poligen SUB-D (male) passen. CON0 und CON1 sind jeweils ein DTE.
Joe G. schrieb:> Holm T. schrieb:>> Ich habe eine Weile gekämpft weil ich erstens gedacht hatte das Joe den>> Fehler mit der "männlichen Belegung" der RS232 Pfostenstecker in der>> Version 1.1 schon korrigiert hatte..dem war nicht so>> Wo ist das Problem? Die Belegung ist doch korrekt. Auf die Wannenstecker> kommen Crimp-Buchsen mit Flachbandkabel welches wiederum genau an die> 9-poligen SUB-D (male) passen. CON0 und CON1 sind jeweils ein DTE.
Dann hatte ich Dich mißverstanden. Ist aber auch egal, ich habe jetzt 2x
Male dran und Null-Modem Kabel.
Da ist aber gar kein Problem..
:-)
Gruß und vielen Dank für Deine Arbeit,
Holm
Holm T. schrieb:> BTW: Ich habe tinst von Turbopascal angeworfen, VT100 existiert ja als> Auswahl da nicht, habe Ansi ausgewählt, scheint erst mal zu> funktionieren.
anbei ein TP3 für VT100 (dsk-File)
Joe G. schrieb:> Holm T. schrieb:>> BTW: Ich habe tinst von Turbopascal angeworfen, VT100 existiert ja als>> Auswahl da nicht, habe Ansi ausgewählt, scheint erst mal zu>> funktionieren.>> anbei ein TP3 für VT100 (dsk-File)
Danke, ich probiere es mal, kannst ja das hier mal checken:
http://www.tiffe.de/Robotron/Stamp/tp-3.02a.dsk.gz
...was mache ich denn hier schon wieder flashc?
1
A>c:
2
C>device conout:=ASCI0[38400]
3
4
�1!��!9�/��/0 1�#�=��
5
�B��B!��Rj� �B�!�"wc�
6
7
�)k�)�k9��
8
�
9
@�"���Ox�J
10
�
11
@�"��Ox�B
12
13
x����!
14
15
��
16
C>device conout:=ASCI0[57600]
17
18
CONOUT:=ASCI0[57600]
19
^
20
Error at the '^'; Invalid option
21
22
C>
..das ist das von Leo überarbeitete device.com, nach den 38400 habe ich
den Terminalemulator umgestellt, das erste Mal funzt, 57600 aber
nicht..?
Gruß,
Holm
> ...aber 57600 geht halt nicht.
Sorry, da war ein Zahlendreher drin. Mit 56700 (oder 5 oder 56 ...)
könntest Du die 57600 einstellen. Oder das Update aus dem Anhang hier
nehmen.
Kleines Update der Monitorsoftware.
Holm T. schrieb:> Uff... es fehlte lediglich dieser Eintrag im Environment:> cpm3_commonbase=F000.
Der Wert wird jetzt aus dem cpm3.sys Image ausgelesen und automatisch
gesetzt. Das war ja schon lange versprochen
(Beitrag "Re: Z180-Stamp Modul").
Wer die Singlestep-Logik auf der Basisplatine hat, kann eine
Environment-Variable auf "True" setzten, damit die Pins für RUN und STEP
automatisch initialisiert werden: "singlestep=1"
Eine automatische Erkennung der Schaltung ist leider zu aufwendig und
hat möglicherweise unerwünschte Seiteneffekte. Unterstützung für die
Singlestep-Logik gibts aber immer noch nicht.
Die RTC sollte jetzt auch den Jahreswechsel korrekt mitmachen. (Der
nächste ist ja schon nicht mehr weit.)
Leo C. schrieb:>> ...aber 57600 geht halt nicht.>> Sorry, da war ein Zahlendreher drin. Mit 56700 (oder 5 oder 56 ...)> könntest Du die 57600 einstellen. Oder das Update aus dem Anhang hier> nehmen.
Danke Leo, ich werds mal checken.
Gruß,
Holm
Holm T. schrieb:> Leo C. schrieb:>>> ...aber 57600 geht halt nicht.>>>> Sorry, da war ein Zahlendreher drin. Mit 56700 (oder 5 oder 56 ...)>> könntest Du die 57600 einstellen. Oder das Update aus dem Anhang hier>> nehmen.>> Danke Leo, ich werds mal checken.>> Gruß,>> Holm
Ok, Device funtkioniert und auch der stampmonitor ohne cpm3_commonbase.
Letzteren habe ich aber wieder zurück geflasht wegen der 8 Laufwerke,
ich muß nun mal zusehen das ich die Buildumgebung zum Laufen bekomme.
Gruß,
Holm
Leo C. schrieb:> Kleines Update der Monitorsoftware.
Danke Leo, läuft bei mir.Nun auch ohne cpm3_commonbase=F000 und mit
"singlestep=1". Auch "Device" macht was es soll. Den Zahlendreher hatte
ich nicht bemerkt, da ich 57600 nie benutzt hatte.
Gibt es eine Auflistung der vordefinierten Environment-Variablen. Dann
könnte ich sie in die Doku aufnehmen.
Wo bekommt man denn eigentlich diese Frontplatten für die ECB-Bus Karten
inklusive Winkel? Ich habe noch ein kleines Gehäuse da von einem
Hirschmann HUB.. (wie Ebay 371192627387)
@Marcel: machst Du von der 6.6er Version mal ein Binary mit 8 LW?
Gruß,
Holm
Holm T. schrieb:> @Marcel: machst Du von der 6.6er Version mal ein Binary mit 8 LW?
Kann ich mal schauen. War aber glaube ich nicht schwer, da gibts einen
Parameter (drive_max oder so im Monitor). Hatte mir Leo mal erklärt.
Aber wie gesagt, das cpm.sys muss dazu passen, und das kann ich (noch)
nicht übersetzen.
Holm T. schrieb:> Letzteren habe ich aber wieder zurück geflasht wegen der 8 Laufwerke,
4 drives on sd cards ought to be enough for anybody. ;)
Die Zuweisung der Images über Environment-Variablen halte ich für ein
Provisorium, daß längst durch etwas Besseres ersetzt hätte werden
sollen. Deshalb wollte ich das nicht auf mehr Laufwerke ausbauen. Leider
komme ich aber nicht dazu, das Provisorium zu ersetzen. Wenn jetzt immer
mehr Leute nach 8 Laufwerken "schreien", muß das vielleicht doch mal zum
"Standard" machen.
Aber ehrlich, was will will man eigentlich mit 8 mal 8 MByte unter CP/M?
In CP/M 3 werden die Userbereiche ganz gut unterstützt. Man kann die
Dateien auf einer Disk also auf 16 User verteilen.
Leo C. schrieb:> Holm T. schrieb:>> Letzteren habe ich aber wieder zurück geflasht wegen der 8 Laufwerke,>> 4 drives on sd cards ought to be enough for anybody. ;)
You are failing badly :-)
>> Die Zuweisung der Images über Environment-Variablen halte ich für ein> Provisorium, daß längst durch etwas Besseres ersetzt hätte werden> sollen. Deshalb wollte ich das nicht auf mehr Laufwerke ausbauen. Leider> komme ich aber nicht dazu, das Provisorium zu ersetzen. Wenn jetzt immer> mehr Leute nach 8 Laufwerken "schreien", muß das vielleicht doch mal zum> "Standard" machen.>> Aber ehrlich, was will will man eigentlich mit 8 mal 8 MByte unter CP/M?> In CP/M 3 werden die Userbereiche ganz gut unterstützt. Man kann die> Dateien auf einer Disk also auf 16 User verteilen.
Dir kann bei Deinen Fragen geholfen werden:
Die Userbereiche unter CP/M sind etwas sperrig zum arbeiten, die meisten
Programme unterstützen zwar eine Laufwerksangabe, aber keine User Nummer
als "Pfad", leider gab es noch keine Directories wie unter Unixoiden,
Billyboy (der alte Pariser) hat die ja auch nur da abgeguckt.
Es gibt keine austauschbaren Datenträger aus CP/M Sicht, deshalb ist es
sinnvoll eine Auswahl von Programmen gleichzeitig auf den Disketten zu
haben.
Der Fakt, das ein Drive 8Mbyte groß ist ist dabei eher sekundär, die
Drives sind nicht voll und die SD Karten noch lange nicht.
Ich habe jetzt auf 0: 6 Laufwerke und auf 1: nur 2, 0 steckt ja später
mal im Gerät und ist eher schlecht austauschbar, 1: halt an der Front
als Wechseldatenträger zum Datentransfer.
Ich vermisse jetzt schon meine K1520Net Netzwerkkarte... hast Du evtl.
noch Ambitionen Joe? Das interessiert mich deutlich mehr als eine VGA
und ein Tastaturanschluß, Letzteres wird nicht kleiner/besser als ein
oller Schleptopp der das mit putty o.ä. ganz hervorragend und auch i.A.
billiger macht.
Bitte ersetze nicht die Laufwerkszuordnung im Environment durch was
Besseres, das ist nämlich schon das Beste.
Gruß,
Holm
Marcel A. schrieb:> Holm T. schrieb:>> @Marcel: machst Du von der 6.6er Version mal ein Binary mit 8 LW?>> Kann ich mal schauen. War aber glaube ich nicht schwer, da gibts einen> Parameter (drive_max oder so im Monitor). Hatte mir Leo mal erklärt.> Aber wie gesagt, das cpm.sys muss dazu passen, und das kann ich (noch)> nicht übersetzen.
Ich würde das gerne selber machen wollen, aber gegenwärtig läuft auf
meinem präferierten Host-OS der Assembler mit dem zxcc noch nicht.
Das wird noch seine Zeit dauern da ich erst mal wieder
Programmierarbeiten erledigen muß um Brötchen zu verdienen...
Gruß,
Holm
Joe G. schrieb:> Gibt es eine Auflistung der vordefinierten Environment-Variablen. Dann> könnte ich sie in die Doku aufnehmen.
So siehts bei 6.6 gerade aus:
Die Spalte Default wird genommen, wenn die entsprechende Variable nicht
existiert.
Die Variablen werden mit der Spalte defaultenv vorbelegt, wenn beim
Start das EEPROM leer oder korrumpiert ist (der Inhalt ist mit einer
CRC16 abgesichert), oder der Befehl "defaultenv" ausgeführt wird.
Bool-Variablen (singlestep) sind "wahr", wenn sie existieren und das
erste Zeichen "1" oder "y" oder "Y" oder "t" oder "T" ist, sonst
"unwahr".
cpm3_commonbase und startadress werden durch loadcpm3 gesetzt bzw.
überschrieben.
Holm T. schrieb:> Die Userbereiche unter CP/M sind etwas sperrig zum arbeiten,
Bis CP/M 2.2 war das "Feature" unbrauchbar, aber in 3 ist es deutlich
besser geworden.
> Es gibt keine austauschbaren Datenträger aus CP/M Sicht, deshalb ist es> sinnvoll eine Auswahl von Programmen gleichzeitig auf den Disketten zu> haben.
Die 4 (oder 8 oder 16) ist ja auch nicht die maximale Anzahl an Images
auf der SD-Karte, sondern die maximale Anzahl "Disketten", die
gleichzeitig im Zugriff sein können. "Herkömmliche" CP/M-Systeme
hatten da meistens nur 2.
Man kann ja beliebig viele Images auf einer Karte haben, und durch
ändern einer Environment-Variablen eine Disk wechseln (Danach Control-C
nicht vergessen, wie bei CP/M < 3).
> Bitte ersetze nicht die Laufwerkszuordnung im Environment durch was> Besseres, das ist nämlich schon das Beste.
Es wäre gut genug, wenn man beim Ändern einer Variablen eine Aktion
auslösen könnte. Dann könnte man dem CP/M 3 nämlich Bescheid stoßen,
damit es die "gewechselte" Disk ohne Control-C einloggen könnte.
Aber wie oben angedeutet, werde ich die 8 wohl in den master-branch
übernehmen...
Leo C. schrieb:> Holm T. schrieb:>> Die Userbereiche unter CP/M sind etwas sperrig zum arbeiten,>> Bis CP/M 2.2 war das "Feature" unbrauchbar, aber in 3 ist es deutlich> besser geworden.
Mir geht es nicht so sehr um das CP/M, sondern um die Programme die ich
da laufen lasse. Bisher habe ich oft den M80 benutzt und da wirds wohl
Brühe wenn der auf User 0 sitzt und die zu assemblierenden Dateien auf
User 14..
>>> Es gibt keine austauschbaren Datenträger aus CP/M Sicht, deshalb ist es>> sinnvoll eine Auswahl von Programmen gleichzeitig auf den Disketten zu>> haben.>> Die 4 (oder 8 oder 16) ist ja auch nicht die maximale Anzahl an Images> auf der SD-Karte,
Ich weiß.
> sondern die maximale Anzahl "Disketten", die> gleichzeitig im Zugriff sein können. "Herkömmliche" CP/M-Systeme> hatten da meistens nur 2.
..aber eben recht einfach auszutauschen.
Ich brauche nicht Assembler, Tubopascal, BDS und Hitech-C gleichzeitig
im Eingriff..aber doch dann und wann.
Die Kiste rechts neben mir hat 2 Floppies, eine Ramdisk die A nach M
verdrängt und dann selbst A ist und 3 Festplattenpartitionen a 8 MB auf
einer 20MB MFM Pladde..
> Man kann ja beliebig viele Images auf einer Karte haben, und durch> ändern einer Environment-Variablen eine Disk wechseln (Danach Control-C> nicht vergessen, wie bei CP/M < 3).>>> Bitte ersetze nicht die Laufwerkszuordnung im Environment durch was>> Besseres, das ist nämlich schon das Beste.>> Es wäre gut genug, wenn man beim Ändern einer Variablen eine Aktion> auslösen könnte. Dann könnte man dem CP/M 3 nämlich Bescheid stoßen,> damit es die "gewechselte" Disk ohne Control-C einloggen könnte.
Das würde eine Sonderbehandlung der Environmentvariablen für dsk?
erfordern, aber unmöglich ist es nicht.
Es erspart im Endeffekt wirklich nur das ^c, weiß nicht ob das lohnt..
>> Aber wie oben angedeutet, werde ich die 8 wohl in den master-branch> übernehmen...
:-)
Gerne.
Es hat kaum Nachteile, nur das BIOS wird größer und da wir hier CP/M 3.0
haben gibts da Reserven.
Gruß,
Holm
..irgendwie habe ich beim Bearbeiten nun 3 Mal das Selbe geschrieben das
aber nicht im Text auftaucht, also hier nochmal einzeln.
Ich würde es für besser halten ein CP/M Programm zu haben das die
Zuordnung der Images zu den Drives bewerkstelligt (assign "BDS-C1.dsk"
"C") und evtl.
ein Programm das das Inhaltsverzeichnis und das aktuelle Assignment
ausgibt, oder Beides in einem.
Die AVR-Console ist eigentlich nur die Firmware des
"Festplattencontrollers", mit dem Ding würde ich gerne nur reden wollen
wenn ich was grundsätzlich zu ändern habe, zu Wartungszwecken halt.
Gruß,
Holm
Holm T. schrieb:> Ich vermisse jetzt schon meine K1520Net Netzwerkkarte... hast Du evtl.> noch Ambitionen Joe?
An Ambitionen mangelt es nicht, mehr an der Zeit. Zunächst ist ja noch
die USB-Schnittstelle in der Pipeline.
Hmm, ich weiß schon, Useless Serial Bus finden die Leute fetzig, ich
eher nicht oder nur schaumgebremst, aber das ist eine persönliche Macke
von mir.
Ich finde es halt Klasse wenn ich ohne irgendwelchem Kram an- oder
abzuprömpeln Dateien vom Host holen oder Daten da hin schicken kann :-)
USB Sticks findet meine Frau immer total vergammelt unter der
Wäschespinne, die letzten Beiden gehen trotz deutlicher Korrosion und
Verformungen aber immer noch.. :-|
Das ist mir mit Netzwerkkabeln noch nie passiert.
:-)
Zur Netzwerkkarte:
Die Hardwareunterlagen sind ja öffentlich, im Endeffekt sitzt da auch
ein AVR und ein Wiznet Modul drauf, nur das Bussystem ist halt derzeit
nicht ECB mit DIN Steckern sondern DDR K1520 Bus ..was aber nur ein
mechanischer Unterschied ist. Das Ganze ist über eine PIO am System
angebunden (weiß nicht wie die Lage mit 18 Mhz-fähigen PIOs in PLCC so
aussieht) und die Firmware für den AVR gibts momentan nach Zusendung
einer Ethernetadresse (z.B. von einer ollen PC Netzwerkkarte) von susowa
(dem Autor) per Mail.
Susowa wird sich sicherlich nicht gegen eine Anpassung sperren.
http://susowa.homeftp.net/index.php/projekte-mainmenu/kcnet-mainmenu-130/87-nachnutzung.html
Wobei K1520Net die Variante für das DDR K1520 OEM Sysstem und KCNet die
Varaiante für den KC85 ist.
Nur als Info gedacht..
Gruß,
Holm
> Bisher habe ich oft den M80 benutzt und da wirds wohl> Brühe wenn der auf User 0 sitzt und die zu assemblierenden Dateien auf> User 14..
Eben nicht.
CP/M 3 User’s Manual, 2.7.1 File Attributes:
1
A file with the SYS attribute has a special advantage when it is created under user 0. When you give a file with
2
user number 0 the SYS attribute, you can read and execute that file from any user number. This feature gives
3
you a convenient way to make your commonly used programs available under any user number.
und
4.4.2 Finding Program Files:
1
The search procedure for a program file can be very different from a data file search. This is because you can
2
use the SETDEF command described in Section 5 to define the search procedure you want CP/M 3 to follow
3
when it is looking for a program file. With SETDEF you can ask CP/M 3 to make as many as sixteen searches
4
when you do not include a drive specifier before the command keyword, but that is a rare case!
5
6
...
7
8
When you use a SETDEF command to define your own drive chain, include the default drive, and the drive that
9
contains your most frequently used utilities. For an example, assume you defined your drive chain as * (the
10
default drive) and drive A.
11
12
When you enter the following command:
13
14
2D>SHOW [SPACE]
15
16
CP/M 3 looks for SHOW.COM in the following sequence:
17
18
1. drive D, user 2
19
2. drive D, user 0
20
3. drive A, user 2
21
4. drive A, user 0
> Das würde eine Sonderbehandlung der Environmentvariablen für dsk?> erfordern,
Oder eine allgemeine Erweiterung, daß man an Variablen
"Callback-Funtionen" anhängen kann. Dann könnte man z.B. auch die
Baudrate ändern, wenn die entsprechende Variable gesetzt wird. Weitere
Anwendungen fallen mir aber nicht ein, und deshalb habe ich es auch
nicht eingebaut.
Holm T. schrieb:> Ich würde es für besser halten ein CP/M Programm zu haben das die> Zuordnung der Images zu den Drives bewerkstelligt (assign "BDS-C1.dsk"> "C") und evtl.> ein Programm das das Inhaltsverzeichnis und das aktuelle Assignment> ausgibt, oder Beides in einem.
In die Richtung assign- oder mount-Funktion sollte es gehen. Wenn die
Funktion im AVR-Monitor vorhanden ist, kann sie auch von CP/M über das
vorhandene (bzw. dann zu erweiternde) Protokoll aufgerufen werden.
Ich werde mich mal damit beschäftigen Leo, wie schon mal erwähnt, mit
CP/M3 habe ich das erste Mal zu tun.
Nochmal zur Hardware..etwas Bauchschmerzen macht mir der nicht
getriebene, doch relativ schnelle Bus.
Ich habe gerade mal ein Bisschen herumgegoogelt, schnellere PIOs als
10Mhz habe ich auch nicht gefunden, hat Jemand da schon mal welche auf
freier Wildbahn gesehen?
Man müßte dann den PIO mit halber Taktfrequenz betreiben, müßte
eigentlich funktionieren, hat das schon mal Jemand gemacht?
Gruß,
Holm
Hallo holm,
für die Dateiübertragung vom PC direkt in das CPM nutze ich Kermit. Habe
ich hier gerade mal beschrieben:
http://retro-compi.de/index.php/z180-stamp/z180-anwendungen/z180-anwendungen-kermit
Ansonsten setze ich große Hoffnungen auf Joes Vinculum.
Eine Netzanbindung hatte ich auch schon einmal testweise. Dazu kann man
ja einen wenige Euro günstigen Seriell-(W)LAN-Wandler nehmen, der die
serielle Schnittstelle in Telnet umsetzt. Zum Spaß hatte ich das mal mit
dem AVR Net-IO und angepasster Firmware gemacht (Pollin) - hat aber nur
"prinzipiell" funktioniert und ich habe das (noch) nicht weiterverfolgt.
Denn auch mein Problem ist, dass ich im echten Leben Brötchen verdienen
muss :-)
Gruß
Marcel
Ja klar, Hobby und Spielzeug bleibt das allemal, in so fern haben sich
die Prioritäten zu sortieren...
Kermit etc. ist mir bekannt, Sowas benutze ich auch teilweise, aber ich
finde halt die Möglichkeit ftp/tftp und telnet vom CP/M Rechner aus
benutzen zu können interessant, das ist doch deutlich flexibler als
Kermit oder die Stöpselei von USB Sticks.
IMHO hatten die Jungs auch die DDR Bürocomputer PC1715 oder A5120
diskless mit der Karte gebootet.
Ich Freund von mit hat sich gemeldet, er hat wohl noch 100 Stück 16Mhz
PLCC PIOs die er mal für ein mittlerweile verstorbenes Forenprojekt von
Robotrontechnik.de in Singapur (er ist Seemann) gekauft hatte, da liegen
und steckt mir 2 in einen Brief.
Ich kann damit mal probieren ob ich die K1520Net Karte ohne Änderungen
mit 18,432Mhz zum Laufen bekomme, muß da nochmal mit den Machern der
Karte konferieren.
Der K1520 Bus ist im wesentlichen das Selbe wie der ECB Bus, nur halt
mit anderem Layout.
Es gibt auch andere ähnliche Projekte für DDR Computer, z.B: die
sogenannte GUN Platine für den PC1715..(Gide, USB, Netzwerk), das ist
nur alles nicht für so irre Taktfrequenzen ausgelegt. Auch da werkelt
ein Vinculum bzw. der VNC2-32.
Freilich hat das Alles Zeit.
Gruß,
Holm
Auf vielfachen Wunsch hier die 8-drive Version von Monitor und Bios.
Genaugenommen ist es sogar eine 12-drive Version, wenn man ein IDE-Gerät
dran hat.
Holm T. schrieb:> Es hat kaum Nachteile, nur das BIOS wird größer und da wir hier CP/M 3.0> haben gibts da Reserven.
Der Platz, der für alloc und checksum vector drauf geht, ist schon
beachtlich. Die Anzahl freier Pages in Bank 0 ging von 75 auf 63, also
um 3 KB runter. Also bis zu 6 Directory-Buffer weniger. Schön wärs, wenn
man den Platz dynamisch zuordnen könnte, vor allem wenn man noch größere
Laufwerke zulassen möchte. CP/M 3 unterstützt ja bis zu 512 MByte. Aber
das ist wohl ein Job für jemanden, der sonst nichts zu tun hat.
Falls jemand das CF-Interface von oben
(Beitrag "Re: Z180-Stamp Modul")
nachbauen will: im Schaltplan fehlt noch eine Verbindung von /DREQ1 (15a
am ECB) nach GND, da der DMA1 für den Datentransfer verwendet wird.
Besser wäre natürlich, wenn man die Verbindung über einen Port ein- und
ausschalten könnte, damit der DMA-Kanal auch noch für andere Geräte
genutzt werden kann. Möglicherweise reicht aber auch eine Verknüpfung
mit DASP.
Fein, probier ich am WE aus.
Das hex ist vermutlich für den 1281? D.h. für den 2561 erstelle ich mir
das mit der richtigen tup-variante aus dem aktuelle GIT Repository am
besten selber?
Das CPM.SYS ist davon ja unabhängig.
Danke!
|<===> PIO <===> ATmega162 <===> WIZnet <---> RJ45 (1)
5
|
6
|<===> Z(1)80
7
|
Nur die obere Zeile, die untere soll das Rest-System darstellen.
Der ATmega reicht die Daten 1:1 durch. Er dient nur dazu, die
Schnittstelle des WIZnet-Chips an die PIO anzupassen und die MAC-Adresse
der Karte zu speichern.
PIO und ATmega kann man imho getrost weglassen, und den WIZnet direkt an
den Bus anschließen. Der benötigte Adressdecoder ist in etwa der
gleiche. Das sähe dann so aus:
1
ECB
2
Bus
3
|<===> WIZnet <---> RJ45 (2)
4
|
5
|<===> Z(1)80
Der Chip könnte auch über seine SPI-Schnittstelle an CSI/O der Z180
angeschlossen werden. Nachteil: Da die CSI/O-Schnittstelle kein
richtiges SPI kann, könnte es evtl. Probleme geben. Man müßte
irgendwoher ein CS-Signal zaubern. Relativ lansam, max CPU-Takt/20.
1
ECB
2
|<===> Z180-CSI/O <--SPI--> WIZnet <---> RJ45 (3)
Falls ein Atmega dem Z180 doch noch Arbeit abnehmen könnte, sollte man
das WIZnet-Modul an die SPI-Schnittstelle der AVR-Stamp anschließen. Bei
dieser Lösung wäre der Hardware-Aufwand am geringsten:
Ich hatte mir noch keinerlei Gedanken um die innere Struktur der Karte
gemacht (einfach nur benutzt), wollte das aber nun tun.. Danke Leo.
Die hier aufpoppende Frage hat sich mir schon mal in anderem
Zusammenhang gestellt, gibts eine SPI Schnittstelle mit BUS-Anschluß?
Also Parallel zu SPI? UARTs und DACs gibts ja Haufenweise.
Gruß,
Holm
Holm T. schrieb:> GUN Platine für den PC1715Leo C. schrieb:> Falls ein Atmega dem Z180 doch noch Arbeit abnehmen könnte, sollte man> das WIZnet-Modul an die SPI-Schnittstelle der AVR-Stamp anschließen.
Ich hatte mir in der Vergangenheit schon mehrfach Gedanken über
unterschiedliche Varianten gemacht. Eine PIO-Variante hatte ich wegen
der Verfügbarkeit und Geschwindigkeit ausgeschlossen. Das jetzige
AVR/Z180-Stamp-System ist ja tatsächlich mit derzeit verfügbaren
Bauelementen zu realisieren. Diese Philosophie wollte ich bei
Erweiterungen eigentlich beibehalten, unabhängig ob noch jemand eine
„schnelle“ PIO in der Kiste hat.
Da WIZnet und andere Module über SPI kommunizieren und auch der VNC-II
eine SPI-Schnittstelle hat, sehe ich eine Lösung in einer ECB-SPI
Umsetzer (egal wie realisiert). Diese Aufgabe könnte z.B. ein AVR
übernehmen. Eleganter ist jedoch eine SPI-UART-Bridge wie der SC16IS741A
[1]. Er unterstützt flow control über RTS /CTS und könnte am ECB-Board,
Console 0 angeschlossen werden. Eine ähnliche Variante ist durch Leo.C.
ja schon als I2C-UART-Bridge [2] beim AVR CP/M realisiert.
[1] http://cache.nxp.com/documents/data_sheet/SC16IS741A.pdf?pspll=1
[2] Beitrag "Re: CP/M auf ATmega88"
Joe G. schrieb:> Eine PIO-Variante hatte ich wegen> der Verfügbarkeit und Geschwindigkeit ausgeschlossen.Das jetzige> AVR/Z180-Stamp-System ist ja tatsächlich mit derzeit verfügbaren> Bauelementen zu realisieren. Diese Philosophie wollte ich bei> Erweiterungen eigentlich beibehalten, unabhängig ob noch jemand eine> „schnelle“ PIO in der Kiste hat.
Verstehe ich. Dennoch juckt es mich, die inzwischen angesammelten
Bausteine einmal in der Praxis auszuprobieren (PIO oder 8255, der
angeblich weniger zickig ist).
Nun kommen mir aufgrund der obigen Diskussion Zweifel auf ob der
Geschwindigkeit. Hatte darüber noch gar nicht nachgedacht - aber
bedeutet das, für diese Experimente müsste ich deutlich von den 18MHz
runter?
Marcel A. schrieb:> aber> bedeutet das, für diese Experimente müsste ich deutlich von den 18MHz> runter?
Laut Zilog und auch den Distributoren (z.B. Mouser) gibt es die PIO
Z84C20 noch als 10 MHz Version (Z84C2010). Mit einem Bustakt von 10 MHz
sollte sie also korrekt laufen.
Joe G. schrieb:>
Da WIZnet und andere Module über SPI kommunizieren und auch der VNC-II
> eine SPI-Schnittstelle hat, sehe ich eine Lösung in einer ECB-SPI> Umsetzer (egal wie realisiert).
Also speziell für den WIZnet-Chip ist das nicht nötig, da er ein
wirklich einfach anzusteuerndes und schnelles Bus-Interface hat. Das
belegt im "Indirect Bus Interface Mode" 4 I/O Adressen. Datenblöcke
können mit INIR/OTIR-Befehlen oder mit einem DMA-Kanal übertragen
werden. Dürfte bis 33 MHz CPU-Takt ohne Waitstates funktionieren.
> Diese Aufgabe könnte z.B. ein AVR übernehmen.
Mit einem AVR wird das wahrscheinlich nicht leistungsfähig, bzw.
aufwändig, da man für In und Out je ein Latch mit Handshake bräuchte.
Oder eine Z80-PIO. ;) Es soll PICs geben, die so was eingebaut haben.
Mit STM32F1 hatte ich das mal für eine Richtung (Z180 out) realisiert.
Der war mit 24MHz einen Tick zu langsam für einen Z180 mit 9,2MHz.
> Eleganter ist jedoch eine SPI-UART-Bridge wie der SC16IS741A
Der ist aber für die falsche Richtung.
Noch eleganter ist wohl ein FPGA:
https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/an/an485.pdf
Leo C. schrieb:> Noch eleganter ist wohl ein FPGA:
Ein MAXII EPM240 CPLD ist ja bei verschiedenen Anbietern als kleines
Board verfügbar. Nur wer kann so gut Verilog um es auch umzusetzen?
Marcel A. schrieb:> bedeutet das, für diese Experimente müsste ich deutlich von den 18MHz> runter?
Ja, oder Takt auf dem ECB-BUS halbieren (oder vierteln, wenn Deine PIOs
nur 5 MHz können) wie es Holm weiter oben schon mal angedacht hat.
@Joe,
mit Verilog allein ist es ja nicht getan. Eigentlich wollte ich mit
meinem Beitrag andeuten, daß ich den Aufwand für zu hoch halte (Gilt
auch für die Takt-Halbierung). Für WIZnet und VNC2 gibts ja auch andere
Lösungen. VNC2 kann außer über UART auch direkt parallel an ECB
gekoppelt werden, wie ich gerade im Datenblatt gesehen habe. Wenns gar
nicht ohne SPI geht, gibt es immer noch die Möglichkeit, den Chip an die
AVR-Stamp anzuschließen. Ein paar Pins für Slave-Select sind ja noch
frei. Und die Daten können sehr schnell ins Z180-RAM geschrieben, bzw.
gelesen werden. Aber ich will natürlich niemand davon abhalten, ein
ECB-SPI-Interface zu bauen.
BTW: Mein CF-Interface läuft auch nicht zuverlässig mit 18 MHz, bzw.
kommt das System erst gar nicht hoch wenn das IF angesteckt ist. Egal,
ob ein CF-Modul drauf ist, oder nicht. Das kann auch an der gammeligen
"Backplane" liegen. Auf dem Bild oben
(Beitrag "Re: Z180-Stamp Modul") ist es schlecht
zu sehen, aber das ist nur ein Stück Flachbandkabel, mit 6
aufgequetschten Buchsen.
Joe G. schrieb:> Ein MAXII EPM240 CPLD ist ja bei verschiedenen Anbietern als kleines> Board verfügbar. Nur wer kann so gut Verilog um es auch umzusetzen?
Ich bevorzuge VHDL. Aber wenn Du einmal einen FPGA in der Schaltung
hast, willst Du irgendwann alles damit machen...
Leo C. schrieb:> Aber ich will natürlich niemand davon abhalten, ein> ECB-SPI-Interface zu bauen.
Daran hätte ich auch Interesse.
Prinzipiell müßten doch zwei Latches, ein kleiner Zähler, ein Takt und
eine Adressmimik ausreichen.
Mit der steigenden Flanke von /WR wird der Zähler gestartet und schiebt
die Bits raus (und auf dem zweiten Latch rein).
Das kann dann gelesen werden.
Wäre natürlich schön, das in einem Chip zu haben...
Geht sowas mit einem GAL?
Viele Grüße,
Jens
Joe G. schrieb:> Marcel A. schrieb:>> aber>> bedeutet das, für diese Experimente müsste ich deutlich von den 18MHz>> runter?>> Laut Zilog und auch den Distributoren (z.B. Mouser) gibt es die PIO> Z84C20 noch als 10 MHz Version (Z84C2010). Mit einem Bustakt von 10 MHz> sollte sie also korrekt laufen.
Ich habe heute vier Stück Z84C2016VEC, DC 0925 aus der Post genommen
(von meinem Freund)
..und er schreibt das er sich dafür interessiert ob die Dinger
funktionieren oder ob es China-Fakes sind.
Wenn die Dinger funktionieren währen sicherlich genug für Alle hier da,
weil das ursprüngliche Projekt halt im Sande verlaufen ist...
Ich werde es also mal testen müssen.
Gruß,
Holm
Marcel A. schrieb:> Verstehe ich. Dennoch juckt es mich, die inzwischen angesammelten> Bausteine einmal in der Praxis auszuprobieren (PIO oder 8255, der> angeblich weniger zickig ist).
Da haste was verwechselt. Der 8255 ist ein haarsträubendes Teil
..typisch Intel.
Gruß,
Holm
Leo C. schrieb:> Marcel A. schrieb:>> bedeutet das, für diese Experimente müsste ich deutlich von den 18MHz>> runter?>> Ja, oder Takt auf dem ECB-BUS halbieren (oder vierteln, wenn Deine PIOs> nur 5 MHz können) wie es Holm weiter oben schon mal angedacht hat.>> @Joe,> mit Verilog allein ist es ja nicht getan. Eigentlich wollte ich mit> meinem Beitrag andeuten, daß ich den Aufwand für zu hoch halte (Gilt> auch für die Takt-Halbierung).
Mal abgesehen von CPLD/FPGA und Verilog...wir haben hier ein ECB Bus
Interface..das wurde dazu gemacht erweiterbar zu sein...
> Für WIZnet und VNC2 gibts ja auch andere> Lösungen.
Welche fallen Dir ein?
[..]
>> BTW: Mein CF-Interface läuft auch nicht zuverlässig mit 18 MHz, bzw.> kommt das System erst gar nicht hoch wenn das IF angesteckt ist. Egal,> ob ein CF-Modul drauf ist, oder nicht. Das kann auch an der gammeligen> "Backplane" liegen. Auf dem Bild oben> (Beitrag "Re: Z180-Stamp Modul") ist es schlecht> zu sehen, aber das ist nur ein Stück Flachbandkabel, mit 6> aufgequetschten Buchsen.
Es gibt noch ECB Backplanes zu kaufen, ich habe auch irgendwie noch 2
unbestückte da. Ich denke nur nicht das bei 18Mhz irgend Etwas
zuverlässig
damit laufen wird, schon gar nicht mit dem ungetriebenen Bus.
Das Ganze ist eine Fehlkonstruktion, aber das war mir von vornherein
bewußt und ich habe die Platinen trotzdem gekauft, also um Gottes Willen
Nichts gegen die Konstrukteure...
Wenn man wirklich ein kleines ausbaubares System haben möchte muß man
sich zwangsläufig Gedanken um das Bussystem machen. Alles oberhalb 5Mhz
wird kritisch wenn es nicht terminiert ist, bis 8Mhz wird das noch zu
machen sein aber es wird wohl nicht beim 1. Versuch funktionieren.
Mir fallen 2 Varianten ein:
1. Redesign der Basisplatine und da die weitestgehend leer ist, lassen
sich evtl. noch Bustreiber integrieren.
2. Verlegen der Bustreiber für einen Slot auf eine noch zu
konstruierende Backplane wo sie dann als Puffer zwischen der
existierenden Basisplatine und dem restlichen System arbeiten.
Ich halte die Sache nach wie vor noch für ziemlich heiß und es würde
mich interessieren wie Z80 Bausteine sich im IM2 mit halbem oder viertel
Systemtakt verhalten. Ich habe ein PDF von Zilog gefunden:
(http://www.zilog.com/appnotes_download.php?FromPage=DirectLink&dn=AN0063ft=Application%20Notef=YUhSMGNEb3ZMM2QzZHk1NmFXeHZaeTVqYjIwdlpHOWpjeTk2TVRnd0wyRndjRzV2ZEdWekwybHVkR1Z5YldWdExuQmtaZz09)
das die Anbindung an den schnellen Z8S180 mit 20Mhz erläutert, von
halbem Systemtakt redet da aber Keiner. Ich selbst stand noch nie vor
dem Problem für einen Z80 nicht gleich schnelle Peripherie auftreiben zu
können und weiß nicht ob und wie das tut und wo Probleme entstehen.
Wir haben jetzt einen recht schnellen CPU Kern mit Hauptspeicher und
auch die Massenspeicher-Anbindung über den schnellen Bus. Es wäre aber
hybsch irgendwas wie D/A Wandler oder Netzwerk anbinden zu können, ok
mit dem Witznet W5100/W5300 geht das sicher auch noch schnell und
direkt, bei dem Rest von Peripherie ist das evtl. nicht unbedingt
notwendig..ok, den USB Stick hätte man auch gerne schnell und wer ne VGA
Grafik haben will..
Wenn ich nach der PIO Bezeichnung der 16Mhz Dinger die ich hier habe
google (Z84C2016VEC) geben mir alleine die gefundenen Links nicht all zu
viel Hoffnung das es sich um ein reelles Produkt handelt. Im günstigsten
Fall sind das ausgemessene 10Mhz Versionen ...und ich habe derzeit noch
keine Ahnung wie viel Luft da nach oben noch ist, vom ungünstigsten Fall
reden wir mal nicht. Allerdings sehen die Dinger nicht offensichtlich
nach einer Fälschung aus bzw. diese ist dann gut gemacht. Ich werde
Zilog mal eine Anfrage schicken..
Was also können/wollen wir machen?
Gruß,
Holm
Marcel A. schrieb:> Echt? Das stand so in einem MC Artikel. Muss noch mal nachsehen, war> irgendwas mit Status oder Timings.
Die PIO funktioniert wie sie soll und ist eigentlich auch nicht
timing-kritisch. Der 8255 wartet mit allerhand Nettigkeiten auf wie zum
Beispiel die Tatsache das Du keine Portleitungen von Ein- auf Ausgabe
und umgekehrt umprogrammieren kannst ohne das das Ding Dir die ganze
restliche Programmiererei durcheinander haut (Reset). Das Teil ist
wirklich giftig.
Um eine LED Anzeige oder ne Tastatur anzubinden tuts freilich.
Gruß,
Holm
Holm T. schrieb:>> Für WIZnet und VNC2 gibts ja auch andere>> Lösungen.>> Welche fallen Dir ein?
Wurde oben ja schon genannt: Beide können direkt an den Prozessor-Bus
gekoppelt werden.
>> BTW: Mein CF-Interface läuft auch nicht zuverlässig mit 18 MHz, bzw.
Läuft inzwischen. Gestern Abend habe ich gemerkt, daß es eigentlich nur
beim Start Schwierigkeiten gibt. Heute Morgen war der Grund dann schnell
gefunden: Die CF-Karte hat an /RESET eine "größere" Kapazität hängen.
Das war auch die einzige Leitung, die ungepuffert vom Bus an den
IDE-Stecker ging. Jetzt habe ich den noch freien Buffer in die
Reset-Leitung gelötet, und es geht. Trotzdem sollte ich aber auch die
Software an der Stelle etwas entschärfen.
Damit will ich nicht sagen, daß es über den vollen Temeraturbereich
stabil läuft, robust gegen Störungen ist, und auch noch läuft, wenn man
noch mehr Karten dazu steckt, usw. Aber auf meinem Schreibtisch ist es
jetzt definitiv stabil bei 18,432 MHz. Wundert mich selber.
Vorhin habe ich die I/O-Waitstates auch noch auf 0 gesetzt. Läuft immer
noch. :)
Ein Sektor von oder zur CF-Karte wird jetzt mit 7 Takte/Byte übertragen.
Und dank Multi-Sektor-I/O ist zwischen Sektoren oft nur sehr wenig
Overhead. Eine RAM-Disk wäre höchstens einen Takt/Byte schneller. Aber
auch nur, wenn sie komplett Memory-mapped angebunden ist, und nicht über
I/O-Ports.
> Es gibt noch ECB Backplanes zu kaufen, ich habe auch irgendwie noch 2> unbestückte da.
Es ist ja nicht so, daß ich nichts anderes hätte. Ich wollte es einfach
mal damit ausprobieren. Außerdem ist das Teil so schön flexibel, daß man
die Karte hin und her klappen, und so von allen Seiten messen kann.
> Ich denke nur nicht das bei 18Mhz irgend Etwas> zuverlässig> damit laufen wird, schon gar nicht mit dem ungetriebenen Bus.
Solange alle Busteilnehmer CMOS sind (so wie jetzt) sehe ich darin kein
so großes Problem. Buslänge, (fehlende) Terminierung, Kartenanzahl schon
eher.
> Das Ganze ist eine Fehlkonstruktion, aber das war mir von vornherein> bewußt und ich habe die Platinen trotzdem gekauft, also um Gottes Willen> Nichts gegen die Konstrukteure...
Es war eine bewußte Designentscheidung. Zu dem Zeitpunkt waren die
Stampkarten noch für reinen 3.3V-Betrieb ausgelegt. Die Bustreiber
hätten dann auch noch Levelshifter-Funktion übenehmen müssen. Das alles
für den Fall, daß jemand eine ECB-Karte hat, die schnell genug ist, und
an dem System noch Sinn macht. Die alten Floppy-Controller, EPROM-,RAM-
und RAM-Disk-Karten gehören eher nicht dazu.
Auf keinen Fall war und ist das System dazu gedacht, in einem
ausgebauten ECB-System die CPU-Karte zu ersetzen. IMHO.
> Systemtakt verhalten. Ich habe ein PDF von Zilog gefunden:>(http://www.zilog.com/appnotes_download.php?FromPage=DirectLink&dn=AN0063ft=Application%20Notef=YUhSMGNEb3ZMM2QzZHk1NmFXeHZaeTVqYjIwdlpHOWpjeTk2TVRnd0wyRndjRzV2ZEdWekwybHVkR1Z5YldWdExuQmtaZz09)> das die Anbindung an den schnellen Z8S180 mit 20Mhz erläutert, von> halbem Systemtakt redet da aber Keiner.
Der Link geht bei mir nicht. Falls es diese AN ist:
INTERFACING MEMORY AND I/O TO
THE 20 MHZ Z8S180 SYSTEM
dann ist darin von den alten Z80-Peripheriebausteinen nicht die Rede
sondern von:
2) 20 MHz ESCC TM timing is based on the
Z85230 Product Specification.
Und diesen ESCC wird es wohl für 20 MHz geben.
> Wir haben jetzt einen recht schnellen CPU Kern mit Hauptspeicher und> auch die Massenspeicher-Anbindung über den schnellen Bus.
Den Speicher kann man übrigens (über den Bus) noch auf 1 Mbyte
erweitern.
> Es wäre aber hybsch irgendwas wie D/A Wandler
Wenn man auf Vektor-Ints verzichten kann, wäre der Anschluß eher
langsamerer Peripherie kein großes Problem. Man müßte halt genug
Wait-States reinknallen.
2 Interrupt-Leitungen haben wir noch frei. Die liegen auch auf dem
ECB-Anschluß.
> und wer ne VGA Grafik haben will..
... Nimmt ein Terminal mit Tektronix 4014 Mode. ;-)
Holm T. schrieb:> Was also können/wollen wir machen?
Gute Frage.
Ich hätte kein Problem, für gewisse Anwendungen den Takt zu vierteln
(4,x MHz) - da diese aber im Quellcode steht, wäre das jedes Mal ein
umflashen, oder?
Hat das nicht auch Auswirkungen auf die SIO? Ich denke, dann wäre nur
noch 38,4kB drin - das ist dann schon spürbar im Terminal :-)
Zum 8255: Stimmt, der war recht merkwürdig, aber an sich auch etwas
leistungsfähiger. Er wurde ja auch viel eingesetzt - so ganz schlecht
kann er ja nicht sein. Ich meine gelesen zu haben, dass sich der 8255
einfacher ansprechen lässt.
Habe die aktuelle SW drin - geht soweit.
Habe zwar die CF-Karte noch nicht gebaut - frage ich aber, wie die
angesprochen wird?
- Sind die Laufwerke schon "fest verdrahtet" auf I - L?
- vermutlich muss man das Modul / die Karte erst mal am PC formatieren?
- wie sehen denn die Daten für CFDISK aus? Ich erinnere mich nur an die
8MB Partitionen...
@leo: Wie schon geschrieben, mir war von vornherein klar das das ein
Spielzeug ist und ich will ja spielen. Ich hatte das ja gegenüber Joe
auch shcon mal angesprochen (Mail?) normalerweise kräuseln sich mir die
Fußnägel wenn ich diese ateml bootloaded Konstruktionen sehe weil kein
Promer für Eproms da ist, ansonsten könnte der Z180 das ja gewissermaßen
alleine..
Mir wäre also eine ECB Bus Karte (wegen der möglichen vielen Speilereien
am Bus) mit Puffer eigentlich lieber gewesen, aber darüber will ich
nicht nörgeln, ich bin erwachsen und wußte was ich mir an den Hals hänge
:-)
Ich bin aber auch alt genug das mit Bremsen am Mopped mindestens genau
so wichtig sind wie der Motor..war früher bestimmt mal anders. Liegt
evtl. daran das einem mit den Jahren klar wird das das Leben endlich
ist.
Ich muß also nicht das letzte Quäntchen Performance haben,
Praktikabilität ist auch keine schlechte Sache.
..und ja, das PDF ist das von Dir genannte, mir gibts da nicht um die
PIO, die haben nur halt kein Wort über den Anschluß langsamerer
Peripherie verloren sondern sogar eine Statemachine in einem EP610
vorgeführt um dem Bus selbst für den recht schnellen ESCC zu bremsen.
Auf IM2 können wir sicherlich verzichten, SIOs haben wir IMHO
ausreichend
bleibt Netzwerk USB und evtl. Spielereien dann doch am Bus, man kann
Ints aber auch konzentrieren in dem man das z.B. einen Zähler machen
läßt.
Der 8255 ist nicht leistungsfähiger als eine PIO, das ist eher
umgekehrt. Einfacher zu handhaben isser vielleicht, das liegt aber wohl
daran das er älter und primitiver ist.
@Marcel:
Ich weiß nicht wqas die ASCIs in der Z180 machen, die Baudrate ist vom
Takt abhängig, deswegen haben wir auch einen Baudratenquarz. Ich denke
aber
das Du nicht viel Unterschied zwischen 115200 und 57600 an einem ASCII
Terminal merken wirst. Das was Du da siehst ist IMHO nicht mehr die
Schnittstellengeschwindigkeit sondern das was die CPU senden und das
Terminal empfangen und verarbeiten kann ohne sich zu verschlucken.
Ich denke auch nicht das man "jedesmal umflashen" muß, Leo hat den
programmäßig den Hut auf (gut so) und das unterbringen von
Environmentvariablen für die Baudraten dürfte nicht das Problem sein,
der Z180 kann auch ausrechnen welche Vorteiler etc. er für welche
Baudrate bei welchem Takt braucht. Es sollte auch mit 9Mhz möglich sein
115200 zu fahren, das konnten schon langsamere Rechner, allerdings wird
dann Flußkontrolle wichtig.
Zur PIO: Mir sind bei der Z80 PIO keine Bugs bekannt, die macht recht
gut und zuverlässig das was sie soll und ist hinsichtlich Bitweiser
Programmierung auch flexibler als ein 8255. Ein 8255 dagegen hat mehr
pure IO Leitungen nd auch ne rudimentäre Unterstützung für Handshake,
aber das ist bei der PIO weiter ausgebaut. Der 8255 war eher da und
stammt noch aus dem 8080 System, genauso wie der 8253 und beide haben
dann bei 8085 und 8088/8086 eine weitere Blütezeit gehabt. Das
Vorhandensein verwendbarer Peripherie-ICs für den 8088 war wohl auch der
Grund warum IBM mit den 8088 Krücken den XT zusammengefrickelt hat (ja
ich meine das exakt so wie ich das schreibe). 68000 und Z8000 waren
weitaus bessere Systeme, es setzt sich am Markt aber wohl prinzipiell
exakt das Beschissenste durch.
Also merke Dir für die Zukunft: 8255 mehr Portpins aber primitiver und
Glitches. Der 82C55A ist etwas besser als der 8255 aber eine PIO ist
viel besser und flexibler. Die beim 8255 "zusätzlich" vorhandenen
Singale sind bei der PIO auch vorhanden aber teilweise dediziert belegt.
Evtl. wird die PIO auch für Manche übersichtlicher wenn sie eine
deutsche Doku lesen, ich habe da unter www.tiffe.de/Robotron in dem
Directory Bausteinubersicht unter Anderem PDFs zur U855, der Z80-PIO vom
MME Erfurt, DDR.
Ich habe noch ca. 30-40 Stück russische 8255 da, brauchst Du welche? :-)
Sing glaube ich A Typen, sollten also 5Mhz mit machen.
Nochmal: Ob das mit der Taktteilerei überhaupt praktikabel funktioniert
weiß ich nicht wirklich. Müßte man mal testen. Den Z180 muß man dann
wohl trotzdem mit Waitstates ziemlich einbremsen. IMHO hat der Register
in denen man das global festlegen kann, aber hier wäre wohl dann eine
Mimik analog der aus dem oben angegebenen Datenblatt nötig die die CPU
bei Zugriff auf einen bestimmen IO Bereich bremst.
Interruptprioritätskette kann man wohl bei 18Mhz weitestgehend
vergessen.
Natürlich kann man aber auch 74HCT374 oder Sowas als Latch zur
Ein-Ausgabe benutzen oder solche S-TTL Oldtimer wie 8212 mit
Interruptlogik :-)
Gruß,
Holm
Marcel A. schrieb:> Ich hätte kein Problem, für gewisse Anwendungen den Takt zu vierteln> (4,x MHz) - da diese aber im Quellcode steht, wäre das jedes Mal ein> umflashen, oder?
Nein, das mit dem vierteln war anders gemeint. Du willst offensichtlich
den CPU-Takt komplett niedriger einstellen. Da Du die ECB-Basiskarte
hast, kannst Du dafür ganz einfach den Jumper JP3 auf 2-3 stellen und
dann über den pin-Befehl an Pin 3 den gewünschten Takt einstellen.
18,432 MHz geteilt durch 2 oder 3 oder 4 oder ... oder 524288.
> Hat das nicht auch Auswirkungen auf die SIO? Ich denke, dann wäre nur> noch 38,4kB drin - das ist dann schon spürbar im Terminal :-)
Dafür ist ja die Takterkennung im BIOS, die aber leider nicht gut
funktioniert. Inzwischen habe ich eine andere (ich lasse den AVR den
Takt auf ca. 5 Stellen genau messen), die ist aber noch nicht eingebaut.
Aber wenn, dann kann man auch auf der Z180-Stamp (nahezu) beliebige
Quarze einstecken. Bis 33,868 MHz getestet.
Aus dem User Manual:
baud rate = f PHI /(2*(TC+2)*16)
Oder anders rum :
TC = (f PHI /*2*baud rate*16)) -2
Minimale Taktrate für 115200 baud:
2*2*115200*16/2 = 7,3728 MHz
Aber die Baudrate wird ja allgemein überbewertet. Das hatten wir schon
weiter oben.
> Habe zwar die CF-Karte noch nicht gebaut - frage ich aber, wie die> angesprochen wird?> - Sind die Laufwerke schon "fest verdrahtet" auf I - L?
Ja
> - vermutlich muss man das Modul / die Karte erst mal am PC formatieren?
Partitionieren reicht. Bin dabei, ein fdisk für CP/M mit TP zu
schreiben.
> - wie sehen denn die Daten für CFDISK aus? Ich erinnere mich nur an die> 8MB Partitionen...
Genuau so, wie beim AVR-CP/M-System. Nur primäre Partitionen und
Partitionstyp 52. Bisher wird auch nur das simhd-Format unterstützt,
also die bekannten 8 MB.
1
CP/M Version 3.0, Z180-Stamp BIOS v0.6.4.12-cf-card-dirty
holm schrieb:> Fußnägel wenn ich diese ateml bootloaded Konstruktionen sehe weil kein> Promer für Eproms da ist, ansonsten könnte der Z180 das ja gewissermaßen> alleine..
E(E)PROMS sind tot! Und das ist gut so.
Leo C. schrieb:> E(E)PROMS sind tot! Und das ist gut so.
Das ist jetzt aber ein hartes Urteil :-) Ich bin froh, einen Brenner zu
haben, damit kann ich die firmware für den NDR Computer und diverse
Dinge für meinen C128 brutzeln :-)
> E(E)PROMS sind tot! Und das ist gut so.
Ich glaube Dir kein Wort. Auch eine SD Karte ist nix weiter als ein
Flash ROM, es ist aber nicht allzu proaktikabel wenn man damit einen
Z180 anwerfen will.
Beruhige Dich mal mit edem Fdis in Pascal, ich glaube so was habe ich,
zumindest hat es mal eine MFM Festplatte partitioniert und u.A. auch
eine DOS Partition angelegt.
Ich suche das raus.
Gruß,
Holm
holm schrieb:> Wie schon geschrieben, mir war von vornherein klar das das ein> Spielzeug ist und ich will ja spielen. Ich hatte das ja gegenüber Joe> auch schon mal angesprochen
Hier nochmals ganz deutlich die Beweggründe für das derzeitige System.
Der Z180-Stamp ist eine CPU mit Z80-Bus und Speicher – mehr nicht.
Der AVR-Stamp ist ein Speicher der den Bootvorgang übernimmt – mehr
nicht.
Um den Bootvorgang und die Inbetriebnahme zu erleichtern, übernimmt der
AVR noch einige Zusatzfunktionen (Monitor, CD-Card mit FAT, V24, RTC,
USB, usw.). Wer das nicht mag, wer klassisch arbeiten möchte, steckt
einfach auf den Z180-Stamp seinen EPROM und steckt den Z180-Stamp auf
sein eigenes, wie auch immer aufgebautes Board.
CP/M – Minimalvariante
Z180-Stamp und AVR-Stamp im Huckepackbauweise ergeben ein lauffähiges
CP/M Minimalsystem. Es ist dazu keine weitere Hardware notwendig. Die
Terminalausgabe für den Monitor und das CP/M erfolgt über die
USB-Schnittstelle des AVR-Stamp.
CP/M – Grundvariante
Z180-Stamp und AVR-Stamp werden auf das Basisboard gesteckt. Auf diesem
sind die V24 Schnittstellen der SIO rausgeführt, eine zweite SD-Card
untergebracht, Jumper für die Taktumschaltung vorgesehen und der Z80-Bus
auf einen Steckverbinder rausgeführt. Bustreiber sind aus schon
ausgeführten Gründen nicht vorgesehen.
Mehr sollte und darf nicht in dieses System reininterpretiert werden. Es
ist und bleibt ein einfaches Experimentalsystem für Z80. Was letztlich
jeder damit machen möchte, bleibt den Nachnutzer überlassen.