Karoly irta:
>>A Tanuljuk meg a JavaScript hasznalat 24 ora alatt c. konyv
>>pont az en szintemnek valo. Kristalytisztan magyaraz.
>Ez nem programozas.
>A programozas cimu tanfolyam, csak mellekesen tanit meg egy
>programnyelvet, en pl. cobolt tanultam, nem az a lenyege.
>A programozas = logika + matematika + kombinatorika.
>A nyelv lenyegtelen.
Jo, talan nem fogalmaztam pontosan.
Termeszetes, hogy a programozas tobb az utasitasok es szintaktika
ismeretenel. Hogy matematika kell-e hozza, az a feladattol fugg.
Remek levelezo progit lehet irni vagy remekul lehet izzomatrixot
vezerelni integralas meg derivalas nelkul, ahogy Taylor meg
Fourier es a szokasos finomasagok sem kellenek hozza,
(Fanta Katalin rulez, szazszor jobban tanitott, mint a Sereny!).
Kep- vagy hangtomoriteshez, u"rbeli palyaszamitasokhoz persze
nem art egy kis matek, nem vitatom.
Me'gis, nem ugy kell elkezdeni programozni tanulni,
hogy rogton modellek meg matek.
Elobb kell a nyelv, sok egyszeru peldaprogrammal,
es foleg a kulvilaggal valo kapcsolattartas, a bill kezeles, a kep-
ernyokezeles, az adat ki-be, fajl megnyitas es bezaras kezeles, stb.,
es csak aztan johet a logika meg matek meg kombinatorika,
meg az egesznek a muvesz szintre emelese.
Mindenestre mindenki hozzaszolasat a temahoz orommel veszek.
Eggornak is koszonom szepen a billes leirasat.
BM
|
Mar megint sorlimit... a kovetkezo resz viszont megjelent. Kuldom meg
egyszer...
> A CODER No.1795 nem jott meg :-( Csak mondom..
Nekem itt van - en az 1-t es a 3-t nem kaptam meg...
>>> Ha be kell olvasni x db bajtot flopirol/lyukkartyarol, [...] A
>>> rutin a beolvasott adatokat sorban irni kezdi a memoria azon
>>> cimetol kezdve es olyan hosszan, ahogy parameterkent megkapta.
>> Elotte felveszi a kapcsolatot, pozicioparancsokat kuld, stb.
> Felveszi? Marmint a userprogival? Mit kell erteni azon, hogy
> "felveszi a kapcsolatot"? Es mit beszel a BIOS rutin vissza?
Nem, hanem a periferiaval. A felhasznalonak nem kell azzal
foglalkoznia, hogy a floppy felporogjon, pozicionaljon, majd a legvegen
meg porogjon 2 mp-ig es csak utana alljon le (eleg baj - neha jol
jonne, ha elore fel tudnam porgetni a floppyt).
> hogy egy-egy progi "szol" a masiknak. Ez nekem mindig gondot okoz.
> Keptelen vagyok maskeppen elkepzelni, mint ugy, hogy az egyik betesz
> egy adatot egy cellaba, a masik meg onnan olvassa. Eddig ugye OK?
> Mar tobb forumon megkerdeztem, de me'g sosem ereztem azt az
> egyertelmu "Igen, ez pontosan igy van." valaszt. Tenyleg igy van,
> vagy csak kepzelodom?
Nagyon ritka, amit irsz. Ha ket program beszelgetni szeretne, komolyabb
op. R.-ben vannak pl. rendszer altal kezelt uzenetek, stb. PC-n lehet
ugy is, hogy az egyik program raul egy interruptra, amit a masik
program meghiv (es regiszterben atadhatja a memoriaterulet cimet, ahova
az adatokat betette). Vegul a fusi megoldas: file-on keresztuli adatcsere.
> A szabvanyos cimeket arra ertettem, hogy a BIOS rutin hova kezdje el
> pakolni az adatokat. Nem a rutin kezdocimere gondoltam, bar ez sem
> egyertelmu. Ha nincs ugrotablazat a stafetabot ideiglenes
> atadasara, akkor hogyan mondja meg a progi, hogy a PC mire mutasson?
A Spectrumon tudnod kell (ROM leiras kell hozza), a PC-n eleg az
interruptok parametereit ismerned. Ez eleg komoly ujitas volt,
tiszteletem a fejlesztoknek. A BIOS adatteruletek reszben szabvanyosak,
de tobbnyire nem kell ismerned oket, mert az oket kezelo interrupt
visszatereskor megadja a cimet, ahol az adat van.
>> A 8086-oson van "megszakitas" utasitas. Ugyanazt csinalja, mintha
>> a HW rangatta volna meg a labat.
> Na jo, csak mi a kulonbseg akozott, hogy a programon belul elugom
> egy sajat rutinra es visszaugrom, meg akozott, hogy megszakitas
> utasitassal ugrom? Az, hogy az utobbi esetben a kornyezeti
> valtozokkal nem kell vacakolni? Ha nem, akkor mi?
A legfontosabb: nem kell tudnod a rutin cimet.
>> Igen. A PC-n pontosan definialt rutinok vannak:
> Marmint a BIOS rutinjanak kezdocimei, meg hogy hova teszik vagy
> honnan varjak majd az adatokat? Mi van definialva? Most akkor
> adatmozgatas elott a userprogi es a BIOS rutin "megbeszelik", hogy
> mit es hova vagy ez is szabvanyos? Homaly.
Speciel, ha diszkrol akarsz olvastatni, akkor kulon regiszterekben meg
kell adnod, hogy melyikrol, honnan kezdve, hany szektort - es egy
fizikai cimet, ahova az adatokat teszi. A BIOS-nak nincs akkora
atmeneti taroloja, ahova befer egy negyed floppy. Visszatereskor pedig
nem csak 1 bites infot ad vissza, hanem hibakodot, ha valami problema volt.
>> mindegyiknel regiszterbe kell irnod, hogy melyik funkciot kered
>> tole, eszerint ugrik szet kulonbozo rutinokra,
> Szoval nem vmi szabvanyos memcimre, hanem egy szabvanyos
> regiszterbe? Ugy is jo. Meg kell irni, hogy melyik funkciot kerem?
> Miert nincs inkabb funkcionkent mas kezdocim, ahova
> (on)megszakitaskor ugorhat? Pusztan azert lenne igy, mert a sok BIOS
Mert nincs annyi megszakitas! Egy ilyen megszakitashoz szaz folotti
funkcio is tartozhat.
> rutin nagyja ugyanugy nez ki es igy tomorebb ha egyben van es kulon
> bajt(szo) mondja meg, hogy pontosan mi is csinaljon? A regiszter
> nemigen lehet szabvanyos, mivel minden proci mas.
8086-os uzemmodban az alapregiszterek minden processzoron 16 bitesek.
>> majd visszateres utan van egy jelzoregiszter is, hogy jol
>> lefutott-e?
> Okos. A regiszter ekkor gyakorlatlag 1 bit erdemi infot tartol,
Ha nincs ott a fuggveny (pl. nincs VGA, de meghivtad a rutinjat), akkor
a regiszter nem valtozik: innen tudod, hogy nem futott le. Ha viszont
lefut, akkor OK jelzest vagy hibakodot kapsz vissza.
>>> De lehet, hogy a bevitel gomb hatasara lefutott egy rutin, ami
>>> mintat vett a bajtbol, es a CPU-n at tette a RAM megfelelo
>>> cellajaba.
Persze, de a gomb nem okozott interruptot, hanem a rutin olvasgatta
folyamatosan, hogy jott-e gombnyomas...
> Hogy is van ez az sok proci kompatibilitas? Sok ceg, sok proci, sok
> belso felepites. A labak es az utasitaskeszlet azonos? Ha nem az,
Igen, az szabvany. Legtobbszor a processzor tobbet is tud, de az mar
nem szabvanyos. Hallottad, hogy a kulonbozo gyartasu Z80 processzorok
is ilyenek? Eleg sok nem dokumentalt utasitast tudnak - de ezeket a
gyarto nem garantalja (hogy mukodnek es hogy jol mukodnek). Ki is
probalhatod a sajat gepeden: tobbnyire azokat az utasitasokat oldottak
meg, amelyeket a HL regiszterrel ismer, de a (DX) es a (DY)
regiszterrel nem. Annyit kell csak tenned, hogy assembly programmal
kiadod a HL-nek megfelelo utasitast es pl. .db utasitassal ELEteszel
egy megfelelo byte-ot, hogy DX vagy DY utasitas legyen belole.
> Na jo, de kerdes me'g mindig az maradt, hogy hogyan ad at adatot egy
> BIOS rutin egy userproginak??? Lehet a rutinnak sajat taroloja
> nyugodtan, de akkor is...??? Azt ertem, hogy a programben getchar()
> es hasonlo fuggvenyekkel megkapni a karakter kodjat, de ez
> fizikailag hogyan nez ki? Barmely ket "beszelgeto" proginak kell egy
> regiszter vagy cella, amiben megegyeztek es oda/onnan pakolnak
> be/ki bajtokat.
Ez szinten szabvanyos interrupt. Meghivod, erre a BIOS rutin megnezi,
hogy van-e eppen a taroloban megfelelo kod: ha van, berakja egy
regiszterbe es visszater vele, ha nem, akkor varja, hogy jojjon
(getchar), vagy visszater nullaval (bioskey). Kiolvasakor lepteti a
gyurus tarolo mutatojat, hogy tovabbra is a megfelelo kodra mutasson.
>>> megadott neki. Eddig stimmel? De mi volt, ha nem "szoveget"
>>> akartak beirni, hanem vezerelni a user progit? Ekkor mit tett a
>>> BIOS rutin?
> Nem vezerlogombra gondoltam, hanem barmilyen beture, ugy, hogy a
> feladat nem szoveg beirasa, hanem az, hogy adott beture, pl. H
> beture kiirja, hogy Hello.
Ez a BIOS-t nem izgatja - Te kersz egy kodot, o odaadja es a
programodnak kell megneznie, hogy ami jott, az a 'H' betu-e?
>>> Tegyuk fel, hogy a user progi azt hagyta meg a BIOS rutinnak
>>> feladatul, hogy mindig ugyanoda tegye az ujonnan bejott
>>> karaktert.
Nem, ezt regiszterben kapod meg. Ha pedig blokkot olvasol (floppy),
akkor neked kell megmondani, hogy hova keruljon az adat. Ezt a
programkornyezeted (a fordito) altalaban megoldja.
> Ezt ertem, de egy fuggveny meghivasa mogott nagyon sok minden van.
> Tobbek kozt egy OS is. Eszem agaban nincs majd magam lekodolni kesz
> fuggvenyeket, de szeretnem erteni, hogy mit csinalnak a program-
> mutatoval es hogyan kommunkalnak a bill.-bekero BIOS rutinnal.
Valos modban ezek vannak, amiket idaig irtam. Vedett uzemmodban eleg
bonyolult, egyelore hagyjuk.
> Amig csak kesz karaktereket, azaz bajtokat kell egy IO porton
> kikuldeni, addig ez nem olyan nagy ugy. Gondolom ez a villanyirogep
> maga intezte a mechanika nyugeit. Vagy ezt is a fo"gep csinalta,
A legelso gepnel meg igen, de nagyon gyorsan csinaltak jobbat...
>> Ha nem hasznalsz interruptot, akkor idonkent ra kell nezni a
>> portra, hogy az irogep atvette-e mar az elkuldott betut - ha igen,
>> lehet kuldeni a kovetkezot es jelezni, hogy "kuldes".
> Ez nem vilagos. Miert kellene itt interrupt? Kiteszem a bajtot,
> "viheted" bit beall, majd az irogep is beallitja az "elvittem"
> bitet. Hogy jon ide interrupt? Nincs varatlan esemeny.
Itt is latszik a kulonbseg a szamitogep es az annak nevezett gep
kozott (nem mondom azt, hogy "jatekgep", mert a PC arra sem volt tul
jo. Tokeletes jatekgep pl. az Amiga. A PC egy olcso oszvergep - volt.
Ma is az, de mar brutalisan eros oszvergep).
Ha nincs interrupt, akkor varnod kell a jelre, vagy idonkent nezegetni
a portot. Ha egy program fut a gepeden, akkor mindegy, de egy
"szamitogepen" sok program fut, idoosztasban.
...a folytatas mar megjelent.
|