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 =================================