> A billentyuzetet megprobalom osszefoglalni: Az 5 vezetek: fold, tap,
> reset, data, clock. (Hol itt a megszakitas keres vezetek?)
Ugy tudom, a megszakitasvezerlo kezeli, ha adat jon.
> Az eleinte 84 gombos billentyuzet szoftvere fix volt, ezeken ez a
> kod 1 bajt volt (ASCII ?), kesobb a bill. szoftvere
Nem, ez a scancode: a billentyu sorszama 1-84.
> 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
Nem cserelheto, csak programozhato (parameterezheto), de a scancode
nem. Az szabvanyos, akar egy byte, akar negy. Es ez a fajta
billentyuzet nem ismeri az ASCII kodokat: CSAK scankodot kuld.
> 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,
Nem emiatt - ne keverd a dolgokat.
> 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
Ez a fajta billentyuzet MINDIG scankodot kuld es a fo BIOS fogja
hozzarendelni az ASCII kodokat, ha lehet.
Amirol idaig nem sokat irtam: leteznek szabvanyos terminalok (UNIX,
stb. rendszereken. Ez volt elobb, a PC ujabb talalmany). Ezek ugyanugy
mukodnek, mint a billentyuzet, de a soros portra kell oket kotni es
szabvanyos ASCII kodokat kuldenek. A kulonbseg kozottuk az, hogy a NEM
ASCII kodokra (pl. a kurzormozgatok) mit kuldenek: ezekre leteznek
terminalszabvanyok (vt100, Ansi, stb.) Ilyenkor altalaban egy Esc kod
erkezik, utana nehany kod, majd a funkcio kodja. Ha a soros porton
erkezik jel, a megszakitasvezerlo egy masik BIOS rutint hiv, amelyik
beolvassa a karaktert, majd nyugtazza a jelet. A bemeneteket at lehet
iranyitani: ha pl. standard bemenetnek a soros vonalat allitod be,
akkor a szabvanyos fuggvenyek innen kapjak a kodokat a billentyuzet
helyett.
>> 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?
Barmi, ami az adott programozasi nyelvben szabvanyos: pl. a C-ben az
"olvass be egy karaktert" (getchar) fuggveny. Ami viszont PC-specifikus
"nezd meg a kovetkezo kodot" (bioskey) fuggveny, az a scankodot is
beolvassa, de ez CSAK A PC-n fut es ott is csak a billentyuzetet
olvassa, nem torodve pl. az atiranyitasokkal.
> ?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?
Nem - a megszakitasvezerlo indit egy megszakitast, ami a megfelelo BIOS
rutinra mutat. Ennek csak ez a feladata, amit irtam, de boven van meg
BIOS rutin, ami mast csinal.
> Hogyhogy optikai lemez? Gondolom nem CD. MiniDisc? Szemmel lathato
> szektorjelek???
Irhato es olvashato magneto-optikai lemez. Lezerrel olvassak es
magnessel irjak (megvaltozik a fenyvisszaveres), de irni egyszerre
csak azon az egyetlen ponton lehet, ahol lezerrel felmelegitik. 600MB
es akkora, mint a CD, de tokba van epitve. A meghajto nagy bohom joszag
es eleg regi technika, viszont ugyanugy kezelheto, mint egy HDD, nem
kell kulon "egetni".
> De hat mar senki nem hasznal 500MB alatti vinyot...
Ugy ertem, egyetlen eddigi winchester sem fog vele menni, hacsak nem
alkalmazol valami trukkot, pl. amit irtal:
> Meg aztan elfer ott ketto BIOS rutin is e celra, nem?
MOST nincs benne a gepben, es nem lenne konnyu elterjeszteni, hogy
minel tobb gepben benne legyen...
>> 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.
Ilyenkor senki nem fordit, tehat a scankodot kapom meg. Sajat valtozoba
teszem el es ugyanugy hasznalhatom, mintha ASCII kodot kaptam volna,
csak a programnak tudnia kell, hogy mi pl. a kurzormozgatok vagy az
Enter scankodja. Ezert van az, hogy ez a programom kulso
palyaszerkesztot hasznal, mert a scankodbol eleg bonyolult eloallitani
az ASCII-t (ami kellene a karakteres kepernyo szerkesztesehez) es en
nem veszodtem ezzel.
>> Ha egy program "ratelepszik" egy BIOS rutinra,
> Azaz a rutint hivo megszakitas vektorat atirja a sajatjara?
Igen.
>> 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?
Az a HW ora: az megy is, semmi baja nem lesz - de a PC-n a programok
NEM azt hasznaljak, hanem a SW orat, amit viszont a BIOS kezel. A
kettot csak indulaskor szinkronizalja.
>> 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?
Ez a kezfogas lenyege! Meg kell mondani neki, hogy elvettem a kodot es
keszen allok a kovetkezo fogadasara!
>> 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?
A 8085-nel ugyan van tobbfele uzemmod, de lenyegeben mindig ugyanugy
megy: ha engedelyezve van es jon egy megszakitas, akkor lefut a rutin
es kozben TILTVA van a tovabbi megszakitasok fogadasa. a 8086-nal a
megszakitasvezerlo ilyenkor is meg tud jegyezni mindenfajta keresbol
EGYET. Tehat ha pl. a floppy kezelese 55ms-ig tartott, akkor kozben
erkezett egy idozites keres, ami akkor futhat le, amikor vege van a
floppy rutinnak. Ahogy lefutott, gyorsan jon a kovetkezo keres is, de
ilyenkor meg nem gond: kicsit "ugrott" az ora, de meg nem kesett. Ha
viszont a floppy miatt a gep egy tizedmasodpercre letiltotta a
megszakitasokat, akkor ezalatt ket idoziteskeres jott, amibol csak egy
fog lefutni, ezert a SW ora 55ms-ot kesik. Van olyan program, amivel
ossze lehet hasonlitani a SW es a HW orat. Amikor en neztem, 1/100 mp
volt a kulonbseg.
>>> BIOS belso rutin forditja a kodokat.
> Mirol mire?
Scan -> ASCII.
>>> Nem tudom milyen programmal nezted
> :-))) Notepaddel.
A Windows-t egyelore hagyjuk... ott minden legalabb negyszer
bonyolultabb. A Notepad - mint a tobbi program is - szabvanyos
fuggvenyeket hasznal es csak a szabvanyos kodokat kapja meg.
> Ez is "megmutatta": uj sor kezdodott. De az Outlookban is mukodik
...mindket gombra ugyanaz az "uj sor". Hol a kulonbseg???
>> 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
> atprogramozni nehany parancsszoval vagy a memorianak azt a
> tablazatos reszet kell atirni. Ezt irjak at a virusok? Jol ertem?
^^^^^^^^^^^^^ standard BIOS megszakitas van erre a celra (is).
Igen, nagyjabol ugyanezt a rendszert hasznalja a 8086 is. A kulonbseg
annyi, hogy itt mar sokmindenre hasznalnak SW megszakitasokat is: a
bemeno adatok regiszterekben, a program kiad egy "int." utasitast,
amire lefut az adott megszakitas es regiszterekben adja vissza az
eredmenyt. Nagyon hasznos: szabvanyos es nem kell tudni a BIOS rutin cimet.
> 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.
Miert, szerinted az OS mit csinal? Gepido csak egy van, ezt lehet
kulonbozo modszerekkel osztani. Kitol kersz "plusz" idot??? Kesobbi
tema, de a 32 bites OS is a megszakitasokat hasznalja: ha letelt az
adott programra kiszabott idoszelet, akkor egy megszakitas fut le, az
OS megkapja a vezerlest, elvegzi a sajat dolgat majd atkapcsol a
kovetkezo programra es atadja neki a vezerlest. Az pedig fut, amig le
nem telik a sajat ideje vagy rendkivuli esemeny nem tortenik. A
programok DOS, Windows vagy UNIX alatt sem "erzik", hogy idonkent
megszakitjak oket (bar problemak lehetnek belole, ha eppen idozitest
szamoltak vagy hasznaltak). Ez az idoosztasos vezerles. A filozofiaja
az, hogy mindenki ugy erzi, hogy csak o fut - a valosag az, hogy
mindenki ugy erzi, csak o"ra' nem jut ido :-(
> 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
A futtathato file-oknal (com, exe) igen, a tobbinel nem. Az exe
file-ban tovabbi info van, ami az inditashoz kell, ahogy mar irtam.
Az is erdekes tema, hogy a processzor mit kezd a gepi kodu
utasitasokkal. Altalaban belul tovabb forditja, igy lehet, hogy egy
gepi utasitasra 10-100 elemi utasitast, ciklust, stb.-t futtat le.
Ha van leirasod, nezd meg, hogy a 8085 hogyan hajtja vegre az
utasitasokat, mar az is tanulsagos. Ha nincs, irhatok rola egy-ket
dolgot emlekezetbol.
> 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?
Igy igaz, bar BIOS rutinokat is meghivhat.
Folyt. kov...
|