ZX Spectrum a plotr XY4160

Úvod

XY4160 je jedním z mnoha malých plotrů k osmibitovým počítačům, jakých se v letech 198x vyskytovalo na trhu a mezi lidmi mnoho typů. Od ostatních výrobků z východního bloku se ale velmi zásadně liší tím, že má vlastní CPU a je schopen interpretovat jazyk HPGL do značné míry (zcela?) kompatibilní s tehdy drahými a dodnes ceněnými plotry Hewlett Packard (např. 7470A) - soudím podle cen na ebay.com, kde se ceny v současnosti (05/2011) pohybovaly okolo 100 - 400USD plus doprava.

Měl jsem to štěstí jeden takový plotr celým jménem Grafická Jednotka XY4160 - Laboratorní Přístroje Praha objevit, opravit (byl vadný jeden z tranzistorů KD139), zprovoznit a trochu si s ním zaexperimentovat. Žel času není mnoho, ale i tak lepší než nic. Tím spíš, že jsem zkoušel pátrat po jakýchkoli podrobnostech o tomto zařízení a převážně jsem našel pouze dotazy zoufalých majitelů, kteří si s ním nevěděli rady a pár obrázků. Jinak nic. Snad tedy bude tento text někomu k užitku.

Základní vlastnosti

  • formát papíru A4
  • rozlišení 7400 x 10400 bodů na ploše 186 x 258mm, lze softwarově rotovat o 90°
  • rychlost kreslení nastavitelná 50 - 100mm/s (dle manuálu až 120mm/s ale vložený list s opravami chyb uvádí 100mm/s)
  • rozhraní RS232 (V.24), max. rychlost 4800bps, což bohatě postačuje, omezení je hlavně v rychlosti pohybu
  • CPU UB880D (klon Z80), 512 bytů buffer (1kB RAM ve dvou MHB2114), sériové rozhraní MHB8251, UB857 (Z80 CTC), MHB8255 a další podpůrné IO
  • rozhraní RS232 (V.24), max. rychlost 4800bps, což bohatě postačuje, omezení je hlavně v rychlosti pohybu
  • počet per 1
  • upevnění pera v držáku se závitem kompatibilní s pery Centrograf 1060
  • pohon pera lankem, podobné známému Alfigrafu, ale kvalitněji provedené
  • přítlačný magnet přímo na vozíku s perem, plotr je díky tomu tišší než Aritma 0507

Oproti plotru Minigraf Aritma 0507 je kromě interpretace HPGL plotr o něco rychlejší, tišší a navzdory znatelné vůli pera na vozíku přesnější. Kresba je o trochu méně zubatá, což je vidět hlavně na obloucích a kružnicích. Doplňuji: Není úplně pravda - viz srovnání složitějších kreseb, kresba XY4160 by měla být přesnější, protože plotr dělá menší kroky, konkrétně 1/10mm oproti Minigrafu Aritma, který krokuje po 1/8mm. Ve skutečnosti se zřejmě projevuje zaokrouhlení při interpretaci HPGL spolu s vůlemi mechaniky do té míry, že kresba v některých místech vypadá hůř. Záleží na úhlech čar. Některé vykreslí lépe Aritma Minigraf, jiné XY4160. Výsledek je srovnatelný.

Podle jednoho článku ze starého ZX Magazínu (konkrétně číslo 6 z roku 1990) ani tak nedosahuje kvalit plotrů Hewlett Packard 7470, jejichž kresba údajně není viditelně zubatá vůbec. Bohužel jsem je dosud naživo v provozu neviděl.

Rozhraní RS232 mohlo být v době prodeje plotru a pro uživatele osmibitových počítačů (1988 - 1990?) spíš potíží, význam pro tehdejší uživatele PC nedovedu posoudit. U osmibitových počítačů a zvláště u ZX Spectra nebylo rozhraní RS232 obvyklé. ZX Spectrum 128k, sice RS232 port obsahuje, ale má nestandardní konektory a řízení signálů je softwarové, takže vyžaduje značnou režii CPU počítače při přenosu dat. Tím se trochu ztrácí výhody vlastního CPU v plotru. Ani u ostatních počítačů nebývalo připojení zcela bezproblémové (neobvyklé/nesehnatelné konektory, nezvyklé rozložení vývodů, proudová smyčka místo napěťových úrovní ...). Navíc plotr musel být v době prodeje díky svým vlastnostem drahý (věřím, že i tak znatelně levnější než plotr Hewlett Packard v té době). Zřejmě nejenom díky tomu se jedná o zařízení poměrně raritní. Mnohem rozšířenější jsou dřívejší a nejspíš levnější varianty XY-4130, XY-4131, XY-4140, XY-4150. Poslední dvě už měly plastové šasi velmi podobné modelu XY-4160, ale řízené byly stále jen TTL signály z počítače obstarávajícího interpretaci příkazů. Viz např. článek o plotrech na root.cz.

Dnes máme mnoho PC s RS232, USB redukce a i u ZX Spectra máme kvalitní RS232 interface SIF, takže nic nebrání připojení plotru skoro k čemukoli.

foto foto foto

Na prvním snímku si můžete všimnout přemostění na desce. Zřejmě opravená výrobní chyba. A samozřejmě impozantních nepřehlédnutelných elektrolytických kondenzátorů. (Ne, plotr opravdu není schopen dokreslit kresbu i po odpojení ze sítě :-))

Na dalších dvou jsou vidět konfigurační přepínače neprakticky umístěné pod krytem (nastaveno 4800bps, 1, N), dále podivné nestandardní konektory pro připojení krokových motorů a koncových spínačů. Manipulace s konektory je naprosto zoufalá, protože na nich připájené drátky od krokových motorů se velmi snadno lámou, skoro stačí se na ně zle podívat. Pájel jsem je zpět nejméně 10x. Koncové spínače jsou dva, na každém konci dráhy vozíku jeden.

foto foto foto

Na levém snímku je vidět kousek pohonu vozíku. Vozík je tahán lankem omotaným okolo hřídele - spíš černý plastový válec součástí ozubeného kola, kterým otáčí jeden z motorů. Na druhé straně je kladka s kuličkovým ložiskem. Povolením šroubu a posunutím kladky lze lanko trochu napnout. Principielně totéž jako Alfigraf, jen provedení je kvalitnější.

Nakonec snímek sestaveného plotru a jeho výrobní štítek. Obliba hliníkových štítků s vyraženými údaji je pro toto období a tuzemskou výrobu typická.

Připojení

K připojení je nezbytné sériové rozhraní RS232, nejlépe s hardwarovým řízením toku dat. Plotr umí i softwarové řízení toku pomocí signálních bytů Xon/Xoff (viz článek na Wikipedii, nebo kapitola v manulálu k plotru), ale u osmibitového počítače je čtení bytu signalizujícího zaplněný buffer v plotru větší komplikací než jednoduchá detekce stavu jednoho signálu. Zvláště pokud je serializace dat softwarová. U velkého PC na tom tolik nezáleží.

Rozmístění vývodů a signálů na konektoru je zcela standardní, pro orientaci viz obrázek.

foto

konektor 9 pin konektor 25 pin

Standardní zapojení DTE-DTE

Připojení se ovšem neobešlo pez potíží. Nejprve jsem použil standardní 8 žilový kabel DTE-DTE (9pin - 25pin) určený k propojení dvou PC. Pro srovnání viz tabulka. S tímto kabelem plotr přijímá data, ale nefunguje HW řízení toku dat, takže se někdy v průběhu kreslení (brzy) zaplní paměť plotru a komunikace se zasekne, nebo začne plotr kreslit nesmysly. Ekvivalentní zapojení kabelu (9pin - 9pin) používám ke komunikaci mezi PC a ZX Spectrem s interface SIF a vše funguje korektně oběma směry.

nakres kabelu

Manuálem plotru doporučené zapojení

Zkusil jsem zpřeházet vodiče podle dodatku k manuálu (viz druhý obrázek s nascanovanou kresbou), kde je nakreslené opravené zapojení kabelu pro dva 25 pinové konektory. Ale ani toto zapojení nepomohlo. HW řízení toku s takto zapojeným kabelem prý Linux podporuje, ale nikoli pomocí nastavení stty. Musel bych si napsat vlastní obslužný program. A jelikož jsem chtěl kreslit prostým odesláním dat pomocí cat soubor > /dev/sériák, tak nezbylo než pátrat dál.

nakres kabelu scan

Funkční zapojení?

Kolega naštěstí dohledal, že se zřejmě jedná o starý a zjednodušený způsob řízení toku dat používaný mimo jiné v DOSu a do určité míry se dá problém obejít zapojením signálů DTR - CTS, čímž se oklikou dostávám zpět k původnímu zapojení z manuálu k plotru před opravou vloženými listy. Podle zmínek v různých diskuzních fórech jsem určitě nebyl jediný, kdo na problém narazil. Většinou se problémy týkaly starých terminálů a tiskáren všeho druhu.

nakres kabelu

Problémy s onboard sériovými porty v PC zůstaly, ale pomohlo to při komunikaci přes USB - RS232 konvertor Prolific a se SIFem, což je důležité. S tím přenos fungoval spolehlivě, data se přestala ztrácet. Vyzkoušel jsem to na několika hodně složitých kresbách i programech, které data generovaly.

Sériový port jsem na Linuxu nastavoval takto

stty -F /dev/ttyS0 4800 cs8 clocal cread -cstopb -parenb parodd crtscts raw

Resp. později takto pro výchozí konfiguraci přepínačů - tj. 4800bps, 2 stop bity, žádná parita.

stty -F /dev/ttyS0 4800 cs8 clocal cread cstopb -parenb parodd crtscts raw

Analogicky jsem nastavoval i SIF, viz zdrojový kód jednoduchého obslužného programu.

Softwarové řízení toku dat

Zapojení z manuálu sice funguje s jednou z mých USB-RS232 redukcí, ale já chtěl plotr připojit i ke skutečné onboard RS232. Třeba proto, že mám stolní PC s RS232 i pár notebooků taktéž vybavených skutečnou RS232. Na všech už dávno běží některá z distribucí Linuxu. Ostatně RS232 a LPT karty se dnes (rok 2018) stále dají koupit i pro PCIe sběrnici.(věděli jste, že standard RS232 je s námi od roku 1969?

Přes veškerou snahu se mi se skutečnou RS232 nepodařio hardwarové řízení toku dat zprovoznit.Nejlepší, čeho jsem dosáhl byl stav, kdy plotr přijímal data, párkrát pozastavil tok (sledoval jsem osciloskopem) a nakonec zůstal v tom stavu, kdy PC signalizoval zaplněný buffer a nezbylo mi než plotr vypnutím resetovat.

Zkusil jsem tedy zprovoznit řízení softwarové. V manuálu je popsáno, jak softwarové řízení zapnout pomocí sekvence tří bytů (znak escape, tečka, velké X, dvojtečka), případně jak nastavit při kolika zbávajících bytech se má stop znak poslat.

[ESC].X:

Při softwarovém řízení se používají pouze signály RxD a TxD, spolu s GND proto stačí k propojení obouzařízení jen tři vodiče. Vysílajícímu počítači plotr oznamuje zaplnění bufferu a tedy blížící se neschopnosti přijmout další data s mírným předstihem (pár desítek bytů), během vysílání stop bytu počítač může vysílat také a bezprostředně po jeho přijetí by měl vysílání dat do plotru zastavit. Používají se tyto byty.

znakdekadickyšestnáctkověvýznam
Xoff190x13CTRL+S, zastaví přenos dat
Xon170x11CTRL+Q, povolí pokračování přenosu dat

Máte-li nastavený plotr, je nezbytné nastavit i počítač, aby na stop byte správně reagoval. Na Linuxovém PC to uděláte takto, vypnutí crtscts je důležité, bez toho jsou parametry ixon a ixoff ignorovány, ixoff pravděpodobně potřeba není, byl by potřeba v případě, že by PC mělo být příjemcem dat, ale raději nastavuji obojí.

stty -F /dev/ttyS0 4800 cs8 clocal cread cstopb -parenb parodd ixon ixoff -crtscts raw

Pisátko

Upevnění pera může být velký problém. Nechcete-li zničit historický artefakt, tj. pěkně zachovalý plotr v původním stavu, tak nezbývá než sehnat pero s kompatibilním závitem a upevnit pisátko do vyrobené redukce. Nechám na vaší fantazii.

Pro svou potřebu jsem použil jedno ze starých per Centrograf 1060 a přizpůsobil ho použití modernějších náplní. Vyplnil jsem dolní část Dentakrylem, po zatuhnutí je velmi odolný a dobře se obrábí. Potom jsem do něj vyvrtal otvor tak, aby se dovnitř dala natěsno nasunout náplň z kuličkových gelových per (Pilot G-2 0.5) a horní konec zajistit zašroubováním vrchního dílu, kde je malý špunt s pružinkou. Výsledkem je prakticky obyčejná propiska s vyměnitelnou náplní, která jde snadno a bez problémů našroubovat do plotru.

Bohužel, když jsem zkusil pero Centrograf koupit nové (někdy v roce 2010, tmavomodré a hranatější), tak mělo velmi podobný (na pohled stejný) leč nekompatibilní závit. Začalo drhnout po několika otáčkách a málem jsem ho nedostal ven bez poškození plotru. Zkoušejte opatrně, dovnitř jsem ho nešrouboval silou a přesto šlo ven velmi špatně. Stoupání závidu se zdálo být shodné, ale za ty roky nejspíš změnili formu a výrobní tolerance byla jiná. Podobný problém jsem měl i s velmi starými pery z černého plastu. Pouze ta zelená jako na fotkách pasují perfektně.

foto foto

Gelové náplně se mimochodem osvědčují skvěle, stejně jako u plotru Minigraf Aritma 0507, píší tence a spolehlivě i když na začátku čáry je vidět velmi krátký úsek, než pero psát začne. Problém asi všech kuličkových pisátek. Jsou dostupné v různých barvách i tloušťkách (nejběžněji 0.5 a 0.7mm). Trubičkové pero s tuší jsem před mnoha lety zkoušel taky, ale neosvědčilo se. Inkoust protékal špatně, nebo příliš, nepomohlo ani použití více druhů inkoustu (vč. inkoustu Rotring), ani experimentování s různými průřezy trubiček. Znovu to zkoušet nehodlám, matlání s inkoustem mne opravdu nebaví.

Ovládání plotru

Nechci jedním článkem nahrazovat rozsáhlý manuál, ale protože to bez informací nejde a rozhodně nemám čas převádět manuál do elektronické podoby, tak zkusím vypsat alespoň pár nejzákladnějších příkazů a další informace potřebné k jednoduchému kreslení.

Manuální ovládání tlačítky

Po zapnutí bliká zelená LED a plotr je připraven ke vložení papíru, lze nasunout/vysunout pomocí tlačítek s šipkami nahoru a dolů.

Po vložení papíru zmáčkněte CNT na plotru a ten se přepne do režimu digitalizace - bliká žlutá LED, zde lze ručně nastavit rotaci os stiskem SH + PEN - signalizováno rozsvícením zelené LED. Pozor na to, že mnoho kreseb má na začátku instrukci IN;, čímž se ručně nastavená rotace souřadnicové soustavy resetuje do výchozího stavu (zelená LED označená ROT zhasne).

Stiskněte CNT ještě jednou a teď je plotr připraven přijímat data, svítí jen power LED, případně ERR, pokud někdy předtím chyba nastala. Mačkáním CNT v tomto režimu můžete plotr přepínat do režimu náhledu, signalizováno blikáním žluté i zelené LED současně a zase zpátky do režimu kreslení. Přepnutí do náhledu během kreslení způsobí zvihnutí pera a najetí na souřadnice [0,0], aby byla vidět celá kresba.

Na začátek do režimu vkládání papíru se lze dostat současným stiskem tlačítek SH a CNT v režimu náhledu.

Pokud budete během zapnutí držet tlačítka P1 + P2, tj. od okamžiku překlopení zapínací páčky až do režimu vkládání papíru, tak se po vložení papíru a následném dvojím stisknutí CNT (jako vstup do režimu kreslení) nakreslí demostránka.

Nejzákladnější příkazy HPGL

Všechny příkazy popisuje manuál o 100 stránkách, takže následující tabulka je opravdu to nejnutnější minumum. Hodně příkazů se týká psaní textu a parametrů písma, plotr umí 8 sad písma (včetně řeckých písmen a azbuky), pár příkazů kreslí obchodní grafiku, jako např. sloupcové a koláčové grafy s různým šrafováním a pod.

Dokonce lze plotrem provádět "digitalizaci", což znamená, že uživatel ručně pomocí tlačítek na ovládacím panelu posouvá pero a jeho polohu může dalším tlačítkem potvrdit. Souřadnice potvrzených poloh pera je pak možné odeslat do počítače.

příkazpříkladfunkce
ININ;inicializace
SPSP1;set pen, výběr pera, s XY4160 nedělá nic
RORO0; RO90;rotace, lze rotovat jen o 90°, nebo vůbec
PUPU;PU100,100;pen up - zdvihnout pero, případně se zdviženým perem pohyb na zadané souřadnice
PDPD;PD100,100;pen down - položit pero, případně se položeným perem pohyb na zadané souřadnice
PAPA500,300;pen absolute - pohyb perem na absolutní souřadnice, je-li zdvižené/položené, tak zůstane jak bylo
PRPR10,40;pen relative - pohyb perem na relativní souřadnice od poslední polohy, je-li zdvižené/položené, tak zůstane jak bylo
CICI200;circle - nakreslí kružnici okolo aktuálních souřadnic, vždy položí pero při kreslení kružnice bez ohledu na předchozí stav

Mezi příkazy mohou být mezery, tabulátory, konce řádku, ale vše bude ignorováno. Desetinná čísla plotr zaokrouhluje, resp. příkazy pro kreslení čar by měla mít v parametrech jen celá čísla v HPGL jednotkách, což je 1/40mm. Pokusy o kreslení mimo pokreslitelnou plochu plotr detekuje rozsvícením žluté LED (OW) a kreslení pozastaví na tak dlouho, dokud nezačnou přicházet příkazy se souřadnicemi v pokreslitelné ploše, fatální chyby v syntaxi způsobí rozsvícení červené LED (ERR) a většinou se plotr vzpamatuje, občas je nutné ho vypnout a "restartovat".

Je třeba vědět, jak je orientovaná souřadnicová soustava - po zapnutí plotru je bod [0,0] v levém horním rohu papíru a [10400, 7400] v pravém dolním rohu. Kresbu lze přeorientovat příkazem RO90;, jiné úhly než 90° fungovat nebudou, příkaz jiné hodnoty umožňuje, ale plotr to neumí, bude je ignorovat.

Přidáváte-li příkaz RO90; do kresby, zařaďte ho až po IN;, tím by se rotace zas vyresetovala do výchozího stavu.

scan scan

Všimněte si, že výchozí je kresba na šířku. Tím se XY-4160 liší od Minigrafu Aritma s programem MZXR, kde se výchozí stav shoduje s tím po orotování souřadnicové soustavy instrukcí RO90;. Minigraf Aritma má ve výchozím stavu souřadnice [0,0] v levém dolním rohu papíru na výšku. Může to být důležité, chcete-li na obou plotrech vykreslit stejnou kresbu např. z Inkscape, který od nějaké verze (nyní 0.92) umí exportovat HPGL velmi dobře použitelné i s tímto plotrem.

Příklady

Následující příklad nakreslí obdélník okolo celé plochy, kterou lze pokreslit.

IN;
PU0,0;
PD10400,0;
PD10400,7400;
PD0,7400;
PD0,0;
PU;

Další příklad nakreslí tři kružnice uprostřed stránky a vrátí se do výchozí polohy.

IN;
PU5200,3700;
CI1000;
CI2000;
CI3000;
PU0,0;

Připojení k ZX Spectrum přes SIF

S připojováním plotru jsem samozřejmě nemohl skončit u PC. U ZX Spectra je situace o maličko komplikovanější, protože aby bylo možné kreslit přímo z BASICu, je nejprve potřeba přesměrovat správně kanál 3 a také převádět čísla na textový řetězec.

Zapojení kabelu viz výše. Připojení k zabudované RS232 v ZX Spectrum 128 jsem zatím nezkoušel, možná jindy.

Ovládání plotru ze Sinclair BASICu

K přesměrování dat na sériový port postačí velmi krátká rutina, která nastaví SIF a přesměruje na něj data poslaná do kanálu 3, tj. příkazy LPRINT a LLIST. Ovšem bez detokenizace funguje jen LPRINT. Přesměrovávač je ke stažení na konci článku. Po instalaci přesměrovávače stačí příkazem LPRINT posílat přímo HPGL kód a plotr kreslí. Kód může vypadat např. takto, pro ilustraci s použitím proměnné místo čísel.

10 LET X=7400
20 LET Y=10400
30 LPRINT "IN;PU0,0;PD";y;",0;PD";y;",";x;";PD0,";x;";PD0,0;PU;"

Další ukázky pro inspiraci...

A to je prakticky vše, zbytek záleží na zručnosti uživatele. Nakonec ještě dvě ukázková videa běžících programů, první ukazuje kreslení základních křivek z BASICu a druhé tisk screenshotu pomocí malých čtverečků opět z BASICu.

Odkazy

Download

Opravené chyby a aktualizace

  • 2011-05-15 zveřejněno
  • 2011-05-18 drobné opravy a doladění textu
  • 2018-11-10 aktualizováno, opraveno, přidáno sw. řízení toku dat

[ Zpět na hlavní stránku ]

Tento web je převážně o ZX Spectru, kompatibilních počítačích a jiném zajímavém hardwaru. Naleznete-li chybu, nebo byste rádi cokoliv co s tímto souvisí, můžete mi napsat email. Stručně o mém webu zde.