Hlavní navigace

Grafické možnosti a programové vybavení IQ-151

6. 4. 2010
Doba čtení: 14 minut

Sdílet

V dnešní části seriálu o architekturách počítačů si řekneme, jak se generoval televizní obraz na československém osmibitovém mikropočítači IQ-151. Taktéž se budeme zabývat programovacími jazyky dostupnými pro tento počítač a v neposlední řadě i slavným tuzemským operačním systémem AMOS.

Obsah

1. Textové režimy počítače IQ-151 a modul VIDEO 32

2. Pseudografika a modul VIDEO 64

3. Grafický režim nabízený modulem GRAFIK

4. Přístup do obrazové paměti modulu GRAFIK

5. Programovací jazyky dostupné pro počítače IQ-151

6. Operační systém AMOS – bravurní ukázka české programátorské ško­ly

7. Moduly operačního systému AMOS

8. Obsah dalšího pokračování seriálu

9. Odkazy na Internetu

1. Textové režimy počítače IQ-151 a modul VIDEO 32

V předchozí části seriálu o architekturách počítačů jsme si řekli základní informace o známém československém osmibitovém mikropočítači IQ-151, který byl používán ve druhé polovině osmdesátých let minulého století v poměrně velkém množství škol (na ně byl dodávám přes Komenium) i různých kroužcích výpočetní techniky. Ovšem prozatím jsme si neřekli nic o jeho grafických schopnostech. Tento počítač disponoval pouze základními obvody podporujícími zobrazení grafické informace na televizorech. Přímo v počítači byl přítomen především zdroj řádkových a snímkových synchronizačních signálů SS a SR odvozených od frekvence krystalového oscilátoru. Pomocí těchto dvou signálů se mj. generovala i dvojice přerušení využitelná pro různé účely, především při vlastním generování grafiky. Dále se v počítači nacházely obvody určené pro modulaci původně digitálního video signálu a jeho následný výstup na televizor.

pc106_1

Obrázek 1: Československý osmibitový mikropočítač IQ-151.

Ovšem pro samotné vytváření video signálu, který byl mimochodem přenášen po společné interní sběrnici počítače, musely být použity další obvody nainstalované v přídavných modulech (bez podpory přídavných modulů by nebyl počítač IQ-151 schopen zobrazování). Základním modulem, který byl určený pro vytváření video signálu, byl modul nazvaný příhodně VIDEO 32. Tento modul, jenž byl dodáván spolu s počítačem IQ-151 a modulem BASIC 6 jako jeden celek, podporoval pouze jediný textový režim, ve kterém bylo možné zobrazit 32 černobílých znaků na 32 textových řádcích, přičemž každý znak byl definován v rastru 6×8 pixelů, podobně jako na již dříve popsaném počítači PMD 85. Při porovnání s ostatními typy osmibitových počítačů se jednalo o raritu, protože po výpočtu horizontálního a vertikálního rozlišení tohoto textového režimu dojdeme k hodnotě 192×256 pixelů, tj. horizontální rozlišení bylo u IQ-151 nižší než rozlišení vertikální.

pc106_2

Obrázek 2: Pohled na pětici patic určených pro zapojení zásuvných modulů do počítače IQ-151.

2. Pseudografika a modul VIDEO 64

Ve výše zmíněném textovém režimu 32×32 znaků bylo možné vytvářet i pseudografiku s rozlišením 64×64 čtverečků, při níž se namísto rozsvěcování či zhasínání jednotlivých pixelů „bitmapa“ skládala z vhodně zvolených pseudografických znaků, podobně jako například na počítačích ZX-80 a ZX-81. Určité vylepšení představoval modul nazvaný VIDEO 64, který podporoval taktéž textový režim s 32 řádky, ovšem každý řádek obsahoval již 64 znaků. Tento modul dokázal zobrazovat i 32 znaků na každém textovém řádku, takže byl zpětně kompatibilní s výše zmíněným modulem VIDEO 32. Pro uložení znaků bylo zapotřebí alokovat 64×32=2048 bajtů paměti, která byla na tomto modulu realizována pomocí čtyř paměťových čipů MHB 2114 se strukturou 1024×4 bity. Tyto paměťové čipy byly umístěny v pouzdru DIL 18, přičemž se při čtení či zápisu dat nemuselo používat multiplexování adresy a datových bitů (deset adresových pinů bylo odděleno od čtyř pinů datových), což návrh celého modulu VIDEO 64 i jeho předchůdce VIDEO 32 zjednodušilo.

pc106

Obrázek 3: V místech, kde mají dnešní notebooky nalepenou (prakticky zbytečnou) nálepku Windows Compatible, měly novější verze počítačů IQ-151 natištěné písmeno G, které značilo novou verzi monitoru („BIOSu“) i připravenost pro použití modulu GRAFIK.

3. Grafický režim nabízený modulem GRAFIK

Pro zobrazení plnohodnotné rastrové grafiky však přídavné moduly VIDEO 32 a VIDEO 64 nedostačovaly, což byl u počítače určeného pro potřeby výuky poměrně zásadní nedostatek. Ovšem právě zde se projevily některé přednosti modulární architektury počítače IQ-151. Právě díky modulární architektuře tohoto mikropočítače a taktéž díky tomu, že se video signál přenášel po společné interní sběrnici (na níž se přídavné moduly připojovaly a mohly navzájem komunikovat), bylo možné IQ-151 vybavit i dalším zásuvným modulem, který by již skutečnou grafiku podporoval. Tento modul sice zpočátku nebyl dostupný, ale posléze se začal vyrábět a nabízet pod (opět příznačným) názvem GRAFIK. Byl určen pro IQ-151 verze „G“ (písmeno značící verzi počítače bylo vytištěno pod klávesnicí na pravé straně). Po instalaci tohoto modulu, který se musel používat současně s modulem VIDEO 32 nebo VIDEO 64, bylo možné pracovat v monochromatickém grafickém režimu o poměrně vysokém rozlišení 512×256 pixelů„.

pc10512

Obrázek 4: Ještě jeden pohled na zadní část skříně počítače IQ-151 s trojicí nainstalovaných zásuvných modulů.

4. Přístup do obrazové paměti modulu GRAFIK

Základem modulu GRAFIK bylo několik čipů typu 8255 (o kterých jsme se již několikrát v tomto seriálu zmiňovali) doplněných o paměťové čipy a další podpůrné obvody. Grafická paměť nainstalovaná v modulu GRAFIK měla velikost 512×256/8=16384 bajtů, tj. 16 kB, což je v porovnání s ostatními osmibitovými počítači nadprůměrná hodnota (typická velikost obrazové paměti se u nejpopulárnějších osmibitových počítačů pohybovala v okolí hodnoty 8 kB). Největší nedostatek modulu GRAFIK spočíval v tom, že, na rozdíl od naprosté většiny ostatních osmibitových počítačů, nebyla obrazová paměť mapována do adresního prostoru mikroprocesoru, ale muselo se k ní přistupovat nepřímo pomocí instrukcí IN a OUT, což bylo jak zdlouhavé, tak i nepříjemné a nepraktické z programátorského hlediska, protože nebylo možné využít všech možností adresování, které procesor 8080 nabízel.

pc10511

Obrázek 5: Některé často používané zásuvné moduly – VIDEO 32 pro zobrazení textu a podporu generování obrazu, GRAFIK pro podporu grafického režimu a BASIC G obsahující mj. i příkazy pro tvorbu grafiky.

Namísto toho se nejdříve musel pomocí instrukce OUT přes jeden I/O port nastavit požadovaný režim čtení či zápisu, zapsat dvoubajtovou adresu ve video paměti, ze které se měla obrazová informace číst či zapisovat, na další dva porty a přes čtvrtý I/O port provádět vlastní operaci čtení či zápisu barev osmice vedle sebe ležících pixelů. Kromě „blokového přístupu“ byl taktéž podporován bitový přístup, při němž se měnila barva jednoho zvoleného pixelu (připomeňme že u monochromatického režimu odpovídá každému pixelu jen jeden bit). Zajímavým důsledkem současného použití modulů VIDEO xx a GRAFIK byla možnost současného zobrazení textu i grafiky, které se mohly na obrazovce překrývat. Někteří programátoři dokonce dokázali modul GRAFIK, přesněji řečeno paměť nainstalovanou na tomto modulu, využít jako RAM-disk (například při kopírování programů, překladu atd.), jehož výhodou bylo mj. i to, že jeho obsah zůstal zachován i po resetu počítače.

pc106

Obrázek 6: Další moduly pro počítač IQ-151. Na této fotografii můžeme vidět jak moduly pro obsluhu videa, tak i moduly s různými programovacími jazyky. Nahoře se nachází modul s rozhraním pro Minigraf (jedná se o plotr Aritma 0507; periferiemi vyráběnými v ČSSR se budeme zabývat v některém z dalších dílů tohoto seriálu).

5. Programovací jazyky dostupné pro počítače IQ-151

Opusťme nyní na chvíli popis hardwarového vybavení počítače IQ-151 a pojďme se věnovat stejně důležité (a možná i důležitější) problematice – jeho programovému vybavení. Začneme samozřejmě u programovacích jazyků, protože ty tvořily základ, s jehož využitím bylo možné vytvářet další typy aplikací. Počítač IQ-151 byl původně dodáván pouze s monitorem (základním ovládacím programem) a zásuvným modulem obsahujícím interpret programovacího jazyka BASIC 6. Tento interpret obsahoval kromě běžných řídicích příkazů a funkcí i příkazy zabezpečující vstup a výstup dat na magnetofon i spolupráci s moduly VIDEO xx, tj. tisk znaků na televizní obrazovku. Později byl interpret jazyka BASIC rozšířen o několik grafických příkazů a spolu s tím i o možnost spolupráce s výše popsaným modulem GRAFIK. Tento interpret, který byl opět dodávaný ve formě zásuvného modulu, byl uživatelům IQček známý pod označením BASIC G.

pc106

Obrázek 7: V ČSSR vyšlo několik učebnic programovacího jazyka BASIC. Zde je vyfocena obálka jedné z nejstarších českých knih o tomto jazyce, která vyšla již v roce 1979. Popisuje dialekt BASICu dostupný na počítačích SMEP.

V pozdějších letech, kdy byl na počítač IQ-151 přenesen operační systém CP/M, byla vyvinuta další varianta interpretru jazyka BASIC pojmenovaná BASIC F. Tato verze BASICu byla doplněna o příkazy a funkce umožňující práci se soubory a zařízeními operačního systému CP/M. Taktéž došlo ke změně chování některých funkcí BASICu, zejména při načítání a ukládání textových dat. To bylo nutné z toho důvodu, že se změnil význam některých řídicích znaků tak, aby to odpovídalo konvencím zavedeným v CP/M. Ostatně některé z těchto konvencí platí doposud, především na platformě Windows, protože byly z původního CP/M převzaty nejprve do DOSu a posléze i do systému MS Windows (CTRL+Z = konec souboru, znak 0×0a má funkci line feed, 0×0d odpovídá carriage return atd.). Mezi nové příkazy patří především OPEN (otevření souboru pro čtení či zápis a přiřazení čísla kanálu k otevřenému souboru), CLOSE (zavření zvoleného kanálu), PRINT # (výstup do zvoleného kanálu) a INPUT # (čtení dat ze zvoleného kanálu).

pc106

Obrázek 8: Další (velmi dobrá) učebnice jazyka BASIC, která je zaměřená na numerické algoritmy. Tato učebnice, resp. algoritmy v ní popsané, je dodnes velmi dobře použitelná.

Kromě programovacího jazyka BASIC bylo pro počítače IQ-151 vytvořeno i několik dalších programovacích jazyků. Především se jedná o assembler a jazyk Pascal, které byly nabízené buď ve formě samostatného zásuvného modulu nebo jako součást operačního systému AMOS (viz též další kapitoly), v minulosti u nás poměrně populární programovací jazyk Forth (podle názoru některých programátorů se jednalo o jediný vyšší programovací jazyk, který mělo smysl používat na osmibitových počítačích), základní dialekt programovacího jazyka LISP a v neposlední řadě též programovací jazyk Karel určený především pro výuku programování, protože studentům nevštěpoval tolik špatných návyků jako BASIC :-), naopak je vedl k řešení zadávaných úloh pomocí strukturovaně zapsaných algoritmů.

pc106

Obrázek 9: V této knize je popsána poměrně moderní ANSI norma BASICu z roku 1985. Některé příkazy definované v této normě nebyly v „osmibitových“ BASICech dostupné.

Proč byla vlastně v minulosti programovacím jazykům a programování vůbec věnována taková pozornost? Šlo o důsledek toho, že se (především u nás) teprve začal formovat nový typ pracovníka – programátor. V minulosti bylo mnoho uživatelů počítačů (především lidí z technických oborů) nuceno se naučit alespoň v minimální míře programovat, aby si mohli napsat ty aplikace, které pro svou práci potřebovali. A právě pro účely rychlé tvorby poměrně malých programů (maximálně tisíce řádků) programátory–amatéry, se velmi často používal BASIC. Ostatně tato praxe je v určité míře zachována doposud – například tvorba tabulek se vzorci v tabulkovém procesoru není nic jiného než algoritmizace nějaké úlohy a tudíž i programování. V minulosti, kdy nebyly tabulkové procesory tak rozšířené, by se musela podobná úloha řešit plnohodnotnou aplikací.

pc106

Obrázek 10: Ve své době velmi populární učebnice hned tří programovacích jazyků – BASICu, Pascalu a Prologu.

6. Operační systém AMOS – bravurní ukázka české programátorské ško­ly

Původní programové vybavení mikropočítače IQ-151 bylo poměrně chudé, ovšem díky umu tehdejších programátorů vznikly pro tento počítač velmi zajímavé produkty, které mnohdy překonaly i profesionální aplikace ze Západu. Jedním z nejzajímavějších a také nejužitečnějších produktů je operační systém nazvaný AMOS, který z velké části naprogramovali studenti MFF UK (známý Matfyz). Název tohoto systému znamená buď Autonomní Mikropočítačový Operační Systém popř. v anglické variantě Almost Memory Oriented System, ovšem hlavní důvod, proč byl zvolen název AMOS, spočíval v tom, že se tento systém distribuoval přes národní podnik Komenium. Ovšem samotný název není až tak podstatný, hlavní je architektura celého operačního systému a jeho vlastnosti. Užitečnost AMOSe spočívala v tom, že programátorům i dalším uživatelům poskytoval (vývojové) prostředí na profesionální úrovni, a to i v případě, že uživatelé neměli k dispozici disketové jednotky (jediným záznamovým zařízením pro většinu uživatelů totiž zůstával magnetofon, situace se změnila až s nástupem šestnáctibitových osobních počítačů).

pc106

Obrázek 11: Hra „Let balónem“ implementovaná v BASICu G pro počítače IQ-151.

Operační systém AMOS byl dodáván ve formě zásuvných modulů, což je vlastně jediné rozumné řešení pro počítače bez disketových jednotek (a samozřejmě bez pevných disků :-). Tyto moduly obsahovaly paměť EPROM o kapacitě 16 kB nebo 32 kB (viz další kapitolu), přičemž byly navrženy tak, aby mohly spolupracovat s prakticky všemi dalšími standardními zásuvnými moduly, především s VIDEO 32, VIDEO 64, GRAFIK, MINIGRAF či STAPER (to, že se spolu moduly v jednom počítači „snesly“ nebylo zdaleka samozřejmostí). Systém AMOS nabízel uživatelům především plnohodnotný celoobrazovkový editor, překladač assembleru, debugger, plnohodnotný překladač Pascalu (odpovídající ve všech důležitých aspektech mezinárodní normě, na rozdíl od známého Turbo Pascalu), podporu pro práci se soubory bez ohledu na to, na jakém zařízení jsou soubory uloženy, vylepšené subrutiny pro zápis a čtení dat z magnetofonu (zrychlení zápisu, jeho verifikace, nezávislost na polaritě signálu) a v neposlední řadě i podporu pro spooling, kdy bylo možné tiskové úlohy přesměrovat do paměťového či diskového souboru (spooling je dnes sice zcela samozřejmá věc, ale například v prvních verzích MS DOSu ho nenajdeme).

pc106

Obrázek 12: Známý algoritmus bublinkového třídění (bubble sort) implementovaný v BASICu.

7. Moduly operačního systému AMOS

V předchozí kapitole jsme si řekli, že operační systém AMOS byl šířen na zásuvných modulech s paměťmi EPROM o celkové kapacitě 16 kB nebo 32 kB. V šestnácti kilobajtovém modulu byl obsažen vlastní operační systém (interpret, podpora pro rychlý zápis na magnetofon, pojmenované soubory atd.) celoobrazovkový textový editor s podporou bloků (což v té době nebylo zdaleka tak běžné jako dnes), překladač assembleru a debugger. Jednotlivé aplikace se do operační paměti nahrávaly až ve chvíli, kdy byly skutečně zapotřebí, což například znamenalo, že uživatel mohl v textovém editoru vytvořit velmi dlouhý zdrojový kód v assembleru, editor zavřít (uvolnit ho z paměti), načíst assembler a provést překlad. Z popisu tohoto modulu je zřejmé, že byl určen především programátorům v assembleru, ale i neprogramátoři mohli jeho služeb využít – zejména se to týká textového editoru, vylepšeného zápisu na magnetofon a spoolovaného tisku.

pc106

Obrázek 13: Algoritmus výpočtu soustavy rovnic Gauss-Sidelovou metodou implementovaný v programovacím jazyku BASIC.

Druhý modul systému AMOS byl v několika ohledech zajímavější. První zvláštnost spočívala v tom, že měl kapacitu paměti EPROM 32 kB, což je dvakrát tolik, než maximální povolená kapacita standardních modulů. Z tohoto důvodu byla celá paměť modulu rozdělena na dvě části, které se podle potřeby přepínaly, takže modul z hlediska počítače obsazoval pouze standardní paměťový prostor šestnácti kilobajtů. Tento modul obsahoval, podobně jako modul první, základní operační systém a celoobrazovkový editor, ovšem namísto assembleru a debuggeru zde byl přítomen plnohodnotný překladač Pascalu, jehož délka byla menší než 15 kB (!) a taktéž cca sedmikilobajtová knihovna potřebná pro běh přeložených pascalovských programů (knihovna obsahovala funkce a metody pro vstup a výstup dat, správu paměti atd.). Uživatelé si mohli koupit buď pouze jeden z modulů systému AMOS (proto oba moduly obsahovaly některé společné nástroje), nebo mohli současně použít oba moduly, což bylo velmi užitečné a zajímavé, neboť to umožňovalo například provést překlad programů z Pascalu do strojového kódu a jejich následné ladění na úrovni assembleru (či strojového kódu) debuggerem. To vše na počítači s kapacitou operační paměti 64 kB a zastaralým procesorem 8080!

pc106

Obrázek 14: Program zapsaný v dialektu jazyka BASIC odpovídajícího ANSI normě z roku 1985. Povšimněte si především použití strukturovaných konstrukcí typu IF-THEN-ELSE a universální smyčky DO-LOOP, pomocí nichž lze nahradit nepřehledné a nestrukturova­né GOTO.

8. Obsah dalšího pokračování seriálu

V následující části seriálu o architekturách počítačů dokončíme popis osmibitového počítače IQ-151. Především se zmíníme o implementaci operačního systému CP/M (Mikros) na těchto počítačích a také o zajímavé počítačové síti FELNET, která byla založena právě na mikropočítačích IQ-151. Poté se již začneme zabývat československými počítači s architekturou odvozenou od mikroprocesorů Z80, popř. od jejich klonů U880. Jedná se například o počítače Ondra i populární Didaktiky (Gama, M, Kompakt).

pc106

skoleni

Obrázek 15: Populární počítač Didaktik M založený na mikroprocesoru Z80 (U880) a zákaznickém obvodu ULA.

9. Odkazy na Internetu

  1. Muzeum československých mikropočítačů
    http://cs-pocitace.ic.cz/
  2. Popis modulů a aplikací pro IQ-151
    http://cs.fel­k.cvut.cz/~bi­ly/iq151/
  3. IQ 151
    http://osmi.tar­bik.com/cssr/iq­151.html
  4. „Domácí počítače“ nedávné minulosti
    http://www.fi­.muni.cz/usr/jku­cera/pv109/xkr­ejcir.htm
  5. ZPA: IQ-151
    http://www.ho­mecomputer.de/pa­ges/easteurope_cz­.html#iq151
  6. Zrození IQ-151
    http://www.iq151­.net/index.htm
  7. Stručná historie počítače IQ150/IQ151
    http://www.iq151­.net/history.htm
  8. Old Computers – IQ 151
    http://www.old-computers.com/MU­SEUM/computer­.asp?st=1&c=1045
  9. Wikipedia EN: IQ 151
    http://en.wiki­pedia.org/wiki/IQ151
  10. Wikipedia CZ: IQ 151
    http://cs.wiki­pedia.org/wiki/IQ151
  11. Archive.Free8bit­.net (archivy her a dalších aplikací)
    http://archive­.free8bit.net/in­dex.php?ACTION=1004
  12. Emulation.Fre­e8bit.net (emulátory osmibitů)
    http://emulati­on.free8bit.net/
  13. Muzeum starého hardwaru a počítačů
    http://hardwa­re.najd.cz/nej­.php
  14. Počítače PMD 85
    http://balek.v­.sweb.cz/cs%20po­citace/8bity/pmd85­.htm
  15. Didaktik Alfa 1
    http://osmi.tar­bik.com/cssr/di­daktik_alfa.html
  16. Didaktik
    http://en.wiki­pedia.org/wiki/Di­daktik
  17. Alfy mali vo výbave i sovietske televízory „Junost“
    http://bombara­.blog.sme.sk/c/205503­/Alfy-mali-vo-vybave-i-sovietske-televizory-Junost.html
  18. Hlípa
    http://pmd85.djb-studios.com/wi­ki/Hlípa
  19. Video s řešením hry Hlípa
    http://pmd85.djb-studios.com/w/me­dia/hlipa-riesenie.avi
  20. Urob si sám PMD-85
    http://pmd85.to­pindex.sk/
  21. Stránky Martina „Schotka“ o PMD 85, jeho klonech i emulátorech
    http://www.scho­tek.cz/pmd/in­dex.htm

Autor článku

Pavel Tišnovský vystudoval VUT FIT a v současné době pracuje ve společnosti Red Hat, kde vyvíjí nástroje pro OpenShift.io.