Forum: Mikrocontroller und Digitale Elektronik Z80 Einplatinencomputer für Lernzwecke


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich möchte mir einen Z80 SBC bauen und befinde mich zur Zeit in der 
Designphase für die Hardware. Aus diesem Grund kann ich auch noch keinen 
Schaltplan präsentieren. Dies ist mein erstes größeres Projekt, das ich 
selbst umsetzen möchte. Ich habe natürlich schon ausgiebig Schaltpläne 
und Datenblätter studiert... An Erfahrung mangelt es halt ein wenig. Aus 
diesem Grund wäre ich für Vorschläge, Verbesserungen und Meinungen 
dankbar. Aber bitte schenkt euch die Kommentare warum ich das mache...

Zu meinem Design:
- Grundsystem bestehend aus CPU, CTC, PIO und SIO.
- Getaktet von einem Clockgenerator mit 9,8304 MHz Quarz eventuell mit 
Einzelschritt-Schaltung.
- Stromversorgung mit 5V-Low Dropout-Regler (mir schwebt zB ein LM2940 
oder LM1085 vor).
- Supervisor-Schaltung mit MAX691 oder ADM697.
- Bezüglich der Speicherbestückung bin ich mir am unsichersten, wie ich 
das am besten löse:
* 8kx8 oder 32kx8 EEPROM und Rest SRAM
* 128kx8 FLASH (über DIP-Switch aufgeteilt in 4 32k-Seiten oder 16 
8k-Seiten) und Rest SRAM
* NVRAM-Bausteine (8kx8 oder 32kx8) und SRAM
* SRAM mit NVRAM-Controller (BQ2201) und SRAM
* oder wie vorher mit NVRAM-Controller und Reset-Schaltung kombiniert in 
Form eines DS1321
Ich würde die FLASH-Variante präferieren...
- Zusätzlich vlt eine NVRAM-Karte als Laufwerk zum Einbinden (mit obigen 
Mitteln nur halt nicht im "normalen" Speicherbereich)
- Ferner möchte ich die Schaltung zum Programmieren des jeweiligen 
EEPROM/FLASH/NVRAM mit Hilfe eines ATMEGAs (welcher weiss ich noch 
nicht) direkt auf der Platine unterbringen. Laut meinen Recherchen 
sollte es reichen, die CPU auf Reset zu halten damit sie nicht 
dazwischenquatscht.

Das ganze möchte ich auf Lochraster mit Fädeldraht löten (ich weiss, 
viel Arbeit, aber ich hoffe es zahlt sich am Ende aus...).

Denkt ihr das ist so machbar bzw was könnte ich besser machen?
Danke und LG

von Pandur S. (jetztnicht)


Bewertung
-11 lesenswert
nicht lesenswert
Vergiss den Z80, der war von 30 Jahren noch gut. Nimm was Moderneres. 
Man kann auch bei Modernerem noch Peripherie verbauen. ADC, RTC, USB ..

: Bearbeitet durch User
von Harald N. (haraldn)


Bewertung
3 lesenswert
nicht lesenswert
Danke aber sorry, diese Art Kommentare meinte ich...

von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
Warum mit einem ATMega Eprom und Co programmieren? Das kann der Z80 doch 
selbst erledigen.

von Harald N. (haraldn)


Bewertung
1 lesenswert
nicht lesenswert
Nichtsdestotrotz gibt es das Henne Ei Problem. Damit der Z80 das kann 
braucht er doch auch mal einen Monitor der ihm sagt wie. Ausserdem fände 
ichs elegant...

von Frank K. (fchk)


Bewertung
-2 lesenswert
nicht lesenswert

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ich will aber mein System nicht mit einem Zilog-Controller aufbauen... 
Die hätte ich auch hier herumliegen. Und wenn schon dann ZNEO!

von Crazy H. (crazy_h)


Bewertung
-1 lesenswert
nicht lesenswert
Ich hab mal einen 8085-EPC gefädelt, aber bei 3 MHz war da Schluss.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Meinst du dass Signale übersprechen... Das wäre natürlich nicht so gut. 
Ich dachte wenn man schön kreuz und quer fädelt mindert sich dieser 
Effekt. Und das muss ich sowieso da die Zilog ICs alle PLCC sind.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
4 lesenswert
nicht lesenswert
Crazy H. schrieb:
> Ich hab mal einen 8085-EPC gefädelt, aber bei 3 MHz war da Schluss.

Das ist eine Designfrage, genauer eine Frage des Aufbaus der 
Spannungsversorgung. Wenn man die nicht fädelt, sondern mit dickerem 
Kupferdraht (verzinnt/versilbert) aufbaut und SMD-Abblockkondensatoren 
an den richtigen Stellen verbaut, dann kann man auch erheblich 
schnellere Systeme auf Lochrasterplatinen fädeln. Man sollte dann aber 
auch auf "Fädelkämme" verzichten.

Ich habe mal einen 68020-SBC mit 25 MHz Taktfrequenz gefädelt, mit 2 
MByte SRAM ohne Waitstates. Die einzigen SMD-Bauteile waren die bereits 
erwähnten Abblockkondensatoren.

von Georg G. (df2au)


Bewertung
1 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Nichtsdestotrotz gibt es das Henne Ei Problem.

Es soll - so geht das Gerücht - Leute geben, die anderen helfen. Ein 
Monitor Flash Eprom mit der Möglichkeit, sich selbst zu modifizieren, 
ist in 15 Minuten gemacht. Man muss nur die Basisadresse der SIO, die 
gewünschte Baudrate und Lage und Größe des RAM wissen.

Und noch ein Tipp: KISS, sonst kommst du nie in die Strümpfe. Ein 
gängiger Flash Baustein, Seitenwahl per DIL-Schalter und ein gängiges 
SRAM, am besten 64k oder 128k, Seitenwahl per Software (Latch im IO), 
und ganz wichtig, eine Reset Logik, die es dir erlaubt, auf 64k RAM um 
zu schalten.

von Crazy H. (crazy_h)


Bewertung
0 lesenswert
nicht lesenswert
Vor rund 25 Jahren hab ich mich damit abgefunden, daß es so ist. 
Messmöglichkeiten hatte ich damals nicht. Das war der Rechner, der bei 
der Kommunikationselektroniker-Ausbildung verwendet wird, auf einer 
Eurokarte :oD

von Georg G. (df2au)


Bewertung
2 lesenswert
nicht lesenswert
Crazy H. schrieb:
> bei 3 MHz war da Schluss

Mein Z80-CP/M System ist zu 50% gefädelt und rennt problemlos mit 10MHz.

von Crazy H. (crazy_h)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Crazy H. schrieb:
> Ich hab mal einen 8085-EPC gefädelt, aber bei 3 MHz war da Schluss.
>
> Das ist eine Designfrage, genauer eine Frage des Aufbaus der
> Spannungsversorgung. Wenn man die nicht fädelt, sondern mit dickerem
> Kupferdraht (verzinnt/versilbert) aufbaut und SMD-Abblockkondensatoren
> an den richtigen Stellen verbaut, dann kann man auch erheblich
> schnellere Systeme auf Lochrasterplatinen fädeln. Man sollte dann aber
> auch auf "Fädelkämme" verzichten.
>
> Ich habe mal einen 68020-SBC mit 25 MHz Taktfrequenz gefädelt, mit 2
> MByte SRAM ohne Waitstates. Die einzigen SMD-Bauteile waren die bereits
> erwähnten Abblockkondensatoren.

keine Ahnung mehr, wie der aufgebaut war, aber ich glaube der liegt noch 
irgendwo rum. Mal suchen .....

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Georg G. schrieb:
> Harald Nagy schrieb:
>> Nichtsdestotrotz gibt es das Henne Ei Problem.
>
> Es soll - so geht das Gerücht - Leute geben, die anderen helfen. Ein
> Monitor Flash Eprom mit der Möglichkeit, sich selbst zu modifizieren,
> ist in 15 Minuten gemacht. Man muss nur die Basisadresse der SIO, die
> gewünschte Baudrate und Lage und Größe des RAM wissen.
>
> Und noch ein Tipp: KISS, sonst kommst du nie in die Strümpfe. Ein
> gängiger Flash Baustein, Seitenwahl per DIL-Schalter und ein gängiges
> SRAM, am besten 64k oder 128k, Seitenwahl per Software (Latch im IO),
> und ganz wichtig, eine Reset Logik, die es dir erlaubt, auf 64k RAM um
> zu schalten.

Dafür bin ich wohl noch zu 'dumm'. Vielleicht in Version 2 dann...?

Was ich aber eigentlich wissen wollte: denkt ihr dass funktioniert so 
wie ich mir das vorstelle?

von Frank K. (fchk)


Bewertung
0 lesenswert
nicht lesenswert
Sicher. Es gibt hier ja noch andere Leute in diesem Forum, die das schon 
gemacht haben. Schau mal in diesen Thread:

Beitrag "Z180-Stamp Modul"

fchk

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Danke. Kenn ich und hab ich. Ist allerdings ein ganz anderes Design.
Wenn das so ist und anscheinend keine Beschwerden kommen werde ich mich 
am Wochenende mal an einen Schaltplan setzen...

von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Dafür bin ich wohl noch zu 'dumm'

Was hast du an dem Hilfsangebot nicht verstanden?

von Frank K. (fchk)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Ich will aber mein System nicht mit einem Zilog-Controller aufbauen...
> Die hätte ich auch hier herumliegen. Und wenn schon dann ZNEO!

ZNEO ist nicht Z80-binärkompatibel. Der eZ80 schon.

Nun ja, wer es gerne umständlich mag...

fchk

PS: Hier hast Du Gleichgesinnte:
http://www.z80.info/homebrew.htm

von karadur (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Hallo

kennst du diese HP: http://www.ndr-nkc.de/compo/index.htm

mit der ECB-BUS Variante als mc-CP/M habe ich in den 80ern meine 
Erfahrungen gesammelt.

War gut dokumentiert.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Georg G. schrieb:
> Harald Nagy schrieb:
>> Dafür bin ich wohl noch zu 'dumm'
>
> Was hast du an dem Hilfsangebot nicht verstanden?

Das schon, aber der zweite Absatz war mir etwas unlogisch. Oder meintest 
du ohnehin meine Idee mit der Flash Aufteilung in Seiten? Im Kopf hätte 
ich da zb den SST39SF010.

Hättest du denn evtl ein paar Codeschnipsel zu deinem Vorschlag?

: Bearbeitet durch User
von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Hättest du denn evtl ein paar Codeschnipsel zu deinem Vorschlag?

Ich mach morgen mal ein Paket fertig, kommt per Email.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Super danke! Dann werd ich mich dann mal hinsetzen und weiterplanen...

von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
>> Was hast du an dem Hilfsangebot nicht verstanden?
>
> Das schon, aber der zweite Absatz war mir etwas unlogisch. Oder meintest
> du ohnehin meine Idee mit der Flash Aufteilung in Seiten?

Am flexibelsten bist du, wenn du 64K RAM vorsiehst. Und eine Logik, die 
nach dem Reset die ersten z.B. 8K mit einem EPROM/EEPROM/FLASH 
überlagert. Aus dem dahinterliegenden RAM kann man dann nicht lesen, 
wohl aber rein schreiben. Und dann eine per I/O schaltbare Mimik, die 
das überlagerte ROM wieder abschaltet und/oder bankswitched.

In den ROM legst du dann ab 0000H (Reset-Einsprung) ein kurzes Programm, 
das deinen eigentlichen Monitor/BIOS ins RAM kopiert, im RAM anspringt 
und dort dann das ROM abschaltet. Anschließend kannst du im RAM nach 
Belieben schalten und walten und auch deinen Monitor überschreiben. Und 
prinzipiell spricht auch nichts dagegen, im Monitor eine Routine zu 
haben, die ihn zurück ins Flash kopiert. Am besten siehst du gleich 
einen größeren Flash vor in dem mehrere Versionen des Monitors liegen 
können. Dann kannst du immer eine "gute" Version behalten.

Das Thema hatten wir vor gar nicht langer Zeit schon mal: 
Beitrag "Retro Fieber: Z80 oder 68000 ?"

von Holm T. (Gast)


Bewertung
-4 lesenswert
nicht lesenswert
[Stänkermode]
Nimm ja nicht den komplizierten Z80, ein 8080 reicht für Dich!
[/Stänkermode]

Gruß,

Holm

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Nee der ist der nächste. ..

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nim eine Z180 Harald, das spart Dir einigen Fitz. Der hat auch eine MMU 
on Board und kann 1Mbyte adressieren. Habe ich Dir keinen ins Paket 
gelegt?
Vorsicht, bei den schnelleren Z80 CPUs gibts üble Fälschungen auf Ebay..

...und "Nee" ist sächsisch, da darfst Du gar nicht.

Gruß,

Holm

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Z180 hab ich auch hier - kommt erst danach. Ich will auch das Original 
ausprobieren...
Hätte auch eine KIO hier -wird auch ein eigenes Board...
was Fälschungen betrifft. Sind alles ICs direkt von Zilog.
Mir geht es ja nur um den Lerneffekt und da gehört halt auch das alles 
dazu. Blöd halt als absoluter Neuling. Aber es stresst ja nicht. Ein 
System nach dem anderen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Georg G. schrieb:
> Crazy H. schrieb:
>> bei 3 MHz war da Schluss
>
> Mein Z80-CP/M System ist zu 50% gefädelt und rennt problemlos mit 10MHz.

Ich biete einen 100% gefädelten TMS320C25 mit 40Mhz/2 = 20MHz in 
Fädeltechnik :-) Boardcontroller ist ein Mega32.

von Thomas M. (tom_holzwurm)


Bewertung
0 lesenswert
nicht lesenswert
Auch auf die Gefahr hin beschimpft zu werden: ich habe viele Jahre mit 
Z80/Z8S180 und ähnlichen Prozessoren eigene Boards in vielen Varianten 
antwickelt und in Assembler und C programmiert.
Die Hürden, die ich aus meiner wirklich jahrelangen Erfahrung heutzutage 
sehe sehe, ist der Aufwand an Hilfsmitteln ( Assembler/Compiler) 
EPROM-oder Flash-Programmer,
die in der Summe heutzutage deutlich teuerer sind als moderne 
µC-Entwicklungssysteme.
Wenn du wirklich Hardware entwickeln willst, vernünftige Messgeräte hast 
(DSO/Logicanalyzer), ist so ein System sicher interessant zum Lernen, 
aber dir muss klar sein: die Technik ist von 1975, meinen ersten Z80 
Einplatinenrechner habe ich während des Studiums 1977 gebaut ....
Falls du Fragen hast, ich gebe meine Erfahrung gerne weiter, wenns der 
guten Sache dient, meine Komponenten habe ich allerdings vor Jahren 
schon alle verkauft ...
Gruß Thomas

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Eine Frage zur praktischen Ausführung: Da ich die Busleitungen auch auf 
eine Stiftleiste herausführen will. Ist es sinnvoll, alle Busleitungen 
auf einen Punkt zusammenzuführen und von dort aus die einzelnen 
Bausteine zu verbinden oder ist es besser, die Leitungen nach der Reihe 
herzustellen? Ab wann sind eigentlich Bustreiber bzw Latches notwendig?

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Ab wann sind eigentlich Bustreiber bzw Latches notwendig?

Die traditionellen Z80 funktionieren auch noch mit einer 
Rückwandverdrahtung und einigen dort eingesteckten Platinen, wenn diese 
ordentlich gebuffert sind, z.B. mit HCT245 am Datenbus und 
entsprechenden Treibern für Adressen usw.

Eine Busverdrahtung mit der CPU an einem Ende ist am besten, dann kannst 
du auch an den Enden Pullup-Widerstände mit z.B. 10 kOhm verwenden, das 
ist kein Hispeed-Abschluss, aber besser als nichts.

Georg

von Eric B. (beric)


Bewertung
0 lesenswert
nicht lesenswert

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Harald Nagy schrieb:
>> Ab wann sind eigentlich Bustreiber bzw Latches notwendig?
>
> Die traditionellen Z80 funktionieren auch noch mit einer
> Rückwandverdrahtung und einigen dort eingesteckten Platinen, wenn diese
> ordentlich gebuffert sind, z.B. mit HCT245 am Datenbus und
> entsprechenden Treibern für Adressen usw.
>
> Eine Busverdrahtung mit der CPU an einem Ende ist am besten, dann kannst
> du auch an den Enden Pullup-Widerstände mit z.B. 10 kOhm verwenden, das
> ist kein Hispeed-Abschluss, aber besser als nichts.
>
> Georg

Ganz so traditionell wird's ja nicht. Sind ja die "moderneren" 
CMOS-Varianten. Aber ich denke mir auch, dass Bustreiber/Latches (ich 
würde HC-Logik verwenden, die habe ich hier) nicht schaden können.

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Aber ich denke mir auch, dass Bustreiber/Latches (ich
> würde HC-Logik verwenden, die habe ich hier) nicht schaden können.

Ich habe mich noch etwas ungenau ausgedrückt: meine CPU hat keine 
Treiber, aber alle eingesteckten Karten (belasten also den Bus bloss mit 
1x HCT).

Georg

von Ralph M. (rm2)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Harald,

wenn Du Dich mit Z80 beschäftigen willst, schaue bitte hier rein:

http://www.robotrontechnik.de/html/forum/thwb/index.php

Da gibt es eine Menge von Menschen, die sich damit beschäftigen.



Die Fragen die sich mir stellen:

- wie willst Du etwas sehen ohne Bildschirm (PIOs mit LEDs?)
- zur Programmentwicklung und EPROM brennen: was hast Du zur Verfügung
- neben RESET-Schaltung würde ich NMI-Schaltung empfehlen mit 
entsprechendem Kontrollprogramm zur Fehlersuche


mfg ralph

: Bearbeitet durch User
von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ralph Müller schrieb:
>
> Die Fragen die sich mir stellen:
>
> - wie willst Du etwas sehen ohne Bildschirm (PIOs mit LEDs?)

serielle Konsole zum PC ist Interface genug

> - zur Programmentwicklung und EPROM brennen: was hast Du zur Verfügung

Bitte lies meinen Eingangspost. Kein EPROM. EEPROM, FLASH, NVRAM oder 
SRAM mit NVRAM-Controller. Und Programmiersoftware für einen 
Microcontroller dafür zu schreiben ist jetzt nicht der große Aufwand.

> - neben RESET-Schaltung würde ich NMI-Schaltung empfehlen mit
> entsprechendem Kontrollprogramm zur Fehlersuche
>

Ist eine Idee. Danke.

> mfg ralph
gglg Harald

von Ralph M. (rm2)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:

>> - zur Programmentwicklung und EPROM brennen: was hast Du zur Verfügung
>
> Bitte lies meinen Eingangspost. Kein EPROM. EEPROM, FLASH, NVRAM oder
> SRAM mit NVRAM-Controller. Und Programmiersoftware für einen
> Microcontroller dafür zu schreiben ist jetzt nicht der große Aufwand.


Du brauchst einen Urlader auf Adresse 0000H. Ob das EPROM, EEPROM oder 
was auch immer ist, ist egal. Nach Power-On-Reset liest die CPU ab 
0000H.
Axel Schwenke  hat das schon beschrieben.



mfg ralph

: Bearbeitet durch User
von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ja und was spricht dagegen zb einen Flash mit einem atmega zu 
programmieren und auf adresse 0 zu legen?

Georg du meinst also die Bustreiber sind nicht notwendig?

Das mit dem Speicherbanking erscheint mir etwas kompliziert. Das ROM auf 
0000h kann ich ja nicht so leicht ausblenden. Dort in der nähe sind ja 
auch die Interruptroutinen....

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ralph Müller schrieb:
> Du brauchst einen Urlader auf Adresse 0000H

Das hatte so gut wie kein reales Z80-System, nur die für CP/M-Rechner. 
Normalerweise steht das Programm in einem Eprom und das fängt bei der 
Adresse 0 an - ganz einfach. "Geladen" wird, indem man das geeignete 
EProm reinsteckt. Das kann man heute natürlich anders lösen, wenn man 
Flash verwendet und im System programmiert, aber das gabs zu Z80-Zeiten 
garnicht. Dafür gabs zum Entwickeln EProm-Simulatoren oder 
InCircuit-Emulatoren oder ganz primitiv Monitorprogramme.

Georg

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

Das System des TO mit Atmega zum Programmieren ist praktisch genau ein 
traditionelles Z80-System mit fest eingebautem Epromsimulator.

Georg

von Ralph M. (rm2)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Harald,

Speicherbanking muß nicht zwangsläufig 64 K sein. Es gibt Z80-Systeme in 
denen 8, 16 oder 32 K RAM- oder ROM-Segmente jeweils über PIO-Signal 
eingeblendet werden.
Du mußt auch festlegen wo der SP-Bereich sein soll, die SIO mit 
Pegelanpassung an PC-Interface muß auch stimmen (Kontroll-LEDs für 
senden und empfangen?).



mfg ralph

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ralph Müller schrieb:
> Speicherbanking muß nicht zwangsläufig 64 K sein

Das kann es garnicht, man braucht ja einen Speicherbereich, der in 
beiden Bänken gültig ist für das gemeinsame Programm - z.B. das 
Programm, das zwischen den Bänken umschaltet. Nur so kann man 
Unterprogramme in verschiedenen Bänken aufrufen und so Programme mit 
mehr als 64k realisieren.

Georg

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Mir geht es ums Banking damit der Monitor-Code bearbeitbar wird. In der 
Art wie Georg und Axel es gestern angesprochen hatten.

von Holm T. (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Ja und was spricht dagegen zb einen Flash mit einem atmega zu
> programmieren und auf adresse 0 zu legen?
>
> Georg du meinst also die Bustreiber sind nicht notwendig?
>
> Das mit dem Speicherbanking erscheint mir etwas kompliziert. Das ROM auf
> 0000h kann ich ja nicht so leicht ausblenden. Dort in der nähe sind ja
> auch die Interruptroutinen....

Harald Du hast promoviert und solltest eigentlich in der Lage sein 
rauszubekommen wan irgendwas "an sich Scheiße ist".

Klar kannst Du da einen Atmega drauf frickeln der den RAM für den Z80 
lädt.
Da es aber schon Z80 emulierende Software für die Atmels gibt, läge es 
nahe den Z80 einfach im Design weg zu lassen, denn er behindert mit 
seiner Anforderung nach Reset den RAM geladen haben zu wollen den Atmel 
am werkeln.

Das Design ist in diesem Sinne genauso wie diese Stamp eigentlich Stuß.

Das Dir das mit dem Laderom kompliziert erscheint bedeutet eigentlich 
nur das Du das Prinzip nicht verstanden hast.
Es ist überhaupt nicht kompliziert und die Sache existiert in den 
verschiedensten Inkarnationen. Es ist Nichts weiter nötig als ein D-FF 
als Ausgaberegister zu beschalten und mit dessen Ausgängen die Selektion 
von ROM und RAM wechselweise zu sperren. Ob da Interruptvektoren liegen 
ist irrelevant, zur Zeit des Umladens müssen keine Interrupts bedient 
werden und die werden simpel gesperrt bzw. sind es nach dem Reset noch.

Stelle Dir RAM und ROM auf dem selben Adreßbereich ab 0 vor, die 
Chipselektlogik bewerkstelligt das nach Reset das ROM gelesen wird, aber 
Schreibzugriffe auf dem RAM laden. mit LD HL,0 LD DE,0 LD BC,ROMLEN, 
LDIR
schaufelst Du am Stück unmittelbar nach Reset den Speichernhalt um, 
danach ein Ausgabebefehl auf das oben angesprochene Flipflop und der ROM 
wird gesperrt und die Lesezugriffe landen auch auf dem RAM, das wars. 
Statt Fliplop tut es auch ein Pio-Bein oder auch ein "DTR" Ausgang einer 
Sio..

Wenn Du mit alten Mikroprozessoren basteln willst, akzeptiere auch deren 
Einsatzbedingungen wie z.B externe Programmspeicher.

Nochmal zu den Atmels: Wenn das einzige Werkzeug das man hat ein Hammer 
ist, beginnt Alles um einen herum auszusehen wie ein Nagel...

Wenn Du was Sinvolles mit dem Atmel machen willst, baue einen einfachen 
Epromer für Eproms EEProms oder Flashroms, so lange man sich auf einen 
Typ beschränkt ist das verhältnismäßig easy. eine 32K Type ist eine 
vernünftige Größe für Z80 Sachen, da bekommt, man schon ein Vielfaches 
von dem unter was man braucht, inklusive CP/M vom Rom..

Die Speicherumlademimik läßt sich beliebig aufbohren, es gibt Lösungen 
mit einem kleinen TTL RAM als MMU, mit dem dann auch solche Sachen wie 
programmierbarer Schreibschutz und RAM Paging (RAMfloppy) möglich sind.
Sinnvollerweise sollte dieser TTL RAM auch über E/A Befehle geladen 
werden.



Gruß,

Holm

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Georg du meinst also die Bustreiber sind nicht notwendig?

Nicht für den Betrieb als Z80, aber es kommt drauf an wie du den Atmel 
reinbasteln willst, entweder du baust Treiber für Daten, Adresse, 
Control ein und schaltest sie bei Atmel-Zugriff ab, oder du verwendest 
Z80 BUSREQ (= mehr Knowhow aber weniger Hardware).

Georg

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Holm Tiffe schrieb:
> Wenn Du was Sinvolles mit dem Atmel machen willst, baue einen einfachen
> Epromer für Eproms EEProms oder Flashroms, so lange man sich auf einen
> Typ beschränkt ist das verhältnismäßig easy. eine 32K Type ist eine
> vernünftige Größe für Z80 Sachen, da bekommt, man schon ein Vielfaches
> von dem unter was man braucht, inklusive CP/M vom Rom..

Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn 
dagegen? Alles andere hat sich in dieser Diskussion ergeben...

Und ja, ich tue mich noch schwer mit den Konzepten, was das Design 
betrifft. Das sehe ich ja als Herausforderung und will es hinbekommen. 
Am Ende soll halt schon ein Board herauskommen, das auch funktioniert. 
Und genau deswegen lese ich, frage ich hier und überlege mir 
verschiedene Herangehensweisen. Ich bin leider nicht in der glücklichen 
Lage MIT diesen Konzepten aufgewachsen zu sein...

von Eric B. (beric)


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Ralph Müller schrieb:
>> Speicherbanking muß nicht zwangsläufig 64 K sein
>
> Das kann es garnicht, man braucht ja einen Speicherbereich, der in
> beiden Bänken gültig ist für das gemeinsame Programm - z.B. das
> Programm, das zwischen den Bänken umschaltet.

Quarks. Man braucht nur in jeder 64k-Bank die Bank-Switching-Routine an 
der genau gleiche Adresse haben. Aber ein Speichermodell mit 16k oder 8k 
Bänke oder Pages ist schon flexibeler.

Der MSX Homecomputer hatte überigens ein 16k-Page Speichermodell. Die 
64k sind verteilt in 4 16-k Pages, die über ein Register im PPI 
geschaltet wurden. Für jeder Page kann man aus 4 "Slots" einen wählen.
Bank->   0   1   2   3         
0xFFFF +---+---+---+---+
       |   |   |   |[R]|  Hier ist zB. für Page 3 (0xC000-0xFFF)
0xC000 +---+---+---+---+  Slot 3 geschaltet. Es ist immer in jeder 
       |   |   |   |[R]|  Page (Reihe) genau 1 Slot (Spalte) aktiv.
0x8000 +---+---+---+---+
       |[B]|   |   |   |  B = BIOS & BASIC
0x4000 +---+---+---+---+  R = RAM
       |[B]|   |   |   | [x] = Slot/page aktiv
0x0000 +---+---+---+---+
Standardmässig ist in slot 0, page 0 (0x0000-0x3FFF) immer das BIOS, und 
in page 1 (aber nicht zwangsläufig slot 0!) der BASIC ROM. In Page 3 
muss RAM geschaltet sein, wegen System-variabelen und Stack.
Die obige Tabelle ist Beispielhaft für eine MSX-Maschine mit 32k RAM.
Der MSX hat auch physikalische "Slots" wo man ein ROM (oder RAM) Modul 
einstecken kann. So ein Modul nimmt dann ein Slot im Speichermodell in 
Anspruch. zB so:
Bank->   0   1   2   3         
0xFFFF +---+---+---+---+
       |   |   |   |[R] |  Hier is in Slot 1 ein 48k ROM (M)
0xC000 +---+---+---+---+   eingesteckt. Die geschaltete Pages sind
       |   |[M]|   | R |   mit [.] gekennzeichnet. Merke wie in
0x8000 +---+---+---+---+   diesem Fall das BIOS, der BASIC ROM und
       | B |[M]|   |   |   die untere 16k vom RAM nicht 'sichtbar'
0x4000 +---+---+---+---+   sind.
       | B |[M]|   |   |
0x0000 +---+---+---+---+
Irgendwo im Wiki auf http://www.msx.org/ sollte das alles genauer 
beschrieben sein, aber ich finde es so auf der schnelle nicht.

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn
> dagegen?

Nichts, ausser vielleicht dass man dazu nicht unbedingt einen Atmel oder 
überhaupt einen 2. Prozessor braucht, man kann ja auch einen Bootloader 
für den Z80 schreiben - was man realisieren muss ist ein Protokoll zur 
Datenübertragung und ein Algorithmus zur Flash-Programmierung (egal auf 
welchem Prozessortyp). Es ergibt sich nur ein Henne-Ei-Problem, denn 
solange man den Bootloader nicht am laufen hat stochert man ziemlich im 
Nebel herum. Grundsätzlich sehe ich nicht warum das mit Z80 schwieriger 
sein soll als mit einem Atmel, aber das hängt natürlich von der 
persönlichen Erfahrung ab. Wenn du Atmel Software mit links aus dem 
Ärmel schüttelst, warum nicht.

Georg

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Eric B. schrieb:
> Quarks. Man braucht nur in jeder 64k-Bank die Bank-Switching-Routine an
> der genau gleiche Adresse haben.

Aha - und wie rufst du ein Unterprogramm in einer Hochsprache, die die 
Parameter wie üblich auf dem Stack übergibt, in einer anderen Bank auf? 
Überhaupt, hast du in jeder Bank einen Stack oder wie?

Georg

von Eric B. (beric)


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Eric B. schrieb:
>> Quarks. Man braucht nur in jeder 64k-Bank die Bank-Switching-Routine an
>> der genau gleiche Adresse haben.
>
> Aha - und wie rufst du ein Unterprogramm in einer Hochsprache, die die
> Parameter wie üblich auf dem Stack übergibt, in einer anderen Bank auf?
> Überhaupt, hast du in jeder Bank einen Stack oder wie?

(forehead slap) Klar, hast du Recht.
Ich hatte das mit den 2 64k Bänken mal in einem 8051-Projekt. Der hatte 
aber getrennte Addressbereichen für RAM und ROM :-) Das Prinzip bleibt 
aber stehen, man braucht nur irgendwo (ein paar kB im obersten 
Addressbereich bietet sich an) ein bisschen RAM für Stack und co. Danach 
gilt mein Kommentar unverändert.

EDIT: Ich meine natürlich, dass der RAM dann nicht gebankt werden 
soll.

: Bearbeitet durch User
von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Harald Nagy schrieb:
>> Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn
>> dagegen?
>
> Nichts, ausser vielleicht dass man dazu nicht unbedingt einen Atmel oder
> überhaupt einen 2. Prozessor braucht, man kann ja auch einen Bootloader
> für den Z80 schreiben - was man realisieren muss ist ein Protokoll zur
> Datenübertragung und ein Algorithmus zur Flash-Programmierung (egal auf
> welchem Prozessortyp). Es ergibt sich nur ein Henne-Ei-Problem, denn
> solange man den Bootloader nicht am laufen hat stochert man ziemlich im
> Nebel herum. Grundsätzlich sehe ich nicht warum das mit Z80 schwieriger
> sein soll als mit einem Atmel, aber das hängt natürlich von der
> persönlichen Erfahrung ab. Wenn du Atmel Software mit links aus dem
> Ärmel schüttelst, warum nicht.
>
> Georg

Und so hat sich die Diskussion hier ergeben ;-)

Der Atmega kam mir nur deshalb in den Sinn, weil ich da die meiste 
Erfahrung habe und der Meinung bin, dass ich das schnell und 
unkompliziert hinbekommen würde. Natürlich ist jeder andere genausogut 
geeignet. Auch ein EPROM-Simulator wäre eine Idee. Nur leider habe ich 
bis jetzt noch kein Selbstbau-Modell gefunden, dass keinen Parallel-Port 
braucht...

Bis das Ur-ROM steht ist es halt etwas umständlich. Aber sobald das 
geschafft ist scheint es mir ein ziemlich optimales System. Du wolltest 
mir ja ein paar Codebeispiele und Schnipsel schicken zum Studieren.

: Bearbeitet durch User
von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Das ganze möchte ich auf Lochraster mit Fädeldraht löten (ich weiss,
> viel Arbeit, aber ich hoffe es zahlt sich am Ende aus...).

Lies dir unbedingt mal den durch, besonders hinsichtlich Fädeltechnik:
Beitrag "Retro Fieber: Z80 oder 68000 ?"
Christian wirkte jedenfalls anschliessend von Fädeltechnik kuriert.

: Bearbeitet durch User
von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ich weiss. Habe den Thread damals mitgelesen...
Aber versuchen will ich es trotzdem.

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Holm Tiffe schrieb:
>> Wenn Du was Sinvolles mit dem Atmel machen willst, baue einen einfachen
>> Epromer für Eproms EEProms oder Flashroms, so lange man sich auf einen
>> Typ beschränkt ist das verhältnismäßig easy. eine 32K Type ist eine
>> vernünftige Größe für Z80 Sachen, da bekommt, man schon ein Vielfaches
>> von dem unter was man braucht, inklusive CP/M vom Rom..
>
> Genau das war ja meine erste Idee, nur halt on-board. Was spricht denn
> dagegen? Alles andere hat sich in dieser Diskussion ergeben...

Das Problem ist hier das halt recht viele Leute was wissen und jeder das 
nach seiner eigenen Fasson durchziehen würde.
Die Atmel/Arduino Fraktion ist halt völlig von der Rolle wenn es um ein 
Rechnerboard geht auf dem keiner drauf ist..
Ich halte es aber für völlig bebirnt einen moderneren schnelleren 
Prozessor als Aushilfe für einen Historischen einzusetzen..

>
> Und ja, ich tue mich noch schwer mit den Konzepten, was das Design
> betrifft. Das sehe ich ja als Herausforderung und will es hinbekommen.
> Am Ende soll halt schon ein Board herauskommen, das auch funktioniert.
> Und genau deswegen lese ich, frage ich hier und überlege mir
> verschiedene Herangehensweisen. Ich bin leider nicht in der glücklichen
> Lage MIT diesen Konzepten aufgewachsen zu sein...

Dur sollest nochmal drüber nachdenken was Du wirklich möchtest.
IMHO reicht Dir eine Platine auf der in einem 29er ROM, von mir aus mit 
Dipschaltern im Bereich umschaltbar, ein Bootloader steckt, der in der 
Lage ist irgendwas von PC in den RAM zu fädeln und dort an zu springen.
Wenn das geht, kannst Du Alles andere mit Onboard mitteln machen.
Nimm aber bitte eine Z80-SIO, wegen dem IM2, diese wird üblicherweise 
von einem CTC getaktet. Du kannst auch dieses KIO Zeuchs nehmen, kenne 
ich aber nicht und braucht man auch nicht.

Eine Platine dieser Komplexität ist ohne Weiteres in Fädeltechnik zu 
machen, Kämme habe ich aber niemals benutzt und über 8Mhz habe ich auch 
nicht probiert was allerdings reicht. Textverarbeitung unter CP/M mit 
Wordstar geht damit schneller als Word mit Windows und ein paar Ghz :-) 
wenn wundert das?

Gruß,

Holm

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Meine Rede. Ich will mir doch nur die Monitor-Entwicklung erleichtern. 
Der Atmel soll dem Z80 auch nicht helfen sondern nur mein ROM 
programmieren. Anstatt mein EEPROM, FLASH, whatever andauernd ein und 
auszustöpseln würde ich halt einen Controller opfern.
Die Computerkonfiguration selbst soll nur CPU, CTC, PIO und SIO/4 (weil 
PLCC) umfassen. Speicher natürlich auch. KIO ist ohnehin das selbe nur 
halt in einem Chip inklusive Clockgenerator...
Nach dem Wochenende hab ich mehr Zeit mir Gedanken zu machen. Dann wirds 
vlt nal konkret.

: Bearbeitet durch User
von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Meine Rede. Ich will mir doch nur die Monitor-Entwicklung erleichtern.
> Der Atmel soll dem Z80 auch nicht helfen sondern nur mein ROM
> programmieren. Anstatt mein EEPROM, FLASH, whatever andauernd ein und
> auszustöpseln würde ich halt einen Controller opfern.

Das ist relativ, wenn Du die 2. Version mit einem 8080 oder whatever 
baust hast Du wieder das selbe Problem.
Ich hatte auch nicht umsonst 29xx gemeint (28 geht auch), damit kannst 
Du später den Lader erweitern so das die Kiste sich selber programmieren 
und updaten kann.

Gruß,

Holm

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Schon klar...

von Frank K. (fchk)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Meine Rede. Ich will mir doch nur die Monitor-Entwicklung erleichtern.
> Der Atmel soll dem Z80 auch nicht helfen sondern nur mein ROM
> programmieren. Anstatt mein EEPROM, FLASH, whatever andauernd ein und
> auszustöpseln würde ich halt einen Controller opfern.

Das geht wohl einfacher mit einem FT2232D:
http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT2232D.pdf

Lies Seite 44 Abschnitt 8.6 "MCU Host Bus Emulation Mode Signal 
Descriptions and Interface Configuration". Du hast damit einen 
8051-kompatiblen Adress-Daten-Bus, der mit einem HC573 demultiplext 
wird.

fchk

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Eine Möglichkeit wäre es. Aber erstens liegt so einer gerade nicht bei 
mir herum und zweitens habe ich keine Lust auf SMD auf einer 
Lochrasterplatine - weder frei verdrahtet noch auf DIP-Adapter.

von Konrad S. (maybee)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> keine Lust auf SMD auf einer
> Lochrasterplatine

Oder sowas: 
http://www.elv.de/elv-highspeed-mini-usb-modul-um-ft2232h-komplettbausatz.html

von Harald N. (haraldn)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So. Nun hab ich mal die Stromversorgung, Reset-Schaltung (MAX690) und 
Clock Generator auf Breadboard aufgebaut und mal getestet.
Funktioniert alles soweit.
Allerdings zeigt mir das Oszilloskop nur eine Frequenz von ca 1.2 MHz am 
Clock-Ausgang an. Leider besitze ich nur ein Billig-USB-Oszi aus 
China... Kann es daran liegen? Oder liegt es am Breadboard-Aufbau? Was 
sagt ihr zu der Clock-Generator-Schaltung im Anhang (übrigens in JPG 
weil das PNG doppelt so groß ist ;-) )? Die Stützkondensatoren sind alle 
vorhanden auch wenn nicht eingezeichnet...
Ich hab nämlich sämtliche Quarze durchprobiert die ich herumliegen habe 
(1 bis 16 MHz) und das Ergebnis ist immer dasselbe. Aus Neugierde hab 
ich auch einen 32kHz Uhrenquarz versucht, der schwingt allerdings nicht.
Weiters habe ich noch versucht:
- verändern der Kondensatoren und Widerstände
- verändern und weglassen des Pullups
- 74HC14 statt 74HC04
- weglassen jeweils eines Kondensators
Zusätzlich habe ich versucht, die Frequenz mit einem 74HC93 
herunterzuteilen. Ging auch, aber hochgerechnet kommen halt immer die ca 
1.2 MHz heraus.
Nachdem die Schaltung schwingt, soll ich einfach davon ausgehen, dass 
wenn alles nett verdrahtet auf der Platine ist, die Frequenz schon 
passen wird?

von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
Die 100pF sind deutlich zu viel, 20pF maximal würde ich nehmen.
Ansonsten ist es eine Standardschaltung, MUSS funktionieren.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Danke. Dann wird tatsächlich das Oszi schuld sein. Schwingen tuts ja.

von Erich (Gast)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Besser ist es, eine billige Platine aus'm Internet zu kaufen, wo schon 
bewährte Schaltung drauf ist.

Gruss

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Erich schrieb:
> Besser ist es, eine billige Platine aus'm Internet zu kaufen

Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem 
nichts, was den Hardwareaufbau angeht.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Erich schrieb:
>> Besser ist es, eine billige Platine aus'm Internet zu kaufen
>
> Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem
> nichts, was den Hardwareaufbau angeht.

Ganz genau so seh ich das auch. Der Weg ist das Ziel. Auch wenn er sehr 
steinig ist ;-)
Und nachdem hier keine größeren Einsprüche kommen nehme ich an dass ich 
auf dem richtigen Weg bin.

: Bearbeitet durch User
von Jens (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> - 74HC14 statt 74HC04
Wurde dafür nicht extra der 74HC04U entwickelt?

Jens

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung. Aber es sind genug Schaltungen mit den beiden anderen 
beschrieben. Und die Schaltung schwingt ja auch. Allein die gemessene 
Frequenz kann ich mir nicht erklären.

von karadur (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo

der Aufbau ist manchmal schwierig. Mit der Schaltung hatte ich schon 
Probleme weil die Kapazität des Quarzes die Schaltung schwingen lässt, 
aber nicht auf der Frequenz des Quarzes. 74HC4060 mit Quarz und Teilung 
durch 2 gibt sicher einen sauberen Rechteck mit der richtigen Frequenz.

von Erich (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
> Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem
> nichts, was den Hardwareaufbau angeht.

Ist theoretisch was dran an der Aussage.

ABER:
Mit der Geschwindigkeit wie ihr hier dazulernt, da ist der Z80 ruckzuck 
bald 75 Jahre alt...

http://www.greensmilies.com/smile/smiley_emoticons_my2cents.gif

Gruss

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Erich schrieb:
>> Nein, das ist es nicht, denn davon lernt man ... nichts, vor allem
>> nichts, was den Hardwareaufbau angeht.
>
> Ist theoretisch was dran an der Aussage.
>
> ABER:
> Mit der Geschwindigkeit wie ihr hier dazulernt, da ist der Z80 ruckzuck
> bald 75 Jahre alt...
>
> http://www.greensmilies.com/smile/smiley_emoticons_my2cents.gif
>
> Gruss

Ja und? Ich hab keinen Stress was mein Hobby betrifft.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
karadur schrieb:
> Hallo
>
> der Aufbau ist manchmal schwierig. Mit der Schaltung hatte ich schon
> Probleme weil die Kapazität des Quarzes die Schaltung schwingen lässt,
> aber nicht auf der Frequenz des Quarzes. 74HC4060 mit Quarz und Teilung
> durch 2 gibt sicher einen sauberen Rechteck mit der richtigen Frequenz.

Hab ein wenig gegoogelt... Verstehe ich das richtig dass ich beim 
74hc4060 mindestens eine Teilung der Frequenz durch 4 habe? Sprich bei 
meinem Quarz höchstens ca 2 Mhz schaffe?

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
@ Harald Nagy (haraldn)

>Hab ein wenig gegoogelt... Verstehe ich das richtig dass ich beim
>74hc4060 mindestens eine Teilung der Frequenz durch 4 habe?

Nö, 2^4=16 !

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ok vertan aber das machts nicht besser.

Edit: wir waren beide falsch. Es gibt Q3, also Teiler 8.

: Bearbeitet durch User
von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
@ Harald Nagy (haraldn)

>Edit: wir waren beide falsch. Es gibt Q3, also Teiler 8.

Nö. Schau mal genau hin. Nach 8 Takten kommt der erste Pegelwechsel auf 
Q3, nach 16 eine volle Periode.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ahh stimmt. Trotzdem. Das mag ich nicht.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
1 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> - 74HC14 statt 74HC04

Das funktioniert nicht. Dieser Quarzoszillator benötigt in den analogen 
Bereich vorgespannte Gatter, was mit einem Schmitt-Trigger nicht 
funktionieren kann. Wenn du schon diesen als Quarzmörder verschrienen 
Oszillator nimmst, tun es am besten 74LS04. Und reduziere mal die 47k -
in den meisten Schaltungen, die man im Netz findet, sind diese 
Widerstände in der Grössenordnung von 560R-2k2.

: Bearbeitet durch User
von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Da hast du unrecht. Bei Schaltungen im Netz is es entweder LS plus ca 4k 
oder HC plus ca 40k.
Wenn es so etwas grundlegendes wäre würde das ganze gar nicht schwingen 
oder?
aber ich kann ja mal schauen ob ich noch einen LS herumliegen habe.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:

> Das ganze möchte ich auf Lochraster mit Fädeldraht löten (ich weiss,
> viel Arbeit, aber ich hoffe es zahlt sich am Ende aus...).

Da ich das alles schon hinter mir habe ..... wo soll der Zug hinfahren? 
Z80 = CP/M? Was will man mit CP/M? Irgendwelche angestaubten Programme 
einladen, auf einer Textkonsole herumklimpern? Für CP/M wird eine 
bestimmte Hardware mit ROM/RAM Umschaltung verlangt, unterschätze nicht 
die Arbeit ein CPM zu modifizieren, damit es läuft. Welche 
Debugmöglichkeit soll es geben? Source Level Debuggung? Blinki-LED? Oder 
eigener Monitor?

Es gibt fertige Lösung wie den N8VEM die man nachbauen kann.

Ich habe heute NVRAM drin, als ROM und als RAM. Alles ferngesteuert über 
die RS232. EPROMs sehen zwar cooler aus aber die Brennerei nervt schon.

Plan schonmal sowas mit ein, ersetzt Tastatur und Monitor Hardware:
http://geoffg.net/terminal.html

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Christian J. schrieb:
> Da ich das alles schon hinter mir habe ..... wo soll der Zug hinfahren?
> Z80 = CP/M? Was will man mit CP/M? Irgendwelche angestaubten Programme
> einladen, auf einer Textkonsole herumklimpern? Für CP/M wird eine
> bestimmte Hardware mit ROM/RAM Umschaltung verlangt, unterschätze nicht
> die Arbeit ein CPM zu modifizieren, damit es läuft. Welche
> Debugmöglichkeit soll es geben? Source Level Debuggung? Blinki-LED? Oder
> eigener Monitor?
>
> Es gibt fertige Lösung wie den N8VEM die man nachbauen kann.
>
> Ich habe heute NVRAM drin, als ROM und als RAM. Alles ferngesteuert über
> die RS232. EPROMs sehen zwar cooler aus aber die Brennerei nervt schon.
>
> Plan schonmal sowas mit ein, ersetzt Tastatur und Monitor Hardware:
> http://geoffg.net/terminal.html

Kein CP/M. Keine Tastatur. Kein Monitor. Nur serielles Interface mit 
eigenem Monitor und PIO zum Anschließend von Peripherie. Fertig. Vor 
allem keine fertigen Lösungen...

von Christian J. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:

> Kein CP/M. Keine Tastatur. Kein Monitor. Nur serielles Interface mit
> eigenem Monitor und PIO zum Anschließend von Peripherie. Fertig. Vor
> allem keine fertigen Lösungen...

Tja... gibt es auch schon .... sind aber so rund 500 Einzeldrähtchen die 
man verlöten muss...

Meinen kennste ja sicher:

https://www.youtube.com/watch?v=gSVBFNCqYeQ

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Jup. Und wird zu schaffen sein. Muss ja nix neues sein. Will ja kein 
patent anmelden...

von Christian J. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Dann viel Spass. Die Schaltungen hier geprüft und funktionieren, auch 
der Taktgenerator.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Danke. Werd ich mir mal ansehen. Dein Projekt geht voran?

von Christian J. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:

> Danke. Werd ich mir mal ansehen. Dein Projekt geht voran?

Ist fertig .... (bis auf die LED Matrix Ansteueurung) und deswegen mache 
ich auch nix mehr dran. Der STM32F4 ist einfach .... besser :-)

von Christian J. (Gast)



Bewertung
0 lesenswert
nicht lesenswert
Hier mal Fottos....

Bzgl Bank Switching mit 512 kRAM:

http://www.zcontrol.narod.ru/diagrams/ZramBankSwitch.pdf

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Cooles System.
Die Appnote hab ich schon in meiner Projektmappe...

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Cooles System.
> Die Appnote hab ich schon in meiner Projektmappe..

Ok. Wollte mich hier auch nicht weiter reinhängen. Habe mein System hier 
auch nach meinem Wunsch aufgebaut und mich dafür als lernresistent 
beschimpfen lassen.

Nen paar Eckdaten sind allerdings hilfreich um nicht das Rad neu zu 
erfinden.

- SDCC Compiler + Makefile statt verkrampftes Assembler Geschwurbel.
Der SDCC ist nicht "einfach" aber wenn man mit ihm umgehen kann das 
beste   Werkzeug. Ich spiele das Program im RAM ein, nutze in diesem 
aber ROM Routinen als "Library", zb printf was viel Codesize erspart.

- mcurses lib von Frank M. als Kommunikationsinterface zum PC (minicom)
Läuft out of the box, sogar Kommandozeile und Hex Editor sind da.

- Ob man die CTC, SIO, PIO von Zilog verwendet sei frei, die meisten 
Designs aber nehmen andere Bausteine wie 8255, 8254 und 68B50 als 
Interface.

- Frühzeitig Gedanken übers Debugging machen! Ich nutze nur printf und 
einen Hex Uploader + Bash Script, was mir das voll automtisiert und die 
geany  IDE unter Linux. Ein Kopfdruck und das Kompilat wird hochgeladen 
und ausgeführt, man sieht sofort was auf dem Terminal passiert. Auch das 
habe ich in einem Video beschrieben. 
https://www.youtube.com/watch?v=PpTISqDCT0c

Viel Spass!

von Holm T. (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Christian J. schrieb:
> Harald Nagy schrieb:
>> Cooles System.
>> Die Appnote hab ich schon in meiner Projektmappe..
>
> Ok. Wollte mich hier auch nicht weiter reinhängen. Habe mein System hier
> auch nach meinem Wunsch aufgebaut und mich dafür als lernresistent
> beschimpfen lassen.

...und es bereut nicht auf die Ratschläge gehört zu haben.

:-)

>
> Nen paar Eckdaten sind allerdings hilfreich um nicht das Rad neu zu
> erfinden.
>
> - SDCC Compiler + Makefile statt verkrampftes Assembler Geschwurbel.
> Der SDCC ist nicht "einfach" aber wenn man mit ihm umgehen kann das
> beste   Werkzeug. Ich spiele das Program im RAM ein, nutze in diesem
> aber ROM Routinen als "Libryry", was viel Codesize erspart.

Christian das ist wieder ziemlicher Dünnschiß.

Der ganze Compiler und auch ie Bibliotheken bestehen aus 
Assemblergeschwurbel, die Tatsache das Dir das zu kompliziert erscheint 
macht das noch nicht zu Geschwurbel, schreib einfach das Du zu dumm oder 
zu faul bist, das trifft es wohl besser.

>
> - mcurses lib von Frank M. als Kommunikationsinterface zum PC (minicom)
> Läuft out of the box, sogar Kommandozeile und Hex Editor sind da.
>
> - Ob man die CTC, SIO, PIO von Zilog verwendet sei frei, die meisten
> Designs aber nehmen andere Bausteine wie 8255, 8254 und 68B50 als
> Interface.

Totaler Unfug, genau andersherum wird ein Schuh draus. Deine 
Strukturgurke ist weit entfernt von "die meisten" und die Meisten Leute 
bekommen die Funktionalität die Du implmentiert hast auch in Assembler 
in weitaus kleineren Programmen gebacken.

Bitte halte Dich mit Deinen Ansichten die schon Dir selbst Probleme 
gemacht haben zurück wenn Du sie jetzt auch noch als Ratschlag 
verteilst.

Sorry, mußte sein.

Holm

von Harald N. (haraldn)


Bewertung
2 lesenswert
nicht lesenswert
Naja ich finde Assembler ist Pflicht.  Ebenso die Verwendung der Zilog 
Bausteine, vor allem weil vorhanden und dafür gemacht.
Debugging über serial ist ok. Welcher Art ist offen und wird im Monitor 
implementiert welcher wiederum nicht starr ist sondern optimiert werden 
kann.

Ich finde es sehr schade dass in diesem Thread wenig konstruktives 
kommt. Aber ich werds schon selbst lösen... Aber danke für die 
konstruktiven Beiträge und Denkanstöße.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Holm Tiffe schrieb:

> Der ganze Compiler und auch ie Bibliotheken bestehen aus
> Assemblergeschwurbel, die Tatsache das Dir das zu kompliziert erscheint
> macht das noch nicht zu Geschwurbel, schreib einfach das Du zu dumm oder
> zu faul bist, das trifft es wohl besser.

Komm... fang mir nicht wieder mit diesem 
"Früher-war-alles-besser-Assembler Geschwafel" an. Bring damit deine LED 
zum blinken, freu Dich zwei 16 Bit Zahlen multipliziert zu haben 
(Braucht der Zaks 10 Seiten für das zu erklären wofuer ein Zeichen 
brauchen...nämlich "*"), brauch 5 Tage für etwas wofür ich nicht mal 
einen 1/2 brauche und gut ist es.

Die meisten Designs verzichten auf Zilog Bausteine, das ist einfach so. 
Punkt.

>>Bitte halte Dich mit Deinen Ansichten die schon Dir selbst Probleme
>>gemacht haben zurück wenn Du sie jetzt auch noch als Ratschlag
>>verteilst.

Ich nehme mir das Recht eine eigene Meinung zu dem Thema zu haben. Auch 
wenn Dir das nicht passt :-) Amen.

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> * 128kx8 FLASH (über DIP-Switch aufgeteilt in 4 32k-Seiten oder 16
> 8k-Seiten) und Rest SRAM

Wo du eine Mindestform von MMU offenbar auf der Rechnung hast, schau dir 
mal den 74HC670 an. Gibt frei wählbare 16KB Pages für einen 256KB 
Gesamtadressraum. Die weit und breit einfachste MMU unterhalb CPLD.

von A. K. (prx)


Bewertung
1 lesenswert
nicht lesenswert
Christian J. schrieb:
> Die meisten Designs verzichten auf Zilog Bausteine, das ist einfach so.
> Punkt.

Herrje, ich bin bei deinem Thread das erste Mal in 35 Jahren überhaupt 
auf ein 8080/Z80 Design gestossen, das den 6850 verwendet. Der einzige 
68xx Baustein, der sich grosser Beliebtheit erfreute, war der 6845. Du 
warst bisher auch der einzige, der den Z80-SIO als zu komplex 
aussortierte, jeder andere fand den bisher knorke.

Wenn es heute, 35 Jahre nach der grossen Zeit des Z80, wirklich etliche 
Leute geben sollte, die den SIO zu kompliziert finden, dann spräche das 
nicht gegen den SIO, sondern gegen die Zeit.

von Christian J. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Wo du eine Mindestform von MMU offenbar auf der Rechnung hast, schau dir
> mal den 74HC670 an. Gibt frei wählbare 16KB Pages für einen 256KB
> Gesamtadressraum. Die weit und breit einfachste MMU unterhalb CPLD.

Ich würde sagen, der TS ist noch in der Phase der Planung. Und da 
empfiehlt es sich zuerst eine Spezifikation zu schreiben, schön als Word 
Text mit Bildchen wohin er eigentlich will, denn nachher lässt sich 
nichts mehr ändern in einem Fädelaufbau.

Wenn es "nur" ein Demo Rechner sein soll, der nachher an der Wand hängt, 
so wie meiner und irgendwas leuchtet dann ist das etwas anderes als wenn 
er nachher wirklich CPM laufen lassen will oder ein erweiterbares System 
haben will. Und als "Steuerrechner", der ein paar Relais klimpert ist 
das schon zu aufgebohrt.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:

> Wenn es heute, 35 Jahre nach der grossen Zeit des Z80, wirklich etliche
> Leute geben sollte, die den SIO zu kompliziert finden, dann spräche das
> nicht gegen den SIO, sondern gegen die Zeit.

Es gibt durchaus Lernerfolge, einer daovn war dass ich den MK3801 hätte 
weglassen sollen und lieber eine SIO und dass das ROM wegwschaltbar 
hätte sein sollen.... und kompliziert ist die nicht.... da gibt der M4 
Cortex schon mehr her.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Christian J. schrieb:
> Hier mal Fottos....

O nein. "Fädelkämme".

von Martin S. (led_martin)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Allerdings zeigt mir das Oszilloskop nur eine Frequenz von ca 1.2 MHz am
> Clock-Ausgang an. Leider besitze ich nur ein Billig-USB-Oszi aus
> China... Kann es daran liegen? Oder liegt es am Breadboard-Aufbau? Was
> sagt ihr zu der Clock-Generator-Schaltung im Anhang

Wo ist in Deiner Schaltung die zweite Lastkapazität? Der Eingang eines 
74HC04 dürfte da zu wenig sein.

http://www.elektronik-magazin.de/res/images/entry/3/image/quarz-oszil-schaltung.gif

Mit freundlichen Grüßen - Martin

von Christian J. (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:

> O nein. "Fädelkämme".

Du fährst ja auch auf einer Autobahn nach München und nicht querfeldein 
durch die Pampa. Alles schön seine preussische Ordung ... im 
Gleichschritt Marsch meine Bits, rechts um.... links....

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Naja ausser dem Speicher steht mein Design. ..

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:

> Naja ausser dem Speicher steht mein Design. ..

Wo? Zeigen!

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ich sagt Design nicht Schaltplan.
Ausserdem bin ich jetzt über eine Woche familienmässig ausgenockt. 
Leider. ..

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
Christian J. schrieb:
> Du fährst ja auch auf einer Autobahn nach München und nicht querfeldein
> durch die Pampa.

Das HF-Verhalten von gefädelten Schaltungen, die auf diese Dinger 
verzichten, ist erfahrungsgemäß erheblich besser.

Ich muss wohl doch meine alte 68020-Platine mal 'rauskramen und 
ablichten.

von Leo C. (rapid)


Bewertung
1 lesenswert
nicht lesenswert
Christian J. schrieb:
> denn nachher lässt sich
> nichts mehr ändern in einem Fädelaufbau.

Bei Deiner Webtechnik mit Fädelkämmen vielleicht. Ansonsten ist das 
gerade der größte Vorteil von Fädeltechnik, daß man alles leicht ändern 
und erweitern kann.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was wird es denn letzlich?  Eine Demo Geschichte für den Schrank oder 
eine echte Steuerung?  Diese RAM bank Geschichte ist nicht ganz ohne, 
bei einem Compiler würde es Ärger geben, weil der damit nicht umgehen 
kann. Es gibt aber auch ein Linux System von Alan Cox, der braucht 
Banking.

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Martin Schlüter schrieb:
> Harald Nagy schrieb:
>> Allerdings zeigt mir das Oszilloskop nur eine Frequenz von ca 1.2 MHz am
>> Clock-Ausgang an. Leider besitze ich nur ein Billig-USB-Oszi aus
>> China... Kann es daran liegen? Oder liegt es am Breadboard-Aufbau? Was
>> sagt ihr zu der Clock-Generator-Schaltung im Anhang
>
> Wo ist in Deiner Schaltung die zweite Lastkapazität? Der Eingang eines
> 74HC04 dürfte da zu wenig sein.
>
> 
http://www.elektronik-magazin.de/res/images/entry/3/image/quarz-oszil-schaltung.gif
>
> Mit freundlichen Grüßen - Martin

Das sehe ich auch als Problem an. Der Oszillator schwingt als RC 
Oszillator
mit der Kapazität über dem Quarz. an den Eingang gehört ein 2. C als 
Spannungsteiler.

Gruß,

Holm

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Christian J. schrieb:
> A. K. schrieb:
>
>> Wenn es heute, 35 Jahre nach der grossen Zeit des Z80, wirklich etliche
>> Leute geben sollte, die den SIO zu kompliziert finden, dann spräche das
>> nicht gegen den SIO, sondern gegen die Zeit.
>
> Es gibt durchaus Lernerfolge, einer daovn war dass ich den MK3801 hätte
> weglassen sollen und lieber eine SIO und dass das ROM wegwschaltbar
> hätte sein sollen.... und kompliziert ist die nicht.... da gibt der M4
> Cortex schon mehr her.


Soso. Christian, falls Du es noch nicht bemerkt hast: Hier redet niemand 
über ARM Prozessoren, auch nicht über Mips oder Power.

Deine Aussage das die SIO nicht zu kompliziert ist kann ich problemlos 
widerlegen, durch ein Zitat eines Deiner eigenen Postings übrigens, bist 
Du so nett uns suchst es selbst?

WasDu bei Deinen Experimenten nicht bemerkt hast ist di Tatsache das man 
deutlich weniger Hardware benötigt als Du da zusammengestrickt hast umd 
ein CP/M laufen zu lassen. Da Einzige was dazu notwendig ist ist die 
Überlegung vor dem Bau.

Ich schrieb auch nicht das  früher Alles besser war, ich schrieb das Du 
verschiedene Sachen nicht begriffen hast aber nun darüber Vorträge 
hältst.
Wie viele Z80 Syseme hast Du in Nartura erlebt um darüber entscheiden zu 
können ob die meisten die Zilog Systembausteine verwenden oder nicht?
Ich denke mal du reflektierst auf Grants Webseite, der ist aber nicht 
"die Meisten".

Gruß,

Holm

von Holm T. (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Christian J. schrieb:
> Rufus Τ. Firefly schrieb:
>
>> O nein. "Fädelkämme".
>
> Du fährst ja auch auf einer Autobahn nach München und nicht querfeldein
> durch die Pampa. Alles schön seine preussische Ordung ... im
> Gleichschritt Marsch meine Bits, rechts um.... links....

Hmm. Da hast also eine Z80 Autobahn gebaut?
Die Fädelkämme wurden schon in "Deinem Thread" abgehandelt, die sehen 
ordentlich aus, aber haben sonst nur Nachteile wie hohe parqasitäre 
Kapazitäten und fast ausgeschlossene Änderungen .. wie Du schon 
feststellen durftest.

Gruß,

Holm

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Naja ausser dem Speicher steht mein Design. ..


Mach mal langsam Harald. Wir reden vorher drüber.
Hier gibts genug Leute die Z80 Systeme aus dem FF kennen, Du must ja 
Christians Fehler nicht unbedingt wiederholen.

Gruß,

Holm

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Ähm, könntet ihr bitte die Kampfdiskussionen außen vor lassen? Es wäre 
mir sehr recht wenn dieser Thread nicht durch Glaubensfragen aufgeblasen 
wird.
Jedemfalls hab ich jetzt mehr oder weniger eine Woche nur zeit für 
Theorie...

von karadur (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo

soweit ich mich erinnere brauchst du einen Teiler nach dem Oszillator um 
ein Tastverhältnis von 50% zu bekommen.

Ich würde einen fertigen Oszillator nehmen dann passt auch das 
Tastverhältnis.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Nachdem ich die schaltung von einem funktionierem System abgekupfert 
habe gehe ich davon aus dass sie funktionieren sollte. Aber ich werde 
eure Vorschläge ausprobieren.

von Christian J. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:

> Ähm, könntet ihr bitte die Kampfdiskussionen außen vor lassen?

Nun ja...... jedesmal wenn in einem Betreff "Z80" auftaucht springen 
rote Lampen bei einigen hier an. Bedenke, dass Du hier einen heiligen 
Gral anrührst, es ist nicht eine CPU, es ist "DIE CPU". Aber ok..... ich 
knuddel den Holm dann mal und halte mich hier ganz zurück :-)

>>aber haben sonst nur Nachteile wie hohe parqasitäre
>>Kapazitäten und fast ausgeschlossene Änderungen .. wie Du schon
>>feststellen durftest.

Haben sie, haben sie..... aber das Auge isst mit. Eigentlich haben sie
gar keine technischen Vorteile.

von Georg (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Christian J. schrieb:
> Diese RAM bank Geschichte ist nicht ganz ohne,
> bei einem Compiler würde es Ärger geben, weil der damit nicht umgehen
> kann.

Gilt nur für Leute, die nicht selber programmieren können und alles dem 
Compiler überlassen (müssen).

Georg

von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
karadur schrieb:
> fertigen Oszillator

Eine gute Alternative ist ein HC4060 mit einem passend ungeradem Quarz 
(9.83MHz als Beispiel). Der wirft dann auch gleich den Baudraten Takt 
für die SIO aus.

von karadur (Gast)


Bewertung
0 lesenswert
nicht lesenswert
4060 will er ja nicht, hatte ich schon vorgeschlagen.

von Georg G. (df2au)


Bewertung
-1 lesenswert
nicht lesenswert
karadur schrieb:
> hatte ich schon vorgeschlagen.

Steter Tropfen höhlt die Leber (oder so ähnlich).

von Benjamin K. (benjamin92)


Bewertung
-2 lesenswert
nicht lesenswert
Warum wird Christian hier so niedergemacht?
Er hat ja immerhin ein funktionierendes System mit der Z80 CPU und auch 
einige Peripherie hinbekommen. Ich dachte auch mal, dass ich es 
hinbekomme, so ein System selbst zu bauen, habe es aber leider nie 
wirklich durchgezogen bzw fertig gebracht. Vermutlich hatte ich auch 
nicht die Geduld und Ausdauer dazu. Wenn man sich die Reaktionen 
durchliest, traut man sich ja wirklich keinen eigenen Thread auf zu 
machen, um mal was vorzustellen.

von c-hater (Gast)


Bewertung
-5 lesenswert
nicht lesenswert
Harald Nagy schrieb:

> Aber bitte schenkt euch die Kommentare warum ich das mache...

Dabei wäre das das einzig spannende...

Der Rest ist völlig uninteressant, trivial und, last but not least, 
völlig irrelevant im Jahr 2015.

von karadur (Gast)


Bewertung
3 lesenswert
nicht lesenswert
Es macht aber Spaß. Ich habe jedenfalls die Grundlagen damit gut 
verstanden. Und damals hat mein Z80 mit 8MHz, Epromfloppy und Ramfloppy 
jeden PC abgehängt. Was ich immer noch vermisse: der Eingabeprompt 
wartete schon ungeduldig bevor die Bildröhre warm war.
Toll waren auch die 8" Laufwerke mit 243 KB.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Harald Nagy schrieb:
>
>> Aber bitte schenkt euch die Kommentare warum ich das mache...
>
> Dabei wäre das das einzig spannende...
>
> Der Rest ist völlig uninteressant, trivial und, last but not least,
> völlig irrelevant im Jahr 2015.

Nicht du schon wieder....

von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:
> Der Rest ist völlig uninteressant, trivial und, last but not least,
> völlig irrelevant im Jahr 2015.

Warum kannst du dann nicht einfach mal ... deinen Senf für dich 
behalten?

von Harald N. (haraldn)


Bewertung
-1 lesenswert
nicht lesenswert
Benjamin K. schrieb:
> Warum wird Christian hier so niedergemacht?
> Er hat ja immerhin ein funktionierendes System mit der Z80 CPU und auch
> einige Peripherie hinbekommen. Ich dachte auch mal, dass ich es
> hinbekomme, so ein System selbst zu bauen, habe es aber leider nie
> wirklich durchgezogen bzw fertig gebracht. Vermutlich hatte ich auch
> nicht die Geduld und Ausdauer dazu. Wenn man sich die Reaktionen
> durchliest, traut man sich ja wirklich keinen eigenen Thread auf zu
> machen, um mal was vorzustellen.

Ich will Christian nicht niedermachen. Wenn das so rübergekommen ist 
dann sorry...

von Christian J. (Gast)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Ich hols schonmal....

von S. R. (svenska)


Bewertung
1 lesenswert
nicht lesenswert
Benjamin K. schrieb:
> Warum wird Christian hier so niedergemacht?
> Er hat ja immerhin ein funktionierendes System mit der Z80 CPU und auch
> einige Peripherie hinbekommen.

Weil er jeden Fehler im Buch gemacht hat, Ratschläge erstmal 
grundsätzlich ignoriert hat, und sich danach beschwert hat, dass alles 
so kompliziert ist (und das jetzt zum Besten gibt).

Lies dir mal seinen Thread durch und achte insbesondere auf die 
Zeitabstände zwischen dem "ich will XX machen"/"das ist eine doofe Idee, 
mach lieber YY", und der Einsicht "herrje, ist YY kompliziert, hätte ich 
mal XX gemacht". Dann verstehst du die Reaktionen (auch seine) hier.

Das ist ähnlich wie bei Moby oder c-hater. Selbst, wenn sie recht hätten 
(was sogar vorkommt), glaubt ihnen niemand mehr, weil sie sich durch 
ihre Trollerei selbst so dermaßen ins Aus geschossen haben. Ist mit 
Christian und Z80 ähnlich. "Wer einmal lügt..."

Aber erst Unsinn zu erzählen und dann Popcorn bereitzustellen ist 
irgendwie schon die Definition von Troll. Nungut, mach' dir selbst ein 
Bild.

> Wenn man sich die Reaktionen durchliest, traut man sich ja wirklich
> keinen eigenen Thread auf zu machen, um mal was vorzustellen.

Wenn man entweder zeigt, dass man entweder seine Hausaufgaben gemacht 
hat, oder zumindest zuhören, verstehen und lernen will, dann 
funktioniert das hier ganz wunderbar. Die Threads driften zwar trotzdem 
ab, aber damit muss man leben können. Der Z80 ist nun doch nicht mehr 
ganz taufrisch und die meisten Hinweise kommen aus den staubigen 
Erinnerungskisten - da kommen auch Anekdoten und falsche Hinweise bei 
raus. Aber die wichtigen Antworten, Tipps und Ideen bekommt man. Darauf 
kommt es an.

Ich habe hier für mein Z80-Projekt kompetente Hilfe (und auch 
Ermunterung!, neben dem Getrolle) bekommen. Das System, wie ich es (u.a. 
nach den Hinweisen von hier) aufgebaut hatte, funktioniert prima. Es war 
im Prinzip so aufgebaut wie das, was Harald vor hat (also mit AVR als 
Boardcontroller, der erst den RAM befüllt und danach den Z80 loslaufen 
lässt). Und mit den Erfahrungen davon baue ich als nächsten Schritt die 
finale Version, die etwas "klassischer" aussieht und ohne AVR auskommt.

Dumme Entscheidungen treffen ist leicht (ich habe den AVR per I2C 
angebunden - der Bootvorgang war nicht besonders schnell). Es trotzdem 
zum Laufen zu kriegen ist trotzdem schön. Aber daraus zu lernen und es 
dann nochmal richtig zu machen, ist die wirkliche Kür.

Mit STM32 und SAM3X habe ich so schon genug zu tun.

von Christian J. (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Ich klink mich hier dann auch mal aus. Die üblichen Prediger und Inhaber 
der Foren Lufthoheit haben sich ja schon aufs Stichwort eingefunden. Die 
werden Dir schon sagen wie Du es nach ihren Vorstellungen zu machen 
hast. Hauptsache es funktioniert bei mir alles, alles andere kann mir 
auch egal sein.

von google (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Christian J. schrieb:
> Ich klink mich hier dann auch mal aus. Die üblichen Prediger und
> Inhaber
> der Foren Lufthoheit haben sich ja schon aufs Stichwort eingefunden. Die
> werden Dir schon sagen wie Du es nach ihren Vorstellungen zu machen
> hast. Hauptsache es funktioniert bei mir alles, alles andere kann mir
> auch egal sein.

Du bist schon ziemlich frech und undankbar.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Der Vorteil derartiger Foren ist ja zum Glück dass man das für sich 
Sinnvolle extrahieren und den Rest ignorieren kann...
Der Ton einiger Teilnehmer hier im Forum ist ja hinlänglich bekannt ;-)

von Erich (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Freunde,

hier mal eine Platine aus den frühen 1990ern.

Lithium-Batterie fehlt.
Ram ist abgesteckt damit man druntersehen kann.
1488 / 1489 sind gebrückt ; weil TTL und externe Iso-Übertragung.

HD61830 + Ram war für LCD Grafikdisplays, z.B. 128x240 Pixel 
(einfarbig).


Ja, es stimmt:  Christian J. (hobel)  ist beratungsresistent.

Gruss

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe eine Platine mit 4Mhz U880 auf der eine "MMU" mit einem TTL RAM 
eingetzt wird wie ich es schon mal beschrieben hatte. Hersteller war VEB 
Elektronik Gera.
Auf der Platine 170x215mm gibts 1xCPU,1xPIO,1xCTC,1xSIO, 4x8KROM und 64K 
DRAM. IMHO läßt sich der Speicher 4 Kilobyteweise verwalten. Der RAM ist 
ein 7489, ein S-Typ wäre für höhere Geschwindigkeiten sicher besser, 
allerdings sind auch die Speicher deutlich schneller als früher. Ich 
denke nicht das es solche RAMs als CMOS gibt..gibts die? (16*4 Bit)
Interessiert die die Schaltung der MMU aka Speicherverwaltung Harald?
Dann zeichne ich die mal raus, Unterlagen habe ich aber das ist 
dunkelbraun auf hellbraun, eine Lichtpause. Erfahrungsgemäß ist da Kopie 
oder Scanner eher schwierig..

Gruß,

Holm

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Hi Holm!

ja das wäre echt nett von dir! Ich will mir möglichst viele Designs 
ansehen um dann das Richtige für mich herauszufinden.

Lg Harald

von Adrian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
und nicht eher ist frech sondern einige anderen offenbar etwas wirr im 
Kopf, sonst würden solche Diskussionen nicht immer so aus dem ruder 
laufen

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Ich will mir möglichst viele Designs
> ansehen um dann das Richtige für mich herauszufinden.

http://www.pci-card.com/euro-z80.html

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
http://www.jupiter-ace.co.uk/ace_schematic.html

Das ist ein sehr reduzierter Ansatz.

Der Jupiter Ace war Anfang der 80er Jahre ein sehr exotischer 
Homecomputer und verschwand auch sehr schnell wieder vom Markt. Seinem 
Zeitgenossen, dem ZX81 gegenüber hatte er den Vorzug der etwas besseren 
(Gummi-)Tastatur und der Bildschirmansteuerung komplett in Hardware. 
Exotisch war er, weil er einen Forth-Interpreter im ROM hatte, also 
nicht wie andere Homecomputer mit einem Basic-Dialekt daherkam.

Dafür war im (ziemlich kompakten) Handbuch fast alles relevante zum 
Gerät dokumentiert, natürlich fehlten Schaltpläne und das ROM-Listing, 
aber alles andere, der Forthinterpreter und die Hardwareschnittstellen 
waren ausreichend gut beschrieben.

von Holm T. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die MMU der GRE Platine...
Morgen mehr dazu.

Gruß,

Holm

von S. R. (svenska)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

> ja das wäre echt nett von dir! Ich will mir möglichst viele Designs
> ansehen um dann das Richtige für mich herauszufinden.

dann hänge ich auch mal meine Pläne an.
Das erste System habe ich so wie im Schaltplan aufgebaut. Der AVR dient 
als Board-Controller und übernimmt zuerst die Buskontrolle, um dem Z80 
gültige Daten in den RAM zu legen. Außerdem dient er als serielle 
Schnittstelle zur Außenwelt, als ziemlich langsame (wegen I²C) 
ROM-Floppy und stellt den Takt (einstellbar) für den Z80 bereit. CP/M 
läuft. Als RAM dient ein 32k-SRAM, welches direkt am Bus hängt (aber via 
Steckkarte). Der Interruptlogik fehlt ein Latch; wenn mehrere IRQs 
quasi-gleichzeitig feuern, wird u.U. ein falscher Interrupt gemeldet.

Das zweite System ist meine derzeitige Planung, und noch nicht 
aufgebaut. Eine MMU auf Basis des 74LS612 stellt 1 MB Adressraum in 4 
KB-Pages bereit, gefüllt mit 256 KB Flash und 768 KB DRAM in 3 Bänken. 
Interrupt- und Adressierungslogik für den Bus wird dann auf eine zweite 
Steckkarte ausgelagert.

Eine vorherige Planung enthielt eine MMU auf Basis vom 74LS189, ähnlich 
wie die von Holm gezeigte. Allerdings sind beide Chips nur schwer zu 
bekommen, und ein 74LS612 vereinfacht das Design deutlich (nur 2 ICs für 
die MMU).

Gruß,
Svenska

von avus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die SIO ist nicht kompliziert.

Anbei ein Monitor, wie er bei mir läuft.
XTAL ist 2 MHz, die beiden SIOs sind über den CTC mit Takt versorgt und 
laufen auf 9600. Wenn man den Quarz auf 8MHz austauscht, bekommt man 
also 38400 Baud; die CMOS-Versionen von Z80 und Peripherie können das 
ab.

Programmspeicher ist 29F-EEprom mit 128kB, über einen BCD-Schalter sind 
die Programme auswählbar. Das gehört noch zum echten Stil, behaupte ich 
einfach mal, weil Eprom-Löschen wirklich blöd ist.

Das Projekt hatte ich vor 1.5 Jahren angefangen, weil ich noch eine 
Rechnung mit der SIO aus dem Jahr 198x offen hatte.

Inzwischen habe ich das meiste wieder vergessen, was die Hardware auf 
dem Board von 198x und diesem neuen Board angeht.
Was eventuell zu denken geben könnte.
Bei mir war es allerdings von vornherein ein Projekt für die Schublade 
... Hauptsache, es läuft g

Den Crossassembler von Mnemonics auf Maschinensprache habe ich selbst 
geschrieben, von daher werden die Steuerzeichen nicht für andere 
Assembler passen.
Das LCD wird im 4-bit-Modus angesteuert.


'    BOOTLOADER
'--------------------------------------------------------------------------
'           ANSCHLUSSBELEGUNGEN FÜR Z80-TERMINAL
'--------------------------------------------------------------------------
'    XTAL  2MHz
'             SIO  PORT $00,$01,$02,$03
'             PIO  PORT $04,$05,$06,$07
'    PIOA  bidirektional
'    PIOB  bit control
'    PIOB7  I/O, BCD-Schalter 8
'    PIOB6  I/O, BCD-Schalter 4, EEPROM A17
'    PIOB5  I/O, BCD-Schalter 2, EEPROM A16
'    PIOB4  I/O, BCD-Schalter 1, EEPROM A15
'    PIOB3  O, LED weiss
'    PIOB2  O, LED purple
'    PIOB1  O, LED gelb
'    PIOB0  O, LED grün
'             CTC  PORT $08,$09,$0A,$0B
'    CTC0  verbunden mit SIOA-CLK
'    CTC1  verbunden mit SIOB-CLK
'    CTC2  NC
'    CTC3  NC
'    LCDEN  PIOA, Bit6
'    LCDWR  PIOA, Bit5
'    LCDRS  PIOA, Bit4
'    LCDD7  PIOA, Bit3
'    LCDD6  PIOA, Bit2
'    LCDD5  PIOA, Bit1
'    LCDD4  PIOA, Bit0
'--------------------------------------------------------------------------
'           KONSTANTENDEFINITIONEN
'--------------------------------------------------------------------------
'             ***************
'             * I/O-BEREICH *
'             ***************
D             SIOA=$00
D             SIOB=$01
D             CTR_SIOA=$02
D             CTR_SIOB=$03
D    PIOA=$04
D    PIOB=$05
D    CTR_PIOA=$06
D    CTR_PIOB=$07
D             CTC0=$08
D             CTC1=$09
D             CTC2=$0A
D             CTC3=$0B
'D    BAUD=!52  '8MHZ / 13 /16 ~ 38400 Baud für SIO
'             ************
'             * SPEICHER *
'             ************
D             MBANK=$FFFF  'Memorybank für EEPROM, enthält Adresse A15, A16, A17 in Bit 0-2, BCD-Schalter 8 in Bit 3
'--------------------------------------------------------------------------
'           PROGRAMMBEGINN
'--------------------------------------------------------------------------
$0000         JP $0100
$0038    JP $F800  '*** INT-Routine bei $F800
$0066    JP $FA00  '*** NMI-Routine bei $FA00
$0100    LD SP,$FFFE
    CALL PIO_INIT  
    CALL LCD_INIT
    CALL CTC_INIT  '38400 Baud
    CALL SIOA_INIT  
    CALL SIOB_INIT  
'--------------------------------------------------------------------------
'    Ausgabe StartScreen auf LCD
    LD BC,T_SYS
    CALL LCD_PUTS
'    Ausgabe StartScreen auf SIOA
    LD DE,T_Z80
    CALL SIOA_PUTS
    CALL LINEFEED
    LD DE,T_BANK
    CALL SIOA_PUTS
    IN A,(PIOB)
    AND %11110000
    CALL PUT_HEX
    CALL LINEFEED
    LD DE,T_EEPR
    CALL SIOA_PUTS
    LD DE,T_NO
    IN A,(PIOB)
    BIT 7,A
    JR Z,PEYESNO
    LD DE,T_YES
PEYESNO  CALL SIOA_PUTS
    CALL LINEFEED
    LD DE,T_SELMEM
    CALL SIOA_PUTS
    CALL LINEFEED
    LD DE,T_DUMPA
    CALL SIOA_PUTS
    CALL LINEFEED
    LD DE,T_DUMPB
    CALL SIOA_PUTS
    CALL LINEFEED
    LD DE,T_DUMPM
    CALL SIOA_PUTS
    CALL LINEFEED
    LD DE,T_RES
    CALL SIOA_PUTS
'--------------------------------------------------------------------------
'    Warten auf Eingabe von SIOB
NEXTCHR    CALL SIOB_GET
    LD C,A
    IN A,(PIOB)
    OR %00001000
    OUT (PIOB),A
    LD A,C
    CP !112  '*** "p", programmieren
    JR NZ,CP_D
    JP SRAMPROG
CP_D    CP !100  '*** "d", memory dump
    JR NZ,CP_A
    CALL DUMPMEM
    JP CP_ENDE
CP_A    CP !97  '*** "a"
    JR NZ,CP_B
    CALL LINEFEED
    IN A,(PIOA)
    CALL PUT_HEX
    JP CP_ENDE
CP_B    CP !98  '*** "b"
    JR NZ,CP_R
    CALL LINEFEED
    IN A,(PIOB)
    CALL PUT_HEX
    JP CP_ENDE
CP_R    CP !114  '*** "r"
    JR NZ,CP_ENDE
    JP $8000
CP_ENDE    IN A,(PIOB)
    AND %11110111
    OUT (PIOB),A
    JP NEXTCHR
'--------------------------------------------------------------------------
'     SRAM programmieren über SIOB
SRAMPROG  IN A,(PIOB)
    OR %00000100  'purple LED ein
    OUT (PIOB),A
GET_PROG  CALL SIOB_GET
              LD H,A
    CALL SIOB_GET
              LD L,A
    CALL SIOB_GET
              LD D,A
        LD A,$FF
              AND H
              AND L
              AND D
              CP $FF
    JR NZ,PROG 
    IN A,(PIOB)
    AND %11111011  'purple LED aus
    OUT (PIOB),A
              JP $8000
PROG          LD (HL),D  'Byte programmieren
              JR GET_PROG
'--------------------------------------------------------------------------
'     gibt EEPROM-Speicher auf SIOA aus
DUMPMEM  LD HL,$0000
DUMPLINE  CALL LINEFEED
    LD A,H
    CALL PUT_HEX
    LD A,L
    CALL PUT_HEX
    LD A,!58  '*** Doppelpunkt hinterherschicken
    CALL SIOA_PUTC
    CALL VERZ
    LD C,!64
DUMPNEXT  LD A,!32  '*** Leerzeichen hinterherschicken
    CALL SIOA_PUTC
    LD A,(HL)
    CALL PUT_HEX
    INC HL
    DEC C
    JP NZ,DUMPNEXT
    LD A,H
    CP $80
    JP NZ,DUMPLINE
    LD A,L
    CP $00
    RET Z
    JR DUMPLINE  
'--------------------------------------------------------------------------
'    PIO
'--------------------------------------------------------------------------
PIO_INIT    LD A,$CF  'PORTA Mode 2, bidirectional
    OUT (CTR_PIOA),A
    LD A,$00  'alles auf output
    OUT (CTR_PIOA),A
    LD A,$CF  'PORTB Mode 3, bit control
    OUT (CTR_PIOB),A
    LD A,$F0  'Bit 7-4 Inputs for Memory-Bank EEPROM/BCD-Switch
    OUT (CTR_PIOB),A
    IN A,(PIOA)  'Dummy-Lesung
    IN A,(PIOB)  'Dummy-Lesung
    LD A,$0F
    OUT (PIOB),A  'LEDs kurz aufleuchten lassen, Speicherbank auf 0
    LD A,$00
    LD (MBANK),A
    CALL VERZ
    OUT (PIOB),A  'OUT Pins auf 0 setzen
    RET
'--------------------------------------------------------------------------
'    LCD
'--------------------------------------------------------------------------
LCD_INIT    LD B,$02
FUNCSET    CALL VERZ
    LD A,$00  'function set
    OUT (PIOA),A
    NOP
    LD A,$43  'LCD_EN=1
    OUT (PIOA),A
    NOP
    LD A,$03  'LCD_EN=0
    OUT (PIOA),A
    DJNZ FUNCSET
'
    LD A,$00  'function set
    OUT (PIOA),A
    NOP
    LD A,$42  'LCD_EN=1
    OUT (PIOA),A
    NOP
    LD A,$02  'LCD_EN=0
    OUT (PIOA),A
'
    CALL VERZ
    LD A,$28
    CALL LCD_CMD
    LD A,$08  'lcd off
    CALL LCD_CMD
    LD A,$01  'clear lcd
    CALL LCD_CMD
    CALL VERZ
    LD A,$0E  'lcd on
    CALL LCD_CMD
    LD A,$02  'cursor home
    CALL LCD_CMD
    CALL VERZ
    LD A,$06  'entry mode set
    CALL LCD_CMD
    RET
'--------------------------------------------------------------------------
LCD_PUTC  LD D,A  'data steht im Akku
    AND %00001111
    LD E,A  'lowbyte
    LD A,D
    CALL AKKUUKKA
    AND %00001111
    LD D,A  'highbyte
'
    LD A,$10  'RS=1
    OUT (PIOA),A
    NOP
    LD A,$50  'RS=1,EN=1
    OUT (PIOA),A
    NOP
    OR D
    OUT (PIOA),A
    NOP
    AND %10111111  'EN=0
    OUT (PIOA),A
    NOP
'
    LD A,$10  'RS=1
    OUT (PIOA),A
    NOP
    LD A,$50  'RS=1,EN=1
    OUT (PIOA),A
    NOP
    OR E
    OUT (PIOA),A
    NOP
    AND %10111111  'EN=0
    OUT (PIOA),A
    NOP
    RET
'--------------------------------------------------------------------------
LCD_PUTS  LD A,(BC)
    CP !0
    RET Z
    CALL LCD_PUTC
    INC BC
    JR LCD_PUTS
'--------------------------------------------------------------------------
LCD_CMD  LD D,A  'data steht im Akku
    AND %00001111
    LD E,A  'lowbyte
    LD A,D
    CALL AKKUUKKA
    AND %00001111
    LD D,A  'highbyte
'
    LD A,$00  'RS=0
    OUT (PIOA),A
    NOP
    LD A,$40  'RS=0,EN=1
    OUT (PIOA),A
    NOP
    OR D
    OUT (PIOA),A
    NOP
    AND %10111111  'EN=0
    OUT (PIOA),A
    NOP
'
    LD A,$00  'RS=1
    OUT (PIOA),A
    NOP
    LD A,$40  'RS=1,EN=1
    OUT (PIOA),A
    NOP
    OR E
    OUT (PIOA),A
    NOP
    AND %10111111  'EN=0
    OUT (PIOA),A
    NOP
    RET
'--------------------------------------------------------------------------
'    CTC
'--------------------------------------------------------------------------
CTC_INIT    LD A,$05  '*** Timer Mode, Prescaler 16, Control Word
    OUT (CTC0),A
    LD A,!13  '2MHZ / 13 /16 ~ 9600 Baud für SIOA
    OUT (CTC0),A
    LD A,$05  '*** Timer Mode, Prescaler 16, Control Word
    OUT (CTC1),A
    LD A,!13  '2MHZ / 13 /16 ~ 9600 Baud für SIOB
    OUT (CTC1),A
    LD A,$05  '*** Timer Mode, Prescaler 16, Control Word
    OUT (CTC2),A
    LD A,!125  '2MHZ / 125 /16 ~ 1000 Hz
    OUT (CTC2),A
    RET
'--------------------------------------------------------------------------
'    SIO A
'--------------------------------------------------------------------------
SIOA_INIT    LD A,%00011000    '*** CMD 3 CHANNEL-RESET
              OUT (CTR_SIOA),A
              NOP
          NOP
              NOP
              NOP
              LD A,$04    '*** write to register $04
              OUT (CTR_SIOA),A
              LD A,%00000100    '*** x1 Clock Mode, 1 Stop Bit
              OUT (CTR_SIOA),A
              LD A,$03    '*** write to register $03
              OUT (CTR_SIOA),A
          LD A,%11000001    '*** 8 BIT, EMPFÄNGER EIN
          OUT (CTR_SIOA),A
          LD A,$05    '*** write to register $05
              OUT (CTR_SIOA),A
              LD A,%01101000    '*** 8 BIT, SENDER EIN
              OUT (CTR_SIOA),A
              LD A,$01
              OUT (CTR_SIOA),A
              LD A,$00
              OUT (CTR_SIOA),A
              RET
'--------------------------------------------------------------------------
' get char from uart
SIOA_GET     IN A,(CTR_SIOA)
              AND %00000001
              JR Z,SIOA_GET          
              IN A,(SIOA)
              RET
'--------------------------------------------------------------------------
' put char to uart
SIOA_PUTC  PUSH AF
SIOA_WAIT  IN A,(CTR_SIOA)
    BIT 2,A
    JR Z,SIOA_WAIT
    POP AF
    OUT (SIOA),A
    RET
'--------------------------------------------------------------------------
' put string to uart
SIOA_PUTS  LD A,(DE)
    CP !0
    RET Z
    CALL SIOA_PUTC
    INC DE
    JR SIOA_PUTS
'--------------------------------------------------------------------------
'    SIO B
'--------------------------------------------------------------------------
SIOB_INIT    LD A,%00011000    '*** CMD 3 CHANNEL-RESET
              OUT (CTR_SIOB),A
              NOP
          NOP
              NOP
              NOP
              LD A,$04    '*** write to register $04
              OUT (CTR_SIOB),A
              LD A,%00000100    '*** x1 Clock Mode, 1 Stop Bit
              OUT (CTR_SIOB),A
              LD A,$03    '*** write to register $03
              OUT (CTR_SIOB),A
         LD A,%11000001    '*** 8 BIT, EMPFÄNGER EIN
          OUT (CTR_SIOB),A
     LD A,$05    '*** write to register $05
              OUT (CTR_SIOB),A
              LD A,%01101000    '*** 8 BIT, SENDER EIN
              OUT (CTR_SIOB),A
              LD A,$01
              OUT (CTR_SIOB),A
              LD A,$00
              OUT (CTR_SIOB),A
              RET
'--------------------------------------------------------------------------
' get char from uart
SIOB_GET     IN A,(CTR_SIOB)
              AND %00000001
              JR Z,SIOB_GET          
              IN A,(SIOB)
              RET
'--------------------------------------------------------------------------
' put char to uart
SIOB_PUTC  PUSH AF
SIOB_WAIT  IN A,(CTR_SIOB)
    BIT 2,A
    JR Z,SIOB_WAIT
    POP AF
    OUT (SIOB),A
    RET
'--------------------------------------------------------------------------
' put string to uart
SIOB_PUTS  LD A,(DE)
    CP !0
    RET Z
    CALL SIOB_PUTC
    INC DE
    JR SIOB_PUTS
'--------------------------------------------------------------------------
LINEFEED    PUSH AF
    LD A,$0A  '*** CHR$(10) = LF
    CALL SIOA_PUTC
    LD A,$0D  '*** CHR$(13) = CR
    CALL SIOA_PUTC
    POP AF
    RET
'--------------------------------------------------------------------------
'SIO_ERR     LD A,$01
'            OUT (CTR_SIOB),A 
'            IN A,(CTR_SIOB)   '*** LESE RR1 
'            AND $70           '*** NUR D6, D5, D4
'            RET Z
'            LD A,%00001110    '*** BEI FEHLER DIFFUSE LED EIN UND HALT 
'            OUT (PC1),A
'            HALT
'            LD A,$30          '*** FEHLER-RESET
'            OUT (CTR_SIOB),A
'            RET
'--------------------------------------------------------------------------
PUT_HEX      PUSH AF   '*** 8-BIT-ZAHL ALS HEX-ZAHL DARSTELLEN
              CALL AKKUUKKA
              AND %00001111
              CALL BYTE_HEX
              POP AF
              AND %00001111
              CALL BYTE_HEX
              RET
BYTE_HEX    CP !10
              JR C,ZEIGEN
              ADD A,!7
ZEIGEN      ADD A,!48
    CALL SIOA_PUTC
              RET
AKKUUKKA    RRCA
              RRCA
              RRCA
              RRCA
              RET     
'--------------------------------------------------------------------------
VERZ          LD D,$80
              LD E,$00
VERZ1       DEC E
              JR NZ,VERZ1
              DEC D
              JR NZ,VERZ1
              RET 
'--------------------------------------------------------------------------
T_SYS    "** Z80-Systemstart **"
T_Z80    "Z80-System"    '*** im Assembler wird hinter den Text eine 0 = Stringende angefügt
T_BANK    "Memory Bank: "
T_EEPR    "EEPROM programming enabled: "
T_SELMEM  "0-7 - select memory bank"
T_DUMPA  "a - dump PIOA port" 
T_DUMPB    "b - dump PIOB port" 
T_DUMPM  "d - dump program memory" 
T_RES    "r - reset" 
T_YES    "yes"
T_NO    "no"
TEMP    NOP
              END

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
1 lesenswert
nicht lesenswert
avus schrieb:
> Anbei ein Monitor, wie er bei mir läuft.

Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

: Bearbeitet durch Moderator
von Georg G. (df2au)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Dann auch von mir ein Beispiel. Es ist ein System mit Flash, 64k RAM, 
SIO und einem IDE Interface (32MB Flash Modul für € 2.- von Pollin). 
CP/M läuft darauf.
Der Aufbau ist etwas abenteuerlich, weil alles so historisch gewachsen 
ist. Ursprünglich war es eine Platine mit 32k Eprom, 32k RAM und einem 
1200Bd Modem (für die Experten: TNC2C). Als hier die Diskussion los 
ging, habe ich die Platine mal an einem Wochenende modifiziert, just for 
fun. Es ist erstaunlich, wie fix diese Hardware aus der Steinzeit ist.

Falls es jemand möchte: Den Schaltplan gibt es auch als Eagle-4 File, 
alle Quelltexte für die CP/M Anpassung gibt es auch. Email genügt.

Die Cross Software (C-Compiler, Assembler, Linker, Locater, Librarian) 
gibt es für Windows. Für CP/M findet man alles reichlich im Netz.

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@avus: Die SIO ist schon kompliziert, sie ist komplexer als die CPU, 
allerdings wird es erst kompliziert wenn man mehr als simple asynchrone 
Übertragung von ihr will.. :-)

Ok,

Ich hebele mal ein Bisschen Text aus der Doku zur oben angegebenen MMU 
ab, schade das das indessen so weit hoch gerutscht ist.
U2 gehört im engeren Sinne gar nicht dazu sondern ist der 
IO-Adreßdecoder den man in irgend einer Form sowieso braucht, der hing 
aber halt "mit dran".
U9 (74LS540) wird nur benötigt wenn man den 7489 zurücklesen möchte, 
funktionsrelevant ist er nicht. Allerdings können über die freien 4 Bits 
noch irgendwelche Baudratenschalter etc. eingelesen werden.

Zitat:

Zur teuerung der Arbeit der Speicher auf der Karte sowie evtl. externer 
Speichereinheiten, wie RAM-Disk, EPROM-Disks u.ä. ist es notwendig, den 
Speicherraum durch entsprechende Steuervorgänge zu verwalten. Die CPU 
U880 ist in der Lage, ,aximal 64KByte Speiher direkt anzusteuern.Allein 
auf der Karte GRE stehen aber 64Kbyte RAM und je nach verwendetem EPROM 
Typ 8,16,32, oder 64KByte EPROM zur Verfügung. Nach Power On Reset bzw. 
externem Reset wird über L Pegel an U4/1 der Grundzustand auf der Karte 
erreicht. Dies bedeutet das die Ausgänge des negierenden IC U5 alle auf 
H Pegel liegen und somit durch en TTL Prom (dieser Decoder ist nicht auf 
dem Bild) die Speicherarbeit so gesteuert wird, das im Gesamtadressraum 
gilt:
"EPROM lesen, RAM schreiben". Dies bietet die Möglichkeit z.B. den 
Inhalt der EPROMs in RAM Zellen der gleichen Adresse um zu laden.
Nach jedem Programmanlauf muß nun der adressierbare Speicherraum von 64K 
in 16 Segmenten zu je 4K-Byte in der Arbeitsweise definiert werden.
Für jedes Segment ist festzulegen ob hier GRE-RAM, GRE-ROM oder kein 
GRE-interner Speicher aktiv sein soll. Weiterhin werden im gleicher 
Programmiervorgang die Signale MEMDI1 und MEMDI2 (Speichersperrsignale 
für Karten-Externen Memory) für jedes Segment festgelegt. Das 
Einschreiben der 16 Segmentinformationen erfolgt über einen IO-Befehl 
auf eine 16 Bit Adresse. Die Steuerinformation ist nun folgendermaßen zu 
bilden:

A15   A14   A13   A12   A11   A10   A9    A8
-----------------------------------------------------------------
 0     0     0     0  |                    1      GRE RAM aktiv
 .     .     .     .  |                    0      GRE RAM passiv
 .     .     .     .  |------------------------------------------
 .     .     .     .  |              1            GRE ROM aktiv
 1     1     1     1  |              0            GRE ROM passiv
--------------------- |------------------------------------------
   0 ... Fh           |        1                  MEMDI1  aktiv
 Segment Nr. zugleich |        0                  MEMDI1  passiv       
 Speicherbereichs-    |------------------------------------------
 anfangsadresse       |  1                        MEMDI2  aktiv
                      |  0                        MEMDI2  passiv
-----------------------------------------------------------------


Zur Ausgabe der Steuerinformation kann mit 2 Befehlstypen gearbeitet
werden.

Steuerinformation -> Akku
  OUT (8CH) -> Akku

oder

Steuerinformation -> Register B
      8CH         -> Register C

  OUT (C),r

Weiterhin ist es möglich, durch folgende E/A Befehle die Arbeit der MMU
zu beeinflussen:

E/A Befehl an 8CH: Einschreiben in Segmentregister
              8DH: Freigabe der SEG-Register Informationen
              8EH: Sperren der SEG-Register Informationen
              8FH: Rücklesen der SEG- Register Informationen
                   sowie der 4 frei benutzbaren Leitungen U9, 6,7,8,9.

IO-Decoder:

80..83H CTC
84..87H PIO
88..8BH SIO
8C..8FH MMU

...so, keinen Bock mehr zum abhebeln..

Wenn Dich der Inhalt des TTL ROMs als Decoder auch noch interessiert 
dann gib Bescheid.

Gruß,

Holm

von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
Holm Tiffe schrieb:
> Die SIO ist schon kompliziert

Wenn du die SIO als komplex einstufst, wie ist es dann mit dem SCC 
Z8530? DA kann man sich die Ohren brechen.

von Joe G. (feinmechaniker) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Georg G. schrieb:
> Der Aufbau ist etwas abenteuerlich, weil alles so historisch gewachsen
> ist. Ursprünglich war es eine Platine mit 32k Eprom, 32k RAM und einem
> 1200Bd Modem

Wirklich nette Idee den TNC einer Weiterverwendung zuzuführen.

@Harald
Aus meiner Sicht ein wirklich guter Ansatz um mit geringem Aufwand einen 
Einstieg zu finden.

von René D. (Firma: www.dossmatik.de) (dose)


Bewertung
0 lesenswert
nicht lesenswert
Der grafische Taschenrechner TI85 hat einen Z80 Kern. Den hatten wir als 
Studenten mal gehackt. Da hast du gleich eine Tastatur und ein Display.

Grobeinstieg:
http://www.ticalc.org/basics/calculators/ti-85.html

von Holm T. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Georg: Die Einstufung stammte nicht von mir, und das sie mehr 
Transistoren enthält als die CPU ist bekannt.

@Svenska: Bin das nur ich der auf Deinem Bilder gar Nix erkennen kann?
Bei der Besorgung dieser TTL RAMs ist es manchmal hilfreich über den 
Tellerrand zu gucken und z.B. einen K155RU2 aus russischer Produktion zu 
verwenden. Das Ding gibts für 23 Cent, Harald weiß wo.
Ich habe aber falls Jemand Bedarf für Sowas haben sollte auch noch 
einige TESLA MH7489 da..
Gruß,

Holm

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Georg G. schrieb:
> wie ist es dann mit dem SCC Z8530? DA kann man sich die Ohren brechen.

Damals sah man das auch grad andersrum. Nicht Simplizität war angesagt, 
sondern Komplexität. Der Z8036/8536 Parallelport/Timer war die 
sprichwörtliche Eierlegende Wollmilchsau.

Und wo Intel mit den Slave-µC 8042 (als PC-Tastaturcontroller berühmt 
geworden) grad mal ein simples bidirektionales Register für 
Kommunikation zwischen Host und µC hinrotzte erfand Zilog beim Z809x 
sorgfältig kontrollierte Dual-Port-Register, DMA-Zugriff und 
Software-Bootloading.

Ich kenne auch niemanden, der das damals kritisierte. Im Gegenteil. Nach 
deutlich zu simpel geratenen Bausteinen wie dem 8255 war man froh über 
die gewonnenen Möglichkeiten.

: Bearbeitet durch User
von Konrad S. (maybee)


Bewertung
0 lesenswert
nicht lesenswert
S. R. schrieb:
> und ein 74LS612 vereinfacht das Design deutlich

Einen habe ich noch 'rumliegen. Den könnte ich dir anbieten.

von Harald N. (haraldn)


Bewertung
0 lesenswert
nicht lesenswert
Hallo!
War gerade kurz zuhause. Bauteilecheck.... Hab leider keinen 74Hc4060 
da. Nachdem ich für dieses Projekt nichts bestellen will, kennt jemand 
alternativen?

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Wir wissen ja nicht, was Du an Bauteilen vorrätig hast ...

Ich würd' ja einfach einen fertigen Quarzoszillator verwenden, so etwas 
sollte sich irgendwo ausschlachten lassen.

von Erich (Gast)


Bewertung
0 lesenswert
nicht lesenswert
D a s   s c h m e r z t   h i e r   a l l e s   s e h r .

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Hab leider keinen 74Hc4060
> da. Nachdem ich für dieses Projekt nichts bestellen will, kennt jemand
> alternativen?

Wenn du dir zutraust, den Oszillator selber zu bauen, sind der 4020 und 
der 4040 auch lange Ripple Zähler.
Wenn du in der Exotenkiste einen 74AS867 findest, das ist ein 8-Bit 
Synchronzähler. Oder CD4520...

: Bearbeitet durch User
von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
Harald Nagy schrieb:
> Hab leider keinen 74Hc4060

Ich schick dir einen per Brief

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Holm Tiffe schrieb:
> @Svenska: Bin das nur ich der auf Deinem Bilder gar Nix erkennen kann?

Ich finde die eigentlich ganz gut lesbar, wenn ich sie mir in 
Normalgröße anschaue. Also im neuen Tab öffne, per Mittelklick.

> Bei der Besorgung dieser TTL RAMs ist es manchmal hilfreich über den
> Tellerrand zu gucken und z.B. einen K155RU2 aus russischer Produktion zu
> verwenden. Das Ding gibts für 23 Cent, Harald weiß wo.

Das war mir bei der Planung nicht bewusst. Ich war bei Segor im Laden 
und die hatten die nicht mehr da, weder 'LS89, 'LS189 noch 'LS289. 
Daraufhin hatte ich die Idee dann verworfen und mir später einen 74LS612 
für 3,50$ plus Versand bei eBay geschossen (und gleich noch 16C550 und 
TMS9929 dazu).

Konrad S. schrieb:
> S. R. schrieb:
>> und ein 74LS612 vereinfacht das Design deutlich
> Einen habe ich noch 'rumliegen. Den könnte ich dir anbieten.

Ach verdammt, zu spät. ;-)
Ich komme darauf zurück, wenn meiner nicht funktioniert.

Gruß,
Svenska

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.