<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>