Ahoj,
zkoumam dnes trochu podrobneji PIO. Zdrojak na
hrani je v priloze, nicmene tam neni zadna vizualizace chovani -
vysledky pozoruju analyzerem.
Vsimnul jsem si zajimave veci:
Branu A nastavim do MODE3 a povolim ji generovani
interruptu - je celkem jedno, jak pritom nastavim IO masku pro
vstupy a vystupy, jake podminky LOW, HIGH), nebo jakou nastavim
vstupni masku - pro vygenerovani popisovaneho ukazu muzu klidne
ponechat vsechny piny v OUT rezimu a v maskou pro generovani
interruptu je navic uplne vypnout, avsak podminku AND/OR musim
vzdy nastavit jako "OR".
Nyni na CTRL port brany A poslu zmenu mode na kterykoliv jiny modus, nez je MODE3, napr. 0x0f - vystup bajtu. V momente, kdy to udelam, tak mi PIO posle signal /INT ... Dokonce i kdyz brane A pred zmenou modu nejprve zakazu generovani interruptu, pak zmenim na MODE0 a pak povolim interrupt (0x03, 0x0f, 0x83), tak i v takovem pripade posle PIO do Z80 pozadavek na falesny interrupt...
Kdyz jsem zkusil tento pokus na brane B (BTW: jeji I/O piny jsou pripojeny na invertory a pri nastaveni B jako vstupu je na nich trvale k videni log1), tak se to takhle nechova.
O to zajimavejsi mi prijde fakt, ze v MODE 0, 1 a
2 ma byt interrupt generovan pouze aktivaci vstupniho signalu
/STROBE, ktery je u brany A pripojen natvrdo na Vcc, takze k
jeho aktivaci spravne nikdy dojit nemuze.
Podle schematu zapojeni PIO-Z80 v MZ-800 mne nenapada zadny duvod proc by se to takhle melo chovat, pokud neobjevite zadnou pricinu ani vy, tak se asi bude jednat o nejakou mouchu v samotnem pijovi.
Jinak u Zdenka jsem tohle chovani nezkoumal, ale divil bych se,
kdyby tam nejakou takovouto zaludnost mel implementovanu.
Pokud by jste si chteli s testovacim programkem pohrat a aktivovat interrupt pomoci rutinek ctc0_out0 a ctc0_out1, tak u Zdenka s rtim neuspejete. V mem soucasnem emu to sice funguje, nicmene ne uplne spravne, protoze tam prvni udalost pro int ignoruju, coz neni uplne shodne s tim, jak se chova Sharp.
Jeste dalsi zajimava vec, ktere jsem si vsimnul te to, ze pokud nastavim branu A jako vstupni, tak PA0 a PA1 se mi jevi byt trvale v log1, PA6 a PA7 mi vetsinou sdelovaly stav log0, nicmene na PA6 se mi obcas na nejakou dobu objevila i log1 (je to opet vstup do hradla, ktere je ovladano SW2 na zadni strane MZ800). Mel jsem tam chvili pripojeny i osciloskop a skutecne se tam ta uroven napeti obcas trochu zvedla v zavislosti na tom, jak jsem menil I/O a MODE ... bylo to vsak sotva na hranici pro log1 - to uz je ale asi ducharina, kterou se nema smysl pri emulaci zabyvat.
Michal