HIMEM.SYS používal na 386 "unreal mode": segment16+offset32, pro kopírování z XMS do dolních 1MB+64kB nepotřeboval přepínat do protected režimu a naopak, čímž se šetřil čas.
Na 286 se používala instrukce LOADALL k naplnění segment deskriptorů pro přístup do XMS. Přepnutí do protected režimu a zpět na 286 vyžadovalo reset CPU.
EMM386 používal V8086 režim + stránkování. EMS mapoval na dolní adresy změnou PTE (page table entry), nic se nekopírovalo.
Překlad adres byl ale pomalejší než čistý real, na některých hrách a demech to bylo poznat.
QEMM ve skutecnosti delal to, co se dalo udelat i rucne, jen si musel vedet co delas. Ta nekompatabilita spocivala prevazne v tom, ze se snazil cile dosahnout pomerne agresivne, a to se ne kazde veci libilo.
Kdo v te dobe hraval na PC nejake gamesky, tak taky pravdepodobne pamatuje hratky typu ... kdyz nactu mys, nevejde se zvukovka, protoze jinak mi hra vynada, ze neni dost ram. Takze kazdy spravny hrac v te dobe mel nekoli ruznych ovladacu a nekolik ruznych autoexecu ... pro ruzne prilezitosti.
Pricemz i na poradi nacitani zalezelo, protoze nektere ty veci po nejake dobe(inicializace) cast pameti uvolnily.
Mno a ti silenejsi si treba napsali mysovani vlastni ;D. Vyhoda byla v tom, ze to zabiralo vyrazne min pameti, nevyhoda ze to typicky fungovalo jen s tou konkretni mysi.
Na zvukovku jsem měl vlastní inicializátor. Stačilo do PCI registrů zapsat jaký port, IRQ a DMA má používat a to bylo všechno, pár ASM instrukcí, nastavení drželo do restartu.
ISA zvukovky se nastavovaly jumpery, nepotřebovaly nic navíc.
Jen PCI jako Plug&Pray zařízení se muselo inicializovat.
Gamesky měly driver svůj, vlastně nevím, k čemu rezident od zvukovky byl, jelo to i bez něj.
Na myš jsem měl taky několik ovladačů, originální měl snad 40kB, strašně moc, podařilo se mi pak najít nějaký úsporný pod 10kB.
Stema zvukovkama to bylo tak, ze zalezelo na tom, co mas za zvukovku, vs co umi hra, a jakou jinou zvukovku potrebujes emulovat. Typicky pokud byla zvukovka kompatabilni s SB, tak to nejak (ne vzdy ale vetsinou) fungovalo, ale i tak si moh narazit na to, ze hra umela 8bit, ale ty uz si mel 16bit zvukovku ... takze si zase musel neco nekde presvedcit.
Ostatne, viz dosbox, tam si spoustu tech moznosti muzes v nastaveni zvuku prohlidnout.
Nekde se mi mozna porad jeste vali emulator SB na covox (pro ty co nevedi, paralelni port + par odporu a kondenzator = 8bit zvukovka za par jednotek korun byla na svete, v pripade portu dvou dokonce stereo). Pripadne novodobejsi driver pro win (tusim XP to jeste zkously) emulujici SB na speaker.
Covox ale nebyl emulátor SB. Programy pro DOS pro něj musely mít podporu zvlášť. Leda by pro něj existoval WDM ovladač pro Windows 98. Pak by se dal použít k emulaci SB pro programy pro DOS spuštěné pod Windows.
Stejně tak "audio driver for PC speaker" není žádná emulace SB. Byl to ovladač dovolující aplikacím pod Windows přehrávat digitalizovaný zvuk přes PC speaker. Aplikace pod Windows přistupují ke zvukovce pomocí jednotného API a je jim jedno jestli za API je SB, GUS nebo něco dalšího.
Driver pro covoxy určitě existoval už pro Windows 3.x - mám takový pocit, že to bylo odvozené od toho audio driveru pro "PC speaker". Fungovoalo to docela dobře, jen si matně pamatuji, že to mělo nějaké trable s nastavováním.
Šlo to použít i ve Windows 95, ale tam už jsem přešel na pravý Sound Blaster, takže jsem neměl ty potřebu - čili zkušeností nemůžu sloužit.
QEMM, kromě toho, že uměl najít RAM s trochou nadsázky i na záchodový štětce (klasicky jsme kradli i B000-B7FF, protože monochromatický režim grafik nikoho nezajímal), byl z nějakého mně dodnes utajeného důvodu rychlejší než EMM386 (tedy že to tolik nebrzdilo aplikace, pardon, programy).
12. 12. 2024, 19:12 editováno autorem komentáře