A billentyuzetet megprobalom osszefoglalni:
Periferia, IO porton log, sorosan mennek a bitek,
de megvan a kezfogas. Nem a BIOS keri az adatokat,
hanem ha van adat, akkor megszakitas tortenik es meghivodik
egy BIOS rutin. Az 5 vezetek: fold, tap, reset, data, clock.
(Hol itt a megszakitas keres vezetek?)
A bill.nek van egy puffere, abba kerul az eppen lenyomott vagy
felengedett bill. kodja a sorba, es ez a kod tarolja azt is, hogy
epp lenyomtak-e vagy felengedte'k-e.
Az eleinte 84 gombos billentyuzet szoftvere fix volt,
ezeken ez a kod 1 bajt volt (ASCII ?), kesobb a bill. szoftvere
teljesen kicserelheto lett szoftverbol, es igy beallithato lett, hogy
pl. lenyomva tartott billentyunel milyen ideig varjon mire elkezdi
ismetelni a bill kodjat, meg milyen gyakran ismetelje,
illetve hogy egyaltalan melyik gombhoz milyen (ASCII??) kodot rendeljen.
(Mas kerdes, hogy ezeket minek atirni...??)
Tovabba a NumLock meg CapsLock allapota is bellithato.**
Egyetlen billentyu kodja mar aka'r 4 bajt is lehet, mert kitalaltak
a scancode-ot, ami viszont fix es egyertelmuen jellemzi,
hogy melyik gombrol van szo. (jol mondom?) A fent emlitett BIOS rutin
is lecserelheto (illetve ha jol ertem, akkor inkabb az oldhato meg,
hogy ne a meglevo rutin hivodjon meg, hanem a magunk-irta rutin,
szoval IRQ vektor atiras). De most maradjunk az eredeti BIOS rutinnal.
Ez a rutin tobbek kozt szamon tartja, hogy a modosito gombok,
mint Shift, Alt, xLock lenyott allapotban vannak-e, hogy aszerint
ertelmezze a kapott kodot. (Ezt miert nem maga a bill.zet tartja szamon
es intezi? Illetve vhol me'gis ezt teszi, lásd a **-t fent meg lent.
Most akkor hogy is van ez?) A tobbi gomb kodjat gyurus taroloba irja.
>ha kodolhato gombot nyomtak meg, akkor beirja az ASCII kodot is
>(figyelembe veve a fenti shiftek allapotat**), ha nem akkor csak az un.
>scankodot irja ebbe a taroloba, ami megfelelo fuggvenyekkel olvashato
>is: igy lehet megkulonboztetni pl. a Ctrl M jelet az Enter gombtol.
Na itt me'g zavaros, hogy akkor most a fix és 84 gombos bill. mife'le
kodokat tett a pufferebe. A scankodot mindig, es ha van ASCII megfeleloje,
akkor azt is pluszba? Az 1 bajtos valtozatban ASCII volt vagy scankod
az az 1 bajt?
>Egyebkent mindenki ezt a tarolot olvassa, de a szabvanyos fuggvenyek
>csak a ASCII kodokat szoktak megkapni, pl. az "F" gombokat vagy a
>nyilakat nem.
Mifele szabvanyos fuggvenyek??? Azok mik?
A billenyuzet altal kert megszakitasok (hol az a vezetek?) termeszetesen
az eppen futo programot is megszakitjak, illetve a programhoz tartozo
rutin lefutasa indul, pl noveli x erteket, aztan visszaall az eredeti
"gondolatmenethez".
?Lehetseges, hogy a bill. a BIOS rutint inditja, az meg megszakitja a futo
progit? De mi is a BIOS rutin feladata azon tul, hogy azt a gyurus
tarolot meg a kezfogast kezeli?
------------
>>a magneses reteg felbontasat nem akarja'k maxra kihasznalni?
> Lattam mar olyan optikai lemezt, amelyen szemmel lathatoak voltak
> a szektorjelek es a kulso savokon tobb volt beloluk.
Hogyhogy optikai lemez? Gondolom nem CD. MiniDisc?
Szemmel lathato szektorjelek???
>> Miert nem keszul modern HDDhez modern BIOS rutin?
>Mert a regi szabvanyos.
>a regi winchesterek nem fognak vele mukodni,
De hat mar senki nem hasznal 500MB alatti vinyot...
Meg aztan elfer ott ketto BIOS rutin is e celra, nem?
>Ettol fuggetlenul a kodot el is teszem, igy a tobbi funkcio is megy a
>programban, csak ugy kellett megirnom, hogy scankodokat hasznaljon,
>mert ilyenkor senki sem forditja nekem.
Hogyhogy elteszed? Hova? Melyik kodot is teszed el?
Hogyhogy senki "nem fordit"?? Nem ertem.
>Ha egy program "ratelepszik" egy BIOS rutinra,
Azaz a rutint hivo megszakitas vektorat atirja a sajatjara?
>akkor a sajat rutin[nak] el KELL vegeznie az
>eredeti rutin feladatat is (pl. kezelni a rendszerorat vagy nyugtazni a
>billentyuzetet, kulonben az ora nem megy,
Az ora miert nem ketyeghet hardveresen, kvarccal,
a szoftverektol tok fuggetlenul?
>a billentyuzet pedig - hiaba olvassak - egy ido utan sipolni fog,
>hogy betelt a puffer: ilyenkor nem a gepben, hanem a billentyuzetben levo).
Ha kezfogasos a dolog, akkor a billnek tudnia kellene magatol,
hogy egy-egy kodot elvett a fo" gep. Hogyhogy kulon mondani kell neki?
>Figyelni kell arra is, hogy a rutin ne legyen tul hosszu,
>mert ha kozben erkezik tobb ujabb megszakitas,
>akkor ezekbol tipusonkent csak egy fog lefutni,
Egyelore van a CPU+ram+fdd+hdd+videokartya+bill.
Ezek kozul me'g mi kerhet megszakitast a bill.en kivul?
(Lent irod, hogy "lemezkezelo megszakitas". Jelenti ez azt, hogy pl.
FDD visszaszol, amikor vegre megtalalta a kert adatot, hogy
most szeretne' odaadni?) Es miert csak egy fog lefutni tipusonkent?
>igy keshet az ora (mint ahogy szokott is, floppykezeles kozben), stb.
>- akar osszeomolhat a rendszer.
Tovabbra sem ertem, hogy jon ide az ora.
>>> Kiprobaltam a Ctrl M-t, tenyleg enterkent viselkedik.
>>>Mi az a scankod, mivele fuggveny olvassa??
>>BIOS belso rutin forditja a kodokat.
Mirol mire?
>>Nem tudom milyen programmal nezted
:-))) Notepaddel.
>>- az, amelyik a scankodot is atadja, megmutatja a kulonbseget.
Ez is "megmutatta": uj sor kezdodott. De az Outlookban is mukodik :-)
>Pl. ha valaki "elfogta" a lemezkezelo megszakitast (virusok kedvenc
>modszere), akkor minden lemezkezelesi muveletnel megkapja a vezerlest.
Es hogy lehet ilyen "elfogni". A 8085nel me'g ugy volt, hogy volt IRQ csip,
kaszkadosithato, es az ment a CPU megszakitas kero vezetekere.
Megszakitas keres eseten a CPU ugy vette, hogy push van es ugro utasitas
kovetkezik, aminek a cimet nem a memoria kovetkezo ket cellajabol
vette, hanem az IRQ csip tette ra az adatbuszra a 2 bajtot egymas utan.
Az IRQ csip ezt a cimet onnan tudta, hogy elore felprogramoztuk es
megmondtuk neki. Illetve a masik modszer, hogy IRQ keres eseten
a megrantott IRQ sorszamatol fuggoen a memoria elejen elhelyezett
tablazat megfelelo sorara ugrik, asszem 4 bajt tartozik egy kereshez.
Ez eleg arra, hogy onnan elugorjon es oda visszaugorjon a mutato.
Az IRQ atirasahoz vagy az IRQ csipet kell atprogramozni
nehany parancsszoval vagy a memorianak azt a tablazatos reszet
kell atirni. Ezt irjak at a virusok? Jol ertem?
>Itt most csak az lenyeges, hogy ez a szerver raul nehany megszakitasra,
>igy idonkent megkapja a vezerlest es vegezheti a dolgat - ugy, hogy
>kozben Te is dolgozhatsz a gepen a sajat programoddal.
Nem "pofatlansag" raulni a megszakitasokra?
Ha mas progi is dolgozni akar, akkor miert nem ker inkabb idot
az OStol? (Hogy hogyan, ne kerdd, csak hallottam, hogy van ilyen.)
De nehogy mar mas progitol lopja.
>a programkonyvar annak a forditonak a resze, amelyet a
>programodhoz hasznalsz. Ha egy magasszintu programban kiadsz pl. egy
>"print" utasitast, akkor futaskor ez az elore megirt rutin fog lefutni.
Varjunk. Adott egy HelloVilag! Qbasic progi. Megirom a kek fejleszto
kornyezeben, leforditom, lesz belole egy .exe fajl. Forditaskor a fordito
a PRINThez tartozo gepikod-reszletet beilleszti, ugy, hogy a kodban
a megfelelo parametereket aszerint modositja, hogy en mit akartam
kiiratni. Ez a gepi kod valoban a CPU altal hasznalt utasitaskeszletbol all?
vagy ahhoz mar regen semmi koze es me'g szazszor atforditodik addig?
(A cimek persze ossze-vissza transzponalodnak,
de az utasitaskeszlet marad-e?) Tegyuk fel, hogy az elso.
Ekkor az egesz ugy a fejleszto kornyezet/fordito dolga.
O az, amelyiknek van kulon programkonyvtara minden utasitasra?
Akkor ennek a BIOShoz semmi koze, ugye?
> - vagy van egy(nehany) kiegeszito file, amelyiknek ott kell lenni a
>programod mellett vagy a PATH-ban, es azt hasznalja.
Ezt nem ertem. Reszletezd kerlek.
>Erdemes egy ures programot (amelyiknek a forrasa csak annyi,
>hogy elindul es leall), visszaforditani es megnezni: van benne jo par
>rutin, amelyek arra szolgalnak, hogy a programod el tudjon indulni,
>legyen egy kornyezete, amit hasznalhat es utana normalisan vagy
>hibajelzessel le tudjon allni.
Elerkeztunk a programozassal kapcsolatos legnagyobb bajomhoz:
A feladatbol algoritmust csinalni eleg jol megy - ZX rulez!,
az adott programnyelv szabalyait es lehetosegeit megtanulni, nos
ez is megyeget, nem ezzel van bajom.
Amiert gyakorlatilag nem tudok programozni, az az, hogy
nem ertem a kornyezetet, hogy hogyan illeszkedik egy program
a periferiak fele', es persze az egesz OS fele'. Nem tudom elhelyezni,
tul homalyos. Bezzeg a ZX Spectrumon ez nem volt gond.
Ha manapsag kivancsisagbol, probabol irok vmit, akkor JavaScriptben
vagyok kenytelen irni, vagy elobanyaszom a ZX szimulatort :-)).
Netan az eredeti ZX gepet, mert van egy original, alig hasznalt peldanyom,
buszke is vagyok ra!
Nemhogy visszaforditani nem tudok egy programot, de megirni sem.
A FAT temarol kesobb, ha az eddigi nagy falat volt,
akkor a FAT egy gorogdinnye. Fel kell ra keszulni :-)
Koszi szepen Startersnek es a lista tobbi tagjainak is a hozzaszolasokat.
BM
|