Software Eureky

Operační systém

Eureka je v jádru relativně standardním mikropočítačem poloviny 80. let. Její operační systém, zvaný EurekaDOS, je modifikací operačního systému CP/M 2.2 sestaveným pro instrukční sadu 8 bitového procesoru Z80. Skládá se z následujících modulů:

  1. BIOS (Basic Input/Output System) – Oživuje Eureku a stará se v podstatě o komunikaci Eureky se světem, resp. se zařízeními Eureky. Modul BIOSu je rozšířen o ovladače zařízení, jimiž je Eureka vybavena, jako voltmetr, modem, disketová jednotka atd. Ke konzoli se přistupuje obvyklým způsobem, přičemž standardním vstupním zařízením je klávesnice (braillská, i externí) a výstupním virtuální obrazovka odečítaná hlasovým výstupem.
  2. BDOS (Basic Disk Input/Output System) – Nabízí sadu služeb pro ovládání konzoly (klávesnice/virtuální obrazovka), sériového rozhraní a především disketové jednotky. Zacházení s těmito zařízeními je programátorům výrazně usnadněno, neboť např. lze načíst ze vstupu celý řádek a z diskety lze číst soubory, aniž bychom musely řešit, kde na disketě jsou uloženy. Jedná se de facto o sadu standardních služeb systému CP/M.
  3. FILEIO (FILE Input/Output) – Nabízí sadu užitečných služeb, které výrazně zjednodušují práci se soubory. Tuto knihovnu využívá zejména aplikační nadstavba Eureky, napsaná ve strojovém kódu.

Zmíněná virtuální obrazovka je oblast paměti uchovávající 1920 znaků (posledních 24 řádků o 80 sloupcích) z výstupu konzoly. Funkce jako Kalkulátor, Komunikace, Překladač Basicu a Spuštění diskového programu dovolují vstoupit do režimu virtuální obrazovky a výstup si prohlížet.  Řídící sekvence (vymazání obrazovky, nastavení kurzoru apod.) jsou kompatibilní s terminály TeleVideo 912 a navíc je možno vypnout automatické čtení vypisovaného textu.

Stojí za povšimnutí, že mezi standardní moduly EurekaDOS není začleněn program příkazové řádky CCP (Console Command Procesor). Ten je nahrazen aplikační nadstavbou, s níž uživatel, běžně založením počítačový laik, výhradně pracuje. Pro něj prakticky nejsou důležité ani další součásti operačního systému, neboť vše potřebné včetně aplikační nadstavby je uloženo v pamětech ROM. Spuštění, probouzení  a následné používání funkcí je tak rychlé, že uživatele ani nenapadne, že pod rozhraním, které používá, běží automaticky různé rutiny v různých vrstvách.

Díky tomu, že všechny zabudované programy Eureky jsou napsány v čistém strojovém kódu procesoru, podařilo se operační systém včetně výkonné části řečového syntezátoru a aplikační nadstavby vměstnat do 96 KB paměti ROM (platí pro původní anglickou verzi). Z těchto zabudovaných funkcí byla vypuštěna funkce Databáze a právě příkazová řádka CCP, které je potřeba zavádět z dodávané diskety. CCP zde hraje spíše roli doplňku, na který byly navyklí pokročilejší uživatelé systému CP/M, než že by pro používání a správu Eureky byl nějak nutný.

Aplikační rozhraní

Pod moderním pojmem aplikační rozhraní si můžeme představit portfolio volaných rutin, operací se vstupně-výstupnými porty a systémový paměťový prostor. Tyto mechanismy běžně užívá aplikační nadstavba Eureky nebo programy zavedené z diskety prostřednictvím funkce Spuštění diskového programu.

Jednotlivé služby EurekaDOSu, resp. operačního systému CP/M, jsou podrobně rozebrány v technickém manuálu, jenž se dodával, mimo jiné, na disketě spolu s kompilátory jazyků Pascal a C. Řada informací z tohoto manuálu bylo zmíněno v jiných částech této prezentace, přesto i tak mnoho detailů je nutno z prostorových důvodů vynechat. Na závěr zmiňme alespoň tři aspekty programování Eureky, které souvisí s jejím prostředím a mikroprocesorem HD 64180. Zájemcům o operační systém CP/M 2.2 lze doporučit publikaci pana Jiřího Lamače, která, i když se zabývá jiným počítačem, shoduje se v podstatném množství specifik.

Časově závislé operace

U tohoto problému musí  programátor myslet na to, že do vykonávání jeho kódu vstupují systémová přerušení, která předávají řízení příslušné rutině. Pokud vykonávání programu je pozastaveno z důvodu nastalé časové události, může toto přerušení trvat poměrně dlouho. Z toho důvodu není možno se spolehnout na nějaký čítač navyšující se v cyklu, či podobný mechanismus. Ve většině případů postačuje sledovat chod systémových hodin prostřednictvím příslušných vstupně-výstupních portů, skrze něž je čas nastavován a odečítán z čipu RTC s přesností setiny vteřiny. Takto je např. řešena funkce stopek.

Pokud program potřebuje vykonávat nějakou operaci přesně a mnohokrát za sekundu, má k dispozici dva časovače mikroprocesoru HD 64180. Ty v žádaném intervalu vyvolávají systémové přerušení, které předává řízení určené rutině. Jak už bylo řečeno dříve, tyto časovače využívá řečový syntezátor (tzv. Timer 0) a obsluha periferních zařízení (tzv. Timer 1 neboli Heartbeat). Pokud by např. program chtěl přehrávat své vlastní zvuky, tak je to jistě možné, ale je nutno časovač pro zvuky přeprogramovat a časovač pro periferie znedostupnit, aby řízení zvukového časovače nepřevzal opět řečový syntezátor, např. z důvodu vyslovení stisknuté klávesy. Takto to činí funkce Hudební editor při přehrávání skladby. Kromě toho, že rutina Hudebního editoru přidružená ke zvukovému časovači zajišťuje generování tónů, zároveň pravidelně sleduje klávesnici, aby bylo možné přehrávání skladby pozastavit, což během deaktivace časovače pro periferie není možné.

Odezva klávesnice

Systémový paměťový prostor (tzv. SYSRAM) obsahuje, kromě jiných, čtyři volby, jimiž je možno konfigurovat odezvu klávesnice Eureky tak, aby ovládání bylo pro uživatele snadné a intuitivní:

  • Tabulka návratových kódů funkčních kláves – Umožňuje ukázat na tabulku určující pro každou funkční klávesu (i přeřazenou), jaký znak či sekvenci znaků stisk funkční klávesy vygeneruje. Hodí se v případech, kdy Eureka pracuje v konzolovém režimu a funkční klávesy pomáhají vkládat potřebné příkazy. Např. v Překladači BASICu stisk F5 vygeneruje řetězec ‘SAVE”’, a tak je možno ihned zadat jméno ukládaného programu bez znalosti příkazu SAVE.
  • Tabulka odezvy funkčních kláves – Umožňuje ukázat na tabulku určující pro každou funkční klávesu (i přeřazenou), řetězec, který má Eureka vyslovit při stisku funkční klávesy. Tedy např. v Překladači BASICu F5 má určený text k vyslovení “Uložit? Vlož jméno souboru:“.
  • Tabulka nápovědy funkčních kláves – Umožňuje ukázat na tabulku určující pro každou funkční klávesu (i přeřazenou), řetězec, který má Eureka vyslovit jako nápovědu funkční klávesy, tj. její stisk v kombinaci s Mezerníkem. např. v Překladači BASICu Mezerník+F5 poskytne nápovědu “Uložení souboru”.
    Odpověď na dotaz “Kde jsem?” – Umožňuje ukázat na hlášku, která se má přečíst po stisku Mezerníku spolu s bodem 4 (příkaz “Kde jsem?”).

Pod pojmem tabulka je zde myšlený úsek paměti, v němž je za sebou 16 řetězců, každý v případě české Eureky ukončený nulovým znakem (ASCII kód 0). 16 řetězců odpovídá osmi funkčním klávesám + jejich přeřazeným variantám.

Přímý přístup k paměti

Vylepšení procesoru HD 64180 oproti původnímu procesoru Z80 jsou z hlediska programátora patrné zejména při práci s pamětí. Nejen, že je možno díky integrované jednotce pro správu paměti v prostoru 64 KB logických adres zpřístupnit  dle potřeby data z celého prostoru instalovaných 320 KB (platí pro českou Eureku), tak je k dispozici i DMA řadič (Direct Memory Access). Ten prostřednictvím jednoho systémového volání dovoluje kopírovat bloky paměti a to i z fyzických adres mimo aktuální konfiguraci logického prostoru. Příslušné rutině postačuje předat zdrojovou a cílovou adresu a velikost kopírovaných dat. Tento způsob práce s pamětí uspoří více než polovinu strojového času, než kdyby byla data kopírována běžnými instrukcemi.


Navigace