Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » Z80: Zustand A8-A15 bei IN-Befehl » Themenansicht

Autor Thread - Seiten: -1-
000
04.05.2012, 11:47 Uhr
Gast: Schnulli



In welchem Zustand befinden sich die Adreßleitungen A8-A15 beim Ausführen des IN-Befehls?

1.) Hochohmig
2.) 1-Pegel
3.) 0-Pegel
4.) letzte Adresse
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
001
04.05.2012, 12:27 Uhr
holm

Avatar von holm

5.

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
002
04.05.2012, 13:24 Uhr
frame



Hab selbst gerade nochmals nachgeschaut, was er da macht.

Allerdings verstehe ich den Hintergrund nicht wirklich, speziell bei "IN r, (C)".
Has ist der tiefere Sinn, hier B auf den oberen Adressleitungen auszugeben ?
Oder ist das eher ein zufälliger Seiteneffekt ?
--
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"He that would live in peace and at ease, Must not speak all he knows, nor judge all he sees."
-- Benjamin Franklin
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
04.05.2012, 13:53 Uhr
Gast: Schnulli



z.B. zur Abfrage einer Matrixtastatur:

...
CALL Marke_Spalte6
CPD
JR Z,XYZ6
...
CALL Marke_Spalte0
CPD
JR Z,XYZ0
...

org 1000000000000000b
Marke_Spalte7:
IN A,(n)
RET
org 0100000000000000b
Marke_Spalte6:
IN A,(n)
RET
....
org 0000000100000000b
Marke_Spalte0:
IN A,(n)
RET

Dieser Beitrag wurde am 04.05.2012 um 17:40 Uhr von schnulli editiert.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
004
04.05.2012, 13:56 Uhr
Andreas



Hallo Schnulli

Lese Dir mal den Artikel durch.Da wird ja Deine Frage angewandt ? Danach hatte ich damals meine EPROM-Floppy mit 8 X U2732 für meinen Z1013 aufgebaut. Die Quellen mit meinen Veränderungen habe ich auch noch. http://www.file-upload.net/download-4326336/fa1-87.pdf.pdf.html


Andreas
--
Viele Grüße
Andreas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
04.05.2012, 14:05 Uhr
volkerp
Default Group and Edit
Avatar von volkerp


Zitat:
frame schrieb
Allerdings verstehe ich den Hintergrund nicht wirklich, speziell bei "IN r, (C)".
Has ist der tiefere Sinn, hier B auf den oberen Adressleitungen auszugeben ?
Oder ist das eher ein zufälliger Seiteneffekt ?

Das Ausgeben von BC auf die Adressleitungen ist das definierte Standardverhalten des Z80. Und das wird auch durchaus genutzt (z.B. bei der RAF2008)

IN r,(C): The contents of register C are placed on the bottom half (A0 through A7) of the address bus to select the I/O device at one of 256 possible ports. The contents of Register B are placed on the top half (A8 through A15) of the address bus at this time. Then one byte from the selected port is placed on the data bus and written to register r in the CPU.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 04.05.2012 um 14:09 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
04.05.2012, 14:18 Uhr
frame



Das hatte ich gelesen.
Das man es trickreich nutzen kann, ist die eine Sache.
Meine (rhetorische) Frage ist, was hat sich der Entwickler/Designer dabei gedacht,
wenn überhaupt ?
--
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"He that would live in peace and at ease, Must not speak all he knows, nor judge all he sees."
-- Benjamin Franklin
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
04.05.2012, 15:56 Uhr
holm

Avatar von holm

...erwartest Du jetzt das sich einer der Entwickler des Z80 hier meldet? In wie fern das überhaupt eine Z80 Entwicklung ist und nicht noch auf Intel zurück geht kann ja mal Jemand an Hand der 8080 Doku versuchen herauszufinden... Sehr vermutlich geht das auch die Struktur des ursprünglichen Befehlsdecoders zurück.

Bei in A,(nn) wird der Akku Inhalt auf 8-15 ausgegeben, auch wenn er durch den Befehl dann selbst überschrieben wird.

Für sinnvoll halte ich das schon, man kann den IO Adressberecih (für bestimmte Sachen) wahnsinnig erweiter nohne den Adreßraum zu zu kleistern. Z.B. bei so SPS Anwendungen,
Jede Menge Eingaberegister auf der selben IO Adresse, die Auswahl des Registers selbst
passiert dann über die Adresse A8-A15, die der Baugruppe über die IO Adresse. Das kann sehr sinnvoll sein. Da das auch dokumentiert ist (z.B: Kieser Meder) halte ich das auch nicht für ein Mißfeature.

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 04.05.2012 um 18:59 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
04.05.2012, 17:40 Uhr
Gast: Schnulli



Danke. Die Infos helfen mir schon weiter.
Seitenanfang Seitenende
(Gast) Zitatantwort || Editieren || Löschen
009
04.05.2012, 17:43 Uhr
frame



> man kann den IO Adressberecih (für bestimmte Sachen) wahnsinnig erweitern

Eben.
Die Datenblatt-Angabe lautet, soweit ich mich erinnern kann, 8 Bit IO-Adressbereich. Damit sind es über Umwege eigentlich doch 16 Bit, wenn auch nicht ganz konsistent.


> ...erwartest Du jetzt das sich einer der Entwickler des Z80 hier meldet?

Nicht wirklich, hätte ja sein können, daß es trotzdem einer weiß...
--
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"He that would live in peace and at ease, Must not speak all he knows, nor judge all he sees."
-- Benjamin Franklin
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
04.05.2012, 19:02 Uhr
holm

Avatar von holm

Gehe mal beim 8080 gucken ob das dokumentiert ist. Sowohl der Z80 als auch der 8085 sind Nachfolger die wohl kompatibel gestaltet sein müßten. Möglicherweise ist das auch eine der Zilog Erweiterungen denn wenn der Vorgänger es nicht hat, stört es beim Z80 auch nicht wirklich. Irgendwas muß ja bei dem Uropa mit den HW Adressen auch passiert sein.

"Konsistent" ist das deswegen nicht, weil dann die Peripherie ggf. auch einen 16Bit Vektor bei IM2 liefern müßte.

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 04.05.2012 um 19:03 Uhr von holm editiert.
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