On Thu, 2 Feb 2006 14:16:26 +0100, Alfonso Martone wrote: >Visto che gli hardwaristi in questi giorni abbondano, ne approfitto >per chiedere una consulenza tecnica gratuita... Ueh, non offendiamo, gli hardwaristi sono SEMPRE abbondati. Io e Mario, in particolare, abbondiamo assai... :-) >Lo Spectrum ha un solo interrupt (ogni cinquantesimo di secondo >succede qualcosa come "RST $38") e tutto il resto è fatto "a >polling" (ZX Printer, la stessa tastiera -sia pure nella RST $38-, etc). > >Ma sarebbe possibile usare altre fonti di interrupt senza usare un >8255 o robe del genere? (per esempio un RST $30 ogni volta che una la >scheda di rete riceve un pacchetto, oltre al canonico RST $38 quando >è finito il frame video). Quello che tu descrivi e' l' IM0: il dispositivo che richiede l' interrupt mette sul bus dei dati (che lo Z80 ha messo ad alta impedenza in risposta all' interrupt) un valore, che lo Z80 legge come istruzione. Evidentemente questa istruzione deve essere uno "RST n". Il problema e' che nello Spectrum tutti i restart sono impegnati per fare altre cose, quindi questo modo di funzionamento non puo' essere messo in pratica. Si puo' solo usare l' IM2, dove il dispositivo fornisce i bit A0-A7, e il registro I i bit A8-A15, di una locazione di memoria in cui c'e' una word che viene caricata nel Program Counter. Comunque, una cosa in comune a tutte queste modalita' consiste nel fatto che la periferica che ha chiesto l' interrupt ha SEMPRE MESSO un valore sul bus dei dati. NON PUOI prescindere da questa operazione, salvo di usare il normale IM1 che provoca il salto a 0038H, tornando cosi' allo Spectrum standard :-) >Nel '90 scrissi un driverino per far usare quattro seriali veloci ad >un 286, usando solo i due canonici IRQ4/IRQ3 (la routine che >rispondeva all'interrupt doveva vedere a chi era figlio prima di >procedere). Quindi tu, ad interrupt, andavi a fare un polling delle perideriche? Ciao! /\ /--\ndrea (C) 1982 Sinclair Research Ltd homepage http://andrea.modelberg.it