ZX-Centroface

ZX-Centroface je interface pravděpodobně z roku 1987 o jehož historii a původu nevím vůbec nic. Našel jsem ho mezi ostatním klubovým hardwarem před mnoha lety a nevěnoval jsem mu pozornost až do teď. Ale ani před těmi mnoha lety už tam nebyl nikdo, kdo by si pamatoval odkud interface je a kdo ho vyrobil, jak se s ním pracuje atd...

Zeptal jsem se v diskuzi a ani tam si nikdo nevzpomněl. Přečetl jsem 2kB ROM a pozvolna jsme interface prozkoumali, l00k se ujal zkoumání ROM a obsah disassembloval a okomentoval. Díky němu víme na jaké příkazy ZX-Centroface reaguje, jak se nastavuje a ovládá. Já jsem interface propípal a nakreslil schéma v KiCADu. Z něj je zřejmé, na jakých portech a adresách interface pracuje a jak jsou zapojené signály do tiskárny.

Interface pravděpodobně pochází z doby, než se defakto standardem stala mnohem univerzálnější 8255. Na krabičce není žádný popis, pouze na plošném spoji je nápis LK-ELECTRONICS-CS copyright 1987 a v ROM lze najít staré telefonní číslo na kohosi z Prahy, kdo se podepsal jako Mr.Dan.

Účel

ZX-Centroface je interface pro připojení jehličkových tiskáren s rozhraním Centronics k ZX Spectru. Jeho 2kB ROM se stránkuje do oblasti ZX ROM od adresy 2048 (0x0800), kde pozměňuje chování příkazů LPRINT, LLIST a COPY. V podstatě nahrazuje ZX Printer modernější tiskárnou.

Nevíme jaké přesně tiskárny má podporovat. Některé modely jsou zřejmé - Epson 80, Epson 85, Epson 105, Seikosha 1000 a Seikosha 1200, ale jaký model tiskárny se má skrývat pod Star a Panasonic ví asi jen autor. Na druhou stranu, l00k odhalil jaké řídící kódy se používají při komunikaci s tiskárnou a podle toho lze příp. kompatibilitu ověřit.

foto foto

Já jsem tisk testoval na své devítijehličkové Epson LX-800 a zdálo se, že vše funguje správně. Kromě špatně tisknutého A z UDG sady, což je způsobeno chybou v programu v ROM ZX-Centroface nikoli nekompatibilitou tiskárny. Letmým nakouknutím do referenční příručky EPSON ESC/P se zdá, že by měly fungovat všechny modernější 9 jehličkové tiskárny s Epsony kompatibilní. A ze zkoumání zdrojového kódu vyplývá, že volba tiskárny ve skutečnosti nehraje roli, kromě režimu CS MODE pro tisk znaků s diakritikou, který se ale použitými řídícími kódy pro tiskárnu nijak neliší od grafického tisku.

Zapojení

Interface byl osazený v černé plechové krabičce s plochým kabelem zakončeným samořezným konektorem Centronics. Plošný spoj uvnitř je neprokovený, navržený tak, aby se dal vyrábět v domácích podmínkách fotocestou. Integrované obvody jsou pájené jen ze strany spojů, ze strany součástí je zapájený pouze sběrnicový konektor a propojky.

foto foto

Schéma berte s rezervou, vytvořil jsem ho propípáním desky. Mohl jsem se při zkoumání snadno splést. Stejně tak popisky funkce mohou být špatně. Návrh plošného spoje v elektronické podobě neexistuje. Překreslovat současnou desku mi nedává smysl a navrhovat desku od základu znovu taky ne. Nicméně existuje projekt pro KiCAD 5.x se schématem, ze kterého by se dalo vyjít, pokud by po tom někdo toužil.

schéma

Ovládání

Interface zná tři příkazy. LPRINT a LLIST fungují dle očekávání a tisknou zadaný text, resp. výpis programu.

Příkaz COPY má funkci rozšířenou. Samotný příkaz COPY bez parametru tiskne screenshot obrazovky způsobem, jak je interface nastavený. To může být buď textově - program rozpoznává znaky ze ZX ROM stejně jako to dělá příkaz SCREEN$ v BASICu, obsah obrazovky pošle na tiskárnu jako text a vše ostatní ignoruje. Nebo tiskne kompletně graficky.

Příkaz COPY s parametrem lze použít k nastavení ZX-Centroface.

příkaz funkce
COPY : ? zobrazí stavový řádek s aktuálními parametry
COPY : REM =n 0 nastaví tiskárnu Star (výchozí)
1 nastaví tiskárnu Epson 80
2 nastaví tiskárnu Epson 85
3 nastaví tiskárnu Epson 105
4 nastaví tiskárnu Seikosha 1000 (SEIK 1000)
5 nastaví tiskárnu Seikosha 1200 (SEIK 1200)
6 nastaví tiskárnu Panasonic
7 nastaví tiskárnu CS MODE - režim tisku češtiny a slovenštiny
COPY : REM /n 0 nastaví konce řádků pouze CR
1 nastaví konce řádků CR+LF, moje tiskárna to vyžaduje
COPY : REM CHR$n 0 vypne detokenizaci, místo příkazů BASICu se budou rovnou posílat jejich kódy
1 zapne detokenizaci, příkazy BASICu se při tisku z kódu převedou na text a vytisknou se tak, jak jsou vypsané v BASICu příkazem LIST
COPY : REM .n 0 volí textový režim
1 zapne tisk grafiky 1:1 pro COPY
2 zapne tisk grafiky zvětšený 2x
3 ..7 dá se nastavit, ale chová se stejně jako hodnota 2
COPY : LEN n nastaví počet znaků na řádek, kvůli chybě v programu by měl být sudý, výchozí je 80

Nejčastěji jsem používal tyto příkazy - první pro zapnutí CR+LF, druhý pro grafický tisk, příp. zvětšení s parametrem 2.

COPY : REM /1
COPY : REM .1

Stavový řádek se zobrazí po každé změně parametru pomocí příkazu COPY. Pro návrat do BASICu je nutné stisknout mezerník. První položka stavového řádku zobrazuje ukončení řádku CR, nebo CR+LF. Např. moje Epson LX-800 vyžaduje CR+LF. Další položka ukazuje nastavení tokenů, tj. jestli se tisknou BASICové příkazy, nebo se tisknou přímo kódy (TODO: ověřit - souvisí s tiskem češtiny?).

Položka, která je pouze číselná signalizuje režim příkazu COPY, tj. 0 pro tisk pouze textu včetně textové kopie obrazovky, 1 pro grafický tisk 1:1 a 2 pro dvojnásobné zvětšení grafického tisku (větší hodnoty se interpretují jako 2). Následuje model tiskárny a poslední je počet znaků na řádek. Výchozích 80 obvykle vyhoví.

foto

Když je zapnutý grafický tisk, budou se tisknout skutečné podoby UDG grafiky (kromě A), čtverečková grafika a znak copyright. Ostatní znaky se tisknou písmem, které je nastavené na tiskárně (moje tiskárna umí DRAFT, NLQ SANS a NLQ TIMES), protože se do tiskárny posílají jako text, ne jejich grafická podoba.

Když jsou vypnuté tokeny, budou se jejich kódy posílat přímo tiskárně a tiskárna je bude tisknout dle svého nastavení a schopností. A když je zapnutý CS MODE, tak se místo znaků s kódy 192 až 255 budou tisknout znaky s diakritikou, vč. znaku 246, kde jsou ve skutečnosti instrukce strojového kódu.

Kódování znaků s diakritikou se zdá být velmi nestandardní.

192 ' 193 á 194 mezera 195 č 196 ď 197 ě 198 ŕ 199 mezera
200 ü 201 í 202 ů 203 ĺ 204 ľ 205 ö 206 ň 207 ó
208 ô 209 ä 210 ř 211 š 212 ť 213 ú 214 mezera 215 é
216 à 217 ý 218 ž 219 220 ˇ 221 ß 222 223 ^
224 čárka 225 Á 226 mezera 227 Č 228 Ď 229 Ě 230 Ŕ 231 mezera
232 Ü 233 Í 234 Ů 235 Ĺ 236 Ľ 237 Ö 238 Ň 239 Ó
240 Ô 241 Ä 242 Ř 243 Š 244 Ť 245 Ú 246 asm 247 É
248 À 249 Ý 250 Ž 251 ¨ 252 ˇ 253 254 ^ 255

V případě, že je zapnutý textový tisk, budou se vynechávat semigrafické znaky, UDG a copyright bude nahrazen trojicí znaků - c v kulatých závorkách. Příkaz COPY se pokusí rozpoznat znaky shodné s fontem v ZX ROM a bude tisknout obsah obrazovky znakově, kde znaky rozpozná, nebo mezery, kde znaky nerozpozná. Tímto způsobem lze např. vytisknout kousek výpisu programu, nebo výsledky běhu programu vypsané příkazem PRINT na obrazovku.

foto foto

Předchozí snímky ukazují, jak může vypadat tisk obsahu obrazovky, nebo výpis programu obsahující semigrafické znaky a UDG pokud je zapnutý grafický tisk, ZX-Centroface se je pokusí přidat do textu a zároveň vše ostatní tisknout písmem tiskárny. Tisk písmem tiskárny je na mé Epson LX-800 o něco rychlejší a vypadá lépe, než grafický tisk písmem ZX Spectra, které se podobá spíš písmu DRAFT. Je méně výrazné a hůř čitelné. Tím spíš s mou vyschlou barvící páskou.

ZX-Centroface je zajímavý interface, ale v dnešní době obtížně kombinovatelný s moderními periferiemi kvůli svému neúplnému adresování i vybraným adresám, které jsou dané snahou o maximální kompatibilitu se ZX Printer. Z hlediska kompatibility je lepší použít raději interface s 8255 a tisk raději řešit ovladačem v RAM počítače. Odpadnou potíže s upravenými ROM, kolizemi na sběrnici...

Kempston Centronics Interface E

Kolega Clouseau odkryl další dílek skládanky okolo tohoto interface, viz diskuze a tou je Centronics Interface E od firmy Kempston, stejné firmy, která mezi Spectristy proslula svými interface pro připojení joysticků a myší. Na první pohled je vidět, že v obou interface jsou použité stejné integrované obvody.

V Clouseaově interface je ruská EPROM s datem výroby asi o dva roky pozdějším (1988) než zbytek čipů (1986) nadepsaná Consul.

Když jsem měl název, kterého se dalo chytit, bylo snadné najít návod ke Kempston Centronics Interface E který popisuje příkazy z velké části shodné s ZX Centroface. Je tedy zjevné, že tyto dva interface mají hodně společného a zdá se, že ZX Centroface je přímou kopií interface od Kempston Micro Electronics Ltd jen s upraveným obsahem ROM. Další zmínka a nejspíš stejný manuál je na WOSu, tentokrát s vyfocenou krabičkou a tady lze stáhnout originální obsah ROM.

Dle l00kova zkoumání se zdá, že tisk na tiskárně Consul byl redukován pouze na tisk textu a ROM je povětšinou shodná se ZX ROM kromě drobných úprav. A ROM ZX Centroface není jen zkopírovanou ROM Kempston Centronics Interface E, ale je výrazně přepracovaná a přizpůsobená.

Poděkování

Ještě jednou veliké díky l00kovi, který analyzoval a okomentoval ROM interface aniž by ho měl fyzicky k dispozici. Ušetřil mi tím obrovskou spoustu práce. Pochopení funkce příkazů a parametrů příkazu COPY i následná úprava zdrojáku, aby byl zkompilovatelný, byly díky němu mnohem jednodušší. Resp. l00k nakonec prozkoumal všechny tři ROM, ale pouze ROM ZX Centroface jsem dokončil do zkompilovatelné podoby, poznámky ke zbývajícím dvěma ROM jsou k dispozici v diskuzi na OldComp.cz.

A díky Clouseauovi za nalezení Kempston Centronics Interface E o kterém jsem do té doby ani netušil, že existuje.

Odkazy

Download

Historie změn článku

  • 2023-08-09 - zveřejněno
  • 2023-08-20 - doplněno o další zjištění o Kempston Centronics Interface E

[ 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.