ZX Spectrum a PCL tiskárny I.
Úvod
Barevný tisk u ZX Spectra byl snem všech Spectristů, kteří k tisku ZX Spectrum používali a používají. Jenomže dosud moc barevných tiskáren připojeno nebylo. Vlastně se používalo jen několik modelů barevných jehličkových tiskáren, které mají několik nevýhod. Jsou hlučné, páska s barvami se v průběhu tisku znečišťuje - zvláště žlutá a kvalita není oslňující.
Osobně mám celkem dobrý vztah k Hewlett Packard (dále jen HP) tiskárnám, u mého PC se jich vystřídalo několik a nějaký čas jsem pracoval v autorizovaném servisu, kde jsem HP tiskárny (DeskJety a LaserJety) opravoval, ještě v době, než je začali vyměňovat komplet kus za kus. Takže bylo celkem přirozenou volbou takovou tiskárnu zprovoznit i u ZX Spectra.
Jazyk PCL používaný v HP tiskárnách je docela rozumně zpětně kompatibilní, takže pokud je software napsán na starší typ, tak na novějším bude velmi pravděpodobně fungovat bez problémů, jen nedokáže využít všechny možnosti. Jedinou podmínkou je paralelní port, protože k ZX Spectru zatím USB periferie připojit neumíme.
Připojení tiskárny
Inspiroval jsem se zde (místní kopie) a v manuálu k Desktopové utilitě Ultra LX/LQ. Použil jsem zapojení Special Didaktik s invertorem. Invertor je zapojený na signálu /STROBE směrem k tiskárně, ale úprava programu na jakoukoliv jinou variantu je snadná není příliš složitá.
Použité zapojení kabelu Special Didaktik
pin UR-4 | signál rozhraní 8255 | signál rozhraní Centronics | pin Canon |
---|---|---|---|
1 | port A0 | data bit 0 | 2 |
2 | port A1 | data bit 1 | 3 |
3 | port A2 | data bit 2 | 4 |
4 | port A3 | data bit 3 | 5 |
5 | port A4 | data bit 4 | 6 |
6 | port A5 | data bit 5 | 7 |
7 | port A6 | data bit 6 | 8 |
8 | port A7 | data bit 7 | 9 |
17 | port C3 + inv. | /STROBE | 1 |
22 | port C7 | BUSY | 11 |
24,27,29 | GND | GND | 18 - 25 |
Konektor na straně tiskárny je Canon 25 pinů. Není to tedy konektor Centronics, jako je na paralelních portech tiskáren. Canon jsem zvolil proto, protože následně lze vyrobit jednoduchou redukci z plošného spoje a dvou konektorů a k ní pak připojit libovolný Centronics, nebo Bitronics kabel připojující tiskárnu k počítači. Stejný kabel pak lze použít jak k PC, tak k ZX Spectru. U ZX Spectra akorát bude navíc popsaná redukce.
V případě připojování k Didaktikům Gama a disketovým mechanikám Didaktik 40/80 je nutné nezapojit GND na piny 27 a 29. Viz popis UR-4. Pouze na pinu 24 je GND u všech variant na stejné pozici.
Redukce na Canon
Osobně nerad pájím drátové redukce, protože se lze snadno splést a dráty omylem zpřeházet, navíc v průběhu používání se mohou dráty zlámat, utrhat, roztřepit a zkratovat. Proto jsem radši udělal malý plošný spoj a doplnil zapojení o invertor, který invertuje signál STROBE a může a nemusí být zapnut jumperem.
Při připojování buďte opatrní, doporučuju tiskárnu připojovat vypnutou (odpojenou ze zásuvky). Měl jsem problémy s vyrovnávajícími se potenciály GND, protože moje tiskárna není uzemněna napájecím kabelem, kdežto ZX Spectrum ano přes napájecí zdroj disketových mechanik.
Posílání dat do tiskárny
Tiskárna je připojená, ale předtím než je možné posílat data, je potřeba nastavit rozhraní 8255. V případě Didaktik Special A se to provádí takto.
;------------------------------------------------------------------------------ ; Inicializace - nastaví 8255 a nastaví řídící signály. PRINTER_INI8255 ld a,138 ; nastaví rozhraní 8255, port A jako výstup, port B vstup out (127),a ld a,0 ; /STROBE s invertorem neaktivní out (95),a ret
Pro zapojení Didaktik Special B se bude 8255 inicializovat hodnotou 152 (místo té 138) poslanou na port 127.
Je nutné nějak předávat data z počítače tiskárně. To lze provést následujícím velmi jednoduchým programem.
;------------------------------------------------------------------------------ ; Odeslání jednoho bytu s možností přerušení přenosu. ; Stisknutí klávesy Break je po ukončení PRINTER_OUT signalizováno Z = Break, NZ = není Break. ; To proto, aby na toto mohl reagovat kód pro přenos sekvence dat. PRINTER_OUT ld (PRINTER_OUT_DT+1),a ; uschovej data, registr A bude potřeba PRINTER_OUT_WR call 8020 ; test klávesy BREAK (nutné, protože tiskárna nemusí přijímat data!) jr nc,PRINTER_BREAK ; NC = je BREAK, odskok xor a ; čekej, dokud není tiskárna připravena přijmout data in a,(95) bit 7,a jr nz,PRINTER_OUT_WR PRINTER_OUT_DT ld a,0 ; obnov data out (31),a ; a pošli na tiskárnu ld a,8 ; generuj STROBE nejméně 5 mikrosekund dlouhý pulz PRINTER_INIT_2 out (95),a nop nop ld a,0 ; /STROBE s invertorem neaktivní out (95),a inc a ; nastav NZ ret PRINTER_BREAK xor a ; nastav Z ret ;------------------------------------------------------------------------------ ; Pošle sekvenci znaků od adresy v HL dlouhou BC znaků/bytů. PRINTER_OUTB ld a,(hl) ; vytiskne řetězec znaků od adresy v HL, BC = počet znaků call PRINTER_OUT jr z,PRINTER_OUTB_2 ; Z = Break inc hl dec bc ld a,b or c jr nz,PRINTER_OUTB xor a ; vše proběhlo korektně, vynuluj kód chyby = ohlaš ok PRINTER_OUTB_3 ld (PRINTER_ERROR),a ret PRINTER_OUTB_2 ld a,1 ; do kódu chyby zapiš 1 = Break jr PRINTER_OUTB_3 PRINTER_ERROR db 0 ; 0 = vše ok ; 1 = Break
Pro zapojení Didaktik Special B nahraďte out (31),a instrukcí out (63),a.
Když lze posílat data, je taky dobré vědět, co poslat a jak na to tiskárna bude reagovat.
PRINTER_START ld hl,PRINTER_PCL ; přepne do PCL ld bc,PRINTER_PCL_LEN jr PRINTER_OUTB ; CALL + RET PRINTER_PCL db ESC,"%-12345X" ; UEL - odkudkoliv do výchozího PJL ; následujících 6 řádků vynechte u starších tiskáren, které umí jen PCL3, u PCL5 tiskáren to je jedno db "@PJL JOB NAME = \"screenshot\"",CR,LF db "@PJL JOB RDYMSG = \"ZX Spectrum\"",CR,LF ; hláška na displej kvůli starším tisk. HP db "@PJL JOB DISPLAY = \"ZX Spectrum\"",CR,LF ; hláška na displej kvůli novějším tisk. HP db "@PJL SET COPIES = 1",CR,LF db "@PJL SET RET = OFF",CR,LF ; pro ZX rastry se nehodí db "@PJL ENTER LANGUAGE=PCL",CR,LF ; přepne na PCL db ESC,"E" ; PCL printer reset PRINTER_PCL_LEN equ $-PRINTER_PCL ; spočítá při kompilaci délku sekvence
Tímto je tiskárna připravena přijímat PCL příkazy. Další podrobnosti ve zdrojových kódech, které jsou ke stažení na konci textu.
Proč jsem zvolil PCL?
Všechny HP tiskárny mají jazyk PJL (Printer Job Language), který slouží ke správě tiskových úloh. Což znamená že pomocí tohoto jazyka lze například řídit z jakého zásobníku se vezme papír, kam se umístí vytištěný výsledek, kolik kopií se má vytisknout a v neposlední řadě jakým jazykem je úloha tištěna. Tiskárna to samozřejmě musí umožňovat.
Lepší HP tiskárny umí jazyk PJL vždy, snad jen s výjimkou nějakých GDI M$ Windows only ošizených ultralevných USB modelů. V řadě tiskáren s paralelními porty jsem se s žádnou takovou nesetkal. Což neznamená, že neexistuje, ale prostě o ní nevím. To bohužel není tak úplně pravda, což jsem zjistil při tisku na Deskjet 340, která umí pouze PCL3 a jazyk PJL má redukovaný na naprosté minimum. Více PJL příkazů lze zřejmě očekávat především u tiskáren, kde má smysl např. určení vstupního a výstupního zásobníku papíru, nebo vynucení tisku kopií úlohy, aniž by bylo potřeba posílat data vícekrát. To se týká hlavně větších laserových tiskáren.
Stejně tak tyto tiskárny umí i jazyk PCL (Printer Command Language), přičemž jazyků PCL je spousta verzí podle toho jak se v průběhu času vyvíjel. Aktuálně se prodávají tiskárny s jazykem PCL 6 (většina laserových tiskáren s paralelními porty nejenom HP, ale třeba i Samsungy, Lexmarky a další). Většina inkoustových tiskáren zhruba z období let 2000 - 2005 si poradí s PCL 5. Starší inkoustové tiskárny umí přinejmenším PCL 3.
Jazyk PCL kromě spousty funkcí umožňuje nastavit kvalitu tisku, rozlišení, způsob skládání barev, a hlavně se s jeho pomocí dají tiskárně poslat rastrová data.
U ZX Spectra by byl ještě velmi pěkně využitelný jazyk HPGL, ale bohužel ho umí jen některé dražší laserové tiskárny a snad všechny plotry. Postscript taky není podporovaný všemi tiskárnami, zvláště pak ne domácími inkoustovými a pro ZX Spectrum by asi nebyl vhodný, takže nejlepší volbou zůstává PCL.
Hodně jsem čerpal z referenční příručky HP pro Deskjety 600 až 890. Bohužel už nevím, kde jsem ji získal, nemohu odkázat.
Kompatibilita
Nejčastějším dotazem, se kterým jsem se setkal, je otázka s jakými tiskárnami bude software pracovat a jestli lze použít tiskárny laserové, nebo jenom inkoustové.
Software používající základní příkazy jazyka PCL 3 by měl pracovat prakticky na libovolné HP tiskárně s LPT portem vyrobené v období let 1995 - 2008. Na tom jestli je laserová, nebo inkoustová záleží vlastně jen do té míry jestli umí tisknout barevně, nebo jen černobíle. Pokud tiskárna neumí tisknout barevně, tak nejspíš barevný tisk nebude fungovat vůbec, ani v odstínech šedi. Tiskárny barvy nerastrují, bude fungovat jen černobílý tisk. Screenshoty se tisknou v rozlišení 300x300dpi (barvy i černá), texty z Desktopu v rozlišení pouhých 75x75dpi (jen černá), to by měla zvládnout opravdu každá PCL tiskárna.
Použitelnost také pravděpodobně není omezena jen na HP tiskárny, i jiní výrobci podporují jazyk PCL, např. Samsung, Xerox, Ricoh ... Důležitá je přítomnost LPT portu a shodný způsob přepínání do jazyka PCL. Někdy u takových tiskáren bývá poznámka, že podporují tisk z DOSu (což už se bohužel neuvádí) a umí emulaci PCL. Téměř určitě nebude tisk fungovat na tiskárnách Epson a Canon.
Bohužel jsem neměl zatím příležitost to důkladně vyzkoušet a nemám k dispozici víc než několik málo tiskáren, takže budu rád za jakékoliv informace a zkušenosti, které mi pošlete, užitečné zveřejním.
model | technologie | rozhraní | funkčnost | |
---|---|---|---|---|
Deskjet 340 | inkoust | LPT | plně funkční, jen černobílý tisk, nemám trojbarevný inkoust | |
DeskJet 690C | inkoust | LPT | funkční, testován jen černobílý tisk | |
DeskJet 840C | inkoust | LPT, USB | nefunkční, nepřijímá data přes LPT, nevím proč | |
Deskjet 980cxi | inkoust | LPT, USB | plně funkční barevný i černobílý tisk | |
Deskjet 1220c | inkoust | LPT, USB | funkční, testován jen černobílý tisk | |
LaserJet 4M | laser | LPT | funkční, jen černobílý tisk, tiskárna není barevná | |
LaserJet 5MP | laser | LPT | funkční, jen černobílý tisk, tiskárna není barevná | |
LaserJet 4050 | laser | LPT | funkční, jen černobílý tisk, tiskárna není barevná | |
LaserJet 3030 | laser | LPT, USB | nefunkční, přijme data přes LPT, ale nereaguje na ně |
První tisk
PCL tiskárny tisknou ASCII automaticky. Netřeba s nimi dělat víc než poslat znaky do tiskárny a úlohu zakončit znakem FormFeed. Nicméně k tomu, aby bylo možné text obarvit, nebo nastavit parametry stránky je nutné tiskárnu přepnout z PJL jazyka do PCL.
Po prvních pokusech s tiskem jsem napsal jednoduchý kód, který umožňuje tisknout screenshoty. Nejprve černobílé - jen pixely bez ohledu na atributy, druhý kód tiskne screenshoty barevné.
Pozor na to, že je v programu nastavena kvalita Draft a černá je úmyslně tisknuta světlejší, je prokládána bílými pixely. To abych při experimentování zbytečně neplýtval inkoustem. Rozlišení tisku je 300dpi v černé i barvách a je použitý velmi jednoduchý rastr, který trochu odlišuje barvy s jasem a bez jasu.
Zatím to je bohužel jen taková ukázka možností, zbývá ještě hodně práce než to bude skutečně použitelné. Zvláště nastavení kvality tisku, umístění obrázku na stránce, kvalitní rastrování odstínů a další detaily velmi chybí.
Jednoduchý ovladač pro Desktop
Textový editor Desktop je na ZX Spectru něco jako balík Office programů na PC. Jakmile existuje možnost tisknout, tak Desktop nesmí být opomíjen (snad ještě Calculus, ale ten zdaleka nebyl využíván tak často). Napsání ovladače předcházela důkladná analýza ovladače k plotru Aritma, protože jsem byl jednak zvědavý jak funguje a druhak protože je součástí základní sady ovladačů od Universuma, autora Desktopu. Díky disassemblování a analýze kódu pro Aritmu 0507 jsem mohl některé části kódu použít zcela shodné, především uživatelské rozhraní.
Výsledkem je jednoduchý ovladač, který je originálním velmi podobný a stejně se ovládá. Možnosti nastavení jsou redukované na minimum, protože sice lze volit více kvalit tisku, různá tisková média, ale v kombinaci s grafickým tiskem v rozlišení 75dpi černobíle, což ideálně pokrývá možnosti Desktopu, např. použití fotopapíru, nebo průhledných fólií postrádá smysl. Kdyby byl zájem, tak to samozřejmě realizovatelné je.
Samotný Desktop, pracující s obrázky a proporcionálními fonty, je schopen pracovat s libovolným "dokumentem", který je široký od 64 do 768 pixelů. Na A4 tiskárně se v rozlišení 75 dpi dá tisknout max. asi 600 pixelů v závislosti na šířce okrajů. Některé tiskárny umí tisknout bezokrajově, takže i víc než 600px na řádek, jiné potřebují alespoň 6mm na každé straně papíru. Nicméně rozlišení 480px propagované v Desktopu Proximou zvládnou zcela určitě a limit těch nejhorších s nejširšími okraji by neměl být menší než cca 550px. Optimální je kulatých 512px, protože při zobrazování náhledu zmenšený pohled přesně zaplní jednu obrazovku ZX Spectra na šířku.
Z nastavení kvality jsem proto ponechal pouze možnost nastavit kvalitu Draft (Econo Fast) a Normal. Rozdíl mezi výsledky je viditelný, ale pro ZX Spectrum to není zásadní. Dále je možné nastavit okraje tisku, resp. odsazení od levého a horního okraje. Pravý okraj si hlídá tiskárna a je tak daleko, jak široký je tisk. Dolní okraj je značně závislý na schopnostech tiskárny a jeho nastavení je ponecháno na uživateli jako počet řádků na stránce přímo v Desktopu.
Další velmi důležitou možností je položka "Finish page". Stisknutí Enteru na této položce dokončí tisk právě tisknuté stránky a zajistí vysunutí papíru z tiskárny. Zároveň je vynulováno počítadlo řádků.
To je prakticky vše, co má smysl nastavovat. Ještě se nabízí možnost tisku do sloupců a šířka mezery mezi sloupci, ale to není snadné realizovat, protože další sloupce jsou ve skutečnosti další stránka tištěná znovu od horního okraje papíru, jen posunutá vpravo. Inkoustové ani laserové tiskárny se neumí vracet. Aby to bylo realizovatelné, musel by Desktop poskytovat grafiku všech sloupců současně.
Ostatní nastavení jiných tiskáren se týkalo např. přímého řízení jejich motorů, časování, rychlosti atd... což u tiskárny s vlastním procesorem postrádá smysl a je tedy vynecháno.
Osobně si myslím, že DeskJet 340 je jednou z nejvhodnějších tiskáren, které si uživatel ZX Spectra může přát.
Načtení ovladače do Desktopu
Textový editor Desktop od Proximy umožňuje načítat z pásky, nebo diskety pluginy velké 1680 bytů s jednotným API. Plugin může plnit různé funkce, existuje plugin s fonteditorem, roletovými menu, mnoho ovladačů k tiskárnám, dokonce jednoduché hry. Není-li plugin určen k tisku, musí sice obsahovat callpointy stejně jako ovladač k tiskárně, ale tisková data prostě ignoruje.
U všech verzí Desktopu se plugin pravděpodobně načítá stejným způsobem pomocí EXT + SS + K, tj. v extended režimu znakem plus, což je stejná kombinace stisků, jako v BASICu napíše příkaz SCREEN$.
Menu, které se tímto vyvolá je různé pro různá úložiště. V páskové verzi Desktopu zobrazí velmi jednoduché menu s možností načítat pouze pluginy, v terminologii Desktopu utility. V disketových verzích, na screenshotu je verze pro TRDOS, bývá menu bohatší a obvykle obsahuje všechny souborové operace.
Nastavení okrajů
Aby software mohl být co nejjednodušší a já s ním neměl mnoho práce a zároveň proto, protože komunikace s tiskárnou není obousměrná, není možné zjistit model tiskárny a pak pomocí PJL fyzické okraje tiskové oblasti, ponechal jsem nastavení okrajů v PCL jednotkách.
PCL jednotka je 1/300" - jedna třísetina palce. Tj. chci-li posunout okraj o 10mm, pak je nutné hodnotu změnit o 10*300/25,4 = 118,11 PCL jednotek. Zároveň je potřeba počítat s fyzickými okraji tiskárny, tj. chci-li okraj nikoli jen posunout, ale nastavit na konkrétní vzdálenost, musím PCL jednotky spočítat pro (požadovaný okraj - fyzický okraj), kde fyzický okraj je dán schopnostmi tiskárny.
Například pro mou tiskárnu DeskJet 980cxi budou okraje následující. Fyzický okraj počítám 3mm. Ovšem i hodnoty vyladěné pro konkrétní model tiskárny nutno brát s rezervou, tiskárna vezme papír pokaždé trochu jinak a okraj tak může být +-1mm posunutý.
šířka tisku | levý okraj | nastavení PCL |
---|---|---|
480px (162,6mm) | 20,7mm | 245 |
512px (173,4mm) | 15,3mm | 181 |
Pro Deskjet 340 vychází okraje velmi podobně, minimální levý okraj jsem naměřil asi 3,5mm, ale ještě víc záleží na tom jak je vložený papír, který lze vkládat i ručně bez podavače.
Menu s nastavením tiskárny se vyvolává kombinací EXT + I, ukončuje se stiskem mezerníku. Tiskne se pomocí EXT + P, následuje dotaz na počet kopií. Pozor na to, že zadáním nuly se tisk nezruší, ale spustí, stejně jako zadáním jedničky.
Úprava ovladače pro jiné varianty připojení
Tiskárnu je samozřejmě možné připojit i přes jiná rozhraní než je čip 8255, ale budete si muset upravit kód sami. K připojení je potřeba 8 signálů pro data a dva pro řízení. Jedním /BUSY tiskárna oznamuje počítači, že může přijímat data a druhým /STROBE počítač tiskárně říká, že si má převzít právě zapsaný byte, resp. správněji že data zapsaná na 8 datových výstupů jsou platná. To tiskárna provede právě jednou a pak čeká na deaktivaci a reaktivaci /STROBE.
V ovladači se o to stará následující kód.
PRINTER_OUT ld (PRINTER_OUT_DT+1),a ; uschovej data, registr A bude potřeba PRINTER_OUT_WR call 8020 ; test klávesy BREAK (nutné, protože tiskárna nemusí přijímat data!) jr nc,PRINTER_BREAK ; NC = je BREAK, odskok xor a ; čekej, dokud není tiskárna připravena přijmout data in a,(DP_PCTR) bit 7,a jr nz,PRINTER_OUT_WR PRINTER_OUT_DT ld a,0 ; obnov data out (DP_PDATA),a ; a pošli na tiskárnu ld a,8 ; generuj STROBE nejméně 5 mikrosekund dlouhý pulz PRINTER_INIT_2 out (DP_PCTR),a nop nop ld a,0 ; /STROBE s invertorem neaktivní out (DP_PCTR),a inc a ; nastav NZ ret PRINTER_BREAK xor a ; nastav Z ret
Nezapomeňte na kód dokončující tisk stránky.
DP_PRN_FINPG xor a ; nastavím příznak "tisk není zahájen" ld (DP_PRINT_1+1),a out (DP_PDATA),a out (DP_PCTR),a ; /STROBE s invertorem neaktivní ld hl,PRINTER_FINDATA ld bc,6 jp PRINTER_OUTB ; CALL + RET PRINTER_FINDATA db ESC,"*rC" db ESC,'E'
Chcete-li například pouze používat na 8255 jiný port, nebo jiné signály pro řízení, stačí jednoduchá úprava této části ovladače. Můžete přepsat zdrojový kód a znovu zkompilovat, nebo upravit adresy portů DP_PCTR, DP_PDATA a bity (bit 7,a a ld a,8) v nějakém disassembleru, třeba v DevastAce.
Možná budete taky muset upravit inicializaci 8255. Ta se provádí jen při úplně prvním spuštění ovladače bezprostředně po jeho načtení do Desktopu.
DP_INIT_8255 ld a,DP_INI8255 ; port A - mod 0, A in, C high in, B out, C low out out (DP_PCWR),a ; inicializace 8255 (interface UR-4) ld a,0 ; /STROBE s invertorem neaktivní out (DP_PCTR),a ld a,201 ; znovu inicializace neproběhne, LD bude přepsáno instrukcí RET ld (DP_INIT_8255),a ; přepiš LD na RET ret
Např. varianty připojení Didaktik Special A a Didaktik Special B (používá Jiiirovo UPI) se mezi sebou liší pouze v číslech portů a inicializačním bytu pro čip 8255 - viz část zdrojového kódu, která obsahuje jednu ze čtveřic násl. řádků, ta nepotřebná čtveřice by měla být zakomentována.
DP_PCWR equ 127 ; port for configuration 8255 DP_PDATA equ 31 ; data port DP_PCTR equ 95 ; control port DP_INI8255 equ 138 ; 10001010b DP_PCWR equ 127 ; port for configuration 8255 DP_PDATA equ 63 ; data port DP_PCTR equ 95 ; control port DP_INI8255 equ 152 ; 10011000b
Pro inspiraci, jak vypadá kód při zkoumání DevastAcí.
Jednoduchý ovladač pro ZX BASIC
Po nějakém čase od chvíle, co jsem zveřejnil ovladač pro Desktop jsem potřeboval vytisknout katalog diskety a nezbylo než napsat ovladač i pro BASIC.
Od Desktopového ovladače, který pouze přijímá rastrová data připravená textovým editorem a přeposílá je na tiskárnu, se BASICový ovladač liší tím, že musí vytvářet rastrovou grafiku z aktuálně nastaveného písma v BASICu (pomocí proměnných na adresách 23606 a 23607) a převádět tokeny na znaky. Aktuální verze má ještě pár nedostatků, ale katalog diskety, nebo výpis programu se jím vytisknout dá.
Po spuštění programu, dejme tomu zkompilovaného a do paměti načteného na adresu [adresa] je nejprve potřeba ho spustit nestalo-li se tak automaticky. Tím je nastaven kanál 3 tak, aby volal při zápisu do něj ovladač tiskárny místo tiskových rutin v ROM pro ZX Printer.
Ve výchozím nastavení je zvolen formát papíru A4 a rozlišení 75dpi. Obojí lze změnit v jednoduchém menu, které se zobrazí příkazem RANDOMIZE USR [adresa]+3. Kromě formátu a rozlišení lze zvolit i kvalitu tisku a ukončit nedokončenou stránku. Viz screenshot.
Ukončení stránky je nutné skoro vždy na konci tisku. ZX Spectrum je orientované znakově/řádkově a během zpracování dat na kanálu 3 není možné rozpoznat, že nic dalšího již tisknuto nebude. To musí říct uživatel. Kromě menu to lze udělat i pomocí RANDOMIZE USR [adresa]. K ukončení stránky a vysunutí papíru v obou případech dojde pouze když byl tisk zahájen, nemělo by nikdy dojít k nabrání a vysunutí prázdného papíru.
A nakonec dva obrázky výtisků obsahu diskety v různém rozlišení - tisknuto na DeskJet 340. Rozdíl v kvalitě je i na papíře obtížně rozpoznatelný, na první pohled je vidět hlavně velikost čtverečků z nichž jsou znaky složené - poměr velikostí je v obrázcích zachován.
Viz video (YouTube) ukázka tisku z Desktopu.
Odkazy
- http://en.wikipedia.org/wiki/Printer_Command_Language - stručný popis a odkazy na podrobnou dokumentaci
Download
- schéma zapojení - PNG
- rozmístění součástí - PNG
- projekt do sharewarové verze Eagla - BZIP2 50kB
- pokusny_kod_tisk_screenshotu.tar.bz2 - BZIP2 22kB ukázka tisku rastru na Deskjetech
- pcl_printer_desktop.tar.bz2 - BZIP2 28kB PCL tiskový ovladač pro Desktop
- pcl_printer_basic.tar.bz2 - BZIP2 28kB PCL tiskový ovladač pro ZX BASIC
Historie změn článku
- 2009-01-04 - zveřejněno
- 2009-01-12 - aktualizace, doplněn text o kompatibilitě a tabulka tiskáren, zveřejněn ovladač k Desktopu
- 2010-02-01 - zveřejněna první verze ovladače pro tisk z BASICu plus popis použití, nepatrně aktualizován ovladač pro Desktop
- 2011-11-28 - opraveny odkazy na cizí weby
- 2017-11-17 - doplněna zmínka o načítání pluginů a úpravě ovladače