Připojení tiskárny (centronics) 

K počítači Didaktik (resp. k obvodu 8255) lze připojit tiskárnu s rozhraním centronics mnoha způsoby. Pouze 4 z nich se však tak nějak vžily, používají se dodnes a lze je tedy prohlásit za jakési standardy. Bohužel to, že jsou 4, není vůbec dobré (ideální by bylo jen JEDNO, které každý akceptuje a je prohlášeno za standard - toto ovšem ve speccy světě nikdy nenastane, protože zde byli, jsou a budou blázni, co si vždycky vyšlapou vlastní cestu a vymyslí zcela originální zapojení, které se pak snaží prosadit jako lepší než ty předchozí...). Často tedy nastává situace, že program prostě uživateli na jeho tiskárně netiskne. Programátorovi to nelze dávat v žádném případě za vinu, protože on jen použil cestu (připojení), která podle něj byla nejlepší (resp. on sám měl takto tiskárnu připojenou).

No ale zpět k těm čtyřem nejčastějším připojením:

STROBED PORT A   (dost časté u Didaktiku Gama)              
8255 komunikuje v módu 1, pro data použit port A obvodu 8255
signál STROBE - bit C7, signál ACK - bit C6                 

STROBED PORT B   (prosazovala Proxima)                      
8255 komunikuje v módu 1, pro data použit port B obvodu 8255
signál STROBE - bit C1, signál ACK - bit C2                 

SPECIAL DIDAKTIK  (doporučované spolu s interfacem M/P)     
8255 komunikuje v módu 0, pro data použit port A obvodu 8255
signál STROBE - bit C3, signál BUSY - bit C7                

SPECIAL DIDAKTIK  B                                         
8255 komunikuje v módu 0, pro data použit port B obvodu 8255
signál STROBE - bit C3, signál BUSY - bit C7                

Obvod 8255 umí pracovat v módech 0, 1 a 2. Pro komunikaci s tiskárnou lze použít módy 0 a 1. Časem se však ukázalo, že některé tiskárny mají problémy se signálem ACK a tedy v komunikaci přes mód 1, zatímco přes BUSY (mód 0) pracují úplně v pohodě. Pokud tedy chcete univerzální zapojení, první dvě možnosti (STROBED PORT A, STROBED PORT B) vypadávají ze hry.

S nástupem Didaktiku M se objevilo zapojení SPECIAL DIDAKTIK (Mko totiž nemá zabudovaný obvod 8255 a proto se tiskárna musí připojit přes interface M/P, a ten je dělán pro zapojení SPECIAL DIDAKTIK). Bohužel tím, že je použit pro přenos dat port A obvodu 8255, nelze už současně s tiskárnou používat kempston joystick nebo cokoliv jiného, co přes port A komunikuje (např. A-mouse). Proto Sweet (teda možná kecám a nevymyslel to on, ale u něj jsem to poprvé zaregistroval...) přišel se zapojením SPECIAL DIDAKTIK B. Tam je pro data použit port B. Výhoda je jasná (port A je volný). Nutno ovšem podotknout, že všechny kabely, které výrobci k tiskárnám dodávali, využívaly port A...

Pokud Vám mohu doporučit (a to jak programátorům, tak uživatelům), používejte SPECIAL DIDAKTIK. Podle mě je nejpoužívanější (kompakt servis stále dodává kabel v tomto zapojení) a podporuje ho plno softu (a já taky :). Těm šikovnějším uživatelům ovšem doporučuji udělat si kabel vlastními silami a dát si tam (na přepínač) jak SPECIAL DIDAKTIK tak SPECIAL DIDAKTIK B.


Schéma zapojení SPECIAL DIDAKTIK:

 8255       Epson (centronics)
PA0 o-----------o DATA1   02
PA1 o-----------o DATA2   03
PA2 o-----------o DATA3   04
PA3 o-----------o DATA4   05
PA4 o-----------o DATA5   06
PA5 o-----------o DATA6   07
PA6 o-----------o DATA7   08
PA7 o-----------o DATA8   09
GND o-----------o GND     16
PC7 o-----------o BUSY    11
PC3 o--invert---o /STROBE 01


Ovládací rutina:

A_OUT     ex     af,af'   ;uložíme A                      
WAIT      call   8020     ;test na BREAK                  
          jp     nc,...   ;BREAK stištěn (=skok pryč)     
          in     a,(95)   ;testujeme READY signál tiskárny
          bit    7,a                                      
          jr     nz,WAIT  ;čekej dokud není READY         
          ex     af,af'   ;obnov A                        
          out    (31),a   ;pošli na port A obvodu 8255    
          ld     a,6      ;vynuluj C3                     
INIT      out    (127),a                                  
          nop             ;malá pauza                     
          ld     a,7      ;nastav C3                      
          out    (127),a                                  
          ret                                             

Úplně na začátku (např. po spuštění Vašeho programu) je nutné nastavit porty obvodu 8255 pro zapojení SPECIAL DIDAKTIK (hodnota 138 = A výstupní, B vstupní, C[0-3] výstupní, C[4-7] vstupní):

          ...                                             
          ld     a,138    ;inicializace obvodu 8255       
          call   INIT                                     
          ...                                             

Pozn.: Pro SPECIAL DIDAKTIK B by bylo třeba změnit inicializační hodnotu na 152 (A vstupní, B výstupní, C[0-3] výstupní, C[4-7] vstupní) a instrukci OUT (31),A nahradit OUT (63),A. Z toho je vidět, že je velice jednoduché si klidně už i v hotovém programu změnit SPECIAL DIDAKTIK za SPECIAL DIDAKTIK B (stačí jen několik vhodných pouků...).

 

  Komunikace s tiskárnou 

Všechny tiskárny komunikují s počítačem pomocí řídicích příkazů (ty můžete vysílat pomocí výše uvedeného podprogramu A_OUT). Každá větší firma si v této oblasti šla víceméně svou vlastní cestou. Můžete se setkat s jazykem ESC/P (EPSON), IBM, Canon atd. Za standard se naštěstí považuje ESC/P (alespoň tedy v DOSovských programech a na ZXS). ESP/P je ale přeci jen už dost starý a vývoj v tiskárnách si vyžádal aktualizaci tohoto jazyka. Dneska tedy máme několik úrovní (verzí) ESP/P.

Na ZXS je otázka komunikace velice důležitá. Pokud si nechcete psát vlastní ovladače, měli byste se (před koupí) ujistit, že tiskárna (ať už jehličková, inkoustová či laserová) umí jazyk ESC/P a zda je ve svých grafických módech kompatibilní (na tom většina těch dnešních vyhoří) se základní 9ti jehličkovou tiskárnou (kódy ESC K, L, Y, Z; nebo univerzální ESC *). EPSONky by v otázce kompatibility měly dopadnout vždy nejlépe... S tou 9ti jehličkovou grafikou je to ovšem dneska těžké. Příkazy ESC K, L, Y, Z nenávratně mizí a bitová grafika je plně v kompetenci příkazu ESC *. V příručce ale nikdy není uvedeno, které grafické módy ESC * umí, a tak člověk po chvilce experimentování může zjistit, že z 9ti jehličkové grafiky neumí tiskárna vůbec nic.

Seznam všech ESC/P řídících kódu, které tiskárna umí by měly být uvedeny v příručce k ní. Schválně píšu BY MĚLY, protože z dlouholetých zkušeností vím, že pouze výrobci, kteří jsou kvalitní a váží si svého zákazníka, toto v dokumentaci skutečně uvádějí. Taky už jsem se setkal i s takovou dokumentací, kde sice ty kódy uvedeny byly, ale bez vysvětlivek. Nebo taky bylo dobré, když jsem v manuálu zjistil, že "celkový seznam řídících kódu tiskárny je uveden v příručce programátora...", ovšem tuto příručku už nikdo nikdy v ČR neviděl.

 

 Grafický a textový režim tiskárny 

Každá tiskárna umí pracovat ve 2 režimech - grafickém a textovém.

Textový umožňuje velice rychlý tisk (rychlost ovlivňuje také typ tiskárny), ovšem jak už název napovídá, bude se tisknout pouze text (znaky) a pouze tak, jak to umí (má v ROM) sama tiskárna (font, kvalita, velikost, hustota). Také je dobré mít v tiskárně češtinu (nebo psát bez háčků a čárek :).

Grafický režim (ESC * m) je oproti textovému šíleně pomalý (u jehličkových tiskáren) a tiskárna vlastně vytiskne vše (bod po bodu), co je na obrazovce. Tiskárna tedy vůbec nepoužívá svou ROM. V grafické režimu pracuji všechny dnešní programy na PC. 
Podle firmy EPSON by pomocí příkazu ESC * měly jít volit tyto grafické módy:

m   dpi      tiskárna  alternativna
 0  60 (480)    9        ESC K     
 1  120(960)    9        ESC L     
 2  120(960+)   9        ESC Y     
 3  240(1920)   9        ESC Z     
 4  80 (640)    9                  
 5  72 (576)    9                  
 6  90 (720)    9                  
 7  144(1152)   9                  
32  60 (480)   24                  
33  120(960)   24                  
38  90 (720)   24                  
39  180(1440)  24                  
40  360(2880)  24                  
71  180(1440)  48                  
72  360(2880)  48                  
73  360(2880)  48                  

Vtip je v tom, že ne každá technicky vyspělejší tiskárna než 9ti jehličková (tj. 24jehl, 48jehl., inkoustová, laserová...) umí tu 9ti jehličkovou grafiku.

 

 9 nebo 24 jehel? 

Pozor, že tiskové utility, které na ZXS vznikly, jsou v drtivé většině dělány pro 9ti jehličkové tiskárny! Pokud tedy budete připojovat 24jehličkovou tiskárnu, dobře se podívejte (do příručky), jestli umí i základní 9ti jehličkovou grafiku (kódy ESC K, L, Y, Z; nebo univerzální ESC *). U značky EPSON by to mělo být bez problému, ale ostatní výrobci se s tím moc netrápí...

 

 Software 

Na ovladačích k jehličkovým tiskárnám jsem v podstatě vyrostl a díky nim jsem se naučil programovat. Snažil jsem se zaplnit všechny oblasti na ZXS, kde je potřeba tisknout a napsal (resp. odněkud přepsal, opravil a vylepšil) pro ně opravdu velice kvalitní ovladače (pro zapojení SPECIAL DIDAKTIK). Většina je distribuována u DOMa.

BASICprint
Ovladač pro BASIC (tj. "zprovoznění" příkazů LLIST a LPRINT), nahrává se do print bufferu (adresa 23296). Pracuje v textovém režimu, podporuje rovněž UDG (UDG znaky se ovšem tisknou v grafickém režimu).
Pomocí něj je rovněž možné posílat tiskárně řídící kódy. Např.:

LPRINT CHR$ 27+CHR$ 64;            inicializace tiskárny
LPRINT CHR$ 7;                     beeper (pípnutí)
LPRINT CHR$ 12;                    vysunutí papíru
LPRINT CHR$ 27+CHR$ 108+CHR$ x;    levý okraj (x = počet znaků)
LPRINT CHR$ 27+CHR$ 81+CHR$ x;     pravý okraj (x = počet znaků)
LPRINT CHR$ 27+CHR$ 67+CHR$ x;     délka stránky (x = počet řádků)
LPRINT CHR$ 27+CHR$ 78+CHR$ x;     zamezení tisku na konci stránky (x = počet řádků od konce stránky)
LPRINT CHR$ 27+CHR$ 120+CHR$ x;    kvalita - Draft (x = 0), NLQ (x = 1)
LPRINT CHR$ 27+CHR$ 107+CHR$ x;    volba NLQ fontu - Roman (x = 0), Sans Serif (x =1)
LPRINT CHR$ 27+CHR$ 33+CHR$ x;     volba typu písma - normální (x=0), mírně zhuštěné (x=1),
                                   zhuštěné (x=4), zvýrazněné (x=8), dvojitý přetisk (x=16),
                                   dvojitá šířka (x=32), nakloněné (x=64), podtržené (x=128)

CALCprint
Ovladač do programu CALCULUS. Tisk v grafickém režimu.

DTPprintT_
Ovladač do DESKTOPu. Umožní tisknout v rychlém textovém režimu (je však nutné používat neproporční fonty s šířkou 8mi bodů). Podpora češtiny - KAM, L2, L2_PC, KOI8, bez_hacku_a_carek.

DTPprintG_
Ovladač do DESKTOPu. Tiskne v grafickém režimu. Jedná se vylepšení původního ovladače pro 9jehličkové tiskárny od Universuma.

DTPprintG2
DTPprintG_ jsem si upravil i pro 24jehličkové tiskárny
(aneb když 24jehl. tiskárna neumí 9jehl. grafiku po dobrém, pude to po zlém = softwarově :).

ovladač pro ART-STUDIO
Grafický režim (dva módy SD480 a DD960)

kdo má barevnou jehličkovou tiskárnu, může využít také utilitu COLOR.