[comp.protocols.tcp-ip] needs VT220 host, was emulation

PIRARD%vm1.ulg.ac.be@CUNYVM.CUNY.EDU (Andr'e PIRARD) (12/11/90)

On Wed, 19 Sep 90 11:29:05 -0500 James B. Van Bokkelen said:
>If it has to replace ours, he needs an IBM PC DOS VT220 emulator with
>7-bit and 8-bit support, the ISO Latin character set, keyboard and
>display re-mapping and print screen support, built into a Telnet with
>a built-in FTP server and multi-session capability.  Novell (Excelan)
>offers VT220 in their product for the EXOS205, but I don't know its
>capabilities.  Sun, IBM and 3Com had VT100 last I knew, I don't know
>what Beame & Whiteside offers.  One could also get a VT220 emulator
>from one of the Ascii emulator specialists and use it with an INT 14
>Telnet redirector.  I don't recall any INT 14 redirector or VT220
>emulator Telnets that are free...

Fine to us, those "foreign" language speakers, James.
Now we have the terminal, how can we have the host. Let me explain.
To us, computers codes are just as different as EBCDIC is from ASCII.
This is because we do have to use an 8-bit code and the "ASCII extension" of
the PC and the Macintosh, for example, are not compatible.
It needs little reasoning to come to the conclusion that a standard code has
to be defined to be used on the communication line, just as ASCII is, that is
of course an extension of ASCII. Telnet binary mode, for one, is not enough
because it does not enforce computers to use the same exchange code. The same
problem occurs for several other application protocols and the rule should be
that either a system simply uses that standard code or has to translate its
own to standard when exchanging data on communication lines. A 8-bit
invertible translation has to be defined for each proprietary code, even if
the character set does not match the standard set exactly. The programming
key is to use the standard code in memory and provide a translation at the
device level (keyboard, screen, file), optional by possibly being null.
It needs very little indeed to fit the 4th wheel to the great TCP/IP car.
Unhappily, most of the TCP/IP protocols do not define that 8-bit code (X is
the counter example, however) worse have a tendency to restrict to 7-bit.

Everyone, including X, seems to agree that this code is ISO 8859/1 (for Latin
group 1 languages, others would use other versions untranslatable to each
other, except for the common ASCII lower half).
But I find this agreement too silent. Which 8-bit code to use seems to be
left to anybody's whim. Unix moves to 8-bit, but which mainly depends on
the character code of the devices (terminals and printers mainly).
I have heard of installations using Unix with PC code page 850 (exactly the
same character set as ISO 8859/1, but with different code points), even IBM
saying that it's the code of AIX. Thus, VT220 and Macintoshes cannot be used.
I've heard that SunOS 4.1 starts using ISO 8859/1 (is that correct?).

The higher VT models emulation does just that: translate ISO 8859 to local.
The specific question is: how does this integrate with Telnet and how does
a Unix host have to be setup to use 8859?
Should a 7-bit path be used with SO/SI shifting for both screen and keyboard
(seems a pain, especially to recover from entering the wrong mode), or will
the emulator request binary mode and Unix understand?
Unix applications (of those being able to process 8 bits) should work
unaware of terminal setup requirements. How will the VT terminal enter
ISO 8859/1 mode (or shouldn't the emulator best be locally configurable to
use ISO 8859/1 without any system or application action?).
In a word, how use ISO 8859/1 as simply as ASCII? Sorry I am not a Unix man.

Please excuse my difficulties to use this standard language on communication
lines, and believe I'd really like to be able to use my own to send correct
mail to French talking people, including those in so far away Quebec :-)

Andr'e PIRARD             SEGI, Univ. de Li`ege
B26 - Sart Tilman         B-4000 Li`ege 1 (Belgium)
pirard@vm1.ulg.ac.be  or  PIRARD%BLIULG11.BITNET@CUNYVM.CUNY.EDU

jbvb@FTP.COM (James B. Van Bokkelen) (12/13/90)

    The specific question is: how does this integrate with Telnet and how does
    a Unix host have to be setup to use 8859?

We've been doing this for a while now, and not nearly enough people have
picked up on it.  Maybe this will help the process...

What we did was designed to interoperate with DEC VMS systems, since they
were the first widely-available Ascii-based hosts to support both useful
8-bit data streams and ISO-Latin.  PC/TCP's VT220 Telnet does the following:

a. Offers a "DEC-VT220" terminal type option value (per RFC 1091)

b. Accept VT220 escape sequences to switch between "VT220 7-bit" and "VT220
   8-bit" modes.  When entering 8-bit, we initiate negotiations for the Telnet
   "Binary" option (we also initiate it on user request).

c. If "Binary" is accepted, we switch to sending 8-bit CSI sequences instead
   of the 7-bit versions.  If "Binary" is refused, we continue to send the
   two character 7-bit CSI, since the single-character 8-bit version would
   probably get destroyed by a masking operation at the server.

d. Accept standard 7-bit or 8-bit CSI values regardless, including the
   sequences which display the VT220's "ISO Latin" characters.

It's complicated, there are pitfalls (some applications won't accept 7-bit
CSIs if they have sent the "switch to 8-bit VT220 mode" command, but we
can't send 8-bit because the "Binary" option was refused - solution is to
fix the host's Telnet server), but in general it works for those who can
be satisfied by ISO Latin.  It is interoperable to the extent that the
8859 alphabets can be (as long as the community uses the same subset of
it).  It is a general solution because it is based on the terminal type,
and hosts/applications understanding that VT220s can switch to 8-bit mode.
Unix doesn't understand 8-bit terminals in general, and normally runs the
VT220 in 7-bit mode, so it needs quite a bit of work on the host side to
get off the ground.

A possible first major improvement is to propagate 8-bit-awareness (most
conveniently in the guise of a VT220) to the Unix of your choice.  If an
application works with a direct-attached VT220 in 8-bit mode (set via the
'init-string' in termcap or whatever), it would only need a cooperative
Telnet server to work over the net - this requires careful consideration of
which of the available terminal modes would most usefully map to "Binary"
('raw' doesn't cut it).

A more far-reaching solution is to switch to 16-bit or 32-bit characters.
Of course, the theory is that this will make the whole world happy (I may
not be able to pronounce some of the characters I see displayed, but I can
forward the message intact to someone who does), but it isn't anywhere
near general availability yet.  If this is done as DBCS or ISO-646
successor terminals become available, it can just continue to use the
Telnet Terminal Type and Binary options, and will remain backwards
compatible.  I would discourage anyone setting out to write a "Telnet DBCS
(or whatever) data stream option" RFC, because it bypasses the Terminal
Type and loses backwards compatibility.

Getting anywhere with any of the available Unices will probably require
either source code or vendor cooperation.  If your Unix vendor is interested,
they can talk to/test against us, but so far I haven't been approached
by any willing to admit that there was anything to learn from VMS, or who
felt that improving support for a DEC terminal was in their interest...

James B. VanBokkelen		26 Princess St., Wakefield, MA  01880
FTP Software Inc.		voice: (617) 246-0900  fax: (617) 246-0901