Forum: Mikrocontroller und Digitale Elektronik Retro Fieber: Z80 oder 68000 ?


von Christian J. (Gast)


Lesenswert?

Moin,

vielleicht kennen die es, die wie ich Mitte 40 sind und in den 80igern 
Lochraster Aufbauten mit 6502 oder Z80 gemacht haben. Auch ich habe noch 
solche Kabelverhaue gefunden, die Leiterplatten aus Presspapier sind 
allerdings extrem dunkelbraun geworden und ich kann nichts mehr in 
Betrieb nehmen, da ich weder Eprom Simulator habe, noch Brenner, noch 
die alten Software tools von damals unter DOS.

Das Netz ist ja voll davon aber das macht es auch unübersichtlich. Gibt 
ja teilweise Monsterprojekte mit Ram Disk usw.

Habe hier noch Original Z80er liegen, die rund 20 Jahre alt sind im 
DIP40 und auch einige 68000er, Format Milchschnitte im Keramik Gehäuse. 
Auch nicht jünger. Aber der 68000 ist wohl etwas zu komplex um das auf 
Lochraster aufzubauen. Und ein ualter verstaubter "Microprofessor" liegt 
hier auch noch, Asemberprogramme auf Papier, in Codes mit Tabelle 
umrechnen, eintippen als Hex .... kenne ich noch aber war "nervtötend". 
Wer mal einen IMSAI programmiert hat weiss was ich meine, die müssen 
damals unendlich viel Zeit gehabt haben.

Meine Vorstellung, um das Ganze etwas handlicher zu machen sind Verzicht 
auf VGA Ausgabe, keine Peripherie usw.

Woher nehmen und nicht stehlen?

1. Schaltplan für Minimalsystem mit Uart, PIO, Ram, ROM => Ok, Internet
2. Eprom Emulator?
3. Eprom Brenner und Eproms => ibäh, schon bestellt
4. PIO Bausteine, Timer, zb 8155, 8153 .... finde ich schon noch 
irgendwo.
5. C Cross Compiler für Linux oder Windows? Ausgabe: Hex File für 
Brenner
6. Assembler? Och nö..... das dauert ja ewig da was Gescheites zu 
programmieren.

Alternativ würde mir folgende Lösung gefallen:

Ein RS232 Terminalanschluss am Z80 System, Uart-USB Konverter, im EPROM 
ein komfortabler Monitor und ich bediene das ganze aus der Konsole von 
Linux heraus, so wie ich mich auf einm Raspi auch einlogge. Programme 
sollten hochgeladen werden können und im RAM ausgeführt werden.

Hat sich schonmal jemand an sowas gewagt? So ein bisschen Old School 
Feeling aber mit modernen Elementen?

Gruss
Christian

von Ulrich H. (lurchi)


Lesenswert?

Vor langer Zeit habe ich so was mal mit einem 6502 aufgebaut, allerdings 
mit EPROM Emulator als Hilfe.

Für den 68000 gibt es GCC als Cross-Compiler und auch Assembler. Für den 
Z80 gibt es zumindest reichlich Simulatoren - man kann also ggf. das 
Debugging erst mal auf dem PC machen und erst dann auf die richtige 
Hardware gehen - ohne EPROM Emulator ist das recht hilfreich. Unter 
Linux stehen die Chancen nicht schlecht auch eine Cross Assembler und 
ggf. sogar Compiler zu finden - notfalls auch als Compiler auf einem 
Simulierten Z80 Computer (CP/M ?) aus der Steinzeit.

Die Idee mit dem Minimalsystem als eine Art Bootloader ist gut. Das muss 
für den Anfang keine kompletter Monitor sein - ein Bootloader über UART 
reicht für den Anfang. Das spart für die Entwicklung den Umweg über das 
EPROM. Ein statisches CMOS RAM mit Stützbatterie ist ggf. eine 
Alternative zu EPROM.
Den Bootloader/Monitor könnt man ggf. sogar auf einem modernen µC laufe 
lassen, der parallel mit am BUS hängt, und Wahlweise zum Z80 läuft.

Wenn man sowieso nicht in ASM Programmiert, braucht man auch keine 
Antike CPU. In C merkt man davon nicht viel. So schlimm ist ASM auch 
nicht. Auch ist es mit einer ggf. nicht normalen Hardware ggf. nötig den 
Startcode des Compilers anzupassen, ganz ohne ASM wird es also schwer.

von H.Joachim S. (crazyhorse)


Lesenswert?

Wozu das Ganze?
Es hat damals (tm) wahnsinnig Spass gemacht, aber die Sachen haben sich 
gewaltig verändert. Ich seh da absolut keinen Sinn mehr drin, da lass 
ich nicht mal Nostalgie mehr gelten. Mit einer simplen Ein-Chip-Lösung 
schlägst du um Längen alles, was selbst ein getuntes Z80-Komplettsystem 
jemals konnte. Und das, ohne eine rel. komplizierte und inzwischen teure 
Hardware zu bauen. Die Zeit kommt nie wieder, der nutzbare Lerneffekt 
ist auch eher klein. Falls du dennoch was damit machen willst - habe ich 
alles noch da, bringe es einfach nicht übers Herz, das Zeug zu 
entsorgen. Aber ich weiss genau, dass ich es nie wieder anfassen werde.

von S. R. (svenska)


Lesenswert?

Hallo,

> vielleicht kennen die es, die wie ich Mitte 40 sind und in den 80igern
> Lochraster Aufbauten mit 6502 oder Z80 gemacht haben.

äh, nein. Also, ja. Also, gemacht ("in der Mache") ja, aber andere 
Randbedingungen. :-)

Ich bin seit langer Zeit mehr oder weniger unregelmäßig dabei (je nach 
Zeit und Lust), ein Z80-System aufzubauen. Der Winter steht vor der Tür, 
die notwendigsten Bestellungen sind eingetroffen, mal schauen. Im 
Augenblick läuft CP/M in 32 KB RAM, dazu gibt es hier irgendwo auch 
einen Threads von mir, oder zwei.

> Aber der 68000 ist wohl etwas zu komplex um das auf Lochraster
> aufzubauen.

Ein 16 Bit breiter Bus ist mehr Löterei, ansonsten dürften die sich 
nicht besonders unterscheiden. Aber dafür gibt es ja den 68008.

> Meine Vorstellung, um das Ganze etwas handlicher zu machen sind Verzicht
> auf VGA Ausgabe, keine Peripherie usw.

Nun, ich möchte daraus mal einen echten Computer bauen, d.h. es gibt ein 
einfaches Bussystem, wo man Peripherie und RAM nachstecken kann.

> 1. Schaltplan für Minimalsystem mit Uart, PIO, Ram, ROM => Ok, Internet

Ja, oder auch hier gibt es schon einige relativ minimale Schaltungen.

> 2. Eprom Emulator?
> 3. Eprom Brenner und Eproms => ibäh, schon bestellt
> 4. PIO Bausteine, Timer, zb 8155, 8153 .... finde ich schon noch
> irgendwo.

Auf all das habe ich in meinem Konzept verzichtet und durch einen 
einzigen AVR ersetzt. Der Z80 ist als Anwendungsprozessor dem AVR als 
Boardcontroller untergeordnet.

Der AVR kann den RAM selbstständig beschreiben und den Z80 resetten, 
erspart mir also das ROM, und ist außerdem (braucht ein zusätzliches 
schnelles Gatter) ein I/O-Gerät, welches UART, Floppy und (später) Timer 
bereitstellt. Wenn du mit nichts kompatibel sein musst, brauchst du auch 
die alten Bausteine nicht nachbilden.

> 5. C Cross Compiler für Linux oder Windows? Ausgabe: Hex File für
> Brenner

SDCC ist ein optimierender C-Compiler, der u.a. den Z80 kennt und einige 
fertige Routinen mitbringt.

> Ein RS232 Terminalanschluss am Z80 System, Uart-USB Konverter, im EPROM
> ein komfortabler Monitor und ich bediene das ganze aus der Konsole von
> Linux heraus, so wie ich mich auf einm Raspi auch einlogge. Programme
> sollten hochgeladen werden können und im RAM ausgeführt werden.

Noch enthält bei mir der AVR das Monitorprogramm, mit dem ich einen 
Speicherabzug (Hex-Datei) direkt in den Speicher schreiben kann. 
Außerdem kann man dort einstellen, welche Geräte in den Slots stecken 
(das Betriebssystem kann das dann auslesen und die entsprechenden 
Treiber laden).

Gruß

: Bearbeitet durch User
von Klaus W. (mfgkw)


Lesenswert?

Zu den 68000 gab es doch auch etliche interessante c't-Projekte.
Die Artikel dazu sind auf DVD noch zu haben, notfalls bestimmt auch bei 
mir in Papierform, wenn ich lange genug suche.

von Klaus W. (mfgkw)


Lesenswert?

P.S.: Ich hatte mal für eine Freundin ein paar Artikel zu dem Thema 
rausgesucht, vielleicht helfen sie ja (Heft/Seite/Titel):


% c't 84/ 7  82 EPAC-80 (Prozessor Z80)
% c't 84/ 8  93 Testprogramm für EPAC-80 (Prozessor Z80)
% c't 85/ 3  47 Mehr als nur ein 16-bit-EPAC-95 (Prozessor TMS9995)
% c't 85/ 3  52 EPAC-95 (Prozessor TMS9995)
% c't 85/ 4 110 MONALISA: Monitor für EPAC-95 (Prozessor TMS9995)
% c't 85/ 7 124 68000-Assembler-Programmierung unter RTOS
% c't 86/ 6  60 Echtzeit-Multitasking mit RTOS/PEARL Teil 1: Mehrere 
Programme "gleichzeitig" - auf dem Atari ST
% c't 86/ 6  76 EPAC-09 (Mit Prozessor 6809)
% c't 86/ 7  62 Echtzeit-Multitasking mit RTOS/PEARL Teil 2: Umgang mit 
dem Betriebssystem
% c't 86/ 8  38 Echtzeit-Multitasking mit RTOS/PEARL PEARL und Pascal - 
eine Gegenüberstellung
% c't 86/ 8  94 Echtzeit-Multitasking mit RTOS/PEARL Teil 3: 
Programmieren in PEARL unter RTOS
% c't 86/ 8  98 Cleo in neuem Gewand: Neue Disketten-Kommandos für 
RTOS/PEARL
% c't 86/ 9  53 Echtzeit-Multitasking mit RTOS/PEARL Teil 4: 
Programmieren in PEARL unter RTOS
% c't 86/10  80 Echtzeit-Multitasking mit RTOS/PEARL Teil 5: Maus, 
Grafik, Interrupt
% c't 86/11  80 Echtzeit-Multitasking mit RTOS/PEARL Teil 6: 
Assembler-Programmierung in PEARL-Umgebung
% c't 86/11  86 c't-KAT-Ce 68000-Einplatinensystem - Teil 1: Die Platine
% c't 86/12 130 Echtzeit-Multitasking mit RTOS/PEARL Teil 7: 
RTOS-Pe(a)rlen
% c't 86/12 156 c't-KAT-Ce 68000-Einplatinensystem - Teil 2: 
EPROM-Interna
% c't 87/ 1 146 Echtzeit-Multitasking mit RTOS/PEARL Teil 8: Wir machen 
Musik...
% c't 87/ 1 152 c't-KAT-Ce 68000-Einplatinensystem - Teil 3: 
REAL-Arithmetik
% c't 87/ 2  88 EPAC 68008 Teil 1
% c't 87/ 2  92 Echtzeit-Multitasking mit RTOS/PEARL Teil 9: 
PEARL-Programme in EPROMs
% c't 87/ 3 128 Echtzeit-Multitasking mit RTOS/PEARL Teil 10: 
Software-Upgrading
% c't 87/ 3 134 Das "Grafische Kernsystem" in und unter PEARL
% c't 87/ 3 140 EPAC 68008 Teil 3: RTOS
% c't 87/ 5  94 PEARL-Texter - ein kleiner Editor für RTOS-UH
% c't 87/ 5 148 EPAC 68008 Teil 3: P-Bus
% c't 87/ 6 164 EPAC 68008 Teil 4: Scheibchenweise
% c't 87/ 7  90 c't-KAT-Ce 68000-Einplatinensystem - Teil 4: 
KAT-Ce-Pascal
% c't 87/ 7  94 Monsieur Fourier und Mister 68000: Schnelle 
Fourier-Transformation (FFT) mit der c't-KAT-Ce
% c't 87/ 7 104 EPAC 68008-Programme auf Atari entwickeln
% c't 87/ 9 166 Die c't-KAT-Ce mit doppelt soviel RAM
% c't 87/ 9 168 RTOS-UH/PEARL für unseren Einplatinen-Computer
% c't 87/ 9 168 RTOS-UH/PEARL für unseren Einplatinen-Computer
% c't 88/ 6  92 Interrupt-Programmierung bei der c't-KAT-Ce
% c't 88/ 7 156 EPAC 68000 1: Schaltung
% c't 88/ 8 144 EPAC 68000 2: Software
% c't 88/10 148 Task-Kommunikationssystem unter RTOS
% c't 88/10 254 Pascal/Assembler-Entwicklungssystem für die KAT-Ce
% c't 89/ 9  38 RTOS-UH/PEARL jetzt in Version 2.2
% c't 89/ 9 200 Einplatinen-Rechner KAT-Ce in Low-Power-Ausführun
% c't 89/11 290 C für D- und EPACS

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


Lesenswert?

m68k ist nach wie vor eine von uCLinux unterstützte Architektur und wird 
gepflegt. Die kleinen Nachfolger der dicken 68000er sind z.B. der 
Dragonball M68(EZ/VZ)328, der in Palm Handhelds der ersten und zweiten 
Generation arbeitet (und auch im UcDimm und uCSimm).
Ein kleines System könnte 2MB ROM/Flash und 8MB RAM haben, damit lässt 
sich ein 2.0er Linux bequem booten und zum Laufen bringen.
http://www.uclinux.org/

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Ich habe mich damals mit dem 68000er versucht. Geplant war ein
Slot-System mit viel DRAM, hochauflösender Grafik, Diskettenlaufwerk,
paralleler und serieller Schnittstelle, Betriebssystem und was einem in
seiner jugendlichen Naivität sonst noch so alles in den Kopf schießt.

Daraus geworden ist immerhin etwas, was rechnen konnte, und womit ich
mich selber mit der schieren Rechenpower des Prozessors (verglichen mit
dem 6502 in meinem Apple) beeindrucken konnte.


Christian J. schrieb:
> 1. Schaltplan für Minimalsystem mit Uart, PIO, Ram, ROM => Ok, Internet

Da ich bei der Sache etwas lernen und auch eigene Ideen realisieren
wollte, habe ich versucht, weitgehend mit dem Buch

  "M68000 Familie Teil 1 Grundlagen und Architektur"

von Werner Hilf und Anton Nausch auszukommen. Zusätzlich habe ich aber
auch einige Tipps aus einer 68000-Artikelserie in der Zeitschrift
"Elektronik" übernommen.


> 2. Eprom Emulator?

Den hatte ich nicht, brauchte ihn aber auch nicht. Stattdessen
programmierte ich einen Boot-Loader ins EPROM, mit dem die eigentliche
Software über eine UART-Schnittstelle ins RAM geladen werden konnte.

Da ich kein UV-Löschgerät hatte, musste der Loader möglichst auf Anhieb
funktionieren, weswegen er äußerst minimalistisch gehalten war und im
Wesentlichen dazu diente, einen 2nd-Stage-Loader zu laden, der dann
seinerseits die eigentliche Software lud.

Die Loader-Firmware legte ich in den oberen Adressbereich der EPROMs. An
der Adresse 0 (Startadresse nach Reset) lag ein Jump-Befehl zur
Anfangsadresse des Loaders. Dieses Vorgehen ermöglichte es in
beschränktem Umfang, neue Versionen der Loader-Firmware zu brennen, ohne
die EPROMs dafür löschen zu müssen.


> 3. Eprom Brenner und Eproms => ibäh, schon bestellt

EPROMs hatte ich zwar, aber keinen Brenner dazu. Da ich ihn ohnehin nur
für die Programmierung des Boot-Loaders benötigte, habe ich mir etwas
ganz Primitves bestehend aus Adress- und Daten-Latch und etwas Software
für den Apple selbst gebastelt.


> 4. PIO Bausteine, Timer, zb 8155, 8153 .... finde ich schon noch
>    irgendwo.

Bei mir war die einzige Peripherie ein UART MC6850, der sowohl zum Laden
von Programmen als auch zur Interaktion mit dem Rechner verwendet wurde.
Ein Gegenstück mit dem gleichen Chip lötete ich als Steckkarte für den
Apple zusammen. Für diesen schrieb ich auch ein einfaches
Terminalprogramm.


> 5. C Cross Compiler für Linux oder Windows? Ausgabe: Hex File für
>    Brenner

Wie schon geschrieben wurde: Dafür gibt es den GCC (C-Compiler) und die
Binutils (Assembler, Linker und noch ein paar weitere Tools). Ich hatte
so etwas damals leider nicht zur Verfügung :-(


> 6. Assembler? Och nö..... das dauert ja ewig da was Gescheites zu
>    programmieren.

Der 68000 ist eigentlich dank vieler Register und 16/32-Bit-Arithmetik
ganz angenehm in Assembler zu programmieren. Meinen 68000-Rechner
programmierte ich anfangs noch direkt mit Hex-Codes bis der Leidensdruck
hoch genug war, dass ich einen einfachen Assembler schrieb.


Die Schaltung hatte ich wie du auf Hartpapierlochraster aufgebaut. Die
Rückseite der CPU-Platine war ein dichter Pelz aus Schaltdraht. 16
Daten- und streckenweise noch mehr Adressleitungen, die sich durch das
ganze System ziehen, sind eben nicht ganz ohne. Einen Verdrahtungsfehler
zu korrigieren war etwa vergleichbar mit einer Herzoperation ;-)

Bald nach Fertigstellung der CPU-Platine sind die Preise für den Atari
ST und den Amiga so weit gefallen, dass mir die Weiterentwicklung des
eigenen Rechners nicht mehr als lohnend erschien und ich meine Freizeit
vorerst lieber in Softwareprojekte auf dem Amiga investierte.


Ja, das waren noch Zeiten. Heute bekommt man die gesamte Schaltung von
damals mit vergleichbarer Rechenleistung und sogar erweiterter
Peripherie auf einem winzigen Chip (bspw. einem ATtiny) für weniger als
2% des Preises geliefert. Deswegen hätte ich heute keine Motivation
mehr, das Projekt von damals wieder aufleben zu lassen. Es gibt
inzwischen genügend spannendere Dinge im Bereich Hardware und Software,
mit denen man sich die Zeit totschlagen kann :)

von Frank K. (fchk)


Lesenswert?

Christian J. schrieb:

> Hat sich schonmal jemand an sowas gewagt? So ein bisschen Old School
> Feeling aber mit modernen Elementen?

Den Z80 gibts auch in modern. Das macht dann echt Spaß - immer noch.

http://www.zilog.com/index.php?option=com_product&task=product&businessLine=1&id=77&parent_id=77&Itemid=57

fchk

von MaWin (Gast)


Lesenswert?

Christian J. schrieb:
> Hat sich schonmal jemand an sowas gewagt?

Tausende.

Sie sind alle an der Software gescheitert.

Ein Universalcomputer ist ohne Software nutzlos und die zu schreiben, 
alleine ein Betriebssystem, ist tausendmal mehr Arbeit als ein paar 
Chips zusammenzulöten. Schon ein BIOS überfordert die meisten. Also 
bleibt nur, hardwarekompatibel zu vorhandener Software zu sein. CP/M 
inklusive PL/M und GEM ist heute im Source verfügbar.

Oder man baut etwas mit dedizierter Spezialsoftware, z.B. einen 
Schachcomputer.

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


Lesenswert?

Christian J. schrieb:
...
> 2. Eprom Emulator?

Braucht man nicht unbedingt.

> 3. Eprom Brenner und Eproms => ibäh, schon bestellt

Fehlkauf. Von alten PC-Mainboards kann man parallel ansteuerbare Flash- 
ROMs abziehen. Braucht man nur noch einen Brenner dafür.

> 5. C Cross Compiler für Linux oder Windows? Ausgabe: Hex File für
> Brenner
> 6. Assembler? Och nö..... das dauert ja ewig da was Gescheites zu
> programmieren.

Ohne Assembler geht zu Anfang nichts.

> Alternativ würde mir folgende Lösung gefallen:

Was heißt hier alternativ? Wenn du nicht das Äquivalent einer Grafik- 
karte zusammenlöten willst, ist eine serielle Terminalschnittstelle zum 
PC das Mittel der Wahl.

> Ein RS232 Terminalanschluss am Z80 System, Uart-USB Konverter, im EPROM
> ein komfortabler Monitor und ich bediene das ganze aus der Konsole von
> Linux heraus, so wie ich mich auf einm Raspi auch einlogge. Programme
> sollten hochgeladen werden können und im RAM ausgeführt werden.

Jepp. Genau so. Nur daß du dir den Monitor zumindest in Teilen selber 
schreiben mußt. Aus der alten Zeit gibt es zwar noch Quellcode für 
Monitorprogramme (u.a. von den Herren Hübler und Kramer oder vom LC80, 
Z1013 usw.). Aber die paßt sicher nicht 100%ig und man muß zumindest 
Teile anpassen.

Das Minimum was der Monitor mitbringen muß, sind Funktionen zum Laden 
und Starten von Programmen im RAM. Wenn man das ganze mit Flash baut, 
könnte man sogar ins Flash laden. Mittelfristig würde man sicher ein 
BIOS implementieren wollen und darauf CP/M aufsetzen. Spätestens dann 
hat man auch einen Compiler für z.B. Turbo Pascal oder notfalls auch C.


XL

: Bearbeitet durch User
von PittyJ (Gast)


Lesenswert?

Ich hatte auch mal so etwas überlegt.

Aber dann, was macht man damit? CP/M laufen lassen. Und dann die 
gleichen SW-Probleme wie damals? Langsam und umständlich? Wo jede 
SW-Emulation das 100mal schneller erledigt. Praktischen Nutzen gibt es 
nicht. Nochmal Wordstar? Nur für 10 Minuten ein warmes Gefühl? Denn 
Texte schreiben möchte ich damit nicht mehr.

Oder das Konzept mit dem AVR als Slave Prozessor. Der könnte doch auch 
schon den Z80 mit emulieren. Vielleicht nicht ganz in Echtzeit, aber die 
Z80 ist überflüssig.

Und für richtige Projekte ist der 64K Arbeitsspeicher zu klein. War er 
damals schon und das gilt heute immer noch.

Ich habe mich dann dafür entschieden, doch lieber was neues zu machen, 
wo man was lernt oder den Horizont erweitert.
FPGA, Muticore Arm, ungewöhnliche Architekturen wie XMOS Prozessoren ... 
das macht mehr Spass.

von user (Gast)


Lesenswert?

Ein 68K System ist recht einfach, EPROM/SRAM/Peripherie und eine 
einfache Adressauswertung(CS auf die Adressleitungen legen) und schon 
ist das System fertig.

Oder das hier mal anschauen
http://www.s100computers.com/My%20System%20Pages/68000%20Board/68K%20CPU%20Board.htm

http://wandel.ca/homepage/mc68008/

von Georg G. (df2au)


Lesenswert?

Axel Schwenke schrieb:
>> 5. C Cross Compiler für Linux oder Windows? Ausgabe: Hex File für
>> Brenner
>> 6. Assembler? Och nö..... das dauert ja ewig da was Gescheites zu
>> programmieren.
>
> Ohne Assembler geht zu Anfang nichts.

ACK. Assembler, Linker, Locater und C-Compiler gibt es als Freeware in 
guter Qualität.

> Was heißt hier alternativ? Wenn du nicht das Äquivalent einer Grafik-
> karte zusammenlöten willst, ist eine serielle Terminalschnittstelle zum
> PC das Mittel der Wahl.

Für den Anfang die imho beste Wahl.

>> im EPROM
>> ein komfortabler Monitor und ich bediene das ganze aus der Konsole von
>> Linux heraus, so wie ich mich auf einm Raspi auch einlogge. Programme
>> sollten hochgeladen werden können und im RAM ausgeführt werden.

Sooo viel muss der Monitor nicht können. Im Prinzip reicht es hin, wenn 
er HEX Files laden kann. Für Debugging sind Breakpoints und 
Einzelschritt noch sinnvoll.

> Jepp. Genau so. Nur daß du dir den Monitor zumindest in Teilen selber
> schreiben mußt.

Maximal müssen die Basisadressen des UART und - falls vorhanden - die 
Initialisierung des Baudraten CTC und einer PIO angepasst werden. Das 
sind aber schlichte Tabellen.

> Mittelfristig würde man sicher ein
> BIOS implementieren wollen und darauf CP/M aufsetzen.

Eher kurzfristig, würde ich als erstes machen. Das Problem ist nur, dass 
dann auch eine Floppy (notfalls als Emulator) da sein muss. Als Anregung 
gibt es hier im Forum einen CP/M Computer auf AVR Basis.

von Takao K. (takao_k) Benutzerseite


Lesenswert?

Wollte ich auch mal machen, allerdings zur Zeit mache ich damit nichts 
mehr.

Diverse RAM und Flash chips hier, 68000er CPUs, GAL Brenner, jede Menge 
Leiterplatten.

8031 habe ich auch hier, einfacher da nur 8bit.

Es stellt sich aber die Sinnfrage, PIC32 hat den Speicher integriert und 
ist viel schneller.

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Guten Morgen!

Danke für die vielen Antworten !!!!  Ich kann jetzt nicht auf jede 
eingehen aber sehe, dass ich nicht der einzige bin, der sowas mal 
angedacht hat. Die Hardware wäre wohl eher weniger ein Problem aber die 
Software müsste was Fertiges sein.

Wenn man sich das alles recht überlegt wäre vielleicht die Anschaffung 
eines Apple 2, den es ab 500 Euro gibt mit 2 Floppys wohl besser oder 
vielleicht eines Atari. Dann kann ich wieder "Quit Update Compile" 
tippen (diese 3 Wörter haben sich vor 25 Jahren wohl in mein Hirn 
eingebrannt") und zuschauen und Kaffee trinken während der Apple die 
Floppys anwirft und das Pascal Programm kompiliert. Das UCSD Pascal gibt 
es auf Disk Images wie ich sah, muss man nur "irgendwie" auf die uralten 
Floppy kriegen.

Das Ding auf dem Bild hahe ich noch, müsste nur mal die Elkos tauschen 
nach über 20 Jahren.

Hier steht auch das ganze Leid von jemandem, der es an der VHS als 
"Retro Kurse" anbietet.

http://www.simulationsraum.de/blog/tag/z80/

Gibt sogar ein eigenes Magazin "Retro Computer":
https://www.csw-verlag.com/RETRO-Magazin/

Worüber ich noch nachdenken muss ist "Willst Du das wirklich antun?" 
....

Gruss
Christian

Wenn ich sowas hier sehe schüttelt es mich schon..... 68000er Asm.... 
als ich noch so programmierte drehte sich mir der Schädel wenn ich 
abends von der Arbeit nach Hause kam :-(


validstr    dc.b    'Invalid, must be one of the following:',13,10,0

baudtbl2    dc.b    '75',0,'110',0,'134.5',0,'150',0,'300',0,'600',0
            dc.b    '1200',0,'2000',0,'2400',0,'4800',0
            dc.b    '1800',0,'9600',0,'19200',0,0

keepmsg     dc.b    'Data table invalid - reset.',13,10,0

            section one,code

dumptokens  move.b  (a2)+,d0
            beq.s   tokend
dcont       bsr     putchar
            bra     dumptokens
tokend      moveq   #' ',d0
            bsr     putchar
            move.b  (a2)+,d0
            bne.s   dcont
            bra     crlf

getab       bsr     skipspc
            beq     synerr
            addq.l  #1,a3
            bsr     toupper
            cmp.b   #'A',d0
            beq.s   gota
            cmp.b   #'B',d0
            bne     synerr
            lea     chanb,a5
            lea     p_mr1b,a6
            rts
gota        lea     chana,a5
            lea     p_mr1a,a6
            rts

von Thomas P. (femto)


Lesenswert?

Hallo,

Anfang der 80'er Jahre gab es den NDR Klein Computer zum selbst bauen. 
Das war ein modulares System von Rolf Dieter Klein und wurde mit dem NDR 
zusammen gemacht. Im Franzis Verlag gab es dazu Bücher und in der MC 
Artikel. Platinen und Halbleiter konnte man im Elektronikladen (Elmicro) 
bestellen. Es war damals nicht so einfach einen Mikrocontroller zu 
organisieren.

Der Computer war modular, eine CPU Platine, eine für I/O, eine für 
serielle Schnittstelle, eine für ein Grafikterminal, eine für ein 
Spannungs-Frequenzwandler usw. Der Prozessor war ein 4MHz Z80A. Später 
gab es dann auch die 8 Bit Variante vom 68000, den 68008 und irgend wann 
in der MC auch den europaweit ersten Selbstbau Computer mit 32 Bit, ein 
68020, glaub ich war das damals.

Das war ein so cooles Projekt, ich konnte damals beim gut ein Jahrzehnt 
langen Bauen meines Computers sehr viel lernen. Das Buch und 
verschiedenen Sonderhefte, selbst den 68008 und den Grafikprozessor von 
Thomson hab ich noch heute.

Lust hatte ich auch immer mal so ein System mit einem richtigen 
Bussystem wieder aufzubauen. Aber wenn man die Leistung der modernen 
Controller sieht mit ISP Schnittstelle, dann ist die Motivation doch 
nicht mehr so groß.

Die Software halte ich gar nicht so für das Problem. Fehlende 
Programmierschnittstelen früher waren viel schwerwiegender. Es gab 
damals nur UV Licht löschbare EPROMS. Später gab es von Waferscale 
(übernommen von ST) Flash Speicher mit JTAG. Wenn es die Bausteine heute 
noch gibt, würde ich bei dem Z80 System darauf zurück greifen. Die 
Bausteine hatten auch ein wenig programmierbare Logik.

Viel Erfolg bei Deinem Vorhaben.

Gruß thomas

Ergänzung:

In der c't Hacks 4/2013 war ein Projekt: Z80 CP/M Rivival

Buch:
Rolf Dieter Klein
Franzis Verlag 1983
Mikrocomputer selbstgebaut und programmiert
ISBN: 37723-7162-0
gibt's vielleicht bei Ebay

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

PittyJ schrieb:
> Oder das Konzept mit dem AVR als Slave Prozessor. Der könnte doch auch
> schon den Z80 mit emulieren. Vielleicht nicht ganz in Echtzeit, aber die
> Z80 ist überflüssig.

Da gibt es hier im Forum auch ein Projekt zu. Wenn der AVR einen Z80 
emuliert und der DRAM sauber angeschlossen ist, kommt man auf knapp über 
2 MHz, wenn ich mich recht entsinne.

> Und für richtige Projekte ist der 64K Arbeitsspeicher zu klein. War er
> damals schon und das gilt heute immer noch.

Dafür gibt es ja Banking. Dummerweise unterstützt das kaum ein 
C-Compiler vernünftig.

> FPGA, Muticore Arm, ungewöhnliche Architekturen wie XMOS Prozessoren ...
> das macht mehr Spass.

Hängt davon ab, was für dich Spaß ist. ;-)

Wenn man die 80er nicht live miterlebt hat, ist auch ein Z80 eine neue 
Welt.

von Christian J. (Gast)


Lesenswert?

Hallo,

ich lese seit Stunden Seiten wie die mit dem N80VEM oder dem NDR 
Computer durch und komme langsam zu der Erkenntnis, dass der Raspberry 
Pi die beste Wahl ist, wenn man auf Konsolen Look steht. Nur versteht 
man da nicht mal ansatweise mehr wie der innendrin funktioniert, weil 
die CPU viel zu komplex ist. An mi ist schon die virtuelle Adressraum 
vorbeigegangen, was eine MMU ist. Denn wer nur mit Controllern arbeitet 
braucht das ja nicht.

Gibt es vielleicht noch Bausätze fix und fertig für Z80 Maschinen mit 
einer Art Bildschirm und Tastatur? Da kann man ja was Modernes nehmen.

von c-hater (Gast)


Lesenswert?

Christian J. schrieb:

> 5. C Cross Compiler für Linux oder Windows? Ausgabe: Hex File für
> Brenner
> 6. Assembler? Och nö..... das dauert ja ewig da was Gescheites zu
> programmieren.

Was soll dann der Quatsch mit Z80/68K? Wenn du sowieso nur eine 
(idealerweise alles egalisierende) Hochsprache drauf loslassen willst, 
spielt die konkrete Hardware doch überhaupt keine Rolle. Du kannst 
denselben Qualm dann auch für ein modernes µC-System übersetzen und die 
CPU-Opas dahin geben, wo sie wirklich nochmal etwas nützen (wenn auch 
nicht dir): zum Wertstoff-Hof.

Retro ohne Asm ist wie Monte Carlo ohne Roulette. Langweilige 
Zeitverschwendung. Außer einer Auffrischung der Fertigkeiten bezüglich 
des Lötens auf Lochraster ist daraus keinerlei Gewinn zu erzielen, 
nichtmal ideeller.

von Christian J. (Gast)


Lesenswert?

Zumindest in Sacen Grafikarte habe ich hier schon was gefunden,
was evtl mit einem PIC oder AVR angeschlossen werden könnte, damit
man was sieht.

http://www.watterott.com/de/Micro-VGA-Mikrocontroller-VGA-Grafikkarte

von Christian J. (Gast)


Lesenswert?

Sodele....


hier ist mein Wunschsystem :-) Wird direkt nachgebaut. Mit Monitor, 
Forth Interpreter, Laderoutine für Hex File usw.

http://www.vaxman.de/projects/Z80_mini/index.html

von Christian J. (Gast)


Lesenswert?

Halloooooooooo............. !

Kann mal einer von den Z80 Cracks bitte zuhören bzw -lesen?

Habe mir die ganze Hardware heute bestellt:

- neue Zilog Z80 CPU's
- Z80 PIO
- 16C550 Uart
- RAM
- EPROM
- Brenner

und bin dabei den Schaltplan in Eagle ein zu hacken. Mit der 6510 kenne 
ich mich aus, damit habe ich viel gemacht damals, auch mit dem 8031 und 
seinem Multiplex Bus aber Z80 eben nüscht...

Fragen:

1) I/O

Der Z80 hat wie ich sehe I/O Funktionen IN und Out und eine IOREQ 
Leitung. Bindet man die Peripherie nun als I/O oder Memory Mapped ein? 
So wie ich das sehe kann ich die Register des 16C550 doch locker mappen 
über A15,14,13 (nutze eh nur A0 - A12), so dass ich alle Befehle drauf 
anwenden kann, statt nur IN und OUT, oder?

Also

.......A15 A14 A13 A12
ROM    0   0    0   1
RAM    0   0    1   0
UART   0   1    0   0
PIO    1   0    0   0

oder über Glue Logic eben decodieren, wobei ich das vermeiden will, 
damit kein TTL Grab entsteht.

2) Bus

Der Z80 hat Bus-Steuerleitungen, Wait, HALT etc. Werden die bei einem 
Minimalsystem benötigt oder brauche ich den Bus nur, wenn ich den als 
extern ausführe, so dass ich Erweiterungskarten  einstecken kann, die 
sich den Bus holen können um auf die RAM, ROM etc zuzugreifen?


Gruss,
Christian

von MaWin (Gast)


Lesenswert?

Christian J. schrieb:
> Der Z80 hat wie ich sehe I/O Funktionen IN und Out und eine IOREQ
> Leitung. Bindet man die Peripherie nun als I/O oder Memory Mapped ein?

Möglichst als I/O, ergibt sauberere Programme, und die PIO braucht das 
für die Interrupt-Bearbeitung.

Christian J. schrieb:
> Der Z80 hat Bus-Steuerleitungen, Wait, HALT etc. Werden die bei einem
> Minimalsystem benötigt

Hängt von deinem Minimalsystem ab. Das Timing des Z80 ist sehr eng. 
Gerade mit alten (langsamen) Speicherchips braucht man WAIT. Aber beim 
16C550 nicht.

von Christian J. (Gast)


Lesenswert?

Ok!

Also

PIO, 16C550 und evtl. 8153 Timer als I/O mappen. Decodiert werden müssen 
die aber dann auch.

ROM / RAM simpel über A15 decodieren?

Mit PALoder GAL und so nem Driss fange ich nicht mehr an, keinen 
Brenner, keine Ahnung, keine Software :-)

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


Lesenswert?

Christian J. schrieb:
> Der Z80 hat wie ich sehe I/O Funktionen IN und Out und eine IOREQ
> Leitung. Bindet man die Peripherie nun als I/O oder Memory Mapped ein?

Wie du gern möchtest. Allerdings ist der (Speicher) Adreßraum mit 64K 
nach heutigen Maßstäben ohnehin eher klein. Warum sollte man davon noch 
was für IO abzwacken wollen, wo man den separaten IO Adreßraum doch 
geschenkt kriegt? Auch von der Decodierungslogik her ist einfacher, 
separate Adreßräume zu verwenden.

Nicht zu vergessen verlangen diverse Standardumgebungen (wie CP/M und 
Vettern) einen möglichst großen, von 0 an durchgehenden RAM. Ich würde 
so ein System nicht anders aufsetzen, als mit einem mindestens 64K 
großen RAM, das hier und da von (EP)ROM überdeckt wird. Eine neckische 
Idee ist z.B. das ROM nur nach RESET an Adresse 0x0000 einzubinden und 
dann als allererste Aktion ins RAM zu kopieren. Danach wird das ROM 
abgeschaltet und das System läuft komplett aus dem RAM.

> Der Z80 hat Bus-Steuerleitungen, Wait, HALT etc. Werden die bei einem
> Minimalsystem benötigt oder brauche ich den Bus nur, wenn ich den als
> extern ausführe, so dass ich Erweiterungskarten  einstecken kann, die
> sich den Bus holen können um auf die RAM, ROM etc zuzugreifen?

WAIT wirst du mit aktuellen Bausteinen eher nicht brauchen. Allerdings 
kann man damit auch nette Spielchen machen, wie z.B. Hardware- 
Einzelschrittbetrieb.

Woran du recht zeitig denken solltest, ist welchen Interruptmode du 
verwenden willst. IM2 ist am leistungsfähigsten, muß aber bei der 
Adreßdecodierung berücksichtigt werden, damit sowohl das Lesen des 
Interruptvektors als auch das Snoopen des RETI Opcodes funktionieren. Es 
gibt in diesem Bereich auch ein paar known bugs - lies also mal ein 
paar Vintage Seiten genauer.


XL

von DingsDa (Gast)


Lesenswert?

Ich kann das gut verstehen, wenn man sich wieder mit den "alten" CPUs 
und Systemen beschäftigt. Es geht doch eigentlich nur der Nostalgie 
willen, solche "Systeme" wieder zu bauen oder wieder ans Laufen zu 
bringen. Es geht doch garnicht darum, dass es heute besser MC/CPUs gibt.
Ich habe heute noch ein Tektronix 4014 / Siemens 97801 kompatibles 
Terminal in Betrieb, das ich 1985 auf Basis der Intel 8031 und Zilog Z80 
CPU entwickelt habe. Also 2 CPUs. Der Z80 kümmert sich um die grafische 
Darstellung. Die 8031 MCU macht nur die Kommunikation V.24/RS422 und 
bedient die serielle Tastatur.
Das Terminal, das Gerät selbst ist ein Siemens 97801 mit meinem 
Motherboard, ist super für Debuggingzwecke via serieller Schnittstelle.
Printerport und Mausanschluss inklusive.
Ich verwende es heute noch. Besser als jede PC-Emulation.
Daneben habe ich noch einen Unix System in Betrieb. Macht echte Laune, 
mit dem Maschinchen zu arbeiten. Hat eine NSC32016 CPU, 10 MHz Takt, 512 
MB, 40 MB HD, bootet schneller als jeder aktuelle PC und hat schon 
Jahrzehnte auf dem Buckel. Baujahr 1985! Ausser der HD, original 
Hersteller war RODIME, jetzt Seagate , bis heute keinen Ausfall. Das 
soll mal ein aktuelles System nach machen!
Ich habe oft den Eindruck, dass die "alten" Systeme besser gebaut waren.

Das ist mein Sicht zu diesem Thema.

von DingsDa (Gast)


Lesenswert?

Ja, ja, alter Mann (55) erzählt vom Krieg!
Es hat und heute auch noch, einfach Spass gemacht! Das vermisse ich oft, 
wenn ich mir die Beiträge so anschaue. Vor allem die nutzlosen 
Antworten. Habe eigentlich überhaupt das Denken gelernt?
Es gab noch kein Internet, wo man Datasheets massig findet und viele 
nicht in der Lage sind diese wirklich zu verstehen. Da musste man die 
vorhandenen Infos wirklich verstehen lernen. Die Databooks musst man 
teilweise noch bezahlen!!!!
Und Du musstest mit dem/den Lieferanten einen guten Draht aufbauen, 
sonst hattest du verloren.
Und nicht wie hier so oft: Hau drauf, ohne Sinn und Verstand.

Das wollte ich noch anmerken.

von S. R. (svenska)


Lesenswert?

Hallo,

> 1) I/O
> Der Z80 hat wie ich sehe I/O Funktionen IN und Out und eine IOREQ
> Leitung. Bindet man die Peripherie nun als I/O oder Memory Mapped ein?

Das bleibt voll und ganz dir überlassen. Für I/O-Zugriffe legt der Z80 
immer einen Wartezyklus ein, aber dafür bleibt dein RAM-Adressraum 
sauber. Im Gegensatz zum 8085 kannst du den I/O-Adressraum ebenfalls mit 
16 Bit adressieren, aber mit 8 Bit ist es einfacher.

Wenn ich das richtig sehe, haben EPROMs ein high-aktives enable, und 
SRAMs ein low-aktives. In dem Moment könntest du den Chip direkt mit A15 
auswählen (und nur bei /MREQ aktivieren) und bekommst dann je 32 KB ROM 
(low) und RAM (high). Damit geht aber kein CP/M.

> So wie ich das sehe kann ich die Register des 16C550 doch locker mappen
> über A15,14,13 (nutze eh nur A0 - A12), so dass ich alle Befehle drauf
> anwenden kann, statt nur IN und OUT, oder?

Sinnvoll für Hardwarezugriffe sind nur Load- und Blockbefehle. Beide 
gibt es auch in der I/O-Variante. Eine vernünftige Ausdekodierung von 
I/O für bis zu 8 Geräte (je 32 Ports) kannst du z.B. mit einem einzigen 
74xx138 machen: /M1 an EN1, /IORQ an /EN2, fertig.

> 2) Bus
>
> Der Z80 hat Bus-Steuerleitungen, Wait, HALT etc. Werden die bei einem
> Minimalsystem benötigt oder brauche ich den Bus nur, wenn ich den als
> extern ausführe, so dass ich Erweiterungskarten  einstecken kann, die
> sich den Bus holen können um auf die RAM, ROM etc zuzugreifen?

An sich sind die uninteressant. An /HALT kannst du eine LED hängen, die 
dir anzeigt, ob dein System gerade im Leerlauf ist (auf Interrupts 
wartet), das ist auch zum Testen hilfreich.

@DingsDa:
Magst du das Tektronix-kompatible Terminal etwas näher ausführen? Mir 
gefällt die Idee nämlich, relativ einfach Grafiken darstellen zu können, 
aber außer xterm kann das kein Terminalemulator. Wie machst du die 
Ausgabe?

Gruß,
Svenska

von Georg G. (df2au)


Lesenswert?

S. R. schrieb:
> EPROMs ein high-aktives enable

Datenblatt mal überflogen? /CE und /OE sind auch beim Eprom aktiv-LO.
SRAMs gab es mal mit zwei Enable Eingängen, einer Hi und einer Lo aktiv.

Für den TO: ich würde die Z80-SIO nehmen und einen externen Baudraten 
Generator. Wenn du mit Interrupts arbeiten willst (und das willst du 
irgendwann), ist das mit den Z80 Bausteinen einfacher. Die liefern dann 
den Vektor und du brauchst keine Klimmzüge im Programm zu machen.

von Erich (Gast)


Lesenswert?

Hi Christian J. (hobel) ,
du hast doch hier Beitrag "Re: Retro Fieber: Z80 oder 68000 ?" 
selbst das Foto des "Micro-Professor" uPF-1 MPF-1B eingestellt!
Warum verwendest du dieses System nicht für deine Experimente?
Ist mit Z-80 und hat ausführliches Handbuch, mit Sourcelisting, mit 
vielen Beispielen, auch Vektor-INT2 mode des Z80.
Handbuch inzwischen auch online; Google findet es.
Gruss

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Z180-System mit integrierter PIO, CTC und SIO und 512k RAM, ein AVR 
ersetzt den EPROM.
Beitrag "Z180-Stamp Modul"

oder ganz klassisch mit Z80
http://www.projekte.daleske.de/cpm/06_z80hwe/cpm_z80hwe.htm

von Christian J. (Gast)


Lesenswert?

Hallo,

danke für die Tipps!  Habe mich heute nur den ganzen Tag mit 
"Daytrading" an der Börse befasst und da recht gute Gewinne gemacht, die 
ich jetzt wieder für Hardware verbraten werde :-)

Also, das System soll bestehen aus .... nur die Hardware, Software weiss 
ich noch nicht so genau:

Z80
Z80 PIO
Z80 CTC bzw 8253 Timer Baustein
16C550 Serial Port
32 kb RAM
32 KB ROM

evtl. eine Arduino 7-Segment Anzeige mit Atmel als Treiber, mal gucken.

Video Interface .... gibt es auch für die UART, der C550 hat zwei davon:

http://www.watterott.com/en/Micro-VGA-Cost-effective-Microcontroller-VGA-Interface

So für einen 7z Bildschirm, man will ja was sehen.

Tastatur macht keinen Sinn, dafür braucht man ja ein echte BIOS, 
Speichereinheiten etc. Und Programme werde ich auf dem Z80 nicht 
einhacken.

Interrupts.... wofür? Es gibt 3 Stück, Mode 2 wird wohl am meisten 
benutzt. Auch die Timer 0.3. brauchen einen, den NMI vielleicht? Die 
16C550 muss Zeichen melden, also gehen deren IRQ Ausgänge an die CPU.

Glue Logic muss ich noch den Kopf rauchen lassen, der 74HC138 scheint 
mir geeignet wenigstens 3 Peripheriebausteine anzuschliessen.

Für RAM/ROM braucht man nur die A15 über 2 Inverter nacheiander jeweils 
intervertiert an EPROM und RAM zu gehen, der eine ist negiert, der 
andere nicht.

Software:

Bisher noch keine Ahnung! Ich werde auf keinen Fall Asm Programme 
schreiben, brennen, löschen, korrigiere und alles von vorne wie früher.
Das muss auf dem PC besser gehen mit einem Cross Assembler, wenn es geht 
mit Simulation des Programms aber da weiss ich nicht was es da gibt. Bin 
sehr verwöhnt mit grafischer Oberfläche von MPLAB und ARM IDE's.

Der Z80 Asm ist "verständlich" .. habe das Buch "Z80" gekauft und mein 
Unterbwusst sein  sagt mit jeder Seite: "Das hast du vor 25 Jahren alles 
mal gemacht, es ist nicht neu .... nur "ungewohnt".

Irgendwas vergessen?

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Weiter im Text:

Was macht man überhaupt mit diesem System? Assembler erlaubt keine 
komplexen Anwendungen, zumindest nicht wenn man nicht endlos Zeit hat 
und vor allem KEIN BIOS dahinter wie das DOS BIOS füher, wo man zig INTs 
nutzen konnte um Dateien zu schreiben, Ausgaben zu machen und und und.

Da freut man sich wenn Lämpchen blinken, etwas ausgegeben wird auf der 
Uart, vielleicht ein 7-Segment Display ein paar Zahlen anzeigt. Und 
vielleicht fühlt man sich "nostalgisch", wenn man den schwarzen Chip 
anschaut und nichts sieht aber weiss, dass er innendrin grad "rechnet".

Mit dem Internet wird er sich ebenso wenig verbinden können, wie ein USB 
Gerät anzusteuern oder eine 3,5z Floppy, was ja denkbar wäre als 
Datenspeicher.

Vermutlich wird also die Verwendung eine Art "physical computing" sein, 
Ports einlesen, ausgeben, irgend einen Sensor dran und 2-3 Relais, die 
irgendwas ansteuern.

Oder sehe ich das falsch?

von Harald (Gast)


Lesenswert?

Du willst also ein Z80 System bauen. Finde ich sehr interessant. 
Beschäftige mich auch damit soweit es die Zeit erlaubt.

Und nun führst du dein eigenes Projekt mit deinen letzten zwei posts ad 
absurdum....

Gespaltene Persönlichkeit?

von MaWin (Gast)


Lesenswert?

Christian J. schrieb:
> Was macht man überhaupt mit diesem System?

Christian J. schrieb:
> Oder sehe ich das falsch?

Du erkennst langsam, waorum solche Schaltung Unsinn sind.

Wenn du CP/M und GEM laufen lassen könntest, oder ein Arcade-Spiel aus 
MAME auf die Hardware ziehen könntest.

Also erst die Anwendung suchen, die mit einen Uralt-OProzessor besser 
geht (weniger Bauaufwand weil Pläne und Software fertig) als mit einem 
Neuen, und dann bauen.

von Falk B. (falk)


Lesenswert?

Vielleicht eine Art ZEN-Computing? ;-)

https://de.wikipedia.org/wiki/Zen#Lehre

von H.Joachim S. (crazyhorse)


Lesenswert?

Das genau ist das Problem - erst die Software haucht dem Kerlchen Leben 
ein. Du hast nicht genug Zeit in deinem Leben, das alles selbst zu 
machen.

16C550 - du solltest bei der originalen Z80-SIO bleiben. Nur damit 
funktioniert das eigentlich geniale Interupt-System (Peripherie liefert 
den Opcode, IM2 (?) ) in seiner ganzen Schönheit.

von Frank K. (fchk)


Lesenswert?

Christian J. schrieb:
> Hallo,
>
> danke für die Tipps!  Habe mich heute nur den ganzen Tag mit
> "Daytrading" an der Börse befasst und da recht gute Gewinne gemacht, die
> ich jetzt wieder für Hardware verbraten werde :-)
>
> Also, das System soll bestehen aus .... nur die Hardware, Software weiss
> ich noch nicht so genau:
>
> Z80
> Z80 PIO
> Z80 CTC bzw 8253 Timer Baustein
> 16C550 Serial Port
> 32 kb RAM
> 32 KB ROM

Wenn ich das machen würde:
EZ80F91: hat bereits 256k Flash, seriell, SPI, I2C, RTC und Glue Logic 
drin; 
http://www.digikey.de/product-detail/de/EZ80F91AZA50SG/269-4564-ND/1236489
Beschaltung gemäß Datenblatt

dazu ein 128k SRAM wie dieses hier zB:
http://www.digikey.de/product-detail/de/IS61C1024AL-12JLI-TR/706-1303-1-ND/4733133
oder mehr, wenn Du magst. Tu Dir keinen Zwang an.

Denke daran: Du kannst Bankswitching machen, musst es aber nicht. Der 
EZ80 kann 16MB Adressraum linear (!) adressieren.

Restliche Peripherie je nach Wunsch hinzufügen - genügend IO-Pins hat 
das Teil.

Assembler/Compiler/RTOS gibts bei Zilog.

Wenn Du magst, darfst Du auch noch einen DP83848C anklemmen und das 
10/100 Ethernet in Betrieb nehmen.
http://www.digikey.de/product-detail/de/DP83848CVV%2FNOPB/DP83848CVV%2FNOPB-ND/947542

Ansonsten gibts das alles fertig, wenn Dir SMD unheimlich ist (alles 
eine Frage der Übung und der richtigen Technik):
http://www.digikey.de/product-detail/de/EZ80F910200KITG/269-4560-ND/1236485
Da ist dann auch ein Debuggerkabel dabei.

fchk

von Christian J. (Gast)


Lesenswert?

Harald schrieb:
> Du willst also ein Z80 System bauen. Finde ich sehr interessant.
> Beschäftige mich auch damit soweit es die Zeit erlaubt.
>
> Und nun führst du dein eigenes Projekt mit deinen letzten zwei posts ad
> absurdum....
>
> Gespaltene Persönlichkeit?

Nein, das nennt man den Prozess der Entscheidungsfindung. Pro und Contra 
.... solange bis man sich für eine Richtung entschieden hat oder etwas 
verwirft. Da hier nur der Weg zählt und es kein Ziel gibt entspricht es 
nicht der üblichen Vorgehensweise, die ich als Ingenieur so kenne. Da 
würde ich nämlich estmal eine Spec schreiben.

@Frank:

Mit den smd Chips und moderner CPU fehlt der "Geist der Nostalgie"... es 
sollen ja gerade die Uralt Steine sein die verbaut werden. Sonst geht 
auch ein Raspberry Pi, sicherlich komfortabler.

DIe CPM/M Version ist deutlich aufwendiger und ich würde mal sagen, da 
geht ein Jahr ins Land bevor das alles läuft....

http://searle.hostei.com/grant/cpm/index.html

Der hie baut sogar "Pong" selbst nahc mit TTL.... denke mal er hat keine 
Familie und sehr viel Zeit :-), siehe Bild.

http://searle.hostei.com/grant/pong/index.html

von MaWin (Gast)


Lesenswert?

H.Joachim Seifert schrieb:
> 16C550 - du solltest bei der originalen Z80-SIO bleiben. Nur damit
> funktioniert das eigentlich geniale Interupt-System (Peripherie liefert
> den Opcode, IM2 (?) ) in seiner ganzen Schönheit.

Jein.

Er könnte die PIO, die er vorgesehen hat, als IM2 Quelle nutzen, in dem 
IRQ des 16C550 in den PIO geht.

Aber bei 2 Quellen braucht er sowieso keinen IM2.

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

MaWin schrieb:
> H.Joachim Seifert schrieb:
>> 16C550 - du solltest bei der originalen Z80-SIO bleiben. Nur damit
>> funktioniert das eigentlich geniale Interupt-System (Peripherie liefert
>> den Opcode, IM2 (?) ) in seiner ganzen Schönheit.
>
> Jein.
>
> Er könnte die PIO, die er vorgesehen hat, als IM2 Quelle nutzen, in dem
> IRQ des 16C550 in den PIO geht.
>
> Aber bei 2 Quellen braucht er sowieso keinen IM2.

Hi,

ich denke ich habe mich entschieden. der Junge hat alles wunderbar 
beschrieben, an jedes Detail gedacht und vor allem hat er ein komplettes 
BIOS geschrieben mit Basic Interpreter und einem Terminal Adapter für 
den PC. Das denke ich spart deutlich Arbit und Basic ist ja ok.

http://searle.hostei.com/grant/z80/SimpleZ80.html

Anbei mal ein echter "Bill Gates" von 1978 .... ein Basic Interpreter.

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

So,

falls es jemanden interessiert,der ähnliches im Schilde führt, so denke 
ich, dass das der schnellste Weg zu einem "Retro Computer" ist. Basic! 
Und da es Peek und Poke gibt sind auch Peripherie Geräte wie Timer etc 
programmierbar und auslesbar.  Evtl. muss ich da aber den Asm verändern, 
sofern die auf das Memory zugreifen und nicht auf die I/O.

Anbei ein Bild des Erstellers diesen klasse Z80 System mit echtem BIOS 
dahinter.

von Frank K. (fchk)


Lesenswert?

Christian J. schrieb:

> Mit den smd Chips und moderner CPU fehlt der "Geist der Nostalgie"... es
> sollen ja gerade die Uralt Steine sein die verbaut werden. Sonst geht
> auch ein Raspberry Pi, sicherlich komfortabler.

Nun, man kann sich das Leben auch schwer machen.

> DIe CPM/M Version ist deutlich aufwendiger und ich würde mal sagen, da
> geht ein Jahr ins Land bevor das alles läuft....

Das haben schon andere vor Dir gemacht:

http://www.shaels.net/index.php/mic80/mic80-general/38-mico-overview
http://z80cpu.eu/mirrors/www.vegeneering.com/eZ80_CPM/index.html
http://www.hsl.wz.cz/cpmez80.htm

von Soul E. (Gast)


Lesenswert?

Dann bau doch einen ZX80 oder ZX81 nach. Da gibt es sehr schöne 
Implementierungen mit Standardbauteilen. Suchbegriff "ZX97 wilf 
righter", "ZX81NU", "zx80 grant searle".

von m.n. (Gast)


Lesenswert?

Christian J. schrieb:
> So,
>
> falls es jemanden interessiert,der ähnliches im Schilde führt, so denke
> ich, dass das der schnellste Weg zu einem "Retro Computer" ist. Basic!

Ich denke, auf der Schiene fahren schon bessere Züge, die zeitgemäß und 
schneller sind.
Beitrag "maximite TFT mmbasic Computer"
Beitrag "PIC 32 schneller Basic Interpreter"

von Christian J. (Gast)


Lesenswert?

Hallo,

ich habe mir mal den SDCC Compiler runtergelden und etwas quer durchs 
Manual gelesen. Das scheitn mir doch den ungeliebten Assembler zu 
ersparen (Nein..... ich habe keinen Bock da drauf! Seit 1995 nicht 
mehr...). Zumindest für eine Applikation und um die geht es ja was 
schickes für die Kiste zu schreiben. Einen Monitor, der sich Intel .hex 
Files über die Uart reinzieht und diese im Ram decodiert und ausführt 
habe ich schon. Ram ist bei mir Batterie gepuffert also bleibt es auch 
drin.

Kennt sich jemand mit diesem SDCC Compiler aus?

Alos erstes tauchen natürlich Fragen auf, wie

- wie teile ich ihm die Memory Map meines Rechners mit?

- wie bringe ich ihm bei, dass auf $80 die Timer I/O liegt und
  auf $A0 die Serielle Schnittstelle?

- kann er Code erzeugen für I/O gemappte Devices? Oder nur für welche 
die
  memory mapped sind?

- wie leite ich stdout um auf meine Z80 SIO Uart

usw.?

Beispiele gibt es keine im Netz, habe alles durchsucht.

von S. R. (svenska)


Lesenswert?

Christian J. schrieb:

> Beispiele gibt es keine im Netz, habe alles durchsucht.

Das glaube ich dir nicht.

> Kennt sich jemand mit diesem SDCC Compiler aus?

Nur am Rande, habe ihn (bisher) nicht für größere Projekte benutzt. Es 
gibt wohl ein paar Bugs bei speziellen Sachen (z.B. __critical), aber 
der Codegenerator an sich soll gut sein. Auf der Webseite werben sie 
zumindest damit, dass sie fast so gut sind wie IAR (und damit besser als 
alle anderen).

> - wie teile ich ihm die Memory Map meines Rechners mit?

Sollte mit --code-loc und --data-loc gehen, notfalls musst du dir eine 
eigene Startup-Datei (crt0.rel) bauen.

> - wie bringe ich ihm bei, dass auf $80 die Timer I/O liegt und
>   auf $A0 die Serielle Schnittstelle?

Der Compiler kennt weder serielle Schnittstellen noch Timer, also wirst 
du dir dafür deine eigenen Treiber schreiben müssen. ;-)

> - kann er Code erzeugen für I/O gemappte Devices?

Ja. Du kannst Variablen mit ein paar Spezialflags deklarieren:
1
__sfr __at          0x12   reg1;
2
__sfr __at __banked 0x1234 reg2;

dann wird für Zugriffe darauf ein in- oder out-Befehl erzeugt. Letzteres 
erzeugt Code, der I/O mit allen 16 Adressbit macht (Eigenheit vom Z80).

> Oder nur für welche die memory mapped sind?

Wie dir andere bereits schrieben: Löse dich von MMIO. Das ist auf einem 
Z80 nicht zielführend.

> - wie leite ich stdout um auf meine Z80 SIO Uart

Naja, die mitgelieferten Funktionen rufen nicht mitgelieferte Funktionen 
auf...

Ein Beispielcode für meine Hardware:
1
#include <stdio.h>
2
3
__sfr __at 0x10 uart_data;   /* Datenregister */
4
__sfr __at 0x11 uart_rxfill; /* Anzahl Bytes im Rx-Puffer */
5
6
void putchar(char c) {
7
        uart_data = c;
8
}
9
10
void main(void)
11
{
12
        char rx;
13
        char hello[] = "Hallo, Welt!\n";
14
15
        printf("%s", hello);
16
        while(uart_rxfill) {
17
                rx = uart_data;
18
                printf("%c", rx);
19
        }
20
}

von Christian J. (Gast)


Lesenswert?

Hallo S.R,

danke für die Ausführungen, wird Zeit den Thread mal auszudrucken als 
pdf und ins Info Verzeichnis zu legen.

Ich habe mir heute mal einen sehr aufwendigen Krypto DOS Virus 
angeschaut, den ich aus Interesse mal 1995 für IBM 486 geschrieben habe 
mit ca 23 J. Wurde sogar veröffentlicht als Demo Code. 30 Seiten Asm 
ausgedruckt. Frage mich wieso es mir heute so schwer fällt derart guten 
Asm wie damals zu schreiben? Alter?

Das was Du da schreibst gefällt mir, vielleicht hast Du ja ein paar 
Sourcen deines projektes mal für mich, so dass ich Beispiele habe? Nicht 
für "C" sondern die Spezialfunktionen, wie SFR Register belegen und 
ansprechen usw. Einiges werde ich sicher inline asm codieren müssen aber 
das meiste in C.

Da ich recht viel Sourcen gefunden habe, die man fast schon mit 
Ehrfurcht anschaut (1976er Orginal Sourcen von CP/M und Microsoft für 
Z80) würde ich gern einige tolle Sachen wie

FORTH Interpreter
Basic Interpreter

übernehmen in den Monitor.

von S. R. (svenska) (Gast)


Lesenswert?

Christian J. schrieb:
> Das was Du da schreibst gefällt mir, vielleicht hast Du ja ein paar
> Sourcen deines projektes mal für mich, so dass ich Beispiele habe? Nicht
> für "C" sondern die Spezialfunktionen, wie SFR Register belegen und
> ansprechen usw.

Das kann ich nicht, weil ich das bisher selbst nicht gemacht habe. Fast 
die gesamte Peripherie ist in einem AVR implementiert und daher aus 
Z80-Sicht extrem einfach zu bedienen. Im Augenblick läuft auch nur ein 
ziemlich minimales CP/M, bis ich mal wieder die Muße finde, das 
Speichersystem fertigzustellen.

Zu dem Projekt findest du zwei Threads hier:
Hardware: Beitrag "eigenes Z80 Mainboard - geht das so?"
CP/M:     Beitrag "CPM.SYS und wenig RAM"

Gruß

von Georg G. (df2au)


Lesenswert?

S. R. (svenska) schrieb:
> SFR Register

Der Z80 hat ein einziges "SFR", das Register, das das Hi-Byte der 
Interrupt Vektor Tabelle enthält.

SDCC kenne ich nicht, ich arbeite mit einer Variante von "QC". Der iwrd 
aber nicht grundsätzlich anders sein.

Du hast eine Runtime-Lib und ein Startup-Programm dabei. Für die 
Runtime-Lib musst du üblicherweise Sachen wie Console Eingabe und 
Ausgabe definieren. Und im Startup werden die RAM Grenzen angegeben und 
es wird der Stack gesetzt und bei Bedarf das I-Register. Mehr ist nicht 
nötig.

Es ist mit Sicherheit ein Hello-World Programm dabei. Nimm das als 
Anregung.

von Takao K. (takao_k) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich finde den 8031 interessant da er viele interne Register hat, und 
einfach zu beschalten ist. Kann sogar Multiplikation.

Schaltung bereits aufgebaut, jeweils 2 mal ein paar Stunden, kein 
Schaltplan. Muss nur noch das FLASH IC anschliessen.

6507 und 68000 Computer sind auch vorgesehen.

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

zumindest kam heute erstmal der Scinken, den ich brauche an, sehr gute 
Zustand, 19 Euro ..... denke mal ich mache da weiter und erst danach an 
dem Board.

Ich kenne mich intern mit dem AVR nicht sonderlich aus, denke aber dass 
ich auf Arduino Basis eine gemischte Lösung machen kann, dass der Z80 
über seine PIO und vielleicht 4 Leitungen von der einen Datenspeicher 
adressieren kann, der am Atmel dran hängt. So eine Art SPI mit Bit 
Banging. Ist ja kein Thema da eine SD Karte dran zu papen - Arduino eben 
- und eine Art kleinen Treiber zu schreiben, der mal eben das RAM Image 
ablegt und es sich auch wieder reinzieht, so dass Programme erhalten 
bleiben.

Zu sfr steht folgendes im Manual:

3.5.2.1 __sfr (in/out to 8-bit addresses)

The Z80 family has separate address spaces for memory and input/output 
memory. I/O memory is accessed with
special instructions, e.g.:

__sfr __at 0x78 IoPort; /* define a var in I/O space at 78h called
IoPort */

Writing 0x01 to this variable generates the assembly code:
40
3.6. OTHER SDCC LANGUAGE EXTENSIONS CHAPTER 3. USING SDCC
3E 01 ld a,#0x01
D3 78 out (_IoPort),a

3.5.2.2 banked sfr (in/out to 16-bit addresses)

The keyword __banked is used to support 16 bit addresses in I/O memory 
e.g.:
__sfr __banked __at 0x123 IoPort;

Writing 0x01 to this variable generates the assembly code:
01 23 01 ld bc,#_IoPort
3E 01 ld a,#0x01
ED 79 out (c),a

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist übrigens eine Möglichkeit ohne eine PIO die IO Pins eines Z80 
gewaltig aufzublasen.

von Michael_ (Gast)


Lesenswert?

Christian J. schrieb:
> Ich kenne mich intern mit dem AVR nicht sonderlich aus, denke aber dass
> ich auf Arduino Basis eine gemischte Lösung machen kann, dass der Z80
> über seine PIO und vielleicht 4 Leitungen von der einen Datenspeicher
> adressieren kann, der am Atmel dran hängt.

Wenn, dann nimm doch gleich die Z80-DMA für gemeinsamen Speicher.

Ich finde, wer alte Prozessoren wiederbeleben will, sollte beim 
damaligen Stand verbleiben und ihn auch so nachvollziehen.
Es macht keinen Sinn, damit einen PC nachzuhecheln. Ich habe damit 1990 
aufgehört.
Vielleicht noch stromsparende Chips, größere Speicher, einen Uhren-Chip 
usw. einzubauen, das ist zu akzeptieren.
Es sind Oldtimer, die auch so behandelt werden wollen.
Ein sehr gutes Buch ist Kieser-Meder Aufbau und Anwendung des 
Mikroprozessorsystems U880 (Z80).

von S. R. (svenska)


Lesenswert?

> Ich finde, wer alte Prozessoren wiederbeleben will, sollte beim
> damaligen Stand verbleiben und ihn auch so nachvollziehen.

Nicht unbedingt. Das hängt davon ab, ob es "authentisch Retro" sein soll 
wie bei Autos oder nicht. EPROMs machen mir keinen Spaß, also lasse ich 
sie weg. PALs und 8"-Disketten sind schwer zu bekommen, also lasse ich 
sie weg. DRAMs möchte ich allerdings benutzen, sonst ließe ich sie auch 
weg.

Niemand verbietet dir USB oder Ethernet an solchen Basteleien - gibt 
auch genug Leute, die das an ihren C64 oder KC85 gebastelt haben. Wenn 
du den Druck hast, damit auch Youtube schauen zu wollen, dann ist die 
Bastelei sowieso nichts für dich.

Andererseits... Youtube auf nem KC... wäre definitiv cool. ;-)

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


Lesenswert?

Christian J. schrieb:
> zumindest kam heute erstmal der Scinken, den ich brauche an, sehr gute
> Zustand, 19 Euro

Was? 19 Euro? Dann muss ich meinen Zaks mal verscherbeln. Hätte nicht 
gedacht, das das Ding so viel wert ist. Ich brauche ihn jedenfalls nicht 
mehr.

von Peter D. (peda)


Lesenswert?

S. R. schrieb:
> DRAMs möchte ich allerdings benutzen, sonst ließe ich sie auch
> weg.

Gibt es so kleine DRAMs noch?
Ich hätte einfach einen 128kB*8 SRAM rangepappt.
Das DRAM-Timing mit Z80 ist nicht ganz ohne. Oft waren in den 
Schaltungen RC-Glieder zum Feinabgleich.

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


Lesenswert?

Peter Dannegger schrieb:
> S. R. schrieb:
>> DRAMs möchte ich allerdings benutzen, sonst ließe ich sie auch
>> weg.
>
> Gibt es so kleine DRAMs noch?

Neu wohl nicht mehr. Obwohl Pollin ein 256Kx1 dRAM verkloppt. Aber so 
was schnuckeliges wie 64Kx4 (61464?) findet man wohl nur noch in gut 
sortierten Bastelkisten.

> Das DRAM-Timing mit Z80 ist nicht ganz ohne. Oft waren in den
> Schaltungen RC-Glieder zum Feinabgleich.

Was aber nicht heißt daß es nicht besser gehen würde. Wenn man den 
doppelten (IIRC, kann auch 4x gewesen sein) CPU-Takt zur Verfügung 
hatte, dann konnte man auch einen synchronen Generater für das signaling 
bauen. Nicht zu vergessen die geniale Methode, Speicherzugriffe per WAIT 
auf 4 Takte zu verlängern (dann sind sie gleich lang wie M1 Zyklen), 
dann aber zwei unabhängige Speicherzugriffe in jeden 4-Takte Zyklus zu 
packen. Z.B. einen für die CPU und einen für die Grafikhardware.

Ich hab ja mal günstig einen i82720 GDC geschossen und trage mich immer 
noch mit dem Gedanken, daraus eine Grafikkarte für eines meiner Z80 
Schätzchen zu bauen. Man bräuchte einen Sponsor, damit man nicht mehr 
arbeiten gehen müßte ;)


XL

von Route_66 H. (route_66)


Lesenswert?

Georg G. schrieb:
> Der Z80 hat ein einziges "SFR", das Register, das das Hi-Byte der
> Interrupt Vektor Tabelle enthält.

Unvollständig: Das andere "SFR" ist nur 7 Bit breit und enthält die 
Refresh-Adresse für dynamische RAMs. Sie wird im M1-Zyklus im Takt 4 auf 
den Adressbus gelegt und automatisch inkrementiert.

: Bearbeitet durch User
von Holm T. (Gast)


Lesenswert?

Ich halte es prinzipiell für Unfug ein CP/M System aus einem Z80 zu 
bauen und dann einen Amtel da als Slave dranzuketten. Entweder man macht 
die Peripherie und den Speicher mit dem Z80 selber (ok, für Ethernet und 
USB wird man Slaves brauchen) oder man läßt es.

Wenn schon Retro dann IMHO richtig, man kann ein CP/M System mit 8MB 
Platten auf einer SD Karte betreiben, man kann aber auch einen 8272 
(µPD765) da anknoten und ein Floppylaufwerk dran basteln. Ich empfehle 
da 5,25Zoll 800KB Laufwerke wege nder Zuverlässigkeit. die 3,5 Zoll PC 
Teile sind doch alle mehr oder weniger WORN Devices und alle 
unterschiedlich justiert.

Console Interface ist dann eine SIO mit PC-Terminal dran, auf dem 2. 
Kanal kann noch ein Drucker landen. (Sofern man noch einen mit V.24 oder 
IFSS auftreiben kann).

Übrigens weil einer mal Wordstar ansprach: auf einem 10Mhz Z80 macht 
sogar das Laune...

Das Alles muß man nicht unbedingt alleine und zu Fuß machen, vieles 
davon wurde schon implementiert (Netzwerk, RAMdisk, SD-Card, IDE 
Interface, USB usw) und ist z.B: auf ollen DDR robotron K1520 Rechnern 
verfügbar.
Ich habe solchen Kram auch noch da...

Ehe der To ICs kauft: bitte bei mir nachfragen, ich sponsore die, will 
nur das Porto.

Gruß,

Holm

von Christian J. (Gast)


Lesenswert?

Holm Tiffe schrieb:
> Ehe der To ICs kauft: bitte bei mir nachfragen, ich sponsore die, will
> nur das Porto.

Hi,

tja, leider schon passiert, heute kamen alle IC's, dazu noch eine 8255 
PIO (ist einfacher zu handhaben), 56k SRAMs im exotischen Gehäuse, Z80 
CTC, Z80 SIO usw.

Und mit CP/M wird nix, weil mir das viel zu aufwendig ist. Selbst durch 
Fremdprojekte durchzusteigen (zb FAT System für Flash Cards, angebunden 
durch IDE Schnittstelle) brauchst Du Tage.

Es dreht sich alles immer um die Frage: Wie kriege ich meine Software da 
rein und teste sie, ohne dass zwischen Codeänderung und Test ne halbe 
Stunde vergeht. Wo drauf entwickel ich die Software? Auf dem Z80 oder 
einem PC? Wie speichere ich Programme ab?

So nett wie beim PIC oder AVR wird es nicht sein, wo eine ISP dran ist 
und eine Uart zum Debuggen. Debuggen wird wohl gar nicht gehen.

Heute mal geschaut.... einen Eprom Emulator kriegt man kaum noch und 
wenn dass fast 300 Euro. Damals an der uni hatte ich einen peps-3, damit 
ging das sehr einfach unter DOS.

von Georg A. (georga)


Lesenswert?

> Wo drauf entwickel ich die Software? Auf dem Z80 oder einem PC?

PC natürlich ;) Ausser du bist Masochist...

> Debuggen wird wohl gar nicht gehen.

Debugging wird überschätzt. Es reichen ein paar Leds zum Morsen schon 
aus, UART ist schon Luxus. Man lernt damit, auch etwas systematischer 
nachzudenken, was eigentlich wie schiefgehen kann, was zum Led-Pattern 
passt.

> einen Eprom Emulator kriegt man kaum noch und wenn dass fast 300 Euro.

Bau dir einen. Habs für mein allererstes eigenes uC-System (Z80, auch 
schon über ein Vierteljahrhundert her, urgs...) auch gebastelt. War 
recht trivial. Als Speicher ein SRAM (optional batteriegepuffert), daran 
für die Adressen 2*74HC590 und für die Daten ein 74HC595. Braucht nach 
aussen ~6 Leitungen. Wenn der Z80 im Reset ist, kann man bequem die 
Treiber der Zähler/SRs aktivieren und Daten ins SRAM reinschreiben (ging 
damals über den Parallelport). Dann OE wieder aus und Reset loslassen. 
Turnaroundzeit war im Bereich einiger 10s für ein paar KB Programm, war 
noch alles schnarchiges Basic... Den Emu habe ich vor ein paar Tagen 
beim Aufräumen sogar wieder gesehen :)

von S. R. (svenska)


Lesenswert?

Christian J. schrieb:
> Und mit CP/M wird nix, weil mir das viel zu aufwendig ist. Selbst durch
> Fremdprojekte durchzusteigen (zb FAT System für Flash Cards, angebunden
> durch IDE Schnittstelle) brauchst Du Tage.

Ist das nicht das, was du willst? Oder ist dein Ziel nur, innerhalb von 
ein paar Stunden einen Z80 auf ein Brett zu löten und gut ist?

Ein kleines CP/M-BIOS kriegt man in 300 Zeilen Assembly hin.

> Es dreht sich alles immer um die Frage: Wie kriege ich meine Software da
> rein und teste sie, ohne dass zwischen Codeänderung und Test ne halbe
> Stunde vergeht.

Da wirst du dir selbst was ausdenken müssen.
In meinem Fall: "make", BREAK (für den Monitor), Hexfile verschicken, 
Reset. Dauert keine 10 Sekunden.

> Wo drauf entwickel ich die Software? Auf dem Z80 oder
> einem PC? Wie speichere ich Programme ab?

SDCC ist ein Cross-Compiler. Der läuft nicht auf dem Z80. Wolltest du 
ihn nicht benutzen?

> So nett wie beim PIC oder AVR wird es nicht sein, wo eine ISP dran ist
> und eine Uart zum Debuggen. Debuggen wird wohl gar nicht gehen.

Du bist sicher, dass du keinen Z80-Emulator benutzen willst? Da sind 
Debugschnittstellen meist drin, inklusive Breakpoints, Register gucken 
und so.

von Frank K. (fchk)


Lesenswert?

Christian J. schrieb:

> Es dreht sich alles immer um die Frage: Wie kriege ich meine Software da
> rein und teste sie, ohne dass zwischen Codeänderung und Test ne halbe
> Stunde vergeht. Wo drauf entwickel ich die Software? Auf dem Z80 oder
> einem PC? Wie speichere ich Programme ab?
>
> So nett wie beim PIC oder AVR wird es nicht sein, wo eine ISP dran ist
> und eine Uart zum Debuggen. Debuggen wird wohl gar nicht gehen.

Ein MODERNER Z80 hat JTAG und ZDS(ne Art Zweidraht-JTAG). Aber den 
willst Du ja nicht haben.

fchk

von Holm T. (Gast)


Lesenswert?

>dazu noch eine 8255 PIO (ist einfacher zu handhaben)...

Unmengen von Programmierern und Elektronikern international ärgern sich 
über das Ding und Du hältst es für einfacher?

Wolltest Du nicht ein Z80 System bauen? Die volle Leistungsfähigkeit der 
Interruptkette im IM" bekommst Du nur mit Zilog ICs dieser Serie und die 
PIO ist recht einfach zu handhaben :-)

Gruß,

Holm

von Christian J. (Gast)


Lesenswert?

Hallo,


wie geil ist das denn? Einfach mal mit dem SDCC etwas gespielt, Nonsense 
Code geschrieben und es kommt Z80  Asm bei heraus!  Kleines Script 
geschrieben, mit make2bin wird ein Bin File draus, sonst Intel-Hex-8.

Ich weiss noch damals wie sehr ich mir einen Cross Compiler gewünscht 
habe, so um 1995 herum ..... gab es nicht oder war zu teuer.

Dann kann es ja losgehen ..... muss nur noch die putchar überschreiben. 
Mal schauen, ob sich auch ein Monitor mit dem C Compiler schrieben lässt 
zumindest mit Inline Asm wegen der Int Tabelle, Startup Code usw. Ohne 
Asm geht es definiv nicht.

Voila.....  er macht was er soll, der SDCC :-)

Aus
1
#include <stdio.h>
2
#include <stdlib.h>
3
4
int main()
5
{
6
    unsigned int a,i;
7
    static __sfr __at 0x10 uart_data; 
8
9
    i=0;
10
11
    for ( a = 0; a < 10; a++ )
12
    {
13
  i =i + a;
14
        if (i>1000)
15
           i=0;    
16
    }
17
18
   i = 10;
19
   while(--i>0) {
20
            a  = uart_data;
21
                printf("%c", a);
22
        }
23
24
    return 0;
25
}

wird:
1
1 ;--------------------------------------------------------
2
                              2 ; File Created by SDCC : free open source ANSI-C Compiler
3
                              3 ; Version 3.4.0 #8981 (Apr  5 2014) (Linux)
4
                              4 ; This file was generated Sat Sep  6 11:09:47 2014
5
                              5 ;--------------------------------------------------------
6
                              6   .module test
7
                              7   .optsdcc -mz80
8
                              8   
9
                              9 ;--------------------------------------------------------
10
                             10 ; Public variables in this module
11
                             11 ;--------------------------------------------------------
12
                             12   .globl _main
13
                             13   .globl _printf
14
                             14 ;--------------------------------------------------------
15
                             15 ; special function registers
16
                             16 ;--------------------------------------------------------
17
                     0010    17 _main_uart_data_1_27  =  0x0010
18
                             18 ;--------------------------------------------------------
19
                             19 ; ram data
20
                             20 ;--------------------------------------------------------
21
                             21   .area _DATA
22
                             22 ;--------------------------------------------------------
23
                             23 ; ram data
24
                             24 ;--------------------------------------------------------
25
                             25   .area _INITIALIZED
26
                             26 ;--------------------------------------------------------
27
                             27 ; absolute external ram data
28
                             28 ;--------------------------------------------------------
29
                             29   .area _DABS (ABS)
30
                             30 ;--------------------------------------------------------
31
                             31 ; global & static initialisations
32
                             32 ;--------------------------------------------------------
33
                             33   .area _HOME
34
                             34   .area _GSINIT
35
                             35   .area _GSFINAL
36
                             36   .area _GSINIT
37
                             37 ;--------------------------------------------------------
38
                             38 ; Home
39
                             39 ;--------------------------------------------------------
40
                             40   .area _HOME
41
                             41   .area _HOME
42
                             42 ;--------------------------------------------------------
43
                             43 ; code
44
                             44 ;--------------------------------------------------------
45
                             45   .area _CODE
46
                             46 ;test.c:4: int main()
47
                             47 ;  ---------------------------------
48
                             48 ; Function main
49
                             49 ; ---------------------------------
50
   0000                      50 _main_start::
51
   0000                      51 _main:
52
                             52 ;test.c:9: i=0;
53
                             53 ;test.c:11: for ( a = 0; a < 10; a++ )
54
   0000 21 00 00      [10]   54   ld  hl,#0x0000
55
   0003 5D            [ 4]   55   ld  e,l
56
   0004 54            [ 4]   56   ld  d,h
57
   0005                      57 00107$:
58
                             58 ;test.c:13: i =i + a;
59
   0005 19            [11]   59   add  hl,de
60
                             60 ;test.c:14: if (i>1000)
61
   0006 3E E8         [ 7]   61   ld  a,#0xE8
62
   0008 BD            [ 4]   62   cp  a, l
63
   0009 3E 03         [ 7]   63   ld  a,#0x03
64
   000B 9C            [ 4]   64   sbc  a, h
65
   000C 30 03         [12]   65   jr  NC,00108$
66
                             66 ;test.c:15: i=0;    
67
   000E 21 00 00      [10]   67   ld  hl,#0x0000
68
   0011                      68 00108$:
69
                             69 ;test.c:11: for ( a = 0; a < 10; a++ )
70
   0011 13            [ 6]   70   inc  de
71
   0012 7B            [ 4]   71   ld  a,e
72
   0013 D6 0A         [ 7]   72   sub  a, #0x0A
73
   0015 7A            [ 4]   73   ld  a,d
74
   0016 DE 00         [ 7]   74   sbc  a, #0x00
75
   0018 38 EB         [12]   75   jr  C,00107$
76
                             76 ;test.c:19: while(--i>0) {
77
   001A 11 0A 00      [10]   77   ld  de,#0x000A
78
   001D                      78 00104$:
79
   001D 1B            [ 6]   79   dec  de
80
   001E 7A            [ 4]   80   ld  a,d
81
   001F B3            [ 4]   81   or  a,e
82
   0020 28 13         [12]   82   jr  Z,00106$
83
                             83 ;test.c:20: a  = uart_data;
84
   0022 DB 10         [11]   84   in  a,(_main_uart_data_1_27)
85
   0024 6F            [ 4]   85   ld  l,a
86
   0025 26 00         [ 7]   86   ld  h,#0x00
87
                             87 ;test.c:21: printf("%c", a);
88
   0027 01r39r00      [10]   88   ld  bc,#___str_0
89
   002A D5            [11]   89   push  de
90
   002B E5            [11]   90   push  hl
91
   002C C5            [11]   91   push  bc
92
   002D CDr00r00      [17]   92   call  _printf
93
   0030 F1            [10]   93   pop  af
94
   0031 F1            [10]   94   pop  af
95
   0032 D1            [10]   95   pop  de
96
   0033 18 E8         [12]   96   jr  00104$
97
   0035                      97 00106$:
98
                             98 ;test.c:24: return 0;
99
   0035 21 00 00      [10]   99   ld  hl,#0x0000
100
   0038 C9            [10]  100   ret
101
   0039                     101 _main_end::
102
   0039                     102 ___str_0:
103
   0039 25 63               103   .ascii "%c"
104
   003B 00                  104   .db 0x00
105
                            105   .area _CODE
106
                            106   .area _INITIALIZER
107
                            107   .area _CABS (ABS)

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Moin,

so das Z80 ist in der Planung fertig. Auf dem Block, für einen sauberen 
Eagle Schaltplan fehlte mir doch der Nerv. Um ein wenig mehr zu haben 
wird noch ein antiker.. abstaub.... ADC 0804 AD/Wandler dran gepappt 
an eine freie decodierte Leitung des I/O Busses. Köstlichkeiten wie den 
12 Bit ADC 84 und DAC 80 von Burr Brown habe ich auch noch, monströse 
schwere Chips in Keramik.

Ich frage mich die ganze Zeit nur, wieso ich nicht noch einen Schritt in 
der Evoluion zurück gehe und zb eine PDP-11 nachbaue? So ein TTl 
Grab.... da sieht man ja fast die Elekronen flitzen, wenn man viele LEDs 
an die Ports klebt :-) Und diese weisse Herdplatte links oben mit den 
beiden Kochfeldern macht auch was her.

Glaube damit kann man auch eine ganze CPU nachbauen, so im Format 
Backblech..... ;-)

Frage: Ich habe mit der seriellen Schnittstelle noch ein Problem. In 
Grant's Plänen http://searle.hostei.com/grant/z80/SimpleZ80.html
benutzt er einen TTL-USB Converter mit CTS/DTR Signal, angesteuert von 
einer 68B50. Keine Z80 SIO. So etwas habe ich nicht gefunden. Diese 
Arduino Cips für 2 Euro fuffzig haben nu RX und TX, was ja auch reicht. 
Mit einem 3,64 Mhz Quartz müssten 56 kBaud erreichbar sein.

Wozu also diese beiden Modem Leitungen?

Gruss,
Christian

von Frank (Gast)


Lesenswert?

Christian J. schrieb:
> Wozu also diese beiden Modem Leitungen?
Um die Übertragung zu bremsen, falls es einer Seite zu schnell gehen 
sollte, was ja bei den alten Schätzchen u.U. häufiger vorkommen dürfte, 
als bei modernen Multicore-Gigahertz-CPUs.

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> der Evoluion zurück gehe und zb eine PDP-11 nachbaue? So ein TTl
> Grab.... da sieht man ja fast die Elekronen flitzen

Wenn du damit das Bild meinst: Das ist ja schon eine neumodische 
VLSI-Version mit einer hochintegrierten CPU in Form ebendieser 
Herdplatte. Bei den vorherigen Typen war nicht nur das Drumrum aus TTLs 
der 74Sxx Serie, aufgebaut sondern auch die CPU selbst: 
http://www.neurotica.com/w/images/7/79/DEC-PDP1170-KB11C-3.jpg
(hier ohne FPU, wie man unschwer erkennen kann).

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


Lesenswert?

Für museumsreife Mikroprozessoren und deren Peripherie ist Kessler immer 
mal einen Blick wert. So findet sich da neben DMA und CTC auch ein PIO, 
allerdings in PLCC44:
http://www.kessler-electronic.de/Halbleiter/integrierte_Schaltkreise/Mikrocontroller/Zilog_Z80_c245.htm

Segor ist als Bezugsquelle verstaubter Hardware auch recht interessant 
und da findet sich auch der normale PIO in DIP40: http://www.segor.de

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

Christian J. schrieb:
> Ich weiss noch damals wie sehr ich mir einen Cross Compiler gewünscht
> habe, so um 1995 herum ..... gab es nicht oder war zu teuer.

TASM gabs aber damals schon lange und war immer sehr preisgünstige 
Shareware. Der konnte (und kann auch heute noch) einen Haufen 
Prozessoren programmieren, wie den Z80, 6502, 6800,MCS-48,MCS-51, 
TMS32020 usw.
Du kannst auch neue Prozessoren definieren - ist eben ein 
Tabellengesteuerter Assembler.
Hier mal ein Beispiel:
http://www.vintagecomputer.net/software/GNICE/TASM/TASMTABS.HTM

Falls du das Binary nicht auftreiben kannst, kann ich dir bestimmt mal 
was zusammensuchen.
Im Anhang ist ein kleines Monitorprogramm in Z80 Assembler, eigentlich 
fur den Toshiba TMPZ84C015 gedacht, der ein komplettes Z80 System mit 
PIO,SIO und CTC beinhaltet - der CEPAC80 von der c't war ein Kleinsystem 
mit diesem Chip.
Der Monitor residiert im Bereich von 0000h-1fffh. Ab 9000 ist ein RAM 
eingeblendet, der optional gepuffert wird und Programme oder Daten hält.
So ein Dings hat jahrelang meinen alten (analogen) Satellitenempfänger 
gesteuert, im RAM waren die Programmspeicher.
Der Monitor kann auch ein IntelHex empfangen und dann ausführen.

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

Hallo,

mit dem TASM habe ich damals einen Stealth Virus für DOS geschrieben, 
der war aber von Borland. War total happy, dass ich den an der Uni 
bekam. Danke erstmal für den Source, werde ich da mal einarbeiten sobald 
das System läuft und ich den Zaks durch habe, denn soooooo einfach ist 
das alles doch nicht. Die Interrupt Struktur des Z(0 ist mir so neu, der 
gibt ja über die PIO ein Register zuück, so dass die IR Quelle 
indentifiziert werden kann. der 6510 hatte nur eine IRQ Quelle, den NMI 
und den INT Pin. Ich finde den ARM7 schon komplex aber da habe ich eine 
astreine IDE von Rowley wo ich alles machen kann icl Singe Step 
Debugging, Test im RAM usw.

CPU aus Gattern aufbauen? Hatten die sonst keine Hobbies? Am 
Zeichenbrett? Ich habe sowas mal gesehen in meiner alten Fima, hoch 
komplexe Schaltpläne mit Tusche auf A2 .... örks

@Matthias: evtl habe ich später nochmal ne Frage, denn mich interessiert 
vom Monitor nur der Intel Hex Upload. Ich werde 8kb ROM einbauen und 
56kb RAM, es wird nur ein Upload Programm geben und den Basic 
Interpreter, sowie ein Memory Dump. Also quasi Auswahl

1) Upload

2) Save

3) Basic

4) Memory Dump

wobei das Save auch nur ein Listen ist, das ich mit dem Terminal wieder 
abspeichern kann.

Gruss,
Christian

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Christian J. schrieb:
> CPU aus Gattern aufbauen? Hatten die sonst keine Hobbies?

http://www.mycpu.eu/

von Erich (Gast)


Lesenswert?

>Die Interrupt Struktur des Z80 ist mir so neu
Diese Aussage zeigt, daß du dich mit dem in deinem Besitz befindlichen 
Z80-System "Microprofessor" niemals (ernsthaft) beschäftigst hast.
Denn dort wird das ausführlich mit funktionsfähigen Beispielen gemacht.
Beitrag "Re: Retro Fieber: Z80 oder 68000 ?"
Gruss

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Erich schrieb:
> Z80-System "Microprofessor" niemals (ernsthaft) beschäftigst hast.

Doch...... so ca 1986 mal und seitdem liegt das Ding in der Kiste und 
wurde nie wieder angeschaut, weil es mir zu blöd ist Asm per Tabelle in 
Hex umzurechnen..... hier noch ein Terminal eines CC85 den ich damals 
für 300 bei Conrad kaufte. RN = Return, BS = Backstep. AD = Adresse, DT 
= Data.
Alles schön in Hex eintippen :-) Machen konnte man mit dem Ding nichts! 
Zumindest nichts sinnvolles. Habe nur noch ein Kassetten Interface dran 
gebaut und einen 8253 Timer und danach die Lust verloren.

Übrigens bin ich gerade DABEI mich damit zu befassen.

Hautpscahe ich verstehe wie die Cortex IRQ Struktur funktioniert, damit 
verdiene ich u.a. nämlich Geld das zu verstehen :-)

von Christian J. (Gast)


Lesenswert?

Joe G. schrieb:
> Christian J. schrieb:
>> CPU aus Gattern aufbauen? Hatten die sonst keine Hobbies?
>
> http://www.mycpu.eu/

Ich habe da mal quer gelesen und mir einige Schaltpläne angeschaut bzw 
Sourcen.

Der Junge ist 32, hat E_technik studiert. Er kennt sich sehr gut damit 
aus wie eine ALU innendrin aufgebaut ist. Hat einen Befehlsdecoder mit 
Microcode realisiert, da der Aufwand das mit Gattern zu machen noch 
deutlich höher ist als 50 TTL Chips. Er wird Tage gebraucht habe die 
Timing Probleme in den Griff zu kriegen. Er hat einen eigenen Assembler 
geschrieben, eigenen Basic Interpreter, ein eigenes DOS, einen TCP IP 
Stack. Er hat eine vermutlich überdurchschnittliche Intelligenz und 
sicher keine Freundin, weil Frauen Zeit beanspruchen, die er nicht hat.

Ich bewundere sowas aber ich habe nie Zeit verschwendet Dinge zu bauen, 
die es schon gibt, sondern das was es gab dazu benutzt etwas Neues 
daraus zu machen.

von Erich (Gast)


Lesenswert?

> Z80-System "Microprofessor"
Ich habe auch so'n Teil, angeschafft 1981/1982, als es aktuell war.
Da ich auch über ein CP/M System verfügte, habe ich die beiden Teile 
über eine am Microprofessor nachgerüstete serielle Schnittstelle 
ergänzt.
Anfangs musste ich noch einen "Urbootloader" täglich inn Ram eintippen. 
Aber kurz später habe ich das Eprom gepatched und musste nur noch 
<Adresse><Go> drücken, damit wartete der Microprofessor auf ein 
ausführbares Programm für seinen Rambereich. Ob ich Intel-Hex benutzte 
oder Binärformat weiss ich jetzt nimmer.
Auf jeden Fall schrieb ich meine Programm für den Microprofessor fortan 
auf dem CP/M System, assembliert mit M80/L80.
Später ergänzte ich den Microprofessor auf seinem Lochrasterfeld mit 
einen Multiplex-Interface für eine Brother-Typenradschreibmaschine, 
deren Tastaturmatrix ich angezapft hatte (denn Schreibmaschinen mit 
Interface waren unbezahlbar). So konnte ich über den Microprofessor als 
Subsystem auch Schönschriften (Briefe etc.) in Wordstar verfasst 
schreiben und ausdrucken.
Texte sauber in Blocksatz geschrieben 
(http://de.wikipedia.org/wiki/Blocksatz), als Student wohlgemerkt, nicht 
nur auf den Epson Matrixdrucker, da staunten manche Leute...
Gruss

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Wie gesagt, irgendwann kommen wir alle wieder bei den Keulen und 
Steinhämmern an ..... wenn ich sowas hier sehe, Transistor für 
Transistor Qualität :-) Und wirklch Geld verdient haben damit nur die 
beiden, zur richtigen zeit am richtigen Ort das Richtige gemacht.

http://www.4004.com/assets/PB120046.JPG

von Christian J. (Gast)


Lesenswert?

Eine kurze Frage:

Die Z80 PIO oder liebr den 8255?

Der 8255 ist einfacher und hat 3 Ports. Die PIO hat alle mögichen 
Funktionenl die wohl mal für Drucker, Centronics, Lochkartenleser usw. 
vorgesehen waren, die aber heute kein Mensch mehr braucht. Leider haben 
beide Chips wohl gemeinsam, dass sich die Ports nur als Ganze auf Out 
oder IN setzen lassen.
Ob man den Interrupt Firlefanz der PIO braucht sei mal dahin gestellt. 
Ich brauche eigentlich nur einen birdiretionalen Port um etwas 
anzuschliessen.

Spricht also was gegen den 8255? Oder für die Z80 PIO?

von Michael_ (Gast)


Lesenswert?

Christian J. schrieb:
> Ich brauche eigentlich nur einen birdiretionalen Port um etwas
> anzuschliessen.

Dann nimm einen bidirektionalen Bustreiber. Dein 8255 hat drei davon 
vereint und werde glücklich.
Für deine einfachen Aufgaben reicht das.
Die Z80-PIO hat jedoch Eigenschaften, welche man in den Ports moderner 
MC wiederfindet.

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Christian J. schrieb:
> Leider haben
> beide Chips wohl gemeinsam, dass sich die Ports nur als Ganze auf Out
> oder IN setzen lassen.

Schon mal einen Blick ins Datenblatt riskiert?

von Soul E. (Gast)


Lesenswert?

Christian J. schrieb:

> Die Z80 PIO oder liebr den 8255?

Nimm das was Du da hast.

> Der 8255 ist einfacher und hat 3 Ports.

Vier. Zwei mit 8 bit und zwei mit 4 bit. Will sagen, Port C ist teilbar. 
Damit kann man den Handshake für die Ports A und B machen, z.B. für zwei 
Druckerports.

> Ob man den Interrupt Firlefanz der PIO braucht sei mal dahin gestellt.

Wenn Du "richtige" Z80-Interrupts haben willst, also mit 255 Vektoren, 
dann brauchst Du den. Der einfache Spring-Nach-0038h (mode 1) geht auch 
so. Oft reicht das -- Motorola hatte ja damals auch nur einen /IRQ mit 
festem Sprungziel.

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


Lesenswert?

Erich schrieb:
>>Die Interrupt Struktur des Z80 ist mir so neu
> Diese Aussage zeigt, daß du dich mit dem in deinem Besitz befindlichen
> Z80-System "Microprofessor" niemals (ernsthaft) beschäftigst hast.

Naja, ich habe damals relativ komplexe Sachen mit dem CEPAC80 gemacht, 
aber heute müsste ich mich da auch wieder einarbeiten, wenn ich das 
wollte.

Christian J. schrieb:
> Die Z80 PIO oder liebr den 8255?
>
> Der 8255 ist einfacher und hat 3 Ports. Die PIO hat alle mögichen
> Funktionenl die wohl mal für Drucker, Centronics, Lochkartenleser usw.
> vorgesehen waren, die aber heute kein Mensch mehr braucht.

Das kann man vorher nicht wissen, die PIO ist halt für die etwas 
merkwürdige INT-Vektor Mimik des Z80 genau massgeschneidert und macht 
einiges automatisch, wozu du beim 8255 etwas Code brauchst. Der o.a. 
Satellitenempfänger hatte so viele Ports, das ich mit externen Latches 
(74373) und Input Ports (74244) nachhelfen musste.
Für 'Pinchange' Interrupts im modernen Sinne gehts ohne PIO nur sehr 
schwer und mit externer Hardware neben dem 8255. Die IR-Fernbedienung 
meines Sat-RX nutzte deswegen die PIO Hardware des TMPZ Chips.

von Peter D. (peda)


Lesenswert?

Christian J. schrieb:
> Leider haben
> beide Chips wohl gemeinsam, dass sich die Ports nur als Ganze auf Out
> oder IN setzen lassen.

Nö.
Z80-PIO:
In Mode 3 kann man die Richtung bitweise festlegen. Und mit einer Maske 
kann man festlegen, welche Pins einen Interrupt auslösen sollen.

von Erich (Gast)


Lesenswert?

>die PIO ist halt für die etwas
>merkwürdige INT-Vektor Mimik des Z80
>genau massgeschneidert

Das ist keine "merkwürdige Mimik",
sondern der anno 1976 von Zilog eingeführt Vector-Interrupt-Mode "IM2".
Hierbei liefern die Peripheriebausteine PIO, CTC oder SIO bei der 
Auslösungen eines INT direkt eine <Lo-Adresse> (die den Bausteinen bei 
ihrer Initialisierung zugewiesen wird).
Zusammen mit der <Hi-Adresse> die im CPU Register "I" initialisiert 
wird, ergibt sich somit eine <16Bit-Adresse> als Zeiger.
Der Zeiger zeigt auf eine Tabelle, unter der die Startadressen der 
jeweiligen Interrupt-Funktionen definiert sind.
Denn man muss wissen: Jeder der Bausteine PIO, CTC, SIO hat mehrere 
Vektoren, kann somit mehrere Interrupt-Funktionen direkt auslösen.
Der CTC (Counter/Timer) hat z.B. 4, je einen eigenen für seine 4 
Timerkanäle. Wird jetzt beispielsweise der Kanal2-INT ausgelöst, so 
"landet" die Programmausführung wenige Takte später direkt in der 
Unterfunktion CTC_INT_CH2. Ohne daß irgendwo noch umständlich abgefragt 
werden muss, welcher Baustein oder welcher Unterkanal des Bausteins den 
INT ausgelöste hat.
Die SIO (serieller Baustein) hat noch mehr Vektoren (8); sie 
unterscheidet zwischen ihren beiden Channels A/B sowie direkt zwischen 
Rx und Tx sowie Rx error und Tx error.
Ein fast geniale Struktur, die andere Hersteller (bis heute) nicht 
verstanden haben.

Konkretes gut erklärtes Beispiel mit Sourcecodelisting findet sich in 
der Datei  MPF-1_experimentManual.pdf (Link über 
http://electrickery.xs4all.nl/comp/mpf1/doc/index.html). Dort 
"Experiment 15" ab Seite 103 (109/152 der PDF).

Gruss

von Peter D. (peda)


Lesenswert?

Erich schrieb:
> Ein fast geniale Struktur, die andere Hersteller (bis heute) nicht
> verstanden haben.

Ja, man spart viel Zeit, da man nicht erst umständlich ermitteln muß, 
wer den Interrupt auslöste.
Daher bin ich auch nie mit dem PIC warm geworden.
Ich fands ja schon nervig, daß sich beim 8051 UART Senden und Empfang 
einen Vektor teilen mußten.

von m.n. (Gast)


Lesenswert?

Erich schrieb:
> Die SIO (serieller Baustein) hat noch mehr Vektoren (8); sie
> unterscheidet zwischen ihren beiden Channels A/B sowie direkt zwischen
> Rx und Tx sowie Rx error und Tx error.
> Ein fast geniale Struktur, die andere Hersteller (bis heute) nicht
> verstanden haben.

Was Du schreibst, ist mehr als gewagt!
Einerseits muß ich schmunzeln, andererseits aber auch dieser Aussage 
widersprechen. Als Beispiel nenne ich den RX62; die 
Interrupt-Vektor-Tabelle zeigt die Details.

von Holm T. (Gast)


Lesenswert?

@m.n: Du vergleichst jetzt nicht wirklich einen aktuellen Renesas 
Controller mit dem Z80 System von 1976 und stellst die auf eine Stufe?

@Christian:

Ich sags nochmal: Einfacher ist der 8255 nicht. Der wird sogar richtig 
lustig wenn Du die Betriebsarten zur laufzeit ändern willst. Das Ding 
ist voll von Glitches und kann eine büchse der Pandora sein wenn es 
drauf an kommt.

Zilog hat sich beim PIO schon ziemlich viel gedacht, das IM2 
Vektorsystem ist genial, auch wenn es an der Signallaufzeit der 
Prioritätskette seine Grenzen findet. Das Teil ist auch nicht 
kompliziert zu programmieren, hast Du schon mal ins Datenblatt geguckt? 
Für den Z80 Kram gibts gute deutsche Beschreibungen, suche ggf. 
einfach nach einem Datenblatt vom U855, der DDR Variante des PIOs.
Man sollte aber auch das Interruptsystem im Interruptmode 2 verstanden 
haben, bzw. verstanden haben wollen ehe man das irgendwie abtut.

>Der 8255 ist einfacher und hat 3 Ports. Die PIO hat alle mögichen
>Funktionenl die wohl mal für Drucker, Centronics, Lochkartenleser usw.
>vorgesehen waren, die aber heute kein Mensch mehr braucht.

Du bist eine Pappnase. Ich würde einiges darum geben einen Controller zu 
haben dessen Inputports ein komplettes Datenwort über ein Strobesignal
latchen können. Diese Funktionalität braucht wohl heute kein Mensch 
mehr.. außer mir.
Heute löst man einen Interrupt aus und liest per Software den Port ein, 
Scheiße nur wenn das viel zu lange dauert. Umgekehrt das Selbe, ein 
OutputRegister mit einer Variable vorladen und mit einem Enable Signal 
von hochohmig auf Ausgabe schalten... geht heute nicht mehr, also löte 
ich zusätzliche Three-State Driver / Latch  ein.
(Ok, die Anwendung eines Controllers als intelligentes Interface an 
einem Rechnerbus eines alten Computers ist heute obskur, das ändert aber 
nichts daran, das diese Funktionalität meistens fehlt. Der Olle 8042 
Tastaturcontroller aka UPI konnte genau das, die PIO kann es auch)

Nimm den Mund nicht so voll bei Sachen die du nie verstanden hast. Das 
war früher schon eines Deiner Probleme :-)

Zum Deinem Amp: Röhren sind nicht wegen ihrer schlechten elektrischen 
Eigenschaften abgeschafft worden sondern wegen ihrer Baugröße und des 
Energeiverbrauches. Es wundert mich deshalb überhaupt nicht, wenn Dein 
12 Jahre alter EL84 Amp immer noch zur Zufriedenheit tut.

"...Kannst du mir das Radio reaprieren? Ist bestimmt nur eine Röhre.." 
Nein, es ist nahezu nie eine Röhre die den Geist aufgegeben hat, sondern 
andere Dinge wie Koppelkondensatoren..

Gruß,

Holm

von m.n. (Gast)


Lesenswert?

Holm Tiffe schrieb:
> @m.n: Du vergleichst jetzt nicht wirklich einen aktuellen Renesas
> Controller mit dem Z80 System von 1976 und stellst die auf eine Stufe?

Auf die Gefahr hin, dass Du auch mich als Pappnase beschimpfst oder den 
Mund verbieten willst, wiederhole ich Erichs Kernaussage:

Erich schrieb:
> Ein fast geniale Struktur, die andere Hersteller (bis heute) nicht
> verstanden haben.

Damit wird dem Z80 ein (bis heute) unerreichtes Alleinstellungmerkmal 
angedichtet; das geht mir einfach gegen den Strich!

Allerdings sehe ich auch, dass zum Beispiel die STM32F4xx immer noch 
viele Interrupts über einen einzigen Vektor abhandeln und man alle 
relevanten Statusbits in der ISR 'abklappern' muß.
Das geht mir auch gegen den Strich :-)

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


Lesenswert?

m.n. schrieb:
> Holm Tiffe schrieb:
>> @m.n: Du vergleichst jetzt nicht wirklich einen aktuellen Renesas
>> Controller mit dem Z80 System von 1976 und stellst die auf eine Stufe?
>
> Auf die Gefahr hin, dass Du auch mich als Pappnase beschimpfst oder den
> Mund verbieten willst, wiederhole ich Erichs Kernaussage:
>
> Erich schrieb:
>> Ein fast geniale Struktur, die andere Hersteller (bis heute) nicht
>> verstanden haben.
>
> Damit wird dem Z80 ein (bis heute) unerreichtes Alleinstellungmerkmal
> angedichtet; das geht mir einfach gegen den Strich!

Er hat trotzdem recht. Es ist nämlich vergleichsweise simpel, die 
diversen on-Chip Interruptquellen eines µC auf verschiedene Vektoren zu 
legen. Schließlich ist deren Zahl ja bekannt.

Das Z80 System beherrschte das aber für eine fast beliebige Anzahl an 
IO-Bausteinen und mit einer variablen Anzahl Vektoren pro Baustein.


XL

von (prx) A. K. (prx)


Lesenswert?

m.n. schrieb:
>> Ein fast geniale Struktur, die andere Hersteller (bis heute) nicht
>> verstanden haben.
>
> Was Du schreibst, ist mehr als gewagt!

Insbesondere Hersteller, die in ihre Mikroprozessorentwicklung Erfahrung 
mit Minicomputern einfliessen liessen, hatten deutlich besser 
entwickelte Interrupt-Systeme, als die meisten 8-Bitter von Haus an Bord 
hatten. TI hatte den TMS9900 von der 990 Familie abgeleitet, war damit 
vor Zilog auf dem Markt und bot 16 Interrupts mit jeweils eigenem 
Registersatz für Kontextswitch (eigentlich wars RAM). National 
Semiconductor hatte kurz nach Intel 8080 mit der aus den Data General 
Novas abgeleiteten PACE Familie immerhin 5 Interrupts.

Intels 8080 war ohnehin eher ein Bausatz als ein Single-Chip 
Mikroprozessor. Eigentlich ein 3-Chip Prozessor, denn ohne speziellem 
Taktgenerator und Buscontroller ging wenig. Mit dem für bessere 
Interrupts notwendigen Interruptcontroller waren es dann 4. Aber 
immerhin - Interrupts mit Prioritäten und getrennten Vektoren waren 
möglich. Der im PC auch heute noch schlummernde 8259 geht darauf zurück.

Das besondere am Interrupt-System der Z80 war der ziemlich geringe 
Aufwand an Pins und externer Beschaltung, so lange nur wenige Bausteine 
benötigt wurden und die daisy chain dementsprechend kurz war. Für 
Integration von Fremdperipherie in dieses IM2 Verfahren musste man dann 
eben den PIO als Interruptcontroller verwenden.

: Bearbeitet durch User
von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

na, jetzt gehen die Glaubenskriege aber los :-) Dass der 8255 Glitches 
hat war schon damals bekannt aber idr stellt man ihn einmal ein und 
damit hat es sich. Oder man stellt ihn um und wartet bis er fertig ist.
Er ist schon einfacher, da er nicht so viel Innenleben hat. Sa mir doch 
mal wofür ich bei einem Bastelcomputer ein  Bit Datenwort per Latch und 
Srobe übergeben muss? Maximal werded ich damit eine Bitbang SpI 
realisieren, die ein Arduino Display füttert.

Und heutige Controller haben eben eine andre IRQ Struktur, die meisten 
eben Pins, die sich als IQ Quelle schalten lassen und dann weiss man 
woher er kommt. Der Z80 und Peropherie wurden aufenander abgestimmt als 
es noch für alles einen Baustein gab. Heute hast du alles in einem und 
jede Menge interne IQ Flags. die du auswerten kannst. Allein der ARM7 
hat einen ganzen Korb voll, glaube es sind viele Dutzend.

Aber es wächst, heute kam wieer der Postbote mit einer Hand voller Tüten 
an ...

Einen Baustein für die CPU,
einen Baustein für den Parallelport
einen Baustein für das ROM
einen Baustein für das RAM
einen Baustein für die UART,
einen Baustein für die Timer,
einen Löffel für Papa und einen für die Mama :-)

Wahnsinn, das hat man alles auf einen Attiny drauf und der ist noch 10 
Mal schneller.

Wieso nehme ich nicht gleich einen AVR? Bin ich denn gaga? ..... jetzt 
fehlt nur noch das passende T-Shirt dazu örks

>>Das besondere am Interrupt-System der Z80 war der ziemlich geringe
>>Aufwand an Pins

Wie bitte? Man braucht 8 Datenleitungen, 4 Steuerleitungen, 3 
Adressleitungen ..... das ginge doch auch alles Seriell mit I2c.

Mfg
Chris

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

So wird es werden, nur mal gesteckt. unten drunter Fädelkämme, daher die 
großen Abstände zwischen den Chips. Die I/O leiste kommt rechts neben 
den 8255 (oder Z80 PIO), dann ist noch ein Z80 CTC drauf (kein 8253 :-) 
und der 60B84 als Uart - Z80 SIO ist mir zu voll geladen -aber die habe 
ich in China bestellt und dauert noch.

>> ein OutputRegister mit einer Variable vorladen und mit einem Enable >> Signal 
von hochohmig auf Ausgabe schalten

Was geht nicht mehr ?????

Wo ist das problem? Beim ARM7TDMI hast du Unterschiedliche register für 
Ein und Ausgabe. Du lädt die Ausgabe ins Output vor aber stellst den 
Port auf Input ein, damit wird er Tri-state. Dann geht das was dran ist 
ins Leseregister. Schaltest du die Datenrichtung um mit FIOSEL glaube 
ich geht das was im Output steht direkt auf den Port. Der ARM ist einer 
der genialsten Maschinen überhaupt, auch wenn man Romane schreiben muss, 
um nur die Clocks über die PLL einzustellen und die Teiler richtig zu 
berechnen. Da ist alles drin aber eben "unverdrahtet", die Drähte in 
Form von Code muss man selbst legen.

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Beim ARM7TDMI hast du Unterschiedliche register für
> Ein und Ausgabe.

Der ARM7TDMI ist ein Prozessorkern. Der hat keinerlei 
Ein/Ausgaberegister. Das ist Sache jenes Herstellers, der den Kern 
zusammen mit allerlei Peripherie zu einem LPC2000, STM7, ... 
zusammenklebt. Und je nach Genialität dieses Herstellers kommt da eine 
mehr oder auch weniger gute Lösung für I/O-Pins raus.

Mit den Interrupts ist das ähnlich. Die ADuC7000 Serie darf man in 
dieser Hinsicht wohl als eher vorsintflutlich betrachten.

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

Hallo,

> Wenn Du "richtige" Z80-Interrupts haben willst, also mit 255 Vektoren,
> dann brauchst Du den.

Es gibt nur 127 Vektoren, weil die auf geraden Adressen liegen müssen 
(das unterste, von der Peripherie gelieferte Bit muss null sein).

> Für Integration von Fremdperipherie in dieses IM2 Verfahren musste man
> dann eben den PIO als Interruptcontroller verwenden.

Oder man baut sich einen IM2-Controller mit 8 Interrupts aus einem '148 
(Encoder) und einem '541 (für den Vektor) zusammen. Allerdings muss die 
Hardware dann den Interrupt so lange aktiv halten, bis er verarbeitet 
wurde. Das geht aber auch hinter der Daisy-Chain noch.

> Ich würde einiges darum geben einen Controller zu haben dessen
> Inputports ein komplettes Datenwort über ein Strobesignal latchen
> können.

Schau' dich mal bei den kleinen PICs um, die können das wohl. Mein AVR 
lässt, weil er genau das nicht kann, den Z80 per Extra-Gatter so lange 
Waitstates drehen (und dreht ihm danach auch noch den Bus ab), bis er in 
aller Ruhe analysiert hat, was ich gerade von ihm will.

> Sa mir doch mal wofür ich bei einem Bastelcomputer ein  Bit Datenwort
> per Latch und Srobe übergeben muss? Maximal werded ich damit eine
> Bitbang SpI realisieren, die ein Arduino Display füttert.

Für IDE brauchst du einen 16 Bit breiten Datenbus (Ausnahme: antike 
Festplatten, CF-Karten im IDE-Modus oder 50% Platzverschwendung). Das 
gemeinsam latchen zu können, ist schon hilfreich.

> Und heutige Controller haben eben eine andre IRQ Struktur, die meisten
> eben Pins, die sich als IQ Quelle schalten lassen und dann weiss man
> woher er kommt.

Das ist genau dann besonders sinnvoll, wenn es um die 
Controller-internen Einheiten geht. ;-)

> Wieso nehme ich nicht gleich einen AVR? Bin ich denn gaga?

Offensichtlich. ;-)
Aber AVR kann ja jeder.

>>>Das besondere am Interrupt-System der Z80 war der ziemlich geringe
>>>Aufwand an Pins
>
> Wie bitte? Man braucht 8 Datenleitungen, 4 Steuerleitungen, 3
> Adressleitungen ..... das ginge doch auch alles Seriell mit I2c.

Eigentlich reichen, um IRQs zu verarbeiten, 2 Steuerleitungen (/M1 und 
/IORQ) und ausreichend (max. 7) Datenleitungen aus.

Gruß,
Svenska

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe einen recht guten Plan gefunden, den ich hier mal anhänge. Vor 
allem die Decodierung gefällt mir besser als diese Gattergräber. Da ich 
für die Uart einen 6850 benutze und einen CTC Timer denke ich mal, dass 
es ein Problem werden könnte beide Bausteine an den INT Pin zu hängen. 
Der Z80 erwartet ja diese Kette. Andererseits wäre es denkbar, dass der 
6850 mit seinem INT Pin an den INT Eingang des CTC geht und der CTC 
wiederum an den Z80. Ich will auf jeden Fall den Timer Baustein 
benutzen, um zb Anzeigen anzusteuern.

von Christian J. (Gast)


Lesenswert?

Es ist zum Heulen!

Wenn ich den Z80 CTC Timer verwenden will, muss der an den INT Pin der 
CPU dran, da die Timer ja INTs auslösen sollen, um zeitgesteuerte 
Aufgaben zu erledigen. Timer will ich haben, basta!

Aber ich brauche auch die INTs der seriellen Schnittstelle und da sitzt 
eben ein einfacher 28poliger 6850 dran, der auch von seiner Größe auf 
die Eurokarte passt. Die Z80 SIO ist ein 40 pinniger Trümmer und ich 
brauche grad mal 4 Leitungen nach außen: TX,RX,CTS,RTS. Und die SIO ist 
recht komplex, ich müsste die Routinen selbst schreiben um mit dem PC in 
einem Terminal zu kommunizieren. Es gäbe keine Möglichkeit die INTs des 
CTC und die des 6850 (Zeichen ist da) der CPU mitzuteilen, da die dann 
nicht weiss woher der INT gekommen ist. Denkbar wäre den CTC an die CPU 
zu pappen über den INTOUT Pin und am INT_IN den 6850 dran zu hängen, der 
aber nicht die Fähigkeit hat einen Vektor auf den Bus zu legen.

Andere Alternative: Das Minimalsystem auf einer Eurokarte aufbauen

CPU, RAM, ROM, Glue Logic, Decoder + Z80 SIO zum PC Interface

und einen kompletten Bus mit Decodierungsleitungen (sagen wir mal 4 
Stück) nach außen zu legen (bewahre mich vor dem Verdrahten) an den dann 
eine weitere Eurokarte anzuschliessen, wo nur Peripherie drauf ist.

Falls jemand einen Schaltplan hat, wo wirklich alles drauf ist immer her 
damit!

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


Lesenswert?

Christian J. schrieb:
>>>Das besondere am Interrupt-System der Z80 war der ziemlich geringe
>>>Aufwand an Pins
>
> Wie bitte? Man braucht 8 Datenleitungen, 4 Steuerleitungen, 3
> Adressleitungen

Klar. Aber die brauchte man doch sowieso. Stichwort Bus. Aber im 
Gegensatz zum z.B. IBM-PC kam ein Z80 System mit einer einzelnen /INT 
Leitung aus - für bis zu 128 Interruptquellen. Der PC mit seinem PIC 
(Programmable Interrupt Controller) hat statt dessen eine handvoll 
separater Leitungen, die man erst wieder manuell jumpern muß um seine 
Interruptquellen auf Vektoren zu verteilen. Eine Krücke halt. Wie so 
vieles beim PC.

S. R. schrieb:
>> Ich würde einiges darum geben einen Controller zu haben dessen
>> Inputports ein komplettes Datenwort über ein Strobesignal latchen
>> können.
>
> Schau' dich mal bei den kleinen PICs um, die können das wohl.

Bäh. PICs (vor allem die kleinen) sind doof und riechen nach Lulu. Oder 
anders gesagt: vom Regen in die Traufe. Dann nehme ich doch wirklich 
lieber ein separates Latch in Hardware.


XL

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


Lesenswert?

Christian J. schrieb:
> Es ist zum Heulen!
>
> Wenn ich den Z80 CTC Timer verwenden will, muss der an den INT Pin der
> CPU dran, da die Timer ja INTs auslösen sollen, um zeitgesteuerte
> Aufgaben zu erledigen. Timer will ich haben, basta!
>
> Aber ich brauche auch die INTs der seriellen Schnittstelle und da sitzt
> eben ein einfacher 28poliger 6850 dran

Einmal darfst du raten, warum dir hier immer wieder eine Z80 SIO ans 
Herz gelegt wurde. Wer nicht hören will ...

Wenn du eine PIO verbaut hast und da noch Pins frei sind: führe den INT 
des 6850 an die PIO und laß die PIO stellvertretend einen "richtigen" 
Interrupt auslösen.


XL

von Helmut S. (helmuts)


Lesenswert?

Das Verheiraten von Z80 oder 8080 Bausteinen mit 68xx Bauteilen war ja 
früher schon fast so eine Sünde wie wenn ein Katholischer eine 
Evangelische (oder umgekehrt) geheiratet hat. Das Businterface beider 
Bausteinfamilien passt einfach schlecht zusammen.

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Axel Schwenke schrieb:
> Einmal darfst du raten, warum dir hier immer wieder eine Z80 SIO ans
> Herz gelegt wurde. Wer nicht hören will ...

Sei mir nicht böse aber ich finde die SIO komplett unverständlich. 
Dagegen habe ich die vom LPC21xx noch ruck zuck kapiert und hatte auch 
schnell lauffähigen Code. Hasst du ne Ahnung wie das ist Routinen blind 
auszuprobieren wenn man "nichts sieht" weil kein Debugger da ist und 
eine nette printf(stdout,"Variable a =...%d",a) Funktion? Und das ist 
nicht nur meine Meinung denn die fand ich im Netz öfter, daher nimmt sie 
auch fast keiner, der ein Z80 System gebaut hat. Selbst der N8VM Rechner 
nimmt eine 8251 oder 16C550 Uart.

http://www.izabella.me.uk/html/z80_sio_programming_hints.html

The programming complexities of large scale integration components are 
usually directly proportional to the facilities and versatility of the 
device.In the case of the Z80SIO, it will probably take some time even 
for even the more experienced programmer to work out how to make it 
perform even the most rudimentary tasks. To the beginner at 
microprocessor programming, it is possible that the bewildering array of 
registers will cause a total confusion unless a logical approach is 
taken from the start.

6850 an PIO:

Ok, die Idee hatte ich auch schon. Frage: Welcher INT Mode? 2 sicherlich 
denke ich mal. Und wohin springt die CPU, wenn der 6850 einen INT 
auslöst und keine Low Adresse auf dem Bus liegt? Ich erinnere mich 
schwach, dass auch M1 mit der SIO verdrahtet werden muss, hier im Plan 
verbindet er M1 mit dem CS0 des 6850.

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Ok, die Idee hatte ich auch schon. Frage: Welcher INT Mode? 2 sicherlich
> denke ich mal.

In dieser Schaltung IM1. IM0 und IM2 führen im IACK-Zyklus Code- bzw. 
Vektorzugriffe durch, die hier in den Wald laufen.

> Und wohin springt die CPU, wenn der 6850 einen INT
> auslöst und keine Low Adresse auf dem Bus liegt?

Oeben.

> Ich erinnere mich
> schwach, dass auch M1 mit der SIO verdrahtet werden muss, hier im Plan
> verbindet er M1 mit dem CS0 des 6850.

Damit wird verhindert, dass der 6850 IACK-Zyklen als Zugriff auf seine 
Steuerregister interpretiert. In denen ist M1=0, CS0 muss aber 1 sein.

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> nicht nur meine Meinung denn die fand ich im Netz öfter, daher nimmt sie
> auch fast keiner, der ein Z80 System gebaut hat.

Interessanter Ansatz. Ich kann ja verstehen, wenn jemand den 6850 
verwendet, weil der weniger Pins braucht. Aber dass Leute ihn verwenden, 
weil sie vom Z80-SIO überfordert sind, das habe ich noch nicht erlebt.

Jedenfalls sind mir Z80-SIOs oft begegnet, hab ihn auch selber schon 
verwendet, auch den neueren komplexeren Z8530 (an 68000). Z80 mit 6850 
hingegen sah ich hier zum ersten Mal. Also das mit dem "fast keiner" ist 
eine reichlich gewagte Aussage.

Meine Erfahrungen mit diesen Teilen stammen freilich aus der Zeit, als 
die aktuell waren. Für die heutige Retro-Generation mag sich das 
vielleicht anders darstellen. ;-)

> nimmt eine 8251 oder 16C550 Uart.

Als der 16C550 auf den Markt kam war die Z80 schon steinalt.

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


Lesenswert?

Helmut S. schrieb:
> Das Verheiraten von Z80 oder 8080 Bausteinen mit 68xx Bauteilen war ja
> früher schon fast so eine Sünde

Ging auch nicht immer. Etliche 65xx/68xx Bausteine verwendeten E nicht 
nur als Strobe für den Buszyklus, sondern auch als Takt für diverse 
Timer. Abgeleitet aus RD/WR war das nicht eben hilfreich. Zudem passte 
das Timing einer 4MHz Z80 nicht zu den gebräuchlichen 1MHz 65xx/68xx 
Bausteinen.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Wenn Du Platz sparen möchtest, vielleicht gefällt Dir ja anstatt des 
6850 ein SCC2691: 24-pol. schmales DIL-Gehäuse
Und wenn Du noch viel Platz frei hast, ich hätte noch einen INS8154 :-)

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> hier im Plan verbindet er M1 mit dem CS0 des 6850.

Formal betrachtet ist 68xx Peripherie an Z80 nicht so einfach, wie hier 
in der Schaltung gezeigt. Denn beim 68B50 muss R/W mindestens 40ns for E 
anliegen. Das ist in dieser Schaltung mit E aus IORQ nicht 
gewährleistet. Und in einer anderen Variante, in der E aus RD+WR 
abgeleitet wird, natürlich ebenso wenig.

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


Lesenswert?

m.n. schrieb:
> Wenn Du Platz sparen möchtest, vielleicht gefällt Dir ja anstatt des
> 6850 ein SCC2691: 24-pol. schmales DIL-Gehäuse

Wie wärs mit 18 Pins? Damit kommt der TMS9902 aus.

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


Lesenswert?

Warum nimmste nicht den NMI für deinen 6850 (ein 6551 hätte es ja schon 
sein können :-P )?

von Peter D. (peda)


Lesenswert?

Christian J. schrieb:
> Sei mir nicht böse aber ich finde die SIO komplett unverständlich.

Erzähl mal noch einen vom Pferd, was soll an nur 8+3 Registern 
kompliziert sein.
Die SIO braucht allerdings noch nen CTC für die Baudrate.

Christian J. schrieb:
> Hasst du ne Ahnung wie das ist Routinen blind
> auszuprobieren wenn man "nichts sieht"

Ach komm, ein SW-putchar ist ruckzuck mit nem PIO-Pin und Delay zusammen 
gebastelt.

von Peter D. (peda)


Lesenswert?

Ich hatte mal einen Z80 vectored Interrupt-Controller mit einem CPLD 
ATF750 geschrieben.
Er hat 8 Interrupteingänge und erzeugt eine 3-Bit Vektor, die restlichen 
5 Bits macht man mit einem Tristate-Buffer.
Die Eingänge können einzeln enabled werden. 2 Eingänge sind 
flankengetriggert und 6 levelgetriggert.

von Erich (Gast)


Lesenswert?

Hier stellt sich langsam nochmals die Sinnfrage dieses Projekts.
Geht es um Bastelspass? Was für SW soll darauf laufen? Was sollen die 
I/O tun können? Irgendein Zusammenhang oder Erweiterbarkeit Richtung 
CP/M?
Generell ist wenig zielführend, den DIP-40 Z80 mit artfremden 
Peripheriebausteinen aus anderen Herstellerfamilien verheiraten zu 
wollen. Das Resultat wird nur ein Gemenge an Inkompatibilität.
CPU, PIO, SIO, CTC. Fehlt noch der Taktgenerator. Dann sind wir gleich 
beim TMPZ84C015 (ursprünglich Toshiba). Alles drin. Voll kompatibel. 
Cmos.
Damit war auch meine letzte "Z80" Platine (ein Industriegerät, 
Serienprodukt) ausgestattet, Baujahr war irgendwann Anfang-Mitte 1990 
Jahre. Mit Flashspeicher Amd29f010, mit 128 kByte Ram, MMU und weitere 
Spezialperipherie für die Anwendung. Fast alles Smd. Mit Bootloader über 
RS232, Applikationssoftware im Feld updatebar ohne Eprom-Wechsel (neu 
damals).
Eine einfache Platine mit dem TMPZ84C015 ist als "Z80mini3" bekannt, 
siehe http://www.mct.net/product/z80mini3.html bzw. 
http://elmicro.com/de/z80mini3.html

Gruss

von m.n. (Gast)


Lesenswert?

Erich schrieb:
> Hier stellt sich langsam nochmals die Sinnfrage dieses Projekts.
> Geht es um Bastelspass? Was für SW soll darauf laufen? Was sollen die
> I/O tun können? Irgendein Zusammenhang oder Erweiterbarkeit Richtung
> CP/M?

Wie in der Überschrift steht, handelt es sich um ein Retro-Fieber, 
dessen Verlauf schlecht vorherzusehen ist. Ich gehe allerdings davon 
aus, dass sich einige Viren so verzetteln, dass es zu einer 
Spontanheilung kommt.

Sofern man selber nicht infiziert ist, kann man sich zurücklehnen und an 
die schönen, alten Zeiten denken, wo man die Bits noch in die Hand 
nehmen und auf Magnetband abspeichern konnte :-)

Erich schrieb:
> Dann sind wir gleich
> beim TMPZ84C015 (ursprünglich Toshiba). Alles drin. Voll kompatibel.

Da könnte man jetzt den 68000 ins Spiel bringen; falls ihn jemand 
braucht, den TMP68301 hätte ich noch im Angebot.

von Georg G. (df2au)


Lesenswert?

m.n. schrieb:
> die schönen, alten Zeiten denken, wo man die Bits noch in die Hand
> nehmen und auf Magnetband abspeichern konnte :-)

Neumodischer Kram! Ich habe mit 5 Kanal Lochstreifen und einer Zuse 
angefangen. DAS waren noch Zeiten.

> Da könnte man jetzt den 68000 ins Spiel bringen; falls ihn jemand
> braucht, den TMP68301 hätte ich noch im Angebot.

Ich biete einen National NSC600 "Scamp" mit Eprom 5204 (512 Bytes, 
Vorsicht, Programmierspannung 50V).

von m.n. (Gast)


Lesenswert?

Georg G. schrieb:
> Ich biete einen National NSC600 "Scamp"

Für den ist doch der INS8154 doch (wie) geschaffen.

von Georg G. (df2au)


Lesenswert?

m.n. schrieb:
> Für den ist doch der INS8154 doch (wie) geschaffen.

Möchtest du einen haben? Liegt hier noch in der Restekiste. Auch RAMs 
mit 256*4 Organisation sind noch da.

von Christian J. (Gast)


Lesenswert?

Hallo,

wie ich sehe drehe ich mich im Kreis, zumindest was meine Lösung angeht, 
bei der etwas mehr drauf sein soll als nur Minimal. Beim 8085 damals war 
das deutlich einfacher, ok da habe ich auch nur 80xx verwendet.

Ich mag die Z80 SIO nicht, iel zu gross für das wenige was sie leisten 
soll. Woebi ich nach einmal drüber schlafen jetzt soweit bin, dass ich 
dem 6850 die INT Leitung abklemmen werde und etl Polling benutzen werde, 
da er sowieso nix zu tun hat solange er auf was wartet.

Ziel soll einfach nur sein etwas damit zu spielen, vielleicht ein Basic 
Programm zu schreiben, eine 7-Segment Anzeige dran zu bauen, Teperazuren 
anzuzeigen usw. Mehr nicht. Und da ich mir den "Kult Z80" mal antun 
wollte versuche ich es eben. Nen Arduinoi ans Rennen zu kriegen ist zu 
langweilig, da funktioniert ja eben alles sofort.

von Georg G. (df2au)


Lesenswert?

Christian J. schrieb:
> Arduinoi ans Rennen zu kriegen ist zu
> langweilig, da funktioniert ja eben alles sofort.

Wie meinen Euer Ehren? Letztlich mal hier im Forum gelesen? Mein 
Eindruck ist eher das Gegenteil. Das kann aber auch an der Zielgruppe 
liegen :-)

von Christian J. (Gast)


Lesenswert?

Georg G. schrieb:
> Wie meinen Euer Ehren? Letztlich mal hier im Forum gelesen? Mein
> Eindruck ist eher das Gegenteil. Das kann aber auch an der Zielgruppe
> liegen :-)

Wie man es sieht. Wenn man wie ich im Innenleben der IDE rumfummelt, 
neue CPUs einbindet und Libs ändert kann es schon kompliziert werden. 
Vor allem wenn man nicht weiss wie die IDE drin genau arbeitet. Denn 
diese setup-loop Konstruktion kommt ja nicht irgendwo her. Außerdem 
weren da Sachen eingebunden die man nicht sieht, die man aber bemekert 
wenn man den Weg verlässt nur die Standafunktionen zu benutzten, zb mal 
den Timer 0 mit Low Level Code ändert. Dann klappt ganz schnell nix mehr 
:-)

von Holm T. (Gast)


Lesenswert?

Christian J. schrieb:
> Es ist zum Heulen!
[..]
>
> Falls jemand einen Schaltplan hat, wo wirklich alles drauf ist immer her
> damit!

Da Du immer hinterher fragst brauchst du Dich über Deine Effekte nicht 
wundern, Du baust simpel Scheiß. Du bist derartig clever das Du wieder 
über Deine Füße stolperst.

Wenn Du erst gefragt und dann kaufen gegangen wärest, hätte ich Dich auf 
dieses Ding aufmerksam gemacht:

http://www.wfms.org/sb180/z180-prelim.pdf

Das Ding ist schon lange nicht mehr preliminary, falls die Frage kommt, 
der Link auf das PDF war nur günstig.
Ich habe so ein Teil hier als 25Mhz Version (IMHO) bei den 
spezifizierten 33Mhz dürfte sich Deine Aussage "AVR 10x schneller" auch 
in heißen Dunst auflösen. Im PLCC68 Gehäuse gut für Lochraster geeignet. 
Du aber kaufst lieber nicht passende Peripherie ICs und wunderst dic das 
Käse dabei raus kommt.

Zum CTC: Hänge den Interrupt ausgang Deiner blöden Sio an CLK/TRG3 vom 
CTC, programmiere den CTC Kanal 3 als Counter mit der preloaded Value 
von 1, nach H-L auf CLK/TRG3 löst der Kanal dann einen Interrupt aus und 
der Kanal kann einen Interrupt mit Vector generieren.

>Sei mir nicht böse aber ich finde die SIO komplett unverständlich.
>Dagegen habe ich die vom LPC21xx noch ruck zuck kapiert und hatte auch
>schnell lauffähigen Code.

Ach? Christian bei "aller Liebe", das haben Tausende von Ossis schon vor 
Jahrzehnten kapiert...

Es gibt Bücher mit fertigen Routinen in Assembler, ebi normaler Async 
Kommunikation ist die SIO doch easy. Ok, die meisten Uarts in den MCUs 
heute sind primitiver da der ganze SDLC/HDLC Kram einfach nicht 
enthalten ist. Diese Version gibts aucher auch als Z80-DART.



Gruß,

Holm

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

Aber zum Vergleich mal die beiden Bastelprojekte: Links die Z80 Sache, 
rechts ein Arduino System mit Atmega. Glaubt jemand im Ernst er könnte 
eine grafische Anzeige auf dem Z80 für das Nokia 5110 in nur einem 
halben Tag mit Verdrahtung ans Laufen kriegen? Er würde sich die Füsse 
brechen die PIO zu programmieren, dann noch das Datenblatt des 5110 
studieren müssen für den Treiber, dann noch Grafikfunktionen 
programmieren usw. usw. Früher waren Ingenieure die "Masters of 
Computer", heute machen das 14-jährige im Workshop an der Schule ...

von Christian J. (Gast)


Lesenswert?

Holm Tiffe schrieb:

> Da Du immer hinterher fragst brauchst du Dich über Deine Effekte nicht
> wundern, Du baust simpel Scheiß. Du bist derartig clever das Du wieder
> über Deine Füße stolperst.
>
> Wenn Du erst gefragt und dann kaufen gegangen wärest, hätte ich Dich auf
> dieses Ding aufmerksam gemacht:
>
> http://www.wfms.org/sb180/z180-prelim.pdf

Also Holm....... ich frage nach einem Käfer und du kommst mit einem 
Panzer daher, für den es NICHTS irgendwo gibt. Google mal nach dieser 
CPU, die wird wohl nur in irgendwelchen Aktenschänken ihr Dasein 
vergammeln. Ich hoffe dieser thread wird einigen,die ähnlihes vorhaben 
bewusst mache vor welche Hürden man gestellt wird, wenn man alte Technik 
wieder beleben will.

Und diese Vergewaltigung der CTC werde ich nicht machen ..... baue jetzt 
die SIO rein, dahinter einen USB Konverter, der ausnahmsweise auch 
RTC/CTS hat und fertig.

von Peter D. (peda)


Lesenswert?

Christian J. schrieb:
> Er würde sich die Füsse
> brechen die PIO zu programmieren, dann noch das Datenblatt des 5110
> studieren müssen für den Treiber, dann noch Grafikfunktionen
> programmieren usw. usw.

Das ist aber dann nicht die Schuld des PIO, sondern desjenigen, der 
unbedingt in Assembler programmieren will.

Nimm einfach nen Z80 C-Compiler und kopiere irgendeinen C-Treiber für 
das GLCD in Deinen Editor.
Dann ersetze alle IO-Zugriffe auf das GLCD durch Aufrufe der 
PIO-Ausgabefunktion (falls die IO-Zugriffe nicht eh schon als Funktion 
gekapselt sind).
Dann schreibe die PIO_Init und die PIO_Out Funktion (dauert ~5min) und 
fertig.

von Leo C. (rapid)


Lesenswert?

Christian J. schrieb:
> Also Holm....... ich frage nach einem Käfer und du kommst mit einem
> Panzer daher, für den es NICHTS irgendwo gibt. Google mal nach dieser
> CPU, die wird wohl nur in irgendwelchen Aktenschänken ihr Dasein
> vergammeln.

Gleich Nebenan könntest Du Dich vom Gegenteil überzeugen.
Beitrag "Z180-Stamp Modul"

von Leo C. (rapid)


Lesenswert?

Holm Tiffe schrieb:
> Das Ding ist schon lange nicht mehr preliminary, falls die Frage kommt,
> der Link auf das PDF war nur günstig.

Datenblätter von Zilog sind fast immer preliminary.

von Joe G. (feinmechaniker) Benutzerseite


Angehängte Dateien:

Lesenswert?

Christian J. schrieb:
> ... ich frage nach einem Käfer und du kommst mit einem
> Panzer daher, für den es NICHTS irgendwo gibt.

Hier sogar in zwei Varianten. Selbstverständlich mit CP/M :-)

von Holm T. (Gast)


Lesenswert?

Christian J. schrieb:
[..]
>
> Also Holm....... ich frage nach einem Käfer und du kommst mit einem
> Panzer daher, für den es NICHTS irgendwo gibt.

Huh? Das Ding ist kein Panzer sondern ein Z180, HD64180..

> Google mal nach dieser
> CPU, die wird wohl nur in irgendwelchen Aktenschänken ihr Dasein
> vergammeln. Ich hoffe dieser thread wird einigen,die ähnlihes vorhaben
> bewusst mache vor welche Hürden man gestellt wird, wenn man alte Technik
> wieder beleben will.

OMG. Christian ich schreibe kein aus den Fingern gesogenes Zeuch, ich 
weiß von was ich rede, Du wieder nicht.

Ich empfehle Dir durchaus mal nach Z180 zu googeln, Beispiele gibts 
einige aber da die CPU einen Z80 Kern hat.. was soll es da für Beispiele 
nicht geben?

Du vergleichst die Z80 mit heutigen ICs, die Z180 ist schon uralt aber 
offensichtlich bestehst Du auf unfairen Vergleichen?
Und wieder schreibst Du ohne zu wissen...

>
> Und diese Vergewaltigung der CTC werde ich nicht machen ..... baue jetzt
> die SIO rein, dahinter einen USB Konverter, der ausnahmsweise auch
> RTC/CTS hat und fertig.

Vergewaltigung?
Das ist ein ganz normaler Betriebsmodus, bekannt seit Jahrzehnten und 
eine der hinlänglich bekannten und verwendeten Möglichkeiten einen 
systemfremden IC in die Interruptkette eine Z80 zu integrieren, genauso 
wie die mit PIO.


Was soll der Käse mit dem Arduino? Du bekommst auch in einem halben Tag 
kein Atmel system mir grafischer Anzeige zum Laufen wenn Du alles zu Fuß 
programmieren mußt. Das man für den Z80, Z180 etc. bekannte und 
vorhandene Softwarebibliotheken nutzen kann, hältst Du offensichtlich 
auch für unwahrscheinlich. Ich frage mich nur warum? Wahrscheinlich 
deshalb, weil Du diese Dinge nicht kennst und deshalb hier behauptest 
das sie nicht existieren. Du hantierst wie selbstverständlich mit einem 
halbwegs modernen Atmel Prozessor, möchtest aber nicht mit einem 
halbwegs aktuellen Z80 vergleichen (und du kommst mit einem Panzer 
daher). Warum nicht? Weil Du dann nicht Recht hast? Was soll das?

Von dem Verlinkten Datenblatt hast Du nichts gelesen sonst wüßtest Du 
das das ein Z80 Kern mir geringfügigen Erweiterungen, einer MMU und 
Peripherie ist, ohne ROM. Diese CPU ist älter als ein Atmel. Andere 
Hinweise über moderne Zilog Chips hattest Du auch schon erhalten, alles 
in den Wind geschlagen weil Du es besser weist.

Wenn Du denkst das Du über einen ARM oder AVR mehr weist als ich hast Du 
wahrscheinlich auch Unrecht. Ich verdiene meine Brötchen mit solchen 
Sachen. Um Arduinos habe ich mich allerdings kaum gekümmert, ich 
Programmiere i.A. in C und Assembler.

Ich empfehle Dir dringend Dich eingehend zu informieren bevor Du 
urteilst. Du manövrierst Dich sonst in Teufels Küche.



Gruß,

Holm

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> die wird wohl nur in irgendwelchen Aktenschänken ihr Dasein
> vergammeln.

Auch die Originale von anno Dunnemal gibts noch,
in PLCC68 und DIP64S beispielsweise bei
http://www.kessler-electronic.de/Halbleiter/integrierte_Schaltkreise/Mikrocontroller/Zilog_Z80_c245.htm

: Bearbeitet durch User
von Holm T. (Gast)


Lesenswert?

Axel Schwenke schrieb:
[..]
>> Schau' dich mal bei den kleinen PICs um, die können das wohl.
>
> Bäh. PICs (vor allem die kleinen) sind doof und riechen nach Lulu. Oder
> anders gesagt: vom Regen in die Traufe. Dann nehme ich doch wirklich
> lieber ein separates Latch in Hardware.
>
>
> XL

:-)

Sehe ich auch so. Ich mach PIC wenn es der Auftraggeber unbedingt 
möchte,
aber eher nicht freiwillig. Ok, die neueren sollen ja besser sein und 
über die MIPS Architektur zanke ich auch nicht..

Gruß,

Holm

von Frank K. (fchk)


Lesenswert?

Holm Tiffe schrieb:

> Sehe ich auch so. Ich mach PIC wenn es der Auftraggeber unbedingt
> möchte,
> aber eher nicht freiwillig. Ok, die neueren sollen ja besser sein und
> über die MIPS Architektur zanke ich auch nicht..

Die 16 Bitter sind auch ganz angenehm.

fchk

von Holm T. (Gast)


Lesenswert?

Meine letzte Erfahrung da war mit einem 16F577 (?) in Assembler, mir 
ging da das Banking auf den Wecker. Für irgend ein Peripherieding (keine 
Ahnung mehr ob Timer oder was das war) gab es die Hälfte der 
Konfiguration in der einen, den Rest in der anderen Bank. Sowas bin ich 
nicht gewöhnt und finde das schräg..

Gruß,

Holm

von Frank K. (fchk)


Lesenswert?

Holm Tiffe schrieb:
> Meine letzte Erfahrung da war mit einem 16F577 (?) in Assembler, mir
> ging da das Banking auf den Wecker. Für irgend ein Peripherieding (keine
> Ahnung mehr ob Timer oder was das war) gab es die Hälfte der
> Konfiguration in der einen, den Rest in der anderen Bank. Sowas bin ich
> nicht gewöhnt und finde das schräg..

Das war wohl eher ein PIC16F677. Bei den PIC18F muss man nicht mehr 
banken, kann aber, wenn man 16'er Code portieren will, und die 16-Bitter 
(dsPIC, PIC24) und 32 Bitter (PIC32) brauchen das ohnehin nicht mehr.

fchk

von W.S. (Gast)


Lesenswert?

Axel Schwenke schrieb:
>> Schau' dich mal bei den kleinen PICs um, die können das wohl.
>
> Bäh. PICs (vor allem die kleinen) sind doof und riechen nach Lulu.

Ach Axel, dem Rest der Welt ist es klar, daß ein begeisterter Atmel-Fan 
wie du keine Gelegenheit ausläßt, die PIC's zu schmähen. Daß du mentale 
Probleme mit deren Architektur hast, ist dein Problem.

Aber die PIC's (vor allem die kleinen) sind eben gar nicht so doof, 
sondern es haben davon einige genau diese Ports, mit denen man sie als 
periphere IC's in größere Systeme einbinden kann. Im Prinzip sind das 
alle, die einen PortD (für 8 Bit Daten I/O) und PortE (für die 
Steuersignale) haben, PIC16F87x wenn ich mich recht erinnere. Damit 
können diese Teile direkt an einen Systembus angeschlossen werden. 
Versuche mal sowas bei anderen µC zu finden.


So, dieser Thread ist zwar ganz interessant, aber auch ziemlich 
gespenstisch. Nostalgie scheint in zu sein. Ich hätte da jedoch ganz 
andere Vorschläge, nämlich den beklagenswerten Wissensstand der Jüngeren 
zu aktueller Hardware zu verbessern, indem man sich um den Aufbau von 
Rechner- oder Controller-Architekturen - nun ja von benutzbarer Hardware 
mit aktuellen Bauteilen kümmert.

Also kein Board mit nem Z80 und CP/M drauf, sondern z.B. eines mit nem 
Cortex M4 drauf, WVGA TFT Display dran, Tastatur und Maus und Drehgeber 
und Tipptasten und mit nem CODEC und so weiter und mit nem 
Monitorprogramm drauf, das von SD-Karte Apps laden und ausführen kann. 
Aber das Ganze mit leicht verständlichem Quellcode, so daß Neulinge sich 
dort abgucken können, wie man dies und das so macht. Kurzum so etwas 
Ähnliches wie eine drastisch modernisierte Art Lernbetty.

Sowas hätte einen echten Sinn, nämlich den Sinn der Bildung unseres 
Nachwuchses. Und es würde auch sowas wie Spaß machen.

Also!

W.S.

von (prx) A. K. (prx)


Lesenswert?

W.S. schrieb:
> So, dieser Thread ist zwar ganz interessant, aber auch ziemlich
> gespenstisch. Nostalgie scheint in zu sein.

Was am Titel "Retro Fieber" hast du grad nicht verstanden?

> sondern z.B. eines mit nem Cortex M4 drauf

Als Empfehlung für "Retro" etwas befremdlich. Oder ist bei dir alles, 
was älter als eine Woche ist, schon Retro?

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

W.S. schrieb:
> Sowas hätte einen echten Sinn, nämlich den Sinn der Bildung unseres
> Nachwuchses. Und es würde auch sowas wie Spaß machen.

Na, solche Boards sehen aber sehr gruelig aus, wenn man "from scratch" 
loslegen will, d.h. mit einer leeren Editorseite. Außerdem habe ich 
gerade wieder die Erfarung gemacht, dass die "Cracks" es gar nicht 
wollen, dass "Expertenwissen" das der breiten Masse wird. Wo kämen wir 
denn da hin, wenn alles  nicht "hochkopliziert" wäre, so dass es jeder 
versteht? Dann wären die Herren Experde ja überflüssig. Lach nicht, 
deswegen hatte ich eine handfeste Auseindanersetzung mit einem Ex 
Kollegen.

Da ich im selbst verfallen bin ist der Raspeberry Pi das beste 
Lerngerät,
wobei allerdings wohl keiner sein Innenleben vesteht, denn wer kann 
schon Treibr für eine GBU schreiben? Solche System sind ohne 
abstrahierte Hardware witzlos.

Ach ja, um Holm noch eines vor den Latz zu geben.... PICs hatten schon 
immer Banking und seit ca 1996 benutzt mana auch C Compiler :-) Ich habe 
seit 1997 mit PICs gearbeitet, abertausende Zeilen Code, viele Dutzend 
Designs für die Industrie gemacht, ohne jemals auch nur eine einzige 
Zeile Asm geschrieben zu haben :-) Nie, nie!  Bäh, das ist bei PICs ja 
wie das Gestammel eines Kleinkindes, dieser RISC Asm. Mit 35 Wörtern die 
Welt erklären zu wollen. Und es wurden tausende Geräte verkauft .... 
also so viel Retro muss es nicht sein.

AVR hat mich nie interessiert, einfach weil alle es machten. Die PICS 
können alles was ein AVR auch kann und was sie mehr können braucht man 
eh nicht.

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Christian J. schrieb:
> gerade wieder die Erfarung gemacht, dass die "Cracks" es gar nicht
> wollen, dass "Expertenwissen" das der breiten Masse wird.

Weil du etwas Kritik angesichts deiner Aussage bezogen hast, dass der 
Z80 SIO für die breite Masse viel zu komplex sei? Wenn das alles ist - 
Code für SIO mit Interrupt anbei, entstanden in den 80ern. Der "STI" 
Kram gehört nicht zum SIO.

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

W.S. schrieb:
> Also kein Board mit nem Z80 und CP/M drauf, sondern z.B. eines mit nem
> Cortex M4 drauf, WVGA TFT Display dran, Tastatur und Maus und Drehgeber
> und Tipptasten und mit nem CODEC und so weiter und mit nem
> Monitorprogramm drauf, das von SD-Karte Apps laden und ausführen kann.

Grundlagenwissen vermittelst du der beklagenswerten Jugend m.E. besser 
mit einem Z80-System als mit den komplexen, aktuellen Controllern. 
Während beim Z80 die einzelnen Bausteine wie CPU, Busse, Decodierer, 
RAM, ROM, Timer, SIO, PIO usw., sowie deren Verbindung umtereinander 
noch mit bloßem Auge sichtbar und quasi "zum Anfassen" sind, 
verschwindet dies alles bei den µCs unter einem schwarzen Klecks. Wenn 
man die einzelnen Leitungen der Busse noch zusätzlich mit LEDs 
illuminiert und die Taktrate auf fürs menschliche Auge nachvollziehbare 
Frequenzen runterschraubt, kann der wißbegierige IT-Jünger den Bits 
sogar bei der Arbeit zuschauen.
Ein Z80 ist wie der Lanz Bulldog, bei dem es weder Steuergeräte noch 
Turbolader oder ABS gibt. Nur nackte, primitive aber nachvollziehbare 
Technik.

von Harald (Gast)


Lesenswert?

IMHO muss man beim Lernen noch weiter   zurück gehen. Anfangen bei 
gattern, weiter zu flipflops, Zählern, Registern. parallel programmieren 
am pc. Erst dann mit Prozessoren und controllern...

von Christian J. (Gast)


Lesenswert?

Harald schrieb:
> IMHO muss man beim Lernen noch weiter   zurück gehen. Anfangen bei
> gattern, weiter zu flipflops, Zählern, Registern. parallel programmieren
> am pc. Erst dann mit Prozessoren und controllern...

Nein.... in vielleicht 30,50 Jahren wird unsere Technik so komplex sein, 
wie die auf dem Raumschiff Enterprise. Displays in 3D aus Glas, Computer 
die dir zuhören, Computer die Teile von sich selbst neu konfigurieren 
können (gibt es ja teilweise schon) usw, usw. Die Elementartechnik wird 
ganz und völlig in Bausteinen oder Libraries verschwinden. Du kannst 
nicht immer weiter hinauf wollen und alles was unten ist noch wissen 
oder verstehen wollen. Ich habe an der Uni noch Karnogh Diagramme 
gehabt, Minterm, Maxterm und aus deren Lösungen Gatterlogiken gemacht. 
Ist längst aus dem Lehrstoff verschwunden.
Mein Sohn geht mit einem Smrtphone und Computer wie selbstverständlich 
um mit seinen 10 Jahren aber er hat keine Ahnung wie er fnktioniert. Und 
es interessiere ihn auch nicht sagte er, "hauptsache es funktioniert".

von Icke ®. (49636b65)


Lesenswert?

Christian J. schrieb:
> in vielleicht 30,50 Jahren wird unsere Technik so komplex sein,
> wie die auf dem Raumschiff Enterprise. Displays in 3D aus Glas, Computer
> die dir zuhören, Computer die Teile von sich selbst neu konfigurieren
> können (gibt es ja teilweise schon) usw, usw.

Hmm, das führt irgendwann dorthin:

http://de.wikipedia.org/wiki/Technologische_Singularit%C3%A4t

Der Mensch wird dann allerdings überflüssig, weil er die Entwicklung nur 
hemmt.

von Holm T. (Gast)


Lesenswert?

Christian J. schrieb:
> W.S. schrieb:

>
> Ach ja, um Holm noch eines vor den Latz zu geben.... PICs hatten schon
> immer Banking und seit ca 1996 benutzt mana auch C Compiler :-) Ich habe

Mach doch. Ich schrieb das ich kein Problem mit den Dingern habe wenn 
ich mit den Dingern arbeiten muß. Ich komme nur nicht selbst auf die 
Idee mir die Rübe so zu verkorksen das ich auf steinalte GI 
Architekturen abfahren muß. Wenn Du Dir die Rute über den Arsch ziehen 
willst, bitteschön.
Auch andere Mütter haben schöne Töchter, mich zieht es da eher in die 
Ecke Coldfire und Konsorten oder aber MSP430.

Das nur um Dir eine vor Deinen Latz zurück zu geben.

Gruß,

HOlm

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Mein Sohn geht mit einem Smrtphone und Computer wie selbstverständlich
> um mit seinen 10 Jahren aber er hat keine Ahnung wie er fnktioniert. Und
> es interessiere ihn auch nicht sagte er, "hauptsache es funktioniert".

Ja, diese Sorte Nachwuchs kenne ich, sinngemäss: "Papi, kannst du mal 
vorbei kommen (halb Deutschland liegt dazwischen). Der Handtuchhalter 
bleibt nicht an der Wand hängen. Im Computerspiel tut er das immer."

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

A. K. schrieb:
> Christian J. schrieb:
>> gerade wieder die Erfarung gemacht, dass die "Cracks" es gar nicht
>> wollen, dass "Expertenwissen" das der breiten Masse wird.
>
> Weil du etwas Kritik angesichts deiner Aussage bezogen hast, dass der
> Z80 SIO für die breite Masse viel zu komplex sei? Wenn das alles ist -
> Code für SIO mit Interrupt anbei, entstanden in den 80ern. Der "STI"
> Kram gehört nicht zum SIO.

Was ist denn das für ein Code? Leider ist der Source wenig kommentert, 
so  dass man zb nicht weiss welche Register bei welcher Routine mit was 
gefüllt sein müssen und welche Ausgabe eine Routine erzeugt.

Ist das eine Makrosprache des Assemblers?

/* start output sequence */
begseq::
{
  @imra = @imra & ~0x10;  /* keyboard int off */
}

/* end output sequence */
endseq::
{
  @imra = @imra |  0x10;  /* keyboard int on */
  if (xreq) {    /* xoff request pending */
    putnw (A=xreq;);
    xreq = 0;
  }
}

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Christian J. schrieb:
> Ist das eine Makrosprache des Assemblers?

Nö. Trivialcompiler Marke Eigenbau. Besseres Beispiel anbei - .PLZ der 
Quellcode, .s der resultierende Assemblercode.

War auch nicht für 1:1 Übernahme gedacht. Sondern um zu zeigen, dass der 
Umgang damit kein Hexenwerk ist.

: Bearbeitet durch User
von karadur (Gast)


Lesenswert?

Hallo

Grundlagen schaden aber nicht. Die Mathematik bis zum ABI ist auch schon 
"uralt".

Mir hilft es jedenfalls mit dem Wissen aus 6502, Z80 und 68k Zeiten

aktuelle System zu programmieren.

von Harald N. (haraldn)


Lesenswert?

Christian J. schrieb:
> Nein.... in vielleicht 30,50 Jahren wird unsere Technik so komplex sein,
> wie die auf dem Raumschiff Enterprise. Displays in 3D aus Glas, Computer
> die dir zuhören, Computer die Teile von sich selbst neu konfigurieren
> können (gibt es ja teilweise schon) usw, usw. Die Elementartechnik wird
> ganz und völlig in Bausteinen oder Libraries verschwinden. Du kannst
> nicht immer weiter hinauf wollen und alles was unten ist noch wissen
> oder verstehen wollen. Ich habe an der Uni noch Karnogh Diagramme
> gehabt, Minterm, Maxterm und aus deren Lösungen Gatterlogiken gemacht.
> Ist längst aus dem Lehrstoff verschwunden.

Naja, ich stelle nur immer wieder - gerade hier im Forum - fest, dass 
gerade bei den Hobbyanwendern, wo auch ich mich dazuzähle, ein extremer 
Mangel an Grundwissen herrscht.
Das Problem ist IMHO nur das, dass euch, die beruflich in dieser Branche 
unterwegs seid, die Grundlagen so vertraut und in Fleisch und Blut über 
gegangen sind, dass euch gar nicht auffällt, dass die teilweise blöden 
Fragen daher rühren.
Ich arbeite zwar in einer ganz anderen Branche, aber mir fällt das 
genauso auf. Die Grundlagen sind halt jedem in seinem Fachgebeit 
selbtverständlich.
Btw wenn die Programmierung von Controllern soweit abstrahiert wird, 
dass es jeder kann; wozu braucht man dann euch Spezialisten noch?

Was die Studienpläne betrifft: wer sagt, dass das so sinnvoll ist. 
Auswirkungen der aktuellen Lehrpläne werden sich erst zeigen.

> Mein Sohn geht mit einem Smrtphone und Computer wie selbstverständlich
> um mit seinen 10 Jahren aber er hat keine Ahnung wie er fnktioniert. Und
> es interessiere ihn auch nicht sagte er, "hauptsache es funktioniert".

Das hat mit der Programmierung von Controllern etc. nun so gar nichts zu 
tun, sondern ist ein gesellschaftlicher Fakt.
Anwenden ist nicht gleich Implementieren.

Ich wollte den Thread zwar nicht OT führen, aber andererseits ist's eh 
schon egal, wenn man hier mitliest...

von Christian J. (Gast)


Lesenswert?

Icke ®. schrieb:
> Christian J. schrieb:
>> in vielleicht 30,50 Jahren wird unsere Technik so komplex sein,
>> wie die auf dem Raumschiff Enterprise. Displays in 3D aus Glas, Computer
>> die dir zuhören, Computer die Teile von sich selbst neu konfigurieren
>> können (gibt es ja teilweise schon) usw, usw.
>
> Hmm, das führt irgendwann dorthin:
>
> http://de.wikipedia.org/wiki/Technologische_Singularit%C3%A4t
>
> Der Mensch wird dann allerdings überflüssig, weil er die Entwicklung nur
> hemmt.

Wenn du dir mal den genialen Jules Verne durchgelesen hast, der um 1828 
geboren wurde, da liest du wie er viele Dinge bereits vorausah, die 
heute Normal sind. Noch sind wir nicht soweit, dass ein Haufen Silizium 
diese 2kg graue Pampe ersetzen kann, die als Analogcomputer hinter 
meiner Brille arbeitet.

Im Übrigen wird diese Thematik auch in einigen Filmen erwähnt, zb 
"Flucht ins 21.te Jahrhundert", oder "Die Zeitmaschine" wo die "Söhne 
und Töchter" nicht mehr das Wissen besassen was ihre Väter geschaffen 
hatten, um die Maschinen und alles andere in Gang zu halten.

Aber das hat jetzt nichts mit dem Z80 zu tun...

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

A. K. schrieb:
> Nö. Trivialcompiler Marke Eigenbau.

Sorry, übersteigt meine Fähigkeiten einen "Trivialcompiler" zu 
schreiben. Bin ich zu blöde für. Anbei mal der Quelltext eines Virus, 
den ich 1995 geschrieben habe, sieht irgendwie "anders" aus, mein 
Asm-Stil.

von Christian J. (Gast)


Lesenswert?

Harald Nagy schrieb:
> Btw wenn die Programmierung von Controllern soweit abstrahiert wird,
> dass es jeder kann; wozu braucht man dann euch Spezialisten noch?

Diese Abstrahierung wird auf allen Fronten aber voran getrieben! Du 
sollst schnell Erfolg haben, auf bewährtes aufsetzen können und nicht 
das Rad ewig neu erfinden müssen. Nehmen wir die A20 CPU, die einen ARM 
Core hat so merke ich, je länger ich mich damit befasse, dass es 
UNMÖGLICH ist für eine Einzelperson diese CPU , besser "system on chip" 
zu verstehen, gschweige denn da noch Asm zu programmieren. Du würdest 
jahre brauchen überhaupt einen Grundstock zu haben. Erst mit Linux drauf 
wird sie zu einem nutzbaren System.

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Sorry, übersteigt meine Fähigkeiten einen "Trivialcompiler" zu
> schreiben. Bin ich zu blöde für.

Kein Drama. Rund 2400 Zeilen, die Hälfte davon Yacc.

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

A. K. schrieb:
> Christian J. schrieb:
>> Sorry, übersteigt meine Fähigkeiten einen "Trivialcompiler" zu
>> schreiben. Bin ich zu blöde für.
>
> Kein Drama. Rund 2400 Zeilen, die Hälfte davon Yacc.

Ok, ok. Ich erinnere mich schwach an Begriffe wie Keller-Automat, 
verkettete Bäume für die Strukuren, Parser usw. usw. Aber das sei denen 
vorbehalten die Informatik studiert haben, denen jeden Abend der Kopf 
explodiert und nicht jenen, die sie anwenden wollen :-)

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> und nicht jenen, die sie anwenden wollen :-)

Eben. Den Automaten des Parsers erzeugte Yacc. Ich war bloss der 
Anwender von Yacc, indem ich die Parser-Spezifikation schrieb (sowas wie 
BNF) und mit dem resultierenden Z80-Code verzierte. Das Ergebnis 
erreichte die Effizienz von Assembler, war aber viel besser lesbar.

Einen Small C Compiler für 8080 (Z80?) gab es damals zwar wohl schon, 
aber dessen Ergebnis war schaurig.

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

A. K. schrieb:
> Christian J. schrieb:
>> und nicht jenen, die sie anwenden wollen :-)
>
> Eben. Den Automaten erzeugt Yacc. Ich war bloss dessen Anwender, indem
> ich die Spezifikation für Yacc schrieb (sowas wie BNF). Das Ergebnis
> erreichte die Effizienz von Assembler, war aber viel besser lesbar.

Darf ich das so verstehen, dass du nur die Syntax definierst und Yacc 
erzeugt das für dich? Ich bin da Laie aber

ein

"LDA A,$05" für den 6502, Lade Accu mit 0x05

muss ja übersetzt werden in

A0 09 05, wobei die 09 nur für die direkte Adressierung steht, es aber 
noch einie andere wie indirekt, indiziert indirekt, zeropage usw gibt.

Wie bringt man diese Regeln Yacc bei.

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Christian J. schrieb:
> Darf ich das so verstehen, dass du nur die Syntax definierst und Yacc
> erzeugt das für dich? Ich bin da Laie aber

So ungefähr. Siehe Anhang.

von Christian J. (Gast)


Lesenswert?

A. K. schrieb:
> Christian J. schrieb:
>> Darf ich das so verstehen, dass du nur die Syntax definierst und Yacc
>> erzeugt das für dich? Ich bin da Laie aber
>
> So ungefähr. Siehe Anhang.

Ok, andere Welt ... verstehe nicht eine Zeile davon.

Ist aber hier verständlich beschrieben: http://www.eike-meinders.de/Yacc

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


Lesenswert?

Christian J. schrieb:
> Woebi ich nach einmal drüber schlafen jetzt soweit bin, dass ich
> dem 6850 die INT Leitung abklemmen werde und etl Polling benutzen werde,
> da er sowieso nix zu tun hat solange er auf was wartet.

Und nochmal meine Frage:

Matthias Sch. schrieb:
> Warum nimmste nicht den NMI für deinen 6850?

von Holm T. (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Christian J. schrieb:
>> Woebi ich nach einmal drüber schlafen jetzt soweit bin, dass ich
>> dem 6850 die INT Leitung abklemmen werde und etl Polling benutzen werde,
>> da er sowieso nix zu tun hat solange er auf was wartet.
>
> Und nochmal meine Frage:
>
> Matthias Sch. schrieb:
>> Warum nimmste nicht den NMI für deinen 6850?

..und warum besorgst Du erst einen TTL zu USB serial Wandler mit RTS/CTS 
wenn Du die signale gar nicht brauchst?

Gruß,

Holm

von Christian J. (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Christian J. schrieb:
>> Woebi ich nach einmal drüber schlafen jetzt soweit bin, dass ich
>> dem 6850 die INT Leitung abklemmen werde und etl Polling benutzen werde,
>> da er sowieso nix zu tun hat solange er auf was wartet.
>
> Und nochmal meine Frage:
>
> Matthias Sch. schrieb:

>> Warum nimmste nicht den NMI für deinen 6850?

Handbuch:

NMI. Nonmaskable Interrupt (input, negative edge-triggered). NMI 
contains a higher priority than INT. NMI is always recognized at the end 
of the current instruction, independent of the status of the interrupt 
enable flip-flop, and automatically forces the CPU to restart at 
location 0066h.


The Z80 CPU contains two interrupt inputs: a software maskable interrupt 
(INT) and a nonmaskable interrupt (NMI). The nonmaskable interrupt 
cannot be disabled by the programmer and is accepted when a peripheral 
device requests it. This interrupt is generally reserved for important 
functions that can be enabled or disabled selectively by the programmer.
This routine allows the programmer to disable the interrupt during 
periods when the program contains timing constraints that wont allow 
interrupt. In the Z80 CPU, there is an interrupt enable flip-flop (IFF) 
that is set or reset by the programmer using the Enable Interrupt (EI) 
and Disable Interrupt (DI) instructions. When the IFF is reset, an 
interrupt
cannot be accepted by the CPU.

##

-----------------

Moin,

Da noch nix läuft kann ich auch noch nichts ausprobieren.  Der NMI ist 
nicht maskierbar, d.h. er kann mir dazwischen hauen, wenn ein anderer 
Interrupt aktiv ist, zb einer der Timer oder der PIO (ja, ich nutze sie 
doch :) und ganz schlimm auch dann wenn ich grad in einem solchen INT 
die Register noch nicht auf dem Stack habe. Ich erinnere mich schwach, 
dass ein EI in einer INT Routine vorne böse Folgen haben kann, zb kann 
er sich bei pegel getriggerten INT (was der INT zu sein scheint) dann 
rekursiv aufhängen.

Fragen:

1. Legt der Z80 die Retrun Adresse dabei auf dem Stack ab, so dass er 
zurückkehren kann? Mir liest sich das so als wenn das wie ein Warmstart 
Reset wäre "restart", d h. er springt nach 0x0066 und macht da einfach 
weiter.

2. Beherrscht die CPU nested interrupts, wenn ich die Register im NMI 
IRQ auf dem Stack rette wenn er grad aus einem 0038+x Timer INT 
ausgerissen wird?


3. Hier ist doch ein Widerspruch drin:

"The nonmaskable interrupt cannot be disabled by the programmer and is 
accepted when a peripheral device requests it. This interrupt is 
generally reserved for important functions that can be enabled or 
disabled selectively by the programmer."

Also, nun enabled oder disabled? Ich gebe zu dass dieses Handbuch 
teilweise etwas verwirrend geschrieben ist, auch die Bedeutung der 
beiden Flags IFF1 und IFF2 ist mir nicht ganz klar. Diese sind nicht im 
Status Register, sondern werden durch Befehle gesetzt und gelöscht.


@Holm: Weil ich sie dann habe wenn ich sie brauche und wenn nicht, dann 
benutze ich sie nicht. Ganz einfach, oder? An 2,95 Euro soll es nicht 
scheitern. An USB Konvertern sind solche Leitungen ja sonst "out of 
date".

von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Die Bilder stammen aus Kieser/Meder[1]. Ich könnte mir vorstellen, daß 
das Buch für Dich etwas wäre. Gerade habe ich gesehen, daß auch die SIO 
darin ausfürhlich erklärt ist.

> 3. Hier ist doch ein Widerspruch drin:

Der NMI kann durch den Programmierer nicht disabled werden, die 
Funktionen aber schon. Kein Widerspruch.


[1] 
http://www.zvab.com/advancedSearch.do?title=Mikroprozessortechnik+%3A+Aufbau+u&author=Kieser

von Icke ®. (49636b65)


Lesenswert?

Leo C. schrieb:
> Die Bilder stammen aus Kieser/Meder[1]. Ich könnte mir vorstellen, daß
> das Buch für Dich etwas wäre.

Das Buch ist wirklich gut. Sehr ausführlich und verständlich 
geschrieben. Ich habe seinerzeit allein damit den Einstieg in die 
Mikroprozessorwelt geschafft, obwohl ich keinerlei Vorkenntnisse besaß.

von Christian J. (Gast)


Lesenswert?

Leo C. schrieb:
> Der NMI kann durch den Programmierer nicht disabled werden, die
> Funktionen aber schon. Kein Widerspruch.

Das Buch ist ja super, gesehen hatte ich es schon bei amazon. Ich habe 
aber den Zaks bestellt. Habe einige DDR Mathe  und Technik Bücher, weil 
die vor allem in Deutsch geschrieben sind.

Die Funktionen? Also es kann nicht verhindert werden, dass 66 
angesprungen wird, richtig? Was sind denn die Funktionen des NMI? 
Natürlich kann ich eine ISR sperren per Softfware, so dass sie gleich 
wieder verlassen wird.

von Draco (Gast)


Lesenswert?

Schaut Euch mal das Kiwi-Projekt von Simon Ferber an: 
https://www.ist-schlau.de/
Ein ziemlich beeindruckender Selbstaucomputer auf 68K-Basis. Er hat das 
in relativ kurzer Zeit beeindruckend weit gebracht, finde ich.

von S. R. (svenska)


Lesenswert?

> Da noch nix läuft kann ich auch noch nichts ausprobieren.  Der NMI ist
> nicht maskierbar, d.h. er kann mir dazwischen hauen, wenn ein anderer
> Interrupt aktiv ist, zb einer der Timer oder der PIO (ja, ich nutze sie
> doch :) und ganz schlimm auch dann wenn ich grad in einem solchen INT
> die Register noch nicht auf dem Stack habe.

Wo ist das Problem? Vor und nach dem NMI sind die Register doch gleich. 
Du hast eine maximale Rekursionstiefe von 3 (Anwendung, Interrupt, NMI), 
für die du ausreichend Stack bereitstellen musst. Und für die Interrupts 
wurde der zweite Registersatz mal definiert.

> 1. Legt der Z80 die Retrun Adresse dabei auf dem Stack ab, so dass er
> zurückkehren kann?

Ja, denn sonst könntest du nie aus einem Interrupt oder NMI 
zurückkehren.

> 2. Beherrscht die CPU nested interrupts, wenn ich die Register im NMI
> IRQ auf dem Stack rette wenn er grad aus einem 0038+x Timer INT
> ausgerissen wird?

Wenn du in einer ISR "EI" ausführst, dann kannst du auch Interrupts 
verschachteln. Ein NMI wird aber normalerweise nicht (bzw. nur durch 
einen NMI) unterbrochen.
1
void nmi(void) __interrupt __critical
2
{
3
  static char flag_nmi = 0;
4
  if(flag_nmi) return;
5
6
  flag_nmi = 1;
7
  /* hier der Code */
8
  flag_nmi = 0;
9
  return;
10
}

> 3. Hier ist doch ein Widerspruch drin:
>
> "The nonmaskable interrupt cannot be disabled by the programmer and is
> accepted when a peripheral device requests it. This interrupt is
> generally reserved for important functions that can be enabled or
> disabled selectively by the programmer."

"Dieser Interrupt wird normalerweise für wichtige Funktionen reserviert, 
die vom Programmierer gezielt ein- oder ausgeschaltet werden können."

Nicht für andere Funktionen. ;-)

> Also, nun enabled oder disabled? Ich gebe zu dass dieses Handbuch
> teilweise etwas verwirrend geschrieben ist, auch die Bedeutung der
> beiden Flags IFF1 und IFF2 ist mir nicht ganz klar.
> Diese sind nicht im Status Register, sondern werden durch Befehle
> gesetzt und gelöscht.

Diese Flags speichern den Zustand des I-Flags, wenn ein NMI eintritt. 
Ohne NMIs sind IFF1 und IFF2 immer gleich, und mehr kannst du mit den 
Befehlen auch nicht beeinflussen.

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


Lesenswert?

Christian J. schrieb:
> Was sind denn die Funktionen des NMI?

Nun, es wird 0066h angesprungen, wenn der NMI low wird - mehr passiert 
erstmal nicht. Am besten fragst du dann gleich ACIA im 6850 ab, löschst 
die IRQ Anforderung und behandelst dann dein Ereignis. Du musst 
natürlich nur die Register retten, die deine Routine zermanschen würde. 
Du könntest auch eine kleine Hardware (Steckbrücke) vorsehen, damit du 
den NMI aussperren kannst.
Die Funktion des NMI (und so ist der Zilog Satz vermutlich zu verstehen) 
werden normalerweise eben für SingleStep, Breakpoints usw. verwendet, 
das ist aber kein Zwang und der NMI ist ein ganz normaler IRQ mit hoher 
Priorität.
Solange du im 6850 keine IRQ Bits setzt, wird da auch nichts ausgelöst. 
Denke nur dran, das der 6850 eine OpenDrain IRQ Ausgang hat und der Z80 
keinen internen Pullup. Da muss also ein externer mit ran.

von Christian J. (Gast)


Lesenswert?

Draco schrieb:
> Schaut Euch mal das Kiwi-Projekt von Simon Ferber an:
> https://www.ist-schlau.de/
> Ein ziemlich beeindruckender Selbstaucomputer auf 68K-Basis. Er hat das
> in relativ kurzer Zeit beeindruckend weit gebracht, finde ich.

Das erfordert auch deutlich mehr kenntnisse und Zeit als Normalbürger 
zur Verfügung haben und FPGA hört es bei mir eh auf und Videoprozessor, 
Audio usw.

Danke für die wertvollen Infos! Kapiert! Ich sehe eh schon, dass ich den 
Monitor selbst schreiben muss, bin zu weit weg von allem was auf Grants 
Page zu sehen ist und mache auch die Decodierung anders als er mit 
74138ern. Schätze aber mal, dass ich den basic Interpeter auch so 
hineinkriege.

Also kriegt der 6850 den NMI spendiert, was natürlich auch heisst, dass 
wenn der PC spricht der Z80 zuhören muss,ob es im passt oder nicht, es 
sei denn ich disabel die INT im 6850, zb wenn der Z80 sein Programm 
gestartet hat.

Meine Frage bezog sich darauf dass der NMI mitten in einen INT 
reinquatschen darf, also während die ISR grad abgearbeitet wird.
1
void nmi(void) __interrupt __critical
2
{
3
  static char flag_nmi = 0;
4
  if(flag_nmi) return;
5
6
  flag_nmi = 1;
7
  /* hier der Code */
8
  flag_nmi = 0;
9
  return;
10
}

Du bist ein Schatz! Da ich eh vorhabe den Monitor in C zu schreiben mit 
etwas inline asm. Welcher Compiler ist das? SDCC? Genau das habe ich 
gesucht, void nmi(void) __interrupt __critical ist doch sicher ein 
keyword, damit er eine INT Routine anlegt an der richtigen Stelle, oder? 
Legt der Compiler auch die Vektortabelle im ROM an und lässt sich dazu 
bewegen zu einer RAM Routine zu springen. Wohl nicht, oder?


Mir schwirren da so Ideen durch den Kopf das ROM wegzublenden, so dass 
die RAM Adressen auf 0000 rutschen nachdem er ein Programm empfangen hat 
aber weiss nicht wie ich das realisieren soll. Im Ram müsste dann ja 
eine identische Kopie der Zeropage liegen, also auch die INT Einsprünge 
und dere ń Zeiger auf Userroutinen.  Das ROM könnte sich ja erst dorthin 
kopieren, dann den Usercode drüber an der richtigen Stelle und ZACK, 
schaltet es sich weg und als letzte Aktion muss der Pogrammzeiger dann 
auf das userprogramm gerichtet werden.
Die Adressierung ROM/RAM unterscheidet sich ja nur durch die A15 
Leitung, 1 = ROM, 0 = RAM bei mir. Oder spinne ich zu weit?

8255 vs. Z80 PIO:

Schaut man sich die Bausteine an fällt auf, dass sie scheinbar für die 
damaligen peripheriegeräte entworfen wurden. heute hängt ja alles am 
seriellen USB Bus dran, was früher LPT und Centronics waren. Bei allen 
beiden scheint es nicht möglich, das was heute normal ist, zb einen Port 
bitweise als Eingang und Ausgang zu schalten, also Bit 0 = In, Bit 1 = 
Out, Bit 3 = Tristate usw.

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> beiden scheint es nicht möglich, das was heute normal ist, zb einen Port
> bitweise als Eingang und Ausgang zu schalten, also Bit 0 = In, Bit 1 =
> Out, Bit 3 = Tristate usw.

Beim 8255 geht das wirklich nicht, weil dessen Richtung nur portweise 
schaltbar ist.

Beim Z80 PIO lässt sich jedoch die Richtung sehr wohl pinweise steuern. 
Tristate ist überflüssig, weil von aussen nicht von einem Input 
unterscheidbar. Open drain lässt sich wie bei AVRs über die Richtung 
steuern.

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

Christian J. schrieb:
> Meine Frage bezog sich darauf dass der NMI mitten in einen INT
> reinquatschen darf, also während die ISR grad abgearbeitet wird.

Ja. Und wo ist da das Problem? ;-)
Der NMI kann durch einen weiteren NMI unterbrochen werden, davor musst 
du dich schützen. Ob die CPU gerade einen INT abgehandelt hat oder 
nicht, kann dir relativ egal sein: Dafür sind IFF1 und IFF2 da.

> Welcher Compiler ist das? SDCC?

Ja, aber ungetestet. Siehe SDCC-Manual.

> Genau das habe ich gesucht, void nmi(void) __interrupt __critical ist
> doch sicher ein keyword, damit er eine INT Routine anlegt an der
> richtigen Stelle, oder?

Nein. Siehe SDCC-Manual.

NMI-Handler: "void nmi(void) __interrupt __critical"
INT-Handler: "void int(void) __interrupt(1) __critical"

> Legt der Compiler auch die Vektortabelle im ROM an und lässt sich dazu
> bewegen zu einer RAM Routine zu springen. Wohl nicht, oder?

Nicht für Z80, weil das vom Modus abhängt. Siehe SDCC-Manual. ;-)

> Mir schwirren da so Ideen durch den Kopf das ROM wegzublenden, so dass
> die RAM Adressen auf 0000 rutschen nachdem er ein Programm empfangen hat
> aber weiss nicht wie ich das realisieren soll. Die Adressierung ROM/RAM
> unterscheidet sich ja nur durch die A15 Leitung, 1 = ROM, 0 = RAM bei
> mir.

Wenn A15 == 1 ins ROM führt, dann sind das die oberen 32 KB. Da musst 
du erstmal hinkommen!

Teilst du den Adressraum in zwei Hälften, je 32 KB ROM und RAM? Dann 
linke deine Programme an die richtigen Adressen und lass gut sein.

von (prx) A. K. (prx)


Lesenswert?

Zu den etwas selteren aber praktischen Bausteinen gehörte der Z80 STI, 
den Mostek einbrachte. 8 I/O Pins mit flankengetriggerten Interrupts, 4 
Timer und eine UART. An diesem Baustein erkennt man recht gut, wozu die 
Interrupt-Vektoren gut waren. Denn davon hatte der immerhin 16.
http://www.cpcwiki.eu/index.php/Z80-STI
http://www.ebay.de/itm/1-Stuck-1-pieces-MK3801N04-Z80-STI-Serial-Timer-Interrupt-Contr-DIP40-NEU-NEW-/271339278196?pt=Bauteile&hash=item3f2d14cf74

: Bearbeitet durch User
von Harald (Gast)


Lesenswert?

Es gäbe auch noch das All-in-one Paket Z80 KIO....

von (prx) A. K. (prx)


Lesenswert?

Harald schrieb:
> Es gäbe auch noch das All-in-one Paket Z80 KIO....

Klar, aber so richtig Retro ist der Klops von anno 2002 ja nicht mehr. 
Retro Board mit LQFP100, also nee, da kannste den Kram auch gleich im 
FPGA versenken. ;-)

: Bearbeitet durch User
von Harald N. (haraldn)


Lesenswert?

A. K. schrieb:
> Harald schrieb:
>> Es gäbe auch noch das All-in-one Paket Z80 KIO....
>
> Klar, aber so richtig Retro ist der Klops von anno 2002 ja nicht mehr.
> Retro Board mit LQFP100, also nee, da kannste den Kram auch gleich im
> FPGA versenken. ;-)

PLCC84, ideal zum Verdrahten am Lochraster....

von Christian J. (Gast)


Lesenswert?

Moinse!

Ist ja genial...... den Z80 STI habe ich mir direkt gekauft, spart geich 
3 fette 40 Pinner ein! Ok..... ich könnte auch alles einsparen und einen 
Attiny84 einsam auf die Platine setzen :-))))

Der PLCC 84 "Klops" macht das Retro Design leider kaputt, das Auge isst 
mit und die kantige Ästehtik eines PLCC entspricht leider nicht dem Auge 
des Künstlers. PLCC auf Lochraster verdahtenn ist so als fährt man in 
einer Baustelle auf der Autobahn auf linken 2,50m Spur hat rechts neben 
sich die LKW. Nee...

Ich teile den Adressraum üpbrigens in  8kb ROM und 56 KB Ram mit einem 
128K RAM Baustein mit 30 Pins.

Es wächst ...... danke an euch alle ! Supi!

Gruss,
Christian

von W.S. (Gast)


Lesenswert?

Harald Nagy schrieb:
> Naja, ich stelle nur immer wieder - gerade hier im Forum - fest, dass
> gerade bei den Hobbyanwendern, wo auch ich mich dazuzähle, ein extremer
> Mangel an Grundwissen herrscht.
> Das Problem ist IMHO nur das, dass euch, die beruflich in dieser Branche
> unterwegs seid, die Grundlagen so vertraut und in Fleisch und Blut über
> gegangen sind, dass euch gar nicht auffällt, dass die teilweise blöden
> Fragen daher rühren.

Da täuschest du dich aber ganz gewaltig.
Ich kenne genug junge Leute, die mit ihrem frisch erworbenen Master in 
der Tasche in die professionelle Elektronikentwicklung einsteigen wollen 
und die zwar einen Linux-Rechner benutzen können und geübt sind im 
Eingeben ihres Paßwortes und dem Benutzen der Kommandozeile, aber 
bereits den Sinn eines treiberinternen Ringpuffers für serielles I/O 
nicht zu erkennen vermögen und auch nicht verstehen können, warum ein 
Hintergrund-Monitor die empfangenen Zeichen echot, ebenso nicht wie man 
eine Leiterplatte designt und und und. Ich erwarte ja keine 100 Jahre 
Berufserfahrung von einem jungen Menschen, aber ich erwarte ein 
geschultes Denkvermögen und Auffassungsgabe - und da gibt es ganz häufig 
heftige Defizite.

Sachlich interessierte Hobbyisten - sprich Amateure, zu deutsch 
"Liebhaber" obwohl das ne andere Assoziation mit sich bringt :-)  kennen 
sich recht häufig viel besser aus als die sogenannten Profis. Nebenbei 
gesagt heißt "Profi" ja nur, daß einer das Thema nicht aus Liebe zum 
Thema beackert, sondern nur schnöd seinen Lebensunterhalt damit 
verdienen will. Von besserem Wissen ist da garnix gesagt.

W.S.

von Christian J. (Gast)


Lesenswert?

PS. Zum SDCC:

Es scheint doch zu gehen, müsste mir das mal im Am Listing anschauen, 
wenn ich dazu komme, was er dann produziert. Den Monitor in C zu 
schreiben macht mir deutlich mehr Spass.

3.10.4
Z80 Interrupt Service Routines

The Z80 uses several different methods for determining the correct 
interrupt vector depending on the hardware implementation. Therefore, 
SDCC ignores the optional interrupt number and does not attempt to 
generate an interrupt vector table. By default, SDCC generates code for 
a maskable interrupt, which uses a RETI instruction to return from the
interrupt. To write an interrupt handler for the non-maskable interrupt, 
which needs a RETN instruction instead,
add the __critical keyword:
void nmi_isr (void) __critical __interrupt
{
...
}
However if you need to create a non-interruptable interrupt service 
routine you would also req

von Christian J. (Gast)


Lesenswert?

W.S. schrieb:
> aber
> bereits den Sinn eines treiberinternen Ringpuffers für serielles I/O
> nicht zu erkennen vermögen und auch nicht verstehen können, warum ein
> Hintergrund-Monitor die empfangenen Zeichen echot, ebenso nicht wie man
> eine Leiterplatte designt und und und.

Ich kann dir versichern, dass es in einer Firma für die ich früher mal 
gearbeitet habe - bevor ich den Kanal voll hatte - "Profis" gibt, 
zumindest halten die sich für solchen, die irgendwann mit 50 getrieben 
durch den Markt quer einsteigen mussten in uC und dabei Sachen 
produzieren, die einem die Haare zu Berge stehen lassen. Keine Ahnung 
was eine Statusmaschine oder ein Keller-Stack ist, nicht mal den Begriff 
gehört, Was ist ein Baum, was ein Zeiger - keine Ahnung von 
grundlegenden Programmiertechniken und Softwareplanung.... alles strotz 
vor globalen Variablen, die kreuz und quer verändert werden, einfach nur 
an den Rechner setzen und Code runtertippen, wo jede Variable i,jk,n 
heisst, jede Funtion func1,func2, func3 und kein Mensch mehr 
durchdblickt.

Aber mit OP's, Transistoren und Dioden kennen sie sich aus..... darum 
sind sie Profis.

Oder ein Bewerbungsgespräch 2004, wo ich zu hören bekam "Wir benutzen 
8051 und programmieren alles in Assembler!", FPGA? CPLD? Wozu das! 
Warum? Weil der Entwicklungsleiter nichts anderes konnte und Angst hatte 
von einem Jüngeren "überflügelt" zu werden.

Nicht nur über die Jungen kann man sich aufregen, da wir alle mal so 
waren, sondern ebenso über die Älteren die als Bremsklotz wirken, bloss 
weil die Panik haben entbehrlich zu werden oder etwas neues lernen 
müssen.  Diese Mentalität hasse ich aber sie ist weit verbreitet.

> ebenso nicht wie man eine Leiterplatte designt und und und

Man sollte es als Ingenieur mal gemacht haben aber das ist fast überall 
Aufgabe von technikern und Layouter, die das besser und schneller machen 
und vor allem wissen wie es produziert werden kann.
Hut ab vor manchen die 6 Lagen ohne Autorouter routen können!

Es gibt ne Menge Funkamateure, die jeden Master Ingenieur in die Tasche 
stecken! Mein erster Chef hatte nie studiert und war ein Genie in Sachen 
Konstruktion am CAD System. Alles DIY .... Motivation ist durch nichts 
zu ersetzen.

von W.S. (Gast)


Lesenswert?

Christian J. schrieb:
> Aber mit OP's, Transistoren und Dioden kennen sie sich aus..... darum
> sind sie Profis.

Na, das ist dann ja doch wenigstens was.

Aber mal ganz grundsätzlich: Heutzutage wird das Wort "Profi" von den 
meisten gleichgesetzt mit "besonders erfahrener Könner seines Gebietes" 
und das steckt nicht drin in dieser Büchse der Pandora. Ein Profi ist 
eben nur einer, der damit Geld verdienen will. Nix mehr. Und ein Amateur 
ist im Gegensatz zum Profi einer, der sich für die Sache interessiert 
aber damit kein Geld verdienen will.

Beispiel Lernbetty:
Die Betty-Fernbedienung wurde von Profis entwickelt, die damit gewaltig 
Knete machen wollten. Ist in die Hose gegangen. Als Fernbedienung ist 
das Teil lausig und relativ unbrauchbar, weil sie viel zu viel Strom 
frißt.

Wenn ich hingegen mich hinsetze und abends bei einer Flasche Rotwein 
dafür eine Art Mini-Betriebssystem schreibe, damit man mit dieser 
Fernbedienung ein bissel was lernen kann, dann bin ich bezüglich 
Betty-Fernbedienung ein Amateur. Schließlich verdiene ich mein Geld 
mit anderen Dingen und eben nicht mit der Lernbetty.

Es wäre sicherlich eine gute Sache gewesen für den Nachwuchs (sofern er 
nicht nur aus Möchtegern-Überfliegern besteht), wenn wesentlich mehr 
andere Amateure mit passendem Fachwissen sich dran beteiligt hätten. Die 
Crew damals war recht überschaubar.

Aber damit sind wir wieder bei der unseligen Neigung von Profis, sich 
alles zuzuhalten was geht. Bloß das bißchen Wissen das man hat NICHT 
weitergeben, es könnte ja ein anderer verstehen und das schmälert die 
Berufschancen (wenn man im Grunde ein Schmalspur-Profi ist). Mentale 
Kleinkariertheit ist ein mächtiger Antrieb in unserer Gesellschaft.

W.S.

von Ulrich H. (lurchi)


Lesenswert?

Das mit dem ROM und RAM an der gleichen Addresse ist nicht so 
kompliziert:
Das RAM kriegt immer die Schreibzugriffe. Die Lesezugriffe für den ROM 
Bereich werden halt umgeschaltet: mit ROM bekommt das ROM den 
Lesezugriff, und im RAM Mode kommt halt das RAM dran. Das CS Signal 
bekommen beide, Write Enable bekommt das RAM, nur OE wird halt getrennt. 
Das sollte nicht viel komplizierter sein als den Speicher in 8 K + 56 K 
zu teilen. Für ein einfaches System sollten aber auch 32 K RAM und bis 
zu 32 K EPROM reichen.

Für die Interruptvektoren usw. ist es halt so, dass diese vor dem 
umschalten erst einmal ins RAM geschrieben (z.B. aus dem ROM) werden 
müssen. Ein Teil des Kodes kann ggf. auch Kopiert werden. Ein paar Bytes 
vom RAM sind also mehr oder weniger fest belegt, können aber natürlich 
auch angepasst werden (z.B. anderes Ziel für Interrupt-Vektoren).

von Christian J. (Gast)


Lesenswert?

N'abend!


Mein Design wächst langsam mit der Demo Version des Eagle, denn auf dem 
Papier habe ich es schon länger aufgegeben. Falls jemand eine Z80 KIO 
als LIB hat bitte immer her damit.

Die Eurokarte ist leider bereits randvoll, auch wenn CTC und SIO durch 
die Verwendung des KIO (tausend Dank an A.K. für den Hinweis), den ich 
mir bestellt habe wegfallen. Damit löst sich auc das INT Problem in Luft 
auf, da die Uart diesen erzeugen kann, 16 INT bietet der Chip.

Über diesen Chip von Mostek gibt es sehr wenig, ich habe nur ein 
gescanntes uraltes Data Sheet gefunden. Musste auch 10 Euro für das Ding 
hinlegen. Was er drin hat reicht aber wohl auch, auch wenn ich den 
Horror habe vor "blind programmieren" (bin ziemlich LPCxxx Raspberry, 
und Arduino geschädigt mit Rundum-Sorglos-Paket durch die IDE), denn 
mehr als eine LED an HALT werde ich wohl nicht haben, um zb das Setup 
der KIO zu überpüfen. Bzw muss erst deren Uart laufen, um was zu sehen. 
Zuerst werde ich mir daher ein Debug Werkzeug schaffen müssen.

Folgende Fragen tun sich mir noch auf:

1. Ich will kein Gattergrab erzeugen, was leider sehr schnell geht. 
Reicht ein 74HCT138 aus, um 3 I/O Bausteine zu decodieren? Viele machen 
es mit Einzelgattern aber die Lösung gefällt mir besser. 3 
Adressleitungen auf 8 Demuxer Ports.

2. KIO Uart: Welchen uC Takt muss ich wählen, damit ich die bekannten 
Baudraten mit geringem Fehler erzeugen kann? Aktuell habe ich einen 
3.6864 Mhz Oszillatorbaustein und einen 4.0000 Mhz Baustein. Der KIO 
wird sicherlich über einen Teiler die asynchrone Übertragung bedienen.

3. Damit das Design nicht rein digital und schnöde ist möchte ich den 
Uralt ADC0804 einsetzen, den ich noch reichlich hier habe und den man in 
"Schulungsbrettern" mit LED und Poti oft sieht. Was ist sinnvoller, wenn 
er keinen INT an die Z80 liefern kann bzw soll. weil das ja nicht 
decodiert werden kann:

Ihn im free running mode laufen zu lassen, d.h. er wandelt dauernt oder 
die Wandlungen, die ja Zeit brauchen durch die CPU anzustossen? Wenn ich 
das Kuderwelsch da unten richtig deute wird ein I/O Lesezugriff die 
Wandlung anstossen. Aber nur anstossen. Beendet wird sie durch den INT, 
den ich ja nicht verwenden will.

Und woher nehme ich das Clock Signal von 640 khz? RC Kombination? 10k, 
150pf? Ich habe keinen Platz um den CPU Clock noch über Teiler zu jagen.

Gruss,
Christian


Ich habe diesen Text jetzt 5 Mal gelesen und bin immer noch nicht 
schlauer :-(

Datenbuch ADC0804:

The converter is started by having CS and WR simultaneously low. This 
sets the start flip-flop (F/F) and the resulting “1” level resets the 
8-bit shift register, resets the Interrupt (INTR) F/F and inputs a “1” 
to the D flop, F/F1, which is at the input end of the 8-bit shift 
register. Internal clock signals then transfer this “1” to the Q
output of F/F1. The AND gate, G1, combines this “1” output with a clock 
signal to provide a reset signal to the start F/F. If the set signal is 
no longer present (either WR or CS is a “1”) the start F/F is reset and 
the 8-bit shift register then can have the “1” clocked in, which starts 
the conversion process. If the set signal were to still be present, this 
reset pulse would have no effect (both outputs of the start F/F would 
momentarily be at a “1” level) and the 8-bit shift register would 
continue to be held in the reset mode. This logic therefore allows for 
wide CS and WR signals and the converter will start after at least one 
of these signals returns high and the internal clocks again provide a 
reset signal for the start F/F.

von Harald (Gast)


Lesenswert?

Nimmst du nun doch den klops der das retrolayout kaputt macht und den 
A.K. so verflucht hatte? Tztztz

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Über diesen Chip von Mostek gibt es sehr wenig, ich habe nur ein
> gescanntes uraltes Data Sheet gefunden.

Da ich das Original-Databook von MOSTEK 82/83 vorliegen habe, mit 
ebendiesem STI drin: Mehr war auch damals nicht üblich. Datasheets 
wurden auf abgeholzten Wäldern an den Mann gebracht, nicht als PDF.

> 1. Ich will kein Gattergrab erzeugen, was leider sehr schnell geht.
> Reicht ein 74HCT138 aus, um 3 I/O Bausteine zu decodieren?

Ja. Das war allgemein üblich. 2 Adressbits dekodieren reicht aus. Bei 
bis zu 4 Bausteinen tuts auch ein halber 74HCT139.

> 2. KIO Uart:

KIO war der PLCC 84 Klops. Du meinst sicherlich den STI.

> Welchen uC Takt muss ich wählen, damit ich die bekannten
> Baudraten mit geringem Fehler erzeugen kann?

Wie bei so ziemlich jeder anderen UART ohne fraktionalem Baudratentimer 
auch.

> Aktuell habe ich einen 3.6864 Mhz Oszillatorbaustein

Also ein Baudratenquarz. Perfekt.

> Was ist sinnvoller, wenn er keinen INT an die Z80 liefern kann

Warum nicht? Die 8 I/Os des STI sind eigentlich Interrupt-Eingänge, die 
auch als Portbits verwendet werden können.

> Und woher nehme ich das Clock Signal? RC Kombination? 10k, 150pf?

Klar.

> Ich habe diesen Text jetzt 5 Mal gelesen und bin immer noch nicht
> schlauer :-(

Schreibzugriff auf den ADC startet die A/D-Wandlung. Dann warten bis 
INTR aktiv und Ergebnis per Lesezugriff auslesen. Das wars auch schon.

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


Lesenswert?

Harald schrieb:
> Nimmst du nun doch den klops der das retrolayout kaputt macht und den
> A.K. so verflucht hatte? Tztztz

Ich nehme an, dass er die grad verwechselt hat. Denn der KIO ist nicht 
von MOSTEK und gekauft hat er den STI wohl: Es war kurz drauf einer 
weniger im eBay-Angebot.

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

Harald schrieb:
> Nimmst du nun doch den klops der das retrolayout kaputt macht und den
> A.K. so verflucht hatte? Tztztz

Nein! Nicht den Klops! den STI, sorry !

>>Schreibzugriff auf den ADC startet die A/D-Wandlung. Dann warten bis
>>INTR aktiv und Ergebnis per Lesezugriff auslesen. Das wars auch schon.

Und wieso schreiben die das nicht? umkipp Das interne Geschwurbel des 
Chips interessiert keinen. 30 Seiten Data Sheet für diesen einfachen 
Chip.....

Ok, Schreibzugriff aber da er kein Register hat wo man reinschreiben 
kann wird es wohl egal sein was auf dem Datenbuss liegt. Nur RD wird den 
Inhalt auf diesen legen.

von (prx) A. K. (prx)


Lesenswert?

Ach ja: Richtig Retro wäre natürlich SN75188+189 statt MAX232. ;-)

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Und wieso schreiben die das nicht? *umkipp*

Tun sie doch. Erstens sieht das doch jeder im Functional Diagram ;-), 
zweitens wären da noch Fig 10A und 10B.

> Ok, Schreibzugriff aber da er kein Register hat wo man reinschreiben
> kann wird es wohl egal sein was auf dem Datenbuss liegt.

So isses.

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

A. K. schrieb:
> Ach ja: Richtig Retro wäre natürlich SN75188+189 statt MAX232. ;-)

Das wird VOLL Retro .... ein kleiner Chinese schaufelt die Bits einzeln 
von der Uart zum PC hin und zurück.

Nee..... habe schon sowas hier...

Dumme Frage: Hast du die 74er Reihe komplett als "durchsuchbare" pdf's. 
Falls ja wäre eine dickes ZIP File Richtung meiner einer möglich?

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Gibt es vielleicht noch Bausätze fix und fertig für Z80 Maschinen mit
> einer Art Bildschirm und Tastatur? Da kann man ja was Modernes nehmen.

Ich glaub ja. Bin letztes Jahr auf einer Retro-Messe (hehe, es waren 
immerhin ein Dutzend Tische ;-) über Leute gestolpert, die neue Z80 
Platinen gezielt für Retro-Fans anbieten.

von Christian J. (Gast)


Lesenswert?

Diesen Quark hier habe ich mir in München angetan, nach 1h war ich 
wieder weg :-( Mir schien, dass einige dort zu lange radioaktive 
Strahlung von Monitoren inhaliert haben oer sonstwie "geschädigt"
waren.

http://blog.spielquader.de/wp-content/gallery/muenchen-vcfe-2013/img_3060.jpg

SN75..... bah, der braucht ja -15,+15, noch einen Retro DC/DC Wandler 
(Recom) kaufen für teuer Geld. Oder eine extra Schaltstufe als 
Spanungspumpe......

von Michael_ (Gast)


Lesenswert?

Christian J. schrieb:
> Dumme Frage: Hast du die 74er Reihe komplett als "durchsuchbare" pdf's.
> Falls ja wäre eine dickes ZIP File Richtung meiner einer möglich?
Wenn du das hast, stellst du keine Fragen mehr.
ebay 121429871779

von Christian J. (Gast)


Lesenswert?

Michael_ schrieb:
> Christian J. schrieb:
>> Dumme Frage: Hast du die 74er Reihe komplett als "durchsuchbare" pdf's.
>> Falls ja wäre eine dickes ZIP File Richtung meiner einer möglich?
> Wenn du das hast, stellst du keine Fragen mehr.
> ebay 121429871779

Jahr: 1985, 2. Auflage

Was it mit HCT, HC? Wo hört der auf? Bei 74xx200?

Kann ich mir das auf meinen Kindle laden? :-)


Die hatte ich mal, habe sie idiotischerweise weggeworfen bei einem 
Umzug.

http://www.auctionworld.at/eBay-Bilder/ttl.jpg

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

Christian J. schrieb:
> Dumme Frage: Hast du die 74er Reihe komplett

Aber klar doch.

: Bearbeitet durch User
von Michael_ (Gast)


Lesenswert?

Christian J. schrieb:
> Was it mit HCT, HC? Wo hört der auf? Bei 74xx200?

Was willst du z. Bsp. mit HC? Bei den alten Z80 Chip und der Pheripheri 
mußt du die Lastfaktoren beachten.
Die Z80 sind sehr empfindlich gegenüber Timing. Eigentlich mußt du die 
Baugruppen über Bustreiber entkoppeln.

Christian J. schrieb:
> Kann ich mir das auf meinen Kindle laden? :-)

Ja, leg das Buch einfach drauf.

von Christian J. (Gast)


Lesenswert?

Michael_ schrieb:

> mußt du die Lastfaktoren beachten.
> Die Z80 sind sehr empfindlich gegenüber Timing. Eigentlich mußt du die
> Baugruppen über Bustreiber entkoppeln.

Moment.... ohne da jetzt nachgeschaut zu haben..... "schneller ist 
besser"? Der Z80 geht ja nunmal gemächlich daher, die Zeiten im Manual 
sind recht gemütlich alles über 100ns. Der Ram den ich habe hat 20ns 
Zugriffszeit. Die HCT, die ich einsetze (LS habe ich auch noch) takten 
bis fast 100 Mhz.

Was muss ich also beachten? Logik Anlyszer habe ich, nachschauen geht 
also immer.

von (prx) A. K. (prx)


Lesenswert?

Christian J. schrieb:
> Diesen Quark hier habe ich mir in München angetan, nach 1h war ich
> wieder weg :-(

Nicht München, sondern CH, aber war ganz lustig. Aber nicht so sehr das 
was da rumstand. Vielmehr hatte ich recht angeregte Diskussion mit 2-3 
anderen "Oldies", darunter einer aus der Münchner Szene.

> SN75..... bah, der braucht ja -15,+15

+/-12V tun es auch. Und jetzt weisst du auch, warum die Stromversorgung 
vom PC bis heute -12V drauf hat. ;-)

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


Lesenswert?

Michael_ schrieb:
> Eigentlich mußt du die
> Baugruppen über Bustreiber entkoppeln.

Ach wo, nicht in der Dimension, also bei CPU, STI und 2xADC. Wenn er da 
einen externen Bus dran hängen wollte, ja dann.

von Christian J. (Gast)


Lesenswert?

A. K. schrieb:

> +/-12V tun es auch. Und jetzt weisst du auch, warum die Stromversorgung
> vom PC bis heute -12V drauf hat. ;-)

Vielleicht macht hier ja noch einer einen Thread mit einem "4004" Design 
auf.... glaube der hatte auch -15V, +15V und brachte seine Programmierer 
schneller in die Klapse als der Z80.

Das hier ist ein Die-Shot des 68000, gibt es bis 10000 Pixel, also ein 
230 MG grosses Bild. Ich frage mich welche armen menschen da das Layout 
gemacht haben, so ohne Place & Route Tools, war doch Zeichenbrett Ära 
damals...


http://www.visual6502.org/images/68000/Motorola_68000_die_20x_1a_top_1600w.png

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


Lesenswert?

Christian J. schrieb:
> Die Eurokarte ist leider bereits randvoll, auch wenn CTC und SIO durch
> die Verwendung des KIO ... wegfallen.

[gemeint ist der STI, aber egal]

> Über diesen Chip von Mostek gibt es sehr wenig, ich habe nur ein
> gescanntes uraltes Data Sheet gefunden. Musste auch 10 Euro für das Ding
> hinlegen. Was er drin hat reicht aber wohl auch, auch wenn ich den
> Horror habe vor "blind programmieren"

Tolle Wurst. Statt der gut dokumentierten SIO nimmst du also lieber den 
schlecht (bis gar nicht) dokumentierten STI, bei dem du noch nicht mal 
nachmessen kannst, ob du denn nun die Baudrate korrekt eingestellt hast. 
Ja, so wird das bestimmt was </ironie>

Und eine Europakarte voll? Mit dem bisschen Zeug? Laß halt nicht so viel 
Luft dazwischen.

Christian J. schrieb:
> Das hier ist ein Die-Shot des 68000, gibt es bis 10000 Pixel, also ein
> 230 MG grosses Bild. Ich frage mich welche armen menschen da das Layout
> gemacht haben, so ohne Place & Route Tools, war doch Zeichenbrett Ära
> damals...

Das waren halt richtige Ingenieure damals. Die konnten sicher auch noch 
das Datenblatt der Z80 SIO lesen und verstehen ... SCNR


XL

von (prx) A. K. (prx)


Lesenswert?

Axel Schwenke schrieb:
> Tolle Wurst. Statt der gut dokumentierten SIO nimmst du also lieber den
> schlecht (bis gar nicht) dokumentierten STI, bei dem du noch nicht mal
> nachmessen kannst, ob du denn nun die Baudrate korrekt eingestellt hast.

Keep cool. 16 Seiten, alles drin was man wissen muss. Da der keine 
synchronen Protokolle kann braucht man auch weniger Doku. Und da der 
Baudratentimer extern auf die Takteingänge der UART verkabelt wird, kann 
man problemlos nachmessen.

von Leo C. (rapid)


Lesenswert?

Christian J. schrieb:
> Dumme Frage: Hast du die 74er Reihe komplett als "durchsuchbare" pdf's.
> Falls ja wäre eine dickes ZIP File Richtung meiner einer möglich?

Hier in linker Spalte Gruppe auswählen, und dann rein in die 
parametrische Suche:
http://www.ti.com/lsds/ti/logic/home_overview.page


A.K., von wann sind denn Deine TTL-Schinken? Bei mir ist das nur ein 
Band "Fifth European Edition 1982", 4cm dick.

von Christian J. (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Und eine Europakarte voll? Mit dem bisschen Zeug? Laß halt nicht so viel
> Luft dazwischen.

Du bist ein kleiner Klugsch..... denn solche Pingräber zu verbinden 
erfordert präzise und ordentliche Arbeitsweise. Und die wird bei mir 
unter der Leucht-Lupe mit Fädeltechnik gemacht, kleinen Stegen, die man 
drunter klebt vor jede Pinreihe, so dass das ganze Board mit einer 
Autobahn für 0,2mm Drähte versehen wird. Mit normalem Kupferlackdraht 
0,5mm wird es schon zur Geduldsprobe zwei Kabel in einen Lötpunkt 
einzulöten, da der eine immer raushüpft, wenn du den anderen reinlöten 
willst. Mit 0,2mm passiert das aber nicht, da diese keine 
Eigenspannungen haben, du kanst locker 3-4 Kabel an einem Pin anbinden. 
In einem Kamm kann ich ca 30-40 Drähte parallel führen. Leider muss man 
dabei aber oben mehr Abstand lassen da die Kämme 2 Lochreihen für sich 
brauchen. Der grosse Nacteil ist, dass Falsche Verdrahtungen nicht mehr 
lösbar sind, da du den Draht nicht mehr rausziehen, nicht mal 
identifizieren kannst. Da hilft nur abschneiden am Pin und neuen ziehen, 
den alten drin liegen lassen.

Das ist alles schon gut durchdacht und der STI hat "3 in 1" mit 40 Pins 
statt " 3 in 3"  mit 100 Pins.

:-)

von Christian J. (Gast)


Angehängte Dateien:

Lesenswert?

So schauts aus bisher... wobei die rechte Platine eine andere ist.

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.