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.