Domanda sulla CPU Z80

Dec 10, 2003 21 Replies

Salve, volevo chiedere un paio di particolari sulla CPU Z80. Quando c'è un ciclo di scrittura o lettura su I/O, vengono usate solo le linee da A0 a A7, ma le linee da A8 a A15 in che stato si trovano? Spero tutte a zero. Inoltre, quando è attiva l'uscita _Refresh insieme a _MemRq per rinfrescare la memoria dinamica, le linee _RD e _WR sono tutte e due alte? Grazie.


-- Prima di rispondermi devi togliere le dita dal naso! :)


"Calisto" ha scritto

le istruzioni IN e OUT prevedono invece un indirizzamento completo a 16 bit... A seconda dell'istruzione il valore di A o di B viene trasferito su A8..A15 prima dell'esecuzione dell'istruzione stessa..

Nel caso di IN A,(indirizzo) viene trasferito A Nel caso di IN r,(C) INI INIR IND INDR viene trasferito B Idem per le corrispondenti di output.

Sarebbe cosi' possibile indirizzare fino a 65536 porte... In pratica poi se la decodifica indirizzi delle periferiche controlla solo i primi 8 bit, o in tanti casi pratici anche molti meno, il valore degli altri e' del tutto indifferente.

yess, ma se si usa una comune memoria statica ci si puo' dimenticare completamente di questa roba:-) Con /MREQ /RD /WR fai tutto...

Claudio F

PS: a qualche ram sta antipatico che il /WR risalga nello stesso momento del /CE, e preferisce un /CE piu'lungo di una manciata di nS... (io risolvo radicalmente col /CE sempre fisso a massa:-P)

PS2: non dimenticare la R di pull-up da 330 ohm sul clock... fatti salvi questi due inghippi ha sempre funzionato tutto anche con cablaggi lunghi e orripilanti.

"Claudio F" ha scritto nel messaggio news:F5JBb.75018$ snipped-for-privacy@news1.tin.it...

Ok, grazie. Ma la resistenza di pullup sul clock è necessaria, o consigliabile, anche se l'ingresso clock stesso è pilotato direttamente dall'uscita di una ttl senza altro connesso? ciao.

"Calisto" ha scritto

Si, alcuni Z80 si rifiutano di funzionare... fortunatamante non e' stato il caso del primo che ho provato;)

Claudio F

Per la versione CMOS non lo so, per la versione nmos la risposta e` no, mi pare che su A8-A15 ci sia su il contenuto del registro B. Quasi di sicuro durante le istruzione IN e OUT (C), e mi pare anche durante le altre, con indirizzamento immediato. Se non e` B e` qualche altro registro, non ricordo piu` in dettaglio.

Franco Wovon man nicht sprechen kann, darüber muß man schweigen. (L. Wittgenstein)

Se l'uscita che pilota il clock e` un vero TTL (con livello alto dalle parti di 3V), allora serve la R di pull up. Se invece il pilotaggio lo fai con una porta CMOS, il pull up non serve.

Franco Wovon man nicht sprechen kann, darüber muß man schweigen. (L. Wittgenstein)

Ok, grazie ancora a tutti... quindi utilizzando un 74HC04 come oscillatore non dovrebbe servire la resistenza di pullup.

ciao

-- Prima di rispondermi devi togliere le dita dal naso! :)

"Franco" ha scritto nel messaggio news:br85kh$ekoo$ snipped-for-privacy@ID-60973.news.uni-berlin.de...

anche se

senza

"Franco" ha scritto nel messaggio news:br85co$ekoo$ snipped-for-privacy@ID-60973.news.uni-berlin.de...

Ma questa era una caratteristica dichiarata o era uno dei tanti trucchi non ufficiali di questa CPU? Te lo chiedo perche' fino ad oggi avevo la convinzione che lo Z80 avesse un indirizzamento di I/O di soli 8 bit e mi sembrava che fosse scritto proprio questo in tutta la documentazione.

Beh, in effetti nei diagrammi temporali della documentazione in mio possesso per i cicli di input-output sono indicati solo i primi 8 bit della linea indirizzi. ciao.

"Valeria Dal Monte" ha scritto nel messaggio news:Q5NBb.181769$ snipped-for-privacy@twister2.libero.it...

Ma perché Federico Faggin non ha reso note tutte le istruzioni della sua cpu?

-- Prima di rispondermi devi togliere le dita dal naso! :)

"Calisto" ha scritto nel messaggio news:mFHBb.180761$ snipped-for-privacy@twister2.libero.it...

rinfrescare

Era uno dei trucchi non ufficiali, anche perche' non era facilmente utilizzabile. Con l'indirizzamento indiretto si poteva usare BC come registro di indirizzo, ma con le istruzioni di in e out "vecchie", sulla parte alta del bus indirizzi c'era A che serviva anche per il dato.

Invece altre istruzioni non documentate funzionavano, ad esempio splittare i registri IX e IY in 4 registri da 8 bit, con tutte le possibilita` che c'erano di operare su L e H; c'era uno shift sinistro che faceva entrare degli 1 nel bit meno significativo (questa istruzione serviva proprio a poco), a alcune altre ancora (memory shift&load...).

Ciao

Franco Wovon man nicht sprechen kann, darüber muß man schweigen. (L. Wittgenstein)

Z80.

usate solo le

trovano? Spero

Si dice (non è riportato ufficialmente da nessuna parte) che le linee A8-A15 assumano il valore contenuto nel registro B!!! Se non ricordo male questa caratteristica era perfino sfruttata su certe macchine (Spectrum?!?). Non ho comunque mai verificato la cosa di persona, ne so se gli Z80 recenti abbiano conservato questa caratteristica.

_MemRq per rinfrescare

alte?

Può darsi... So per certo che _RD è alto, mentre di _WR non ho notizie certe... :-)

Prego! Ciao, Dr. Jones

"Franco" ha scritto

Mi sembra strano, ho controllato su tre diverse fonti (tra cui un pdf della Zilog - CPU User Manual UM008001-1000) e dappertutto e' descritto il quel comportamento di A8..A15

a, beh, questa e' un'altra storia;)

Claudio F

Sul manuale del 1978 non c'era :-)

Franco Wovon man nicht sprechen kann, darüber muß man schweigen. (L. Wittgenstein)

Pestando alacremente sulla tastiera "Valeria Dal Monte" ebbe l'ardire di profferire:

Nessun trucco, per la precisione il registro B indirizza da A8 a A15... Riportato anche su ' Programmazione dello Z80' di Rodnay Zaks... La mia vecchia bibbia... Lo z80 usava questo metodo per leggere la tastiera.

System going down at 1:45 for disk crashing. News 2000 [v 2.06] / StopDialer / PopDuster - http://www.socket2000.com

Pestando alacremente sulla tastiera Due di Picche ebbe l'ardire di profferire:

lo ZX80... lapsus.

My computer's sick. I think my modem is a carrier. News 2000 [v 2.06] / StopDialer / PopDuster - http://www.socket2000.com

"Due di Picche" ha scritto

...che tuttavia canna alla grande la spiegazione del funzionamento dell' NMI...

Ho anch'io quel libro, ma ho avuto l'impressione che sia la "brutta copia" di un altro testo invece veramente splendido... solo che mi sfugge il titolo... forse era "Z80 programmazione in assembly"... copertina giallo/arancione.

Claudio F

Pestando alacremente sulla tastiera "Claudio F" ebbe l'ardire di profferire:

Ovvero?

The moving cursor prints, and having printed, blinks on. News 2000 [v 2.06] / StopDialer / PopDuster - http://www.socket2000.com

"Due di Picche" ha scritto

da pag 429 cito: "NMI provochera un trasferimento automatico del contatore di programma nello stack"

e fino qua ci siamo

"ed una ramificazione ad un vettore di interrupt a 16 bit all'indirizzo 66H, i due bytes che tappresentano l'indirizzo immagazzinato alla posizione 66H saranno caricati nel contatore di programma, essi rappresentano l'indirizzo di inizio della routine di gestione per l'NMI"

e in piu' c'e' pure la figura che fa vedere prima il PC spostato nello stack, e poi caricato con il valore contenuto in 66H/67H.

Questo non e' vero. Dopo il salvataggio del PC nello stack, il programma salta semplicemente alla locazione 66H (come una CALL 66H per intenderci).

Claudio F

Pestando alacremente sulla tastiera "Claudio F" ebbe l'ardire di profferire:

LOL... Non me ne sono mai accorto, dal momento che l'ho usato in connubio a 'the complete spectrum rom disassembly' e la routine dell'nmi era chiarissima...

Do files get embarrassed when they get unzipped? News 2000 [v 2.06] / StopDialer / PopDuster - http://www.socket2000.com

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required