Maga a memória vizsgálat pofonegyszerû. Teleírjuk a memóriát egy meghatározott értékkel, majd visszaolvassuk, és a két értéket összehasonlítjuk. Bármilyen apró kis eltérés is a memória rendszer hibás mûködésére utal.
A memória átbogarászására többféle bevált módszer is létezik, én egy sajátos, mondhatni egyéni utat választottam: írjuk tele a memóriát csupa 00h bájttal. Miután végeztünk, olvassuk vissza a teljes memóriát, és ellen?rizzük, hogy minden pozíción 00h van-e. Ha stimmel, menjünk tovább 01h, 02h, 03h ..., egészen FFh-ig. Ha mindezzel végeztünk, az azt jelenti, hogy a memória helyesen mûködik, hiszen minden bit átbillenthet? 0-ról 1-re és 1-r?l 0-ra is.
Problémák
A program elsõ verziójának tesztelése folyamán kiderült, hogy a program nem minden esetben volt képes a rossz memóriából hibát kicsiholni. Azonban a végtelenített teszt miatt beépítésre került "L" parancssori kapcsoló használatával a program legkés?bb a második iterációban már minden hibás memóriát kiszúrt. Így végül a 2.0-s verzióban, alapesetben 3 iterációval fut a program, vagyis végigmegy 00h-tól FFh-ig az összes lehetséges értéken, majd ezt még kétszer megismétli. Az "L" kapcsoló természetesen továbbra is használható maradt...
A másik problémát a 'speciális' memória vizsgálati mód jelentette: a sokféle adat miatt a teljes memória átbogarászása viszonylag hosszú ideig tart, azonban szerencsére az el?re meghirdetett kereteken belül marad. Egy 500 MHz-es Pentium III, 128 MB PC100 SDRAM-os konfiguráción 1 iteráció kb. 7 percig fut...
A program 64 bites transzfert használó változata idõ hiányában sajnos túl bonyolultra és jóval lassabbra sikeredett. Mivel a 32 bites mûveleteket végzõ verzió is tökéletesen megfelelt az elvárásoknak, így nem is foglalkoztam többet a 64 bites program optimalizációjával, és itt sem közlöm le a bénácska program forrását... Ha kedved szottyan a 32-rõl 64 bitre való átírásra, akkor az MMX és FPU rövidítések környékén indulj el! :)
Végeredmény
A program forrása az apróbb extra igények után terjedelmesre nõtt: majdnem 8 KB hosszú lett! :) A program fordított változata is megtalálható a cikk mellett, de nem ajánljuk Win9x alól elindítani. (Simán DOS-ból, minden vezérlô program - pl. EMM386.exe, HIMEM.sys - nélkül.) A programot alaposan elláttam megjegyzésekkel így minden részlet érthetõ. Ellenben hiányzik belõle néhány alapvetõ, ám idõhiány miatt kimaradt kényelmi szolgáltatás, pl. a kurzor eltüntetése vagy a teszt megszakításának lehetõsége...