<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><font size="+1">Ahoj,</font></p>
<p><font size="+1">zkoumam dnes trochu podrobneji PIO. Zdrojak na
hrani je v priloze, nicmene tam neni zadna vizualizace chovani -
vysledky pozoruju analyzerem. <br>
</font></p>
<p><font size="+1">Vsimnul jsem si zajimave veci:</font></p>
<p><font size="+1">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".<br>
</font></p>
<p><font size="+1">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...</font></p>
<p><font size="+1">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.</font></p>
<p><font size="+1">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.<br>
</font></p>
<p>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.</p>
<p>Jinak u Zdenka jsem tohle chovani nezkoumal, ale divil bych se,
kdyby tam nejakou takovouto zaludnost mel implementovanu. <br>
</p>
<p>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.</p>
<p>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.</p>
<p>Michal</p>
<p><br>
</p>
</body>
</html>