Smekám poklonu za naprosto detailný a hluboký náhled do nitra těhle strojů. V tom mohu jen tiše závidět, jako neprogramátor bych tohle nedal do kupy snad ani ve snu. Tenhle směr mi v životě nějak utekl, kromě pár základních hrátek s BASICem jsem to nikdy dál nedotáhl.
Ale je fajn vidět vlastní fotku jako náhledovku :-)
Nikdy není pozdě začít. Např. POKE 40000,64. A pak to přepsat na
PLA
LDA #64
STA 40000
RTS
Když si to převedete na strojový kód, bude to
104,
169, 64,
141, 64, 156,
96
V Basicu to naládujete do paměti takto:
10 REM TEST
20 FOR i=1536 to 1542
30 READ a:POKE i,a
40 NEXT I
50 END
60 DATA 104,169,64,141,64,156,96
A pak už jen RUN a ?USR(1536)
Při tvorbě tohoto příkladu jsem použil https://www.masswerk.at/6502/6502_instruction_set.html a emulátor https://www.virtualdub.org/altirra.html
Hezké na tom všem je, že počítač nepokazíte, když uděláte nějakou chybu. Tedy - Atari určitě ne a emulátor už vůbec ne.
Jestli vás to zajímá, nebojte se toho a prostě to zkuste. Nebo si jen tak čtěte v https://www.atariarchives.org/mapping/ :-)
17. 3. 2026, 08:37 editováno autorem komentáře
Ono je problém mít na to čas. S malým dítětem vyžadujícím stále pozornost jsem rád, když zvládnu opečovat svoji sbírku a aspoň sem tam dát do kupy nějaký článek. I tak se mi kupí věci, co bych rád udělal a nedostávám se k tomu.
Ale rozhodně bych někdy rád vyzkoušel. Ideálně i se synem, třeba by se mu mohlo programování zalíbit a do budoucna se tomu mohl věnovat, nebo mít koníček, ale na to je zatím přiliš malý.
Kéž bych měl tyto informace tak krásně podané a napsané v roce 1990 když jsem dostal k narozeninám svůj první c64. Po dvou měsících hrani s basicem, jsem se dostal k nějaké samizdatové literatuře assembleru c64, byly to většinou jenom příklady nedobře vysvětlené. To co tam ale nebylo vysvětlené vůbec jaký je rozdíl mezi asemblerem a macroassemblerem
Měl jsem tenkrát přídavnou kartu na které byl jednoduchý monitor (program zobrazující výpis instrukcí, s možností je zapsat) a já netušil kam mám ty návěští nacpat. Kdyby byl tenkrát internet tak bych se to učil asi stokrát rychleji.
Díky za článek
Díky za pěkný seriál. Sice už tomu skoro vůbec nerozumím, ale je to příjemné vzpomínání na mládí s Atari a pokusy s programováním. Ještě spojeno s nedávným nálezem Atari v garáži a následnou radostí Michala T. nad muzeálním kouskem.
Půjčím si jeho poznámku je fajn vidět "vlastní" počítač jako náhledovku :-) I zbytky fixem dopsaných českých kláves :-)
V tom vzpomínání... jako vrchol mých Atari programátorských pokusů si pamatuju na hrátky s obrazovým přerušení (VBI, DLI). To mi přišlo jako bomba věc...
Nebude některý díl i o tomhle? Nebo už byl a uteklo mi to? Nebo to je HW záležitost, v emulátorech asi nepoužitelná.
ano mate pravdu, aby to makro bylo prenositelne, tak by se melo X taky vynulovat. Ale toto je zrovna kod, kterej jsem tady ukazoval na NESu, reset konzole. A tam to vypada nejak takto:
.proc reset
; nastavení stavu CPU
setup_cpu
; nastavení řídicích registrů
ldx #$00
stx PPUCTRL ; nastavení PPUCTRL = 0
stx PPUMASK ; nastavení PPUMASK = 0
stx APUSTATUS ; nastavení APUSTATUS = 0
; čekání na vnitřní inicializaci PPU (dva snímky)
wait_for_frame
wait_for_frame
; vymazání obsahu RAM
clear_ram
; čekání na další snímek
wait_for_frame
Takze je to skaredy, ale X je vynulovane uz na zacatku, protoze wait_for_frame nenici zadny registr (jen cte z pameti).
Omlouvam se, ze muj prispevek neni k programovani, ale aspon je k Atari. Poprosil sem kamarada, at se mrkne po svem Atari. Nasel ho a poslal mi foto, na kterem nas oba zaujalo to, ze 3 klavesy jsou nezazloutle. Kamarad si neni vedom, ze by s temi klavesami nekdo neco specialniho kdy delal. Atari samozrejme nekolik let lezelo schovane nekde v bedne.
foto: https://share.bjsw.cz/index.php/s/ztoHJYLStQUZ1EE
Potkal to uz nekdo? Jina vyrobni sarze tech klaves? Ufoni?
Vyhoda Atari 800 bylo, ze jeho low level architekturu pochopi i 13lete dite jako tenkrat ja, ktere se chtelo posunout od Basicu do assembleru (protoze ten je cool a pisou se v nem hry) a proslo svym prvnim heureka momentem: vzdyt ten assembler nic neumi! Jen scitat nejaky registry a cist a zapisovat do pameti! Kde je grafika? Kde zvuk?
A pak mi bylo vysvetleno, ze tam jsou dalsi cipy, jako Antic a GTIA, sidlici na specialnich adresach v pameti a kdyz tam neco zapisu, stane se neco magickeho. Pro me klicovy moment pochopeni, jak funguje pocitac!
Doted si pamatuju, jak napsat ultra kratkej programek, co zobrazi na pozadi pruhy vsech barev, co Atari umi zobrazit:
AD0BD48D1AD04C0070
spustte od adresy $7000 (posledni instrukce je skok na zacatek, je to loop)
Pekne.
ad 0b d4 lda $D40B 8d 1a d0 sta $D01A 4c 00 70 jmp $7000
Problemom moze byt absolutny skok ktory nuti ulozit kod na pevnu adresu.
Obist sa to da pouzitim relativneho skoku. Kedze 6502 nema nepodmienecny relativny skok, treba pouzit SEC a BCS (Branch if Carry Set) alebo CLC a BCC (Branch if Carry Clear):
ad 0b d4 go lda $D40B 8d 1a d0 sta $D01A 18 clc 90 f7 bcc go
Vsetky Atari farby tam ale nevidno. Viac farieb sa ukaze, ked medzi LDA a STA vlozime ROL (Rotate Left - delenie dvojkou), potom ale treba zmenit adresu relativneho skoku z 90 f7 na 90 f6.
ad 0b d4 go lda $D40B 2a rol 8d 1a d0 sta $D01A 18 clc 90 f6 bcc go
Pomerne komfortne sa s tymto celym da hrat na 8bit workshope https://8bitworkshop.com/v3.12.1/?platform=atari8-800, mozete vychadzat z Hello world, treba si dat pozor na zachovanie cartridge footeru. Kompiluje a spusta to priebezne, breakpoint klikom na riadok, stack a registre procesorov, parada.