Z80 keyboard interrupt
Buonasera ragazzi, questa non è la sezione corretta in quanto lo Z80 non è un microcontrollore ma un microprocessore, ma vabbe'... Il problema che ho è misto hw/sw. Vorrei improntare un semplicissimo sistema basato su z80, con 32k di RAM e 32k di ROM (rispettivamente parte alta e bassa degli indirizzi disponibili), una tastiera (inizialmente esadecimale a 16 tasti, poi magari una di tipo convenzionale qwerty o simili), ed un PIO con due porte di uscita a 8 bit per la visualizzazione su display a 7 segmenti di dati e/o indirizzi in esadecimale.
Il mio problema consiste nel temporizzare l'accesso ai dati provenienti dalla tastiera, che sara' bufferizzata in ingresso al sistema, avrei pensato ad un interrupt, ma mascherabile o non mascherabile? INT o NMI? Ogni quanto mandare l'impulso di interrupt al processore per leggere il buffer che contiene i tasti premuti sulla tastiera? E come e dove scrivere la Interrupt Service Routine per prelevare il dato (dal bus dati condiviso)?
Se qualcuno avesse dei riferimenti, degli esempi hw/sw di come si fa una cosa del genere, manuali, ecc... gliene sarei infinitamente grato, perché vorrei imparare a lavorare con gli interrupt sia INT che NMI per poi in futuro (se riesco a mappare la tastiera penso in RAM) a mappare uno spazio di indirizzi anche per una eventuale uscita video composita utilizzando le librerie Atmel TvText, ma questo solo quando avro' capito come lavorare con questo tipo di periferiche. Qualche consiglio o link anche vecchio sarebbe graditissimo
Un ultima cosa, inizialmente vorrei fare un "sistema operativo" tipo "monitor", molto semplice e senza pretese, ma sto cervando da tempo dei sistemi operativi adatti del tipo CP/M o anche Unix based per lo z80, il fatto è che non ne trovo i file binari da caricare in ROM, o scaricare in RAM, questo è poi da vedere.... ma questo per ora non è urgente, anche perché dovrei sapere come sono mappate le periferiche in questi SO, per predisporre i giusti timing per gli interrupt e costruirci attorno il sistema.
Mi rendo conto che sono tante domande, ma nel quadro complessivo penso che avrete capito cosa vorrei fare, se qualcuno avesse dei link o dei documenti anche parziali (soprattutto sulla parte memory mapping, interrupt, ecc...) mi farebbe un grosso favore a condividerli... http://www.z80.info è mio amico, ma non ho trovato quello che cerco
Grazie a tutti,
A presto
Sandro
Il mio problema consiste nel temporizzare l'accesso ai dati provenienti dalla tastiera, che sara' bufferizzata in ingresso al sistema, avrei pensato ad un interrupt, ma mascherabile o non mascherabile? INT o NMI? Ogni quanto mandare l'impulso di interrupt al processore per leggere il buffer che contiene i tasti premuti sulla tastiera? E come e dove scrivere la Interrupt Service Routine per prelevare il dato (dal bus dati condiviso)?
Se qualcuno avesse dei riferimenti, degli esempi hw/sw di come si fa una cosa del genere, manuali, ecc... gliene sarei infinitamente grato, perché vorrei imparare a lavorare con gli interrupt sia INT che NMI per poi in futuro (se riesco a mappare la tastiera penso in RAM) a mappare uno spazio di indirizzi anche per una eventuale uscita video composita utilizzando le librerie Atmel TvText, ma questo solo quando avro' capito come lavorare con questo tipo di periferiche. Qualche consiglio o link anche vecchio sarebbe graditissimo
Un ultima cosa, inizialmente vorrei fare un "sistema operativo" tipo "monitor", molto semplice e senza pretese, ma sto cervando da tempo dei sistemi operativi adatti del tipo CP/M o anche Unix based per lo z80, il fatto è che non ne trovo i file binari da caricare in ROM, o scaricare in RAM, questo è poi da vedere.... ma questo per ora non è urgente, anche perché dovrei sapere come sono mappate le periferiche in questi SO, per predisporre i giusti timing per gli interrupt e costruirci attorno il sistema.
Mi rendo conto che sono tante domande, ma nel quadro complessivo penso che avrete capito cosa vorrei fare, se qualcuno avesse dei link o dei documenti anche parziali (soprattutto sulla parte memory mapping, interrupt, ecc...) mi farebbe un grosso favore a condividerli... http://www.z80.info è mio amico, ma non ho trovato quello che cerco
Grazie a tutti,
A presto
Sandro
