Za jídlo, šaty a vzduch otročíme na programech z temných světů

Myslíme jinak s Apple I

Je to už čtvrt roku od chvíle, kdy jsem od Dexe dostal Replicu 1, klon Apple I – prvního osobního počítače v moderním slova smyslu. Pořádně jsem se k němu ovšem dostal až na OldConu a hlavně na ByteFestu. A nutno konstatovat – je to opravdu síla.Jak Steve Wozniak ve své biografii iWoz uvádí, byl první, koho napadlo spojit počítač a terminál do jednoho celku a vytvořil tak dnes samozřejmou koncepci počítače, ke kterému se připojuje klávesnice a monitor. Může se to zdát jako naprosto jasné a samozřejmé, ale o pouhý rok starší Altair 8800 se po sestavení dal ovládat pouze pomocí přepínačů na předním panelu. Karta doplňující sériový port (k němuž by šlo připojit terminál) vznikla až později, stejně jako videokarta a další periferie.

Přesto ovšem zdaleka nejde o úplně běžný počítač a při pokusech o programování v Apple BASICu od Woze jsem si to hluboce uvědomil.

Apple BASIC sám o sobě je prostinký, s modernějšími dialekty jako je Sinclair BASIC nebo Locomotive BASIC naprosto nesrovnatelný. Podle manuálu jsem se dopočítal 11 příkazů, které je možné použít v programu a několika dalších, které nastavují parametry interpretu (nastavení paměti přidělené programu, automatické číslování řádků, smazání BASICového programu atd.).

Replica 1

Extrémní jednoduchost BASICu je ovšem jenom půlka problému. Druhá půlka je právě to, že jde o dva samostatně fungující celky – počítač a k němu paralelně připojený terminál, který řeší vstup a výstup:

  • Chcete smazat obrazovku? Marně byste v BASICu hledali příkaz CLS, protože počítač do obrazovky nemá co mluvit. Pro smazání obrazovky je nutné zmáčknout tlačítko CLEAR na desce počítače, které smaže buffer terminálu. Kdo chce smazat obrazovku opravdu softwarově, musí poslat 24 prázdných řádků, což ovšem není právě rychlé.
  • Chcete zapsat znak na určitou pozici obrazovky? Máte smůlu. Terminál není zařízení s náhodným přístupem, text lze pouze přidávat. Nelze se v něm vracet, nelze skákat na určitou pozici na obrazovce.
  • Chcete testovat v BASICu stisk klávesy? Máte smůlu. Sice byste při troše dobré vůle mohli číst z místa, kde je v paměti namapován klávesový buffer terminálu, ale BASIC vás nenechá: příkazy POKE a PEEK nemohou sahat přes adresu 32767 a navíc chod BASICu se přerušuje libovolnou klávesou. Jediná možnost je zadání celého řetězce potvrzeného klávesou Enter pomocí příkazu INPUT.

Velmi rychle se ukazuje, že bez assembleru to nepůjde – možnosti v něm realizovatelné jsou totiž úplně jinde. Stáhl jsem si tedy popis instrukční sady procesoru MOS 6502 a jdu na to. Chce to myslet jinak.