Forum

Z PMD 85 Infoserver

:: späť na zoznam tém ::
Správa
Autor  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  24.11.2015 14:51:33
Predmet  Predmet ::  Čítače 8253
Zjistil jsem, že ve vašem emulátoru, minimálně v linuxové versi, funguje nějak divně 8253. Čítač 1 mi při čtení vrací 0xff, takže ho nemohu použít pro získávání entropie do PRNG, což bych potřeboval (píšu generátor sudoku a tam potřebuji entropie opravdu hodně) a čítač 2 sice běží, ale z jakéhosi důvodu se nedá programovat. Není někde chyba?
 
Správa
Autor  Autor ::  Libor L.A.
Poslaná  Poslaná ::  24.11.2015 19:25:20
Predmet  Predmet ::  Re: Čítače 8253
Já to v jejich emulátoru programuji i čtu dle katalogu (OKI) a zatím vše jede podle předpokladů.
 
Správa
Autor  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  25.11.2015 08:49:34
Predmet  Predmet ::  Re: Čítače 8253
Nefunguje třeba toto:

10 OUT 95,112
20 OUT 93,0
30 OUT 93,0
40 PRINT INP(93),INP(93)
50 GOTO 40

Výstupem jsem v RM-emulátoru samé 255.
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  25.11.2015 09:27:49
Predmet  Predmet ::  Re: Čítače 8253
Ak sa jedná o Linuxovú verziu, neviem už z akej Windows verzie vznikla.
Vo Windows verzii sa emulácia 8253 opravovala viackrát, takže je možné, že tieto zmeny tam zanesené nie sú a preto to tam nefunguje správne.
Hlavný problém je v tom, že Windows a Linux verzie Emulátora sú úplne odlišné a oddelené projekty. Linux verzia sa prakticky "iba" portovala z Windows verzie.
 
Správa
Autor  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  25.11.2015 09:57:04
Predmet  Predmet ::  Re: Čítače 8253
Výsledek je bohužel stejný i na nejnovější versi pro Windows.

Jde o to, že když generuji sudoku, potřebuji relativně hodně bitů entropie, protože vybírám z více než 2^64 možností. Dělám to tak, že mám 128bitové LCG, jehož průběžnou hodnotu při každém stisknutí klávesy uživatelem XORuji s výstupem čítače 1 - vždy dva byty, cyklicky přes celých 16 bytů. Kromě prvního sudoku, které se generuje po pouhých dvou stiscích, tedy z 32 bitů, je tak zaručen skutečně kvalitní pseudonáhodný výběr.

Na vašem emulátoru to ale nebude fungovat, protože první sudoku bude vždy to samé a další budou mít jen několik variant.

Pokud by se jednalo o neřešitelný problém, mohl bych nouzově doplnit "manuální" měření pro první stisknutí, takže u emulátoru s nefunkčním čítačem by se takto získalo aspoň několik bitů entropie a uživatel by nic nepoznal. Je to ale nepěkné a nesystémové řešení.
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  25.11.2015 13:23:40
Predmet  Predmet ::  Re: Čítače 8253
Predpokladám, že to skúšate na PMD 85-1.
O probléme s chybou čítača CT1 na PMD 85-1 som písal už na Vašich stránkach.

> Win verzia emulátora sa, na rozdiel od Linuxovej, stále vyvíja,
> robia sa rôzne o(ú)pravy, pridávajú sa ďalšie periférie a toto je
> dôsledok, že sa v PMD 85-1 nedostávajú hodiny na CT1 PIT 8253.
> Chyba vznikla po pridaní emulácie Myši 602, ktorá tento čítač používa.
> Hodiny sa tak dostanú na CT1 iba ak je pripojená Myš 602 k PMD 85-1.
> Ak si ale zvolíte iný model PMD 85, tak program funguje bez problémov.

V pracovnej verzii emulátora je už táto chyba opravená.
 
Správa
Autor  Autor ::  Libor L.A.
Poslaná  Poslaná ::  15.12.2015 18:43:46
Predmet  Predmet ::  Re: Čítače 8253
Mohu potvrdit, že Arkanoid, který se synchronizuje na T1/8253 opravdu na PMD-85 verze 1 a na Alfě 1 nejede (po startu sektoru zamrzne), protože čeká na dočítání T1 do stavu 00FFh, což dle výše uvedeného nikdy nenastane. Takže tímto potvrzuji Tvou pracovní hypotézu o selektivní chybě taktování T1/8253 pouze u verze 1.
 
Správa
Autor  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  25.11.2015 14:02:03
Predmet  Predmet ::  Re: Čítače 8253
Výborně, tedy udělám release SUDOKU bez ohledu na tyto problémy, s tím, že v příštích versích vašeho emulátoru už bude chyba opravena. Případně mohu funkci čítače na začátku testovat a pokud nepoběží, program ohlásí chybu HW a nebude pokračovat.

Čítač 2 ve vašem emulátoru po resetu běží, což není v rozporu se specifikací (před naprogrováním je stav 8253 nedefinovaný), ale vzpomínám si, že nešel u některých časnějších PMD (minimálně z prototypové řady, se kterou jsem dlouhou dobu pracoval). Muselo se to řešit hardwarovou úpravou na desce: na pin se přiletoval malý filtrační kondensátor. V SUDOKU tento čítač využívám pro měření času řešení, ale není kriticky důležitý, pokud bude stát, prostě se uživateli zobrazí čas 0:00.
:: späť na zoznam tém ::