Hlavní navigace

Historie vývoje počítačových her (165. část – počítače řady PC v roli herní platformy)

16. 4. 2015
Doba čtení: 22 minut

Sdílet

Po dlouhé době se v seriálu o historii her budeme zabývat popisem (herního) hardware. Již jsme si popsali některé osmibitové mikropočítače, herní konzole i počítače osobní, prozatím jsme se však podrobněji nezabývali fenoménem IBM PC. I přes mnohé nedostatky totiž právě tato platforma přežila až do současnosti.

Obsah

1. Historie vývoje počítačových her (165. část – počítače řady PC v roli herní platformy)

2. Vznik kategorie osobních počítačů: IBM PC a IBM PC XT

3. Hardwarové vybavení prvních počítačů řady PC

4. Mikroprocesor a čipová sada

5. Grafický subsystém

6. Adaptér MDA

7. Grafická karta CGA

8. Zvukový subsystém

9. PC Speaker – technologie budoucnosti

10. Odkazy na Internetu

1. Historie vývoje počítačových her (165. část – počítače řady PC v roli herní platformy)

Při popisu herního hardware, ať již se jedná o domácí či o osobní mikropočítače nebo herní konzole, jsme se prozatím věnovali zejména těm elektronickým zařízením, která byla již od začátku určena pro spouštění her. To se týká prakticky všech doposud popsaných domácích mikropočítačů (zejména pak slavného Commodore C64 a osmibitových mikropočítačů Atari), tak i multimediálních počítačů osobních (Amiga, Atari ST). Zbývá nám popis platformy IBM PC, která byla v tomto seriálu zmíněna pouze v souvislosti s hrami a nikoli v souvislosti s hardwarovým vybavením. To má svůj význam, protože IBM PC ve svých počátcích – přibližně prvních pět let – byl skutečně pro spouštění počítačových her naprosto nevhodnou platformou, což se měnilo pouze postupným vývojem. Nicméně vstup firmy IBM na pole osobních mikropočítačů – resp. jakýchkoli počítačů menších než minipočítač :-) – byl skutečně velmi významnou událostí, o čemž ostatně svědčí i následující dobový komentář:

„But there is no contest. IBM's new personal computer … is far and away the media star, not because of its features, but because it exists at all. When the number eight company in the Fortune 500 enters the field, that is news … The influence of a personal computer made by a company whose name has literally come to mean „computer“ to most of the world is hard to contemplate.“

Obrázek 1: Jedna z nejznámějších her využívajících grafický režim karty CGA – Arcade Volleyball.

Vývoj celé platformy IBM PC od původního modelu vybaveného kazetovým magnetofonem(!), 64kB operační paměti (v některých případech dokonce jen 16kB RAM), interpretrem programovacího jazyka BASIC, PC speakerem a grafickou kartou CGA či pseudografickou kartou MGA až po moderní multimediální herní stanice s výkonnými procesory i grafickými akcelerátory, byl skutečně velmi dlouhý a najdeme v něm mnoho slepých cest a komerčně neúspěšných projektů. My se dnes budeme zabývat především skromnými začátky této platformy, přičemž všechny screenshoty přiložené do tohoto článku byly pořízeny z her určených pro IBM PC XT, tj. pro v pořadí druhý mikropočítač patřící do řady IBM PC (i když samozřejmě tyto hry bylo možné provozovat i na modernějších mikropočítačích, a to díky snaze o co největší zpětnou kompatibilitu se staršími modely).

Obrázek 2: Začátek setu v Arcade Volleyball.

2. Vznik kategorie osobních počítačů: IBM PC a IBM PC XT

Myšlenka na konstrukci osobního mikropočítače se sice objevila již na konci sedmdesátých let minulého století, ovšem na její rozvinutí do praktické podoby si museli uživatelé počkat až do první poloviny osmdesátých let. Prvním skutečným osobním počítačem hodným tohoto jména (termín „personal computer“ se totiž používal i předtím, ovšem v poněkud jiném kontextu) je slavné IBM PC (5150) pocházející již z roku 1981, tj. z doby, kdy se v Británii a posléze i prakticky po celé Evropě začal rozšiřovat osmibitový domácí mikropočítač ZX 80 a jeho následovník ZX 81. V podobně počítače IBM PC (5150) firma IBM představila koncept rozšiřitelného mikropočítače – tj. počítače postaveného na bázi mikroprocesoru – složeného z modulů využívajících standardizovanou sběrnici. Samotný první model IBM PC 5150 byl pro firmu IBM důležitý zejména z toho důvodu, že se jí podařilo alespoň částečně prosadit na novém trhu s počítači prodávanými i do menších firem či soukromníkům, což byl značně odlišný segment trhu, než ve kterém IBM se svými mainframy a minipočítači původně působila.

Obrázek 3: Dříve slavná a dnes již prakticky zapomenutá hra Psion Chess. Tato hra je skutečně černobílá, využívá totiž grafický režim s rozlišením 640×200 pixelů s pouhými dvěma barvami.

Tento nový trh byl skutečně zajímavý, a to i pro tak velkou korporaci typu IBM, protože v roce 1979, tj. přibližně dva roky před vznikem IBM PC, dosahovaly prodeje počítačů menším firmám a taktéž soukromníkům (rodinám) výše 150 milionů dolarů a pro další rok se počítalo s dalším nárůstem o celých 40%. Prodávaly se především osmibitové mikropočítače Atari, Commodore PET a v USA pak zejména Apple II, nejvíce model Apple IIe (tento mikropočítač se prosadil i ve firmách a to mj. i díky slavnému VisiCalcu – prvnímu tabulkovému procesoru). Z technologického i historického hlediska je mnohem důležitější až další model IBM PC 5160, který nese (zkrácený) název PC XT. Tento model začal být prodáván v roce 1983 a jedním z největších rozdílů mezi 5150 a 5160 je zvětšený počet slotů pro přídavné karty, jichž bylo k dispozici celkem osm. Jak si řekneme dále, do těchto slotů se instalovala i grafická karta, řadič disket atd., což mj. znamenalo, že původních pět slotů bylo naprosto nedostatečných, protože minimálně tři sloty byly obsazeny již při minimalistické konfiguraci: grafická karta, řadič disket, karta se sériovým a/nebo paralelním portem.

Obrázek 4: Psion Chess v režimu „3D šachovnice“.

3. Hardwarové vybavení prvních počítačů řady PC

Mikropočítač IBM PC XT byl postaven na bázi mikroprocesoru Intel 8088, což je interně šestnáctibitový CPU s externí osmibitovou sběrnicí. Důvod, proč nebyl použit výkonnější „plnohodnotný“ mikroprocesor Intel 8086, byl jednoduchý: jeho podpůrné čipy i nutná infrastruktura, především sběrnice, byly relativně drahé, a to kvůli nutnosti rozšíření všech datových cest z osmi bitů na šestnáct bitů. Namísto toho použili inženýři z firmy IBM již zmíněný čip Intel 8088 a podpůrné čipy používané již v minulosti společně s mikroprocesory Intel 8080 a Intel 8085. Historie ukázala, že se jednalo o velmi důležité rozhodnutí, které mj. rozhodlo i o osudu firmy Intel a jejího největšího konkurenta (Motorola) na poli mikroprocesorů a navíc umožnilo, aby Intel celkem bez problémů „přežil“ financování několika neúspěšných projektů mikroprocesorů s odlišnou architekturou (do této kategorie spadá především iAPX 432 a poněkud nespravedlivě i Intel i860).

Obrázek 5: Chopper Commando je hrou, pro jejíž provozování je zapotřebí grafická karta CGA a 256 kB RAM.

Vraťme se však zpět k IBM PC. Kapacita operační paměti tohoto mikropočítače mohla dosahovat 64 kB (původně dokonce jen 16 kB!) až 256 kB, ovšem v IBM PC XT již 640 kB (to musí stačit každému :-). Kupodivu relativně velké množství her první generace požadovalo skutečně jen 64 kB. V modelu IBM PC XT se již objevuje podpora pro harddisk s na tehdejší dobu obrovskou kapacitou 10MB. Podle povahy práce bylo možné do počítače IBM PC XT nainstalovat různé typy grafických karet, především kartu MDA (podpora pouze pro textové režimy), CGA (monochromatické či čtyřbarevné grafické režimy), později i EGA (pro PC AT) a konkurenční Hercules (textové režimy a monochromatický grafický režim s vysokým rozlišením). Objevily se i první modely zvukových karet, z nichž nejznámější je AdLib následovaný SoundBlasterem (viz další kapitoly).

Obrázek 6: Další snímek ze hry Chopper Commando.

4. Mikroprocesor a čipová sada

V předchozí kapitole zmíněný mikroprocesor Intel 8088 používal v×PC XT taktovací frekvenci 4,77 MHz. První generace her, která pro XT vznikla, od této frekvence odvozovala čekací smyčky, což znamenalo, že pokud se taková hra spustila bez dalších úprav na výkonnějších PC, došlo ke zrychlení celé hry, a to mnohdy až k nehratelnosti. I z tohoto důvodu byly pozdější PC vybavovány tlačítkem „Turbo“ umožňující snížení frekvence procesoru, původně z 6 MHz, 8 MHz či později 12 MHz právě na 4,77 MHz (ve skutečnosti tedy tlačítko „Turbo“ mělo přesně opačný význam, než by naznačovalo jeho jméno :-).

Obrázek 7: Arcade Volleyball v režimu hry AI proti AI.

Na tomto místě možná stojí za zmínku malý podvůdek firmy IBM z poněkud pozdější doby: její model počítače IBM PC AT původně používal krystal s frekvencí 12 MHz, který pomáhal generovat taktovací frekvenci 6 MHz. Někteří zákazníci však tento krystal vyměnili za 16 megahertzový, což znamenalo, že mikroprocesor PC AT byl taktován na 8 MHz. To však již mohlo znamenat výkonnostní konkurenci pro minipočítače IBM, takže společnost – aby tento lukrativní trh ochránila – přidala do dalšího modelu PC AT softwarovou rutinu do BIOSu, která neumožnila počítač po výměně krystalu nabootovat. Toto se změnilo až po vydání PC AT modelu 339, kdy se již 8 MHz objevuje oficiálně.

Obrázek 8: Šestnáctibitový mikroprocesor Intel 8086. Tento mikroprocesor byl v době, kdy IBM uvedla na trh IBM PC a posléze i IBM PC XT, dosti drahý a především jeho podpůrná čipová sada prodražovala i stavbu případného mikropočítače. Z tohoto důvodu je sázka firmy IBM na levnější a méně výkonnou variantu Intel 8088 pochopitelná a historie ukázala, že i fenomenálně úspěšná (se všemi pozitivy ale i negativy). Intel 8088 je tak možné považovat za nejúspěšnější čip Intelu vůbec.

Zajímavý a přitom dosti paradoxní je fakt, že procesory řady x86, tj. zpočátku Intel 8086 a Intel 8088, vznikly jako dočasné řešení, než se podaří nahradit řady 8080 a 8085 za nekompatibilní a v té době vyvíjený čip iAPX 432. Ve skutečnosti se však v případě iAPX 432 jednalo o neúspěšný projekt a „prozatímní řešení“ ve formě Intel 8086 nakonec na několik let prakticky ovládlo celý segment osobních mikropočítačů. Procesory Intel 8086 a Intel 8088, které z větší části navrhoval Stephen Morse (autor známé knížky The 8086/8088 Primer), navíc obsahují (i díky snahám o kontinuitu vývoje) šestnáctibitovou interní sběrnici a tudíž i šestnáctibitové adresové i datové registry, což poměrně zásadním způsobem ovlivnilo například způsob výpočtu efektivních adres – jedná se o (nechvalně) známý způsob adresování přes dvojici šestnáctibitových registrů segment:offset. Intel 8086/8088 sice není se staršími osmibitovými čipy 8008, 8080 a 8085 kompatibilní na binární úrovni, ale díky podobné instrukční sadě bylo možné automaticky transformovat starší programy v assembleru i pro nové typy procesorů (i když transformovaný kód nebyl optimální).

pc7701

Obrázek 9: Slavný 16/32bitový mikroprocesor Motorola M68000 byl největším konkurentem řady Intel 8086/Intel 8088 a objevil se v Atari ST, Amize, Macintoshi či pracovní stanici Sun-1.

K mikroprocesorům Intel 8088 se mohly připojovat čipy ze starších řad rodin 8080 a 8085, zejména pak:

Čip Popis Použit v PC XT?
8237 řadič DMA (přímý přístup do paměti) ano, později 2× (AT)
8251 USART (sériové rozhraní) ne
8253 programovatelný čítač ano
8255 paralelní porty původně ne, později ano (klávesnice, přepínače, řízení nechvalně známé A20 line)
8259 řadič přerušení ano, později 2× (AT)

Obrázek 10: Chopper Commando – vyhodnocení mise.

5. Grafický subsystém

Společnost IBM vytvořila a posléze na veřejnosti prezentovala počítače řady IBM PC zejména jako kancelářské pomocníky, u nichž se v jejich počátcích nepočítalo s tím, že na nich budou ve větší míře provozovány grafické aplikace (hry byly doménou osmibitových počítačů i konzolí a od roku 1984 i počítačů založených na mikroprocesorech Motorola 68000, náročné CAD systémy se naopak provozovaly na výkonných unixových stanicích). Pozdější vývoj aplikací i operačních systémů na PC však ke grafice neomylně směřoval a s tím se také vyvíjely grafické karty, které firma IBM vytvořila a podporovala. Pokud se zaměříme na grafické karty určené pro PC základní řady (tj. pomineme poloprofesionální a profesionální čipy PGA8514/A), můžeme vysledovat zajímavý tříletý cyklus nástupu nových grafických karet této firmy:

CGA + MDA 1981
EGA 1984
VGA 1987
XGA 1990

Grafickou kartou XGA končí dlouhá série grafických karet navrhovaných u IBM, v dalších letech tuto činnost přebírají jiné firmy, což je jenom dobře, IBM v tomto směru napáchala více škody než užitku ;-).

pc83

Obrázek 11: Textový režim adaptéru MDA.

6. Adaptér MDA

Jak jsme si již řekli v předchozích kapitolách, nabízela firma IBM do svých prvních počítačů PC buď grafickou kartu MDA (Monochrome Display Adapter), nebo grafickou kartu CGA (dokonce bylo možné, aby byly v jednom počítači současně nainstalovány obě zmíněné karty, protože ani adresy jejich řídicích registrů – portů, ani adresní rozsah video paměti, se nepřekrýval). Počátek výroby obou typů karet se datuje do roku 1981. Grafická karta MDA se od prakticky všech dalších grafických adaptérů vyráběných pro počítače IBM PC odlišovala především v tom, že neumožňovala vykreslování rastrové grafiky (označení termínem „grafická karta“ je tedy poněkud nepřesné), jelikož podporovala pouze textový režim 80×25 znaků, který je používán například při startu počítače či v operačním systému MS-DOS; teoreticky by však mělo být možné pracovat s graficko-textovou :-) kartou MDA i pod systémy Linux či Open/Free BSD, například pro řízení zobrazování na druhém monitoru u starších systémů vybavených sběrnicí ISA (v moderních PC se pro zobrazení na více monitorech využívá poněkud odlišná technologie). V minulosti se – zejména právě v dobách DOSu – pro tuto činnost nejčastěji používaly výprodejové karty typu Hercules, protože i ty byly navrženy tak, aby jejich řídicí porty ani adresy video paměti nekolidovaly s primární grafickou kartou.

pc83

Obrázek 12: Historický kousek – grafická karta MDA s čipem MC6845.

7. Grafická karta CGA

První dostupnou kartou s podporou zobrazování rastrové grafiky na osobních počítačích typu IBM PC byla grafická karta CGA, což je označení, které vzniklo z celého názvu Color Graphics Adapter. Tato karta, jež byla jako oficiální standard uvedena (spolu s výše popsanou kartou MDA) v roce 1981, oficiálně podporuje celkem dva grafické režimy a dva režimy textové. Kromě toho je však pro televizní výstup použit třetí grafický režim a vhodnou manipulací s řídicími registry lze vytvořit i další textové, grafické či smíšené režimy. Nesmíme zapomenout ani na režim umožňující dosáhnout většího počtu barev, ovšem pouze při připojení k televizoru či kompozitnímu monitoru a nikoli k digitálnímu monitoru.

Obrázek 13: Hra Monuments of Mars využívá grafický režim 320×200 se čtyřmi barvami.

Vzhledem k omezení tohoto grafického adaptéru, který byl způsobem velmi nízkou řádkovou frekvencí (pouhých 15,75 kHz), bylo možné zobrazit pouze 200 obrazových řádků, a to i v textových režimech. Z tohoto důvodu jsou jednotlivé masky znaků definovány v rastru pouhých 8×8 pixelů, tedy stejně jako u mnohých osmibitových počítačů (Atari, C64 atd.). První znakový režim dokázal zobrazit 40 znaků na textovém řádku, počet textových řádků byl roven 25. Ve druhém textovém režimu bylo možné zobrazit 80 znaků na řádku. Každý znak mohl mít přiřazenou jednu ze šestnácti předdefinovaných barev, pozadí znaku bylo možné zvolit také ze šestnácti barev, nebo pouze z osmi barev v případě, že se jeden bit atributu rezervoval pro blikání. Jak barva popředí, tak i barva pozadí byly zapsány do takzvaného atributu, který měl velikost jeden byte.

Obrázek 14: Další snímek ze hry Monuments of Mars.

Mnohem zajímavější a flexibilnější než textové režimy jsou režimy grafické, která grafická karta CGA také podporovala. Oficiálně jsou podle dokumentace IBM podporovány pouze dva grafické režimy. V prvním grafickém režimu bylo možné zobrazit obraz v rastru 320×200 pixelů ve čtyřech barvách, druhý režim měl rozlišení 640×200 pixelů dvoubarevně. Naprostá většina her, jejichž screenshoty jsou v dnešním článku použity, využívá barevný režim 320×200, výjimkou jsou pouze hry Psion ChessSpace Wars, které podporují černobílý režim s rozlišením 640×200 pixelů.

Obrázek 15: Další snímek ze hry Monuments of Mars.

V grafickém režimu o rozlišení 320×200 pixelů mohl každý pixel nabývat jedné ze čtyř barev, které byly vybrány z barevné palety. Tato paleta však nemohla být libovolná (z předchozího textu víme, že v textovém režimu je možné použít šestnáct barev), protože existovaly pouze dvě fixní barevné palety, přičemž při výběru barev se IBM skutečně „předvedla“, protože její nevkusná barevná schémata byla prakticky nepoužitelná :-) První paleta fixně obsahovala barvy zelenou, červenou a hnědou (red, green, brown), druhá paleta barvy azurovou, fialovou a bílou (cyan, magenta, white). Je patrné, že obě palety se od sebe odlišují pouze přidáním modré barvové složky.

Obrázek 16: Trik, kterým se ve hře King's Quest mohlo použít až šestnáct barev, ovšem za cenu vzniku nepěkných vícebarevných hran.

Čtvrtá barva byla při práci s BIOSem (přesněji řečeno při používání služeb BIOSu, například přechodu do grafického režimu) vždy nastavena na černou; ve skutečnosti se však přes řídicí registry grafické karty dala tato barva (jako jediná) nastavit na jednu ze šestnácti předdefinovaných barev. Tuto poměrně zajímavou možnost však, vzhledem k nedostupnosti technických informací, mnoho aplikací nevyužívalo. Kapacita obrazové paměti byla rovna 320×200/8×2=16000 bytům, což znamenalo, že adresovací schopnosti čipu Motorola MC6845 byly využity jen částečně – ve skutečnosti se v grafických režimech používalo pouze čtrnáct bitů adresy textových řádků (viz předchozí kapitoly s popisem tohoto čipu), přičemž výška textových řádků byla nastavena na jeden obrazový řádek. Ve druhém grafickém režimu o rozlišení 640×200 pixelů mohl každý pixel nabývat pouze jedné ze dvou barev, které jsou při inicializaci tohoto režimu pomocí BIOSu nastaveny na černou a bílou. S využitím služeb BIOSu tyto barvy nastavit nelze, ale pomocí změny konfiguračních registrů je to možné – lze tak generovat například zeleno-červený obraz či libovolnou jinou kombinaci šestnácti základních barev. Kapacita obrazové paměti byla při použití tohoto režimu rovna 640×200/8=16000 bytům, tj. stejně, jako v předchozím grafickém režimu.

Obrázek 17: Grafický režim 320×200 se čtyřmi barvami (King's Quest). Jak je z tohoto obrázku patrné, je malý počet barev kompenzován ditheringem, který ovšem při relativně malém rozlišení situaci snad ještě více zhoršuje. Paradoxní je, že většina rozšířených osmibitových počítačů dokáže – a to dokonce s poloviční velikostí obrazové paměti – tento obrázek zobrazit mnohem lépe.

Obrázek 18: Pro porovnání – tentýž obrázek, ovšem zobrazený v grafickém režimu 320×200 s barvami šestnácti na modernější grafické kartě.

Obrázek 19: Trik, kterým se ve hře King's Quest mohlo použít až šestnáct barev, ovšem pouze na televizoru či kompozitním monitoru.

Obrázek 20: Trik, kterým se ve hře King's Quest mohlo použít až šestnáct barev, ovšem pouze na televizoru či kompozitním monitoru.

8. Zvukový subsystém

Osmibitové domácí počítače i osobní šestnácti- a třicetidvoubitové počítače popisované v předchozích částech tohoto seriálu měly jednu společnou vlastnost – obsahovaly více či méně sofistikovaný čip určený pro tvorbu zvuků a hudby. Domácí osmibitové počítače Atari měly čip POKEY, počítače Commodore čip SID, v ZX Spectru 128+ a Atari ST byl zabudovaný čip AY-3–8910 (nebo též plně kompatibilní YM2149), počítače Sharp používaly integrovaný obvod SN76489 a konečně ve slavných osobních počítačích Amiga byl nainstalovaný zvukový čip Paula.

Obrázek 21: Další známá hra podporující CGA – Golden Axe.

Z pohledu tvorby zvuku byly osobní počítače IBM PC jen chudými a dosti primitivně vybavenými příbuznými, protože ve standardních počítačových sestavách byl zvuk vytvářen pouze pomocí takzvaného PC Speakeru, což byl (resp. doposud je) reproduktor připojený přes jednoduchý zesilovač. Zvuk generovaný PC Speakerem má mnoho nedostatků, zvukový signál dokonce není ani vyvedený na externí konektor, což bylo minimálně neobvyklé. Z tohoto důvodu se v pozdější době – spolu s vývojem kvalitnějších her – začaly i pro osobní počítače IBM PC objevovat první zvukové karty určené buď pro sběrnici ISA, nebo jednoduché digitálně-analogové převodníky zapojené na paralelní port (u nás byly velmi oblíbené varianty na komerční Covox).

Obrázek 22: Kdysi i MS Windows podporovaly grafickou kartu CGA.

9. PC Speaker – technologie budoucnosti

Všechny osobní počítače IBM PC původně obsahovaly jako jediný zdroj zvuku a „hudby“ PC Speaker, který je tvořen reproduktorem připojeným na jednoduchý zesilovač, jehož vstup je připojen na čítač/časovač 8253 nebo 8254 (v moderních PC již není časovač tvořen samostatným čipem, ale je součástí čipové sady základní desky, většinou southbridge). Časovač 8253 obsahuje tři samostatně nastavovatelné šestnáctibitové kanály, přičemž pro generování zvuku je použit kanál třetí, který je doposud namapován na I/O port 0×42. Třetí kanál časovače 8253 většinou pracuje v režimu generátoru obdélníkových pulsů se střídou 1:1. Na vstup časovače je připojen hodinový signál s frekvencí 1193180 Hz, což je třetina nominální frekvence IBM XT, tj. 4,77 MHz (opět viz předchozí kapitoly). Tento signál je dělen nastavenou šestnáctibitovou hodnotou, tj. minimální frekvence zvuku vytvářená čítačem/časovačem je rovna 18,2 Hz (1193180/65536) a maximální frekvence dosahuje úrovně ultrazvuku (otázkou samozřejmě je, jaká je mezní frekvence samotného reproduktoru).

Obrázek 23: Hra Spacewar (resp. její úprava pro IBM PC) běžící v grafickém režimu 640×200 pixelů karty CGA.

S využitím čítače/časovače 8253 je možné na PC Speaker posílat pravidelný obdélníkový signál, což však pochopitelně postačuje pouze pro přehrávání velmi jednoduchých jednohlasých melodií. V případě požadavku na přehrání samplované hudby či složitějších zvuků (včetně napodobení hudebních nástrojů či mluveného slova) se proto na PC Speakeru využívala pulsní šířková modulace, neboli PWM. Na I/O portu 0×61 se nachází řídicí registr druhé osmibitové brány (B) obvodu 8255. Nultým bitem lze nastavit stav řídicího signálu (GATE) časovače 8253. Pokud je tento bit nulový, čítač/časovač je pozastaven a tím pádem na reproduktor neposílá žádný signál. První bit I/O portu 0×61 v tomto případě přímo řídí binární výstup, na nějž je připojen reproduktor.

Obrázek 24: Kdo hrál slavnou hru Prince of Persia na počítači s kartou CGA?

To znamená, že programovou změnou prvního bitu portu 0×61 lze generovat dvoustavový signál posílaný na reproduktor, nezávisle na čítači. Přehrávací rutina je většinou napojena na přerušení od časovače (může být použit i jeho třetí kanál, neboť ten je při této konfiguraci odpojen od reproduktoru), jehož frekvence musí být několikanásobně větší, než původní vzorkovací frekvence přehrávaných samplů. Při dobrém časování lze na PC Speakeru pomocí PWM přehrávat cca pěti či šestibitové samply, což odpovídá dynamickému rozsahu 30 resp. 36 dB (připomeňme, že CD-Audio má dynamický rozsah 96 dB).

Obrázek 25: Pulsní šířková modulace sinusové vlny (červená barva), která je porovnávána s referenčním trojúhelníkovým signálem (modrá barva). Výsledný binární signál je zobrazen žlutou barvou.

Na obrázcích 25 až 29 je naznačen jeden ze způsobů převodu analogového signálu (popř. i signálu navzorkovaného) na signál binární (dvoustavový) s využitím pulsní šířkové modulace. Princip je jednoduchý – původní analogový signál je kontinuálně porovnáván s trojúhelníkovým signálem o vyšší frekvenci, jehož amplituda je shodná s amplitudou (resp. maximální absolutní hodnotou) původního analogového signálu. V případě, že je aktuální hodnota původního modulovaného signálu vyšší, než je hodnota trojúhelníkového referenčního signálu, je na výstupu vysoká úroveň (většinou kladné napětí), v opačném případě nízká úroveň (záporné napětí o stejné absolutní hodnotě). Pokud je pulsní šířková modulace implementována v elektronickém obvodu, jsou oba signály porovnávány pomocí operačního zesilovače, na nějž je zapojený Schmittův klopný obvod, který zajistí kolmost hran výsledného binárního signálu. Programová implementace je založena na výpočtu referenčního signálu v diskrétních krocích a jeho jednoduchém porovnání s původními vzorky.

Obrázek 26: Pulsní šířková modulace – frekvence referenčního trojúhelníkového signálu je dvojnásobná oproti signálu zobrazeném na čtvrtém obrázku, výstup by však stále nebyl (při přehrání na reproduktoru) dostatečně kvalitní.

Aby byl výsledek PWM kvalitní, je nutné, aby frekvence trojúhelníkového referenčního signálu byla mnohonásobně vyšší, než frekvence signálu vstupního. V případě, že se pomocí PWM převádí navzorkovaný (digitální) zvuk s určitou vzorkovací frekvencí, je vhodné, aby frekvence referenčního signálu byla minimálně 10× vyšší než frekvence vzorkovací, což ovšem klade vyšší nároky na přesnost časování při přehrávání zvuku (tato situace zhruba odpovídá šestému obrázku). Pokud byl například původní zvuk navzorkován s frekvencí 22 kHz, což odpovídá spíše menší kvalitě (ztrácí se vyšší slyšitelné frekvence), tak by se měla PWM provádět s frekvencí 220 kHz, tj. při programové implementaci by se měla přerušovací rutina volat 220000× za sekundu. Když uvážíme, že tato rutina musí před vlastní PWM provést i mixáž všech zvukových kanálů, zjistíme, že na původních IBM PC (a dokonce i modelech XT a AT) bylo přehrávání tak náročné, že ho nebylo možné použít přímo ve hrách (tam nejvíce času zabralo přepočítání obrázků, protože grafické karty CGA/EGA/Hercules prakticky žádnou podporu programátorům nenabízely), ale pouze na úvodních obrazovkách či specializovaných přehrávačích (například Visual Player či Mod Player – ty pracovaly i na šestnáctibitových mikroprocesorech).

Obrázek 27: Pulsní šířková modulace – frekvence referenčního trojúhelníkového signálu je dvojnásobná oproti signálu zobrazeném na pátém obrázku.

V případě, že má být signál modulovaný pomocí PWM přehráván pomocí reproduktoru, je nutné dodržet několik podmínek, které však u původního PC Speakeru nebyly všechny splněny. Vhodné je, aby vyšší úroveň byla reprezentována kladným napětím určité hodnoty a nižší úroveň záporným napětím o stejné absolutní hodnotě. Tím je zajištěno optimální využití výkonu reproduktoru, protože se jeho membrána může z klidové polohy vychylovat na obě strany. U původního PC-Speakeru sice byla vyšší úroveň reprezentována kladným napětím, ale nižší úroveň byla rovna 0V, tj. membrána reproduktoru se vychylovala pouze jedním směrem. Tím se vlastně výkon reproduktoru snížil, což sice nevadí při běžném „pípání“ (spíše naopak), ale samplovaná hudba byla z tohoto důvodu přehrávána poměrně potichu. Dále je vhodné, aby byl před reproduktorem zapojen integrační RC článek, který dvoustavový signál zrekonstruuje do původní analogové podoby (samozřejmě s větší či menší chybou, v závislosti na provedení PWM). Tato podmínka taktéž nebyla u původního PC Speakeru splněna, což nemuselo být kritické, protože již samotný reproduktor (obsahující cívku) určitou integraci vstupního signálu prováděl.

Obrázek 28: Na tomto grafu je frekvence referenční trojúhelníkové vlny cca 10× vyšší, než frekvence převáděného signálu, což je již pro mnoho aplikací dostatečné.

CS24_early

Problém však nastal u pozdějších osobních počítačů, zejména laptopů, ve kterých se mnohdy původní reproduktory (s cívkou) začaly nahrazovat piezoelektrickými rezonátory, známými například z digitálních hodinek. Tam již k integraci dvoustavového signálu nedocházelo, takže se v přehrávané hudbě začalo objevovat nežádoucí pískání, především tehdy, pokud byla pulsní šířková modulace prováděna s nižší frekvencí. Zajímavé je, že všechny zmíněné nevýhody PC Speakeru bylo možné obejít využitím sériového portu RS-232C, na nějž bylo možné připojit napěťový dělič s RC článkem a výstup vést buď do zesilovače nebo přímo reproduktoru – toto velmi jednoduché řešení se však, pokud vím, nikdy neujalo. Pro představu, jakou hudbu bylo možné s PC Speakerem vytvořit, si poslechněte následující dva odkazy. Pod prvním odkazem najdete původní skladbu zdigitalizovanou moderním A/D převodníkem, pod odkazem druhým je tatáž skladba přehrávaná PC Speakerem v DOSovém demu nazvaném Magic Mushroom. Podotýkám, že na většině tehdejších PCček byla skladba přehrávaná v horší kvalitě, zejména byla mnohem tišší, což si majitelé starých PC mohou odzkoušet – http://www.crossfire-designs.de/download/articles/sou­ndcards//mushroom.rar (pozor – v DOSboxu není výsledek autentický).

Obrázek 29: Další zdvojnásobení frekvence referenční trojúhelníkové vlny. Výsledný graf je již částečně zkreslen vlivem převodu původních analogových průběhů do rastrového obrázku (již se přibližujeme k hranici, při níž vzniká obrazový alias).

10. Odkazy na Internetu

  1. The 8086/8088 Primer
    http://stevemorse.org/8086/index.html
  2. Birth of a Standard: The Intel 8086 Microprocessor
    http://www.pcworld.com/ar­ticle/146957/birth_of_a_stan­dard_the_intel_8086_micro­processor.html
  3. A Brief History of Computing
    http://trillian.randomstuf­f.org.uk/~stephen/history/8086­.html
  4. Intel 8086
    http://en.wikipedia.org/wi­ki/Intel_8086
  5. Support/peripheral/other chips – 6800 family
    http://www.cpu-world.com/Support/6800.html
  6. Motorola 6845
    http://en.wikipedia.org/wi­ki/Motorola_6845
  7. The 6845 Cathode Ray Tube Controller (CRTC)
    http://www.tinyvga.com/6845
  8. IBM Monochrome Display Adapter
    http://en.wikipedia.org/wi­ki/Monochrome_Display_Adap­ter
  9. Color Graphics Adapter
    http://en.wikipedia.org/wi­ki/Color_Graphics_Adapter
  10. Magic Mushroom (demo pro PC s DOSem)
    http://www.crossfire-designs.de/download/articles/sou­ndcards//mushroom.rar
  11. Píseň Magic Mushroom – originál
    http://www.crossfire-designs.de/download/articles/sou­ndcards/speaker_mushroom_con­verted.mp3
  12. Píseň Magic Mushroom – hráno na PC Speakeru
    http://www.crossfire-designs.de/download/articles/sou­ndcards/speaker_mushroom_spe­aker.mp3
  13. Pulse Width Modulation (PWM) Simulation Example
    http://decibel.ni.com/content/docs/DOC-4599
  14. Resistor/Pulse Width Modulation DAC
    http://www.k9spud.com/trax­mod/pwmdac.php
  15. Class D Amplifier
    http://en.wikipedia.org/wi­ki/Electronic_amplifier#Clas­s_D
  16. Wikipedia EN: PC speaker
    http://en.wikipedia.org/wi­ki/PC_speaker
  17. Wikipedia EN: Intel 8253
    http://en.wikipedia.org/wi­ki/Intel_8253
  18. Wikipedia EN: Intel 8255
    http://en.wikipedia.org/wi­ki/Intel_8255
  19. Memory mapped I/O
    http://www.sharpmz.org/mz-700/memio.htm
  20. Using an 8255 PPI chip
    http://drew.hickmans.net/8255.htm
  21. Programming the PC Speaker
    http://www.gamedev.net/re­ference/articles/article442­.asp

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.