Most igy belegondolva, azert erdekes ez a taszt-illeszto tema. Ugye a WR0-ra aktivizalando interrupt handler stb kerdeset mar boncolgattuk. Viszont tenyleg lehet olyan software ami nem szo szerint scanneli a kbd matrixot, hanem beallit egy sort (ott van pl a gomb ami erdekli) es csak olvasgatja a B5-os portot minden iras (kbd row kivalasztas) nelkul. Na ugye ez problema, es nem is igazan kikerulheto
![Sad :(](/Smileys/phpbb/ds_icon_sad.gif)
Ugyanis, ha csak a WR0-ra aktivizalando interrupt handler-ben irjuk ki a kerdeses kbd row allapotat, akkor ugye "scan" nelkul eszre sem fogja venni az EP a valtozast
![Sad :(](/Smileys/phpbb/ds_icon_sad.gif)
Ennek elkerulese viszont nem olyan egyszeru! Lehetne az, hogy a PS/2-n barmi valtozas hatasara az interrupt handleren tul is, megnezzuk, hogy a layout transzformacio utan a kivalasztott row-ba esik-e, ha igen, kiitjuk a valtoztatott byte-ot. Igen am, de itt versenyhelyzet van, mi van, ha ezen kuveletunk kozben ir az EP pont a B5-os portra? Akkor mi rossz row-t fogunk kiirni ... A megoldas vmi olyasmi lehetne, hogy letiltjuk az interrupt-ot amig a fenti tevekenyseget vegezzuk, akkor viszont tul nagy lesz a delay a WR0 es az esetleg kozvetlenul utana jovo RD0-hoz kepest, es "lecsuszunk" rola, az eredmeny megint az lesz, hogy rossz row allapotat kapja meg ez EP. Lehetne RD0-ra is egy masik kulso interrupt stb, de itt is latom a problemat, hogy nehez a ketto kozott igazsagot tenni, ugymond.
Hacsak nincs egy bazi gyors MCU-nk tenyleg, akkor nem is tudom, hogy ez a problema megoldhato-e ... Legalabbis MCU-val, nyilvan custom hw-el (crosspoint switch IC, dual port RAM ..) igen. Azt se tudom, hogy ezt a problemat a Tigrian fele illeszto hogy oldja meg, ha megoldja egyaltalan (Zozo altal adott wiki oldalon is ir valami hasonlot, hogy "force" muvelet ha egy software nem scannel ahogy "illik" ...).