Emulátor terminálu

Počítače stolní, notebooky, tablety, tiskárny, scanery a vše, co nějak souvisí s PC

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Celeron
Příspěvky: 20531
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

Emulátor terminálu

#1 Příspěvek od Celeron »

Potřeboval bych k jedný starý non-PC mašině připojit po RS232 PC s Woknama jako terminál. Potřebuju aby měl 80 x 24-25 řádků a hlavně uměl přímou adresaci kurzoru přes ESC sekvenci s offsetem 32. Úplně ideální by bylo aby se dal uživatelsky definovat znakový registr od 80 do FFH ale není to podmínkou. Vyzkoušel jsem několik free emulátorů, počínaje Hyperterminálem ale žádný mi nechce zpracovávat ESC sekvence. Netuším proč, přece emulace nejběžnější VT100 a vyšších VT by měla ESC sekvence podporovat. Aspoň tady to píšou:

Kód: Vybrat vše

ASCII escape character
The ASCII "escape" character (octal: \033, hexadecimal: \x1B, or ^[, or, in decimal, 27) is used in many output devices to start a series of characters called a control sequence or escape sequence. Typically, the escape character was sent first in such a sequence to alert the device that the following characters were to be interpreted as a control sequence rather than as plain characters, then one or more characters would follow to specify some detailed action, after which the device would go back to interpreting characters normally. For example, the sequence of ^[, followed by the printable characters [2;10H, would cause a DEC VT102 terminal to move its cursor to the 10th cell of the 2nd line of the screen.

Jestli to chápu správně, nebo je to vůbec správně, ten offsef 32 v standardu není a to asi bude můj problém. Ale asi to bude špatně, nějak mě nehraje že 10H má být sloupec 10 když 2 je řádek 2...
No a dobrý by bylo, kdyby to šlo i na ME nebo XP abych mohl použít starý NTB, co se mi tu válej.
Díky
Jirka
Uživatelský avatar
jape
Příspěvky: 74
Registrován: 20 úno 2013, 00:00
Bydliště: Uh. Hradiště

#2 Příspěvek od jape »

Z historických dob mám dojem že potřebuješ emulaci VT-52, tam bývala sekvence CHR$(27)+"Y"+CHR$(32+5)+CHR$(32+20) tj kurzor na řádek 5, sloupec 20 ...
Nevím jestli jsi zkoušel TeraTermPro nebo Putty, obojí jsou dost pružné a tu emulaci by mohly zvládat. Za tím ESC je navíc "Y" a potom pozice..
Uživatelský avatar
Celeron
Příspěvky: 20531
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#3 Příspěvek od Celeron »

Jedu na Putty, připadal mi nejvíc přiohnutelnej. Myslel jsem, že se tu ozvou nějací Unixáři, prý Putty dost používají, ale zatím nic.
Na netu jsem našel User Manuál pro VT100, která je trochu rozšířená VT52 o který jsi psal. Je to jinak než jsi psal, a hlavně než jsem si myslel, že to má makat. Těch ESC sekvencí je možná 100 na všecko možný kolem nastavení terminálu. Akorá mě zatím není jasný, co je v tom Putty za rozdíl v možnosti emulace VT100 a ESC seq, co tam jde nastavit.
Například:
ESC [ H je cursor home
ESC [ J je výmaz obrazovky za kurzorem
ESC [ 3 B je cursor dolů zde například o 3 řádky
ESC [ 5 ; 10 f je posun cursoru na řádek 5, pozice 10
Ta moje mašina to dává podle analyzátoru jinak, konkrétně ESC 5 10 bez závorky, středníku a malýho f, takže musím zabudovat na výstup konverzi, naštěstí mám zdroják. Ale musím to ještě zkoumat, protože v manuálu píšou, že čísla jsou hex ale offset 32 by spíš říkal, že to je ASCII znak a tím odečtem offsetu se z toho dělá hex.
Jirka
Uživatelský avatar
Celeron
Příspěvky: 20531
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#4 Příspěvek od Celeron »

Nikdo nic k tématu?
Jirka
Uživatelský avatar
jape
Příspěvky: 74
Registrován: 20 úno 2013, 00:00
Bydliště: Uh. Hradiště

#5 Příspěvek od jape »

Co je to za mašinu a co ten terminál vlastně má dělat? Jen zobrazení jako nějaký displej nebo i ovládání klávesnicí? Od teratermu se dá schrastit zdroják v C++ případně v TurboPascalu, ale stejně se mi ta řídící sekvence pro kurzor nezdá.
Všechny standartní terminály používají ESC sekvence v nějakém rozšířeném režimu, protože "zneužít" znak ESC jen pro adresování kurzoru, kde by musely být za ním jen 2 pozice, je pro tvůrce mrhání..
Procházel jsem sekvence pro HP emulaci terminálů, ANSI (a z něj vycházející VT52, VT100 atd), ale všude je to jak jsem psal tj. za ESC je nějaký znak říkající co za sekvenci bude následovat. U prvního příspěvku to 10H jsou vlastně 2 údaje tj. sloupec 10 a to "H" upřesňuje celou sekvenci že jde o umístění kurzoru.
K té nejmenované mašině asi existoval nějaký specializovaný terminál nebo aspoň aplikace která nesplňuje běžné normy pro komunikaci.
Uživatelský avatar
Celeron
Příspěvky: 20531
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#6 Příspěvek od Celeron »

Tak ona to není emulace VT100 ale VT52!! Už jsem našel ty sekvence.

Kód: Vybrat vše

Codes for use in VT52 compatibility mode
Esc<      Enter/exit ANSI mode (VT52)      setansi
Esc=      Enter alternate keypad mode      altkeypad
Esc>      Exit alternate keypad mode      numkeypad
EscF      Use special graphics character set   setgr
EscG      Use normal US/UK character set      resetgr
EscA      Move cursor up one line         cursorup
EscB      Move cursor down one line      cursordn
EscC      Move cursor right one char      cursorrt
EscD      Move cursor left one char      cursorlf
EscH      Move cursor to upper left corner   cursorhome
EscLineColumn   Move cursor to v,h location      cursorpos(v,h)
EscI      Generate a reverse line-feed      revindex
EscK      Erase to end of current line      cleareol
EscJ      Erase to end of screen   cleareos
EscZ      Identify what the terminal is      ident
Esc/Z   Correct response to ident      identresp

Stačí mi aby to umělo všechny posuny kurzoru a mazání, tedy sekvence od Esc A do ESC J.
Oproti VT100 je v VT52 jen pár příkazů, není tam za ESC hranatá závorka.
Jenže je docela problém. Putty neumí emulovat VT52. Zkouším stáhnout něco jinýho ale moc výběru není. Asi mě nezbyde než předělat v biosu obsluhu terminálu VT52 na VT100. No a je to k velký historii, Xerox 820 rok 1982 ke kterýmu nemám monitor.
Jirka
Uživatelský avatar
rnbw
Příspěvky: 37426
Registrován: 21 bře 2006, 00:00
Bydliště: Bratislava

#7 Příspěvek od rnbw »

Uživatelský avatar
Celeron
Příspěvky: 20531
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#8 Příspěvek od Celeron »

Díky!
Podle odkazu by měl PuTTY měl umět VT52, ale zatím mi na příkazy VT52 nereaguje.... :cry: Vypadá to, že každej emulátor si tvůrci malinko přiohnuli dle svých potřeb. Napsal jsem si jednoduchej prográmek, kterej umí poslat na COM1 řetězec znaků 0-FFh a tak to odpoledne zkusím na co Putty reaguje a na co ne.
Jirka
Uživatelský avatar
rnbw
Příspěvky: 37426
Registrován: 21 bře 2006, 00:00
Bydliště: Bratislava

#9 Příspěvek od rnbw »

Moze byt v tom zozname chyba. Skus pripadne nejaky iny emulator z toho zoznamu, napriklad Qodem.
Uživatelský avatar
Celeron
Příspěvky: 20531
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#10 Příspěvek od Celeron »

Tak už vím, jak to vše maká. :wink: VT52 a VT100 je naprosto něco jinýho.
Žádný takový, jak píšou že VT52 je podmnožina VT100. No a navíc je v popisech ESC sekvencí pár chyb.
Pomocí toho testovacího programu na poslání hexa na terminál jsem na to přišel.
VT52 je strasně jednoduchej, ESC a jeden ASCII znak, třeba výmaz obrazovky od kurzoru je ESC J. Adresace kurzoru je ESC Y line colum , přičemž line a colum je 7 bit číslo+20h. Zajímavý je, že ve dvou specifikacích VT52 co jsem našel na netu není o Y v sekvenci ani zmínka, prostě chyba kterou někdo dál opisoval.
Dál jsem zjistil, že aby u Hyperterminálu a PuTTY kde nejde přímo navolit VT52 je možný ve VT100 zapnout VT52 pomocí sekvence 1Bh 5Bh 3Fh 32h 6Ch. Hyperterminál je ale naprd, neumí znaky nad 80H ale PuTTY je supr.
VT100 je o dost složitější, ESC příkazy mají 2-7 znaků. Třeba adresace kurzoru je proti VT52 úplně jinak: ESC [ line ; colum f . Line a colum je vyjádřeno zcela jinak, je dekadicky rozepsaný na ASCII znaky, třeba ESC [ 20 ; 132 f je posun na line 20 a colum 132.
Uff :pc:
Jirka
Uživatelský avatar
jape
Příspěvky: 74
Registrován: 20 úno 2013, 00:00
Bydliště: Uh. Hradiště

#11 Příspěvek od jape »

Tu variantu "Esc Y xx yy" jsem psal už nahoře, ale neseděl tam tvůj výstup z analyzátoru bez "Y" ...
Uživatelský avatar
Celeron
Příspěvky: 20531
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#12 Příspěvek od Celeron »

Nene, opravdu jsem žádný Y za ESC nenaměřil. Xerox vysílá jen ESC lines colum.
Při žádným jiným řízení kurzoru z Xeroxu se ESC neposílají a kurzorový posuvy jsou jen jednoznakový jako CTRL x umístěný v rozsahu 0-1FH!!
Například sekvence kurzor home je u VT52 dvouznaková ESC H (1B 48H) a u Xeroxu jednoznaková CRTL ] (1DH). Prostě si to zjednodušili a nebo na to měli nějakej svůj terminál, co nerespektoval VT52. To že by to mohlo podporovat VT100 nebo VT52 byla jen moje doměnka, jak vidno špatná.
Právě na tohle jsem teď dopsal znakovej konvertor a už to chodí jak má.
Díky za pomoc.
Jirka
Odpovědět

Zpět na „Výpočetní technika“