Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

[SharpMZ] zvlastni chovani PIO-Z80

Michal Hucik - ORDOZ <ordoz@[doména skryta]> SHARP MZ-800

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


Přílohy

Zobrazit původní podobu

Vlákno · 4 zprávy

Zobrazit celé vlákno na jedné stránce

  1. [SharpMZ] zvlastni chovani PIO-Z80 Michal Hucik - ORDOZ <ordoz@[doména skryta]> Přílohy: 1
  2. Re: [SharpMZ] zvlastni chovani PIO-Z80 Michal Hucik - ORDOZ <ordoz@[doména skryta]>
  3. Re: [SharpMZ] zvlastni chovani PIO-Z80 Radek Suk <suk@[doména skryta]>
  4. Re: [SharpMZ] zvlastni chovani PIO-Z80 Michal Hucik - ORDOZ <ordoz@[doména skryta]> Přílohy: 2