Grundlagen

Auf dem VT100-Board sind 2 Fonts realisiert, wobei in Font 0 deutsche Umlaute von mir integriert wurden. Die Fonts haben jeweils 256 Zeichen, wobei der obere Teil  für Unterstreichungen genutzt wird. Somit enthält der Font eigentlich nur 128 Zeichen:

Font0: Font1:

Diese Fonts können über das Menü (F7) oder mit ESC-Sequenzen umgeschaltet werden.

Ab der Firmeware V1.7.5 werden 4 Zeichensätze (G0, G1, G2, G3  die letzten 2 nur mit VT200) unterstützt. Zeichensätze sind "Mappings" auf die jeweiligen Zeichen im Font. Diese Zeichensätze können geladen werden (beim Start ist G0 mit US ASCII und G1 mit DEC special characters vorbelegt):

  • UK
  • US ASCII
  • DEC special characters and line drawing
  • DE
  • DEC supplemental

 

Ansteuerung

Man kann die unten genannten Code recht einfach in Linux über das ECHO-Kommando an das Terminal schicken. Dazu muss die Eingabe von V.24 auf USB im Menü umgeschaltet werden. Der Parameter "-e" sorgt dafür, dass mit "\e" der Escape-Code gesendet wird (aber auch \r und \n sind damit möglich):

echo -e "\e#9" > /dev/ttyUSB0

echo -e "Hallo\r" > /dev/ttyUSB0

Man kann die Codes aber natürlich auch aus eigenen Programmen heraus versenden, um farbige Texte zu generieren, Hier in Turbo-Pascal:

writeln('Start der Darstellung');
write(esc + '[34m');   {Text blau}
writeln('Blauer Text');

write(esc + '[47m');   {Hintergrund weiss}
writeln('mit weissem Hintergrund');

reset; {ESC [ m}

writeln('wieder normal');

 

Steuer-Zeichen

Die folgende Liste gibt eine Übersicht der verfügbaren Steuer-Sequenzen:

Umschaltung der Fonts

Dies geht entweder über das Steuer-Menü (F7) oder über ESC-Sequenzen (ohne Leerzeichen):

ESC [ 10 m  Select font 0 (Debug/experimental)
ESC [ 11 m  Select font 1 (Debug/experimental)



Umschaltung der Zeichensätze

Shift out SO 0x0E   Selects G1 character set
Shift in  SI 0x0F   Selects G0 character set

auf der Linux-Konsole z.B. mit

SO: echo -e "\x0E" > /dev/ttyUSB0  oder 
SI: echo -e "\x0F" > /dev/ttyUSB0

Diese beiden gibt es ab vt100. Sie blenden G0 oder G1 in die untere Hälfte (GL) der Zeichensatztabelle ein. vt100 hatte ja nur 7 Bit und deshalb keine obere Hälfte (GR).
G0 und G1 sind aber nicht fest, sondern können mit verschiedenen Zeichensätzen belegt werden:

Character Set                         G0 Designator   G1 Designator
-------------------------------------------------------------------
United Kingdom (UK)                   ESC ( A         ESC ) A
United States (US)                    ESC ( B         ESC ) B
Special chars and line drawing set    ESC ( 0         ESC ) 0

Weiteres zur Zeichensatzauswahl (insbesondere unter VT200 findet sich hier:

https://vt100.net/docs/vt220-rm/chapter4.html#S4.4

 

Umlaute

Umlaute können als deutsches National Replacement Character Set (NRC set) ausgewählt werden:

ESC ( K           SCS     Select Character Set DE  --> G0
ESC ) K           SCS     Select Character Set DE  --> G1

Sie sind wie folgt im Zeichensatz eingebaut: http://vt100.net/docs/vt220-rm/table2-10.html

 

Control Characters

Ps  Numerischer, optionaler Parameter. bestehend aus einer oder mehrerer Ziffern.
Pm  Durch ; getrennte Folge von numerischen Parametern Ps.

C0 control characters

          Code  Equiv.
Mnemonic  (Hex) ESC      Seq Name
----------------------------------------------------------
BEL                      Generates bell tone.
BS                       Moves cursor to the left one character position;
                         if cursor is at left margin, no action occurs.
HT                       Moves cursor to next tab stop, or to right margin
                         if there are no more tab stops.
CR                       Moves cursor to left margin on current line.
LF                       Causes a linefeed.
VT                       Processed as LF.
FF                       Processed as LF.
SO        0E             Invoke G1 character set.
SI        0F             Invoke G0 character set. (default)
CAN                      If received during an escape or control sequence,
                         cancels the sequence.
SUB                      Processed as CAN.
ESC                      Processed as a sequence introducer.


C1 control characters

          Code  Equiv.
Mnemonic  (Hex) ESC      Seq Name
----------------------------------------------------------

IND             ESC D    Index
NEL             ESC E    Next line
RI              ESC M    Reverse index
CSI             ESC [    Control sequence introducer
ST              ESC \    String terminator


Escape Sequences

(Senden aller Code ohne Leerzeichen!)


ESC
Seq              Mnem.   Name
----------------------------------------------------------

ESC D            IND     Linefeed.
ESC E            NEL     Newline.
ESC M            RI      Reverse linefeed. (Curser up)
ESC Z            DECID   DEC private identification. The terminal returns 
                         ESC [ ? 6 c, claiming that it is a VT102.
ESC c            RIS     Reset to Initial State (Power Up)


ESC ~            LS1R    Invoke G1 into GR (VT200 mode only).
ESC n            LS2     Invoke G2 into GL (VT200 mode only).
ESC }            LS2R    Invoke G2 into GR (default) (VT200 mode only).
ESC o            LS3     Invoke G3 into GL (VT200 mode only).
ESC |            LS3R    Invoke G3 into GR (VT200 mode only).


ESC ( A          SCS     Select Character Set UK  --> G0
ESC ( B          SCS     Select Character Set US ASCII --> G0
ESC ( K          SCS     Select Character Set DE  --> G0
ESC ( <          SCS     Select Character Set DEC supplemental  --> G0
ESC ( 0          SCS     Select Character Set DEC special characters
                         and line drawing set --> G0
 
ESC ) A          SCS     Select Character Set UK  --> G1
ESC ) B          SCS     Select Character Set US ASCII  --> G1
ESC ) K          SCS     Select Character Set DE  --> G1
ESC ) <          SCS     Select Character Set DEC supplemental  --> G1
ESC ) 0          SCS     Select Character Set DEC special characters
                         and line drawing set  --> G1
 
ESC * A          SCS     Select Character Set UK  --> G2
ESC * B          SCS     Select Character Set US ASCII  --> G2
ESC * K          SCS     Select Character Set DE  --> G2
ESC * <          SCS     Select Character Set DEC supplemental  --> G2
ESC * 0          SCS     Select Character Set DEC special characters
                         and line drawing set  --> G2
 
ESC + A          SCS     Select Character Set UK  --> G3
ESC + B          SCS     Select Character Set US ASCII  --> G3
ESC + K          SCS     Select Character Set DE  --> G3
ESC + <          SCS     Select Character Set DEC supplemental  --> G3
ESC + 0          SCS     Select Character Set DEC special characters
                         and line drawing set  --> G3


ESC 7            DECSC   Save current state (cursor coordinates, attributes,
                         character sets pointed at by G0, G1).
SC 8             DECRC   Restore state most recently saved by ESC 7.
ESC # 8          DECALN  DEC screen alignment test - fill screen with E's.
ESC # 9                  Show Font (Debug)

ESC [ Ps @       ICH     Insert Ps blank characters  (defaut = 1) (VT220)
ESC [ Ps A       CUU     Move cursor up
ESC [ Ps B       CUD     Move cursor down
ESC [ Ps C       CUF     Move cursor right
ESC [ Ps D       CUB     Move cursor left
ESC [ Ps ; Ps H  CUP     Move cursor to [row; column] (default = [1,1])
ESC [ Ps J       ED      Erase in Display
       Ps = 0            Erase below (default)
       Ps = 1            Erase above
       Ps = 2            Erase all
ESC [ Ps K       EL      Erase in line
       PS = 0    EL      Erase to right (default)
       PS = 1    EL      Erase to left
       PS = 2    EL      Erase all
ESC [ Ps L       IL      Insert Ps lines (defaut = 1)
ESC [ Ps M       DL      Delete Ps lines (defaut = 1)
ESC [ Ps P       DCH     Delete Ps characters (defaut = 1)
ESC [ Ps X       ECH     Erase Ps characters  (defaut = 1) (VT220)
ESC [ Ps c       DA      Send device attributes
       PS = 0 or ommitt. Request attributes from terminal
                         Answer ESC [ ? 6 c: "I am a VT102")
ESC [ Ps ; Ps f  HVP     Move cursor to [row; column] (default = [1,1])
ESC [ Pm h       SM      Set Mode
       Ps = 4    IRM     Set insert mode
ESC [ ? Pm h     DECSET  DEC Private Set Mode Set
       Ps = 7    DECAWM  Set autowrap on (default)
       Ps = 25   DECTECM Cursor visible
ESC [ Pm l       RM      Reset Mode
       Ps = 4    IRM     Set replace mode (default)
ESC [ ? Pm l     DECRST  DEC Private Mode Reset
       PS = 7    DECAWM  Set autowrap off
       PS = 25   DECTECM Cursor not visible
ESC [ Pm m       SGR     Set character attributes
       Ps = 0            All attributes off
       Ps = 1            bold (increased intensity)
       Ps = 4            underline (simulated with color)
       Ps = 7            negative (reverse) image
       Ps = 10           Select font 0 (Debug/experimental)
       Ps = 11           Select font 1 (Debug/experimental)
       Ps = 22           bold off (normal intensity)
       Ps = 24           not underlined
       Ps = 27           positive image
       Ps = 30           Set foreground colorto black
       Ps = 31           Set foreground colorto red
       Ps = 32           Set foreground colorto green
       Ps = 33           Set foreground colorto yellow
       Ps = 34           Set foreground colorto blue
       Ps = 35           Set foreground colorto magenta
       Ps = 36           Set foreground colorto cyan
       Ps = 37           Set foreground colorto white
       Ps = 40           Set background colorto black
       Ps = 41           Set background colorto red
       Ps = 42           Set background colorto green
       Ps = 43           Set background colorto yellow
       Ps = 44           Set background colorto blue
       Ps = 45           Set background colorto magenta
       Ps = 46           Set background colorto cyan
       Ps = 47           Set background colorto white
ESC [ Ps n       DSR     Device Status report
       Ps = 5    DSR     Device status report:
                         Answer is ESC [ 0 n (Terminal OK).
       Ps = 6    CPR     Cursor position report: Answer is ESC [ y ; x R

Zeichensätze

In den SPIN-Dateien werden auch die Zeichensätze definiert. Zeichen haben dabei das folgende 8x16-Format:

Tools zur Konvertierung / Erstellung von Zeichen siehe in der Link-Liste.