The kernel knows about 4 translations of bytes into console-screen symbols. The four tables are: a) Latin1 -> PC, b) VT100 graphics -> PC, c) PC -> PC, d) user-defined.
There are two character sets, called G0 and G1, and one of them is the current character set. (Initially G0.) Typing ˆN causes G1 to become current, ˆO causes G0 to become current.
These variables G0 and G1 point at a translation table, and can be changed by the user. Initially they point at tables a) and b), respectively. The sequences ESC ( B and ESC ( 0 and ESC ( U and ESC ( K cause G0 to point at translation table a), b), c) and d), respectively. The sequences ESC ) B and ESC ) 0 and ESC ) U and ESC ) K cause G1 to point at translation table a), b), c) and d), respectively.
The sequence ESC c causes a terminal reset, which is what you want if the
screen is all garbled. The oft-advised echo ˆVˆO
will only make G0 current,
but there is no guarantee that G0 points at table a).
In some distributions there is a program reset(1) that just does
echo ˆ[c
.
If your termcap entry for the console is correct (and has an entry
:rs=\Ec:
), then also setterm -reset
will work.
The user-defined mapping table can be set using mapscrn(8).
The result of the mapping is that if a symbol c is printed, the symbol
s = map[c]
is sent to the video memory. The bitmap that corresponds to
s
is found in the character ROM, and can be changed using setfont(8).