Hollosi Information eXchange /HIX/
HIX CODER 144
Copyright (C) HIX
1998-06-24
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: Informaciot kerek... (mind)  59 sor     (cikkei)
2 Re: Kerdesek... (mind)  125 sor     (cikkei)
3 Talan segitek (mind)  50 sor     (cikkei)
4 Re: #143 (mind)  32 sor     (cikkei)
5 ASM compiler (mind)  9 sor     (cikkei)
6 SB programozas konyv #6 (mind)  10 sor     (cikkei)
7 Grafika / Pascal (mind)  15 sor     (cikkei)
8 Adatbazis kezeles (mind)  43 sor     (cikkei)
9 Re: C64 keretbontas, FLI/FPP (mind)  71 sor     (cikkei)

+ - Re: Informaciot kerek... (mind) VÁLASZ  Feladó: (cikkei)

On 21 Jun 98 at 12:06,  > wrote:

> > >Azert a Pentium orajeleivel nagyon vigyazni kell, van
> > >ugy, hogy egy program gyorsabb lesz attol, ha megfelelo
> > >helyre berak az ember egy NOP-ot!!
> Azert ez nem ilyen egyszeru...
> a NOP regebben gyorsitott, akkor se a NOP maga, hanem hogy
> a cimket paros cimre tolta, es igy gyorsabban tudott a proci
> raugrani (ALIGN 2 es tarsai a TASM-ban)

Nem erre gondoltam.

> Pentin mar nem igazan szamit az ALIGN.

Emlekeim szerint szamit, de most nem tudok utananezni. A 
pentopt.txt-ben le van irva, hogy mennyire szamit.

Amire en gondoltam a NOP-pal, az pl. a ket pipe kezelese: bizonyos 
utasitasok csak az u pipe-ban parhuzamosithatok (hajthatok vegre 
egyszerre egy masikkal), tehat ha "veletlenul" a masik (v) pipe-ba 
jonne ki az ilyen utasitas rendszeresen, akkor duplajara nohet az 
ido. Egyetlen NOP jo helyre pakolasaval viszont elerheto, hogy az 
ilyen utasitas az u pipe-ba keruljon, es akkor gyorsabb lesz a proci. 

A masik eszembe juto dolog nem ennyire gyakorlati fontossagu, csak 
erdekesseg: a Pentiumon a Brench Prediction (ami megtippeli, hogy egy 
felteteles ugro utasitas fog-e ugrani, vagy nem) nem szereti az ilyen 
ciklust:

ciklus: dec eax
        jnz ciklus

valamiert (mar nem emlekszem a reszletekre) rosszul szamol vele, 
ezert ezt lassan hajtja vegre. A kovetkezot viszont jol meg tudja 
becsulni:

ciklus: nop
        dec eax
        jnz ciklus

es ez a masodik ciklus sokkal gyorsabban lefut, mint az elso :))

Talan akik kozuletek Linux-oznak, tudjak, mi az a BogoMips: Ez egy 
olyan szam, ami valamennyire jellemzi a proci sebesseget. Nem egy 
igazi benchmark eredmenye, hanem arra jo, hogy a kernelben pontosan 
lehessen kicsi keslelteteseket idoziteni. Ezt a BogoMips-et a Linux 
kernel az elso ciklus (NOP nelkul) szerint szamolja ki. Az erdekesseg 
az, hogy a kb. hasonlo sebessegu (nem orajelu, hanem teljesitmenyu) 
Pentium illetve AMD K6 procik kozott oriasi kulonbseg van a 
BogoMips-ben az AMD javara, mert az AMD brench prediction-je 
masmilyen, es jol mukodik ennel a ciklusnal :))

Azert ebbol ne kovetkeztesse senki azt, hogy a Penti rossz, csupan 
erre a ciklusra mashogy mukodik. A gyakorlatban fontos ciklusoknal 
jol mukodik a BP.

István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - Re: Kerdesek... (mind) VÁLASZ  Feladó: (cikkei)

On 22 Jun 98 at 7:48,  > wrote:

> Kedves Alen, Mihaly es Zoltan,

Egyikuk sem vagyok, de gondolom, nem baj :)

> Mi tortenik akkor, ha nem protected mode-ban egy olyan
> cimet cimeznek meg mely mar kivul esne a fizikalis memoria
> teruleten?

PC hardware-rel alapesetben ugy tudom, semmi. Ugyanis a PC busza nem 
csinal semmi visszajelzest (handshake-et) arrol, hogy sikerult-e a 
memoriahozzaferes. Gondolom, mas buszokon se handshake-kel megy a 
dolog, mert az tul lassu lenne, de ugy emlekszem, van olyan busz 
topologia, ami ilyenkor hibat tud jelezni.

Ez nem fugg a protected modtol egyebkent, protected modban sem lesz 
belole exception vagy NMI vagy hasonlo. (Legalabbis tudtommal.)

> Mi van ha protected modeban a CS-be pl. 0-t irok?

Exception

> A BIOS hogyan teszteli a memoriat?

Valoszinuleg nagyon lazan.

> Mit csinal a HIMEM.SYS ?
> 	1. teszteli a memoriat.
> 		-De hogyan teszteli es miert?

A himem-nek (legalabbis valamelyik verziojanak tuti) hozzaferheto a 
forrasa, ugyhogy megnezheted benne.

Hogy miert teszteli? Hogy kideritse, hogy jo-e :))

> 	2. ...
> 		-Meg mit csinal a HIMEM.SYS?

Ez az MS-DOS alap memoria managere, az XMS specifikacio szerint. 
Nyilvantartja az 1MB folotti cimeken levo memoriateruletet, lehet 
tole teruletet kerni, masolni oda ilyen-olyan helyekrol (1MB-on 
alulrol is, folulrol is). Ezen kivul nyilvantartja a 640k-1MB kozotti 
terulet (upper memory blocks), ha van ott lathato RAM. (Az emm386.exe 
is tud oda map-pelni memoriat, olyankor o tartja nyilvan, de 
ugyancsak az XMS specifikacio szerint.)

Ezen kivul kitalalasakor a fo feladata a volt, hogy a windows 2.0
szamara majdnem 64k-val megnovelje a DOS-bol (real modbol) cimezheto
memoriateruletet. Az ffff szegmens hexa 10-es offsetjetol kezdve
ugyanis lathato real modbol is az 1MB-nal nagyobb memoriaterulet
elso majdnem 64k-ja (HMA: High Memory Area), ha az A20 cimvonalat
nem tiltja le az ember. A Microsoft akkortajt nagy orommel
jelentette be, hogy "talalt meg 64kB teruletet, amit a Windows tud
hasznalni". :)

> Nekem volt egyszer egy rossz alaplapom es abban
> a BIOS nem vette eszre, hogy a memoria rossz, de a HIMEM
> folyton eszrevette.

A HIMEM sem vesz am eszre nagyon gyakran rossz memoriat. Az eddig 
ismert legjobb "modszer" a memoriahiba megtalalasara az, hogyha az 
ember elkezd ciklusban Linux kernelt forditani. :)) Ha nem szall el a 
gcc, akkor valoszinu jo a memoria (illeve az alaplap-memoria paros).

> A linuxban mire is jo a sleep() ?
> Mikor szoktak hasznalni?

Arra jo, hogy beallithato ideig ne fusson, "aludjon" a program. Es 
arra hasznalhato, hogyha olyan script-et karsz irni, ami pl. figyeli, 
hogy jott-e leveled, akkor egy ciklusban megnezed, hogy jott-e level, 
aztan alszol nehany masodpercig, es ujra az elejetol. Amiert jo, az 
pedig az, mert nem "busy waiting"-et csinal, tehat nem allandoan a 
programod figyeli, hogy letelt-e mar az ido, igy nem fogyaszt 
processzoridot, nyugodtan futhat kozben az, aminek futnia kell. (A 
Linuxban illtve unixokban hatteben is el lehet inditani akar 
script-eket is, nincs szukseg olyan fogalomra, hogy TSR.)

> Ha egy szegmes 4GB meretu, akkor ha a hatar meg van adva
> es en egy hataron tuli cimet cimzek meg, akkor is bejon
> egy exception?

Ezt nem ertem. Ha egy szegmens 4GB meretu, akkor fizikailag nem vagy 
kepes a meretenel (4GB-nal) nagyobb cimet megadni, mert 32 biten max. 
4GB cimezheto. Vagy ugy erted, hogy a hatar (limit) kevesebb? Akkor 
meg nem 4GB-os a szegmensed.

> pl. a hatar az	DS:00010000 es ha en a DS:00020000-be
> akarok irni ? Na, akkor mi tortenne???

A hatar nem ds:00010000, hanem szimplan 00010000. Nincs a hatarban 
szegmensregiszter! Ha egy szegmens deszkriptort, aminek X a limitje, 
betoltesz a DS regiszterbe azzal, hogy a szelektorat beletoltod a 
DS-be, akkor a DS:X+1-nel nagyobb cimre valo hivatkozaskor exception 
lesz.

> En ugy tudtam, hogy vannak lapok...
> Egy lap az 4096 byte.

Ujabb prociknal (Penti) lehet a lap merete 4MB is.

> Egy lap lehet present es nem present is.
> Ha nem present es eppen valaki el akarna azt erni, akkor
> keletkezik egy exception es az OS elintezi a lap "berakasat".
> Utana mar azt a lapot present kent kell jelolni.

Ezt is az OS inezi el.

> Hol van az leirva, hogy egy lap az present vagy nem
> present?

Minden laphoz van egy lapleiro terulet, ahol megvan a lap fizikai 
cime mellett tobbek kozott ez a bit is. Most eppen nem talalom a 
lapozasrol szolo pdf file-t, nem tudom pontosabban mondani, de nezz 
be az intel-hez (http://www.intel.com/), ott tuti raakadsz.

> Egy elegge hosszu leiras lehet ez, mivel ha pl. nagy a
> memoria pl. 64MB, akkor annak minden lapjat kulon kell
> jelolni, hogy ez most present vagy nem present...

Igen, ezert talaltak ki a 4MB-os lapmeretet.

István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - Talan segitek (mind) VÁLASZ  Feladó: (cikkei)

Hello!

>>Nos en csak ajanlani tudok.
>>A Pmode-nek szabad volt a forrasa eleg jol volt
>>kommentezve. A Dos32 jobb volt.
>	Hol tudom ezeket beszerezni?

Van nekik kulon site-juk. Amit en se tudok fejbol. Ez a Triton-ek
csinaltak. Akik a FastTrackert na meg jo par demot es kisebb jatekot.
Keress ra. Vagy vedd fel a kapcsolatot demo csoportokkal. Ha nem megy akkor
nekem is megvan valahol 5&1/2-es disken. Csak meghajtom nincs hozza, ha
nagyon kell akkor valahogy eljutatom neked.  Arra keszulj fel hogy vagy
300K es jo par sor.

>Egyebkent nekem a legnagyobb segitseg az az lenne, ha
>valaki tudna nekem adni egy forraskodot, mely atkapcsol
>386 protected mode-ba, beallitja a descriptorokat, ...

Ott nem csak ennyi a gond, kell interrupt tablakat kezelni. Globalisan,
Lokalisan. Meg kell valositani egy csomo mindent pl 16 bites interrupt
hivast. Illetve erdemes sajat file-kezelest irni es memoria managert. Van
mit szivni vele.

>>Azert a Pentium orajeleivel nagyon vigyazni kell, van
>>ugy, hogy egy program gyorsabb lesz attol, ha megfelelo
>>helyre berak az ember egy NOP-ot!!
>	Ha ez a Pentium ilyen "csavaros eszu", honnan
>	tudhatom meg, hogy hova mit kell rakni???

Keres ra a PLT /Pascal Lite Compiller/ Plt csoport munkaja. Van demo resze.
Ha letoltod akkor es mar tudsz pascalban programozni nem sok teendod van.
Ez egy protected modu pascal fordito. Jobb mint a 7-es pascal/az objectum
hibakat kijavitottak, illetve bevezettek a result-ot illetve a normalis
override-ot.../.
Ami a lenyeg olyan a debugerre ha futattsz akkor mutatja a forditott
assembly reszt is. Ilyet se lattam meg. Beirod szepen a kodot kersz egy
optimalizalast. Majd debug es latod melyik utasitasokat Nop-olja ki. Ez is
arra az okossagra epul amit mar egyszer leirtam a memoria elereseknel.

Sok sikert.

>Egyebkent kozuletek akarki csinalt mar valaha egy ASM compilert ?

En igen. De meg Z80-ra. Az akkori gyari forditoknal tobb mint tizszer
gyorsabb volt. Aki nem hiszi kerdezze meg egy Enterprise 128K programozotol
mi a velemenye a FENAS-rol vagy a sokaig jateklista vezeto SWAP jatekrol.
Na eleg a nosztalgiabol es a omreklambol.

Udv,
		Moonlight.
+ - Re: #143 (mind) VÁLASZ  Feladó: (cikkei)

Hi Coders!

> Felado : znp [United States]
> Temakor: Kerdesek... CODER #143

> Mit csinal a HIMEM.SYS ?
Van forrasom, abba megnezheted :)))

> Ezt a codert kb. hanyan olvassak?
Ezt soha nem fogod megtudni. Bizalmas adat.
Gondolj bele: spamkiralyoknak, direct mailosoknak,
stb. milyen jol jonne!


> Felado :  [Hungary]
> Temakor: Re: POP3 CODER #143

A CHIP Magazin kibocsajtott egy olyan CD-t amin rajta van az osszes
(asszem 75MB) iNET szabvany. Nekem megvan. Azota mar lattam egy 83MB
is, de epp nem volt nalam ceruza :)))


> Felado :  [Hungary]
> Temakor: Re:Programozasi nyelv CODER #143

> >Egyebkent kozuletek akarki csinalt mar valaha egy ASM compilert ?
> Nem hinnem. No comment.
Nana. MascoT irt egy ASM compilert :))) G++ ASM 2.1 a neve (most).
16/32bit, forciklus, ifthenelse, break, + egyebek.
Ja, nem a tasmnak adja at hanem complete fordit (ASM to BIN)!

udv: XiX
+ - ASM compiler (mind) VÁLASZ  Feladó: (cikkei)

 wrote:
> Egyebkent kozuletek akarki csinalt mar valaha egy ASM compilert ?

Nagy tervem, hogy MCS51-hez irok egy free C forditot. El is kezdtem,
de igazan jo kod csak az ASM fordtito es a linker hathatos
tamogatasaval keszitheto, igy irtam ASM forditot, ami nagyjabol keszen
is van, csak a munka fele a linkerre marad, ami meg nincs kesz.. 

Drotos Dani
+ - SB programozas konyv #6 (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

A Coder 6. szamaban irtam egy SoundBlaster progizasrol szolo konyvrol.
Nehany hete jelentkezett nalam valaki, akinek megigertem, hogy elkuldom.

Ha ezek alapjan magadra ismersz, legyszi dobjal meg ismetelten egy
e-mailel, ugyanis elkeveredett a cimed. A konyvet kozben megtalaltam.

Szia,
Gergo
+ - Grafika / Pascal (mind) VÁLASZ  Feladó: (cikkei)

Hali Evribodri!

Tudtok-e olyan ftp/http cimet, ahonnan egyszerubb 2D / 3D grafikai
transzformaciokat megvalosito programokat lehet talalni _Turbo_Pascal_-ban?
Pl. Elforgatas, 3D lekepezes a kepernyore, nem lathato elek eltuntetese,
stb.? 

(Most irok ilyesmit, van, ami sikerul is, de egy-ket dolog jol jonne
segitsegul)

Koszonettel: meri 
* Name: Laszlo MERENYI
* meri\merysoft
* E-Mail: 
* Szeged, Hungary
+ - Adatbazis kezeles (mind) VÁLASZ  Feladó: (cikkei)

Hi !

> >meg a Clipper se rosz nyelv... (ajjaj most sokan kiabalni fognak!!)

Hat en nem fogok !

> Dehogy.. aki doszos adatbaziskezeleshez sokkal jobb eszkozt tud,
> az esetleg kiabalhat, de ne tul hangosan :)

Ezzel en is egyetertek. En mostanaban kovalygok a windowsos programozas
iranyaba, de meg nemigen mertem belefogni adatbazist kezelo progi
megirasaba.

Ott van ez a Clipper. A mai eromuveken egy tipikus uzleti (nem
matematikai/tudomanyos) alkalmazas teljesmertekben elfogadhato
sebesseggel fut. Ha valakinek erre van ingerenciaja, kis odafigyelessel
remek jo halozatos programokat tud benne irni. 
Ehhez kepest az ujmodi programnyelvek, mind jellemzoen valamilyen
Database engine rendszeru hozzaferest igenyelnek, es ha halozatos
programot akarnal irni, akkor kezdheted felkotni a gatyaszarat, mert
ugye eloszoris, ehhez mar kell a 100kFt feletti hiperszuper halozatos
valtozat, azutan a felhasznalonak szinten nem lesz eleg egy szimpla
novell szerver, kell a tetejebe valamilyen SQL szerver, amibol eddig
szinten jocskan 100kFt feletti valtozatokat lattam. Es vegeredmenyben,
ezeken az eszkozokon is csak a szimpla konyvelo/szamlazo progija fog
futni.
(termeszetesen alairom, hogy egy 100Mb-os adatbazis rendszer kezelesehez
mar  kellenek az ilyen eszkozok, de egy max 20-40 tablas rendszerhez
minek?)

Most arrol mar nem beszelek, hogy egyaltalan nem szivesen adom ki a
kezembol a lock kezelest, mert az a biztos amit magad csinalsz, abbol
nincs meglepetes.

Amennyiben a Win-es halozatos programozas tekinteteben valamiben
tevednek, kerlek javitsatok ki. A leirtak az eddigi megfigyeleseimet
tukrozik.

Egyben ha mar ugy is errol irok, keresek olyan emberket, aki irogatott
mar halozatos adatbazist hasznalo programot DELPHI-ben. (merthogy nekem
ez van keznel)

Udv : Csiszar L.
+ - Re: C64 keretbontas, FLI/FPP (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

  Oszinten szolva sokkal tobbet vartam volna egy CODER lev.listatol, de
hat ha mindenki csak a kulonbozo programnyelveket tudja SUXolni, hat csak
tegye. (Tisztelet a kivetelnek!) Szerintem ertelmetlen ezekrol *ennyit*
beszelni. 

Hogyan lehet megcsinalni C64, Basic V2.0-an a keretbontast? kb igy:

10 SYS 49152 : REM :-)

A gepi kodu program lenyege pedig az, hogy a VIC (C64 video-proci) az
utolso karaktersor utan bekapcsolja a keretet. Pontosabban, ha mar felirta
mind a 25 (vagy 24) sort, es a kovetkezo rasztersorban a $D011 es $D012
also 3 bitje megegyezik, _akkor_ kapcsolja be a keretet. 
($D011 0-2 bitek : fuggoleges eltolas; $D012 : rasztersor szamlalo)
Ha az utolso karaktersor felirasa kozben eltoljuk a kepernyot felfele 
akkor ez a feltetel mar nem fog fenn allni, kovetkezeskepp, a keret
bekapcsolasa elmarad. Viszont vissza kell allitani a fuggoleges eltolast,
hogy a kovetkezo kepfeliraskor is ki tudjuk kapcsolni a keretet.
Pl. ha az elektronsugar a $F9-s sorban van, es mi elmozditjuk a kepet
ugy, hogy a kartaktersor alja mondjuk $F7-ben van, akkor olyan, mintha a
keret mar reg be lenne kapcsolva, s a VIC nem fog tobbet foglalkozni vele. 

Azt is meg lehet csinalni, hogy amikor a $D011 eredeti erteket
visszairjuk, lekapcsoljuk a kepernyot. Elvileg a kepernyo ki van
kapcsolva, noha a sprite-k latszanak az egesz kepernyon! De nincs
rovidsor, sem mas grafikai adat. (Max. a $3FFF-es cim tartalma, ami
altalaban 40 db bitminta csik fuggolegesen.) 

Az oldalso keret lebontast mar lehet szo szerint lebontasnak venni,
ugyanis azt rasztersorrol rasztersorra kell kiloni a keretet. A lenyege
hasonlo az elobbihez, de itt vizszintes eltolassal ($D016) kell
szorakozni. (Ki gondolta volna? :) Ennel a jateknal mar nagyon fontos az
idozites! Ha mar egy orajelell is elter, ugrott az egesz frame!

Van azonban egy rakas jopofa VIC-es effekt, amit mar nem olyan sokan
ismernek. (Na meg ugyan kit erdekel 1998-ban? :)
Pl. FLI, FPP es ezek klonjai...
Az FLI-nek az a lenyege, hogy amikor a $D011-es regiszterbe irunk
(megfelelo idozitessel), akkor rovidsort idezhetunk elo. (Persze ehhez meg
a megfelelo ertek is kell, espedig a $D012 also 3 bitje.)
*Rovidsor*: az a rasztersor, ahol a VIC elhozza a memoriabol a
karaktersor felepitesehez szukseges informaciokat. Ezido alatt a CPU le
van tiltva (DMA miatt).  Kevesebb orajel jut a CPU-nak, ezert rovid a
rovidsor.) A rovidsor miatt a $D018-ban beallitott memorialapot fogja
latni a VIC, ezert akar minden karaktersorban mas-mas szinmemoria lapokat
lehet beallitani. Eredmenye: sokkal tobb szint lehet hasznlani, akar mind
a 16-ot. ;-/ De ha egy kis interlace-t is hasznalunk (egy pixellel
eltoljuk az egesz kepernyot, minden 2. kepfelirasban), akkor a kep
elmosodik egy picit, es a szinek osszekeverednek. Szines TV-n igy eloall a
120 szin. 
Az FPP pedig annyiban kulonbozik az FLI-tol, hogy 2 orajellel rovidebb a
kod, hamarabb irjuk a $D011-et, emiatt a VIC elfelejti novelni a
karaktersoron beluli rasztersor szamlalo regiszteret. Ez azert jo, mert
elvileg 8*16=128 kulonbozo rasztersor-mintat abba a rasztersorba tesszuk,
ahova csak akarjuk. Ezzel lehet megcsinalni egy csomo AMIGA-s stilusu
effektet, mint pl. FPP-BAR. Vagy chess-board zoomer, meg me'g nagyon
sokmindent.

Egyik szerzo irta a C= Hacking-ben: "The VIC programming became a
science!"   (bizom benne, hogy jol irtam)

Remelem van olyan, aki idaig eljutott az olvasasban, es nem banta meg,
hogy vegigolvasta. 

u.i: Ha valaki akar valamit a cikkre valaszolni, csak tegye nyugodtan, en
szeptemeber 7-e elott semmikepp sem tudok ra valaszolni. De azert biztos
lesz valaki mas, aki valaszolni fog.

		Scorpy / Replay

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