ZX Spectrum a Aritma Minigraf 0507
Úvod
Aritma Minigraf 0507 je malý perový plotr, který se vyráběl v letech 1985 - 1988 (dle roku na manuálu) k československým počítačům IQ151, PMD 85 a byl připojován prakticky ke všem tehdy dostupným osmibitům a později i k PC. Vyrábělo se několik verzí lišících se drobnými mechanickými detaily, existoval v oranžové barvě jako IQ151, s různými rozdíly v uchycení pera, s externím (verze 0517), nebo zabudovaným napájecím zdrojem (verze 0507), nebo jako stavebnice s označením Amagraf 0517. Díky existenci stavebnicové verze máme k dispozici nejenom schéma zapojení, ale i výkres mechaniky plotru.
Mechanika plotru působí ve srovnání s ostatními velmi robustně a tehdy byl plotr pravděpodobně i citelně dražší, četl jsem dobový článek, kde si na to pisatel stěžoval. Jednou ze zvláštností je posun pera pomocí trapézového šroubu se stoupáním 10mm, což je spolehlivé a na poměry plotrů velmi přesné. Levnější konkurenční plotry (Alfigraf a jeho klony, nebo i řada XY-41xx...) používaly tažné lanko. S lankem je narozdíl od šroubu obtížnější dosáhnout tak dobré opakovatelnosti polohy pera.
V mém plotru se pero upevňuje do malého svěráčku. Výšku pera lze v malém rozsahu jemně doladit hnědým šroubem, který se spodním koncem opírá o lištu sklápěnou elektromagnetem. Na fotkách jiných verzí jsem viděl upevnění do závitu, což poskytuje lepší opakovatelnost v XY souřadnicích, chci-li pero během tisku měnit. Ale je to méně univerzální. Do závitu nelze upnout libovolné pisátko vhodného průměru právě koupitelné v papírnictví.
Většinu prostoru na plošném spoji zabírá v mé verzi spínaný zdroj. Menší část pár logických obvodů a tranzistory, kterými se spínají cívky motorů a cívka magnetu pera. Použití spínaného zdroje ve spotřební elektronice nebylo v 80. letech tak běžné jako dnes a rozhodně neexistoval velký výběr integrovaných obvodů a dalších součástek pro tento účel.
Základní parametry Minigrafu
- pokreslitelná plocha programem MZXR 188x263mm (A4 na výšku), tj. 1504 x 2104 kroků
- velikost kroku 1/8mm (0.125mm) v obou osách
- rychlost kreslení údajně 100mm/s (hodnota vypadá reálně, ale SAPI.CZ píše rychlost poloviční, týká se starší verze plotru?)
- hmotnost cca 3.4kg (kuchyňskou váhou)
- rozměry ve složeném stavu naměřeno cca 390x110x100mm (SAPI.CZ píše 400x110x105mm)
Pokreslitelná plocha by na šířku papíru mohla být teoreticky až 200mm, ale kresba nad 190mm šířky by zasahovala pod kolečka pro posuv papíru. Stejně tak by teoreticky papír mohl být delší až nekonečný (role), ale s větší délkou bude obtížnější zajistit kolmost posuvu vůči trase pera. Takže limity dané programem MZXR se blíží skutečným fyzickým limitům plotru.
Kreslit se dá na cokoli, co není příliš chatrné, nebo příliš tlusté a má zhruba rozměry formátu A4. Kreslit se dá čímkoli, co se do plotru dá upnout. Dají se použít kuličková pera, různé fixy s filcovým hrotem a mnoho dalších.
Připojení k ZX Spectru
Připojuje se na port 63. V manuálu k Desktopu od Proximy se píše, že se připojuje originálním interface od výrobce plotru. V uživatelském manuálu k plotru a programu MZXR (na straně 5 - viz download na konci tohoto textu) je dokonce schéma zapojení toho interface.
Zapojení originálního interface k plotru je zjevně zjednodušené, jak jen to šlo. Na první pohled bude problematický kvůli zrcadlení portů, protože používá pouze A7 a ostatní adresy ignoruje. Naštěstí je ta osmice klopných obvodů (ve schématu K374, jinde zmíněno, že jde o 74LS374, odpovídá i rozložením vývodů) jen výstupní a nemůže data vracet zpět na sběrnici ZX Spectra.
Jinde jsem zahlédl zmínku, že by plotr svými vstupy mohl přetěžovat 8255. Domnívám se, že to je spíš mýtus, té 74LS374 v originálním interface by to muselo vadit taky. Ale to jsem z počátku netušil, manuál k plotru jsem získal až mnohem později a originální interface jsem dosud neviděl. Takže jsem plotr k 8255 v UR-4 připojil a funguje to tak už mnoho let. Snad se problém s přetěžováním týká starší verze plotru? Nevím. Na portu 63 určitě pracují dva nejpoužitelnější obslužné programy, textový editor Desktop i dodávaný obslužný program MZXR a pravděpodobně i všechny ostatní. Oba programy si s plotrem připojeným na UR-4 rozumí bez potíží. Nakonec, manuál možnost připojení k 8255 zmiňuje a program MZXR počítá i s inicializací interface na portu 127.
Pozor na to, že vylisovaná čísla na vyfoceném FRB konektoru se neshodují s číslováním vývodů UR-4. Plast toho FRB konektoru mohl být osazen kolíky, nebo zdířkami a číslování je platné pro kolíky.
vývod UR-4 | signál 8255 | signál plotru | vývod Minigrafu |
---|---|---|---|
9 | B0 | X1 | 10 |
10 | B1 | X2 | 9 |
11 | B2 | X4 | 8 |
12 | B3 | Y1 | 4 |
13 | B4 | Y2 | 3 |
14 | B5 | Y4 | 2 |
15 | B6 | nc | - |
16 | B7 | pero | 5 |
24,27,29 | GND | GND | 1,11 |
Konektor pro připojení kabelu je stejného typu jako pro připojení periferií ke sběrnici ZX Spectra, má stejnou rozteč 2.54mm, jen kontaktů je pouze 12 a ještě na pozici 7 je zámek. V plotru jsou kontakty pouze na spodní straně plošného spoje, proto má význam jen spodní řada
Ovládání plotru
V době, ze které Minigraf 0507 pochází bylo u hodně levných plotrů častější řídit krokové motory přímo počítačem, obvykle 4 bity pro každý motor. Aritma Minigraf 0507 má v sobě logiku, která kombinuje signály pro krokové motory z binárních čísel 0 - 7, která se nastavují na vstupech X1, X2, X4 (Y1, Y2, Y4), propojovací kabel si tak vystačí se sedmi vodiči a interface se 7 řídícími bity. Stačí mu k řízení jediný port, ve srovnání např. s merkurovým Alfi, který potřebuje 2x 4 bity pro motory + pero, tedy 9 signálů.
Viz z manuálu převzatá tabulka - zvyšováním čísla ve dvojkové soustavě o 1 se motor otáčí jedním směrem a snižováním se bude otáčet opačně. Po dosažení kroku 7 následuje 0 a naopak po 0 následuje krok 7.
krok | X4 (Y4) | X2 (Y2) | X1 (Y1) |
---|---|---|---|
0 | L | L | L |
1 | L | L | H |
2 | L | H | L |
3 | L | H | H |
4 | H | L | L |
5 | H | L | H |
6 | H | H | L |
7 | H | H | H |
Software
K plotru se dodával program MZXR, který kreslí vektorově. Používá vlastní tiskový jazyk, vzdáleně podobný HPGL, ale není kompatibilní ani tak rozsáhlý. Kresby vytvořené na ZX Spectru v jazyce programu MZXR jsou nepřenosné jinam a naopak na Minigrafu pomocí MZXR nelze přímo tisknout kresby v HPGL. To je nepříjemnost, kterou jsem později zkoušel řešit nejprve pluginem pro Inkscape a později samostatnou konverzní utilitkou z kreseb exportovaných do HPGL Inkscapem. Víc v odkazovaném článku.
Program MZXR slouží jako univerzální tiskový ovladač pro Sinclair BASIC. Kromě příkazů pro základní kreslení úseček, kružnic, všelijak velikého a pootočeného písma nabízí i obsluhu kanálu #3, tím i příkazů LLIST a LPRINT.
Dalším programem, který pracuje s Minigrafem je textový editor Desktop od Proximy. Ten z podstaty svého fungování simuluje na Minigrafu tisk jednojehličkovou tiskárnou. Což je pomalé ve srovnání s vykreslováním písmenek úsečkami, ale přesto lze dosáhnout zajímavých výsledků.
Obslužný program MZXR
Nechci přepisovat celý manuál ačkoli, než jsem manuál získal, musel jsem leccos zjišťovat disassemblováním kódu a experimentováním. Spíš bych se chtěl soustředit na praktické vlastnosti, které manuál možná předpokládá, ale nezmiňuje.
Bezprostředně po načtení MZXR do ZX Spectra se program zeptá ja adresu, kam se má přesunout. Obvykle je nejlepší zadat nejvyšší možnou hodnotu 65535 - 2848 = 62687 (3160 bytů má program před relokací, 2848 bytů po relokaci), nejčastěji zadávám 62500, protože to je kulatější číslo a lépe se pamatuje. Málokdy potřebuji i těch posledních pár bytů navíc. Po zadání adresy se MZXR přesune, nastaví o jedna menší RAMTOP a zároveň nastaví přesměrování kanálů #3 a #7.
Nezadáte-li cílovou adresu přesunu, MZXR se přesune na adresu 62519, protože 62519 + 2848 zaplní prostor před UDG, ale UDG nepřepíše. První byte, kde začíná UDG lze vypsat příkazem PRINT USR "a".
Zavaděč MZXR (na TRDOSu) má pouze dva řádky, řádek 1 a řádek 2. Zadáním těchto dvou čísel lze zavaděč snadno smazat před načtením BASICového programu k vytištění. Z pásky má řádek jen jeden.
Dokonce lze zadat i příkaz NEW a BASIC zcela smazat. Nastavený RAMTOP zajistí, že ovladač v paměti zůstane. Smaže se ale přesměrování kanálů, to je třeba po příkazu NEW obnovit pomocí RANDOMIZE USR adresa, kam se MZXR nainstaloval.
Kanál #3 se na ZX Spectru standardně používá pro tisk pomocí příkazů LPRINT a LLIST, resp. i pomocí dalších příkazů jako je třeba PRINT #3, LIST #3 a dalších. V případě TRDOSu verze 5.05CZ lze použít i příkazy CAT #3 a LIST #3 z příkazového řádku TRDOSu (nebo RANDOMIZE USR 15619: REM : LIST z BASICu) pro tisk obsahu diskety. Právě příkaz LIST je v této verzi TRDOSu opraven a funguje velmi dobře nejenom s MZXR. CAT #3 funguje hůř, nezalamuje správně řádky.
Přes kanál #3 je možné tisknout i z jiných programů, nejenom přímo z BASICu, např. z assembleru Prometheus. Ale vměstnání Promethea spolu s větším zdrojovým kódem a zároveň s tiskovým ovladačem může být komplikované. Je třeba dobře vědět, kam se co v paměti ukládá, aby se programy vzájemně nepřepsaly.
Přes kanál #7 se program MZXR ovládá, konfiguruje a zadávají se mu příkazy, viz následující tabulka opsaná z manuálu.
příkaz | význam |
---|---|
IM | inicializace kreslení perem |
IS | inicializace kreslení na obrazovku - náhled tisku |
PU | pen up, zdvižení pera |
PD | pen down, položení pera na papír |
PI | kreslení přerušované čáry |
MA | move absolute, posun na zadané souřadnice s perem dle předchozího nastavení, může být zdviženo, položeno, nebo kreslit přerušovanou čáru (třeba čárkovaně, čerchovaně ...) |
MR | move relative, posun o zadané hodnoty, jinak stejné jako MA |
MU | přesun na zadané souřadnice se zdviženým perem |
SU | nastavuje omezení pro tiskovou oblast podle polohy pera |
SM | nastavuje omezení pro tiskovou oblast podle polohy pera |
SI | nastavení kombinace přerušování čáry |
SW | set write, nastavení písma, jeho velikosti sklonu, poměru výšky a šířky ..., první parametr je velikost písma, poslední náklon |
WR | write, psaní textu, kde je pero bude levý dolní roh písmena |
CI | circle, kreslení kružnic |
CS | tisk obsahu obrazovky |
Pokreslitelná plocha programem MZXR je 188x263mm. Zásahem do programu MZXR lze plochu rozšířit až na 200*270mm, ale pozor na to, že pak bude plotr kreslit do míst, kde se odvalují gumové válečky posuvu papíru a ta mohou pomaleji schnoucí inkoust obtiskávat po délce papíru a tím kresbu zničit.
Před kreslením je nutné program inicializovat příkazem IM, nebo IS. IM volí kreslení perem na papír, IS volí kreslení na obrazovku. Lze tak vytvořit náhled tisku před samotným kreslením na papír. Bohužel rozlišení ZX Spectra není dost velké, aby byly vidět všechny detaily. Přesto je to schopnost užitečná, obvykle se používá ke kontrole, jestli je kresba umístěna správně. Zatím jsem neviděl jiný ovladač, který by něco takového na osmibitu nabízel.
Po zadání příkazu PRINT #7,IM je vhodný okamžik vložit papír. Papír má být (dle manuálu) vložen tak, že se jeho horní hrana kryje s hranou odklopeného krytu. Program si pak papír zasune na správné místo. Stejný způsob vkládání očekává i Desktop.
Jednoduchý program, kreslící rámeček může vypadat třeba takto. Složitější ukázka viz demo přiložené k MZXR.
10 PRINT #7,IM,MA,0,0 20 PRINT "VLOZTE PAPIR"'"pero v levem dolnim rohu": PAUSE 0 30 PRINT #7,PD;MA,188,0 40 PRINT #7,MA,188,263 40 PRINT #7,MA,0,263 40 PRINT #7,MA,188,0 40 PRINT #7,PU
Je-li víc příkazů na jednom řádku, oddělují se středníkem. První příkaz musí být oddělen čárkou, stejně tak všechny parametry. Souřadnice jsou v mm a mohou být desetinné, pak se používá desetinná tečka.
Parametrem příkazů mohou být proměnné i výrazy. Lze tak snadno používat cykly a různé funkce, opět viz demo, kde to je několikrát použito.
Ukázky vektorového tisku
Takto vypadá vektorový výtisk dema MZXR s 0,5mm černým gelovým perem. Výpis programu v pravém sloupci je právě ten ukázkový program, který mimo jiné vypíše i sám sebe.
Snažil jsem se, aby na scanu bylo vidět maximum, protože na internetu se ukázky výtisku ze starých tiskáren skoro nedají najít, ale bohužel nemůžu na tento web umístit příliš veliký soubor, takže alespoň takto. Přiložené pravítko je pro představu o skutečných rozměrech tisku, obrázek byl scanován v 600dpi a poté zmenšen na 300dpi a převeden do odstínů šedé.
Obrázek je úmyslně scanován tmavší, aby vynikla textura papíru, který je ovšem za normálního osvětlení na pohled zcela bílý.
Všimněte si šířky rámečku podle pravítka (cca 149,7mm) a hodnoty v programu 150.
Další obrázek ukazuje různé tisky z různých tiskáren dostupných v období let 1988 až 1992. Minigraf nevychází z toho srovnání vůbec špatně pokud byl používán na výpis textu. Podobné lístky s obsahem disket byly docela užitečné pro orientaci, co je na disketě bez zapínání počítače.
TODO: přidat ukázku tisku z BASICu.
Jak vypadá a jak dlouho trvá kreslení složitější kresby můžete vidět na tomto videu.
Tisk z textového editoru Desktop
Desktop, jeden z nejlepších programů pro ZX Spectrum, které existují. Editor, který v pouhých 48kB RAM dokáže zpracovat docela dlouhé komprimované texty kombinované s vloženými obrázky a to celé zobrazuje tak, jak bude vytištěno, tj. je skutečně a stoprocentně WYSIWYG do posledního pixelu. Na osmibitech unikátní záležitost a do značné míry neobvyklá i na PC v době, kdy Desktop vznikal (1990? Dle WoSu vydán 1991).
Aby toho nebylo málo, tak Desktop dokáže pracovat s poměrně velkým množstvím tiskáren a to často v několika různých zapojeních, pokud existovaly. Aritma 0507 více variant zapojení nemá, ale tím je spíše výjimkou, zato v nastavení má možností o něco více.
Velikost potisknutelné plochy Desktopu pak 1440x2160 kroků, což se od MZXR příliš neliší. Jeden pixel je ve výchozím nastavení veliký 3x3 kroky motorů v plotru. Z toho vyplývá šířka stránky 1440/3 = 480px a výška stránky 2160/(12*3) = 60 řádků. Oba parametry jsou defakto standard Desktopu pro dokumenty snadno přenositelné a tisknutelné na více tiskárnách.
Kvality tisku se týká velikost kroku (step), nastavení kvality (quality), nastavení rychlosti (speed) a položka reverse. Step říká kolik kroků plotr udělá pro každý jednotlivý pixel, hodnota se pohybuje někde mezi 2 - 5. Při 2 je písmo hodně titěrné i pro velmi kvalitní a tenká pera, pro běžné 0,5mm kuličkovky je vhodná 3 - 4, pro mikrofixy 0,5mm 4 - 5, protože se více rozpíjejí. Krok 1 se mi neosvědčil, jednak to těžko zvládají i jinak velmi dobré kuličkové gelovky od Pilotu a hlavně v Desktopu je nějaká chyba a tiskne chybně.
Speed udává velikost zpomalení, pokud plotr ztrácí kroky (mikrořádky jsou různě posunuté), tak se vyplatí hodnotu zvětšit, někdy stačí málo, příliš velká hodnota znamená výrazně delší čekání na výsledek.
Reverse udává o kolik kroků níž se bude tisknout zpětný běh při nastavení lepší kvality. Např. při velikosti kroku 4 je vhodné nastavit reverse 2, pero se tak pěkně trefí mezi dva mikrořádky a barevné plochy budou hezky pokryté.
Prvních 5 řádků je tištěno s nastavením Quality = better. Step xy je nastaven shora na 2x2, 3x2, 3x3, 4x4 (reverse 1), 4x4 (reverse 2). Všimněte si jaký význam má reverse u dvou řádků 4x4, když se pero trefí správně doprostřed mezi mikrořádky.
6. až 8. řádek jsou vytištěné s Quality = normal a opět s různými kroky, tentokrát 2x2, 3x3 a 4x4. Reverse nemá smysl, při zpětném běhu plotr kreslí následující mikrořádek s jinými pixely.
Poslední řádek textu je pro změnu vykreslen mikrofixou Centropen s nastavením Quality = better, step 4x4 a reverse 2. Na první pohled je barva více rozpitá a ztrácejí se tenké linky, kde barva být nemá. Ve skutečnosti, což na scanu vidět není, je tisk viditelně méně kontrastní a spíš tmavošedý.
Obrázek byl scanován v 600dpi a poté zmenšen na 300dpi a převeden do odstínů šedé ... přesně stejně jako obrázek vektorové kresby.
TODO: přidat další ukázky tisku.
Bohužel rastrový tisk na perovém plotru je velice pomalý a hlučný, pomalejší a hlučnější než jednojehličková BT-100. Ale je to jediný způsob, jak na perovém plotru dosáhnout alespoň nějaké kompatibility s ostatními tiskárnami.
Odkazy
- Video na Youtube - Minigraf Aritma 0507 tiskne krabičku na diskety
- Video na Youtube - Minigraf Aritma 0507 tiskne smajlíky
- Video na Youtube - Minigraf Aritma 0507 tiskne tramvaj
- Video na Youtube - Minigraf Aritma 0507 tiskne tramvaj
- https://web.archive.org/web/20080223014703/http://osmi.tarbik.com/cssr/dalsi_prislusenstvi.html - (původní web nefunguje - webarchive) stručný soupis různých tiskáren k osmibitům
- http://www.digitron.cz/periferie.htm - další info a spousta fotek
- http://www.pablox.net/ - připojení plotru k PC
- http://www.sapi.cz/prislusenstvi/0507.php - pěkný popis od EC1045
Download
Zatím je tu ke stažení jen program MZXR, ale připravuji disassemblované a okomentované zdrojáky obou tiskových ovladačů. Aktuálně jsou oba analyzovány jen z části a zbývá ještě leccos okomentovat, oba je možné zkompilovat a výsledek je plně funkční.
- mzxr.tap - původní ovladač pro vektorový tisk na ZX Spectrum a Aritma 0507 dodávaný výrobcem
- aritma_mzxr_manual.tar.bz2 - kompletní scanovaný manuál k programu MZXR
- cspo_pr_aritmapraha_amagraf_0517.zip - kompletní scanovaný manuál ke stavebnici plotru Amagraf 0517 (scanoval někdo jiný v roce 2012, bohužel nevím kdo)
- data_basic_tramvaj_ckd_t3.tap - vytisknutelný obrázek tramvaje nakreslený v Inkscape (3x program v BASICu, tisknout postupně)
- data_basic_emoticons.tap - vytisknutelný obrázek smajlíků nakreslený v Inkscape (4x program v BASICu, tisknout postupně)
- desktop_driver_aritma_minigraf_0507.tar.bz2 - z velké části disassemblovaný a okomentovaný originální ovladač, který byl distribuován Proximou jako součást editoru Desktop
Historie změn článku
- 2009-01-01 - zveřejněno
- 2011-05-19 - doplněny malé fotografie plotru
- 2013-06-01 - přidán manuál ke stažení - scanoval TAU, já vyčistil stránky, seřadil, ořezal, zabalil
- 2020-08-22 - aktualizováno, přidány fotky, text částečně přepsán, korigován, doplněn, některé údaje uvedeny na pravou míru