Maťo neznám, ale na Ondru jsem si taky vzpomněl. Byl to snad jediný stroj vyvinutý ve východním bloku nad procesorem Z80.
Didaktiky byly obšlehnuté Spektráče a v ostatních se používal 8080, který byl naprd - potřeboval dvojité napájení (+5 na periferie a +12 na jádro) a podpůrné obvody :
8228 dokázal luštit jestli to co problikne na (jediné !) sběrnici je adresa, data nebo kopie vnitřních stavových signálů (a chudák to pak musel dekódovat a přeposílat dál)
8224, který pro "CPU" generoval dvoufázové hodiny s amplitudou +12V a docela dost se u toho potil (takže se občas musel vyměnit když už to nezvládal a mašina tuhla víc než obvykle).
Naproti tomu Ondra byl určený pro "domácnost", takže vystačil s jediným napájením a (poměrně) inteligetní procesor Z80 si dokázal obsloužit všechny sběrnice sám, a tím se zjednodušil návrh plošňáku. Pracoval jen v grafice (cca 192x256 ale to už nevím jistě); Basic ale uměl vlastními silami psát znaky a byla tam i docela slušná sada grafických příkazů.
Malá perlička - (prý) kvůli refreshi byla VideoRAM zajímavě adresovaná (zkusím to naznačit abecedou protože přesný popis je nepřehledný - písmena abecedy udávají pořadí v jakém jsou body skutečně uloženy v paměti, značky + - a | ukazují okraj obrazovky) :
Vypadá to šíleně, ale funkce na převod adresy pixelu (H=řádek, L=sloupec) na fyzickou adresu (HL=adresa bytu) byla tuším na 5 (!) instrukcí assembleru.
A ještě jednu zajímavou vlastnost do něj nacpali konstruktéři. Ale napřed musím trochu odbočit.
Nevím jestli víte, jak byl v paměti uložen program v BASIC-u. Obvykla tak, že se do 2 bytů zakódovalo číslo řádku, do dalších dvou fyzická zdresa kde leží další řádek (protože už z principu měl proměnnou délku), do 1 bytu kód instrukce (PRINT, LET, CIRCLE apod - obvykle z rozsahu 0x80-0xff) a pak její argumenty už většinou v čitelné podobě (on si to interpret přebere). V této "úsporné" podobě se na některých strojích i ukládalo na pásku, takže ta pak byla "otiskem" paměti; někdy i volitelně s obsahem proměnných.
To ale českým vývojářům nevonělo a tak se u IQ151 na pásku ukládá program tak jak jde na obrazovku - tedy např. kód instrukce 0x85 se rozvine na posloupnost znaků "P" "R" "I" "N" "T". Asi jim to zjednodušilo práci, protože pro výstup na obrazovku i na pásku mohli používat stejnou část kódu.
No jo, ale jak vyřešit vstup ? Geniálně jednoduše - na rozdíl od Spectra kde se příkaz zadal jedním úhozem (i když občas s přehazovači) zde byla nasazena syntaktická kontrola která po odeslání řádku rozebrala jeho řetězce a pokusila se pochopit "o co jde". Vedlejším efektem byla možnost vynechání příkazu LET, který se interně automaticky přidal na začátek řádku pokud selhaly všechny ostatní možnosti (a když ani pak neseděla syntaxe, byl zadaný text vrácen uživateli k přepracování. Kromě toho se pak podle čísla řádku musel správně zařadit mezi ostatní aby na sebe správně navazovaly. Ovšem stihnout to nebylo jednoduché, takže se opět projevila genialita autorů IQ151 - po každém řádku BASICu odvysílaném na pásku se nechala cca 0,5s mezera ve které byl jen pilotní signál aby měl interpret při načítání dost času na schroustání. Pro větší programy to ale stejně mohlo být málo a kdo na to nemyslel včas a uložil si svoje dílo na pásku aniž ručně přenastavil mezeru na větší, ten pak míval peška. Ovšem našli se i machři kteří dokázali magneťák zastavovat v mezerách mezi řádky tak aby to prošlo (což zase nebylo tak jednoduché protože nahrávací rutina chtěla pořád slyšet aspoň pilotní signál).
No a teď se konečně vracím k Ondrovi. Protože vzniknul o něco později, věděli jeho autoři o těchto problémech a vyřešili je šalamounsky :
- loader nepotřeboval stálý pilotní signál (před každým řádkem se "chytal" znovu)
- pokud interpret nestihl dekódovat vstupní text ve stanoveném čase, dal pokun k zastavení magneťáku. Na to byl Ondra vybaven relátkem, takže to při nahrávání někdy pěkně cvakalo. Navíc nebyl problém propojit jich víc v učebně tak, aby načítali všichni najednou (data paralelně, relátka sériově). Zajímavé bylo že i když měly všechny stejný procesor a načítaly stejný program, trvalo jim to různou dobu a občas nějaký cvaknul - kupodivu pokaždé nějaký jiný.
Pokračovatelem Ondry byl další model pojmenovaný po druhém synovi autora, který už byl osazený procesorem 8088 (jméno už se mi taky vykouřilo, ale slušný popis by se dal najít v Amatérském Radiu). Bylo už ale moc pozdě, přišla do toho revoluce a IMHO nejlepší počítačové dílko které kdy ve východním bloku vzniklo bohužel padlo pod stůl.
Je to docela škoda, protože pro Ondru i jeho nástupce byly připraveny i slušně udělané periferie a určitě by v době krátce po revoluci zvedlo počítačovou gramotnost - ze které se dnes (bohužel) stává u většiny BFU schopnost spustit hru (1. stupeň), přetaktovat CPU (2. stupeň) případně pochopit a nainstalovat antivirák (3 a nejvyšší stupeň)..
Atarko melo pri praci s Basicem podobne problemy jako Ondra. Basicovy program se dal ukladat ve dvou podobach: bud otisk pameti s prelozenymi tokeny - to zajistovaly prikazy LOAD a SAVE. No a potom se dal "listovat" zdrojak na libovolne zarizeni, napriklad LIST "P:" na tiskarnu, LIST "C:" na kazetak a LIST "D:pokus.bas" na disketu. Pro nacteni zdrojaku ulozeneho v textovem souboru se pouzival prikaz ENTER, ktery vsak take musel kazdy radek prechroustat tak, jako kdyby se zadaval z klavesnice.
Atarko na to pouzivalo delsi mezery mezi zapisovanymi bloky, coz je desna prasarna, ktera jeste vic snizovala uz tak malou rychlost cteni/zapisu. Pokud vsak radky byly kratke (napriklad pouze 40 znaku a ne plnych 120), dala se jednoduchou upravou jedne ROMove rutinky mezera mezi bloky zmensit.
Samozrejme, ze po nastupu Turba 2000 a disketovych mechanik se samozrejme situace uplne zmenila.