

IQ 151 byl osmibitový osobní počítač vyráběný firmou ZPA Nový Bor v Československu.
Historie
Základem počítače byl terminál IK 80-M vyvinutý v roce 1982 na ČVUT jako vzor pro počítač, který by měl být vyráběn pro potřeby školství. Vývoj pokračoval v ZPA Nový Bor typem IQ 150, který vznikl důkladnou rekonstrukcí IK 80-M. V roce 1983 bylo vyrobeno pro ČVUT 50 těchto počítačů. Tento počítač ale musel být vinou ohromného množství chyb v roce 1984 stažen zpět do ZPA Nový Bor a jeho přepracováním vznikl typ IQ-151. Od roku 1985 pro ministerstvo školství se již vyráběl IQ 151 – na konci roku bylo dodáno přes 2000 kusů. Poslední verze počítače je označována jako IQ 151-G.
Popis
Srdcem počítače byla československá kopie osmibitového procesoru Intel 8080 – Tesla MHB8080A / 2 MHz. Počítač byl dále vybaven 32 kB RAM paměti (později 64 kB), 4 kB ROM paměti, výstupním televizním obrazovým signálem, povinným externím modulem VIDEO 64 (zobrazování 64 znaků na řádek a textovou „grafiku“) či VIDEO 32 (pouze 32 znaků na řádek, lépe čitelné na televizi) a externím modulem BASIC 6 (jednoduchou variantou programovacího jazyka BASIC), později se vznikem modulu GRAFIK (který umožňoval použití grafiky v rozlišení 512×256 bodů, používal se v kombinaci s některým z modulů VIDEO) vznikl BASIC G s podporou grafických příkazů.
Alternativou k Basicu byl pak operační systém AMOS, vyvinutý v samém závěru „osmibitové“ éry studenty MFF UK pod vedením RNDr. Rudolfa Kryla, umožňující práci se soubory a použití programovacích jazyků Assembler a Pascal.
Další možností bylo pak použití operačního systému CP/M – jeho „východoevropskou“ verzí pojmenovanou jako MIKROS a to jak na 32 kB verzi ale lépe na 64 kB verzi s 8″ disketovou mechanikou.
IQ 151 byl primárně určen pro použití v českých školách, na Slovensku podobnou funkci plnilo o něco vyspělejší PMD 85. Mezi jeho závažné nedostatky patřilo velmi časté přehřívání, špatná membránová klávesnice a nedostatek softwarového vybavení. Jeho kladným rysem pak byla koncepce externích hardwarových modulů, která ovšem nebyla nikdy plně využita. Za zmínku stojí, že první modely bez označení „G“ vpravo dole na klávesnici měly závažný technický nedostatek; nedostatečné napájení externích slotů pro moduly, což způsobovalo nestabilitu při použití více než dvou.
Komponenty
„Íkvéčko“ se připojovalo k černobílým televizím Tesla.
Jako externí paměť sloužil běžný kazetový magnetofon, ale existovala i externí mechanika s 8″ disketami. Počítač má port pro připojení dvou magnetofonových jednotek.
Na některých školách bylo IQ instalováno do sítě pomocí sériových modulů SESTYK nebo SERI a programy si pak jednotlivé stanice tahaly z centrálního „serveru“ s disketovou mechanikou.
Výstupním zařízením pak mohl být souřadnicový zapisovač použitý jako tiskárna, která psala normálními fixy nebo tiskárna z produkce brněnské Zbrojovky Consul C2113.
Seznam existujících modulů
- Video 32
- Video 64
- Basic 6
- Basic G
- G – rozšíření Basic 6 o grafické příkazy
- Grafik
- Amos/Pascal (16/32kB)
- Amos/Pascal1
- Amos/Assembler
- Disc2 (8″ floppy)
- Floppy – pro připojení jednotky PFD 251
- Staper – standardní periferie (čtečka/děrovačka pásky + tiskárna)
- Sestyk/Sestyk9 – sériový port
- SERI – „síťová karta“ pro zapojení do sítě FelNet, obsahuje obvod Z80 SIO, adresa v síti je nastavována pomocí propojek,
- KZD – pro připojení jednotky KZD 1
- DLPS – pro připojení dálnopisu
- Universal – umožňující zhotovení interface dle potřeby, jehož součástí je i nástavec na opravy
- Robot – pro připojení stavebnice z mechaniky
- Milivoltmetr – přenos výsledků elektrických měření do počítače
- MS151,MS151A – pro zapisovač XY4130
- Minigraf (někdy též 0509) – pro zapisovač Minigraf 0507
- GamaCentrum – pro tiskárnu Gamacentrum 01/02
1. IQ-150 – počítač špatný dokonce i pro socialistický trh
řekli o IQ-151: „… jsem se dostal ke skvělému polyfunkčnímu počítači IQ-151. Tento stroj totiž nejen počítal, ale mohl též vařit vodu na kávu či čaj nebo mohl sloužit jako topné těleso …“
Historie československého osmibitového mikropočítače IQ-151 se začala psát v roce 1984. V tomto období byl na základě rozhodnutí vlády zahájen vývoj počítače vhodného pro výuku programování, který by bylo možné dodat a následně používat na všech stupních škol (zajímavé je, že v té době se výuka informatiky rovnala výuce nějakého programovacího jazyka, typicky Basicu; podobně omezený přístup k informatice ostatně na mnoha našich školách přetrvává, dnes se totiž výuka informatiky v mnohých školách rovná naučení klikání v několika málo aplikacích). Na základě prvotního návrhu „školního osmibiťáka“ se v roce 1985 v Závodech průmyslové automatizace v Novém Boru (ZPA Nový Bor) započalo s výrobou stroje nazvaného poněkud honosně IQ-150. Tento počítač byl, jak už bylo v našich zemích zvykem, založen na mikroprocesoru Tesla MHB 8080A a běžných podpůrných čipech řady Intel 8080 (8255A, 8259 atd.).

Obrázek 1: Osmibitový mikropočítač IQ-150 s připojeným televizorem a magnetofonem. Tento počítač byl vyráběn v modrém provedení, na rozdíl od svého následovníka IQ-151, který se honosil oranžovou barvou.
Počítač IQ-150 však vykazoval velkou řadu nedostatků, které bránily jeho úspěšnému nasazení do škol. Především se jednalo o špatný návrh paměťového systému, protože často docházelo ke kolizím pamětí při adresování, paměťové moduly původně dovážené ze SSSR kromě velkého zahřívání taktéž nedodržovaly přesné časování, které vyžadoval mikroprocesor MHB 8080A (ten naopak dodržoval standard firmy Intel) a navíc se napájecí zdroj počítače přehříval a kvůli jeho špatnému odstínění rušil činnost dalších modulů v počítači, například výstup video signálu na televizor či čtení a zápis dat i programů na magnetofon. Některé z těchto chyb byly tak závažné že byl mikropočítač IQ-150 po výrobě pouhých několika desítek kusů (některé zdroje hovoří o 50 vyrobených kusech, jiné až o stovce kusů, více to s velkou pravděpodobností nebylo) stažen z prodeje a inženýři ze ZPA Nový Bor se vrátili k rýsovacím prknům, aby návrh počítače změnili takovým způsobem, aby se jednalo o stroj skutečně použitelný v praxi. Současně se také mělo zlepšit jeho základní programové vybavení, tj. monitor.

Obrázek 2: Zajímavé je porovnání technologií používaných v roce 1984 na Západě (a to jak v Evropě, tak i v USA) a v zemích RVHP. Zatímco se u nás v tomto roce navrhoval počítač IQ-150 vybavený 32 kB RAM a mikroprocesorem řady 8080, jehož základním programovým vybavením byl poměrně primitivní monitor, v USA byla ve stejném roce zahájena sériová výroba slavných osobních mikropočítačů Apple Macintosh s o dvě generace novějším mikroprocesorem řady Motorola 68000, vybavených 128 až 512 kB RAM a plnohodnotným grafickým uživatelským rozhraním. I přes značné technologické rozdíly mezi těmito počítači byla jejich cena (přepočtená na kupní sílu obyvatelstva) zhruba srovnatelná.
2. IQ-151 – napravení některých nedostatků IQ-150
řekli o IQ-151: „IQ-151 byl jediný počítač o kterém jsem věděl naprosto všechno, počínaje hardwarem (blikající obrazovka = je mu teplo = rozmontovat a zastrkat vylezlé šváby zpátky), přes software až po jeho neutuchající schopnost v zimních nocích vytopit svým teplem půlku kabinetu.“
Po necelém roce začal podnik ZPA Nový Bor vyrábět zmodernizovanou variantu počítače IQ-150 nazvanou IQ-151. Některé konstrukční nedostatky předchozího typu počítače byly opraveny, takže již například nedocházelo k tak častým chybám při práci s operační pamětí. Ovšem problémy s napájecím zdrojem, který byl zabudován přímo do skříně počítače, což se ukázalo jako velmi problematické řešení, přetrvávaly. Tyto nedostatky se projevovaly například tak, že se po zapojení většího množství zásuvných modulů (viz další kapitoly) počítač stal buď nestabilním nebo dokonce došlo k přetížení zdroje a následnému proražení diod, které stabilizovaly napětí +5V (proudový odběr u dalších napětí dodávaných zdrojem, tj. -5V a +12V nebyl tak velký). Kvůli tomuto nedostatku napájecího zdroje bylo možné do počítače v jeden okamžik nainstalovat pouze dva zásuvné moduly namísto konstrukčně možných modulů pěti – většinou se jednalo o moduly Video 32 (bez nějž nefungovalo zobrazení na televizoru) a Basic 6.

Obrázek 3: První verze školního počítače IQ-151. Povšimněte si kulatých tlačítek, které jsou pro tento počítač typické a taktéž klávesy RESET. Ta nebyla od ostatních kláves nijak oddělena, pravděpodobně proto, aby se studenti naučili dávat si pozor, kterou klávesu mačkají 🙂 (už se asi nikdy nedozvíme, kolik programů bylo „díky“ vhodně umístěné klávese RESET ztraceno). Skříň počítače byla vyrobena z oranžově nalakovaného plechu, jehož milou vlastností byl přenos tepla z chladiče umístěného v zadní části počítače (žebra chladiče jsou částečně vidět i na této fotografii) na celou jeho plochu, což mj. znamenalo, že se televizor nemohl stavět přímo na počítač, ale musely se používat různé dřevěné špalíky a podobné hi-tech řešení.
Problémy s napájením byly částečně vyřešeny až ve druhé verzi počítače IQ-151 z roku 1987, kterou bylo možné rozeznat už na první pohled podle toho, že se na klávesnici objevilo (po pravé straně) natištěné písmeno G. Ke zdroji byly připojeny další chladiče a současně v něm byly použity i diody dovolující větší průtoky proudu a tím pádem i větší příkon, který mohl počítač i zapojené moduly využít. Kromě zdroje došlo taktéž k úpravám monitoru a navíc bylo možné v této verzi použít novou verzi Basicu, která se přejmenovala z BASIC 6 na BASIC G. Písmeno G v názvu Basicu značí, že tento interpret obsahoval i několik grafických příkazů, podobně jako stejně pojmenovaný Basic u počítačů PMD-85. Výroba počítačů IQ-151 i zásuvných modulů byla ukončena v průběhu roku 1990, protože tyto počítače nebyly schopny konkurovat ani ostatním osmibitovým domácím počítačům ani (což je pochopitelné) v té době již poměrně rozšířeným Atari ST, Amigám a nakonec i PCčkům.

Obrázek 4: Interní napájecí zdroj mikropočítače IQ-151, který ztrpčoval život mnohým jeho uživatelům a taktéž byl příčinou většiny poruch tohoto počítače, které byly poměrně časté.
3. Interní struktura počítače IQ-151
řekli o IQ-151: „… když jsem se poprvé setkal v jisté instituci s velice bojovným názvem po nějakém revolucionáři s českou parodií na počítač, s IQ 151 a později i se slovenskou parodií na počítač, s PMD 85…“
Základem počítače IQ-151 byl mikroprocesor MHB 8080A taktovaný na 2 MHz (přesněji 2048 kHz, stejně jako PMD-85), který byl doplněný o klasickou dvojici podpůrných čipů, tj. obvodu 8224 (generování dvoufázových hodin) a 8228 (tento čip mj. generoval negované řídicí signály IOR, IOW, MEMR a MEMW vyvedené na řídicí sběrnici). Hodinový signál posílaný na vstup mikroprocesoru byl získán děličem devíti z oscilátoru s kmitočtem 18432 kHz. Mikroprocesor byl na adresovou sběrnici připojen přes posilovací obvod 3212. Počítač IQ-151 obsahoval i podporu pro několik typů přerušení, což nebylo u mnoha dalších počítačů vyráběných v ČSSR typické (spíše jsme se mohli setkat s jedním či dvěma zdroji přerušení). O zpracování přerušení se staral obvod 8259, který dokázal rozeznat osm žádostí o přerušení s různou prioritou (mimochodem: vylepšená varianta tohoto obvodu byla použita i v IBM PC a později i PC XT).

Obrázek 5: Další pohled na počítač IQ-151. Povšimněte si, že barvy některých kláves jsou oproti počítači zobrazeném na snímku číslo 3 odlišné.
Prvních pět přerušení mohlo generovat jakékoli připojené periferní zařízení pomocí signálů INT0 až INT4, šesté přerušení bylo generováno tlačítkem BREAK a poslední dvojice přerušení byla generována signály SS (synchronizace snímků) a SR (synchronizace řádků) – povšimněte si, že některé signály jsou označovány anglickými zkratkami (INT, IOR, IOW, MEMR či MEMW), zatímco další pro změnu zkratkami českými (SS, SR). Dalším důležitým čipem použitým v tomto počítači byl obvod 8255A, na jehož brány byla připojena klávesnice, zvukový výstup i rozhraní pro komunikaci s magnetofonem. Klávesy na klávesnici byly uspořádány v matici 8×8 kláves, přičemž sloupcové vodiče byly připojeny k bráně B a řádkové vodiče k bráně A.

Obrázek 6: Pohled na zadní část skříně počítače IQ-151, na níž můžeme po pravé straně vidět chladič zdroje a po straně levé „vanu“ určenou pro připojení až pěti zásuvných modulů. Zde jsou již připojeny tři moduly – BASIC G, VIDEO 32 či VIDEO 64 a GRAFIK.
Klávesy se speciálním významem, tj. přeřaďovače SHIFT, CONTROL, FA a FB, byly přes přepínač zapojeny na vstupy 4 až 7 brány C (tato osmibitová brána byla rozdělena na dvě čtveřice bitů, z nichž každá mohla být nakonfigurována buď pro režim čtení nebo naopak zápisu). Ostatní piny brány C byly využity pro akustický výstup a taktéž řízení magnetofonu. Při zmínce o klávesnici nesmíme zapomenout na její fyzickou podobu, která byla velmi kuriózní. Sami konstruktéři tohoto počítače tvrdili, že z cenových a výrobních důvodů byla zvolena membránová klávesnice s kulatými tlačítky, která se mj. používala například i v některých telefonních přístrojích a ústřednách. Výsledkem byla naprosto nevhodná konstrukce klávesnice, což by možná nevadilo u počítače určeného pro použití v průmyslu, ale u počítače dodávaného do škol, kde na něm pracovali i mladší žáci se slabšími prsty a zápěstím, se jednalo o – z dnešního pohledu – skoro trestuhodný počin.

Obrázek 7: Počítač IQ-151 s připojeným televizorem. V praxi bylo nutné mezi počítač a televizor vkládat různé podložky (například třícentimetrová prkénka), aby se zajistilo dobré odvětrávání. Přehřátí počítače vedlo k jeho nestabilitě či úplnému vypnutí.
4. Záznam dat a programů na magnetofon
řekli o IQ-151: „… IQ 151, 151 byl index trpělivosti operátora …“
Při práci s magnetofonem byl využíván již zmíněný signál SR, který primárně sloužil k řádkové synchronizaci obrazu. Signál SR byl přiváděn na kmitočtový dělič, na jehož výstupu se objevoval vzorkovací signál o kmitočtu 1 kHz, který byl použit při zápisu i čtení dat na magnetofonovou pásku (rychlostí 1000 Bd) nebo kompaktní kazetu, v závislosti na tom, jaký typ magnetofonu se k počítači připojil. Většinu činností při čtení i zápisu dat prováděl přímo mikroprocesor – jednalo se například o převod dat do sériového tvaru, výpočet zabezpečovacího kódu, detekci nosného signálu atd. Zatímco programy ve strojovém kódu byly ukládány binárně v jediném datovém bloku, programy v Basicu se na kazetu ukládaly ve zdrojovém tvaru (tj. nikoli jako sekvence tokenů), což bylo v porovnání s ostatními osmibitovými počítači poměrně netypické (jednou z výjimek je Atari BASIC nabízející příkazy LIST „C:“ a ENTER kromě běžnějších CSAVE a CLOAD).

Obrázek 8: Pohled na pětici patic určených pro zapojení modulů do počítače IQ-151.
To, že se aplikace naprogramované v BASICu ukládaly na kazetu přímo ve své zdrojové podobě, s sebou přinášelo několik komplikací, které vycházely z faktu, že v operační paměti se BASICový program vždy reprezentoval ve formě takzvaných tokenů (zjednodušeně řečeno každé funkci či příkazu odpovídal jeden token, což byla u většiny Basiců jednobajtová konstanta). Počítač tedy musel zdrojový kód programu načítat z kazety a postupně ho tokenizovat a následně zařadit (podle čísla řádků) do správné oblasti operační paměti. Tokenizace a zařazení tokenů do paměti však nějaký čas trvala, což znamená, že mikroprocesor nemohl data tvořící program současně načítat z magnetofonu a současně zpracovávat (tokenizovat). Z tohoto důvodu se při zápisu programu na magnetofon mezi jednotlivé řádky vkládaly mezery o délce 0,5 sekundy, aby při zpětném načítání stihl mikroprocesor provést veškeré nutné činnosti. Ovšem u delších programů mezera 0,5 sekundy nebyla dostatečná, takže se mohlo stát, že s velkou námahou napsaný delší program už nešel po uložení na magnetofon načíst zpět do paměti (pokud uživatel neměl trénink v zastavování magnetofonu vždy v mezerách mezi jednotlivými řádky).

Obrázek 9: Hra spuštěná v emulátoru počítače IQ-151.
5. Paměťový subsystém počítače IQ-151
Paměťový subsystém počítače IQ-151 byl poměrně jednoduchý, jedinou zajímavostí byl způsob maskování části paměti RAM v případě, že se v počítači nacházel zásuvný modul s pamětí EPROM, jejíž paměťový rozsah s RAM kolidoval (což bylo v případě instalace 64 kB RAM vlastně kdykoli). Počítač již v základním vybavení obsahoval paměť ROM s monitorem (základním ovládacím programem), která měla kapacitu 6 kB. Mimo paměti ROM obsahoval IQ-151 v prvních verzích 32 kB operační paměti rozšiřitelné na 64 kB, později se dodávaly i kusy s nainstalovanými 64 kB. Původně se používaly, jak jsme si již řekli v předchozích kapitolách, paměti dovážené ze SSSR s organizací 16k×1 bit, které však trpěly mnoha neduhy, především přehříváním a taktéž tím, že vyžadovaly hned tři napájecí napětí – +5V pro rozhraní TTL, +12V na samotný záznam bitů a –5V pro odčerpávání rozptýleného náboje ze substrátu. Později byly sovětské paměti nahrazeny moduly MHB4116 (používanými i v mnoha dalších zařízeních), jichž se v počítači mohlo nacházet až 32. Na základní desce se taktéž nacházely konektory pro připojení pamětí EPROM typu 2708, 2716 nebo 2732.

Obrázek 10: Svojí modulární stavbou se počítač IQ-151 vzdáleně podobal osmibitovému počítači Apple II, který se shodou okolností taktéž používal ve školství, tentokrát však v USA. Po technologické stránce však nemohl IQ-151 se svým protějškem navrženým samotným Stevem „Wozem“ Wozniakem soutěžit.
6. Zásuvné moduly dostupné pro mikropočítač IQ-151
řekli o IQ-151: „We had this monster in school too. It had different graphics and text pages, so until you dont reset graphics, it was over the text you typed. Bad, bad computer. It produced A LOT of heat, when it was rainy day and some people came to school in wet clothes, put them on the back of this metal monster to dry it.“
V předchozích kapitolách jsme se několikrát zmínili o jakýchsi tajemných „zásuvných modulech“. Jednalo se o jednu z nejlepších vlastností architektury počítačů IQ-151, protože se pomocí zásuvných modulů daly tyto počítače rozšiřovat o další funkcionalitu, v mnoha ohledech podobně jako na Západě počítače Apple II. Počítač IQ-151 obsahoval pět pozic, do kterých bylo možné moduly zasouvat, ovšem v jeho prvních verzích se kvůli již zmíněným problémům s napájením mohlo použít pouze menší množství modulů současně. Většina modulů sice obsahovala pouze paměťové čipy EPROM, ovšem některé moduly na sobě měly i další obvody, takže například umožňovaly připojení různých periferních zařízení – plotteru, tiskárny, disketové jednotky nebo dokonce dálnopisu. Téměř povinný byl modul VIDEO 32 či VIDEO 64, který zajišťoval zobrazení textů na obrazovce, se samotným počítačem byl navíc dodáván i modul BASIC 6 a později BASIC G. Pravděpodobně nejzajímavější byl modul nazvaný GRAFIK, který počítač IQ-151 rozšiřoval o možnosti zobrazení monochromatické grafiky v rozlišení 512×256 bodů, pozdější verze též podporovaly barevnou grafiku.

Obrázek 11: 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.
V následující tabulce jsou vypsány nejznámější moduly, které byly pro počítače IQ-151 dostupné:
Název modulu | Popis modulu |
---|---|
VIDEO 32 | modul pro zobrazení textu s 32 sloupci a 32 řádky. Každý znak měl rozlišení 6×8 bodů |
VIDEO 64 | modul pro zobrazení textu s 64 sloupci a 32 řádky se stejným rozlišením řádků, jako u předchozího modulu |
BASIC 6 | základní verze BASICu |
BASIC G | verze BASICu rozšířená o grafické příkazy |
GRAFIK | podpora pro monochromatickou grafiku v rastru 512×256 bodů |
Amos/Pascal (16/32kB) | tento modul si popíšeme příště |
Amos/Assembler | taktéž tento modul bude popsán v další části |
Floppy | pro připojení jednotky PFD 251 |
Disc2 | 8″ floppy |
Staper | různé standardní periferie (čtečka/děrovačka pásky + tiskárna) |
Sestyk/Sestyk9 | sériový port |
SERI | „síťová karta“ pro zapojení do sítě FelNet |
KZD | pro připojení jednotky KZD 1 |
DLPS | pro připojení dálnopisu |
Universal | umožňující zhotovení interface dle potřeby, jehož součástí je i nástavec na opravy |
Robot | pro připojení stavebnice z mechaniky |
Milivoltmetr | modul pro přenos výsledků elektrických měření do počítače |
MS151,MS151A | modul pro plotter XY4130 |
Minigraf | modul pro plotter Minigraf 0507 |
GamaCentrum | modul pro tiskárnu Gamacentrum 01/02 |

Obrázek 12: Ještě jeden pohled na zadní část skříně počítače IQ-151 s trojicí nainstalovaných zásuvných modulů.
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.

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í.

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.

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ů„.

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.

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.

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.

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).

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ů.

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í.

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é školy
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čů).

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).

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.

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!

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 nestrukturované GOTO.