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


von Harald N. (haraldn)


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)


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)


Lesenswert?

Danke aber sorry, diese Art Kommentare meinte ich...

von Georg G. (df2au)


Lesenswert?

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

von Harald N. (haraldn)


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)


Lesenswert?


von Harald N. (haraldn)


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 Harry (crazy_h)


Lesenswert?

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

von Harald N. (haraldn)


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


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)


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 Harry (crazy_h)


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)


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 Harry (crazy_h)


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)


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)


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)


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)


Lesenswert?

Harald Nagy schrieb:
> Dafür bin ich wohl noch zu 'dumm'

Was hast du an dem Hilfsangebot nicht verstanden?

von Frank K. (fchk)


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)


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)


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)


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)


Lesenswert?

Super danke! Dann werd ich mich dann mal hinsetzen und weiterplanen...

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


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)


Lesenswert?

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

Gruß,

Holm

von Harald N. (haraldn)


Lesenswert?

Nee der ist der nächste. ..

von Holm T. (Gast)


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)


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)


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)


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)


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)


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)


Lesenswert?


von Harald N. (haraldn)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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.
1
Bank->   0   1   2   3         
2
0xFFFF +---+---+---+---+
3
       |   |   |   |[R]|  Hier ist zB. für Page 3 (0xC000-0xFFF)
4
0xC000 +---+---+---+---+  Slot 3 geschaltet. Es ist immer in jeder 
5
       |   |   |   |[R]|  Page (Reihe) genau 1 Slot (Spalte) aktiv.
6
0x8000 +---+---+---+---+
7
       |[B]|   |   |   |  B = BIOS & BASIC
8
0x4000 +---+---+---+---+  R = RAM
9
       |[B]|   |   |   | [x] = Slot/page aktiv
10
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:
1
Bank->   0   1   2   3         
2
0xFFFF +---+---+---+---+
3
       |   |   |   |[R] |  Hier is in Slot 1 ein 48k ROM (M)
4
0xC000 +---+---+---+---+   eingesteckt. Die geschaltete Pages sind
5
       |   |[M]|   | R |   mit [.] gekennzeichnet. Merke wie in
6
0x8000 +---+---+---+---+   diesem Fall das BIOS, der BASIC ROM und
7
       | B |[M]|   |   |   die untere 16k vom RAM nicht 'sichtbar'
8
0x4000 +---+---+---+---+   sind.
9
       | B |[M]|   |   |
10
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)


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)


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)


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)


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 (prx) A. K. (prx)


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)


Lesenswert?

Ich weiss. Habe den Thread damals mitgelesen...
Aber versuchen will ich es trotzdem.

von Holm T. (Gast)


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)


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)


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)


Lesenswert?

Schon klar...

von Frank K. (fchk)


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)


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)


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:

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)


Lesenswert?

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

von Harald N. (haraldn)


Lesenswert?

Danke. Dann wird tatsächlich das Oszi schuld sein. Schwingen tuts ja.

von Erich (Gast)


Angehängte Dateien:

Lesenswert?

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

Gruss

von Rufus Τ. F. (rufus) Benutzerseite


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)


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)


Lesenswert?

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

Jens

von Harald N. (haraldn)


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)


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)


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)


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)


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)


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)


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)


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)


Lesenswert?

Ahh stimmt. Trotzdem. Das mag ich nicht.

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


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)


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)


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)


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:

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)


Lesenswert?

Jup. Und wird zu schaffen sein. Muss ja nix neues sein. Will ja kein 
patent anmelden...

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Harald N. (haraldn)


Lesenswert?

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

von Christian J. (Gast)



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)



Lesenswert?

Hier mal Fottos....

Bzgl Bank Switching mit 512 kRAM:

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

von Harald N. (haraldn)


Lesenswert?

Cooles System.
Die Appnote hab ich schon in meiner Projektmappe...

von Christian J. (Gast)


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)


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)


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)


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 (prx) A. K. (prx)


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 (prx) A. K. (prx)


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:

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)


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


Lesenswert?

Christian J. schrieb:
> Hier mal Fottos....

O nein. "Fädelkämme".

von Martin S. (led_martin)


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)


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)


Lesenswert?

Naja ausser dem Speicher steht mein Design. ..

von Christian J. (Gast)


Lesenswert?

Harald Nagy schrieb:

> Naja ausser dem Speicher steht mein Design. ..

Wo? Zeigen!

von Harald N. (haraldn)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


Lesenswert?

4060 will er ja nicht, hatte ich schon vorgeschlagen.

von Georg G. (df2au)


Lesenswert?

karadur schrieb:
> hatte ich schon vorgeschlagen.

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

von Benjamin K. (benjamin92)


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)


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)


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)


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)


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)


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:

Lesenswert?

Ich hols schonmal....

von S. R. (svenska)


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)


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)


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)


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:

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)


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)


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)


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)


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


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:

Lesenswert?

Die MMU der GRE Platine...
Morgen mehr dazu.

Gruß,

Holm

von S. R. (svenska)


Angehängte Dateien:

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)


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.


1
'    BOOTLOADER
2
'--------------------------------------------------------------------------
3
'           ANSCHLUSSBELEGUNGEN FÜR Z80-TERMINAL
4
'--------------------------------------------------------------------------
5
'    XTAL  2MHz
6
'             SIO  PORT $00,$01,$02,$03
7
'             PIO  PORT $04,$05,$06,$07
8
'    PIOA  bidirektional
9
'    PIOB  bit control
10
'    PIOB7  I/O, BCD-Schalter 8
11
'    PIOB6  I/O, BCD-Schalter 4, EEPROM A17
12
'    PIOB5  I/O, BCD-Schalter 2, EEPROM A16
13
'    PIOB4  I/O, BCD-Schalter 1, EEPROM A15
14
'    PIOB3  O, LED weiss
15
'    PIOB2  O, LED purple
16
'    PIOB1  O, LED gelb
17
'    PIOB0  O, LED grün
18
'             CTC  PORT $08,$09,$0A,$0B
19
'    CTC0  verbunden mit SIOA-CLK
20
'    CTC1  verbunden mit SIOB-CLK
21
'    CTC2  NC
22
'    CTC3  NC
23
'    LCDEN  PIOA, Bit6
24
'    LCDWR  PIOA, Bit5
25
'    LCDRS  PIOA, Bit4
26
'    LCDD7  PIOA, Bit3
27
'    LCDD6  PIOA, Bit2
28
'    LCDD5  PIOA, Bit1
29
'    LCDD4  PIOA, Bit0
30
'--------------------------------------------------------------------------
31
'           KONSTANTENDEFINITIONEN
32
'--------------------------------------------------------------------------
33
'             ***************
34
'             * I/O-BEREICH *
35
'             ***************
36
D             SIOA=$00
37
D             SIOB=$01
38
D             CTR_SIOA=$02
39
D             CTR_SIOB=$03
40
D    PIOA=$04
41
D    PIOB=$05
42
D    CTR_PIOA=$06
43
D    CTR_PIOB=$07
44
D             CTC0=$08
45
D             CTC1=$09
46
D             CTC2=$0A
47
D             CTC3=$0B
48
'D    BAUD=!52  '8MHZ / 13 /16 ~ 38400 Baud für SIO
49
'             ************
50
'             * SPEICHER *
51
'             ************
52
D             MBANK=$FFFF  'Memorybank für EEPROM, enthält Adresse A15, A16, A17 in Bit 0-2, BCD-Schalter 8 in Bit 3
53
'--------------------------------------------------------------------------
54
'           PROGRAMMBEGINN
55
'--------------------------------------------------------------------------
56
$0000         JP $0100
57
$0038    JP $F800  '*** INT-Routine bei $F800
58
$0066    JP $FA00  '*** NMI-Routine bei $FA00
59
$0100    LD SP,$FFFE
60
    CALL PIO_INIT  
61
    CALL LCD_INIT
62
    CALL CTC_INIT  '38400 Baud
63
    CALL SIOA_INIT  
64
    CALL SIOB_INIT  
65
'--------------------------------------------------------------------------
66
'    Ausgabe StartScreen auf LCD
67
    LD BC,T_SYS
68
    CALL LCD_PUTS
69
'    Ausgabe StartScreen auf SIOA
70
    LD DE,T_Z80
71
    CALL SIOA_PUTS
72
    CALL LINEFEED
73
    LD DE,T_BANK
74
    CALL SIOA_PUTS
75
    IN A,(PIOB)
76
    AND %11110000
77
    CALL PUT_HEX
78
    CALL LINEFEED
79
    LD DE,T_EEPR
80
    CALL SIOA_PUTS
81
    LD DE,T_NO
82
    IN A,(PIOB)
83
    BIT 7,A
84
    JR Z,PEYESNO
85
    LD DE,T_YES
86
PEYESNO  CALL SIOA_PUTS
87
    CALL LINEFEED
88
    LD DE,T_SELMEM
89
    CALL SIOA_PUTS
90
    CALL LINEFEED
91
    LD DE,T_DUMPA
92
    CALL SIOA_PUTS
93
    CALL LINEFEED
94
    LD DE,T_DUMPB
95
    CALL SIOA_PUTS
96
    CALL LINEFEED
97
    LD DE,T_DUMPM
98
    CALL SIOA_PUTS
99
    CALL LINEFEED
100
    LD DE,T_RES
101
    CALL SIOA_PUTS
102
'--------------------------------------------------------------------------
103
'    Warten auf Eingabe von SIOB
104
NEXTCHR    CALL SIOB_GET
105
    LD C,A
106
    IN A,(PIOB)
107
    OR %00001000
108
    OUT (PIOB),A
109
    LD A,C
110
    CP !112  '*** "p", programmieren
111
    JR NZ,CP_D
112
    JP SRAMPROG
113
CP_D    CP !100  '*** "d", memory dump
114
    JR NZ,CP_A
115
    CALL DUMPMEM
116
    JP CP_ENDE
117
CP_A    CP !97  '*** "a"
118
    JR NZ,CP_B
119
    CALL LINEFEED
120
    IN A,(PIOA)
121
    CALL PUT_HEX
122
    JP CP_ENDE
123
CP_B    CP !98  '*** "b"
124
    JR NZ,CP_R
125
    CALL LINEFEED
126
    IN A,(PIOB)
127
    CALL PUT_HEX
128
    JP CP_ENDE
129
CP_R    CP !114  '*** "r"
130
    JR NZ,CP_ENDE
131
    JP $8000
132
CP_ENDE    IN A,(PIOB)
133
    AND %11110111
134
    OUT (PIOB),A
135
    JP NEXTCHR
136
'--------------------------------------------------------------------------
137
'     SRAM programmieren über SIOB
138
SRAMPROG  IN A,(PIOB)
139
    OR %00000100  'purple LED ein
140
    OUT (PIOB),A
141
GET_PROG  CALL SIOB_GET
142
              LD H,A
143
    CALL SIOB_GET
144
              LD L,A
145
    CALL SIOB_GET
146
              LD D,A
147
        LD A,$FF
148
              AND H
149
              AND L
150
              AND D
151
              CP $FF
152
    JR NZ,PROG 
153
    IN A,(PIOB)
154
    AND %11111011  'purple LED aus
155
    OUT (PIOB),A
156
              JP $8000
157
PROG          LD (HL),D  'Byte programmieren
158
              JR GET_PROG
159
'--------------------------------------------------------------------------
160
'     gibt EEPROM-Speicher auf SIOA aus
161
DUMPMEM  LD HL,$0000
162
DUMPLINE  CALL LINEFEED
163
    LD A,H
164
    CALL PUT_HEX
165
    LD A,L
166
    CALL PUT_HEX
167
    LD A,!58  '*** Doppelpunkt hinterherschicken
168
    CALL SIOA_PUTC
169
    CALL VERZ
170
    LD C,!64
171
DUMPNEXT  LD A,!32  '*** Leerzeichen hinterherschicken
172
    CALL SIOA_PUTC
173
    LD A,(HL)
174
    CALL PUT_HEX
175
    INC HL
176
    DEC C
177
    JP NZ,DUMPNEXT
178
    LD A,H
179
    CP $80
180
    JP NZ,DUMPLINE
181
    LD A,L
182
    CP $00
183
    RET Z
184
    JR DUMPLINE  
185
'--------------------------------------------------------------------------
186
'    PIO
187
'--------------------------------------------------------------------------
188
PIO_INIT    LD A,$CF  'PORTA Mode 2, bidirectional
189
    OUT (CTR_PIOA),A
190
    LD A,$00  'alles auf output
191
    OUT (CTR_PIOA),A
192
    LD A,$CF  'PORTB Mode 3, bit control
193
    OUT (CTR_PIOB),A
194
    LD A,$F0  'Bit 7-4 Inputs for Memory-Bank EEPROM/BCD-Switch
195
    OUT (CTR_PIOB),A
196
    IN A,(PIOA)  'Dummy-Lesung
197
    IN A,(PIOB)  'Dummy-Lesung
198
    LD A,$0F
199
    OUT (PIOB),A  'LEDs kurz aufleuchten lassen, Speicherbank auf 0
200
    LD A,$00
201
    LD (MBANK),A
202
    CALL VERZ
203
    OUT (PIOB),A  'OUT Pins auf 0 setzen
204
    RET
205
'--------------------------------------------------------------------------
206
'    LCD
207
'--------------------------------------------------------------------------
208
LCD_INIT    LD B,$02
209
FUNCSET    CALL VERZ
210
    LD A,$00  'function set
211
    OUT (PIOA),A
212
    NOP
213
    LD A,$43  'LCD_EN=1
214
    OUT (PIOA),A
215
    NOP
216
    LD A,$03  'LCD_EN=0
217
    OUT (PIOA),A
218
    DJNZ FUNCSET
219
'
220
    LD A,$00  'function set
221
    OUT (PIOA),A
222
    NOP
223
    LD A,$42  'LCD_EN=1
224
    OUT (PIOA),A
225
    NOP
226
    LD A,$02  'LCD_EN=0
227
    OUT (PIOA),A
228
'
229
    CALL VERZ
230
    LD A,$28
231
    CALL LCD_CMD
232
    LD A,$08  'lcd off
233
    CALL LCD_CMD
234
    LD A,$01  'clear lcd
235
    CALL LCD_CMD
236
    CALL VERZ
237
    LD A,$0E  'lcd on
238
    CALL LCD_CMD
239
    LD A,$02  'cursor home
240
    CALL LCD_CMD
241
    CALL VERZ
242
    LD A,$06  'entry mode set
243
    CALL LCD_CMD
244
    RET
245
'--------------------------------------------------------------------------
246
LCD_PUTC  LD D,A  'data steht im Akku
247
    AND %00001111
248
    LD E,A  'lowbyte
249
    LD A,D
250
    CALL AKKUUKKA
251
    AND %00001111
252
    LD D,A  'highbyte
253
'
254
    LD A,$10  'RS=1
255
    OUT (PIOA),A
256
    NOP
257
    LD A,$50  'RS=1,EN=1
258
    OUT (PIOA),A
259
    NOP
260
    OR D
261
    OUT (PIOA),A
262
    NOP
263
    AND %10111111  'EN=0
264
    OUT (PIOA),A
265
    NOP
266
'
267
    LD A,$10  'RS=1
268
    OUT (PIOA),A
269
    NOP
270
    LD A,$50  'RS=1,EN=1
271
    OUT (PIOA),A
272
    NOP
273
    OR E
274
    OUT (PIOA),A
275
    NOP
276
    AND %10111111  'EN=0
277
    OUT (PIOA),A
278
    NOP
279
    RET
280
'--------------------------------------------------------------------------
281
LCD_PUTS  LD A,(BC)
282
    CP !0
283
    RET Z
284
    CALL LCD_PUTC
285
    INC BC
286
    JR LCD_PUTS
287
'--------------------------------------------------------------------------
288
LCD_CMD  LD D,A  'data steht im Akku
289
    AND %00001111
290
    LD E,A  'lowbyte
291
    LD A,D
292
    CALL AKKUUKKA
293
    AND %00001111
294
    LD D,A  'highbyte
295
'
296
    LD A,$00  'RS=0
297
    OUT (PIOA),A
298
    NOP
299
    LD A,$40  'RS=0,EN=1
300
    OUT (PIOA),A
301
    NOP
302
    OR D
303
    OUT (PIOA),A
304
    NOP
305
    AND %10111111  'EN=0
306
    OUT (PIOA),A
307
    NOP
308
'
309
    LD A,$00  'RS=1
310
    OUT (PIOA),A
311
    NOP
312
    LD A,$40  'RS=1,EN=1
313
    OUT (PIOA),A
314
    NOP
315
    OR E
316
    OUT (PIOA),A
317
    NOP
318
    AND %10111111  'EN=0
319
    OUT (PIOA),A
320
    NOP
321
    RET
322
'--------------------------------------------------------------------------
323
'    CTC
324
'--------------------------------------------------------------------------
325
CTC_INIT    LD A,$05  '*** Timer Mode, Prescaler 16, Control Word
326
    OUT (CTC0),A
327
    LD A,!13  '2MHZ / 13 /16 ~ 9600 Baud für SIOA
328
    OUT (CTC0),A
329
    LD A,$05  '*** Timer Mode, Prescaler 16, Control Word
330
    OUT (CTC1),A
331
    LD A,!13  '2MHZ / 13 /16 ~ 9600 Baud für SIOB
332
    OUT (CTC1),A
333
    LD A,$05  '*** Timer Mode, Prescaler 16, Control Word
334
    OUT (CTC2),A
335
    LD A,!125  '2MHZ / 125 /16 ~ 1000 Hz
336
    OUT (CTC2),A
337
    RET
338
'--------------------------------------------------------------------------
339
'    SIO A
340
'--------------------------------------------------------------------------
341
SIOA_INIT    LD A,%00011000    '*** CMD 3 CHANNEL-RESET
342
              OUT (CTR_SIOA),A
343
              NOP
344
          NOP
345
              NOP
346
              NOP
347
              LD A,$04    '*** write to register $04
348
              OUT (CTR_SIOA),A
349
              LD A,%00000100    '*** x1 Clock Mode, 1 Stop Bit
350
              OUT (CTR_SIOA),A
351
              LD A,$03    '*** write to register $03
352
              OUT (CTR_SIOA),A
353
          LD A,%11000001    '*** 8 BIT, EMPFÄNGER EIN
354
          OUT (CTR_SIOA),A
355
          LD A,$05    '*** write to register $05
356
              OUT (CTR_SIOA),A
357
              LD A,%01101000    '*** 8 BIT, SENDER EIN
358
              OUT (CTR_SIOA),A
359
              LD A,$01
360
              OUT (CTR_SIOA),A
361
              LD A,$00
362
              OUT (CTR_SIOA),A
363
              RET
364
'--------------------------------------------------------------------------
365
' get char from uart
366
SIOA_GET     IN A,(CTR_SIOA)
367
              AND %00000001
368
              JR Z,SIOA_GET          
369
              IN A,(SIOA)
370
              RET
371
'--------------------------------------------------------------------------
372
' put char to uart
373
SIOA_PUTC  PUSH AF
374
SIOA_WAIT  IN A,(CTR_SIOA)
375
    BIT 2,A
376
    JR Z,SIOA_WAIT
377
    POP AF
378
    OUT (SIOA),A
379
    RET
380
'--------------------------------------------------------------------------
381
' put string to uart
382
SIOA_PUTS  LD A,(DE)
383
    CP !0
384
    RET Z
385
    CALL SIOA_PUTC
386
    INC DE
387
    JR SIOA_PUTS
388
'--------------------------------------------------------------------------
389
'    SIO B
390
'--------------------------------------------------------------------------
391
SIOB_INIT    LD A,%00011000    '*** CMD 3 CHANNEL-RESET
392
              OUT (CTR_SIOB),A
393
              NOP
394
          NOP
395
              NOP
396
              NOP
397
              LD A,$04    '*** write to register $04
398
              OUT (CTR_SIOB),A
399
              LD A,%00000100    '*** x1 Clock Mode, 1 Stop Bit
400
              OUT (CTR_SIOB),A
401
              LD A,$03    '*** write to register $03
402
              OUT (CTR_SIOB),A
403
         LD A,%11000001    '*** 8 BIT, EMPFÄNGER EIN
404
          OUT (CTR_SIOB),A
405
     LD A,$05    '*** write to register $05
406
              OUT (CTR_SIOB),A
407
              LD A,%01101000    '*** 8 BIT, SENDER EIN
408
              OUT (CTR_SIOB),A
409
              LD A,$01
410
              OUT (CTR_SIOB),A
411
              LD A,$00
412
              OUT (CTR_SIOB),A
413
              RET
414
'--------------------------------------------------------------------------
415
' get char from uart
416
SIOB_GET     IN A,(CTR_SIOB)
417
              AND %00000001
418
              JR Z,SIOB_GET          
419
              IN A,(SIOB)
420
              RET
421
'--------------------------------------------------------------------------
422
' put char to uart
423
SIOB_PUTC  PUSH AF
424
SIOB_WAIT  IN A,(CTR_SIOB)
425
    BIT 2,A
426
    JR Z,SIOB_WAIT
427
    POP AF
428
    OUT (SIOB),A
429
    RET
430
'--------------------------------------------------------------------------
431
' put string to uart
432
SIOB_PUTS  LD A,(DE)
433
    CP !0
434
    RET Z
435
    CALL SIOB_PUTC
436
    INC DE
437
    JR SIOB_PUTS
438
'--------------------------------------------------------------------------
439
LINEFEED    PUSH AF
440
    LD A,$0A  '*** CHR$(10) = LF
441
    CALL SIOA_PUTC
442
    LD A,$0D  '*** CHR$(13) = CR
443
    CALL SIOA_PUTC
444
    POP AF
445
    RET
446
'--------------------------------------------------------------------------
447
'SIO_ERR     LD A,$01
448
'            OUT (CTR_SIOB),A 
449
'            IN A,(CTR_SIOB)   '*** LESE RR1 
450
'            AND $70           '*** NUR D6, D5, D4
451
'            RET Z
452
'            LD A,%00001110    '*** BEI FEHLER DIFFUSE LED EIN UND HALT 
453
'            OUT (PC1),A
454
'            HALT
455
'            LD A,$30          '*** FEHLER-RESET
456
'            OUT (CTR_SIOB),A
457
'            RET
458
'--------------------------------------------------------------------------
459
PUT_HEX      PUSH AF   '*** 8-BIT-ZAHL ALS HEX-ZAHL DARSTELLEN
460
              CALL AKKUUKKA
461
              AND %00001111
462
              CALL BYTE_HEX
463
              POP AF
464
              AND %00001111
465
              CALL BYTE_HEX
466
              RET
467
BYTE_HEX    CP !10
468
              JR C,ZEIGEN
469
              ADD A,!7
470
ZEIGEN      ADD A,!48
471
    CALL SIOA_PUTC
472
              RET
473
AKKUUKKA    RRCA
474
              RRCA
475
              RRCA
476
              RRCA
477
              RET     
478
'--------------------------------------------------------------------------
479
VERZ          LD D,$80
480
              LD E,$00
481
VERZ1       DEC E
482
              JR NZ,VERZ1
483
              DEC D
484
              JR NZ,VERZ1
485
              RET 
486
'--------------------------------------------------------------------------
487
T_SYS    "** Z80-Systemstart **"
488
T_Z80    "Z80-System"    '*** im Assembler wird hinter den Text eine 0 = Stringende angefügt
489
T_BANK    "Memory Bank: "
490
T_EEPR    "EEPROM programming enabled: "
491
T_SELMEM  "0-7 - select memory bank"
492
T_DUMPA  "a - dump PIOA port" 
493
T_DUMPB    "b - dump PIOB port" 
494
T_DUMPM  "d - dump program memory" 
495
T_RES    "r - reset" 
496
T_YES    "yes"
497
T_NO    "no"
498
TEMP    NOP
499
              END

von Rufus Τ. F. (rufus) Benutzerseite


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 User
von Georg G. (df2au)


Angehängte Dateien:

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)


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:
1
A15   A14   A13   A12   A11   A10   A9    A8
2
-----------------------------------------------------------------
3
 0     0     0     0  |                    1      GRE RAM aktiv
4
 .     .     .     .  |                    0      GRE RAM passiv
5
 .     .     .     .  |------------------------------------------
6
 .     .     .     .  |              1            GRE ROM aktiv
7
 1     1     1     1  |              0            GRE ROM passiv
8
--------------------- |------------------------------------------
9
   0 ... Fh           |        1                  MEMDI1  aktiv
10
 Segment Nr. zugleich |        0                  MEMDI1  passiv       
11
 Speicherbereichs-    |------------------------------------------
12
 anfangsadresse       |  1                        MEMDI2  aktiv
13
                      |  0                        MEMDI2  passiv
14
-----------------------------------------------------------------

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)


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


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)


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)


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 (prx) A. K. (prx)


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)


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)


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


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)


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)


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)


Lesenswert?

Harald Nagy schrieb:
> Hab leider keinen 74Hc4060

Ich schick dir einen per Brief

von S. R. (svenska)


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

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