Sběrnice SIO pro počítače Atari a problematika externích paměťových médií

23. 7. 2026
Doba čtení: 69 minut

Sdílet

Atari XC12
Autor: Multicherry, podle licence: CC BY-SA 4.0
Na sběrnici SIO se připojovala i externí paměťová média. Většina z nich představuje dosti fascinující propojení analogové a digitální techniky. Dnes se zaměříme na magnetická média, především na kazetové magnetofony.

Ve druhém článku o sériové sběrnici SIO osmibitových domácích mikropočítačů Atari se budeme věnovat zařízením pro záznam dat, která se k této sběrnici připojovala. Mnohé z těchto zařízení zajímavým způsobem kombinují analogovou a digitální techniku, navíc navrženou s ohledem na co nejnižší výrobní cenu (což si pochopitelně vyžádalo řadu kompromisů). Asi nejlepším příkladem je datový záznamník XC12 určený pro připojení k osmibitovým počítačům Atari.

Co se dozvíte v článku
  1. Externí paměťová média používaná v dobách osmibitových domácích mikropočítačů
  2. Kotoučové a kazetové datové záznamníky (datarekordéry)
  3. Specializované kazetové záznamníky
  4. Na pomezí mezi kazetovým záznamníkem a disketou: ZX Microdrive
  5. Atari Program Recorder
  6. Atarácký kazetový záznamník XC12
  7. Propojení XC12 s počítačem přes SIO
  8. Formát záznamu dat
  9. Načtení spustitelného programu z kazety (boot)
  10. Schéma zapojení XC12
  11. Obvody realizující zápis dat na kazetu
  12. Obvody realizující čtení dat z kazety
  13. Simulace obvodů pro digitalizaci záznamu přečteného z kazety
  14. Průběžný přepočet záznamové rychlosti
  15. Přednosti a nedostatky standardního záznamu dat na kazetu
  16. Systémy pro zvýšení rychlosti nahrávání/načítání
  17. Turbo 2000 a jeho varianty
  18. Repositář s demonstračními příklady
  19. Odkazy na Internetu

Původně tento magnetofon umožňoval záznam a čtení dat rychlostí 600 Bd (resp. ještě nižší, spíše 550 Bd), navíc operační systém podporoval pouze přenosy dat po krátkých blocích, mezi nimiž byly mezery. Toto omezení některé programy a hry obcházely, protože měly krátký zavaděč nahraný standardním způsobem a poté následoval jediný blok dat bez mezer – takže se o případné chybě uživatel dozvěděl až na konci, po dlouhém čekání (neboli prvek očekávání byl nahrazen prvkem zklamání).

Relativně jednoduchou úpravou datarekordéru však bylo možné zvýšit záznamovou rychlost na hodnoty od 2000 Bd (české Turbo 2000) až po cca 6000 Bd (taktéž české Super Turbo), ovšem pro běžné kazety se maximální hodnota pro spolehlivý záznam dat pohybovala na hranici cca 3500 Bd. Další, méně častou úpravou, představovalo předělání datového záznamníku pro možnost záznamu ve čtyřech stopách (využití levého a pravého audio kanálu). Originální XC12 totiž data zaznamenával jen na jeden audio kanál.

Datarekordér XC12 určený pro připojení k osmibitovým počítačům Atari. Původně tento magnetofon umožňoval záznam a čtení dat rychlostí 600 Bd, navíc operační systém podporoval pouze přenosy dat po krátkých blocích, mezi nimiž byly mezery (toto omezení některé programy a hry obcházely, protože měly krátký zavaděč nahraný standardním způsobem a poté následoval jediný blok dat bez mezer). Jednoduchou úpravou datarekordéru však bylo možné zvýšit záznamovou rychlost na hodnoty od 2000 Bd (české Turbo 2000) až po cca 6000 Bd (taktéž české Super Turbo), ovšem pro běžné kazety se maximální hodnota pro spolehlivý záznam dat pohybovala na hranici cca 3500 Bd. Další, méně častou úpravou, představovalo předělání datarekordéru pro možnost záznamu ve čtyřech stopách.

Obrázek 1: Datový záznamník XC12, kterému se budeme věnovat ve druhé polovině dnešního článku.

Autor: Unknown, podle licence: Rights Managed

Externí paměťová média používaná v dobách osmibitových domácích mikropočítačů

Uživatelé osmibitových domácích mikropočítačů Atari měli k dispozici, ostatně podobně jako jejich kolegové používající jiné značky dobových počítačů, více možností pro záznam dat. Jednotlivé možnosti resp. technologie se od sebe lišily především cenou, rychlostí čtení i zápisu dat a v neposlední řadě také spolehlivostí a trvanlivostí záznamu. Pravděpodobně nejrozšířenější způsob trvalého uložení dat představovalo, minimálně v našich podmínkách, použití magnetických pásek, ať již se jednalo o pásky navinuté na kotoučích nebo o pásky uložené v kompaktních kazetách. Důvodem značné oblíbenosti a rozšířenosti těchto paměťových médií byla především jejich velmi výhodná cena (samozřejmě po přepočtu na kB či MB); ostatně magnetické pásky jsou z tohoto důvodu stále upotřebitelné například pro provádění záloh dat o velkém objemu, i když se v tomto případě již nepoužívají původní kotouče s páskou či kompaktní kazety, ale specializovaná média.

Magnetické pásky se používaly již u mainframů, například na
tomto sálovém počítači IBM System/360 Model 50. V popředí můžeme vidět
jednotlivé kotouče s magnetickými pásky, v pozadí pak vlastní
jednotku provádějící čtení i záznamy dat.

Obrázek 2: Magnetická média, zde konkrétně magnetické pásky se používaly již v padesátých letech minulého století u mainframů, například na tomto sálovém počítači IBM System/360 Model 50. V popředí můžeme vidět jednotlivé kotouče s magnetickými pásky, v pozadí pak vlastní paměťovou jednotku provádějící čtení i záznamy dat.

Autor: Unknown, podle licence: Rights Managed

Atari ovšem nabízelo ještě jednu technologii. Nejdůležitější resp. nejčastěji spouštěné aplikace bývaly dodávány i formou externích paměťových modulů obsahujících čipy s paměťmi ROM či EPROM – těmto modulům se říkalo cartridge. Ovšem to nebylo ani levné řešení, ani řešení vhodné pro ukládání nových dat. Na přelomu osmdesátých a devadesátých let minulého století se taktéž začaly i k osmibitovým domácím mikropočítačům ve větší míře připojovat disketové jednotky. V tuzemsku se používaly zejména diskety velikosti 5 1/4 a 3 1/2 palce, což znamená, že se nám ve větší míře vyhnuly pokusy některých firem o zavedení vlastních (proprietárních) typů disket nestandardní velikosti a/nebo formátu. Tento stav byl způsoben také tím, že se disketové jednotky začaly (například v tuzemsku) šířit vlastně až v době, kdy bylo o velikostech disket prakticky rozhodnuto a navíc bylo možné při použití disketových jednotek pro standardní velikosti disket nakupovat zahraniční součástky, konstrukční díly či čipy.

Velké popularitě se v zahraničí, především v USA, těšily disketové jednotky navržené Stevem Wozniakem (Wozem) pro osmibitové počítače Apple II. Hlavní příčinou oblíbenosti těchto disketových mechanik byla jejich příznivá cena, která vycházela z Wozova minimalistického návrhu jejich konstrukce i elektroniky. O kvalitě těchto mechanik svědčí i to, že některé z nich dodnes, tj. po dobu cca 30 let, spolehlivě pracují.

Obrázek 3: Velké popularitě se v zahraničí, především v USA, těšily disketové jednotky navržené Stevem Wozniakem (Wozem) pro osmibitové počítače Apple II. Hlavní příčinou oblíbenosti těchto disketových mechanik byla jejich příznivá cena, která vycházela z Wozova minimalistického návrhu jejich konstrukce i elektroniky. O kvalitě těchto mechanik svědčí i to, že některé z nich dodnes, tj. po dobu cca 35 až 40 let, spolehlivě pracují.

Autor: Unknown, podle licence: Rights Managed

Tuzemská disketová jednotka nazvaná Didaktik 40 (či též D-40), která byla určena pro diskety o standardní velikosti 5 1/4 palce.

Obrázek 4: Tuzemská disketová jednotka nazvaná Didaktik 40 (či též D-40), která byla určena pro diskety o standardní velikosti 5 1/4 palce (tedy stejné rozměry, jako u Apple II, i když formát zápisu byl odlišný).

Autor: Unknown, podle licence: Rights Managed

Kotoučové a kazetové datové záznamníky (datarekordéry)

Pro úschovu dat používali majitelé osmibitových počítačů zpočátku především různé kotoučové i kazetové datové záznamníky datarekordéry, tj. (většinou) periferní zařízení, u nichž se binární informace ukládaly na magnetickou pásku. Osmibitové tuzemské počítače byly vesměs vybaveny rozhraním pro připojení magnetofonů, takže si majitelé československých „osmibitů“ často namísto speciálních (a mnohdy těžko dostupných) zařízení, například dále popsaných jednotek SP210, SP210T, KZD-1 či ataráckého XC12, upravovali pro úschovu dat i běžné magnetofony určené původně pro záznam a přehrávání audia. Jednalo se buď o kotoučové magnetofony (které sice vedle malých osmibitových počítačů vypadaly poněkud neohrabaně, ale jejich kvalita byla mnohdy vyšší, než u běžných magnetofonů s kompaktními kazetami) nebo o magnetofony využívající standardní kompaktní kazety.

Klasická kompaktní kazeta, která byla využívána jak pro záznam audia (analogových signálů), tak i binárních dat. Tyto kazety se používaly v období mezi roky 1970 až 1990; po tomto datu již jejich rozšíření postupně sláblo na úkor kompaktních disků (oblast audia) či disketových jednotek a pevných disků (oblast ukládání dat).

Obrázek 5: Klasická kompaktní kazeta, která byla využívána jak pro záznam audia (analogových signálů), tak i binárních dat. Tyto kazety se používaly v období zhruba mezi roky 1970 až 1990; po tomto datu již jejich rozšíření postupně sláblo na úkor kompaktních disků (oblast audia) či disketových jednotek a pevných disků (oblast ukládání dat). Dnes se opět rozšiřují v rámci retro hnutí.

Autor: Unknown, podle licence: Rights Managed

Jedna kompaktní kazeta s délkou audio záznamu 90 minut měla při nahrávací rychlosti 2000 Bd (k rychlostem záznamu se ještě vrátíme) kapacitu přibližně: 90×60×2000/8/1024=1318 kB, což nebyla zanedbatelná hodnota (odpovídala přibližně čtyřem disketám s kapacitou 360 kB). Ovšem i v ČSSR se vyráběla specializovaná paměťová zařízení používající jako paměťové médium kompaktní kazetu, která bylo možné připojit k osmibitovým počítačům. S jedním z těchto zařízení jsme si již poměrně dávno na Rootu setkali – jednalo se o jednotku SP210T, která vycházela z kazetopáskové jednotky SP210 (největším rozdílem mezi oběma typy byla instalace jednojehličkové tiskárny BT-100 v jednotce SP210T). V obou případech se jednalo o jednotku umístěnou v kvalitní kovové skříni (žádný levný plast, jenž se ve velké míře používal u poslední generace kazetových magnetofonů), která měla i velmi dobře provedenou vlastní mechaniku pohánění kazety i vedení magnetické pásky přes čtecí a zápisovou hlavu, což samozřejmě vedlo k větší spolehlivosti záznamu dat.

Kotoučový magnetofon Tesla B90 bylo poměrně snadné použít pro záznam binárních dat.

Obrázek 6: Kotoučový magnetofon Tesla B90 bylo poměrně snadné použít pro záznam binárních dat.

Autor: Unknown, podle licence: Rights Managed

Elektronická část těchto jednotek obsahovala deset integrovaných obvodů, 29 tranzistorů a 40 diod. Při připojování k počítači bylo možné použít jakoukoli sběrnici či port s TTL signály, což umožnilo použití této jednotky s prakticky všemi tuzemskými i zahraničními osmibitovými počítači (teoreticky i k Atari se SIO, ovšem tuto kombinaci jsem nikdy naživo neviděl). Dalším oblíbeným a poměrně často používaným datarekordérem vyráběným v ČSSR (konkrétně se jednalo o výrobce ZPA Košíře) byla kazetopásková jednotka nazvaná jednoduše KZD 1. I tato jednotka používala pro záznam dat běžné kompaktní kazety, které však bylo nutné před jejich použitím naformátovat, aby se na pásku zaznamenal nosný signál. Při nahrávání aplikace či dat stačilo zadat číslo bloku (ne tedy jméno aplikace či název souboru), po skončení nahrávání se na monitoru zobrazilo číslo (index) následujícího volného bloku.

Kombinované zařízení Tesla SP210T.

Obrázek 7: Kombinované zařízení Tesla SP210T.

Autor: Unknown, podle licence: Rights Managed

Při čtení či zápisu dat se magnetická páska pohybovala rychlostí cca 48,0 mm za sekundu, při vyhledávání bloků se rychlost zvyšovala na 96,0 mm za sekundu (standardní rychlost pohybu audio pásky při přehrávání/nahrávání je 47,6 mm za sekundu). Tento datarekordér se používal například u osmibitových počítačů SAPI-1 či PMD-85, ovšem bylo celkem snadné ho upravit i pro použití na IQ-151 nebo některých zahraničních osmibitových počítačích. Dalším tuzemským datarekordérem byl KP 311, který vznikl v Tesle Přelouč přestavěním walkmanu napájeného buď šestivoltovým zdrojem nebo čtveřicí tužkových baterií. Tento datarekordér taktéž využíval běžné kompaktní kazety a bylo ho možné přepínat na přehrávání audia (pracoval jako běžný walkman) či na datový provoz.

Kazetopásková jednotka KZD 1.

Obrázek 8: Kazetopásková jednotka KZD 1.

Autor: Unknown, podle licence: Rights Managed

Specializované kazetové záznamníky

Magnetické pásky se používaly pro záznam dat prakticky u všem osmibitových domácích mikropočítačů. Některé známé zahraniční mikropočítače, především značek Atari, Commodore, Sharp či Amstrad-Schneider, byly dodávány spolu se specializovanými kazetovými datarekordéry, které byly k počítači připojovány různým, mnohdy proprietárním způsobem. V některých případech se jednalo o jednoduchá a tedy i poměrně levná externí zařízení připomínající výše zmíněný československý výrobek KZD-1. Nejznámějšími zástupci této kategorie jsou bezesporu počítače Atari a Commodore, jejichž datové záznamníky jsou si v mnoha ohledech konstrukčně podobné. Druhou možností bylo zabudování magnetofonu přímo do skříně počítače. Tato zajímavá konstrukce byla využita například u některých modelů osmibitových počítačů Sharp či počítačů Amstrad-Schneider.

Magnetofon používaný u osmibitových počítačů Commodore.

Obrázek 9: Magnetofon používaný u osmibitových počítačů Commodore má mnoho rysů společných s podobnými zařízeními společnosti Atari.

Autor: Unknown, podle licence: Rights Managed

Nezávisle na způsobu konstrukce byla tato periferní zařízení uzpůsobena především pro záznam programů a dat, nikoli pro záznam audio signálu, proto by se pro jejich pojmenování správně ani nemělo používat slovo „magnetofon“, nicméně se jedná o vžité označení, takže se s ním na několika místech potkáte i v tomto článku (korektnější název je datarekordér nebo kazetopásková jednotka). Firemní datarekordéry dodávané přímo ke konkrétním typům počítačů se od svých audio protějšků odlišovaly především v tom, že měly jinak vyřešený způsob propojení s počítačem. Namísto pětikolíkových konektorů DIN či jacků (audio vstup-výstup) se zde můžeme setkat především s proprietárními konektory. Například v případě firmy Atari se jedná o nám již dobře známý konektor sériové sběrnice SIO.

Dále prakticky všechny magnetofony specializované pro záznam dat obsahovaly počitadlo otáček, které lze sice spatřit i u některých magnetofonů určených původně pro záznam zvuku, ovšem v případě ukládání dat je přesná znalost jejich umístění na kazetě velmi důležitá, zejména u těch počítačů, jejichž operační systém nedokázal vyhledávat data na základě zadaného názvu souboru (což je i případ původního formátu záznamů počítačů Atari; tento problém byl opraven v systému Turbo 2000).

Zabudovaný datarekordér v osmibitovém počítači Sharp.

Obrázek 10: Zabudovaný datarekordér v osmibitovém počítači Sharp.

Autor: Unknown, podle licence: Rights Managed

Taktéž elektronika magnetofonů určených pro záznam dat (datarekordérů) byla poněkud odlišná od magnetofonů zvukových – v některých případech například počítač sám řídil zastavení kazety po nahrání požadovaných dat (což ovšem nebyla tak skvělá myšlenka, jak by se na první pohled mohlo zdát, neboť u některých měkčích pásek došlo při jejich zastavení ke vzniku promáčkliny v místě, kde páska procházela mezi poháněcím trnem a přítlačným kolečkem), nebylo nutné, aby datové magnetofony používaly výkonový výstupní zesilovač s impedančním přizpůsobením pro reproduktory, vstupní zesilovač mikrofonu atd. Ostatně způsobu zapojení datového záznamníku XC12 se budeme věnovat ve druhé části dnešního článku.

I některé typy počítačů Amstrad-Schneider, například zde vyfotografovaný CPC-464, používaly datarekordér zabudovaný přímo do jejich skříně.

Obrázek 11: I některé typy počítačů Amstrad-Schneider, například zde vyfotografovaný CPC-464, používaly datarekordér zabudovaný přímo do jejich skříně.

Autor: Unknown, podle licence: Rights Managed

Na pomezí mezi kazetovým záznamníkem a disketou: ZX Microdrive

Zajímavý koncept při vývoji magnetických páskových pamětí použila slavná firma Sinclair Research (jejíž inženýři se prakticky u všech výrobků zaměřovali na hledání alternativních cest) při vývoji paměti označované názvem Sinclair ZX Microdrive určené pro neméně slavný počítač ZX Spectrum a některé jeho následovníky a klony (vhodnější je v tomto případě použít celý název této magnetické paměti, protože samotným jménem Microdrive se označovaly i miniaturní pevné disky od firmy IBM).

V paměťových jednotkách Sinclair ZX Microdrive se používala výměnná paměťová média obsahující magnetickou pásku o šířce 1,9 mm a délce cca šesti metrů. Celková délka pásky se však mohla do jisté míry měnit – viz další text. Páska byla navinuta na jediné cívce, přičemž její konce byly spojeny tak, aby vytvořily „nekonečný“ pás – magnetická páska se v tomto případě odvíjela ze svého posledního (nejmenšího) závitu a naopak se navíjela na první (největší) závit – podobný princip, i když mechanicky (mnohem) lépe provedený, je využitý i v některých filmových promítačkách.

Externí paměťové zařízení Sinclair ZX Microdrive.

Obrázek 12: Externí paměťové zařízení Sinclair ZX Microdrive.

Autor: Unknown, podle licence: Rights Managed

Tímto uspořádáním se do značné míry zjednodušila mechanika paměťového zařízení, která tak mohla obsahovat pouze jednoduchý mechanismus s elektrickým motorkem a převodem, který pásku převíjel konstantní rychlostí jedním směrem (odpadlo složité převíjecí zařízení známé z datových i audio magnetofonů, ve kterých bylo nutné zajistit jak obousměrné převíjení, tak i oddálení čtecí/zápisové hlavy při rychlém převíjení). Paměťové médium pro ZX Microdrive je zobrazeno na dalším obrázku zhruba ve své skutečné velikosti. Páska se při čtení či zápisu posouvala konstantní rychlostí 76 cm za sekundu, což znamená, že přetočení celé smyčky trvalo cca 8 sekund. Celková kapacita činila cca 85 kB při plném využití (žádné vadné bloky), ovšem několikerým formátováním se mohla délka pásky poněkud prodloužit (fyzicky) a tím se i zvýšila kapacita jednoho média až na 100 kB, samozřejmě na úkor spolehlivosti, která i tak nebyla příliš velká (v porovnání s kompaktními kazetami či disketami).

Paměťové médium Sinclair ZX Microdrive.

Obrázek 13: Paměťové médium Sinclair ZX Microdrive.

Autor: Unknown, podle licence: Rights Managed

Paměťová jednotka Sinclair ZX Microdrive byla poměrně často porovnávána s disketami a disketovými jednotkami. Určité podobnosti s disketami skutečně můžeme najít, i když se jednalo o mechaniku používající magnetickou pásku. Sinclair ZX Microdrive tak představoval jakýsi přechod mezi magnetickými páskami a disketami – z magnetických pásek zde byla využita celková jednoduchost mechaniky s kombinovanou čtecí/zápisovou hlavou a jedním elektrickým motorkem (u disketové mechaniky jsou zapotřebí dva pohonné motorky, navíc přesný šnek pro posun čtecí/zápisové hlavy, optické čidlo pro nalezení nultého sektoru a nulté stopy atd.), ale na rozdíl od magnetických pásek se při použití ZX Microdrive nemuselo provádět ruční přetáčení pásky a hledání začátku záznamu – tato operace byla do značné míry zautomatizovaná (přesněji řečeno, řídil ji program, nikoli elektronika ZX Microdrive), podobně jako u disketových mechanik.

Zařízení ZX Microdrive bylo možno k počítači zapojit více, jejich maximální počet je osm. Na této fotografii jsou zobrazeny dvě jednotky ZX Microdrive.

Obrázek 14: Zařízení ZX Microdrive bylo možno k počítači zapojit více, jejich maximální počet je osm. Na této fotografii jsou zobrazeny dvě jednotky ZX Microdrive.

Autor: Unknown, podle licence: Rights Managed

Při použití médií ZX Microdrive taktéž odpadly, na rozdíl od kompaktních kazet i kotoučových datarekordérů, problémy s manuálním přetáčením a hledáním začátku záznamu. Podobný princip založený na „nekonečné“ pásce, většinou ještě na jednom místě přetočené tak, aby tvořila Möbiův pruh s jednou stranou (kazeta se tudíž nemusela otáčet), byl použit i u některých dalších paměťových médií a mechanik, známých taktéž pod souhrnným označením stringy floppy. Z oblasti audiovizuální techniky jsou známá osmistopá média, taktéž s nekonečnou přetočenou páskou, která nevyžadovala ani otáčení média (jako tomu bylo u prvních disketových mechanik) ani dvojici čtecích/zápisových hlav – viz též další obrázek.

Osmistopá páska tvořící Möbiův pruh používaná v audiovizuální technice.

Obrázek 15: Osmistopá páska tvořící Möbiův pruh používaná v audiovizuální technice.

Autor: Unknown, podle licence: Rights Managed

Atari Program Recorder

Vraťme se nyní do světa osmibitových domácích mikropočítačů Atari. Jak jsme si již řekli v předchozím textu, existovaly pro tyto počítače tři základní externí paměťová média: cartridge, disketové jednotky a kazetopáskové jednotky. Nejrychlejší jsou cartridge, ovšem cena za uloženou jednotku informace je zde nejvyšší a současně není možné (přímo přes počítač a bez dalších pomocných obvodů) provádět zápis dat. Proto se cartridge používaly jen pro nejčastěji načítané programy typu textový editor (AtariWriter, SpeedScript), databáze (Mikronotes), assembler (MAC/65) či v tuzemském prostředí pak ovladač Turba 2000 (viz další text).

Záznam na diskety je levnější, ovšem disketová jednotka je pomalejší než cartridge (k čemuž se ještě vrátíme). Největší překážkou nebyla cena disket, ale cena samotné disketové jednotky, která byla dražší než samotný počítač Atari (a dokonce dražší než kombinace Atari+kazetopásková jednotka). Disketové jednotky pro počítače Atari totiž musely být dostatečně „chytré“ na to, aby je bylo možné ovládat pomocí příkazů posílaných přes sběrnici SIO. V jejich ceně tedy byla započítána i relativně drahá elektronika.

Zbývá nám tedy záznam dat na běžnou (audio) kazetu. K tomuto účelu byly na počítačích Atari používány specializované datové záznamníky připojované k počítači přes sběrnici SIO. Na rozdíl od modemů, tiskáren a disketových jednotek však byly datové záznamníky „hloupými“ zařízeními, která nedokázala rozpoznat posílané příkazy. Kvůli kazetovému magnetofonu obsahuje SIO vodič určený pro ovládání motoru a taktéž vodič pro vstup audio signálu (není použit pro data).

Společnost Atari vyráběla popř. licencovala výrobu několika typů těchto záznamníků, které byly sice konstrukčně odlišné, ale ovládaly se stejným způsobem. První model nesl označení 410 a vyráběn byl od roku 1979. Druhý, menší model byl označován 1010. Barevně a designem model 410 odpovídal původním počítačům Atari 400 a Atari 800 (bez XL/XL), kdežto model 1010 připomíná řadu XL (1200XL, 600XL, 800XL). Následovaly datové záznamníky XC11 a zejména pro „chudší trhy“ určený záznamník XC12. Barevně a designem jsou určené pro řadu Atari XE, i když se pochopitelně bez problémů mohly používat (a taktéž používaly) i společně s modely XL. Právě XC12 je pravděpodobně nejznámější a existovaly dokonce i jeho klony, například XCA12, CA12, XL12, PM-4401A, atd.

XC12 bez předního krytu s dvířky.

 Obrázek 15: XC12 bez předního krytu s dvířky. Viditelná je mazací hlava, čtecí/zápisová hlava, počitadlo otáček i motor.

Autor: tisnik, podle licence: Rights Managed

Atarácký kazetový záznamník XC12

V dalším textu, zejména při popisu analogových a digitálních obvodů určených pro zápis a čtení dat, se zaměříme na kazetový záznamník XC12, který byl (vedle joysticků) v našich končinách zdaleka nejpoužívanějším periferním zařízením osmibitových domácích mikropočítačů Atari. Jak jsme již uvedli v předchozí kapitole, byl tento záznamník primárně určen pro zápis a čtení dat a nenajdeme zde tedy jacky pro vstup a výstup audio signálu (audio výstup je možný jen z jednoho kanálu). K počítačům Atari se XC12 připojoval přes sběrnici SIO (viz navazující kapitolu). Ve výbavě pochopitelně nechyběl snímač otáček (i s možností jeho vynulování), který byl téměř nutností. Mechanická odolnost XC12 byla poměrně vysoká – datové záznamníky totiž byly namáhány mnohem více, než běžné hudební přehrávače (nutnost přetáčení, včetně často zneužívaného přetáčení „s příslechem“ – kombinace tlačítek Play, Fast forward, Rewind a Stop to umožňovala). Po cca čtyřiceti letech je samozřejmě nutné vyměnit řemínky a ideálně i vyměnit gumové přítlačné kolečko (capstan), které za ta léta ztvrdlo, ale celek je stále plně funkční.

Další pohled na XC12 bez předního krytu s dvířky.

 Obrázek 16: Další pohled na XC12 bez předního krytu s dvířky.

Autor: tisnik, podle licence: Rights Managed

Propojení XC12 s počítačem přes SIO

Záznamník XC12 se, podobně jako další záznamníky s ním kompatibilní, k počítačům Atari připojoval přes SIO. Ovšem jeho způsob zapojení i komunikace s počítačem se odlišovaly od ostatních „inteligentních“ zařízení. Využívala se totiž jen následující šestice pinů:

Pin Název signálu Stručný popis
3 Data In asynchronní sériový přenos dat z periferního zařízení do počítače
4 GND zem
5 Data Out asynchronní sériový přenos dat z počítače do periferního zařízení
8 Motor Control řízení motoru kazetového magnetofonu
10 +5V / Ready +5V pro zařízení bez vlastního napájení (kazetový magnetofon) + informace o tom, že je počítač připraven
11 Audio In audio signál z kazetového magnetofonu
Poznámka: pro Turbo 2000 se ještě využíval pin Command, k tomu se však ještě vrátíme.
Po cca 37 letech nevypadá mechanismus nejhůř (i když by potřeboval vyčistit).

 Obrázek 17: Po cca 37 letech nevypadá mechanismus nejhůř (i když by potřeboval vyčistit).

Autor: tisnik, podle licence: Rights Managed

Formát záznamu dat

Zajímavý je způsob zápisu dat na kazetu. Nejprve se zaměříme na formát záznamu dat z „digitálního“ pohledu; v dalších kapitolách si pak řekneme, jakým způsobem jsou reprezentovány jednotlivé bity. Začneme způsobem reprezentace jednotlivých bajtů a způsobem jejich vysílání z počítače do záznamníku. Jednotlivé bajty se posílají asynchronně, přičemž je použit jeden start bit a jeden stop bit – celkem se tedy bajt posílá jako sekvence deseti bitů. Start bit má logickou hodnotu 0, stop bit pak logickou hodnotu 1. To tedy znamená, že nezávisle na tom, jaká data se posílají (například sekvence samých nul či naopak sekvence hodnot $ff), dojde ke změně hodnoty minimálně jedenkrát v celé sekvenci deseti bitů. Díky tomu je zjednodušen proces synchronizace čipu POKEY při zpětném čtení dat (k tomu se ještě dostaneme).

Bajty jsou sdružovány do bloků, z nichž každý má délku přesně 132 bajtů. První dva zapisované bajty mají binární hodnotu 01010101 a používají se při čtení pro synchronizaci časování čipu POKEY (tedy řeší se stav, kdy je rychlost posunu pásky nepatrně odlišná od standardu). Další bajt je řídicí a popisuje celý blok:

Řídicí bajt Význam
$FC bude následovat 128 datových bajtů
$FA bude následovat 1–127 datových bajtů doplněných nulami (délka je uložena na konci bloku)
$FE koncový záznam obsahující jen 128 nul (to je dobře slyšitelné)

Každý blok obsahuje 128 datových bajtů nebo výplňových nul. A na konci každého bloku je uložen osmibitový kontrolní součet (ostatně jeden z důvodů, proč jsou od sebe bloky odděleny přibližně 0,25 sekundy trvajícími mezerami, spočívá v nutnosti spočítat kontrolní součet).

Přední kryt XC12 s dvířky.

 Obrázek 18: Přední kryt XC12 s dvířky.

Autor: tisnik, podle licence: Rights Managed

Načtení spustitelného programu z kazety (boot)

Počítače Atari se při svém spuštění přepínaly do BASICu, ovšem stiskem tlačítek START+OPTION při inicializaci systému se počítač přepnul do režimu načtení programu (typicky hry) z kazety. Počítač zobrazil prázdnou textovou obrazovku, zapípal a přes signál Motor Control zapnul motor magnetofonu. Stiskem PLAY na magnetofonu se začala páska přetáčet a počítač čekal na nalezení prvního bloku. Pokud byl blok nalezen a načten, zjistily se z prvních šesti datových bajtů informace o programu – jak je dlouhý, na jaké adresy se mají bloky načíst, z jaké adresy se program spustí atd.:

Bajt Význam bajtu
0 ignorován (začínáme dobře)
1 celkový počet bloků (1–255, 0 znamená 256)
2–3 adresa, od které se provede uložení načtených bloků
4–5 startovní adresa na kterou počítač provede skok po načtení všech bloků, systém ji automaticky uloží do vektoru CASINI

Počítač celý první blok ihned přesunul na zadanou adresu a posléze načetl i všechny další bloky. Celkem tedy bylo možné načíst program o délce 256×128=32kB (což bylo u některých modelů Atari více, než je kapacita nainstalované paměti). Po načtení všech bloků se provedla instrukce JSR na adresu uloženou v prvním bloku na offsetu 6. Tento podprogram mohl realizovat další načítání, například u programů přesahujících 32 kB. Po návratu z této subrutiny se otestoval příznak přenosu (indikuje chybu) a provedl se další skok JSR na adresu uloženou ve vektoru CASINI (ten je umístěn prakticky hned na začátku adresového prostoru, konkrétně na adrese 2+3).

Povšimněte si, že tento standardní formát neobsahuje název nahrávaného programu, takže se (pokud je například špatně nastavené počitadlo) nahrávalo „naslepo“.

Poznámka: některé programy a hry obsahovaly krátký zavaděč, který například načetl úvodní obrazovku. Samotný kód programu se načetl v rámci druhého datového bloku, někdy dokonce i v upraveném formátu.

Schéma zapojení XC12

Zajímavé bude zjistit, jak vlastně vypadalo zapojení záznamníku XC12. Zapojení je poměrně minimalistické a je založeno na kombinaci analogových a digitálních obvodů (většina jsou obvody analogové). Vypadá následovně:

Schéma zapojení XC12.

 Obrázek 19: Schéma zapojení XC12.

Autor: Jerzy Sobola, podle licence: Rights Managed

Poznámka: označení signálů je z pohledu XC12, nikoli z pohledu počítače (tedy jsou prohozeny vstupní a výstupní signály).

Obvody realizující zápis dat na kazetu

Obvod pro záznam dat na kazetu je ve skutečnosti velmi jednoduchý, a to z toho důvodu, že se o modulaci signálu staral náš starý známý – čip POKEY:

Část určená pro zápis proudu bitů s využitím FSK.

 Obrázek 20: Část určená pro zápis proudu bitů s využitím FSK.

Autor: Jerzy Sobola + tisnik, podle licence: Rights Managed

Samotný záznam dat je kompletně řízen počítačem. Využívá se přitom trojice zvukových kanálů čipu POKEY. Jeden z kanálů je nastaven na produkci audio signálu o frekvenci 5327 Hz, druhý na audio signál o frekvenci 3995 Hz (NTSC, u PAL o pár Hz posunuto) a třetí kanál generuje frekvenci 600 Hz. Tento třetí kanál je použit pro synchronizaci zapisovaných bitů – odtud ostatně pochází tvrzení, že rychlost záznamu je 600 baudů.

Zapisovaný bit (ať již bit datový nebo start či stop bit) svou hodnotou způsobí, že se na vodiči Data out sběrnice SIO objeví frekvence 5327 Hz nebo 3995 Hz (a to po dobu 1/600 sekundy). Tento obdélníkový signál je poslán na čtecí/zápisovou hlavu a zapsán na kazetu – ovšem pochopitelně se v celém analogovém řetězci ztratí vyšší harmonické, takže se nezapisuje „čistý“ obdélníkový signál. To však nevadí, protože při zápisu hraje větší roli základní frekvence a nikoli tvar signálu (jedná se tedy o formu binárního klíčování frekvenčním posunem).

Poznámka: frekvence 5237 Hz a 3995 Hz jsou zvoleny tak, aby bylo možné použít i pásky s horšími vlastnostmi pro zápis vyšších frekvencí. Na druhou stranu však nesmí být tyto frekvence příliš nízké, protože by to negativně ovlivnilo rychlost zápisu (obvody pro čtení totiž potřebují alespoň několik „zákmitů“ pro detekci zapsaného bitu).

Obvody realizující čtení dat z kazety

Čtení dat z kazety je mnohem složitější, než jejich zápis. Je totiž nutné z načteného zašuměného a různě zkresleného analogového signálu zrestaurovat původní sekvenci bitů, která se pošle do počítače, kde ji čip POKEY rozkóduje do sekvence bajtů, která bude interpretována operačním systémem. Zapojení, kterým je rekonstrukce bitového toku („digitalizace“) realizována, vypadá následovně:

Část určená pro čtení a dekódování proudu bitů.

 Obrázek 21: Část určená pro čtení a dekódování proudu bitů.

Autor: Jerzy Sobola + tisnik, podle licence: Rights Managed

Toto schéma se skládá ze čtyř částí (zprava doleva):

  1. Na začátku je analogový zesilovač (dva tranzistory + několik pasivních součástek).
  2. Operační zesilovač (první zleva) společně s diodami CR3 a CR4 signál ořezává a snaží se o vytvoření obdélníkového průběhu s měnící se frekvencí.
  3. Nejdůležitější jsou další dva bloky s operačními zesilovači (zobrazeny nad sebou). Každý z těchto bloků tvoří pásmovou propust spojenou se zesilovačem. Pokud je na vstupu signál s frekvencí blízkou 5327 Hz, bude procházet (posunutý) prvním z bloků, pokud je naopak frekvence bližší 3995 Hz, bude zesílen druhým blokem.
  4. Třetí operační zesilovač z obou signálů, které získá, zrekonstruuje (ideálně původní) obdélníkový průběh, z něhož nakonec čip POKEY zrekonstruuje sekvenci bajtů.

Simulace obvodů pro digitalizaci záznamu přečteného z kazety

Poměrně dlouho mi přesné fungování pásmové propusti tvořené operačním zesilovačem (se zpětnovazební smyčkou, pochopitelně) nebyla moc zřejmá, ovšem našel jsem simulaci celého zapojení, kde je vše vizualizováno. Postačuje přejít na tuto adresu (a mít povolený JavaScript).

Simulace rekonstrukce dat z audio signálu uloženého na kazetě.

 Obrázek 22: Simulace rekonstrukce dat z audio signálu uloženého na kazetě.

Autor: Unknown, podle licence: Rights Managed

Průběžný přepočet záznamové rychlosti

Již několikrát jsme se zmínili o tom, že zápis dat na kazetu probíhá rychlostí 600 bitů za sekundu. Ovšem při čtení může být tato rychlost odlišná, protože například mohou kolísat otáčky, záznam byl proveden v odlišném zařízení atd. Z tohoto důvodu jsou na začátku každého bloku zapsány dva bajty s hodnotou 01010101. Při čtení datového bloku z kazety se nejprve provede rekonstrukce bitového toku z analogového signálu (viz předchozí text) a následně čip POKEY (s podporou systému – časy se měří v obrazových řádcích :-) dokáže do jisté míry upravit rychlost čtení právě na základě těchto dvou bajtů (clock recovery). Ovšem předpokládá se, že celý blok (132 bajtů tedy 1320 bitů) bude přečten touto změřenou rychlostí, což může vést k chybám při čtení (paradoxně mnohem rychlejší systémy s Turbem tímto problémem netrpí díky odlišnému způsobu rekonstrukce binárního signálu).

Přednosti a nedostatky standardního záznamu dat na kazetu

Záznamník XC12 (a pochopitelně i jeho předchůdci) byl na západě chápán spíše jako levný doplněk k počítači. Pro profesionální nasazení (kancelářské aplikace, vývoj, měřicí systémy, řídicí systémy) se počítalo s využitím disketové jednotky nebo dokonce dvojice disketových jednotek. Ovšem v Jižní Americe a taktéž ve střední a východní Evropě se používal převážně právě XC12, mnohdy jako jediné externí paměťové médium. A v takovém nasazení se zvýraznily nedostatky standardního způsobu záznamu dat na kazetu. Mezi nedostatky patří zejména:

  • Nízká záznamová rychlost 600 bitů za sekundu, která je dále snižována mezerami mezi bloky
  • Na začátku celého souboru (bloků), které se nahrávají, se nenachází žádná hlavička s názvem aplikace
  • I když je rychlost měřena a upravována na začátku každého bloku, je systém citlivý na změnu otáček motoru
  • Poslední blok je vždy prázdný a přidává tak cca 3 sekundy k celkové době nahrávání

Mezi výhody patří průběžná kontrola každého načteného bloku založená na výpočtu kontrolního součtu. O případné chybě se tedy uživatel dozvěděl prakticky ihned a nikoli až na samotném konci nahrávání.

Poznámka: popravdě mě další výhody nenapadají.

Systémy pro zvýšení rychlosti nahrávání/načítání

Největším nedostatkem standardního záznamu dat je nízká rychlost nahrávání a načítání. Není tedy divu, že se objevilo relativně velké množství systémů pro zvýšení rychlosti. Možná nejúspěšnější je systém Turbo 2000 Jiřího Richtera, ovšem nejdříve se podívejme na některé další způsoby zvýšení přenosové rychlosti.

Některé programy používaly vlastní krátký zavaděč (typicky měl délku jen několika bloků) a poté byl zbytek programu uložen jako jediný dlouhý blok bez mezer. Tím se sice nezvýšila rychlost záznamu jednotlivých bitů, ale odstranilo se čekání mezi bloky (a jako další efekt to komplikovalo tvorbu pirátských kopií).

Objevily se i pokusy o pouhé zvýšení přenosové rychlosti na cca 900–1200 bitů za sekundu s tím, že se použily původní frekvence jedniček a nul i původní obvody pro rekonstrukci bitového toku z analogového signálu. Ovšem výsledky nebyly příliš uspokojivé, protože se přenosová rychlost (frekvence) příliš blížila frekvencím zakódování nul a jedniček. Pásmové propusti neměly dostatek času na stabilizaci (a tedy rozpoznání) frekvence, takže se chybovost zvyšovala. Byly navrhnuty i relativně malé úpravy rezistorů v pásmových propustech tak. Jednalo se o záměnu dvou rezistorů za rezistory stejné hodnoty, ale v přesnější řadě. Tím se docílilo lepšího „naladění“ propustí.

Školení Zabbix

Turbo 2000 a jeho varianty

Zápis binárních dat na kazetu s využitím dvou frekvencí má své limity. Navíc ani pouhé zvýšení přenosové rychlosti neodstranilo neexistenci názvu nahrávaného programu. Zvýšení rychlosti zápisu je sice možné (klidně i na desetinásobek původních 600 bitů za sekundu), ovšem v případě XC12 to vyžadovalo jeho hardwarovou úpravu a taktéž náhradu systémových rutin pro práci s kazetovým magnetofonem. Jednou z nejúspěšnějších úprav je již výše zmíněné Turbo 2000 Jiřího Richtera. Tato úprava byla populární i díky tomu, že stále podporovala i původní způsob záznamu, takže byla zaručena plná zpětná kompatibilita. Navíc samotná hardwarová úprava XC12 byla relativně malá (minimum součástek, jen malý přidaný plošný spoj popř. realizace stylem „vrabčí hnízdo“). Podrobnosti o tomto systému si povíme příště, protože se bude jednat o jakýsi „můstek“ k popisu konceptu kanálů a zařízení, které z Atari dělaly (na svou dobu) rozšiřitelný a konfigurovatelný systém určený pro profesionální použití.

Repositář s demonstračními příklady

Všechny demonstrační příklady, s nimiž jsme se v předchozích článcích i v článku dnešním seznámili a které jsou určeny pro překlad s využitím assembleru ca65, jsou dostupné, jak je zvykem, na GitHubu. V tabulce níže jsou uvedeny odkazy na jednotlivé zdrojové kódy příkladů psané v assembleru i „listingy“ vygenerované samotným assemblerem, ze kterých je patrné, jakým způsobem se jednotlivé příklady přeložily do výsledného XEX souboru:

# Příklad Stručný popis příkladu Adresa
1 Makefile definice cílů pro překlad všech demonstračních příkladů z této tabulky https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/Makefile
2 linker.cfg konfigurační soubor pro linker https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/linker.cfg
       
3 dummy.asm pouze nekonečná smyčka https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/dummy.asm
4 dummy_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/dummy_list.asm
5 dummy_list.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/dummy.map
       
6 background_color1.asm změna barvy pozadí – základní varianta příkladu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color1.asm
7 background_color1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color1_list.asm
8 background_color1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color1.map
       
9 background_color2.asm změna barvy pozadí – využití předdefinovaných konstant https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color2.asm
10 background_color2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color2_list.asm
11 background_color2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color2.map
       
12 print_a.asm tisk znaku přímo do obrazové paměti https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/print_a.asm
13 print_a_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/print_a_list.asm
14 print_a.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/print_a.map
       
15 color_computation1.asm výpočet barvy, varianta bez bitových posunů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation1.asm
16 color_computation1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation1_list.asm
17 color_computation1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation1.map
       
18 color_computation2.asm výpočet barvy, varianta s bitovými posuny https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation2.asm
19 color_computation2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation2_list.asm
20 color_computation2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation2.map
       
21 subroutine1.asm skok do podprogramu bez předávání parametrů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine1.asm
22 subroutine1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine1_list.asm
23 subroutine1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine1.map
       
24 subroutine2.asm skok do podprogramu s předáním parametru https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine2.asm
25 subroutine2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine2_list.asm
26 subroutine2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine2.map
       
27 hex_number1.asm tisk jedné hexadecimální číslice (nekorektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number1.asm
28 hex_number1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number1_list.asm
29 hex_number1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number1.map
       
30 hex_number2.asm tisk jedné hexadecimální číslice (korektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number2.asm
31 hex_number2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number2_list.asm
32 hex_number2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number2.map
       
33 hex_number3.asm tisk jedné hexadecimální číslice (korektní varianta po refaktoringu) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number3.asm
34 hex_number3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number3_list.asm
35 hex_number3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number3.map
       
36 hex_number4.asm tisk jedné hexadecimální číslice, varianta postavená na makrech https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number4.asm
37 hex_number4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number4_list.asm
38 hex_number4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number4.map
       
39 hex_number5.asm tisk jedné hexadecimální číslice, varianta postavená na makrech, lokální automaticky generovaná návěští https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number5.asm
40 hex_number5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number5_list.asm
41 hex_number5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number5.map
       
42 hex_number6.asm příprava pro tisk dvouciferné hexadecimální hodnoty https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number6.asm
43 hex_number6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number6_list.asm
44 hex_number6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number6.map
       
45 hex_number7.asm realizace tisku dvouciferné hexadecimální hodnoty https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number7.asm
46 hex_number7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number7_list.asm
47 hex_number7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number7.map
       
48 hex_number8.asm makro pro logický posun doprava o zadaný počet bitů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number8.asm
49 hex_number8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number8_list.asm
50 hex_number8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number8.map
       
51 hex_number9.asm čekání na stisk klávesy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number8.asm
52 hex_number9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number8_list.asm
53 hex_number9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number8.map
       
54 fill_block1.asm vyplnění bloku, varianta se dvěma index registry https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block1.asm
55 fill_block1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block1_list.asm
56 fill_block1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block1.map
       
57 fill_block2.asm vyplnění bloku, nekorektní varianta využívající jeden index registr https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block2.asm
58 fill_block2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block2_list.asm
59 fill_block2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block2.map
       
60 fill_block3.asm vyplnění bloku, korektní varianta využívající jeden index registr https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block3.asm
61 fill_block3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block3_list.asm
62 fill_block3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block3.map
       
63 fill_block4.asm vyplnění bloku delšího než 256 bajtů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block4.asm
64 fill_block4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block4_list.asm
65 fill_block4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block4.map
       
66 fill_block5.asm vyplnění bloku, čítání směrem nahoru https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block5.asm
67 fill_block5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block5_list.asm
68 fill_block5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block5.map
       
69 pmg01.asm inicializace PMG, povolení PMG, nastavení pozice a tvaru prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg01.asm
70 pmg01_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg01_list.asm
71 pmg01.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg01.map
       
72 pmg02.asm nastavení pozice, tvaru a barvy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg02.asm
73 pmg02_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg02_list.asm
74 pmg02.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg02.map
       
75 pmg03.asm vliv zákazu DMA na zobrazení PMG https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg03.asm
76 pmg03_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg03_list.asm
77 pmg03.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg03.map
       
78 pmg04.asm postupná změna horizontální velikosti hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg04.asm
79 pmg04_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg04_list.asm
80 pmg04.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg04.map
       
81 pmg05.asm odlišná bitová maska tvaru hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg05.asm
82 pmg05_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg05_list.asm
83 pmg05.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg05.map
       
84 pmg06.asm inicializace a zobrazení dvou hráčů, kteří se překrývají https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg06.asm
84 pmg06_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg06_list.asm
86 pmg06.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg06.map
       
87 pmg07.asm naivní způsob nastavení bitmapy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg07.asm
88 pmg07_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg07_list.asm
89 pmg07.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg07.map
       
90 pmg08.asm elegantnější způsob nastavení bitmapy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg08.asm
91 pmg08_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg08_list.asm
92 pmg08.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg08.map
       
93 pmg09.asm zobrazení všech čtyř hráčů, změna priority zobrazení https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg09.asm
94 pmg09_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg09_list.asm
95 pmg09.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg09.map
       
96 pmg10.asm nastavení bitmap všech čtyř hráčů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg10.asm
97 pmg10_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg10_list.asm
98 pmg10.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg10.map
       
99 pmg_stick1.asm ovládání prvního hráče joystickem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick1.asm
100 pmg_stick1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick1_list.asm
101 pmg_stick1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick1.map
       
102 pmg_stick2.asm zobrazení všech čtyř střel https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick2.asm
103 pmg_stick2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick2_list.asm
104 pmg_stick2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick2.map
       
105 pmg_stick3.asm střely zdánlivě tvoří pátého hráče (ovšem stále jsou samostatné) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick3.asm
106 pmg_stick3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick3_list.asm
107 pmg_stick3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick3.map
       
108 pmg_stick4.asm korektní zobrazení pátého hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick4.asm
109 pmg_stick4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick4_list.asm
110 pmg_stick4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick4.map
       
111 pmg_stick5.asm detekce stisku tlačítka joysticku, změna barvy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick5.asm
112 pmg_stick5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick5_list.asm
113 pmg_stick5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick5.map
       
114 pmg11.asm automatický horizontální pohyb prvního hráče, realizace zpožďovací smyčky https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg11.asm
115 pmg11_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg11_list.asm
116 pmg11.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg11.map
       
117 pmg12.asm automatický horizontální pohyb prvního hráče, čekání na další snímek https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg12.asm
118 pmg12_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg12_list.asm
119 pmg12.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg12.map
       
120 pmg13.asm vertikální posun spritu směrem dolů (nekorektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg13.asm
121 pmg13_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg13_list.asm
122 pmg13.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg13.map
       
123 pmg14.asm vertikální posun spritu směrem dolů (korektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg14.asm
124 pmg14_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg14_list.asm
125 pmg14.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg14.map
       
126 pmg15.asm vertikální posun spritu směrem nahoru (korektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg15.asm
127 pmg15_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg15_list.asm
128 pmg15.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg15.map
       
129 pmg_stick6.asm ovládání PMG joystickem v horizontálním i vertikálním směru https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick6.asm
130 pmg_stick6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick6_list.asm
131 pmg_stick6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick6.map
       
132 pmg_collision1.asm ovládání PMG joystickem, detekce kolize prvního hráče s dalšími hráči https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision1.asm
133 pmg_collision1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision1_list.asm
134 pmg_collision1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision1.map
       
135 pmg_collision2.asm ovládání PMG joystickem, detekce kolize prvního hráče s dalšími hráči https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision2.asm
136 pmg_collision2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision2_list.asm
137 pmg_collision2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision2.map
       
138 pmg_collision3.asm ovládání PMG joystickem, detekce kolize prvního hráče s dalšími hráči, detekce kolize první střely s hráči https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision3.asm
139 pmg_collision3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision3_list.asm
140 pmg_collision3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision3.map
       
141 pmg_collision4.asm ovládání PMG joystickem, detekce kolize prvního hráče s hracím polem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision4.asm
142 pmg_collision4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision4_list.asm
143 pmg_collision4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision4.map
       
144 pong.asm scéna ze hry Pong vykreslená jen s využitím spritů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pong.asm
145 pong_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pong_list.asm
146 pong.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pong.map
       
147 antic1.asm nastavení textového režimu se čtyřmi barvami a 20×12 znaky https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic1.asm
148 antic1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic1_list.asm
149 antic1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic1.map
       
150 antic2.asm nastavení textového režimu se čtyřmi barvami a 20×12 znaky, zlepšení čitelnosti https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic2.asm
151 antic2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic2_list.asm
152 antic2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic2.map
       
153 antic3.asm nastavení režimu, ve kterém se kombinují různé textové a grafické řádky https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic3.asm
154 antic3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic3_list.asm
155 antic3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic3.map
       
156 antic4.asm nastavení standardního textového režimu GR.0, výpis 256 znaků https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic4.asm
157 antic4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic4_list.asm
158 antic4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic4.map
       
159 antic5.asm volba mezinárodní znakové sady pro textový režim GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic5.asm
160 antic5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic5_list.asm
161 antic5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic5.map
       
162 antic6.asm volba náhodné stránky pro fonty v textovém režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic6.asm
163 antic6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic6_list.asm
164 antic6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic6.map
       
165 antic7.asm tisk 64 znaků ve čtyřech barvách v režimu GR.1 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic7.asm
166 antic7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic7_list.asm
167 antic7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic7.map
       
168 antic8.asm určení, které znaky se budou tisknout v režimu GR.1 nebo GR.2 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic8.asm
169 antic8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic8_list.asm
170 antic8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic8.map
       
171 antic9.asm nastavení textového režimu GR.12 a výpis znaků na obrazovku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic9.asm
172 antic9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic9_list.asm
173 antic9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic9.map
       
174 antic_A.asm vlastní znaková sada (naivní přístup) pro textový režim GR.12 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_A.asm
175 antic_A_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_A_list.asm
176 antic_A.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_A.map
       
177 antic_B.asm nastavení dvoubarevného grafického režimu s rozlišením 80×48 pixelů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_B.asm
178 antic_B_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_B_list.asm
179 antic_B.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_B.map
       
180 antic_bitmap1.asm nastavení dvoubarevného grafického režimu s rozlišením 80×48 pixelů, zobrazení bitmapy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap1.asm
181 antic_bitmap1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap1_list.asm
182 antic_bitmap1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap1.map
       
183 antic_bitmap2.asm nastavení dvoubarevného grafického režimu s rozlišením 80×48 pixelů, jednodušší zápis display listu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap2.asm
184 antic_bitmap2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap2_list.asm
185 antic_bitmap2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap2.map
       
186 antic_bitmap3.asm nastavení dvoubarevného grafického režimu s rozlišením 160×96 pixelů, zobrazení bitmapy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap3.asm
187 antic_bitmap3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap3_list.asm
188 antic_bitmap3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap3.map
       
189 antic_bitmap4.asm nastavení dvoubarevného grafického režimu s rozlišením 160×192 pixelů, zobrazení bitmapy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap4.asm
190 antic_bitmap4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap4_list.asm
191 antic_bitmap4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap4.map
       
192 antic_bitmap5.asm nastavení dvoubarevného grafického režimu s rozlišením 320×192 pixelů, nekorektní display list, nekorektní zobrazení bitmapy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap5.asm
193 antic_bitmap5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap5_list.asm
194 antic_bitmap5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap5.map
       
195 antic_bitmap6.asm nastavení dvoubarevného grafického režimu s rozlišením 320×192 pixelů, zarovnání bitmapy do bloku 4096 bajtů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap6.asm
196 antic_bitmap6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap6_list.asm
197 antic_bitmap6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap6.map
       
198 antic_bitmap7.asm nastavení dvoubarevného grafického režimu s rozlišením 320×192 pixelů, korektní display list, rozdělená bitmapa https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap7.asm
199 antic_bitmap7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap7_list.asm
200 antic_bitmap7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap7.map
       
201 antic_bitmap8.asm nastavení čtyřbarevného grafického režimu s rozlišením 160×96 pixelů, zobrazení čtyřbarevného obrázku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap8.asm
202 antic_bitmap8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap8_list.asm
203 antic_bitmap8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap8.map
       
204 chars.bas tisk všech znaků na obrazovku (varianta naprogramovaná v BASICu) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/chars.bas
       
205 image_80×48.asm data obrázku 80×48 ve formě příkazů .byte https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/image_80×48.asm
206 image_160×96.asm data obrázku 160×96 ve formě příkazů .byte https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/image_160×96.asm
207 image_160×192.asm data obrázku 160×192 ve formě příkazů .byte https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/image_160×192.asm
208 image_320×192.bin čistě binární data obrázku 320×192× https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/image_320×192.bin
209 image_320×192_1.bin čistě binární data obrázku 320×96× (první polovina) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/image_320×192_1.bin
210 image_320×192_2.bin čistě binární data obrázku 320×96× (druhá polovina) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/image_320×192_2.bin
211 image_160×96×2.bin čistě binární data obrázku 320×192× https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/image_160×96×2.bin
       
212 antic_dli1.asm výpis všech 128 znaků v přímé i inverzní podobě v režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli1.asm
213 antic_dli1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli1_list.asm
214 antic_dli1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli1.map
       
215 antic_dli2.asm dočasná modifikace barvy pozadí provedená v DLI (dvanáctý textový řádek) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli2.asm
216 antic_dli2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli2_list.asm
217 antic_dli2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli2.map
       
218 antic_dli3.asm opakované čekání na synchronizační pulz v DLI, výběr odlišné barvy pozadí https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli3.asm
219 antic_dli3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli3_list.asm
220 antic_dli3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli3.map
       
221 antic_dli4.asm display list obsahující několik instrukcí DLI, opakovaná změna barvy pozadí https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli4.asm
222 antic_dli4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli4_list.asm
223 antic_dli4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli4.map
       
224 antic_dli5.asm display list obsahující několik instrukcí DLI, opakovaná změna barvy pozadí https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli5.asm
225 antic_dli5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli5_list.asm
226 antic_dli5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli5.map
       
227 antic_dli_pmg.asm zobrazení osmi spritů namísto spritů čtyř s využitím DLI https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_pmg.asm
228 antic_dli_pmg_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_pmg_list.asm
229 antic_dli_pmg.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_pmg.map
       
230 antic_vbi1.asm aktivní čekání na dokončení vykreslení snímku (bez VBI) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi1.asm
231 antic_vbi1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi1_list.asm
232 antic_vbi1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi1.map
       
233 antic_vbi2.asm pohyb PMG realizovaný ve VBI (první způsob nastavení vektoru) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi2.asm
234 antic_vbi2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi2_list.asm
235 antic_vbi2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi2.map
       
235 antic_vbi3.asm pohyb PMG realizovaný ve VBI (druhý způsob nastavení vektoru) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi3.asm
236 antic_vbi3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi3_list.asm
238 antic_vbi3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi3.map
       
239 antic_vbi_dli1.asm změna pozice PMG ve VBI, modifikace barvy herního pole v DLI https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli1.asm
240 antic_vbi_dli1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli1_list.asm
241 antic_vbi_dli1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli1.map
       
242 antic_vbi_dli2.asm dtto, ale s odstraněním nadbytečné instrukce RTS ve VBI https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli2.asm
243 antic_vbi_dli2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli2_list.asm
244 antic_vbi_dli2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli2.map
       
245 antic_vbi_dli3.asm přepis předchozího příkladu s využitím subrutin https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli3.asm
246 antic_vbi_dli3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli3_list.asm
247 antic_vbi_dli3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli3.map
       
248 antic_vbi_dli4.asm přepis předchozího příkladu s využitím maker https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli4.asm
249 antic_vbi_dli4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli4_list.asm
250 antic_vbi_dli4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli4.map
       
251 antic_scrolling1.asm příprava pro scrolling: dvojice hodnot ovládaných joystickem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling1.asm
252 antic_scrolling1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling1_list.asm
253 antic_scrolling1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling1.map
       
254 antic_scrolling2.asm příprava na scrolling, tisk horizontálního a vertikálního posunu na obrazovku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling2.asm
255 antic_scrolling2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling2_list.asm
256 antic_scrolling2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling2.map
       
257 antic_scrolling3.asm realizace vertikálního scrollingu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling3.asm
258 antic_scrolling3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling3_list.asm
259 antic_scrolling3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling3.map
       
260 antic_scrolling4.asm realizace horizontálního i vertikálního scrollingu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling4.asm
261 antic_scrolling4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling4_list.asm
262 antic_scrolling4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling4.map
       
263 antic_playfield1.asm úzké, standardní a rozšířené herní pole https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_playfield1.asm
264 antic_playfield1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_playfield1_list.asm
265 antic_playfield1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_playfield1.map
       
266 gtia_mode1.asm základ pro další demonstrační příklady: monochromatický grafický režim 320×192 pixelů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode1.asm
267 gtia_mode1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode1_list.asm
268 gtia_mode1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode1.map
       
269 gtia_mode2.asm nastavení GTIA režimu 9 s vykreslením vzorku barev https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode2.asm
270 gtia_mode2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode2_list.asm
271 gtia_mode2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode2.map
       
272 gtia_mode3.asm nastavení GTIA režimu 9 s postupnou změnou základního odstínu barvy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode3.asm
273 gtia_mode3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode3_list.asm
274 gtia_mode3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode3.map
       
275 gtia_mode4.asm nastavení GTIA režimu 11 s vykreslením vzorku barev https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode4.asm
276 gtia_mode4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode4_list.asm
277 gtia_mode4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode4.map
       
278 gtia_mode5.asm nastavení GTIA režimu 11 s postupnou změnou intenzity barev https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode5.asm
279 gtia_mode5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode5_list.asm
280 gtia_mode5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode5.map
       
281 gtia_mode6.asm zobrazení barevné škály v režimu GTIA 10 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode6.asm
282 gtia_mode6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode6_list.asm
283 gtia_mode6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode6.map
       
284 gtia_mode7.asm obrazovka s různými textovými režimy, přepnutí do „zobrazení“ GTIA https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode7.asm
285 gtia_mode7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode7_list.asm
286 gtia_mode7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode7.map
       
287 gtia_mode8.asm   https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode8.asm
288 gtia_mode8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode8_list.asm
289 gtia_mode8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode8.map
       
290 gtia_mode9.asm zobrazení palety se šestnácti stupni šedi https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode9.asm
291 gtia_mode9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode9_list.asm
292 gtia_mode9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode9.map
       
293 gtia_mode_A.asm rozšíření palety na 256 barev na jediné obrazovce https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_A.asm
294 gtia_mode_A_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_A_list.asm
295 gtia_mode_A.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_A.map
       
296 gtia_mode_B.asm kombinace 256 barev na obrazovce se sprity https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_B.asm
297 gtia_mode_B_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_B_list.asm
298 gtia_mode_B.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_B.map
       
299 rainbow1.asm zobrazení duhy ve standardním textovém režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow1.asm
300 rainbow1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow1_list.asm
301 rainbow1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow1.map
       
302 rainbow2.asm scrollující duha zobrazená ve standardním textovém režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow2.asm
303 rainbow2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow2_list.asm
304 rainbow2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow2.map
       
305 rainbow3.asm dvě nezávisle na sobě scrollující duhy ve standardním textovém režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow3.asm
306 rainbow3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow3_list.asm
307 rainbow3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow3.map
       
308 rainbow4.asm dvě nezávisle na sobě scrollující duhy ve standardním textovém režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow4.asm
309 rainbow4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow4_list.asm
310 rainbow4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow4.map
       
311 rainbow5.asm změna barvy v průběhu zobrazení televizních řádků https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow5.asm
312 rainbow5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow5_list.asm
313 rainbow5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow5.map
       
314 rainbow6.asm změna barvy (duha) na obrazovce bez display listu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow6.asm
315 rainbow6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow6_list.asm
316 rainbow6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow6.map
       
317 sound1.asm čistý tón komorního A https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound1.asm
318 sound1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound1_list.asm
319 sound1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound1.map
       
320 sound2.asm tón komorního A modulovaný šumem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound2.asm
321 sound2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound2_list.asm
322 sound2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound2.map
       
323 sound3.asm původní tón komorního A, ovšem nyní je frekvence snížena na 15kHz https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound3.asm
324 sound3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound3_list.asm
325 sound3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound3.map
       
326 sound4.asm nejnižší tón, který lze získat ze zvukového kanálu s osmibitovým děličem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound4.asm
327 sound4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound4_list.asm
328 sound4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound4.map
       
329 sound5.asm zázněje získané ze dvou zvukových kanálů s podobnou výstupní frekvencí https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound5.asm
330 sound5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound5_list.asm
331 sound5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound5.map
       
332 sound6.asm zázněje získané ze čtyř zvukových kanálů s podobnou výstupní frekvencí https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound6.asm
333 sound6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound6_list.asm
334 sound6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound6.map
       
335 sound7.asm ukázka všech kombinací generátorů šumu (jeden kanál) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound7.asm
336 sound7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound7_list.asm
337 sound7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound7.map
       
338 sound8.asm ovládání osmibitové děličky zvukového kanálu pomocí joysticku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound8.asm
339 sound8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound8_list.asm
340 sound8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound8.map
       
341 sound9.asm ovládání šestnáctibitové děličky dvou spojených zvukových kanálů pomocí joysticku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound9.asm
342 sound9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound9_list.asm
343 sound9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound9.map
       
344 sound_A.asm nastavení horní propusti pro první zvukový kanál https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_A.asm
345 sound_A_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_A_list.asm
346 sound_A.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_A.map
       
347 sound_B.asm první zvukový kanál s horní propustí, ovládání frekvencí pomocí joysticku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_B.asm
348 sound_B_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_B_list.asm
349 sound_B.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_B.map
       
350 sound_C.asm první zvukový kanál s horní propustí, ovládání frekvencí pomocí joysticku, změna generátoru šumu pro první kanál https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_C.asm
351 sound_C_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_C_list.asm
352 sound_C.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_C.map
       
353 sound_D.asm přivedení generátoru šumu na horní propust https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_D.asm
354 sound_D_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_D_list.asm
355 sound_D.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_D.map
       
356 sound_E.asm přímé ovládání reproduktoru (generuje se poškozený zvuk) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_E.asm
357 sound_E_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_E_list.asm
358 sound_E.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_E.map
       
359 sound_F.asm přímé ovládání reproduktoru bez dalších přerušení https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_F.asm
360 sound_F_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_F_list.asm
361 sound_F.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_F.map
       
362 rnd1.asm tisk náhodných ATASCII znaků s hodnotami přečtenými z registru RANDOM https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd1.asm
363 rnd1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd1_list.asm
364 rnd1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd1.map
       
365 rnd2.asm vyplnění 48 obrazových řádků v grafickém režimu 80×48 pixelů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd2.asm
366 rnd2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd2_list.asm
367 rnd2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd2.map
       
368 rnd3.asm vyplnění celé obrazovky režimu 80×48 pixelů pseudonáhodnými daty (verze bez maker) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd3.asm
369 rnd3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd3_list.asm
370 rnd3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd3.map
       
371 rnd4.asm vyplnění celé obrazovky režimu 80×48 pixelů pseudonáhodnými daty (verze s makry) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd4.asm
372 rnd4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd4_list.asm
373 rnd4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd4.map
       
374 paddle1.asm příprava pro ovládání horizontální pozice spritu s využitím paddle https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle1.asm
375 paddle1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle1_list.asm
376 paddle1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle1.map
       
377 paddle2.asm ovládání horizontální pozice spritu s využitím paddle https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle2.asm
378 paddle2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle2_list.asm
379 paddle2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle2.map
       
380 key1.asm zobrazení stavu kláves START, SELECTOPTION https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key1.asm
381 key1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key1_list.asm
382 key1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key1.map
       
383 key2.asm řízení barvy hráče (spritu) klávesami START, SELECTOPTION https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key2.asm
384 key2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key2_list.asm
385 key2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key2.map
       
386 key3.asm přečtení kódu naposledy stisknuté klávesy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key3.asm
387 key3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key3_list.asm
388 key3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key3.map
       
389 key4.asm využití systémové rutiny pro čtení kódu stisknuté klávesy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key4.asm
390 key4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key4_list.asm
391 key4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key4.map
       
392 key5.asm detekce stisku klávesy BREAK https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key5.asm
393 key5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key5_list.asm
394 key5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key5.map

Odkazy na Internetu

  1. MOS 6502 instruction set
    http://www.6502.org/users/o­belisk/6502/instructions.html
  2. EXE File Format Description
    https://gury.atari8.info/ref­s/file_formats_exe.php
  3. XEX Filter – A toolkit to analyze and manipulate Atari binary files
    https://www.vitoco.cl/atari/xex-filter/index.html
  4. chkxex.py
    https://raw.githubusercon­tent.com/seban-slt/tcx_tools/refs/heads/mas­ter/chkxex.py
  5. ca65 Users Guide
    https://cc65.github.io/doc/ca65.html
  6. cc65 Users Guide
    https://cc65.github.io/doc/cc65.html
  7. ld65 Users Guide
    https://cc65.github.io/doc/ld65.html
  8. da65 Users Guide
    https://cc65.github.io/doc/da65.html
  9. Překladače jazyka C pro historické osmibitové mikroprocesory
    https://www.root.cz/clanky/prekladace-jazyka-c-pro-historicke-osmibitove-mikroprocesory/
  10. Překladače programovacího jazyka C pro historické osmibitové mikroprocesory (2)
    https://www.root.cz/clanky/prekladace-programovaciho-jazyka-c-pro-historicke-osmibitove-mikroprocesory-2/
  11. Getting Started Programming in C: Coding a Retro Game with C Part 2
    https://retrogamecoders.com/getting-started-with-c-cc65/
  12. NES game development in 6502 assembly – Part 1
    https://kibrit.tech/en/blog/nes-game-development-part-1
  13. NES 6502 Programming Tutorial – Part 1: Getting Started
    https://dev.xenforo.relay­.cool/index.php?threads/nes-6502-programming-tutorial-part-1-getting-started.858389/
  14. Minimal NES example using ca65
    https://github.com/bbbradsmith/NES-ca65-example
  15. List of 6502-based Computers and Consoles
    https://www.retrocompute.co.uk/list-of-6502-based-computers-and-consoles/
  16. 6502 – the first RISC µP
    http://ericclever.com/6500/
  17. 3 Generations of Game Machine Architecture
    http://www.atariarchives.or­g/dev/CGEXPO99.html
  18. “Hello, world” from scratch on a 6502 — Part 1
    https://www.youtube.com/wat­ch?v=LnzuMJLZRdU
  19. A Tour of 6502 Cross-Assemblers
    https://bumbershootsoft.wor­dpress.com/2016/01/31/a-tour-of-6502-cross-assemblers/
  20. Adventures with ca65
    https://atariage.com/forum­s/topic/312451-adventures-with-ca65/
  21. example ca65 startup code
    https://atariage.com/forum­s/topic/209776-example-ca65-startup-code/
  22. 6502 PRIMER: Building your own 6502 computer
    http://wilsonminesco.com/6502primer/
  23. 6502 Instruction Set
    https://www.masswerk.at/6502/6502_in­struction_set.html
  24. Chip Hall of Fame: MOS Technology 6502 Microprocessor
    https://spectrum.ieee.org/tech-history/silicon-revolution/chip-hall-of-fame-mos-technology-6502-microprocessor
  25. Single-board computer
    https://en.wikipedia.org/wiki/Single-board_computer
  26. www.6502.org
    http://www.6502.org/
  27. 6502 PRIMER: Building your own 6502 computer – clock generator
    http://wilsonminesco.com/6502pri­mer/ClkGen.html
  28. Great Microprocessors of the Past and Present (V 13.4.0)
    http://www.cpushack.com/CPU/cpu.html
  29. Jak se zrodil procesor?
    https://www.root.cz/clanky/jak-se-zrodil-procesor/
  30. Osmibitové mikroprocesory a mikrořadiče firmy Motorola (1)
    https://www.root.cz/clanky/osmibitove-mikroprocesory-a-mikroradice-firmy-motorola-1/
  31. Mikrořadiče a jejich použití v jednoduchých mikropočítačích
    https://www.root.cz/clanky/mikroradice-a-jejich-pouziti-v-jednoduchych-mikropocitacich/
  32. Mikrořadiče a jejich aplikace v jednoduchých mikropočítačích (2)
    https://www.root.cz/clanky/mikroradice-a-jejich-aplikace-v-jednoduchych-mikropocitacich-2/
  33. 25 Microchips That Shook the World
    https://spectrum.ieee.org/tech-history/silicon-revolution/25-microchips-that-shook-the-world
  34. Comparison of instruction set architectures
    https://en.wikipedia.org/wi­ki/Comparison_of_instructi­on_set_architectures
  35. How To Start Learning Atari 8 Bit Assembly For Free
    https://forums.atariage.com/to­pic/300732-how-to-start-learning-atari-8-bit-assembly-for-free/
  36. WUDSN (Demo Group)
    https://www.wudsn.com/
  37. Machine Language For Beginners
    https://www.atariarchives.org/mlb/
  38. Assembly language: all about I/O
    https://www.atarimagazines­.com/v3n8/AllAbout_IO.html
  39. Sedmdesátiny assemblerů: lidsky čitelný strojový kód
    https://www.root.cz/clanky/sed­mdesatiny-assembleru-lidsky-citelny-strojovy-kod/
  40. Color names
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Color%20names
  41. ATASCII
    https://en.wikipedia.org/wiki/ATASCII
  42. Put characters in display ram isn't ATASCII?
    https://forums.atariage.com/to­pic/359973-put-characters-in-display-ram-isnt-atascii/
  43. ATASCII And Internal Character Code Values
    https://www.atariarchives­.org/mapping/appendix10.php
  44. Reading ATASCII from the keyboard in assembly
    https://forums.atariage.com/to­pic/361733-reading-atascii-from-the-keyboard-in-assembly/
  45. Why does the 6502 JSR instruction only increment the return address by 2 bytes?
    https://retrocomputing.stac­kexchange.com/questions/19543/why-does-the-6502-jsr-instruction-only-increment-the-return-address-by-2-bytes
  46. Pushing return address to stack off by 1 byte
    https://forums.atariage.com/to­pic/378206-pushing-return-address-to-stack-off-by-1-byte/
  47. Intel x86 documentation has more pages than the 6502 has transistors
    https://www.righto.com/2013/09/intel-x86-documentation-has-more-pages.html
  48. Clearing a Section of Memory
    http://www.6502.org/source/ge­neral/clearmem.htm
  49. Practical Memory Move Routines by Bruce Clark
    http://www.6502.org/source/ge­neral/memory_move.html
  50. 6502 Assembly Programming Guide
    https://neumont-gamedev.github.io/posts/retrogamedev-6502-guide/
  51. Off-by-one error
    https://en.wikipedia.org/wiki/Off-by-one_error
  52. 6502 cycle times
    https://www.nesdev.org/wi­ki/6502_cycle_times
  53. Atari TIA
    http://www.atarihq.com/danb/tia.shtml
  54. TIA Playfield
    http://www.atarihq.com/dan­b/TIA/Playfield.shtml
  55. Atari Inc.:
    ANTIC C012296 (NTSC) Revision D
    Atari Incorporated, Sunnyvale CA, 1982
  56. Atari Inc.:
    GTIA C014805 (NTSC) Revision A
    Atari Incorporated, Sunnyvale CA, 1982
  57. Atari 5200
    http://www.atariage.com/sof­tware_search.html?SystemID=5200
  58. Atari 5200 Hardware and Accessories
    http://www.atariage.com/5200/ar­chives/hardware.html
  59. Atari 5200 Screenshots
    http://www.atariage.com/sys­tem_items.html?SystemID=5200&I­temTypeID=SCREENSHOT
  60. History of video game consoles (second generation): Wikipedia
    http://en.wikipedia.org/wi­ki/History_of_video_game_con­soles_(second_generation)
  61. Atari 5200: Wikipedia
    http://en.wikipedia.org/wi­ki/Atari_5200
  62. Player-Missile Graphics
    https://www.atariarchives­.org/agagd/chapter5.php
  63. Sprite (computer graphics)
    https://en.wikipedia.org/wi­ki/Sprite_(computer_graphic­s)
  64. Atari Graphics Demonstrations by Underground Software, 1985 | Atari 8 bit Demo
    https://www.youtube.com/wat­ch?v=h7N9EYSyCkw
  65. Atari 8-bit Display List Interrupts: A Complete(ish) Tutorial
    https://playermissile.com/dli_tu­torial/
  66. Atari Assembler Editor manual
    https://atariwiki.org/wiki/at­tach/Atari%20Assembler%20E­ditor/ATARI%20Assembler%20E­ditor%20User-s%20Manual-OCR.pdf
  67. Atari 8-bit Fine Scrolling: A Complete(ish) Tutorial
    https://playermissile.com/scro­lling_tutorial/index.html
  68. Atari Fine Scrolling
    https://www.atarimagazines­.com/compute/issue67/338_1_A­tari_Fine_Scrolling.php
  69. CTIA / GTIA Pinout Diagram
    https://user.xmission.com/~tre­vin/atari/gtia_pinout.html
  70. GTIA Modes
    https://page6.org/archive/is­sue02/page10.htm
  71. 56 graphic modes
    https://www.atari800×l.eu/docs/kb/kb-hardware-0005-atari-8bit-56-graphic-modes.html
  72. UNLOCKING THE 56 GRAPHIC MODES
    https://www.atarimagazines­.com/v3n5/allmodes.html
  73. GTIA Modes 9, 10 & 11 + ANTIC data and color clocks
    https://forums.atariage.com/to­pic/366256-gtia-modes-9–10–11-antic-data-and-color-clocks/
  74. ANTIC, GTIA and timing info
    https://atarimax.com/jindrou­sh.atari.org/atanttim.html
  75. 6.10 Cycle timing
    https://github.com/AnimaIn­Corpore/A8E/blob/main/AHRM/6­.%20CTIA-GTIA/10.%20Cycle%20timing.md
  76. Doug Neubauer
    https://en.wikipedia.org/wi­ki/Doug_Neubauer
  77. POKEY
    https://en.wikipedia.org/wiki/POKEY
  78. Inside the Atari 800XL
    https://www.goto10retro.com/p/800×l-inside
  79. Grayscale Project – „Jam Session“ – Chiptune Visualization / Atari SAP
    https://www.youtube.com/watch?v=Qx-AHgvwrHo&list=PL92E73FD91764173B
  80. POKEY MUSIC ( ATARI XL / XE ) =+ MUSIC FROM POLAND += DEMO
    https://www.youtube.com/wat­ch?v=5PswfMjMop4&list=RD5PswfMjMop4&star­t_radio=1
  81. Atari.org
    http://www.atari.org/
  82. Atari POKEY
    http://www.absoluteastrono­my.com/topics/Atari_POKEY
  83. Chiptune
    http://www.absoluteastrono­my.com/topics/Chiptune
  84. ASAP – Another Slight Atari Player
    http://asap.sourceforge.net/
  85. Atari SAP music archive
    http://asma.atari.org/
  86. RASTER Music Tracker (RMT)
    http://raster.infos.cz/ata­ri/rmt/rmt.htm
  87. POKEY explorer
    https://github.com/ivop/pokey-explorer
  88. POKEY C012294 Documentation
    https://7800.8bitdev.org/in­dex.php/POKEY_C012294_Docu­mentation
  89. Pokey Registers
    https://user.xmission.com/~tre­vin/atari/pokey_regs.html
  90. POKEY CO12294
    http://krap.pl/mirrorz/ata­ri/homepage.ntlworld.com/kry­ten_droid/Atari/800XL/ata­ri_hw/pokey.htm
  91. De Re Atari: SOUND
    https://www.atariarchives­.org/dere/chapt07.php#H7_3_5
  92. Paddle (game controller)
    https://en.wikipedia.org/wi­ki/Paddle_(game_controller)
  93. Interfacing Your Atari
    https://www.atariarchives­.org/creativeatari/Interfa­cing_Your_Atari.php
  94. Atari SIO
    https://en.wikipedia.org/wi­ki/Atari_SIO
  95. Atari Chips
    https://atarimax.com/jindrou­sh.atari.org/achip.html
  96. Table 4: Keyboard Code Index, KEYCODE: ATASCII
    https://www.atariarchives­.org/c3ba/kcindex.php
  97. SIO2PC
    http://raster.atariportal­.cz/hw/sio2pc.htm
  98. Using Serial Input/Output
    https://www.atarimagazines­.com/compute/issue64/insig­ht_atari.php
  99. SIO ROUTINES
    https://www.atariarchives­.org/mmm/sio.php
  100. ATARI 8 bit Serial Input/Output (SIO)
    https://allpinouts.org/pi­nouts/connectors/serial/a­tari-8-bit-serial-input-output-sio/
  101. SIOspecs
    https://archive.org/details/SIOspecs
  102. Interview with Joe Decuir
    http://www.atarimuseum.com/ar­ticles/joedecuir.html
  103. USB AND OS/2
    http://www.os2voice.org/VNL/pas­t_issues/VNL1199H/vnewsf5­.htm
  104. Standards and specs: The ins and outs of USB
    http://www.ibm.com/develo­perworks/power/library/pa-spec7.html
  105. USB Class Codes
    http://www.usb.org/develo­pers/defined_class
  106. Universal Serial Bus
    http://en.wikipedia.org/wiki/Usb
  107. SMBus.org
    http://www.smbus.org
  108. SMBus FAQ
    http://www.smbus.org/faq/faq.htm
  109. System Management Bus
    http://en.wikipedia.org/wi­ki/System_Management_Bus
  110. SMBus Specifications
    http://www.smbus.org/specs
  111. SMBus Control Method Interface Specification Version 1.0
    http://www.smbus.org/spec­s/smbus_cmi10.pdf
  112. System Management Bus (SMBus) Specification Version 2.0
    http://www.smbus.org/spec­s/smbus20.pdf
  113. Atari Connection Machine
    http://acm.atariportal.cz/s/con8bit/8bits
  114. Atari Program Recorder
    https://en.wikipedia.org/wi­ki/Atari_Program_Recorder
  115. THE ATARI CASSETTE
    https://www.atariarchives­.org/dere/chaptC.php
  116. Turbo-2000
    https://www.atari-800.cz/turbo-2000
  117. Atari XC12 FSK Decoder
    https://zeninstruments.blog­spot.com/2024/08/atari-xc12-fsk-decoder.html
  118. Clock recovery
    https://en.wikipedia.org/wi­ki/Clock_recovery
  119. Jiří Richter (programátor)
    https://cs.wikipedia.org/wi­ki/Ji%C5%99%C3%AD_Richter_(pro­gram%C3%A1tor)
  120. Spectrum tape interface
    https://sinclair.wiki.zxnet­.co.uk/wiki/Spectrum_tape_in­terface
  121. How Tape Loading Works
    https://lemmings.info/how-tape-loading-works/
Neutrální ikona do widgetu na odběr článků ze seriálů

Zajímá vás toto téma? Chcete se o něm dozvědět víc?

Objednejte si upozornění na nově vydané články do vašeho mailu. Žádný článek vám tak neuteče.


Autor článku

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