On Wed, 28 Jan 2004, Jan Willem Stumpel wrote:

> Bart Oldeman wrote:
>
> >> Display of IBM "control characters" like ↑ (up arrow), ↓
> >> (down arrow) [..] Or is there a trick to get these chars also
> >> while being a user?
>
> > no you can't get them as a user without significant coding
> > effort, ie. utf-8 support [..] /dev/vcsa [..]
>
> [head spins] Just to make certain: I wasn't asking about UTF-8
> support in old DOS, which of course no one would expect. I´m just
> talking about the display of the up-arrow character, and similar
> IBM chars with values below 0x20, in very old DOS programs (like
> IBM Fixed Disk Organizer), which is OK for root but not for user.
> Sorry if I misunderstood you...

ok. I was talking about utf-8 support in dosemu, not dos.

The fundamental issue is that DOSEMU in the non-root console, just like in
an xterm or via an ssh or telnet connection thinks it talks to a terminal.

DOS programs or the BIOS write to video memory. DOSEMU in a terminal, if
it's not in "dumb" mode, scans the video memory for updates and writes
those updates to the terminal via a translation table
character->character. If you write 0x7 to a terminal you hear a beep, so
you don't get the IBM character associated with 0x7. Similar for all
other values under 0x20: these are all control characters.

The current DOSEMU implementation for terminals uses a 256->256 table
(constructed via unicode mappings and $_internal, $_external charset).
On the Linux console this is often a translation from cp437 to cp437, in
an xterm commonly from cp437 to iso8859-1. Except, those characters < 0x20
cannot be mapped to terminal characters < 0x20, or you'd get beeps and all
sorts of crazy things happening in your screen.

For the same reasons, with cp437->iso8859-1, line drawing characters can't
be drawn in xterms and they are approximated. Here (unlike the console in
cp437 mode) the characters 0x80 to 0x9f are also forbidden.

With a 256->utf8, or partially with a 256->256+acs table that problem
could be avoided, even remotely via telnet and so on. This simply isn't
implemented and that was what I was trying to explain.

Only with root it does directly address the *real* video memory, so then
DOSEMU doesn't worry about terminals at all. In xdosemu terminals aren't
used either, just like writing to /dev/vcsa (see "man vcsa", also not
implemented in dosemu) would avoid the terminal control codes.

Bart

-
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to