Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Makro assembler MAC/65 a debugger DDT v praxi

Дата публикации: 26-08-2026 22:00:10

Navážeme na článek o vývoji pro osmibitové mikropočítače Atari a ukážeme si použití slavného assembleru MAC/65, což po dlouhou dobu byl nejlepší assembler pro mikroprocesory MOS 6502.

Основное содержимое страницы с новостью.

Od Atari Asssembler/Editoru k assembleru MAC/65

Pokud se mluví o MAC/65, je dobré mít na paměti, že s se v praxi jedná jak o editor zdrojového kódu, tak i o assembler, ale současně i o debugger. Způsob ovládání MAC/65 je do značné míry odvozen od minule použitého Atari Assembler Editoru, takže mnohé příkazy budou stejné či alespoň velmi podobné.

Ve skutečnosti je však MAC/65 prakticky po všech stránkách lepší (tedy až na poněkud vyšší cenu, zejména v případě varianty dostupné na cartridge). Za vývojem MAC/65 stála společnost Optimized Systems Software (OSS), se kterou se později setkáme ještě jednou v souvislosti s programovacím jazykem nazvaným Action! (i s oním vykřičníkem na konci).

První verze slavného assembleru MAC/65.

 Obrázek 1: První verze slavného assembleru MAC/65, která je již dostupná na cartridge (ta měla kapacitu 16kB).

Autor: tisnik, podle licence: Rights Managed

Společnost OSS: zaměření na vývoj vývojových nástrojů namísto her

Na chvíli se zastavme u autorů assembleru MAC/65, kterým byla společnost Optimized Systems Software známá pod zkratkou (OSS). Historie této společnosti se začala psát vlastně již se samotným vznikem osmibitových domácích počítačů Atari a souvisí s vývojem (resp. hledáním dodavatele) Atari BASICu. Původně se uvažovalo, že BASIC pro osmibitové mikropočítače Atari dodá Micro-Soft (ano, to je napsáno správně). Ovšem ukázalo se, že Micro-Soft nedokáže svůj Atari Microsoft BASIC „nacpat“ do požadované kapacity ROM. Firma Atari totiž pro BASIC počítala s ROM modulem o kapacitě osmi kilobajtů (ovšem Atari Microsoft BASIC byl nakonec vydán, a to dokonce ve dvou verzích, jak jsme si již řekli ve článku věnovaném historii tohoto programovacího jazyka). Resp. abych byl přesnější – Micro-Soft byla schopna dodat BASIC, který se vejde do osmi kilobajtů, ovšem ten by neobsahoval příkazy pro ovládání grafiky a zvuků. Ty ovšem společnost Atari vyžadovala, aby uživatelé mohli snadno využívat možností nabízených čipy ANTIC a GTIA, které byly (právem) považovány za největší zbraň osmibitových mikropočítačů Atari.

Poznámka: všichni se ostatně mohou sami přesvědčit na příkladu konkurenčních počítačů Commodore C64, jak Microsoft BASIC vypadá a co nabízí resp. naopak nenabízí. Dovolím si s odstupem času tvrdit, že BASIC na C64 byl vlastně nejhorší standardní součástí tohoto po hardwarové stránce dobře vybaveného počítače.

Vraťme se však k OSS. Za vznikem této společnosti stáli Bill Wilkinson, Mike Peters, Paul Laughton a Kathleen O'Brien, přičemž třetí jmenovaný vydal Atari BASIC a jeho žena Kathleen pracovala mj. i na FP rutinách operačního systému Atari (k nim se ještě v tomto seriálu vrátíme). Původní Atari BASIC a taktéž první verze DOSu byla odkoupena od společnosti Shepardson Microsystems, která ukončila svoji existenci právě v roce 1981 a kde původně zakladatelé OSS pracovali. V dalších letech se OSS věnovala jak rozšiřování možností původních produktů (řada DOS, řada BASICů), tak i dalším projektům, mj. i jazyku Action! a právě assembleru MAC/65.

Příkladem produktu vydaného společností OSS je OS/A+, tedy dosový systém založený na systému menu. Později vznikl DOS XL, který podporoval diskety s dvojnásobnou hustotou a kromě menu se ovládal i příkazovou řádkou nazývanou CP neboli command processor. OSS vyvinula i takzvanou supercartridge s kapacitou 16kB (a na této cartridge byla dodávána mj. i druhá verze assembleru MAC/65).

Jen pro zajímavost si uveďme příklad, jak vypadalo menu z DOSu XL:

 C - Copy Files            P - Protect Files
 D - Duplicate Disk        Q - Quit to DOS XL
 E - Erase Files           R - Rename File
 F - Files on Disk         S - Save Binary
 G - Go to Address         T - To Cartridge
 I - Initialize Disk       U - Unprotect Files
 L - Load Binary           X - Xtended Command

Na příkazovém řádku byly v tomto DOSu podporovány interní příkazy, mezi něž patří například D1: (přepnutí disků), DIR (asi není nutné vysvětlovat), END, ERA atd. A většinou byly k dispozici i příkazy externí: COPY, DUPDSK, VERIFY atd.

Z portfolia dobových produktů nabízených společností OSS stojí za zmínku především:

  • Interpretry BASICu rozšiřující a zrychlující původní Atari BASIC: BASIC A+, BASIC XL a BASIC XE
  • Assemblery a debuggery: EASMD (Edit/ASseMble/Debug) vydaný již v roce 1981, MAC/65, BUG/65
  • Další programovací jazyky či jejich překladače: Action!, C/65, Tiny C interpretr subsetu jazyka C, Personal Pascal pro Atari ST 1987

Poznámka: na tomto místě je vhodné doplnit, že v případě programovacího jazyka C se však nejednalo o plnohodnotné céčko odpovídající standardu. Jak C/65, tak i pozdější Tiny C (interpret) obsahovaly jen podmnožinu vlastností klasického céčka. Navíc C/65 při překladu generoval kód v assembleru, který se musel v další fázi překládat právě pomocí MAC/65. To je sice z pohledu architektury dobrá myšlenka (ostatně mnohokrát implementovaná dalšími překladači céčka), ovšem „malé“ počítače Atari nebyly na tento koncept dostatečně výkonné.

Dobová reklama společnosti OSS.

 Obrázek 2: Dobová reklama na některé vývojové nástroje dodávané společností OSS.

Autor: OSS corp., podle licence: Rights Managed

MAC/65: jeden z nejúspěšnějších projektů společnosti OSS

První verze assembleru MAC/65, za jejímž vývojem stojí Stephen D. Lawrow, začala být prodávána již v roce 1982, tedy zhruba o rok později, než Atari Assembler/Editor. Typické je, že tato verze byla dostupná na disketě, protože se předpokládalo, že tento assembler budou používat profesionálové vybavení disketovou jednotkou, tj. (velmi drahým) záznamovým zařízením. V roce 1984 vyšla druhá verze MAC/65, která se stala mnohem známější. Tato verze byla dodávána na specializované cartridgi s kapacitou 16kB, což je dvojnásobná kapacita, než jakou počítače Atari oficiálně podporují (konektor pro zapojení cartridge totiž měl vyvedených pouze třináct adresních pinů).

Z tohoto důvodu bylo oněch 16kB rozděleno do dvojice paměťových bank, z nichž každá měla kapacitu osmi kilobajtů a mezi kterými se provádělo automatické přepínání. Mimochodem: taková cartridge se někdy nazývala „supercartridge“ a existovalo jich více typů, které se lišily způsobem přepínání paměťových bank – to je však téma na samostatný článek, který se teprve připravuje.

Druhá verze MAC/65.

 Obrázek 3: Druhá verze MAC/65 dodávaná na cartridge. V praktické části dnešního článku použijeme právě tuto verzi.

Autor: tisnik, podle licence: Rights Managed

Poznámka: mimochodem je zajímavé, že se (podle dobových pramenů) prodalo více kopií assembleru MAC/65, než jazyka Action!. Ještě lépe se však prodával jejich Basic XL (to je ovšem jiný interpret, než slavný Turbo Basic XL).

Interaktivní prostředí assembleru MAC/65

Assembler MAC/65 se ovládal podobným způsobem, jako minule popsaný Atari Assembler/Editor. To znamená, že se příkazy nevybíraly z menu, ale zapisovaly se na obrazovku. MAC/65 byl vybaven i prakticky stejným editorem zdrojového kódu, což ovšem není příliš překvapivé, protože se využívaly systémové rutiny používané Atari BASICem. A i zde se rozlišovalo mezi režimem Edit a Debug; ve skutečnosti byl režim Debug implementován relativně samostatným nástrojem nazvaným DDT, k jehož popisu se dnes ještě vrátíme.

Poznámka: i systém nápovědy zůstal zachován – žádný totiž neexistuje…

Obsah diskety obsahující další pomocné nástroje a ukázky programů pro MAC/65.

Obrázek 4: Obsah diskety obsahující další pomocné nástroje a ukázky programů pro MAC/65.

Autor: tisnik, podle licence: Rights Managed

Dostupné byly následující příkazy:

Příkaz Stručný popis
ASM překlad programu
BLOAD načtení (binárního) bloku paměti
BSAVE uložení (binárního) bloku paměti
BYE návrat do Self Testu
C editace obsahu paměti
D zobrazení obsahu paměti
DDT přepnutí do debuggeru
DEL smazání vybraných programových řádků
DOS návrat do DOSu
ENTER načtení zdrojového kódu (text)
FIND hledání řetězce v paměti
LIST výpis/uložení zdrojového kódu
LOAD načtení tokenizovaného zdrojového kódu
LOMEM určení oblasti paměti, od které bude uložený (tokenizovaný) zdrojový kód
NEW vymazání programu
NUM automatický zápis čísel řádků v editoru
PRINT jako LIST, ovšem bez čísel řádků
REN přečíslování řádků
REP náhrada řetězce za jiný řetězec
SAVE uložení zdrojového textu v tokenizované podobě
SIZE zobrazení adres čtyř paměťových oblastí
TEXT přepnutí do režimu, ve kterém se neprovádí průběžná kontrola syntaxe
Ukázkový program je možné přímo v DOSu zkopírovat na pevný disk (pochopitelně při použití emulátoru).

Obrázek 5: Ukázkový program je možné přímo v DOSu zkopírovat na pevný disk (pochopitelně při použití emulátoru).

Autor: tisnik, podle licence: Rights Managed

Způsob interní reprezentace zdrojových kódů programů

Assembler MAC/65 se od ostatních assemblerů odlišuje tím, že nepracuje se zdrojovými kódy reprezentovanými v čistě textové podobě. Namísto toho je zde využita technologie používaná například většinou (?) interpretrů programovacího jazyka BASIC – v operační paměti jsou uloženy tokeny jednotlivých příkazů (zde spíše instrukcí). Čísla řádků jsou uložena jako šestnáctibitové hodnoty, instrukce jsou uloženy v jediném bajtu, návěští a symboly pak jako indexy do (dynamické) tabulky symbolů.

Uvádí se, že se tímto způsobem může ušetřit 60% až 80% potřebné kapacity paměti (ovšem toto tvrzení, které mimochodem pochází přímo od autorů MAC/65, si ověříme). Ovšem tokenizací se ztrácí informace o přesném naformátování zdrojového kódu, což znamená, že ztratíme například původní odsazení apod. Na druhou stranu je to ovšem poměrně dobrá vlastnost, protože zaručuje, že všechny zdrojové kódy budou mít naprosto stejný formát (to se týká jak odsazení, tak i například mezer v operandech instrukcí atd.).

Poznámka: v průběhu tokenizace se provádí i kontrola syntaxe, což je výhodné. Nemusí se totiž čekat na chyby vypisované příkazem ASM.

V MAC/65 se není nutné příliš starat o formátování zdrojového kódu, protože dochází k jeho naformátování při zpětném převodu na text.

Obrázek 6: V MAC/65 se není nutné příliš starat o formátování zdrojového kódu, protože dochází k jeho naformátování při zpětném převodu na text.

Autor: tisnik, podle licence: Rights Managed

Ve druhé polovině dnešního článku pracujeme s programem, který po svém překladu a spuštění zobrazí sprity a umožňuje jejich pohyb po obrazovce. Tento příklad je relativně dlouhý, takže se pokusíme zjistit, jak se skutečně liší velikost souboru s původním zdrojovým textem od tokenizované varianty:

Způsob uložení Velikost souboru Relativní velikost
zdrojový kód 3262 100%
tokenizovaný kód 2152 66%

A jak jsem získal soubor s tokeny? Je to snadné:

ENTER #H:SPRITES
SAVE #H:TOKENS

Poznámka: ušetření paměti není tak velké, jak tvrdí oficiální materiály, ovšem to může být způsobeno i tím, že náš program obsahuje mnoho definicí symbolů s dlouhými jmény a málo reálného kódu. Jména symbolů jsou totiž zachována a minimálně zpočátku „natahují“ tokenizovaný soubor.

Překlad programu s uložením výsledků na zvolené zařízení

Pokusme se nyní přeložit program, jehož zdrojový kód byl ukázán na screenshotu v předchozí kapitole. Kód je napsán tak, jako bych použili Atari Assembler/Editor:

1000 *=$6000
1001      LDA #42
1002      STA 712
1003      BRK

Pro překlad se použije příkaz ASM. Průběh překladu je ukázán na dalším screenshotu:

Pokus o překlad sice dopadne (zdánlivě) v pořádku, ovšem ve skutečnosti nebyla korektně nastavena počáteční adresa kvůli chybějící mezeře.

Obrázek 7: Pokus o překlad sice dopadne (zdánlivě) v pořádku, ovšem ve skutečnosti nebyla korektně nastavena počáteční adresa kvůli chybějící mezeře.

Autor: tisnik, podle licence: Rights Managed

Z výpisu je zřejmé, že v programu je chyba, protože je překlad proveden od adresy $0000 a nikoli od $0600. Zde máme poněkud štěstí, protože se výsledný strojový kód do paměti nezapsal, protože jinak by výsledkem byl pravděpodobně pád systému (práce s nultou stránkou má svá pravidla).

Když už se bavíme o obsazení operační paměti, je vhodné použít příkaz SIZE, který zobrazí trojici adres: tzv. LOMEM, dále nejvyšší použitou adresu a nejvyšší volnou adresu. Ideální je tedy programy ukládat do adresního prostoru mezi druhou a třetí adresou:

Získání informací o obsazených a volných oblastech paměti.

Obrázek 8: Získání informací o obsazených a volných oblastech paměti.

Autor: tisnik, podle licence: Rights Managed

Z výpisu příkazu SIZE je zřejmé, že programy můžeme ukládat například od adresy $9000. Ta je dostatečně vysoko, ovšem ještě nezasahuje do display listu, video RAM a ROM. V programu navíc opravíme záludnou chybu – specifikace *= musí být posunuta doprava minimálně o dvě mezery (to v Atari Assembler/Editoru vyžadováno nebylo):

Korektně zapsaný program i s uvedením počáteční adresy.

Obrázek 9: Korektně zapsaný program i s uvedením počáteční adresy.

Autor: tisnik, podle licence: Rights Managed

Nyní překlad proběhne bez chyby a dokonce se použijí korektní adresy, jak je to patrné z výpisu:

Nyní již překlad dopadne podle očekávání.

Obrázek 10: Nyní již překlad dopadne podle očekávání.

Autor: tisnik, podle licence: Rights Managed

Ve skutečnosti se ovšem (prozatím) neprovede zápis do paměti – o to musíme assembler explicitně požádat. Nicméně se můžeme pokusit o uložení výsledného binárního souboru na disk. Příkazu ASM se předá jen třetí parametr s názvem výsledného spustitelného souboru:

ASM ,,#H:OUT
DDT: vestavěný debugger

Assembler MAC/65 je doplněn nástrojem nazvaným DDT. Jak již název tohoto nástroje naznačuje, slouží k odstraňování chyb (bugů) z vyvíjených programů. DDT kombinuje možnosti monitoru a debuggeru. V DDT je možné prohlížet obsah vybraného bloku operační paměti, modifikovat obsah operační paměti, vyhledat bajt s určitou hodnotou (hledání místa pro nastavení většího množství životů ve hrách apod.), ale zejména spouštět laděný program popř. ho krokovat. Po překladu programu se do nástroje DDT přepneme jednoduše – zadáním příkazu DDT. Prostředí tohoto programu vypadá následovně:

Zajímavé - na adrese $9000 se nachází pouze samé nuly.

Obrázek 11: Zajímavé - na adrese $9000 se nachází pouze samé nuly.

Autor: tisnik, podle licence: Rights Managed

Obrazovka DDT (mimochodem – se zkráceným display listem) je rozdělena do čtyř oblastí. V horní oblasti se zobrazuje výsek operační paměti a typicky zde můžeme vidět výsledek zpětného překladu (disassembler) dané oblasti. Pod touto oblastí se nachází dva řádky se zobrazením adres breakpointů a taktéž s obsahem příznakového registru. Třetí oblast obsahuje výpis všech ostatních registrů mikroprocesoru: čítače instrukcí PC, akumulátoru A, index registrů X a Y a taktéž ukazatele na vrchol zásobníku S. Vedle této oblasti je „schován“ příkazový řádek.

Poznámka: co ovšem zobrazené není je způsob ovládání tohoto programu:

Příkaz Stručný popis
B nastavení nebo vymazání breakpointu
D zápis bajtu/bajtů do paměti
E výpis paměti (disassembler)
G skok na zadanou adresu
I spuštění programu se zobrazením průběhu (nutné vidět!)
M přesun bloku paměti
Q ukončení DDT a návrat do MAC/65
R modifikace vybraného registru
S vyhledávání v paměti
   
START odpovídá příkazu G
SELECT přepnutí na obrazovku programu
OPTION jeden krok při ladění/krokování

Poznámka: na první pohled sice může DDT vypadat primitivně, ale jedná se o velmi dobře ovladatelný debugger. Jeden z důvodů, proč se šetří místem na obrazovce, je možnost přepnutí na obrazovku aplikace klávesou SELECT. Asi si dokážete představit, že to znamená mj. i nastavení jiného display listu, nastavení DMA, povolení/zákaz spritů atd., tedy nikoli zcela triviální operace.

Překlad programu s uložením výsledků do zvolené oblasti operační paměti

Do příkazového řádku programu DDT se nyní pokusíme zapsat příkaz E 9000, což znamená prohlížení paměti (examine) od zvolené hexadecimální adresy, tedy v tomto případě od adresy $9000. Výsledek jsme již viděli a nebude příliš uspokojivý, protože na této adrese jsou uloženy samé nuly (to je – nikoli náhodou – kód instrukce BRK, což je velmi užitečné, lepší než například NOP):

Zajímavé - na adrese $9000 se nachází pouze samé nuly.

Obrázek 11: Zajímavé - na adrese $9000 se nachází pouze samé nuly.

Autor: tisnik, podle licence: Rights Managed

Assembler MAC/65 totiž sice provádí překlady, ale jen v případě, kdy se výsledky (binární soubor) ukládají na nějaké záznamové zařízení. Pokud se překlad provádí bez uvedení zařízení/cesty k výslednému souboru, provede se překlad bez zápisu. Ovšem přepínačem .OPT OBJ můžeme MAC/65 „donutit“ k zápisu výsledku do RAM, konkrétně na adresu určenou pomocí *=:

Vynucení překladu se zápisem výsledného strojového kódu do operační paměti.

 Obrázek 12: Vynucení překladu se zápisem výsledného strojového kódu do operační paměti.

Autor: tisnik, podle licence: Rights Managed

Samotný překlad sice proběhne (zdánlivě) stejně, jako tomu bylo v předchozí kapitole, ovšem výsledný strojový kód se skutečně uloží od zvolené adresy $9000:

Překlad je proveden s uložením od adresy $9000.

Obrázek 13: Překlad je proveden s uložením od adresy $9000.

Autor: tisnik, podle licence: Rights Managed

Poznámka: tímto způsobem se MAC/65 brání vlastnímu přepsaní v případě, že se překládají programy využívající stejný adresní prostor, jako MAC/65 nebo DOS.

Spuštění programu v DDT

Vzhledem k tomu, že strojový kód našeho programu byl skutečně uložen od adresy $9000, můžeme se pokusit o jeho spuštění v DDT. Napíšeme tedy příkaz:

DDT

V nástroji DDT použijeme příkaz:

E 9000

Nyní by obrazovka měla vypadat přesně takto:

Nyní je program skutečně uložen od adresy $9000.

Obrázek 14: Nyní je program skutečně uložen od adresy $9000 a je tak viditelný i v DDT.

Autor: tisnik, podle licence: Rights Managed

Nyní je již možné program spustit příkazem:

G 9000

V horní polovině obrazovky dojde k posunu na řádek s instrukcí BRK, ovšem zdánlivě se nic dalšího nestalo – jak to, že nevidíme barevný okraj obrazovky? Přesně to totiž tato aplikace provádí. Je tomu tak z toho důvodu, že si DDT „hlídá“ svoji obrazovku, aby ji nepoškodil například kód hry provádějící překreslení atd. Musíme stisknout klávesu SELECT, která vrátí zobrazení na obrazovku laděné aplikace. A tam je již vše v pořádku:

Výsledek činnosti programu - byl změněn okraj obrazovky.

Obrázek 15: Výsledek činnosti programu - byl změněn okraj obrazovky.

Autor: tisnik, podle licence: Rights Managed

Poznámka: DDT je tedy poměrně sofistikovaným programem určeným i pro ladění her a dalších grafických programů. V porovnání s debug v DOSu (který je tak v tomto ohledu jasně vyhrává… a to je debug.exe cca 10× větší.

Krokování programu v DDT

Při ladění aplikací a zejména aplikací psaných v assembleru, se mnohdy nevyhneme nutnosti krokování programu, tj. provádění jednotlivých instrukcí po stisku určité klávesy. Debugger by v takovém případě měl zobrazit aktuální obsah všech registrů a měl by umožnit i další operace, zejména prohlížení obsahu paměti, vyhledávání v paměti, modifikaci paměti atd. (a když mluvíme o paměti – sem na osmibitových Atari spadají i řídicí registry ANTIC a GTIA, které se „tváří“ jako paměťové oblasti). Krokování je podporováno i aplikací DDT. K tomuto účelu se používá klávesa SELECT. Podívejme se tedy, jak krokování vypadá v praxi:

Krokování v DDT.

 Obrázek 16: Krokování v DDT.

Autor: tisnik, podle licence: Rights Managed

Zajímavé je, že při krokování nemá DDT prostor na plnou obnovu své obrazovky a proto můžeme vidět vliv zápisu do paměťové oblasti 712 (což je stínový registr čipu GTIA):

Krokování v DDT.

Obrázek 17: Krokování v DDT.

Autor: tisnik, podle licence: Rights Managed

Poznámka: mikroprocesor MOS 6502 nemá přímou podporu pro nastavení breakpointů ani pro krokování a proto je nutné používat různé triky. Ty většinou spočívají v tom, že se další instrukce (na chvíli) přepíše instrukcí BRK. Mikroprocesor v takovém případě provede skok na obsluhu BRK, kterou plně ovládá debugger, který zobrazí obsah pracovních registrů a obnoví původní instrukci (jejíž kód si uložil do své oblasti paměti).

Vytvoření spustitelného programu

Assembler MAC/65 dokáže vyprodukovat dva typy souborů se strojovým kódem:

  1. Pouze čistý strojový kód bez dalších hlaviček a struktur. Ukládá se příkazem BSAVE.
  2. Spustitelný program, tj. strojový kód s přidáním informací o segmentu EXEHDR.

Nás bude zajímat především způsob vytvoření spustitelných souborů. Postup je v tomto případě jednoduchý, protože takový soubor je vytvořen přímo příkazem ASM. V emulátoru tedy můžeme vyzkoušet:

ENTER #H:PRG2
LIST
ASM ,,#H:PRG2.OBJ

Výsledkem bude soubor PRG2.OBJ, jehož obsah je následující:

$ od -tx1 PRG2.OBJ
 
0000000 ff ff 00 90 05 90 a9 2a 8d c8 02 00
0000014

Dekódování uložených informací jsme si již ukázali minule, takže jen v krátkosti:

Offset Hodnoty bajtů Stručný popis
00–01 ff ff označení segmentu EXEHDR, jedná se tedy o spustitelný soubor
02–03 00 90 startovní adresa je rovna $9000 (odpovídá adrese nastavené přes *=)
04–05 05 90 koncová adresa je rovna $9005
06–07 a9 2a instrukce LDA #$2a (původně LDA #42)
08–10 8d c8 02 instrukce STA $02c8 (původně STA #712)
11 00 instrukce BRK
Odkud získal MAC/65 své jméno?

Znak „M“ v názvu MAC/65 znamená macro, protože makra jsou důležitou a nedílnou součástí jak tohoto assembleru, tak i mnoha dalších (moderních) assemblerů. Jsou však makra skutečně tak důležitá? Mnoho vysokoúrovňových mainstreamových jazyků (vlastně většina mainstreamových jazyků) přece makra vůbec nepodporuje. Ovšem zde je háček – jedná se totiž o vysokoúrovňové jazyky s možností definice komplikovaných datových struktur, s nativní podporou funkcí (kterou dokonce po desetiletích čekání nakonec nabízí i Java) a taktéž s možností využívání strukturovaných řídicích příkazů (podmínky, smyčky, rozeskoky).

Ovšem assemblery patří mezi nízkoúrovňové jazyky, což mj. znamená i to, že překážkou či určitou komplikací při vývoji mohl být i samotný assembler. A právě zde se nabízí minimálně dvě techniky umožňující tvorbu rozsáhlejších aplikací. První technikou je tvorba procedur (nebo, chcete-li, funkcí), druhou technikou pak podpora maker. A právě s makry, konkrétně s makry realizovanými v assembleru MAC/65, se ve stručnosti seznámíme v dalším textu.

Nástroje typu „assembler“ je možné podle principu jejich práce rozdělit do několika kategorií. Do první kategorie spadají assemblery interaktivní, které uživateli nabízejí poměrně komfortní vývojové prostředí, v němž je v případě potřeby možné zapisovat jednotlivé instrukce, spouštět programy, krokovat je, vypisovat obsahy pracovních registrů mikroprocesoru, prohlížet si obsah operační paměti, zásobníku atd. Velkou výhodou byla nezávislost těchto assemblerů na rychlém externím paměťovém médiu, proto jsme se s nimi mohli setkat například na osmibitových domácích mikropočítačích či dnes na různých zařízeních typu IoT (i když zde úlohu pouhého interaktivního assembleru mnohdy přebírá interaktivní debugger).

Druhý typ assemblerů je široce používán dodnes – jedná se vlastně o běžné překladače, kterým se na vstupu předloží zdrojový kód a po překladu se výsledný nativní kód taktéž uloží na paměťové médium (odkud ho lze přímo spustit, což se dělo například v operačním systému DOS, popř. ho ještě před spuštěním slinkovat, což je případ Linuxu a dalších moderních operačních systémů).

Assemblery spadající do druhé kategorie jsou mnohdy vybaveny více či méně sofistikovaným systémem maker; odtud ostatně pochází i jejich často používané označení macroassembler. Makra, která se většinou aplikují na zdrojový kód v první fázi překladu, je možné použít pro různé činnosti, ať již se jedná o zjednodušení zápisu kódu či o jeho zkrácení a zpřehlednění. Existují například sady poměrně složitých maker, která do assembleru přidávají některé konstrukce známé z vyšších programovacích jazyků – rozvětvení, programové smyčky, deklaraci objektů atd.

Poznámka: všechny moderní assemblery používané například na PC (Linux i Windows) podporují práci s makry, a to mnohdy na velmi dobré úrovni (kontrola parametrů maker, srozumitelná chybová hlášení, podpora pro lokální návěští atd.).

Definice jednoduchého makra

Makro bez parametrů je definováno mezi řádky, které začínají specifikací .MACRO a končí řádkem obsahujícím pouze slovo .ENDM. Příkladem může být makro, které na zásobník uloží obsah obou index registrů XY (přitom se ovšem přepíše akumulátor – ostatně si makro můžete sami vylepšit, aby k tomu nedocházelo):

10       .MACRO PUSHXY
20       TXA
30       PHA
40       TYA
50       PHA
60       .ENDM

Expanze makra proběhne na tom řádku, na kterém je jméno makra zmíněno a popř. jsou mu předány parametry:

0202      PUSHXY

Můžeme si to otestovat na uceleném příkladu, který po spuštění naplní oba index registry X a Y hodnotami 1 a 2 a následně jsou tyto hodnoty (makrem) uloženy na zásobník:

10       .MACRO PUSHXY
20       TXA
30       PHA
40       TYA
50       PHA
60       .ENDM
0100     .OPT OBJ
0102     *=  $9000
0200     LDX #1
0201     LDY #2
0202      PUSHXY
0203     BRK

Poznámka: obsah zásobníku lze zkontrolovat přímo v DDT – je na první stránce paměti.

Expanze makra při překladu

Příkaz ASM provede překlad, během něhož pochopitelně dojde i k expanzi maker. To je vidět ve výpisu (listingu) vygenerovaného během překladu. Expandované řádky mají ve druhém sloupci znak M:

                10       .MACRO PUSHXY
                20       TXA
                30       PHA
                40       TYA
                50       PHA
                60       .ENDM
0000            0100     .OPT OBJ
0000            0102     *=  $9000
9000 A201       0200     LDX #1
9002 A002       0201     LDY #2
                0202      PUSHXY
9004 8A        M         TXA
9005 48        M         PHA
9006 98        M         TYA
9007 48        M         PHA
               M         .ENDM
9008 00         0203     BRK
 
ASSEMBLY ERRORS: 0   33988 BYTES FREE
PAGE 2
SYMBOLS
 
 
 
 
%173A PUSHXY
Zdrojový kód programu pro zobrazení spritů i pro posun spritů na obrazovce upravený pro MAC/65

Podobně, jako tomu bylo v článku o Atari Assembler/Editoru, si i dnes vyzkoušíme, jakým způsobem bude proveden překlad poněkud delšího programu. Opět se bude jednat o přepis příkladu, se kterým jsme se seznámili při popisu konfigurace grafického čipu GTIA. Program zobrazí pětici hráčů (players), přesněji řečeno čtyři hráče doplněné o čtveřici střel, ze kterých byl složen pátý hráč. Uživatel následně může s využitím joysticku horizontálně pohybovat prvním hráčem. Aby byl pohyb dostatečně pomalý (a viditelný pro člověka), je synchronizován s hodinami počítače.

Ve skutečnosti jsem ovšem příklad znovu nepřepisoval, ale použil jsem zdrojový kód upravený pro Atari Assembler/Editor. Ten je možné do MAC/65 načíst příkazem ENTER #zařízení:jméno_souboru, tedy například ENTER #H:SPRITES.ASM (v emulátoru). Po načtení a tokenizaci (obě operace mimochodem proběhly bez chyby) bylo nutné upravit pouze první řádek tak, aby mezi číslem řádku a znakem hvězdičky byly dvě mezery. Zbytek zdrojového kódu je plně kompatibilní s MAC/65:

0100  *=$0600
1000 GTIA=$D000      CTIA/GTIA AREA
1001 ; PLAYERS HORIZONTAL POSITIONS
1002 HPOSP0 = GTIA + $00
1003 HPOSP1 = GTIA + $01
1004 HPOSP2 = GTIA + $02
1005 HPOSP3 = GTIA + $03
1010 ; MISSILES HORIZONTAL POSITIONS
1011 HPOSM0 = GTIA + $04
1012 HPOSM1 = GTIA + $05
1013 HPOSM2 = GTIA + $06
1014 HPOSM3 = GTIA + $07
1020 ; COLOR REGISTERS
1021 PCOLR0 = $02C0
1022 PCOLR1 = $02C1
1023 PCOLR2 = $02C2
1024 PCOLR3 = $02C3
1025 COLOR3 = $02C7
1030 ; PLAYER SHAPES
1031 GRAFP0 = GTIA + $0D
1032 GRAFP1 = GTIA + $0E
1033 GRAFP2 = GTIA + $0F
1034 GRAFP3 = GTIA + $10
1040 ; GTIA CONTROLS
1041 GRACTL = GTIA + $1D
1042 GPRIOR = $026F   SHADOW REGISTER
1050 ; ANTIC REGISTERS
1051 ANTIC = $D400
1052 PMBASE = ANTIC + $07
1060 ; OTHER REGISTERS
1061 SDMCTL = $022F   SAVE DMCTL
1062 STICK0 = $0278   JOYSTICK 0
1063 RTCLOK = $12     REAL TIME CLOCK
1100 ; PAGE COLORS
1101 HUEGREY        = 0
1102 HUEGOLD        = 1
1103 HUEGOLDORANGE  = 2
1104 HUEREDORANGE   = 3
1105 HUEORANGE      = 4
1106 HUEMAGENTA     = 5
1107 HUEPURPLE      = 6
1108 HUEBLUE        = 7
1109 HUEBLUE2       = 8
1110 HUECYAN        = 9
1111 HUEBLUEGREEN   = 10
1112 HUEBLUEGREEN2  = 11
1113 HUEGREEN       = 12
1114 HUEYELLOWGREEN = 13
1115 HUEYELLOW      = 14
1116 HUEYELLOWRED   = 15
1200 ; PMG AREA
1201 PLAYER0OFFSET = 512
1202 PLAYER1OFFSET = PLAYER0OFFSET+128
1203 PLAYER2OFFSET = PLAYER1OFFSET+128
1204 PLAYER3OFFSET = PLAYER2OFFSET+128   LIST
1205 MISSILESOFFSET = 384
2000  .PAGE MAIN
2001      LDA #80
2002      STA HPOSP0
2003      LDA #95
2004      STA HPOSP1
2005      LDA #110
2006      STA HPOSP2
2007      LDA #125
2008      STA HPOSP3
2009      LDA #146
2010      STA HPOSM0
2011      LDA #144
2012      STA HPOSM1
2013      LDA #142
2014      STA HPOSM2
2015      LDA #140
2016      STA HPOSM3
2020 ; PLAYER COLORS
2021      LDA #HUEGREEN * 16 + 12
2022      STA PCOLR0
2023      LDA #HUEYELLOW * 16 + 12
2024      STA PCOLR1
2025      LDA #HUEMAGENTA * 16 + 12
2026      STA PCOLR2
2027      LDA #HUECYAN * 16 + 12
2028      STA PCOLR3
2029      LDA #HUEYELLOWRED * 16 + 12
2030      STA COLOR3
2040 ; SHAPES + DMA
2041      LDA #$FF
2042      STA GRAFP0
2043      STA GRAFP1
2044      STA GRAFP2
2045      STA GRAFP3
2046      LDA #3
2047      STA GRACTL
2048      LDA #16
2049      STA GPRIOR
2050      LDA #46
2051      STA SDMCTL
2060 ; PLAYER BITMAPS
2061 ADDR = 152*256
2062      LDA #152        PAGE
2063      STA PMBASE
2100      LDX #8
2101 NEXT LDA SPRITE-1,X
2102      STA ADDR+PLAYER0OFFSET+50,X
2103      STA ADDR+PLAYER1OFFSET+50,X
2104      STA ADDR+PLAYER2OFFSET+50,X
2105      STA ADDR+PLAYER3OFFSET+50,X
2106      STA ADDR+MISSILESOFFSET+50,X
2107      DEX
2108      BNE NEXT
3000  .PAGE MAIN LOOP
3001      LDX #80
3002 LOOP TXA
3003      JSR WAITWSYNC
3004      JSR WAITWSYNC
3005      TAX
3006      LDA STICK0
3007      CMP #11        TO THE LEFT?
3008      BNE NOTL
3009      DEX            MOVE PLAYER
3010 NOTL CMP #7         TO THE RIGH?
3011      BNE NOTR
3012      INX            MOVE PLAYER
3013 NOTR STX HPOSP0     REAL MOVE
3014      JMP LOOP       AND AGAIN
4000  .PAGE WSYNC
4001 WAITWSYNC
4002      LDX RTCLOK+2   WAIT FOR CLK
4003 WT   CPX RTCLOK+2   SAME VALUE?
4004      BEQ WT
4005      RTS
5000 SPRITE .BYTE 24,60,126,219,255,36,90,165
Překlad programu, jeho spuštění v DDT a otestování funkcionality

Program přeložíme běžným způsobem:

ASM
Zdrojový kód, který se bude překládat a spouštět.

 Obrázek 18: Zdrojový kód, který se bude překládat a spouštět.

Autor: tisnik, podle licence: Rights Managed

Následně přejdeme do DDT a příkazem:

G 0600

program spustíme.

Prozkoumání obsahu paměti, na které leží začátek našeho programu.

 Obrázek 19: Prozkoumání obsahu paměti, na které leží začátek našeho programu.

Autor: tisnik, podle licence: Rights Managed

Díky tomu, že se hlavní smyčka programu neustále opakuje, nemá DDT možnost obnovit svoji obrazovku. Program tedy poběží na s původní obrazovkou (standardní display list atd.):

Po spuštění příkazem G by měla obrazovka vypadat následovně (textový obsah se může lišit, ovšem sprity by měly být viditelné).

 Obrázek 20: Po spuštění příkazem G by měla obrazovka vypadat následovně (textový obsah se může lišit, ovšem sprity by měly být viditelné).

Autor: tisnik, podle licence: Rights Managed

A pochopitelně bude možné prvním hráčem horizontálně posunovat s využitím joysticku:

Posun prvního hráče do pravé části obrazovky s využitím joysticku.

 Obrázek 21: Posun prvního hráče do pravé části obrazovky s využitím joysticku.

Autor: tisnik, podle licence: Rights Managed

Ukončení programu zajistí (bezpečný!) RESET.

Načtení zdrojového kódu a jeho překlad s výpisem listingu do jiného souboru.

 Obrázek 22: Načtení zdrojového kódu a jeho překlad s výpisem listingu do jiného souboru.

Autor: tisnik, podle licence: Rights Managed

Uložení v tokenizovaném formátu.

 Obrázek 23: Uložení zdrojového kódu v tokenizovaném formátu.

Autor: tisnik, podle licence: Rights Managed

Kontrolní výpis (listing) vygenerovaný assemblerem MAC/65

Pro úplnost se ještě podívejme na kontrolní výpis (listing), který byl vygenerován assemblerem MAC/65 v průběhu překladu programu. Formát listingu se liší od výsledku vyprodukovaného Atari Assembler/Editorem. Navíc byl na konec výpisu přidán seznam všech symbolů, které byly ve zdrojovém textu definovány a byla jim přiřazena nějaká (vypočtená) hodnota:

PAGE 1
 
 
 
 
0000            0100     *=  $0600
    =D000       1000 GTIA =  $D000   CTIA/GTIA AREA
                1001 ; PLAYERS HORIZONTAL POSITIONS
    =D000       1002 HPOSP0 = GTIA+$00
    =D001       1003 HPOSP1 = GTIA+$01
    =D002       1004 HPOSP2 = GTIA+$02
    =D003       1005 HPOSP3 = GTIA+$03
                1010 ; MISSILES HORIZONTAL POSITIONS
    =D004       1011 HPOSM0 = GTIA+$04
    =D005       1012 HPOSM1 = GTIA+$05
    =D006       1013 HPOSM2 = GTIA+$06
    =D007       1014 HPOSM3 = GTIA+$07
                1020 ; COLOR REGISTERS
    =02C0       1021 PCOLR0 = $02C0
    =02C1       1022 PCOLR1 = $02C1
    =02C2       1023 PCOLR2 = $02C2
    =02C3       1024 PCOLR3 = $02C3
    =02C7       1025 COLOR3 = $02C7
                1030 ; PLAYER SHAPES
    =D00D       1031 GRAFP0 = GTIA+$0D
    =D00E       1032 GRAFP1 = GTIA+$0E
    =D00F       1033 GRAFP2 = GTIA+$0F
    =D010       1034 GRAFP3 = GTIA+$10
                1040 ; GTIA CONTROLS
    =D01D       1041 GRACTL = GTIA+$1D
    =026F       1042 GPRIOR = $026F  SHADOW REGISTER
                1050 ; ANTIC REGISTERS
    =D400       1051 ANTIC = $D400
    =D407       1052 PMBASE = ANTIC+$07
                1060 ; OTHER REGISTERS
    =022F       1061 SDMCTL = $022F  SAVE DMCTL
    =0278       1062 STICK0 = $0278  JOYSTICK 0
    =0012       1063 RTCLOK = $12    REAL TIME CLOCK
                1100 ; PAGE COLORS
    =0000       1101 HUEGREY = 0
    =0001       1102 HUEGOLD = 1
    =0002       1103 HUEGOLDORANGE = 2
    =0003       1104 HUEREDORANGE = 3
    =0004       1105 HUEORANGE = 4
    =0005       1106 HUEMAGENTA = 5
    =0006       1107 HUEPURPLE = 6
    =0007       1108 HUEBLUE = 7
    =0008       1109 HUEBLUE2 = 8
    =0009       1110 HUECYAN = 9
    =000A       1111 HUEBLUEGREEN = 10
    =000B       1112 HUEBLUEGREEN2 = 11
    =000C       1113 HUEGREEN = 12
    =000D       1114 HUEYELLOWGREEN = 13
    =000E       1115 HUEYELLOW = 14
    =000F       1116 HUEYELLOWRED = 15
                1200 ; PMG AREA
    =0200       1201 PLAYER0OFFSET = 512
    =0280       1202 PLAYER1OFFSET = PLAYER0OFFSET+128
    =0300       1203 PLAYER2OFFSET = PLAYER1OFFSET+128
    =0380       1204 PLAYER3OFFSET = PLAYER2OFFSET+128 LIST
    =0180       1205 MISSILESOFFSET = 384
                2000     .PAGE       MAIN
PAGE 2
 
 
 
 
0600 A950       2001     LDA #80
0602 8D00D0     2002     STA HPOSP0
0605 A95F       2003     LDA #95
0607 8D01D0     2004     STA HPOSP1
060A A96E       2005     LDA #110
060C 8D02D0     2006     STA HPOSP2
060F A97D       2007     LDA #125
0611 8D03D0     2008     STA HPOSP3
0614 A992       2009     LDA #146
0616 8D04D0     2010     STA HPOSM0
0619 A990       2011     LDA #144
061B 8D05D0     2012     STA HPOSM1
061E A98E       2013     LDA #142
0620 8D06D0     2014     STA HPOSM2
0623 A98C       2015     LDA #140
0625 8D07D0     2016     STA HPOSM3
                2020 ; PLAYER COLORS
0628 A9CC       2021     LDA #HUEGREEN*16+12
062A 8DC002     2022     STA PCOLR0
062D A9EC       2023     LDA #HUEYELLOW*16+12
062F 8DC102     2024     STA PCOLR1
0632 A95C       2025     LDA #HUEMAGENTA*16+12
0634 8DC202     2026     STA PCOLR2
0637 A99C       2027     LDA #HUECYAN*16+12
0639 8DC302     2028     STA PCOLR3
063C A9FC       2029     LDA #HUEYELLOWRED*16+12
063E 8DC702     2030     STA COLOR3
                2040 ; SHAPES + DMA
0641 A9FF       2041     LDA #$FF
0643 8D0DD0     2042     STA GRAFP0
0646 8D0ED0     2043     STA GRAFP1
0649 8D0FD0     2044     STA GRAFP2
064C 8D10D0     2045     STA GRAFP3
064F A903       2046     LDA #3
0651 8D1DD0     2047     STA GRACTL
0654 A910       2048     LDA #16
0656 8D6F02     2049     STA GPRIOR
0659 A92E       2050     LDA #46
065B 8D2F02     2051     STA SDMCTL
                2060 ; PLAYER BITMAPS
    =9800       2061 ADDR =  152*256
065E A998       2062     LDA #152    PAGE
0660 8D07D4     2063     STA PMBASE
0663 A208       2100     LDX #8
0665 BD9D06     2101 NEXT LDA SPRITE-1,X
0668 9D329A     2102     STA ADDR+PLAYER0OFFSET+50,X
066B 9DB29A     2103     STA ADDR+PLAYER1OFFSET+50,X
066E 9D329B     2104     STA ADDR+PLAYER2OFFSET+50,X
0671 9DB29B     2105     STA ADDR+PLAYER3OFFSET+50,X
0674 9DB299     2106     STA ADDR+MISSILESOFFSET+50,X
0677 CA         2107     DEX
0678 D0EB       2108     BNE NEXT
                3000     .PAGE       MAIN LOOP
PAGE 3
 
 
 
 
067A A250       3001     LDX #80
067C 8A         3002 LOOP TXA
067D 209706     3003     JSR WAITWSYNC
0680 209706     3004     JSR WAITWSYNC
0683 AA         3005     TAX
0684 AD7802     3006     LDA STICK0
0687 C90B       3007     CMP #11     TO THE LEFT?
0689 D001       3008     BNE NOTL
068B CA         3009     DEX         MOVE PLAYER
068C C907       3010 NOTL CMP #7     TO THE RIGH?
068E D001       3011     BNE NOTR
0690 E8         3012     INX         MOVE PLAYER
0691 8E00D0     3013 NOTR STX HPOSP0 REAL MOVE
0694 4C7C06     3014     JMP LOOP    AND AGAIN
                4000     .PAGE       WSYNC
PAGE 4
 
 
 
 
0697            4001 WAITWSYNC
0697 A614       4002     LDX RTCLOK+2 WAIT FOR CLK
0699 E414       4003 WT  CPX RTCLOK+2 SAME VALUE?
069B F0FC       4004     BEQ WT
069D 60         4005     RTS
069E 183C7EDB   5000 SPRITE .BYTE 24,60,126,219,255,36,90,165
06A2 FF245AA5
 
ASSEMBLY ERRORS: 0   31216 BYTES FREE
PAGE 5
SYMBOLS
 
 
 
 
=9800 ADDR          =D400 ANTIC
=02C7 COLOR3
=026F GPRIOR        =D01D GRACTL        =D00D GRAFP0        =D00E GRAFP1
=D00F GRAFP2        =D010 GRAFP3        =D000 GTIA
=D004 HPOSM0        =D005 HPOSM1        =D006 HPOSM2        =D007 HPOSM3
=D000 HPOSP0        =D001 HPOSP1        =D002 HPOSP2        =D003 HPOSP3
=0007 HUEBLUE       =0008 HUEBLUE2      =000A HUEBLUEGREEN  =000B HUEBLUEGREEN2
=0009 HUECYAN       =0001 HUEGOLD       =0002 HUEGOLDORANGE =000C HUEGREEN
=0000 HUEGREY       =0005 HUEMAGENTA    =0004 HUEORANGE     =0006 HUEPURPLE
=0003 HUEREDORANGE  =000E HUEYELLOW     =000D HUEYELLOWGREEN
=000F HUEYELLOWRED
 067C LOOP
=0180 MISSILESOFFSET
 0665 NEXT           068C NOTL           0691 NOTR
=02C0 PCOLR0        =02C1 PCOLR1        =02C2 PCOLR2        =02C3 PCOLR3
=0200 PLAYER0OFFSET =0280 PLAYER1OFFSET =0300 PLAYER2OFFSET =0380 PLAYER3OFFSET
=D407 PMBASE
=0012 RTCLOK
=022F SDMCTL         069E SPRITE        =0278 STICK0
 0697 WAITWSYNC      0699 WT
Porovnání rychlosti překladu programu v Atari Assembler/Editoru a v MAC/65

V úvodní části dnešního článku jsme si řekli, že jednou z velkých předností assembleru MAC/65 je větší rychlost překladu, především v porovnání s původním Atari Assembler/Editorem, jenž byl nechvalně známý svou pomalostí. Taková tvrzení se opakují v mnoha dobových materiálech, takže nám nezbývá, než je ověřit. Výše uvedený program určený pro ovládání spritu joystickem byl nejprve přeložen v Atari Assembler/Editoru, a to s provedením listingu na obrazovku i se zákazem této operace.

Školení Hacking

Následně byl prakticky naprosto stejný program (liší se jen řádkem s nastavením počáteční adresy) přeložen v assembleru MAC/65, a to opět nejdříve s povolením listingu a podruhé s jeho zákazem (na začátek zdrojového kódu byl přidán řádek .OPT NOLISTING). Změřené časy jsou uvedeny v tabulce pod tímto odstavcem. Z tabulky je naprosto jasné, že MAC/65 je skutečně mnohem rychlejší (zde více než 24×, ale toto je ovlivněno chybou měření času, spíše je rychlost překladu ještě vyšší):

Assembler Listing Bez listingu
Atari Assembler/Editor 33s 24s
MAC/65 14s <1s

Poznámka: listing na obrazovku je skutečně pomalý a většinou ani není nutné ho (neustále) opakovat. Jednou z oblastí, kde se ovšem skutečně hodí ho používat, je náhled na způsob expanze maker.

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_color_1.asm změna barvy pozadí – základní varianta příkladu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color_1.asm
7 background_color_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color_1_list.asm
8 background_color_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color_1.map
       
9 background_color_2.asm změna barvy pozadí – využití předdefinovaných konstant https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color_2.asm
10 background_color_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color_2_list.asm
11 background_color_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/background_color_2.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_computation_1.asm výpočet barvy, varianta bez bitových posunů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation_1.asm
16 color_computation_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation_1_list.asm
17 color_computation_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation_1.map
       
18 color_computation_2.asm výpočet barvy, varianta s bitovými posuny https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation_2.asm
19 color_computation_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation_2_list.asm
20 color_computation_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/color_computation_2.map
       
21 subroutine_1.asm skok do podprogramu bez předávání parametrů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine_1.asm
22 subroutine_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine_1_list.asm
23 subroutine_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine_1.map
       
24 subroutine_2.asm skok do podprogramu s předáním parametru https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine_2.asm
25 subroutine_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine_2_list.asm
26 subroutine_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/subroutine_2.map
       
27 hex_number_1.asm tisk jedné hexadecimální číslice (nekorektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_1.asm
28 hex_number_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_1_list.asm
29 hex_number_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_1.map
       
30 hex_number_2.asm tisk jedné hexadecimální číslice (korektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_2.asm
31 hex_number_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_2_list.asm
32 hex_number_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_2.map
       
33 hex_number_3.asm tisk jedné hexadecimální číslice (korektní varianta po refaktoringu) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_3.asm
34 hex_number_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_3_list.asm
35 hex_number_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_3.map
       
36 hex_number_4.asm tisk jedné hexadecimální číslice, varianta postavená na makrech https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_4.asm
37 hex_number_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_4_list.asm
38 hex_number_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_4.map
       
39 hex_number_5.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_number_5.asm
40 hex_number_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_5_list.asm
41 hex_number_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_5.map
       
42 hex_number_6.asm příprava pro tisk dvouciferné hexadecimální hodnoty https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_6.asm
43 hex_number_6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_6_list.asm
44 hex_number_6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_6.map
       
45 hex_number_7.asm realizace tisku dvouciferné hexadecimální hodnoty https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_7.asm
46 hex_number_7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_7_list.asm
47 hex_number_7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_7.map
       
48 hex_number_8.asm makro pro logický posun doprava o zadaný počet bitů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_8.asm
49 hex_number_8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_8_list.asm
50 hex_number_8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_8.map
       
51 hex_number_9.asm čekání na stisk klávesy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_8.asm
52 hex_number_9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_8_list.asm
53 hex_number_9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/hex_number_8.map
       
54 fill_block_1.asm vyplnění bloku, varianta se dvěma index registry https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_1.asm
55 fill_block_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_1_list.asm
56 fill_block_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_1.map
       
57 fill_block_2.asm vyplnění bloku, nekorektní varianta využívající jeden index registr https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_2.asm
58 fill_block_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_2_list.asm
59 fill_block_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_2.map
       
60 fill_block_3.asm vyplnění bloku, korektní varianta využívající jeden index registr https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_3.asm
61 fill_block_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_3_list.asm
62 fill_block_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_3.map
       
63 fill_block_4.asm vyplnění bloku delšího než 256 bajtů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_4.asm
64 fill_block_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_4_list.asm
65 fill_block_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_4.map
       
66 fill_block_5.asm vyplnění bloku, čítání směrem nahoru https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_5.asm
67 fill_block_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_5_list.asm
68 fill_block_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/fill_block_5.map
       
69 pmg_01.asm inicializace PMG, povolení PMG, nastavení pozice a tvaru prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_01.asm
70 pmg_01_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_01_list.asm
71 pmg_01.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_01.map
       
72 pmg_02.asm nastavení pozice, tvaru a barvy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_02.asm
73 pmg_02_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_02_list.asm
74 pmg_02.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_02.map
       
75 pmg_03.asm vliv zákazu DMA na zobrazení PMG https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_03.asm
76 pmg_03_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_03_list.asm
77 pmg_03.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_03.map
       
78 pmg_04.asm postupná změna horizontální velikosti hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_04.asm
79 pmg_04_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_04_list.asm
80 pmg_04.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_04.map
       
81 pmg_05.asm odlišná bitová maska tvaru hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_05.asm
82 pmg_05_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_05_list.asm
83 pmg_05.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_05.map
       
84 pmg_06.asm inicializace a zobrazení dvou hráčů, kteří se překrývají https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_06.asm
84 pmg_06_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_06_list.asm
86 pmg_06.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_06.map
       
87 pmg_07.asm naivní způsob nastavení bitmapy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_07.asm
88 pmg_07_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_07_list.asm
89 pmg_07.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_07.map
       
90 pmg_08.asm elegantnější způsob nastavení bitmapy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_08.asm
91 pmg_08_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_08_list.asm
92 pmg_08.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_08.map
       
93 pmg_09.asm zobrazení všech čtyř hráčů, změna priority zobrazení https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_09.asm
94 pmg_09_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_09_list.asm
95 pmg_09.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_09.map
       
96 pmg_10.asm nastavení bitmap všech čtyř hráčů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_10.asm
97 pmg_10_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_10_list.asm
98 pmg_10.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_10.map
       
99 pmg_stick_1.asm ovládání prvního hráče joystickem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_1.asm
100 pmg_stick_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_1_list.asm
101 pmg_stick_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_1.map
       
102 pmg_stick_2.asm zobrazení všech čtyř střel https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_2.asm
103 pmg_stick_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_2_list.asm
104 pmg_stick_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_2.map
       
105 pmg_stick_3.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_stick_3.asm
106 pmg_stick_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_3_list.asm
107 pmg_stick_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_3.map
       
108 pmg_stick_4.asm korektní zobrazení pátého hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_4.asm
109 pmg_stick_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_4_list.asm
110 pmg_stick_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_4.map
       
111 pmg_stick_5.asm detekce stisku tlačítka joysticku, změna barvy prvního hráče https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_5.asm
112 pmg_stick_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_5_list.asm
113 pmg_stick_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_5.map
       
114 pmg_11.asm automatický horizontální pohyb prvního hráče, realizace zpožďovací smyčky https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_11.asm
115 pmg_11_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_11_list.asm
116 pmg_11.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_11.map
       
117 pmg_12.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/pmg_12.asm
118 pmg_12_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_12_list.asm
119 pmg_12.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_12.map
       
120 pmg_13.asm vertikální posun spritu směrem dolů (nekorektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_13.asm
121 pmg_13_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_13_list.asm
122 pmg_13.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_13.map
       
123 pmg_14.asm vertikální posun spritu směrem dolů (korektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_14.asm
124 pmg_14_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_14_list.asm
125 pmg_14.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_14.map
       
126 pmg_15.asm vertikální posun spritu směrem nahoru (korektní varianta) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_15.asm
127 pmg_15_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_15_list.asm
128 pmg_15.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_15.map
       
129 pmg_stick_6.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_stick_6.asm
130 pmg_stick_6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_6_list.asm
131 pmg_stick_6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_stick_6.map
       
132 pmg_collision_1.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_collision_1.asm
133 pmg_collision_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_1_list.asm
134 pmg_collision_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_1.map
       
135 pmg_collision_2.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_collision_2.asm
136 pmg_collision_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_2_list.asm
137 pmg_collision_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_2.map
       
138 pmg_collision_3.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_collision_3.asm
139 pmg_collision_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_3_list.asm
140 pmg_collision_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_3.map
       
141 pmg_collision_4.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_collision_4.asm
142 pmg_collision_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_4_list.asm
143 pmg_collision_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/pmg_collision_4.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 antic_1.asm nastavení textového režimu se čtyřmi barvami a 20×12 znaky https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_1.asm
148 antic_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_1_list.asm
149 antic_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_1.map
       
150 antic_2.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/antic_2.asm
151 antic_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_2_list.asm
152 antic_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_2.map
       
153 antic_3.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/antic_3.asm
154 antic_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_3_list.asm
155 antic_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_3.map
       
156 antic_4.asm nastavení standardního textového režimu GR.0, výpis 256 znaků https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_4.asm
157 antic_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_4_list.asm
158 antic_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_4.map
       
159 antic_5.asm volba mezinárodní znakové sady pro textový režim GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_5.asm
160 antic_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_5_list.asm
161 antic_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_5.map
       
162 antic_6.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/antic_6.asm
163 antic_6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_6_list.asm
164 antic_6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_6.map
       
165 antic_7.asm tisk 64 znaků ve čtyřech barvách v režimu GR.1 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_7.asm
166 antic_7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_7_list.asm
167 antic_7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_7.map
       
168 antic_8.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/antic_8.asm
169 antic_8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_8_list.asm
170 antic_8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_8.map
       
171 antic_9.asm nastavení textového režimu GR.12 a výpis znaků na obrazovku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_9.asm
172 antic_9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_9_list.asm
173 antic_9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_9.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_bitmap_1.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_bitmap_1.asm
181 antic_bitmap_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_1_list.asm
182 antic_bitmap_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_1.map
       
183 antic_bitmap_2.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_bitmap_2.asm
184 antic_bitmap_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_2_list.asm
185 antic_bitmap_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_2.map
       
186 antic_bitmap_3.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_bitmap_3.asm
187 antic_bitmap_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_3_list.asm
188 antic_bitmap_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_3.map
       
189 antic_bitmap_4.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_bitmap_4.asm
190 antic_bitmap_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_4_list.asm
191 antic_bitmap_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_4.map
       
192 antic_bitmap_5.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_bitmap_5.asm
193 antic_bitmap_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_5_list.asm
194 antic_bitmap_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_5.map
       
195 antic_bitmap_6.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_bitmap_6.asm
196 antic_bitmap_6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_6_list.asm
197 antic_bitmap_6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_6.map
       
198 antic_bitmap_7.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_bitmap_7.asm
199 antic_bitmap_7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_7_list.asm
200 antic_bitmap_7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_7.map
       
201 antic_bitmap_8.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_bitmap_8.asm
202 antic_bitmap_8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_8_list.asm
203 antic_bitmap_8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_bitmap_8.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_dli_1.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_dli_1.asm
213 antic_dli_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_1_list.asm
214 antic_dli_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_1.map
       
215 antic_dli_2.asm dočasná modifikace barvy pozadí provedená v DLI (dvanáctý textový řádek) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_2.asm
216 antic_dli_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_2_list.asm
217 antic_dli_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_2.map
       
218 antic_dli_3.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_dli_3.asm
219 antic_dli_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_3_list.asm
220 antic_dli_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_3.map
       
221 antic_dli_4.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_dli_4.asm
222 antic_dli_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_4_list.asm
223 antic_dli_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_4.map
       
224 antic_dli_5.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_dli_5.asm
225 antic_dli_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_5_list.asm
226 antic_dli_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_dli_5.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_vbi_1.asm aktivní čekání na dokončení vykreslení snímku (bez VBI) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_1.asm
231 antic_vbi_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_1_list.asm
232 antic_vbi_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_1.map
       
233 antic_vbi_2.asm pohyb PMG realizovaný ve VBI (první způsob nastavení vektoru) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_2.asm
234 antic_vbi_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_2_list.asm
235 antic_vbi_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_2.map
       
235 antic_vbi_3.asm pohyb PMG realizovaný ve VBI (druhý způsob nastavení vektoru) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_3.asm
236 antic_vbi_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_3_list.asm
238 antic_vbi_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_3.map
       
239 antic_vbi_dli_1.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_dli_1.asm
240 antic_vbi_dli_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_1_list.asm
241 antic_vbi_dli_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_1.map
       
242 antic_vbi_dli_2.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_dli_2.asm
243 antic_vbi_dli_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_2_list.asm
244 antic_vbi_dli_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_2.map
       
245 antic_vbi_dli_3.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_dli_3.asm
246 antic_vbi_dli_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_3_list.asm
247 antic_vbi_dli_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_3.map
       
248 antic_vbi_dli_4.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_dli_4.asm
249 antic_vbi_dli_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_4_list.asm
250 antic_vbi_dli_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_vbi_dli_4.map
       
251 antic_scrolling_1.asm příprava pro scrolling: dvojice hodnot ovládaných joystickem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_1.asm
252 antic_scrolling_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_1_list.asm
253 antic_scrolling_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_1.map
       
254 antic_scrolling_2.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_scrolling_2.asm
255 antic_scrolling_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_2_list.asm
256 antic_scrolling_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_2.map
       
257 antic_scrolling_3.asm realizace vertikálního scrollingu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_3.asm
258 antic_scrolling_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_3_list.asm
259 antic_scrolling_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_3.map
       
260 antic_scrolling_4.asm realizace horizontálního i vertikálního scrollingu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_4.asm
261 antic_scrolling_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_4_list.asm
262 antic_scrolling_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_scrolling_4.map
       
263 antic_playfield_1.asm úzké, standardní a rozšířené herní pole https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_playfield_1.asm
264 antic_playfield_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_playfield_1_list.asm
265 antic_playfield_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/antic_playfield_1.map
       
266 gtia_mode_1.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_mode_1.asm
267 gtia_mode_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_1_list.asm
268 gtia_mode_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_1.map
       
269 gtia_mode_2.asm nastavení GTIA režimu 9 s vykreslením vzorku barev https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_2.asm
270 gtia_mode_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_2_list.asm
271 gtia_mode_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_2.map
       
272 gtia_mode_3.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_mode_3.asm
273 gtia_mode_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_3_list.asm
274 gtia_mode_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_3.map
       
275 gtia_mode_4.asm nastavení GTIA režimu 11 s vykreslením vzorku barev https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_4.asm
276 gtia_mode_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_4_list.asm
277 gtia_mode_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_4.map
       
278 gtia_mode_5.asm nastavení GTIA režimu 11 s postupnou změnou intenzity barev https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_5.asm
279 gtia_mode_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_5_list.asm
280 gtia_mode_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_5.map
       
281 gtia_mode_6.asm zobrazení barevné škály v režimu GTIA 10 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_6.asm
282 gtia_mode_6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_6_list.asm
283 gtia_mode_6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_6.map
       
284 gtia_mode_7.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_mode_7.asm
285 gtia_mode_7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_7_list.asm
286 gtia_mode_7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_7.map
       
287 gtia_mode_8.asm   https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_8.asm
288 gtia_mode_8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_8_list.asm
289 gtia_mode_8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_8.map
       
290 gtia_mode_9.asm zobrazení palety se šestnácti stupni šedi https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_9.asm
291 gtia_mode_9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_9_list.asm
292 gtia_mode_9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/gtia_mode_9.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 rainbow_1.asm zobrazení duhy ve standardním textovém režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_1.asm
300 rainbow_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_1_list.asm
301 rainbow_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_1.map
       
302 rainbow_2.asm scrollující duha zobrazená ve standardním textovém režimu GR.0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_2.asm
303 rainbow_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_2_list.asm
304 rainbow_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_2.map
       
305 rainbow_3.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/rainbow_3.asm
306 rainbow_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_3_list.asm
307 rainbow_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_3.map
       
308 rainbow_4.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/rainbow_4.asm
309 rainbow_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_4_list.asm
310 rainbow_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_4.map
       
311 rainbow_5.asm změna barvy v průběhu zobrazení televizních řádků https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_5.asm
312 rainbow_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_5_list.asm
313 rainbow_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_5.map
       
314 rainbow_6.asm změna barvy (duha) na obrazovce bez display listu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_6.asm
315 rainbow_6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_6_list.asm
316 rainbow_6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rainbow_6.map
       
317 sound_1.asm čistý tón komorního A https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_1.asm
318 sound_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_1_list.asm
319 sound_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_1.map
       
320 sound_2.asm tón komorního A modulovaný šumem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_2.asm
321 sound_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_2_list.asm
322 sound_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_2.map
       
323 sound_3.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/sound_3.asm
324 sound_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_3_list.asm
325 sound_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_3.map
       
326 sound_4.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/sound_4.asm
327 sound_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_4_list.asm
328 sound_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_4.map
       
329 sound_5.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/sound_5.asm
330 sound_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_5_list.asm
331 sound_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_5.map
       
332 sound_6.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/sound_6.asm
333 sound_6_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_6_list.asm
334 sound_6.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_6.map
       
335 sound_7.asm ukázka všech kombinací generátorů šumu (jeden kanál) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_7.asm
336 sound_7_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_7_list.asm
337 sound_7.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_7.map
       
338 sound_8.asm ovládání osmibitové děličky zvukového kanálu pomocí joysticku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_8.asm
339 sound_8_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_8_list.asm
340 sound_8.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_8.map
       
341 sound_9.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/sound_9.asm
342 sound_9_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_9_list.asm
343 sound_9.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/sound_9.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 rnd_1.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/rnd_1.asm
363 rnd_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_1_list.asm
364 rnd_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_1.map
       
365 rnd_2.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/rnd_2.asm
366 rnd_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_2_list.asm
367 rnd_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_2.map
       
368 rnd_3.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/rnd_3.asm
369 rnd_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_3_list.asm
370 rnd_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_3.map
       
371 rnd_4.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/rnd_4.asm
372 rnd_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_4_list.asm
373 rnd_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/rnd_4.map
       
374 paddle_1.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/paddle_1.asm
375 paddle_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle_1_list.asm
376 paddle_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle_1.map
       
377 paddle_2.asm ovládání horizontální pozice spritu s využitím paddle https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle_2.asm
378 paddle_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle_2_list.asm
379 paddle_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/paddle_2.map
       
380 key_1.asm zobrazení stavu kláves START, SELECTOPTION https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_1.asm
381 key_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_1_list.asm
382 key_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_1.map
       
383 key_2.asm řízení barvy hráče (spritu) klávesami START, SELECTOPTION https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_2.asm
384 key_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_2_list.asm
385 key_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_2.map
       
386 key_3.asm přečtení kódu naposledy stisknuté klávesy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_3.asm
387 key_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_3_list.asm
388 key_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_3.map
       
389 key_4.asm využití systémové rutiny pro čtení kódu stisknuté klávesy https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_4.asm
390 key_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_4_list.asm
391 key_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_4.map
       
392 key_5.asm detekce stisku klávesy BREAK https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_5.asm
393 key_5_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_5_list.asm
394 key_5.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/key_5.map
       
395 cio_put_char.asm zápis jednoho znaku do kanálu číslo 0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_put_char.asm
396 cio_put_char_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_put_char_list.asm
397 cio_put_char.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_put_char.map
       
398 cio_put_block.asm zápis bloku dat do kanálu číslo 0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_put_block.asm
399 cio_put_block_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_put_block_list.asm
400 cio_put_block.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_put_block.map
       
401 cio_get_block.asm přečtení bloku z kanálu číslo 0 https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_get_block.asm
402 cio_get_block_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_get_block_list.asm
403 cio_get_block.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_get_block.map
       
404 cio_modify_block.asm přečtení bloku, jeho modifikace a zpětný zápis (tisk) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_modify_block.asm
405 cio_modify_block_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_modify_block_list.asm
406 cio_modify_block.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_modify_block.map
       
407 cio_print_1.asm zápis textových dat či binárních dat? první varianta https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_1.asm
408 cio_print_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_1_list.asm
409 cio_print_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_1.map
       
410 cio_print_2.asm zápis textových dat či binárních dat? druhá varianta https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_2.asm
411 cio_print_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_2_list.asm
412 cio_print_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_2.map
       
413 cio_write_to_c.bas zápis několika bajtů na kazetu ve standardním formátu (Atari Basic) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_write_to_c.bas
414 cio_write_to_d.bas zápis několika bajtů do souboru uloženého na disketě (Atari Basic) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_write_to_d.bas
415 cio_write_to_h.bas zápis několika bajtů do souboru uloženého v adresáři namapovaného emulátorem (Atari Basic) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_write_to_h.bas
416 cio_print_to_h.bas zápis textové zprávy do souboru uloženého v adresáři namapovaného emulátorem (Atari Basic) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_print_to_h.bas
417 cio_read_from_h.bas přečtení textové zprávy ze souboru uloženého v adresáři namapovaného emulátorem (Atari Basic) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_read_from_h.bas
418 cio_write_to_h_2.bas zápis jediného bajtu do souboru uloženého v adresáři namapovaného emulátorem (Atari Basic) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_write_to_h_2.bas
419 function_sin_plot_bmp.bas uložení screenshotu do souboru ve formátu BMP (TurboBASIC XL) https://github.com/tisnik/8bit-fame/blob/master/curves/ex­plicit/function_sin_plot_bmp­.bas
       
420 cio_write_byte_1.asm práce se zařízeními přes CIO v assembleru – kostra programu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_1.asm
421 cio_write_byte_1_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_1_list.asm
422 cio_write_byte_1.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_1.map
       
423 cio_write_byte_2.asm práce se zařízeními přes CIO v assembleru – funkční řešení https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_2.asm
424 cio_write_byte_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_2_list.asm
425 cio_write_byte_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_2.map
       
426 cio_read_file.asm přečtení obsahu souboru (jeden textový řádek) přes CIO https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_read_file.asm
427 cio_read_file_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_read_file_list.asm
428 cio_read_file.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_read_file.map
       
429 cio_read_file_2.asm přečtení obsahu celého souboru přes CIO https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_read_file_2.asm
430 cio_read_file_2_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_read_file_2_list.asm
431 cio_read_file_2.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_read_file_2.map
       
432 cio_print_3.asm zápis s kontrolou výsledku operace (korektní provedení) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_3.asm
433 cio_print_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_3_list.asm
434 cio_print_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_3.map
       
435 cio_print_4.asm zápis s kontrolou výsledku operace (provedení vede k chybě) https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_4.asm
436 cio_print_4_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_4_list.asm
437 cio_print_4.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_print_4.map
       
438 cio_write_to_h_3.bas zápis jediného bajtu do souboru uloženého v adresáři namapovaného emulátorem (Atari Basic), realizace přes XIO https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_write_to_h_3.bas
       
439 cio_plot.bas vybarvení pixelu přes CIO operace https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_plot.bas
440 cio_drawto.bas kreslení úseček s využitím XIO https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_drawto.bas
441 cio_fill_1.bas kreslení polygonu s využitím XIO (bez zarážky) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_fill_1.bas
442 cio_fill_2.bas kreslení polygonu s využitím XIO (se zarážkou) https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/cio_fill_2.bas
       
443 cio_write_byte_3.asm kontrola chyby po zápisu bajtu na zvolené zařízení https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_3.asm
444 cio_write_byte_3_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_3_list.asm
445 cio_write_byte_3.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_write_byte_3.map
       
446 cio_null_device.asm definice „nulového“ zařízení, které pro všechny operace hlásí úspěšné provedení https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_null_device.asm
447 cio_null_device_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_null_device_list.asm
448 cio_null_device.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_null_device.map
       
449 cio_null_device_err.asm definice „nulového“ zařízení, které pro všechny operace hlásí chybu https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_null_device_err.asm
450 cio_null_device_err_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_null_device_err_list.asm
451 cio_null_device_err.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_null_device_err.map
       
452 cio_custom_device.asm zařízení, které vypisuje informace o své činnosti na obrazovku https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_custom_device.asm
453 cio_custom_device_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_custom_device_list.asm
454 cio_custom_device.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/cio_custom_device.map
       
455 g_device.asm zařízení pro ovládání spritu/spritů https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/g_device.asm
456 g_device_list.asm „listing“ vygenerovaný assemblerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/g_device_list.asm
457 g_device.map mapa paměti; soubor vytvořený linkerem https://github.com/tisnik/8bit-fame/blob/master/Atari800-ca65/g_device.map
       
458 g_device.bas komplexní demo ukazující možnosti zařízení G (Atari Basic), realizace přes CIO https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/g_device.bas
459 g_device_1.bas demo ukazující možnosti zařízení G (Atari Basic): otevření a zavření https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/g_device_1.bas
460 g_device_2.bas demo ukazující možnosti zařízení G (Atari Basic): práce s více zařízeními https://github.com/tisnik/8bit-fame/blob/master/Atari%20BA­SIC/g_device_2.bas
       
461 PRG1.asm jednoduchý program se třemi instrukcemi (bez komentářů) https://github.com/tisnik/8bit-fame/blob/master/Assembler-editor/PRG1.asm
462 listing1.asm listing vygenerovaný Atari Assembler/Editorem při překladu https://github.com/tisnik/8bit-fame/blob/master/Assembler-editor/listing1.asm
463 PRG2.asm jednoduchý program se třemi instrukcemi (s komentáři) https://github.com/tisnik/8bit-fame/blob/master/Assembler-editor/PRG2.asm
464 listing2.asm listing vygenerovaný Atari Assembler/Editorem při překladu https://github.com/tisnik/8bit-fame/blob/master/Assembler-editor/listing2.asm
465 sprites.asm zobrazení spritů, ovládání horizontální pozice prvního hráče joystickem https://github.com/tisnik/8bit-fame/blob/master/Assembler-editor/sprites.asm
466 listing3.asm listing vygenerovaný Atari Assembler/Editorem při překladu https://github.com/tisnik/8bit-fame/blob/master/Assembler-editor/
       
467 prg1.asm nastavení barvy okraje obrazovky, varianta pro MAC-65 https://github.com/tisnik/8bit-fame/blob/master/MAC-65/prg1.asm
468 prg1_list.asm listing vygenerovaný assemblerem MAC-65 při překladu https://github.com/tisnik/8bit-fame/blob/master/MAC-65/prg1_list.asm
469 prg2.asm nastavení barvy okraje obrazovky, přidání přepínače pro překlad do paměti, varianta pro MAC-65 https://github.com/tisnik/8bit-fame/blob/master/MAC-65/prg2.asm
470 prg2_list.asm listing vygenerovaný assemblerem MAC-65 při překladu https://github.com/tisnik/8bit-fame/blob/master/MAC-65/prg2_list.asm
471 sprites.asm zobrazení spritů, ovládání horizontální pozice prvního hráče joystickem, varianta pro MAC-65 https://github.com/tisnik/8bit-fame/blob/master/MAC-65/sprites.asm
472 sprites_list.asm listing vygenerovaný assemblerem MAC-65 při překladu https://github.com/tisnik/8bit-fame/blob/master/MAC-65/sprites_list.asm
473 macro.asm definice jednoduchého makra bez parametrů https://github.com/tisnik/8bit-fame/blob/master/MAC-65/macro.asm
474 macro_list.asm listing vygenerovaný assemblerem MAC-65 při překladu https://github.com/tisnik/8bit-fame/blob/master/MAC-65/macro_list.asm
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­sue_02/page_10.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/
  122. CIO Reference
    https://atarifoundry.com/doc­s/forge/advanced-topics/cio-reference
  123. The central input-output system in Atari computers
    https://www.atariarchives­.org/alp/chapter_9.php
  124. ATR: chpt.1: Central Input/Output (CIO)
    https://www.atariarchives­.org/cfn/12/02/0010.php
  125. NOTE and POINT
    https://atarifoundry.com/doc­s/forge/advanced-topics/note-point
  126. Customizing the Atari Operating System Device Handlers: Part 1
    https://www.atarimagazines­.com/v8n2/customhandlers.html
  127. Customizing the Atari Operating System Device Handlers: Part II
    https://www.atarimagazines­.com/v8n3/OperatingSystem­Handlers.html
  128. Spectrum tape interface
    https://sinclair.wiki.zxnet­.co.uk/wiki/Spectrum_tape_in­terface
  129. Turbo 2000
    http://wiki.oldcomp.cz/in­dex.php?title=Turbo_2000
  130. Původní manuál k systému Turbo 2000
    http://wiki.oldcomp.cz/ima­ges/6/65/Zak_praha_1987_p2_tur­bo2000.pdf
  131. Mark and space
    https://en.wikipedia.org/wi­ki/Mark_and_space
  132. Obdélníkový průběh
    https://cs.wikipedia.org/wi­ki/Obd%C3%A9ln%C3%ADkov%C3%BD_pr%C5%AF­b%C4%9Bh
  133. All you ever wanted to know about: Atari Cartridges
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Cartridges
  134. Manuál k MAC/65
    https://data.atariwiki.org/DOC/MAC-65_and_BUG-65_Rev._1.1-OSS-OCR.pdf
  135. Manuál k DDT
    https://atariwiki.org/wiki/at­tach/DDT/DDT_1.0_Manual.pdf
  136. MAC/65 na Atari wiki
    https://www.atariwiki.org/wi­ki/Wiki.jsp?page=Mac65
  137. Madass – home page
    https://mads.atari8.info/
  138. Mad-Assembler (GitHub)
    https://github.com/tebe6502/Mad-Assembler

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Klávesnice osmibitových počítačů Atari: až překvapivě komplikovaná problematika0506-07-2026
2Kdo v NATO zbrojí nejrychleji? Zkuste uhádnout státy, které překonaly USA0707-07-2026
3Další funkce podporované čipem POKEY0701-07-2026
4Box64 v0.4.4 Released With New Box64-Configurator App029.302-08-2026
5Příští rok opustí jádro řada starých procesorů a SoC ARM0606-07-2026
6Dojemné gesto Dustina Hoffmana: Lístek pro smutného vozíčkáře7505-07-2026
7Big Bang (Full Version)011.4423-06-2026
8Expozice MěKS Kojetín – Když ještě technika byla v plenkách06.1605-05-2026
9Mesas de Pinball Arcade deTerminator 2, Mars Attack, Top Gun.015.5305-08-2026

Классификация: . Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 15.44. Источник: www.root.cz.