Mi történik (keyboard)?
Az volna a kérdésem, hogy vajon ha a commodore 64-en egy billentyűt (A) lenyomok, akkor szoftver oldalon mi történik, amíg az meg nem jelenik a képernyőn?
A tartalmas, építő jellegű válaszokat előre is köszönöm.
Szoftveres oldalról ez egyáltalán nem bonyolult, az alapon van egy hardver keyboard controller ami feldolgozza a jeleket és szól a cpu nak ha történik valami. Szoftverből ez gyakorlatilag egy if(key_down) do_this, és kész.
Ezért nincs szükség driverre billentyűzethez\egérhez, hardveres támogatásuk van(de ha van valami extra funkció, pl világít, vagy ezer gombja van akkor kell hozzá - nem feltétenül kell kézzel telepítened, jöhet az oprendszerrel együtt is).
Hogy konkrétan C64 en hogy oldották ezt meg arról fogalmam sincs, de amikor kijött már legalább 3 éve létezett hardveres megoldás rá, úgyhogy gondolom azzal.
4-es, ezt sajnos nem jól tudod. Driver mindenhez kell.
Az egérhez is és a billentyűzethez is. A c64-nél a kernal.rom tartalmazza a drivert.
Annyit sikerült kiokoskodnom, hogy a keyboard mátrixa egy ún. CIA-hoz (control interface adapter) kapcsolódik, ez meg a CPU-hoz, de az még mindig nem világos, hogy mi a pontos történés a bill. lenyomásánál.
Be volt állítva egy másodpercenként párszor lefutó megszakítás és abban ellenőrizte a mátrix állapotát. Ez kezelte azt is, hogy mi történjen folyamatosan lenyomva tartott billentyű esetén. A billentyűzet pufferbe írta a billentyű kódját. A folyamatosan futó editor innen olvasta ki és jelenítette meg a kurzor által kijelölt helyre.
Érdemes megvenned a Commodore64 belső felépítése című kömyvet, antikváriumokban párszáz forint. Abban az egészet részletesen leírják, a teljes ROM benne vam magyarázó kommentekkel.
6-os, köszönöm. Igen, vmi ilyesmi.
A végén úgy jöttem rá, ahogy az elején nem akartam, elolvastam a c64 kernelének vonatkozó kódját.
Létezik a c64-esekben egy CIA (6820/21) nevű IC, erre van rátolva a keyboard mátrixa, ez továbbítja a kiolvasott kódot a cpu felé, az meg adott címen (buffer) elhelyezi a karakter kódját. Ez a kód van megfeleltetve egy kódtábla aktuális pozíciójával és a kííró rutin innen "tudja", hogy mit kell megjelenítenie.
Jav.: a c64-esekben 6526-os CIA van, a 6820/21 az Apple I-esekben volt. Apple I emulátort építek, gondolom azért maradt meg a fejemben a 6820, tévesen. Sorry.
Sorry..
Amúgy, akinek könyv kell (megfogadva az előttem szóló tanácsát):
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!