Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » U880 (bzw. Z80) im Einzelschrittbetrieb - Grundlagen? » Themenansicht

Autor Thread - Seiten: -1-
000
28.02.2016, 18:51 Uhr
Micha

Avatar von Micha

wie schon im Titel gesagt - gibts irgendwo einen guten, verständlichen Text, der beschreibt wie man einen U880 (Z80) in Einzelschritten seine Kommandos abarbeiten (und auswerten) läßt? Also keinen Emu, sondern die echte Hardware.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
28.02.2016, 19:01 Uhr
Andreas



Na zum Beispiel im Kramer "Praktische Mikrocomputertechnik" in der 2.berichtigten Ausgabe ab S.38. Gleich mit Schaltungen.Lötspitzes Platine kennst Du (ist daraus nachempfunden).

Andreas
--
Viele Grüße
Andreas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
28.02.2016, 19:07 Uhr
Micha

Avatar von Micha

Nein, Lötspitzes Platine kenn ich (noch) nicht. Aber Danke für den Tip!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
28.02.2016, 19:24 Uhr
u808



Im Funkamateur 1984 Heft 4 Seite 172 ist auch noch was.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
29.02.2016, 11:25 Uhr
d.elm

Avatar von d.elm

Ich habe mir eine Baugruppe mit K1520 Bus auf einer Lochrasterplatte gebaut. Die Logik ist in einem XC95108 untergebracht. Zur Anzeige des Adress- Daten- und Steuer-Bus habe ich ein 4*20 Zeichen LCD Display benutzt. Ein PIC16 übernimmt die Ansteuerung des Display und holt über SPI die Daten aus dem XC95108. Es kann Schrittbetrieb und RUN eingestellt werden. Es ist auch möglich immer eine Stop Adresse vorzugeben. Einen Nachteil hat das Ganze: eine Refrech Logik hat nicht mehr in den XC95108 gepasst. Somit ist das nur für Systeme mit S-RAMs sinnvol zu verwenden.
Mir hat das schon gute Dienste geleistet.

Gruß Detlef
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
29.02.2016, 12:56 Uhr
wpwsaw
Default Group and Edit


Hallo,

der poly 880 hat Schrittbetrieb. Das könnte man aus den Handbüchern entnehmen. in Meinem Bus-Analysator vom KC85 ist auch ein Schrittbetrieb enthalten.

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
29.02.2016, 13:20 Uhr
edbru





Eine ganz einfache Lösung für Schrittbetrieb - natürlich nur für sRAM geeignet. Ist aus der Anleitung vom LLC1 von G. Maudrich.
Es wird immer ein kompletter Befehl abgearbeitet, nicht ein Takt.

Gruß
Eddi
--
ich brauch es nicht, so sprach der Rabe.
Es ist nur schön wenn ich es habe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
29.02.2016, 15:46 Uhr
Digitalmax

Avatar von Digitalmax

Die Schaltung von Herrn Maudrich funktioniert bestimmt in den meisten Fällen, mich stören dabei aber die RC-Glieder. Wenn man es schöner haben will, sollte man mit zwei FF genau einen Taktimpuls des CPU-Taktes benutzen um das Waitsignal zu deaktivieren, dann funktioniert es auch bei unterschiedlichen Taktfrequenzen und ist hübsch DIGITAL.

Gruß Matthias
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
29.02.2016, 16:41 Uhr
holm

Avatar von holm

Die Einzelschrittmimik ist für das Debugging defekter Hardware ja ganz brauchbar, zur Programmentwicklung aber eher weniger. Dafür ist ein Einzelschrittsystem wie im MC80.2x IMHO vor zu ziehen. Dort wird ein CTC Kanal scharf gemacht dessen Eingang mit M1 verbunden ist, eine Art Debuggingenvironment geladen (Registerinhalte in die CPU schaffen und zu testendes Programm anspringen) und nach einer Anzahl Befehlen durch den CTC ein Interrupt ausgelöst der genau während des abzuarbeitenden Befehls eintrifft, die Befehlsabarbeitung wird also nach einem Befehl wieder unterbrochen, die CPU wieder ausgeräumt und die Register zur Anzeige gebracht.

Das läuft natürlich nicht in Echtzeit, aber man kann auch nach dem 15. M1 anhalten, Interrupts dürfen nicht gesperrt werden usw...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 29.02.2016 um 19:42 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
29.02.2016, 16:49 Uhr
Andreas



Ja Holm, da hast Du völlig Recht. Das beschriebene Verhalten hat auch der LC80 und kann somit jetzt von vielen Probiert werden.

Andreas
--
Viele Grüße
Andreas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
29.02.2016, 18:03 Uhr
Micha

Avatar von Micha

Stimmt ja, daran hatte ich garnicht gedacht - der Z80 ist ja kein RISC, da ist ein Maschinenzyklus u.U. keine komplette Instruktion. Und um an Registerinhalte, Flags usw. ranzukommen, braucht es eben auch etwas mehr.

Hintergrund meiner ursprünglichen Frage: ich will mein Z180 Projekt von vor ca. 3 Jahren mal wieder ausmotten, und etwas weiterentwickeln. Die Hardware von damals enthielt einen Boot-Umschalter, mit dem entweder CP/M oder Basic gestartet werden konnte. Aber Basic kann man natürlich auch unter CP/M haben - mir schwebt jetzt vor, als Alternative zu CP/M ein Monitorprogramm zusammenzustricken, das dann eben auch einen Einzelschrittbetrieb des Z180 ermöglicht.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
29.02.2016, 20:46 Uhr
Digitalmax

Avatar von Digitalmax

Hallo Micha,

für den Hardwaretest ist eine Hardware-Einzelschrittlogik sehr hilfreich (z.B. wenn Adressen, Daten oder Steuersignale zu prüfen sind. Man kann es auch weiterführen und den angeschlossenen Speicher deaktivieren (K1520 /MEMDI) und den Datenbus mit Befehlen belegen (Input, Output, Speicherzugriff u.s.w.).
Ein Monitorprogramm mit Einzelschrittbetrieb testet doch Software, oder?
Das wäre dann ein Emulator.

Gruß Matthias
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
01.03.2016, 10:18 Uhr
rm2
Default Group and Edit
Avatar von rm2

Hallo an alle,

wie weit kann man eigentlich eine ZRE K2521 runter Takten, damit sie in einem K1520-System mit K7024-Bildschirmkarte und zu testender Leiterplatte noch funktioniert?


mfg Ralph
--
.
http://www.ycdt.net/mc80.3x . http://www.ycdtot.com/p8000
http://www.k1520.com/robotron http://www.audatec.net/audatec
http://www.ycdt.de/kkw-stendal
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
01.03.2016, 11:08 Uhr
P.S.



Den Takt bei der U880-CPU anhalten für den Einzelschrittbetrieb ist problematisch, da die internen Speicherzellen dynamischen Charakter haben. Nicht umsonst wird der Maxwert einer Taktbreite von 2000ns angegeben, d.h. unter Tc < 250kHz wird's kritisch. Alles was darunter ist - demzufolge auch 0Hz würde die dynamischen Speicherzellen negativ beeinflussen.
Dabei ist noch nicht berücksichtigt, wie sich ein niedriger Takt auf angrenzende Peripherie, wie z.B. dynamische Speicher auswirkt.

Die korrekte Funktionsweise eines Taktzyklusses - und nur darauf kommt es letztendlich bei Hardware-Problemen an - kann hingegen mit Busanalysatoren (gibt's z.B. für den EC1834) oder auch mit meinem CPU-Simulator
http://www.ps-blnkd.de/CPU-Simulator.pdf
getestet werden.

Hingegen gehört der Einzelschrittbetrieb bei Software-Simulationen zum Standard-Werkzeug einer jeden IDE.

Das Wissen der Menschheit gehört allen Menschen! -
Wissen ist Macht, wer nur glaubt, der weiss nichts! -
Jedoch - Unwissenheit schützt vor Strafe nicht! -
Gegen die Ausgrenzung von Unwissenden und für ein liberalisiertes Urheberrecht!
PS
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
01.03.2016, 11:08 Uhr
edbru



solange keine DRAMs mitspielen beliebig. Der Z80 ist ein statisches System. Du kannst den Takt auch von Hand auslösen und dazwischen Mittag essen.

Gruß
Eddi
--
ich brauch es nicht, so sprach der Rabe.
Es ist nur schön wenn ich es habe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
01.03.2016, 12:26 Uhr
holm

Avatar von holm

@edbru: Nein, das stimmt nicht. Du kannst das mit den CMOS Versionen tun, mit den NMOS Teilen geht das nicht, so "voll statisch" ist das Design nicht. Ich habe das auch erst kürzlich wieder auf einer Webseite gelesen.

Man kann mit WAIT oder BUSRQ das ganze Gemüse anhalten, das ist richtig, aber der Takt darf nicht verschwinden.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 01.03.2016 um 12:29 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
01.03.2016, 16:15 Uhr
edbru



ja Du hast Recht. Hab wohl diese Webseite auch gefunden.

http://forum.tlienhard.com/phpBB3/viewtopic.php?t=917%26p=8983

Gruß
Eddi
--
ich brauch es nicht, so sprach der Rabe.
Es ist nur schön wenn ich es habe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
01.03.2016, 18:14 Uhr
Digitalmax

Avatar von Digitalmax

LEDs an einer Standard-TTL-Last? Nicht entprellte Schalter? Der Pegel des Taktes sollte auch zusätzlich nach 5V angehoben werden- war das so?

Als Referenz für das reguläre Betriebsverhalten von Z80-CPUs erscheint mir das nicht vertrauenswürdig. Wenn man zu diesem Thema etwas aussagen will muß man Genaues zu der Verschaltung des Innenlebens wissen.

Nimmt man es nicht so ernst, ist es aber unterhaltsam.

Gruß Matthias
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
01.03.2016, 21:16 Uhr
holm

Avatar von holm

Naja Matthias, Alles ist relativ..auch die Maximale Last an einem Ausgang. Eine TTL Last ist spezifiziert wenn die TTL Logikpegel eingehalten werden sollen. IMHO wurde aber der Betrieb einer LED direkt am Ausgang immer toleriert, Praxis war das auch schon an einer PPI 8255.

Als Taktperiode ist in der U880 Doku (Blaue A4-Schwarte) ein Minimum von 400ns und als Maximum die Summe der H und L Zeiten des Taktes von je maximal 2000ns und der Anstiegs und Abfallzeiten von je 30ns angegeben, also 2,5Mhz und 246Khz.

Ich bin mir auch nicht sicher ob ich meine Info nicht von einer englischen Webseite hatte..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 01.03.2016 um 21:16 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
01.03.2016, 22:04 Uhr
Mario Blunk

Avatar von Mario Blunk

Nun will auch ich meinen Senf dazugeben. Diese Schaltung könnte es auch tun:

http://www.blunk-electronic.de/train-z/hw/stepper.pdf

Selbige habe ich zwar nicht mit diskreter Logik nachgebaut, aber in Verilog in einen CPLD gebrannt, funktioniert bestens. Sollte also auch in dieser Form funktionieren.
--
Mein Chef ist ein jüdischer Zimmermann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
01.03.2016, 22:04 Uhr
edbru



hab hier das noch


leider weiß ich nicht mehr woher. Sieht aber aus wie aus einem DDR-Buch.
Danach scheint doch der U880 auch langsamen Takt akzeptiert zu haben.
Sicher außerhalb der Spezifikation.
Irgendwoher hab ich auch die Erinnerung dass der Takt beliebig lange High sein darf nur Low sollte um 200ms sein.

Aber warum?
--
ich brauch es nicht, so sprach der Rabe.
Es ist nur schön wenn ich es habe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
01.03.2016, 22:49 Uhr
holm

Avatar von holm

"Z80" und "74121" in einem DDR Buch? Was haben die Beschlüsse des VIII. Parteitags dazu gesagt?


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 01.03.2016 um 22:50 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
02.03.2016, 09:02 Uhr
P.S.



@edbru <014>
Ich habe nochmal nachgelesen - in der "Technischen Beschreibung CPU U880D" (A4-Heft) steht auf S.5 (Zitat): "Alle U880-Register sind als statische RAMs ausgeführt". Demnach müsste Deine Aussage richtig sein, wenn das auf das Gesamtsystem zuträfe. Dem widerspricht aber die Einschränkung der Takt-Spezifikation auf S. 58, wobei diese nur "Kennwerte" sind, d.h. damit sind alle weiteren Kennwerte definiert. Grenzwerte sind leider nicht angegeben.
Es müssen also noch andere Gesichtspunkte eine Rolle spielen, die diese Einschränkung erforderlich macht.

Zu beachten ist bei derlei Untersuchungen, dass der U880D kein direkter "Clon" eines Z80 ist (wie bisher immer vermutet wurde, sprich entstanden anhand von Entwicklungsunterlagen, die durch die besonderen "Dienste" angeblich beschafft wurden) sondern eine geschickt gemachte "Nachentwicklung" mit der in Erfurt zur Verfügung stehenden nMOS-Technologie und mit nach außen hin vergleichbaren Eigenschaften eines Z80.

Das Wissen der Menschheit gehört allen Menschen! -
Wissen ist Macht, wer nur glaubt, der weiss nichts! -
Jedoch - Unwissenheit schützt vor Strafe nicht! -
Gegen die Ausgrenzung von Unwissenden und für ein liberalisiertes Urheberrecht!
PS
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
02.03.2016, 13:30 Uhr
edbru



ja Holm, hab die Quelle gefunden: Mikrocomputer Hard- und Softwarepraxis Klein, Rolf-Dieter Franzis-Verlag 1982.

und ja P.S., schon damals war uns aus unerfindlichen Quellen klar dass der U880 nicht einfach nachgebaut wurde weil sowas kaum geht wenn man nicht die originalen Vorlagen (Glasnegative oder wie man das nennt) hat.
Es gibt ja auch unzählige Hersteller von Z80 Derivaten (z.B. NEC780) die ähnlich sind aber eben keine 1:1 Kopien von Zilog.

Aber es ging ja hier wohl um einfache Hardware zum testen die einfach funktionieren soll.

Gruß
Eddi
--
ich brauch es nicht, so sprach der Rabe.
Es ist nur schön wenn ich es habe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
03.03.2016, 08:41 Uhr
P.S.



@edbru <023>
Die anderen (NSW-)Hersteller des Z80 hatten i.d.R. die Möglichkeit eine Lizenz nehmen zu können, was uns und auch den Russen verwehrt war (Stichwort: COCOM). Somit waren die in der Lage anhand der Original-Entwicklungsunterlagen - welche i.d.R. der Gegenstand einer Lizenz sind - die Schaltkreise mit ihren technologischen Möglichkeiten zu fertigen.
Niemand von den NSW-Herstellern hätte sich den Entwicklungsaufwand leisten können, das Z80-System "nachzuempfinden".

Es ging hier jedoch auch um die Aufklärung der Diskrepanz zwischen der Aussage "Alle U880-Register sind als statische RAMs ausgeführt" und der Takt-Spezifikation ...

Das Wissen der Menschheit gehört allen Menschen! -
Wissen ist Macht, wer nur glaubt, der weiss nichts! -
Jedoch - Unwissenheit schützt vor Strafe nicht! -
Gegen die Ausgrenzung von Unwissenden und für ein liberalisiertes Urheberrecht!
PS
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
03.03.2016, 10:31 Uhr
kaiOr

Avatar von kaiOr

Hier steht etwas dazu:
http://www.righto.com/2014/10/how-z80s-registers-are-implemented-down.html


Zitat:
The toggle flip flops are unlike standard flip flops formed from gates. Instead they use pass transistors; this lets it hold the previous state while toggling to avoid oscillation. Because the pass transistor circuits depend on capacitance holding the values, you have to keep the clock running. This is one reason the clock in the Z80 can't stop for more than a couple microseconds. (The CMOS version is different and the clock can stop arbitrarily long.)


Was angeblich dazu führt, dass die Weichenstellung zwischen normalen und alternativen Registersatz des Z80 wackelig wird. Je nachdem welchen Registersatz der NMOS-Z80 bevorzugt kann man ihn vielleicht doch statisch betreiben, sofern auf Austauschbefehle verzichtet wird.

MfG

Dieser Beitrag wurde am 03.03.2016 um 10:33 Uhr von kaiOr editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
03.03.2016, 12:44 Uhr
Early8Bitz

Avatar von Early8Bitz

Im Thread
Z80-Nachbau: U880

Post <015>

kam ja schon mal zur Sprache, dass beim "Redesign" durch die Funkwerk Ingenieure Bugs aus dem originalen Z80 erkannt und gefixt wurden.
Bezieht sich in <015> nicht explizit auf die Implementierung der Register,
erklärt aber, dass sich ein U880 in Grenzsituationen (z.B. Betrieb außerhalb der Datenblattkennwerte)
anders verhalten kann, als die Z80-CPU.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 03.03.2016 um 12:45 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
03.03.2016, 19:12 Uhr
PIC18F2550

Avatar von PIC18F2550

Was ist mit der Variante M1 und NMI?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
03.03.2016, 19:12 Uhr
PIC18F2550

Avatar von PIC18F2550

Sie haben keine Erlaubnis, diesen Beitrag zu löschen.

Wiso darf ich nicht löschen?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 03.03.2016 um 19:16 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
04.03.2016, 09:23 Uhr
P.S.



@kaiOr <025>
Danke für den Link. Habe noch nie so'ne detaillierte Auseinandersetzung mit der Z80-Interna gesehen - incl. kommentierte Chip-Fotos!
Schade, dass kein Datum dabei steht, wann diese Doku entstanden ist.
Wenn das die Erfurter Re-Design-Ings schon damals in die Hände bekommen hätten, wäre eine Menge Arbeit erspart geblieben.
Nun habe ich den engl. Text nicht im Detail durchgearbeitet, aber was da steht, könnte die Erklärung sein, weshalb einerseits statische Register vorhanden sind, andererseits Taktbeschränkungen nach unten hin existieren. Wenn das den Erfurtern bekannt gewesen wäre - vielleicht war's das ja auch - hätten die doch eigentlich dieses "kleine" Manko auch noch beseitigen können. Eine Ausweitung der Taktbedingungen stellt m.E. keine Diskrepanz zur Kompatibilität mit dem Vorbildtyp dar.

Das Wissen der Menschheit gehört allen Menschen! -
Wissen ist Macht, wer nur glaubt, der weiss nichts! -
Jedoch - Unwissenheit schützt vor Strafe nicht! -
Gegen die Ausgrenzung von Unwissenden und für ein liberalisiertes Urheberrecht!
PS

Dieser Beitrag wurde am 04.03.2016 um 09:25 Uhr von P.S. editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
04.03.2016, 11:26 Uhr
holm

Avatar von holm

Was heißt hier Manko? Wobei stört denn die Restriktion den Takt nicht auf 0 herunterfahren zu dürfen?

Das braucht kein Schwein, wie Millionen von Z80 Rechnern beweisen.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
04.03.2016, 14:49 Uhr
Early8Bitz

Avatar von Early8Bitz

So sind halt die Menschen -
den Einen gehts nicht schnell genug und sie betreiben Overclocking bis zur Rauchwolke;
und die Anderen weinen, weil sie den Takt nicht bis auf Null runterfahren können.
Dabei wird das Ding doch Arschlangsam.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
04.03.2016, 15:26 Uhr
holm

Avatar von holm

Man kann den Z80 durch einfügen von Waitstates beliebig langsam machen und anhalten, man kann ihm den Bus klauen..warum muß man ihn unbedingt langsam takten müssen? Ich verstehe das Problem gar nicht.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
05.03.2016, 09:10 Uhr
wpwsaw
Default Group and Edit


Ja Holm, ich auch nicht. Wie ich schon in 005 geschrieben habe, besitzt der Poly880 eine Einzelschrittlogik, wo man jeden Befehlsschritt nachvollziehen kann und nach jedem MCylus sich die Register ansehen kann. Die Hardware und das Monitorprogramm sind in den Handbüchern beschrieben.

Gruß
wpw
--
RECORD, CRN1; CRN2; PicoDat; LC80; Poly880; KC85/2,3,4,5 ; KC87; Z1013; BIC; PC1715; K8915; K8924; A7100; A7150; EC1834; und P8000 ab jetzt ohne Tatra813-8x8 aber mit W50LA/Z/A; P3; ES175/2 und Multicar M25 3SK; Barkas B1000 HP

Dieser Beitrag wurde am 05.03.2016 um 09:10 Uhr von wpwsaw editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
05.03.2016, 09:29 Uhr
ggrohmann



Ich habe noch 1990/91 an der Uni Magdeburg mit einem U880 experimentiert, den wir in einem Versuch in einer Art Einzelschrittmodus betrieben haben. Die Befehle wurden mittels Drehschaltern eingegeben, und die Signale durch LEDs angezeigt. So haben wir dann ein paar Taktdiagramme aufgenommen - ich fand das sehr anschaulich.

Einen Taktschritt mußten wir durch Druck auf eine Taste erzeugen.

Guido
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
13.03.2016, 14:01 Uhr
Enrico
Default Group and Edit


Das:



Zitat:
holm schrieb
Die Einzelschrittmimik ist für das Debugging defekter Hardware ja ganz brauchbar, zur Programmentwicklung aber eher weniger. Dafür ist ein Einzelschrittsystem wie im MC80.2x IMHO vor zu ziehen. Dort wird ein CTC Kanal scharf gemacht dessen Eingang mit M1 verbunden ist, eine Art Debuggingenvironment geladen (Registerinhalte in die CPU schaffen und zu testendes Programm anspringen) und nach einer Anzahl Befehlen durch den CTC ein Interrupt ausgelöst der genau während des abzuarbeitenden Befehls eintrifft, die Befehlsabarbeitung wird also nach einem Befehl wieder unterbrochen, die CPU wieder ausgeräumt und die Register zur Anzeige gebracht.

Das läuft natürlich nicht in Echtzeit, aber man kann auch nach dem 15. M1 anhalten, Interrupts dürfen nicht gesperrt werden usw...

Gruß,

Holm



muss ich nochmal vorkramen. Hab schon die ganze Zeit gegrübelt, bin aber zu keinem Ergebnis gekommen, wie das funktionieren soll.

Die CPU führt /M1 Zyklus aus. /M1 und /MREQ sind aktiv und lösen bei der CTC einen Interrupt aus.
Dadurch wird in die ISR gesprungen.
Dadurch wurden doch alle oder die meisten Register geändert.
Wie soll das gehen?

(fast) aktuell könnte man so eine Debug Möglichkeit gut brauchen.

Gibts die Quellen dazu irgendwo?
--
MFG
Enrico

Dieser Beitrag wurde am 13.03.2016 um 14:02 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
13.03.2016, 15:55 Uhr
ambrosius



Wenn die CPU einen Interruptzyklus annimmt, dann wird erst der aktuelle Befehl ausgeführt, dann mittels speziellem 'CALL' in die Interruptroutine verzweigt. Dort sind alle Register - bis auf PC - noch so, wie sie vor dem CALL waren. Jetzt also CPU ausräumen, Register anzeigen usw. Danach CPU entsprechend einräumen und weiter geht's. Als Listing hast Du das z.B. im LC80 verfügbar, aber auch im relativ unbekannten Monitorsystem aus elektronica 227/228
--
viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
13.03.2016, 16:03 Uhr
Enrico
Default Group and Edit


Ja, eben.
"CPU ausräumen". ein Befehl und es stimmt nicht mehr.

An Code habe ich weder das eine noch das andere.
--
MFG
Enrico

Dieser Beitrag wurde am 13.03.2016 um 16:03 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
13.03.2016, 18:37 Uhr
holm

Avatar von holm

Was hast du denn Enrico, das was da nicht stimmt ist doch nur der PC und der liegt auf dem Stack.
Es ist doch auch nicht irgend eine ISR die da angesprungen wird, sondern die für Einzelschritt und die "weiß" was zu tun ist.

>An Code habe ich weder das eine noch das andere.

..na dann kümmere Dich drum wenn Dich das interessiert..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
13.03.2016, 19:04 Uhr
Enrico
Default Group and Edit



Zitat:
holm schrieb
Was hast du denn Enrico, das was da nicht stimmt ist doch nur der PC und der liegt auf dem Stack.
Es ist doch auch nicht irgend eine ISR die da angesprungen wird, sondern die für Einzelschritt und die "weiß" was zu tun ist.

>An Code habe ich weder das eine noch das andere.

..na dann kümmere Dich drum wenn Dich das interessiert..

Gruß,

Holm



Dann lass mir das bitte mal zukommen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
13.03.2016, 19:33 Uhr
holm

Avatar von holm

Den Quellcode das MC80 Testsystems findest Du bei mir auf dem Server unter MCS80.
Die LC80-Monitorquellen sind auf Volker Pohlers Webseite zu finden:
http://hc-ddr.hucki.net/wiki/lib/exe/fetch.php/lc80:software.zip

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
14.03.2016, 09:44 Uhr
ambrosius



Im Monitor zum Huebler/Evert-Computer (electronica 227/228) sieht das so aus:


Quellcode:

SSP:    dw    0        ; Zwischenspeicher für SP
HIF:    dw    0
UREG    equ    HAF
HAF:    dw    0        ; CPU-Register

;CPU ausräumen
UPUSH:  ld    (SSP), sp
        ld    sp, HIF
        push    iy
        push    ix
        exx                     ; erst Zweitregister
        ex    af,af'
        push    hl
        push    de
        push    bc
        push    af
        exx                     ; dann Hauptregister
        ex    af,af'
        push    hl
        push    de
        push    bc
        push    af
        ld    a, i
        ld    (HIF), a
        jr    UPOP1

;CPU einräumen
UPOP:   ld    (SSP), sp
        ld    sp, UREG
        ld    a, (HIF)
        ld    i, a
        pop    af
        pop    bc
        pop    de
        pop    hl
        exx
        ex    af,af'
        pop    af
        pop    bc
        pop    de
        pop    hl
        pop    ix
        pop    iy
        exx
        ex    af,af'
UPOP1:  ld    sp, (SSP)
        ret


--
viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
14.03.2016, 18:32 Uhr
Enrico
Default Group and Edit


Ich hatte mir gestern Abend nochmal den Erklärbar machen lassen.
Nun hab ich das doch noch kapiert.
Könnte also was sinnvolles sein.


Danke.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
19.09.2022, 10:13 Uhr
Merilix



ziemlich alter Thread.


Zitat:
ambrosius schrieb
Im Monitor zum Huebler/Evert-Computer (electronica 227/228) sieht das so aus:


Quellcode:

SSP:    dw    0        ; Zwischenspeicher für SP
HIF:    dw    0
...
;CPU ausräumen
UPUSH:  ld    (SSP), sp
        ld    sp, HIF
        push    iy
....




Das kann so nicht funktionieren, PUSH iy würde SSP überschreiben

So einen Debugger hatte ich seinerzeit für den KC85/2 programmiert, ganz ohne den CTC zu belegen. Normale Befehle wurden einfach einzeln in RAM kopiert und ausgeführt; Sprungbefehle interpretiert. Herzstück war eine schnelle Routine Bytelänge und Typ des Befehls zu ermitteln.
---
U880 war ein Z80 Klon wie man an Die-Shots leicht sehen kann; das war keine Neuentwicklung.
---
Einzeltaktbetrieb war möglich und u.A. im MRES A5601 umgesetzt. Man konnte den Buszustand nach jedem Takt sehen und untersuchen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
19.09.2022, 12:08 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Das stimmt so nicht.
Die Adressen der Speicherplätze liegen im Original korrekt im Speicher. Damit funktioniert es auch.


Quellcode:

...
    1862/    FFA9 :                     HIF:    DB    2     dup (?)    
    1863/    FFAB : =FF95H              UREG:    EQU    HAF    
    1864/    FFAB :                     USP:    DB    2     dup (?)    
    1865/    FFAD :                     UPC:    DB    2     dup (?)    
    1866/    FFAF :                     SSP:    DB    2    dup (?)        ;ZWISCHENSPEICHER FUER SP
...


--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
19.09.2022, 12:20 Uhr
Merilix



Klar, im Original stimmt ja auch die Reihenfolge der Variablen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek