[net.micro.amiga] What is a VT100, what is ANSI X3.64: answer

gnu@hoptoad.uucp (John Gilmore) (07/25/86)

In article <691@batcomputer.TN.CORNELL.EDU>, hsgj (Dan Green) writes:
>> ED:  Erase in Display.   ESC [ Ps J
>> EL:  Erase in Line.      ESC [ Ps K
>> The bug is that no matter what you specify for the "Ps" parameter in either
>> of these functions, the [Amiga] CONSOLE always performs function 0, which is
>> "erase from current position to end of line/screen".
> Public Apology:  I just rechecked my references, and noticed that these
> are *not* ANSI codes, but only VT100 codes.

This is incorrect.  I have a copy of the ANSI X3.64 standard here and
the parameter for ED and EL is defined.

The problem is:  for a terminal, or terminal emulator, to claim ANSI
X3.64 compatability does NOT mean that it implements everything in
the standard.  Rather, it means that IF it implements a certain function,
it uses the standard escape code to represent that function.  X3.64
contains all sorts of wierd escape codes for proportional spacing,
typesetters, multiple fonts and colors, etc; if you were required to
implement it all, nobody would use it.

If you don't implement anything but the default parameter for Erase Line,
you are free to ignore the parameter.  Your alternative is to ignore the
whole escape code and do nothing.  Either is acceptable under the standard.

Now, for a terminal or program to claim VT100 compatability, I would
expect that in all cases it does what a VT100 does.  However, having
consulted to a terminal company that built an enhanced VT100 clone
(Anderson Jacobson), I can inform you that finding all the nuances of
the VT100 is a tough thing to do.  Sometimes what you find is clearly
wrong -- you found a VT100 bug.  Mostly you just found a condition not
defined by the ANSI standard, like what happens when the cursor hits
the right margin on the bottom line when you are in insert mode, and
you and the VT100 just didn't happen to do the same thing.  If you are
a conscientious "VT100 compatible" then you fix it.  Mostly you aren't,
so you don't bother -- or you don't even notice til a customer complains.
Then the traditional response is "Well, it was Marketing that said
it was a VT100, we just built it to be X3.64 compatible.".

Moral:  If you're writing a program, don't depend on VT100-private
escape codes (clearly marked in the manual), and use as few oddball
codes (like clear from here to beginning of line) as possible; this
will make your program more portable, and it will run on "most" X3.64
terminals.  Better to use termcap/terminfo, then your code will run on
substantially *all* terminals.  (There is a PD terminfo, for you
non-unix types.  See mod.sources archives "pcurses".)

Morel #2:  If you are marketing a terminal emulator, don't claim it's 
a VT100 unless you have made damn sure that it is.  Unless
you've spent a hundred man hours at it, you aren't sure yet.
-- 
John Gilmore  {sun,ptsfa,lll-crg,ihnp4}!hoptoad!gnu   jgilmore@lll-crg.arpa
		     May the Source be with you!

campbell@maynard.UUCP (Larry Campbell) (07/28/86)

A company with which I am affiliated has a product called VT-Test which
is an automated VT100/VT200 validation and test suite.  This was developed
under contract to a Major Computer Manufacturer, and is now being sold
on its own.  I have used it to verify a VT100 emulator I wrote;  I found
it very useful indeed.  It's probably not cheap -- it's complete and
extensive and targeted towards terminal manufacturers who have a large
financial stake in being very compatible with the VT100.

For more information, contact:

	Teleprocessing, Inc.
	120 Fulton Street, 2nd floor
	Boston, MA 01754

	(617) 367-3210


-- 
 "There are two kinds of science:  physics, and stamp collecting."
Larry Campbell                             The Boston Software Works, Inc.
ARPA: campbell%maynard.uucp@harvard.ARPA   120 Fulton Street, Boston MA 02109
UUCP: {alliant,wjh12}!maynard!campbell     (617) 367-6846

jqj@gvax.cs.cornell.edu (J Q Johnson) (07/30/86)

I would be curious to know how well DEC products do at passing validation
suites such as Larry Campbell's VT-Test.  Note that DEC manufactures, or
has made, several "vt100-compatible" terminals, including several models
of vt100 hardware/firmware, vt100+avo, vt101, vt102, vt132, and [less
compatible] the vt2xx series.

My experience has been that even pure vt100s can differ substantially in
their behavior, especially in tests where timing is involved (like RMS,
I'd prefer not to use XON/XOFF).