Hollosi Information eXchange /HIX/
HIX CODER 1784
Copyright (C) HIX
2003-03-24
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: szamtek alapjai - HDD, billentyuzet. leendo OS (mind)  154 sor     (cikkei)

+ - Re: szamtek alapjai - HDD, billentyuzet. leendo OS (mind) VÁLASZ  Feladó: (cikkei)

> Annyira hihetetlen, hogy muszaj biztosra menni, ugyanarrol 
> beszelunk-e: Elektronsugar kozvetlen vezerlesen azt erted, hogy a 
> kepernyot nem pasztazza az elektronsugar, hanem egyesevel rajzolna 
> ki a betuket, mint egy lezerrajzon? A T betuhoz elobb viszintesen 
> megy az e-sugar,
Igen, pontosan ahogy mondod. Nem kifejezetten betuk kijelzesere
terveztek, inkabb rajzokhoz. A sugarat kozben ki is lehet oltani, nem
kell folyamatos vonalat huznia (ha egy vonalat tobbszor huz at, az
fenyesebb lesz). Mono kep, nagy az utanvilagitas es a sugar eleg
gyorsan mozog - nem nagyon villog. Erdekesseg viszont, hogy a
kepfrekvencia fugg a rajz bonyolultsagatol - masreszt viszont nincs
olyan, hogy adott (pl. 320*200) felbontas es szogletes, kockas vonalak
- hanem igen szep, lekerekitett es folyonos vonalakat rajzol.

> Arrol nem is beszelve, hogy szabalyozastechnikai bravur lehetett az
>  elterito tekercsek aramat szabalyozni...
A fenet, pont ez a szepsege. Vizszintes es fuggoleges elterites, eppen
ugy, mint egy oszcilloszkopon, es kioltas. Nem bonyolultabb aramkor,
mint az oszcilloszkop elteritese. Mas kerdes, ha betut akarsz rajzolni, 
mekkora program kell hozza.

>> van es 32MB folott tul nagyok ahhoz, hogy cimforditas nelkul 
>> kezelhetok legyenek.
> Megint az van, hogy keves a cimvezetek? Mar a 20bit sem eleg... 
> Kulso csip csinal 25 bitet belole? (25 bit = 32 millio szo)
Nem kell ennyi: egy szektor n*256 byte, es csak egyszerre kezelheto.
Itt az a problema, hogy anno ugy gondoltak, hogy a winchesterek
bizonyos modon fognak fejlodni (iro/olvaso fejek szama novekszik, stb.)
Nem jott be: a mai winchestereken altalaban 2 fej van, de a BIOS-ban
mar szabvanyos, hogy a fejek, a savok es a szektorok szama hany biten
van tarolva - es a >32MB winchestereken valamelyikbol tobb van. Ezert a
winchester, amikor a az op.r. megkerdezi, akkor azt mondja, hogy pl. 32
feje van es aranyosan kevesebb savja - es o maga visszaforditja a
pozicionalasi kereseket a valos adatoknak megfeleloen (ez 500MB-ig
mukodik, efolott tovabbi trukkok is kellenek). Emiatt viszont nem
mukodik az interleave modszer (nem is kell, a winchester logikaja
megoldja) es a diszk karbantarto/ujraformazo programok (mivel nem
ismerik a fizikai szervezest) csak annyit tudnak tenni vele, hogy
minden szektort a sajat poziciojan ujrairnak.

>> Hogyne, pl. a C64-en, vagy a CP/M rendszer. A PC floppyn FAT12
> Szoval akkor mi az a FAT 12/16/32  meg NTFS?
So:rlimit :-( ...inkabb legkozelebb.

> Billentyuzet: Felteszem a bill. kap egy tapot, foldet, meg kell ugye
>  egy vezetek, amin sorosan pl stop es startbitekkel adja a 
> karakterek kodjat a leutes pillanataban. Ez 3 vezetek. Megis tobb 
Nem a leuteskor adja at, hanem normal, "kezfogasos" modszerrel. Sajat 
taroloja van, tobb gombot meg tud jegyezni.

> van benne. Miert?
A billentyuzet intelligens eszkoz, a gep is tud neki adatot kuldeni,
amire az valaszol is. Az XT billentyuzet meg fix programozasu volt, az
AT-n mar a fo gep tudja villogtatni a LED-eket, stb.

> Tegyuk fel a szgepben van egy fogado csip, ami ezeket parhuzamossa 
> alakitja, kiteszi a sajat kimenetere, majd megszakitast ker. Es 
> annak a vektora hova mutat? Megis milyen rutin fut le? A rutin
Alaphelyzetben a megfelelo ROM BIOS rutinra, amelyik beolvassa a kodot
(ez a kod a lenyomott - ezt a bilentyuzet _programozhato_ idonkent
ismetli - vagy a felengedett billentyu helyet mutatja meg) a megfelelo
porton, majd kuld egy nyugtazo jelet a billentyuzetnek. Ezutan
feldolgozza a kapott kodot. Ez a BIOS rutin lecserelheto: en mar irtam
olyan programot, ahol egyszerre 8 jatekos nyomogatja a gombokat es
mindnek _folyamatosan_ kell mukodnie.

> beolvassa a csip kimeneten levo 8 bitet, jo, de es aztan? Mit kezd 
> vele? Ugyerzem az OS mar nagyon dorombol az ajton...
A Shift/Ctrl/Alt/xLock/stb. allapotat megjegyzi (rendszervaltozoban,
es figyeli azt is, hogy mikor engedik el a gombot), a tobbi gombnak
csak a lenyomasat figyeli: ha jon a jel, beirja egy tizelemu gyurus
taroloba (tiz gombnyomas fer bele, es korkorosen irja/olvassa). Ha ez
betelt es jon uj gombnyomas, akkor sipol. A kodokat feldolgozza: 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. 
Egyebkent mindenki ezt a tarolot olvassa, de a szabvanyos fuggvenyek 
csak a ASCII kodokat szoktak megkapni, pl. az "F" gombokat vagy a 
nyilakat nem.
Ez idaig a 84 gombos billentyuzet volt. A 100+x gombos a kiterjesztett
gomboknal programozhato ugy, hogy max. 4 byte-os, hosszu kodokat kuld, 
aminek az utolso byte-ja az alapkod (ha a program nem ismeri, csak ezt 
fogja hasznalni).

> A billentyuzet butan adja a leutott billentyuk kodjait, a csip belul
Nem - intelligensen nezi, hogy mikor nyomtak le es engedtek el az adott
gombot es pontosan igy kuldi a kodokat is. Most a PC billentyuzetrol
beszelunk: a regebbi billentyuzetek egyszerubbek voltak. A Spectrumon
pl. matrixhuzalozasu volt: minden felsorban es oszlopban egy huzal - a
megnyomott billentyu rovidre zarta oket. Az olvasas ugy nezett ki, hogy
a gep a megfelelo IO porton sorban kikuldott egy-egy jelet, ami kiment
mondjuk a megfelelo "felsor" huzalra, es mindegyik utan beolvasta az
"oszlop" huzalok allapotat (egy huzal egy bit). Ezzel csak az a gond,
hogy ha egy adott felsorban vagy oszlopban lenyomsz ket gombot es ra
merolegesen egy harmadikat is, akkor az ugyanolyan hatasu, mintha
lenyomtad volna az adott teglalapnak megfelelo negyedik gombot is
(rajzold le a huzalokat, ugy jobban lathato, miert). A Spectrum nem
jegyezte meg a gombokat: ha nyomtad, adott idonkent ismetelte, ha
elegedted, elfelejtette. Elodje, a ZX81 nem is ismetelte, nyomogatni
kellett.

> A programokat es altalaban mindenfele adatot fajlokba szervezik a 
> kulso tarakon. Mitol lesz 1000 bajt egymas utan egyenlo egy fajllal?
>  Van valami fejlec, hogy micsoda, meg farok, hogy hol a vege?
Az adatban nincs semmi ilyen (csak a vezetobitek, ahogy irtam es a 
CRC), hanem a tartalomjegyzek (pl. a FAT) - ami viszont szabvanyos 
helyen kezdodik - mondja meg, hogy mi hol van.

> rezidens progi egyszer is atadja a CPUt a user altal kivalasztott 
> proginak, onnatol kezdve semmi hatalma nem marad.
Tevedsz. Mar DOS/Win3 alatt is ott van a megszakitasi rendszer: ha mas
nem, 55ms-onkent az idozito "szol" (persze, ha ezt az elinditott
program nem tiltotta le) es a ROM-BIOS rutin visszakapja a vezerlest.
Igy mukodnek pl. a nem dedikalt DOS szerverek. Van olyan 8085-os alapu 
gep, amelyiken egy nyomogomb alaphelyzetbe hozza a gepet (a BIOS 
visszakapja a vezerlest es nem torol ki semmit. Persze, ha meg elotte a 
felhasznaloi program mindent kiirtott, az pech). Ra lehet "ulni" tobb 
megszakitasra, igy a program mindig helyre tudja allitani magat, ha 
"elszedtek" volna tole a megszakitasi cimet. Letezik programkilovo 
program is: adott billentyure leallitja az eppen futo programot. En is 
irtam ilyet, Spectrumra: az esetek 70%-aban le tudta alitani a gepi 
kodu programot. Akkor van csak gond, ha valaki tonkreteszi a 
rendszervaltozokat, vagy ha letiltja a megszakitasokat. Azonban a 
286-os, ill. 386-oson mar letezik un. vedett uzemmod: ilyenkor pontosan 
meg van hatarozva, hogy az adott programszegmensnek mi a sajat terulete 
(csak olvashato), hol van az adatterulete stb. Ha mast csinal (pl. 
kilep a sajat teruleterol, tiltott teruletet akar irni/olvasni, vedett 
utasitast ad ki - mondjuk a megszakitasok letiltasat - vagy egyeb hiba 
tortenik), akkor a processzor egy nem letilthato megszakitast general, 
ami normalis esetben egy olyan rutinra mutat, amelyikkel a 
(remelhetoleg hibatlanul megirt) operacios rendszer lekezeli az adott 
problemat: kiir egy uzenetet, leallitja az adott programot/rakerdez, 
hogy engedelyezed-e az adott muveletet, stb. Ha hibakezeles kozben (a 
belso rutinban) tortenik ujabb hiba, akkor a processzorok tobbsege 
hasznalhatalannak minositi a rendszert es leall.
Letezik olyan uzemmod is, amelyik kulon-kulon minden program szamara
latszolag olyan, mint a valos (amit ismersz), de valojaban vedett es
ellenorzott: ezt hasznaljak a memoriakezelo programok (pl. EMM386).
Errol es a vedett modrol reszletesebben kesobb.

> Tovabba az elmelkedesem szerint a userprogi rogton a BIOS rutint 
> hivogatja, ami nem valoszinu, hogy valoban igy van.
Valoban nem: altalaban sajat programkonyvtarakban levo rutinokat szokas
hivni (pl. szinte mindehol van elore megirt "print" rutin). Csak ha
nincs ilyen/nem eleg jo/gyors, akkor szokas BIOS rutint hivni - ill. ha 
az sincs (pl. bill. kezeles) akkor ir az ember periferiakezelo rutint.

> Milyen feladata van me'g annak a nyamvad rezidens proginak ezen a 
> szinten? (asszem nagykepuseg lenne maris OSnek hivni) Modern 
> OS-feladatokat nem keverjunk bele, tenyleg maradjunk az alapoknal,
Nezd meg pl. a HHELP programban a ROM-BIOS vagy a DOS rutinokat es
adatteruleteket. Vannak szep szammal, pedig ez csak a BIOS ill. a DOS.
Itt van FAT es billentyuzet mukodesi leiras is.

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS