DCD42G.NAV - 1 -
Tiskarna DATACOOP DCD PRT-42G verze z 3. 7. 1991
=============================
Upravou dat v pametech EPROM, kterou jsme provedli, bylo docileno kompatibili-
ty se standardem EPSON pro tisk a byla tez doplnena abeceda o mezinarodni
znaky na ukor azbuky. Do tiskarny je mozne downloadovat dalsi znaky, ale take
i programy (!) v assembleru Z80 pro rozsireni funkci.
Nove pojate ESC sekvence
========================
sekvence std EPSON DCD poznamka
--------------------------------------------------------------------
ESC 0 - nastavi posuv pri LF o: 1/8" 1/9"
ESC 1 - nastavi posuv pri LF o: 7/72" 8/72"
ESC 3 n - nastavi posuv pri LF o: n/216" n/216" s krokem 12
ESC A n - nastavi posuv pri LF o: n/72" n/72" s krokem 4
ESC J n - vykona LF s posunem o: n/216" n/216" s krokem 12
ESC G - nastavi rezim tisku enhanced ( pretisk - double strike )
ESC H - zrusi rezim enhanced
ESC P - nastavi rezim tisku PICA ( 12 sloupcu na znak )
ESC M - nastavi rezim tisku ELITE ( 10 sloupcu na znak )
ESC < - provede CR bez LF
ESC : - nacte z ROM specialni znaky do znakoveho generatoru DLL
ESC Q n - nastavi pravy doraz. Pri prekroceni meze se dosadi maximalni mez.
Meze jsou:
PICA normal (levy doraz+1) < n < 86
PICA dvoji sire (levy doraz) < n < 43
ELITE normal (levy doraz+2) < n < 103
ELITE dvoji sire (levy doraz+1) < n < 52
ESC l n - nastavi levy doraz. Levy doraz je limitovan mezi:
PICA normal -1 < n < (pravy doraz-1)
PICA dvoji sire -1 < n < (pravy doraz)
ELITE normal -1 < n < (pravy doraz-2)
ELITE dvoji sire -1 < n < (pravy doraz-1)
ESC ! n - nastavi rezim tisku, bit (1/0): 7-podtrzeny, 6-sikmy/kolmy,
5-siroky/uzky, 4-pretisk, 3-zvyrazneni, 2-nevyuzito,
1-proporcionalni, 0-Elite/Pica
ESC SP n - nastavi, o kolik sloupcu maji byt znaky sirsi nebo uzsi pri nepro-
porcionalnim tisku. V rezimu PICA lze znaky jen zuzovat, n je
v rozsahu -2 az +1.
ESC . d0..d255 - nacte data do pameti tiskarny od adresy 3700 a preda na ni
rizeni. Navrat do hlavni smycky se realizuje instrukci Z80
JP 05A8. Takto se take realizuje pripojeni na hacek nebo
zaplneni DLL.
Znakovy generator
=================
Preddefinovano je 168 tvaru znaku v rastru 9*9, 16 grafickych znaku ( uhelniky
a pod. ) v rastru 9*12 a dale je mozne volne nadefinovat dalsich 23 predloh
znaku do DLL ( tzv. download ) v rastru 9*9. Znaky jsou tisteny do sire 8mi,
9ti, 10ti, 11ti nebo 12ti bodu, podle nastaveneho rezimu. Generator DLL je
mozno take zaplnit predlohami specialnich znaku, ktere jsou preddefinovany
v pameti ROM tiskarny.
Znakove sady
============
Kazda ze 4 znakovych sad obsahuje usporadani 256 znaku. Tyto znakove sady jsou
temer shodne s temito standardy:
Character set 0 - IBM PC, kod bratri Kamenickych
1 - SORD m.5 ( tento set je nastaven po zapnuti tiskarny )
2 - IBM PC stranka 437
3 - IBM PC stranka 852, Latin 2
Kazdou znakovou sadu je mozne libovolne zmenit ESC sekvenci REPLACE ( ESC r ).
Zmenou znaku NUL za jiny se zapoji znakova sada pro autotest. Downloadove
znaky jsou pristupne pouze pres REPLACE a zacinaji predlohou 200 ( C8H ).
DCD42G.NAV - 2 -
Definovani znaku pro download
=============================
BEGIN: DB 0C3H,0A8H,05H
DOWN0: DB 00000000B ;sloupec 1
DB 00000000B ;sloupec 2
DB 00000000B ;sloupec 3
DB 00000000B ;sloupec 4
DB 00000000B ;sloupec 5
DB 00000000B ;sloupec 6
DB 00000000B ;sloupec 7
DB 00000000B ;sloupec 8
DB 00000000B ;sloupec 9
DB 00000000B ;radka devate jehlicky
PRM0: DB 00000000B ;parametry znaku a posledni bod znaku
DOWN1: DB ... ;definice dalsiho znaku
Sloupce 1 az 9 jsou tisknuty jehlickami 1 az 8, jehlicka 1 je ovladana bitem
0, jehlicka 8 bitem 7. Pri tisku devate radky je jehlicka na prvnim sloupci
ovladana bitem 0 a jehlicka na poslednim sloupci bitem 7. Byte PRMn obsahuje
parametry pro proporcionalni tisk:
bit 7. az 4. = sirka znaku ( 1 az 12 )
3. az 1. = pocet vynechanych sloupcu na zacatku znaku
0. = bod v pravem dolnim rohu znaku
PRM muze mit nejvetsi hodnotu 0C1H a lze jej vypocitat podle vztahu:
PRM = 16 * (sirka znaku) + 2 * (vynechane sloupce) + (posledni bod)
V definici tvaru znaku nikdy nesmi nastat situace, kdy jsou na jedne lince
tesne vedle sebe dva body, protoze pri tisku po pul bodech jehlicka nestaci
vytisknout vcas dalsi bod.
Predlohy znaku se do tiskarny zapisi sekvenci "<ESC><.>data". Ridici sekvence
"<ESC><:>" zaplni generator DLL specialnimi predlohami, ktere jsou preddefino-
vane v pameti tiskarny.
Upozorneni:
Kazdym pouzitim sekvence "<ESC><.>data" se prepisi nadefinovane znaky v DLL!
Rozsireni ridicich sekvenci
===========================
Mnozinu ridicich sekvenci lze rozsirit o dalsi prihranim programu ve strojovem
kodu sekvenci "<ESC><.>data". Podprogram lze pote premistit do volneho
prostoru v pameti RAM, ktery se nachazi od 3580H do 35FFH. Napojeni se provadi
zapsanim instrukce skoku na adresu 303DH ( napriklad JP 3580H - C3H,80H,35H ).
Do podprogramu se vstupuje s takto obsazenymi registry:
IY - 3000
HL - nedefinovan
DE - D=0, E=kod znaku s nastavenym/shozenym/nemenenym bitem MSB
BC - nedefinovan
AF - A=kod znaku, F=nedefinovan
V podprogramu je mozne zmenit registry HL, BC a AF. Obsah registroveho paru DE
by mel v beznych pripadech zustat zachovan, obsah IY nesmi byt zmenen. Pouziti
instrukci EXX a EX AF,AF' je v podprogramu zakazano.
Rozsireni funkci lze provest pouze pomoci "prazdnych" znaku, tj. tech, pri
jejichz vytisteni tiskarna nic neprovede. V pripade, ze je potreba zmenit
vyznam nektereho znaku, nebo ridiciho kodu, staci tento obslouzit v podprogra-
mu a na jeho konci vynulovat registr E.
DCD42G.NAV - 3 -
Priklad rozsireni ridicich sekvenci
===================================
;rozsireni o <^O>, zmena vyznamu <FF> a doplneni o <ESC><x><n>
3580: CP 0F ;je CTRL/O?
JR NZ,$1 ;neni, jdi na dalsi
;zde realizace <^O> - v tiskarne neni vyuzit
...
RET ;a ven
$1 CP 0C ;je <FF>?
JR NZ,$2 ;neni, jdi na dalsi
;zde nova realizace <FF>
...
LD E,0 ;zruseni puvodniho vyznamu Form Feed
RET ;a ven
$2 CP 1B ;je ESC?
RET NZ ;neni, tak ven
POP AF ;zahozeni navratove adresy
SET 0,(IY+19) ;priznak vykonavani ESC
$3 CALL 009C ;nacti znak nasledujici za ESC
RES 7,A ;shod nejvyssi bit ( kvuli 7 bit ASCII )
CP 1B ;je zase ESC?
JR Z,$3 ;ano, tak ho ignoruj
CP 'x' ;je <ESC><x>?
JP NZ,6209 ;ne, tak jdeme na dalsi <ESC><...>
CALL 009C ;nacti hodnotu <n> nasledujici za <ESC><x>
RES 7,A ;shod nejvyssi bit ( kvuli 7 bit ASCII )
;zde realizace nove ESC sekvence, v A je hodnota <n>
...
JP 05A8 ;a na konci skok do hlavni smycky
Dodatek ke treti verzi
**********************
<ESC></><0> - vypne matematicke sikmeni
<ESC></><1> - zapne matematicke sikmeni
Matematicke sikmeni zpusobi, ze tesne pred vytistenim celeho radku je tiskovy
bafr zesikmen. Sikmeny jsou tedy i sikme znaky ITALIC a uhelniky! Na to pozor.
Sikmit ma vyznam jen kolme pismo, ktere pote co je zesikmeno vypada velmi dob-
re ( nadpisy a podobne ). Kazdy sikmeny radek je potreba ukoncit znakem mezera
aby se vytiskl i posledni znak cely. Pri sikmeni dochazi k prepisovani prvnich
nekolika bajtu volneho prostoru od adresy 3580H, takze je nutne s tim pocitat
a pripadne zavadene programy do tohoto bafru tomuto prizpusobit. Vypinaci ESC
sekvenci je potreba vyslat az po <CR>, jinak radek nebude zesikmen!
DCD42G.NAV - 4 -
Ridici povely pro tiskarny EPSON a kompatibilni
***********************************************
* 00 - 00 - <NUL> prazdny znak
* 01 - 01 - <SOH> zacatek zahlavi
* 02 - 02 - <STX> zacatek textu
* 03 - 03 - <ETX> konec textu
* 04 - 04 - <EOT> konec prenosu
* 05 - 05 - <ENQ> otazka
* 06 - 06 - <ACK> potvrzeni
* 07 - 07 - <BEL> zvonek
? 08 - 08 - <BS> o znak zpet
? 09 - 09 - <HT> horizontalni tabulator
10 - 0A - <LF> posun papiru o jeden radek
* 11 - 0B - <VT> vertikalni tabulator
12 - 0C - <FF> nova stranka
13 - 0D - <CR> hlava na zacatek radku
14 - 0E - <SO> nastavi dvojitou siri pisma jen pro tisk do konce radky
? 15 - 0F - <SI> zapne kondenzovane pismo
* 16 - 10 - <DLE> autoregistr
17 - 11 - <DC1> ON-LINE
? 18 - 12 - <DC2> zrusi kondenzovane pismo
19 - 13 - <DC3> OFF-LINE
20 - 14 - <DC4> zrusi <SO>
* 21 - 15 - <NAK> neuspesne potvrzeni
* 22 - 16 - <SYN> synchronizace
* 23 - 17 - <ETB> konec bloku
24 - 18 - <CAN> smazani bafru tiskarny
* 25 - 19 - <EM> konec media
* 26 - 1A - <SUB> substituce
27 - 1B - <ESC> zapina rezim zmen
* 28 - 1C - <FS> oddelovac souboru
* 29 - 1D - <GS> oddelovac skupin
* 30 - 1E - <RS> oddelovac zaznamu
* 31 - 1F - <US> oddelovac prvku
32 az 126 - bezne znaky
* 127 - 7F - <DEL> smaze posledni znak v bafru
128 az 255 - specialni znaky
Ridici ESCAPE sekvence ( <ESC> + <...> )
========================================
<ESC><SO> stejne se <SO>
<ESC><SI> stejne se <SI>
* <ESC><DC2> LF bez vykonani CR
* <ESC><EM><I> vlozi sheet
* <ESC><EM><R> vynda sheet
! <ESC><SP>CHR(n) mezera mezi znaky ( n = 0 az 63 )
! <ESC><!>CHR(n) nastavi parametry tiskarny, bit: 7-podtrzene, 6-sikme/kolme,
5-dvojita sire, 4-rozsirene, 3-zvyraznene, 2-zhustene, 1-proporcionalni,
0-Elite/Pica
<ESC><"> ignorovano
<ESC><#> zrusi rizeni sedmeho bitu
* <ESC><$>CHR(m)CHR(n) nastavi absolutni pozici v 1/60 palce
* <ESC><%><SOH> nastavi Utility DLL ( download )
* <ESC><%><NUL> nastavi normalni znakovy generator
? <ESC><&><NUL>CHR(n)CHR(m)CHR(a)CHR(p1) nacte znaky do DLL
<ESC><'> ignorovano
* <ESC><(><0> nastavi mod tisku High Speed Draft ( HSD )
<ESC><)> ignorovano
* <ESC><*>CHR(m)CHR(n1)CHR(n2)CHR(v1)...CHR(vk) nastavi 8 bitovou grafiku
<ESC><+> ignorovano
<ESC><,> ignorovano
DCD42G.NAV - 5 -
<ESC><-><0> vypne podtrhavani
<ESC><-><1> zapne podtrhavani
! <ESC><.> ignorovano
! <ESC></>CHR(n) vybere VFU kanal ( n = 0 az 7 )
! <ESC><0> nastavi radkovani na 8 radku na palec
<ESC><1> nastavi radkovani na 7/72 palce
<ESC><2> nastavi radkovani na 6 radku na palec
! <ESC><3>CHR(n) nastavi LF na n/216 palce ( n = 0 az 255 )
<ESC><4> nastavi sikme pismo ( ITALIC )
<ESC><5> nastavi kolme pismo
* <ESC><6> zapne rozsireni znakove sady
* <ESC><7> vypne rozsireni znakove sady
<ESC><8> ignorace konce papiru
<ESC><9> reagovani na konec papiru
<ESC><:><NUL><NUL><NUL> nakopiruje normalni znakovy generator do DLL
<ESC><;> ingnorovano
<ESC>[<] umisti hlavu na HOME pozici ( CR bez LF )
<ESC>[=] sedmy bit bude na 0
<ESC>[>] sedmy bit bude na 1
* <ESC><?>CHR(m)CHR(p) preradi alternativni graficke znaky
<ESC><@> smaze buffer tiskarny a inicializuje zakladni nastaveni
! <ESC><A>CHR(n) nastavi LF na n/72 palce ( n = 0 az 85 )
* <ESC><B><NUL> smaze VT
* <ESC><B>CHR(n)CHR(n16)<NUL> nastavi pozice VT
<ESC><C>CHR(n) nastavi delku stranky v radcich ( n = 1 az 127 )
* <ESC><C><NUL>CHR(n) nastavi delku stranky v palcich ( n = 1 az 22 )
* <ESC><D>CHR(n1)CHR(nk)<NUL> nastavi pozice <HT> ( k max = 32 )
* <ESC><D><NUL> zrusi vsechny pozice <HT>
<ESC><E> zapne zvyraznene pismo ( emphasized )
<ESC><F> vypne zvyraznene pismo
<ESC><G> zapne rozsirene pismo ( enhanced, double strike )
<ESC><H> vypne rozsirene pismo
* <ESC><I><0> zrusi 7 bit ASCII
* <ESC><I><1> nastavi 7 bit ASCII
! <ESC><J>CHR(n) provede LF o n/216 palce ( n = 0 az 255 )
<ESC><K>CHR(n1)CHR(n2)CHR(v1)...CHR(vk) tisk v grafickem rezimu 60x72 DPI
<ESC><L>CHR(n1)CHR(n2)CHR(v1)...CHR(vk) tisk 120x72 DPI polovicni rychlosti
<ESC><M> nastavi rezim tisku ELITE
<ESC><N>CHR(n) pocet radku pro preskoceni na konci stranky ( n = 0 az 127 )
<ESC><O> vypne <ESC><N>
<ESC><P> nastavi rezim tisku PICA
<ESC><Q>CHR(n) nastavi pravy doraz
<ESC><R>CHR(n) nastavi narodni abecedu n ( n = 0 az 3 )
* <ESC><S><1> zapne subscript
* <ESC><S><0> zapne superscript
* <ESC><T> vypne subscript a superscript
* <ESC><U><0> vypne jednosmerny tisk
* <ESC><U><1> zapne jednosmerny tisk ( unidirectional )
<ESC><V> ignorovano
<ESC><W><0> vypne dvojitou siri
<ESC><W><1> zapne dvojitou siri ( double width )
* <ESC><Y>CHR(n1)CHR(n2)CHR(v1)...CHR(vk) tisk v grafickem rezimu 120x72 DPI
* <ESC><Z>CHR(n1)CHR(n2)CHR(v1)...CHR(vk) tisk v grafickem rezimu 240x72 DPI
<ESC><[> ignorovano
* <ESC><\>CHR(m)CHR(n) nastavi relativni pozici v 1/120 palce
<ESC><]> ignorovano
* <ESC><^>CHR(m)CHR(n1)CHR(n2)CHR(v1)...CHR(vk) nastavi 9 bitovou grafiku
<ESC><_> ignorovano
<ESC><`> ignorovano
DCD42G.NAV - 6 -
* <ESC><a> automaticke zarovnavani pro NLQ
* <ESC><b>CHR(n)CHR(m1)CHR(mk)<NUL> nacte VFU ( k = 1 az 16 )
<ESC><c> ignorovano
<ESC><d> ignorovano
<ESC><e> ignorovano
<ESC><f> ignorovano
<ESC><g> ignorovano
<ESC><h> ignorovano
<ESC><i> ignorovano
* <ESC><j>CHR(n) provede reverzni LF o n/216 palce ( n = 0 az 255 )
<ESC><k> ignorovano
<ESC><l>CHR(n) nastavi levy doraz
<ESC><m> ignorovano
<ESC><n> ignorovano
<ESC><o> ignorovano
<ESC><p><0> vypne proporcionalni tisk
<ESC><p><1> zapne proporcionalni tisk
<ESC><q> ignorovano
! <ESC><r> ignorovano
* <ESC><s><0> vypne polovicni rychlost tisku
* <ESC><s><1> zapne polovicni rychlost tisku
* <ESC><t><NUL> nastavi normalni znaky
* <ESC><t><SOH> nastavi graficke znaky
<ESC><u> ignorovano
<ESC><v> ignorovano
<ESC><w> ignorovano
* <ESC><x><NUL> nastavi mod tisku Utility ( UTL )
* <ESC><x><SOH> nastavi mod tisku Near Letter Quality ( NLQ )
<ESC><y> ignorovano
<ESC><z> ignorovano
<ESC><{> ignorovano
<ESC><|> ignorovano
<ESC><}> ignorovano
<ESC><~> ignorovano
<ESC><DEL> ignorovano
Poznamky:
=========
Znak na prvni pozici znamena, ze DCD PRT-42G na tento ridici povel:
mezera - reaguje shodne
* - nereaguje
! - reaguje podobne nebo jinak ( viz zmeny )
? - nereaguje, ale v planovane verzi bude reagovat shodne nebo podobne
DCD42G.NAV - 7 -
Jak vyzkouset spravnost nove naprogramovanych EPROM
===================================================
EPROM oznacena <1> nebo <CPU> se umisti do patice na hlavni desce. Vyrez musi
smerovat k zadni stene. druha EPROM, oznacena <2> nebo <IF> se umisti na desku
s interfacem, vyrez musi smerovat vlevo.
Po osazeni a prvnim zapnuti musi tiskarna umistit tiskaci hlavicku na pravy
doraz a ihned z neho odjet. Pokud se tak nestane, nastala nekde chyba
a tiskarnu je potreba ihned vypnout. V opacnem pripade tiskarnu take vypneme
a po chvili zase zapneme, s tim ze drzime stiskly senzor ON LINE. Tiskarna
musi vypsat autotest. Pote vyzkousime komunikaci s pocitacem, nejprve zkusime
vytisknout obycejny text a pote i s ridicimi sekvencemi.
Cely znakovy generator vyzkousime z basiku nasledujicim zpusobem:
10 OPEN "PRT:" FOR OUTPUT AS #1
20 PRINT #1,CHR$(27);"!";CHR$(32);CHR$(27);":"
30 FOR I=32 TO 255
40 PRINT #1,CHR$(27);"r$$";CHR$(I);"$";
50 NEXT I
60 PRINT #1
70 PRINT #1,CHR$(27);"@";
80 CLOSE #1
90 END
Pro pocitac SORD m.5 doplnime jeste jeden radek:
15 POKE &705A,1
Na radku 10 muze byt misto PRT zarizeni LPT nebo jen L, nebo muze byt radek 10
a 80 vynechan uplne s tim, ze misto PRINT #1, bude LPRINT. To zalezi pouze
na typu pocitace nebo typu pouziteho interpretru basic.
Na radku 20 muzeme pouzit libovolne ridici sekvence pro volbu typu pisma.
V pripade, ze budeme chtit znat i cisla predloh, pak se zmeni radek 40 na:
40 PRINT #1,CHR$(27);"r$$";CHR$(I);I;":$ ";
64 znaku na radek se nastavi takto:
PRINT #1,CHR$(27);CHR$(32);CHR$(254);CHR$(27);"M";CHR$(27);"W1";
__________
Pro urychleni tisku je dobre propojit v konektoru signal AUTOFEEDXT se zemi.
Pretisknuti radku pak jiz sice nelze provest pouhym <CR>, protoze po <CR> se
automaticky vykona i <LF>, ale lze pouzit sekvenci "<ESC><<>", ktera vykona
<CR> bez <LF>.
Poznamka pro uzivatele PC, ST ...
=================================
Tiskarna je nyni sice EPSON kompatibilni, avsak plati pro ni ruzna omezeni,
ktera vyplyvaji z jeji konstrukce. Toto je potreba mit stale na pameti pri
pri praci s programy, ktere predpokladaji plnou EPSON kompatibilitu. Napriklad
DLL je realizovan uplne jinak nez u EPSON, proto je nutne napsat si vlastni
ovladac tiskarny ( napriklad soubor .DST pro T602 ).
Prijemnou praci Vam preje programatorsky team LZR Soft z Kladna.
Napsal LZR Soft, datum poslední editace: 3. 7. 1991
================================= DCD42G.NAV =================================