Vlákno názorů k článku Konkurence Sound Blasterů: PAS, GUS a další od ondra.novacisko.cz - Opět si vzpomenu na hru Brány Skeldalu a...

  • Článek je starý, nové názory již nelze přidávat.
  • 28. 5. 2009 7:07

    ondra.novacisko.cz (neregistrovaný)

    Opět si vzpomenu na hru Brány Skeldalu a na dobu, kdy jsem do hry dodělával ovladač GUSe. Bylo to v závěru vývoje, kdy si někteří majitelé GUSe (spíš hudebníci) stěžovali, že jim nejde zvuk. Právě protože GUS nebyl kompatibilní s (nepsaným) standardem SB.

    Ovladač GUSe tedy vznikal jen aby vyhověl už existujícímu systému, tedy již napsanému mixéru se všemi jeho možnostmi. Nakonec se zjednodušil tak, že SW mixer zůstal a GUS se upravil tak, aby pouze simuloval DMA buffer. I tak to nebylo jednoduché, protože GUS neměl žádnou možnost, jak přehrávat streamované audio (výstup z mixážního modulu už byl vlastně stream). Musel jsem to řešit tak, že v jednom okamžiku byly aktivní dva kanály (a teď si nejsem jist, jestli náhodou nebyly čtyři, protože zvuk byl stereo). Zatímco první se přehrával, do druhého se načítala data DMAčkem. V okamžiku, kdy první kanál dohrál, ihned se při přerušení přenul ten druhý a ten první se začal plnit DMAčkem. Teď už si nepamatuji, jak se řešilo zpoždění v přerušení mezi dokončením jednoho kanálu a spuštěním druhého, aby to necvakalo, musel bych se podívat do zdrojáků. Ale fungovalo to pěkně.

    Co mne zaujalo, byl programátorský model. Veškeré registry se musely zapisovat dvakrát. V dokumentaci se psalo, že GUS jejich obsahy měnil stylem „načti-změn-zapiš“, přitom, operace zápisu z CPU mohla přijít kdykoliv mimo tento cyklus, nebo právě jednou mezi operacemi načti a zapiš (dodatek: byl tam přesně definovaný čas čekání mezi oběmi zápisy, myslím, že se čekalo na změnu nějakého stavového registru). Důvod byl ten, že pokud se náhodou program trefil mezi obě operace, GUS nově zapsanou hodnotu přepsal původní (upravenou podle svého programu) a změna se tedy hned napoprvé vůbec neprojevila. Tím dvojím zápisem téhož došlo ujištění, že data skutečně byla zapsaná.

    Zajímavá škola zejména v dobách, kdy viceprocesorové systémy byly doménou superpočítačových center. V dnešní době je to tak nějak normální, a modifikace proměnných, do kterých zasahuje více procesoru se řeší většinou nějakým exklusivním zámkem, případně protokolem Acquire/Release na moderních procesorech.

    PS: Ještě poznámka k SB PRO. SB Pro měl funkci „Output Filter“. Je zajímavý, že byla pouze v této verzi. Nevím jak fungovala, ale díky tomu, že v době vývoje BS jsem měl SB Pro, dostala se tato funkce i do nastavení zvukového ovladače v BS. Bohužel, žádná další karta už nikdy takovou funkci (ani podobnou) neměla.

  • 28. 5. 2009 7:09

    ondra.novacisko.cz (neregistrovaný)

    A ještě dodatek. GUSe mi na asi na měsic (po dobu vývoje ovladače) půjčil kamarád. Nikdy potom jsem už svůj výtvor neslyšel hrát, takže snad fungoval na všech GUSech. (prý to nechodí v DosBoxu, musí se to přepínat na SB).

  • 28. 5. 2009 8:52

    Mody (neregistrovaný)

    GUS MAX mam doma a protoze se stehuju a uz ho urcite nikdy nepouziju ;-( , tak se ho snazim za par kacek prodat… (viz bazos).

  • 28. 5. 2009 9:19

    vtech (neregistrovaný)

    Ze bych rozsiril svuj nekonecny srotak? :)