Díky, tohle jsem nikdy předtím osobně nezkoušel (níže proč), takže to bylo zajímavé si o tom počíst. Navíc čistě technické výsledky nejsou špatné a byl to zkrátka další pokus, jak na Atari dodat "profi prostředí" ve stylu "edit, compile, run" a dokonce paralelně s možností spouštět jako interpretovaný bajtkód - jestli to dobře chápu. Jestli bude další díl víc o tom, jak se to používalo přímo na Atari, tak asi vyniknou další přednosti jako např. ten rychlý běh interpretovaného programu - pokud je ještě rychlejší než Turbo Basic, tak to je něco.
Co moc nechápu je cílová skupina, čímž se dostávám k tomu, proč jsem to dřív nikdy nezkoušel. Překlad oproti assembleru nic moc (opět dokonce ani ve verzi cross-compile z PC) a přitom uživatelská cena veliká.
Co myslím tou cenou? Zapomíná se totiž na velikou výhodu původního BASIC, včetně těch zavrhovaných čísel řádků: mohli jste zároveň psát kód programu a zároveň to bylo prostředí pro okamžité operace. Cokoli jste si mohli vyzkoušet hned, bez boje s pomalými médii a i uprostřed psaní programu. A hlavně přímo, bez přemýšlení typu "pustím debugger, dám si watch na tuto proměnnou..." apod. Pro začátečníky je to podle mě vlastnost k nezaplacení a hodná názvu BASIC. Bez této vlastnosti by se do programování pustilo mnohem méně lidi.
Tu interaktivitu a možnost přepínání "zkoušení" na "vývoj" a naopak nabízí asi jen BASIC a FORTH. FORTH vlastně (asi?) nikdo neměl odvahu dát do ROM. Přitom by to mohlo být jen pár kilobajtů navíc. Na jednu stranu je to trošku mimozemskej jazyk, na stranu druhou třeba RPN bez problémů používají i lidi mimo IT (účetní atd. kdokoli kdo hodně dělá s čísly).
(ano, chystám článek o fig-FORTHu)
..na clanok o fig-FORTHe sa uz teraz neviem dockat. Doteraz si pamatam, a to uz je "nejaky ten piatok", co som hltal Vas serial o tomto jazyku. Nakoniec ma to nakoplo k napisaniu vlastnej implementacie. Ako vyborny zdroj informacii posluzilo https://www.forth.com/starting-forth/ - hlavne pasaze o rozsirovani kompilera (CREATE, DOES>, IMMEDIATE ...) ...
Ta cílová skupina bude asi dost úzká. Napadá mne někdo, kdo třeba hodně programoval a třeba pořád programuje v Turbo BASICu XL, netouží po programování v C nebo v assembleru a přece jenom by se chtěl posunout ještě trochu dál (poznal jsem jednoho takového ataristu).
To FastBasic, zejména v podobě křížového překladače, splňuje. Komfortní vývojové prostředí (třeba VS Code se zásuvným modulem Atari FastBasic pro zvýraznění syntaxe) je oproti obrazovce 40x25 veliký luxus a výsledný kód je pořád velmi rychlý (pro měřítka programátora v BASICu).
Nedávno jsem si s FB zaexperimentoval a předělal do něj některé staré projekty psané v prostém Atari BASICu. Šlo to nakonec docela dobře.
FB je téměř striktně strukturovaný (má vlastně jen EXIT pro předčasné ukončení bloku, nemá ani CONTINUE), takže čím větší špagety a spoléhání se na čísla řádků (aritmetické skoky) v původním kódu, tím to šlo s konverzí hůře.
15. 10. 2026, 14:35 editováno autorem komentáře
Samostatnou kapitolou všeobecně "bejziků" je ta obrovská množina zbytečných klíčových slov, to je ta choroba, se kterou se dodnes potýkáme i v bash apod.: než aby byly závorkami vymezené bloky kódu a obecná pravidla platná pro každý blok, tak máme if-fi, while-wend, proc-endproc, do-loop, for-next apod. Ještěže není while-elihw a proc-corp :)
Navíc ta touha vnutit jakési strukturované programování narážela na nedostatky v kontrole těchto bloků. Někdy úplně chyběly příkazy na předčasné opuštění smyčky, v jiném dialektu fungovaly jen v některých smyčkách (typicky nešlo opustit for-cyklus), a tím např. zpracování chyb znamenalo typicky jít proti myšlence úhledného strukturovaného kódu...
Navíc kdybyste chtěli chyby zpracovávat nějak detailněji a napsat si na to proceduru, tak úplně pohoříte, protože do procedury nedáte samotné break, continue, next apod. Můj soukromý názor je, že záchranou byl až vynález výjimek...
no na atárku nebyly složené závorky, to je potom těžký i v C atd.
ale asi jo, to "strukturované programování" sice asi bylo myšleno dobře, ale ve všech BASICech naráželo na různé limity. Takže kombinace strukturovaného programování a GOTO.
OT: neřešil výjimky TRAP v BASICu? Popravdě to je už tak dávno, že jen vím, že existuje. Asi to byl "univerzální" catch na všechny chyby ne? (fakt už si nepamatuju)
Přesně tak, v původním Atari BASIC ano - tam byl TRAP, kterým se dalo toto trochu simulovat. Ale to právě nesedí do tehdejších představ o "správném strukturovaném programu" - např. potřeboval zadat číslo řádku (v neočíslovaném zdrojáku asi nadefinovaný label) - a to je přeci příliš podobné goto, ze kterého pojídači koláčů mají osypky :)
Skvělý seriál, ale upozornil bych ještě na někdy neprávem opomíjený Advan Basic. Ten se u nás sice vůbec neprosadil, protože byl pouze na disketě, ale co vím, přímo kompiluje zapsaný program, má spoustu příkazů pro PMG, strukturované programování atd. Dokonce umožňuje i cosi jako inline assembler. Netuším, zda lze ten zkompilovaný program nějak distribuovat samostatně či s runtimem, ale rozhodně šlo o zajímavý a poněkud zapomenutý jazyk.
tedy to je super! Měl jsem za to, že po těch 30-35 letech o atárku vím první poslední a stejně se našel další zajímavej SW. Moc díky, podívám se tomu na zoubky.
Jsem rád, jestli jsem přinesl něco nového a moc děkuji za celý seriál! Každopádně, ještě něco málo k tomu Actionu! - kdysi jsem si s tím dost hrál, jen tak zkusmo jsem převáděl klasickou hru Hammurabi do tohoto jazyka (který se pro ni vůbec nehodí, ale šlo jen o pokus), a mimochodem jsem zjistil, že třeba ten problém s floating point čísly vlastně nebyl, protože existuje The Action Toolkit, kde je knihovna, která tu práci s nimi zajistí (ale bohužel používá rutiny z ROM, takže je asi pomalá). Kromě toho Action umožňuje třeba používat jména funkcí v proměnných (v podstatě je to pointer na funkci), takže tím v podstatě umožňuje implementaci callback funkcí (a samozřejmě má další vychytávky, třeba používání modulů psaných jen v assembleru apod, ale toto mě dost zaujalo). Nejlepší je přečíst si rozšířený moderní manuál action_rev_3-6_GBXL_2018, který sice vychází z toho původního, ale je tam popsáno používání Runtimu i té Action Toolkit. Musím říct, že na možnosti osmibitu šlo asi o nejsilnější programovací jazyk, který opravdu umožňoval programovat strukturovaně a přitom tak blízko "železu", jak jen to bylo možné, takže nemusel sloužit jen k učení, ale bylo by v něm možné udělat i nějaké reálné aplikace. Není mi známo, že by něco srovnatelného bylo třeba na C64 a asi i ZXSpectru. Všechny ty vyšší programovací jazyky jako varianty C či Pascalu trpí tím, že jsou totálně ořezané o spoustu základní funkcionality a zaberou tolik RAM, že nic velkého v nich prostě udělat nejde.
Děkuju za tento odkaz, vůbec jsem to neznal. Tak jsem si o tom početl z různých zdrojů a byl opravdu zajímavý. Předpokládám, že se neprosadil, protože byl příliš svérázný - ne jazyk, ale ten způsob nasazení prostředí (nespolupracoval s DOS, měl všechno vlastním stylem, nedá se kvůli tomu dát na moderní harddisky pro Atari ani spolupracovat s jinými zařízeními apod.). Nicméně jsem se také dočetl, že jazyk i rychlost překladu a právě práce s bytecode byly tak zajímavé, že si z něj vzal inspiraci právě probíraný FastBasic. A kruh se uzavřel :)
Přiznám se, že mě trošku překvapuje, že by Advan Basic nefungoval s harddisky - respektive, nevím, jak je to přesně myšleno, ale určitě jsem jej před mnoha lety zkoušel spuštěný ze SIO2SD od Lotharka a to fungovalo. Pokud je to míněno, že nefunguje na moderních velkokapacitních médiích, tak to je asi fakt, když to nepodporuje DOS. Ono ale je třeba se na to dívat z dobového kontextu, že tehdy to asi nikomu až zas tak nevadilo, jelikož žádné harddisky pro Atari nebyly:) Každopádně, když jsem to kdysi zkoušel, tak mě to velmi překvapilo rychlostí a i ta implementace PMG je zajímavá (tehdy jsem ještě neznal FastBasic ani pořádně Action!, takže mi to přišlo dost originální).
Advan BASIC pracuje se souborovým systémem bez DOSu a jako mnoho takových programů nejspíš podporuje jen jeden jediný souborový systém: ATARI DOS 2.0S. To znamená, že spuštěný z moderního úložného zařízení poběží, ale nebude moci zapisovat číst a zapisovat na disk formátovaný SpartaDOSem nebo třeba MyDOSem.
Takové řešení je vcelku pochopitelné, protože bez DOSu pak v paměti zbyde více místa na vlastní program.
16. 10. 2026, 16:24 editováno autorem komentáře
Dovolím si kraťoučkou úvahu na to téma praktické použitelnosti, obzvlášť pro začátečníky. A začnu skoro pohádkově:
Jo, to byly doby...
Jaké že doby? Doby, kdy mezi běžnými smrtelníky, obzvlášť u nás, byl takový osmibit naprostý vrchol toho, co mohl člověk doma mít. Jenže ho často měl poměrně "holý": nejen bez disketovky, ale bez oficiálního zdroje SW (tudíž bez manuálů) a všeobecně bez literatury.
Takže kdo neměl luxus nějakého fungujícího klubu(*) v blízkosti, hledal informace kde se dalo. I když byly určené pro jiné stroje apod. Navíc v té pionýrské době publikoval ledaskdo ledasco, dokonce "určené dětem"(!). V tomto ohledu pro mě osobně naprosto vede časopis pro děti "Domluvte se s počítačem (BASIC, Pascal, PROLOG)" z roku 1988. Dovedete si asi představit úspěšnost pokusu psát v jazyce PROLOG v roce 1988 na jakémkoliv domácím osmibitu. I ten Pascal byla de facto nemožnost.
Ještě dnes, tolik desetiletí v "kapitalismu" má spousta lidí problém pochopit pojmy jako prodejnost a cílová skupina. Ale autoři těch strojů prodávali primárně v zemi, kde je to jasné i pětiletému dítěti: když lidé nebudou umět váš vynález používat sami, prostě si to nekoupí a vy zkrachujete. Takže přemýšleli podstatně praktičtěji než autoři tohoto časopisu - a díky jim za to!
Tak byl v každém osmibitu BASIC: jazyk, ve kterém se dalo psát hned, příkazy se vykonaly přímo a i se znalostmi z matematiky ze základky si každý mohl zkusit něco na styl
MOJE=3
PRINT MOJE*5
a vidět, že to fakt vypíše 15. Prostě začít. Sám, ve svém tempu. A tím se motivovat a postupně naučit s celou tou novotou, počítačem. K tomu jednoduchá poučka, že příkazy se běžně vykonávají hned, ale s číslem řádku na začátku se místo toho skládají do "receptu" - tehdejší oblíbený příměr i v odborné literatuře.
A počáteční rodinné scéně po přivezení "té drahé věci, čert ví k čemu to je", vůbec ne nepodobné té slavné ze Slunce, seno, se po letech už jen smát.
*) Pozn. pro současníky: myšlen je opravdový klub jako místo, kde se schází živí lidé s nějakým stejným zájmem a sami si navzájem pomáhají zkušenostmi apod. Ne dnešní "kluby" znamenající anonymně si stáhnout kartičku na slevy a nic pro to nedělat kromě mazání spamu s reklamou. Takže sami členové se museli nějak snažit dát informace dohromady, pasivně nešlo nic. Jen se to ve více lidech lépe táhne...
16. 10. 2026, 15:03 editováno autorem komentáře
Naprostý souhlas, že ta doba přála experimentování a prozkoumávání toho, co počítač umí. Přitom to byly stroje z dnešního pohledu vlastně směšné (když jsem synovi ukázal Atari 800XE ze své sbírky, ptal se, kde je ten počítač, myslel si, že je to jen klávesnice:)
Ten magický nápis "Ready" přímo vybízel k experimentování, a kromě toho, ve všech manuálech k tehdejším počítačům byly ukázkové programy. Třeba manuál k ZX Spectru byl přímo excelentní. Troufám si tvrdit, že značná část, možná i většina, tehdejších uživatelů zkusila ty příklady z manuálů naťukat a pohrála si s nimi.
A máte naprostou pravdu, že napsat si jakýkoliv jednoduchý prográmek (oblíbené 10 Print "Ahoj", 20 Goto 10), a pak zjistit, že vás ten stroj poslouchá a dělá, co jste mu řekl, to působilo až magicky.
Samozřejmě, ty stroje byly jednoduché a pochopit je bylo mnohem snazší, než pochopit dnes ta obrovská vývojová prostředí, spoustu mezivrstev, co vás dělí od reálného HW atd. Přesto si myslím, že je vlastně škoda, že dnes ten magický nápis "Ready" nikde nemáme a dnešní generaci vlastně nic nemotivuje k poznávání a experimentům.
Na druhé straně, buďme upřímní - četl jsem vzpomínky Anthonyho Fokkera a v podstatě z nich vyplývala jeho filozofie, že správný letecký nadšenec si své letadlo má postavit sám:) Holt, doba pionýrů se dost liší od doby normálních uživatelů:)
Ten příměr ke stejnému problému v letectví mě dostal. Je neskutečně přesný!
Ale abych vám nalil trochu optimismu: myslím, že to byl Michal Tauchman, kdo tu psal v diskusi pod dřívějšími díly, že jeho studenti reagovali, když jim popisoval malé Atari: "Jé, to je jak Arduino!" - a mají pravdu, princip je opravdu hodně podobný, obzvlášť když dotyčný ani na Arduinu nepoužije ty už hotové "knihovny" k zařízení, ale napíše si to sám podle datasheetu. Není to obtížné a dostane se tak přesně na tu úroveň nastavování registrů externích čipů - jak na Atari (Spectru, C64...). A navíc se tak zbaví množství bugů, které v těch knihovnách od výrobců HW jsou :)
Pozn.: ...a pak už je jen další krok: v praxi si zkusit postavit vlastní počítač a SW na něj, např. podle skvělých knih od pana Malého... To mám pořád ještě v plánu, naštěstí se 6502 stále prodává (a já přeci zůstanu věrný :) )