[comp.sources.d] VT100's keeping up at high baud rates

stevesu@copper.UUCP (06/13/87)

> - Some (all?) PC/clones cannot keep up with speeds > 4800 baud in the VT100
> - terminal emulator
> 
> It sounds as if you're suggesting that any AT&T terminal will keep up at
> speeds greater than 4800 baud!  I have news for you:  not all of them do.

Heck, even the VT100 "emulation" inside a bona-fide _V_T_1_0_0 can't
keep up at speeds of more than 4800 baud.

                                           Steve Summit
                                           stevesu@copper.tek.com

jpn@teddy.UUCP (06/15/87)

>> - Some (all?) PC/clones cannot keep up with speeds > 4800 baud in the VT100
>> - terminal emulator
>> 
>Heck, even the VT100 "emulation" inside a bona-fide _V_T_1_0_0 can't
>keep up at speeds of more than 4800 baud.
>

I once did some benchmarking that you all might find interesting.  I
wrote a program which did nothing but fill a 80x24 screen with blanks
several times, to time the terminal throughput (admittedly, without
scrolling, since that was not part of our requirement).  The only
escape sequences I used were 'ESC [ H' to home the cursor after
reaching the bottom, and the inverse video character attribute on/off
(toggled after every pass, so you could watch the progress of the
benchmark on the screen).  I wrote an entire screen at a time to
minimize system overhead.  Flow control was enabled to avoid overruns.

Anyway, true VT100's had a throughput just over 9600 baud.  VT101's had
a throughput of only 4800!!!!  VT220's could go a sustained 19200 baud!

Sorry, I don't have the program anymore, but i would be interested to see
similar benchmarks on other terminal types.  Also, I would be
interested in seeing a "scrolling" version of this benchmark.  Any
takers?

sl@van-bc.UUCP (Stuart Lynne) (06/16/87)

In article <4101@teddy.UUCP> jpn@teddy.UUCP (John P. Nelson) writes:
>>> - Some (all?) PC/clones cannot keep up with speeds > 4800 baud in the VT100
>>> - terminal emulator
>>> 
>>Heck, even the VT100 "emulation" inside a bona-fide _V_T_1_0_0 can't
>>keep up at speeds of more than 4800 baud.
>>
>
>I once did some benchmarking that you all might find interesting.  I
>wrote a program which did nothing but fill a 80x24 screen with blanks
>several times, to time the terminal throughput (admittedly, without
>scrolling, since that was not part of our requirement).  The only

>Anyway, true VT100's had a throughput just over 9600 baud.  VT101's had
>a throughput of only 4800!!!!  VT220's could go a sustained 19200 baud!
>

The problem with VT100 is mainly with scrolling!

From page 79 of the VT100 User Guide (2nd Edition, Jan '79):

	"Fill characters are required to keep the VT100 synchonized with the
	host computer when the XON/XOFF control codes are not used...."

The following is gleaned from table C-1 on the same page:

			NEL, IND, LF, RI	NEL, IND, LF,RI
	Speed		Smooth Scolling		Jump Scrolling
	19200		384			60
	9600		192			30
	4800		96			15
	2400		48			11
	1200		24			7
	300		6			1

	NEL		Next Line
	RI		Reverse Index
	IND		Index


-- 
Stuart Lynne	ihnp4!alberta!ubc-vision!van-bc!sl     Vancouver,BC,604-937-7532

bandy@amdcad.AMD.COM (Andy Beals) (06/16/87)

A number of people have written how a number of terminals and terminal
emulator programs on micro-toys cannot keep up with a decent baud-rate.

In article <4101@teddy.UUCP> jpn@teddy.UUCP (John P. Nelson) writes:
>I once did some benchmarking that you all might find interesting.  I
>wrote a program which did nothing but fill a 80x24 screen with blanks
>several times, [...]  The only
>escape sequences I used were 'ESC [ H' to home the cursor after
>reaching the bottom, and the inverse video character attribute on/off
[every other pass]
>Flow control was enabled to avoid overruns.
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Thus invalidating the test.  I don't WANT the terminal to send flow-control.
In this day and age, where 64k x 8 of ram chips is cheap,  

TERMINALS SHOULD NOT HAVE TO SEND FLOW CONTROL BACK UP THE WIRE.

TERMINALS SHOULD HAVE LARGE BUFFERS SO THEY MAY BE OF REAL USE IN DAY-TO-DAY
OPERATIONS.  

The stupidest trend I've seen is the inclusion of microprocessors in
terminals.  Well, perhaps not, but the people who *program* the micros are
patently PINHEADS.  

The VT52 was a *wonderful* terminal.  Then came the VT100.  It could not
display characters as quickly.  Now we have the VT220, which is even slower
than the VT100!

Every time DEC (or someone wanting to be DEC-compatible) comes out with a new
terminal, it can not accept continuous data at as high of a rate as its
predecessor.  

>Anyway, true VT100's had a throughput just over 9600 baud.  VT101's had
>a throughput of only 4800!!!!  VT220's could go a sustained 19200 baud!

Your benchmark was invalid due to the fact that you enabled flow control.


If a terminal can't continuously display a couple of screens worth of text
while taking input without resorting to brain-damaged flow control then it is
no good.  


I would be interested in seeing a benchmark like the one that JPN did, but one
that records and reports "Terminal wimped out and tried to use flow control %d
times."  Perhaps one could be done using termcap and that way we all can test
the buggers.

-- 
55 is failing
70 is passing

Andrew Scott Beals, {lll-crg,decwrl,allegra}!amdcad!bandy +1 408 749 3683

jpn@teddy.UUCP (06/17/87)

>>Flow control was enabled to avoid overruns.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>Thus invalidating the test.  I don't WANT the terminal to send flow-control.

You missed the point.  The point of this test was to see how fast the
terminal could process data WITHOUT having to send Flow control
characters.  Obviously, if the terminal sends an XOFF, the program
could not possibly run as fast as the actual sending baud rate.  In
other words, the test indicated that VT220s could keep up WITHOUT flow
control at 19200 baud.  Of course, this is only true of the type of
data that was tested: namely, no scrolling.

wcs@ho95e.UUCP (06/17/87)

In article <1119@copper.TEK.COM> stevesu@copper.TEK.COM (Steve Summit) writes:
>> - Some (all?) PC/clones cannot keep up with speeds > 4800 baud in the VT100
>> - terminal emulator
>> 
>> It sounds as if you're suggesting that any AT&T terminal will keep up at
>> speeds greater than 4800 baud!  I have news for you:  not all of them do.

There are two real issues here - how fast can a terminal go with flow control
enabled, and how fast can it go with flow control disabled.  While it's nice to
have a terminal that can keep up with 19200 without flow control (i.e. 
continuous text display), that's approximately 19200 words per minute, and
neither you nor I nor Evelyn Wood's mother can read that fast over sustained
periods.  The reasons you'd want a terminal to go that fast without flow
control are either that you use a braindamaged computer which can't handle it,
or that you're using EMACS, and flow control ^S puts you into search mode.
(The solution there is to fix the software.)

As far as keeping up without losing characters, the PC's serial I/O capability
is pretty limited - you have to program well to make it go fast at all.
A couple years ago (when we got Datakit 19200 baud capability), I benchmarked
whatever terminals were aound to see whether to use 19200 or 9600.
	time cat /etc/termcap
followed by some arithmetic.  My 5420 (predecessor to the 5425, 610, etc.) did 
about 8300 baud at 9600 and 8600 at 19.2.  My 5620 (with the old firmware) got
about 6600 baud, and 2600 in layers.  I'm since using better layers software,
but I don't really know how fast it is.  We cranked an HP terminal to about
12000 baud.

One commentator here questioned the sanity of putting microprocessors in
terminals at all.  I'm all in favor of it - assuming you provide decent
programming hooks, you allow the user to build a decent terminal environment.
An 80186 and 128K RAM shouldn't cost you more than $50, but that lets you build
windows, downloadable fonts, etc., and allows the user to undo any mistakes in
the original firmware.
-- 
# Bill Stewart, AT&T Bell Labs 2G-202, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs

mkhaw@teknowledge-vaxc.UUCP (06/17/87)

In article <1490@ho95e.ATT.COM> wcs@ho95e.UUCP (46133-Bill.Stewart,2G218,x0705,) writes:
>have a terminal that can keep up with 19200 without flow control (i.e. 
>continuous text display), that's approximately 19200 words per minute, and
>neither you nor I nor Evelyn Wood's mother can read that fast over sustained
>periods.  The reasons you'd want a terminal to go that fast without flow

Actually, a lot of the time I don't want to read everything that's coming up
on the screen.  What I really care is that things like screen refresh ought
not to keep me waiting.  19200 bps is 1920 chars/sec, which is one 24x80 screen
in 1 second (admittedly worst case).  I consider that speed barely adequate.
Twice that speed would come close to being tolerable.

Mike Khaw
-- 
internet:  mkhaw@teknowledge-vaxc.arpa
usenet:	   {hplabs|sun|ucbvax|decwrl|sri-unix}!mkhaw%teknowledge-vaxc.arpa
USnail:	   Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303

rlk@.COM (Robert Krawitz) (06/17/87)

In article <4116@teddy.UUCP> jpn@teddy.UUCP (John P. Nelson) writes:
]>>Flow control was enabled to avoid overruns.
]> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
]>Thus invalidating the test.  I don't WANT the terminal to send flow-control.
]
]You missed the point.  The point of this test was to see how fast the
]terminal could process data WITHOUT having to send Flow control
]characters.  Obviously, if the terminal sends an XOFF, the program
]could not possibly run as fast as the actual sending baud rate.  In
]other words, the test indicated that VT220s could keep up WITHOUT flow
]control at 19200 baud.  Of course, this is only true of the type of
]data that was tested: namely, no scrolling.

The fact that a terminal can run at an AVERAGE speed of, say, 4800 bps
does not mean that if you run it at 4800 bps it will not emit any flow
control sequences.  For example, suppose that a newline takes 5 ms
(this is silly if scrolling is not being done, but that is irrelevant;
in practice, other things like line deletion, etc. can take a lot of
time).  Further suppose that when the terminal is processing a newline
it is unable to accept any more characters (its serial port is
completely unbuffered).  Then the terminal must send an XOFF whenever
it receives a newline, since in 5 ms two or three characters would be
received.  Of course, when processing non-newline characters, the
terminal can accept data at a much higher rate, thus amortizing the
cost of the newline over a lot more characters...get the picture?

It's amazing how easy it is to avoid externally-visible flow control
if you really try.  The answer is buffering.  Several years ago, I was
working on an application that received data from a 1200 bps line.
Only problem was, this data was sent to a character-mapped screen with
no hardware support for scrolling, and scrolling took something like
18 ms.  The solution?  Use another computer (these were cheap) as a
front end whose only task was to take data from the serial port,
buffer it, and send it to the parallel port on demand.  Now, with no
hardware handshaking or the like, it was very easy to guarantee that
the serial port would be polled at intervals no greater than .1 ms,
which gave us a factor of 100 safety.  The real limitation on the data
rate was the processing, printer, and disk speeds of the application
computer (this was a line monitor).

Now, this was 4 years ago, using Exidy Sorcerers (Z-80-based micros
with no interrupts for DTR or the like) that cost about $150 at the
time.  This was not a sophisticated DTR-interrupt port, or DMA access
to the host, or anything of the sort, yet I could run this system with
average speed equal to peak, and the host never came close to running
into trouble.  We had a callup function available on the host, which
when used would stop all data flowing into the front end for perhaps a
few minutes.  This never caused any problems.  When data transmission
was resumed, the data would come flying onto the screen almost as fast
as a simple loop could send data to the screen (a few thousand
characters per second).  The equivalent hardware today would cost
perhaps $30 or so in quantity (a Z-80 with a couple of interfaces and
64K-ish memory), and with interrupt driven ports, even higher speeds
could be accomplished, for limited periods of time (until the buffer
filled).

Now, suppose I were in the market for a serial terminal.  Suppose a
manufacturer told me that I could run his terminal at a line speed of
38,400 and NEVER have to worry about flow control.  Suppose that the
cost of this terminal is $100 more than the cost of a simple terminal
that can run at 38,400 bps, but required XON/XOFF flow control at 4800
bps or greater.  Would I choose this terminal and pay $100 more?  You
bet I would!

The point of this flame is that with today's hardware (interrupt
driven I/O, hardware scrolling, DMA and the like) it should be a
simple matter to design an inexpensive terminal that can accept data
at tremendous rates and never have to use flow control, at least up to
76,800 bps.  There is simply no excuse for for XON/XOFF flow control,
except for the user who wishes to stop scrolling so s/he can inspect
the data.

Robert^Z

jpn@teddy.UUCP (John P. Nelson) (06/17/87)

>                                                             While it's nice to
>have a terminal that can keep up with 19200 without flow control (i.e. 
>continuous text display), that's approximately 19200 words per minute, and
>neither you nor I nor Evelyn Wood's mother can read that fast over sustained
>periods.  The reasons you'd want a terminal to go that fast without flow
>control are either that you use a braindamaged computer which can't handle it,
>or that you're using EMACS, and flow control ^S puts you into search mode.

Actually, we had a different reason.  We were developing a software package
which had to update the entire screen in response to a user's keystroke.
Updating the screen at 1920 characters per second is MUCH snappier than
updating the screen at 480 characters per second.

Also, I found that is was much nicer to use any full screen editor at the
faster speed.  You were never waiting for the screen to be updated at a
full 19200 baud.  Of course the XOFF/XON issue is not the point:  The point
is "how fast can the terminal process display data".

 - john nelson

jdia@osiris.UUCP (06/17/87)

Our TeleVideo 9220's (vt200 compatible) keep up at 19200 with flow control 
disabled.  That's why we bought them.  The problem is that the $#%*ing
bridge box through which we connect to the network sends its own ^S/^Q's.

Oh, we tested the max speed using a direct connection to our vms machine which
really sends 19200 baud.

					Josh / Spidey!


-- 
DON'T PANIC!!!                                              \_\ /_/  Yes, it is
                                                             _[*]_   supposed to
A message from Spidey, and the Spidey Team.  ------>>>>     / / \ \  look like a
Reachable via UUCP: ...[seismo,mimsy]!jhu!osiris!jdia                spider!

walton@tybalt.caltech.edu (Steve Walton) (06/17/87)

In article <5490@think.UUCP> rlk@THINK.COM writes:
>It's amazing how easy it is to avoid externally-visible flow control
>if you really try.  The answer is buffering.

(I hate flow control flames.) As a naive user, what happens to the
contents of your enormous buffer when I hit an interrupt character
(^C)?  Won't the contents of your buffer (which could be a few hundred
characters) get dumped to my screen?  And how do I pause terminal
output?  If your buffer recognizes ^S, what happens if it fills up
before I hit ^Q?  (At 38Kbaud, 1 MB of buffer would fill in a bit over
4 minutes).  And if your buffer recognizes ^S, then how do I use it as
an emacs command? Finally, if we just dump data fast into a buffer
which then hands it to a display (or a protocol-based file transfer
program) which can't keep up, eventually the buffer will fill up
anyway.  What then?
	Look, can we cool it?  There are circumstances where you just
*have to have* in-band flow control, and like it or not, ^S/^Q are the
universal standard for it.  The *only* place this matters is Emacs
flavors which use these as commands, and said Emacsen are sufficiently
customizable to allow them to use something else if you need the flow
control.
	I've directed followups to comp.terminals only.

    Steve Walton, guest as walton@tybalt.caltech.edu
    AMETEK Computer Research Division, ametek!walton@csvax.caltech.edu
"Long signatures are definitely frowned upon"--USENET posting rules

jerry@oliveb.UUCP (06/17/87)

In article <5490@think.UUCP> rlk@THINK.COM writes:
>It's amazing how easy it is to avoid externally-visible flow control
>if you really try.  The answer is buffering.  Several years ago, I was

Nothing less than an infinite amount of buffering will guarante that
flow control is never needed.  (Assuming that the terminal can't process
the characters at full speed.)

For any amount of buffering you can devise a sequence of characters, say
insert line at the top of the screen, and repeat them continuously.
This will eventually fill up the buffer and either drop characters or
require flow control.

Granted that most applications do other things besides scrolling the
screen and this will usually allow the terminal to catch up.  Also they
seldom send continuous data without any pauses for input.  But it
sometimes does happen.

Besides, large input buffers present their own problems.  Have you ever
tried to pause a display that has lots of buffering?  If you signal the
host to stop sending then what you want to see can scroll off the screen
because of the local buffer.  Most such terminals resort to a local
pause instead of depending on the host to pause output.  But, unless you
also signal the host, your buffer will fill and overflow.  So, you still
have to have some kind of flow control.

jimc@iscuva.UUCP (06/18/87)

In article <17160@amdcad.AMD.COM> bandy@amdcad.UUCP (Andy Beals) writes:
>TERMINALS SHOULD NOT HAVE TO SEND FLOW CONTROL BACK UP THE WIRE.
>
>TERMINALS SHOULD HAVE LARGE BUFFERS SO THEY MAY BE OF REAL USE IN DAY-TO-DAY
>OPERATIONS.  

Yassir!  I've just finished writing a H19-like terminal emulator for one of
our products that keeps up fully at 9600 baud (doesn't sound like much?  well,
it's a graphics-only product with 38K of RAM for the video).  It's written in
C with choice bits in assembly (68000).  I ended up using a 16K input buffer
just 'cause it was there, tho' it doesn't need it that big.  What made it all
work is that I separated the input processing code from the display code, and
the input processing code notices when scrolling is getting behind, and tells
the display code to start scrolling bigger chunks when necessary.  I got lazy
and only implemented the lookahead for linefeeds, though it would have been
straightforward to extend this... Come on, terminal guys, it wasn't _that_
hard to do!

+----------------+
! II      CCCCCC !  Jim Cathey
! II  SSSSCC     !  ISC Systems Corp.
! II      CC     !  Spokane, WA
! IISSSS  CC     !  UUCP: ihnp4!tektronix!reed!iscuva!jimc
! II      CCCCCC !  (509)927-5757
+----------------+
			"With flow control like this, who is needing enemas?"

elg@killer.UUCP (Eric Green) (06/20/87)

in article <5490@think.UUCP>, rlk@.COM (Robert Krawitz) says:
> Xref: killer comp.sources.d:841 comp.terminals:317 comp.emacs:1111
> It's amazing how easy it is to avoid externally-visible flow control
> if you really try.  The answer is buffering.  Several years ago, I was
> working on an application that received data from a 1200 bps line.
> Only problem was, this data was sent to a character-mapped screen with
> no hardware support for scrolling, and scrolling took something like
> 18 ms.  The solution?  Use another computer (these were cheap) as a
> front end whose only task was to take data from the serial port,
> buffer it, and send it to the parallel port on demand.  

AMEN!

A friend of mine wrote a TVI910 emulator for the COMMODORE 64! He used an 8k
bit-map hi res screen to emulate 80 columns (via a 4-bit-wide character set)
on a machine with only a 40 column screen. Now, it takes about half a second
for a lowly 6502 to scroll an 8k area of memory. Everything else is just as
slow, too. So you'd expect some real bad flow control when going at 1200 baud.
Yet I never encountered any problems with Emacs, after he wrote in one simple
addition to the program: AN INPUT BUFFER. The RS232 port on a C-64 is already
interrupt driven, he just dedicated 4K of RAM to a buffer. So Emacs could
re-draw the entire screen and more, and I wouldn't lose a single character. 

Of course, listing long directories or "cat"'ing things barfled things up, but
the "more" command solved that problem.... "more" could spit its stuff out at
full speed, and it'd be just filling up the buffer....

Of course, this DID make flow control and interrupts a bit... problematic. I'd
hit a control-C, and about 10 seconds later, after the buffer emptied, would I
see the  "^C  %".

   Eric Green
     {ihnp4,cbosgd}!killer!elg   elg@usl.CSNET

PS: Last I heard, he'd sold his latest Amiga program to PP&S for a hefty sum,
I guess the cream really DOES rise to the top!

bzs@bu-cs.BU.EDU (Barry Shein) (06/23/87)

Posting-Front-End: GNU Emacs 18.41.4 of Mon Mar 23 1987 on bu-cs (berkeley-unix)



From Bill Stewart
>There are two real issues here - how fast can a terminal go with flow control
>enabled, and how fast can it go with flow control disabled.  While it's nice to
>have a terminal that can keep up with 19200 without flow control (i.e. 
>continuous text display), that's approximately 19200 words per minute, and
>neither you nor I nor Evelyn Wood's mother can read that fast over sustained
>periods.  The reasons you'd want a terminal to go that fast without flow
>control are either that you use a braindamaged computer which can't handle it,
>or that you're using EMACS, and flow control ^S puts you into search mode.
>(The solution there is to fix the software.)

I doubt you could read a terminal running at 1200b for a sustained
period of time, yet I'd bet you prefer a higher speed. Why?

Because there's more going on, many screenfuls contain little
information but need to put up the entire screen because it's too hard
to predict what you need in advance and/or the rest of the image
creates a context.  Two good examples of this are Emacs' incremental
search where often a squinty-eyed view of the screen tells you you
need another screenful (eg. looking for a function definition, you
don't need to even focus your eyes to see you haven't found it yet in
most languages) and games (ok, maybe not the most serious application,
but I think it's an example of something.)

Also, given the higher speed updates more visual information can be
built into applications rather than trying to minimize screen update
(such as drawing boxes around relevant items, using screen attributes
like bold and blinking etc.) Any of this gets painful at even the
faster screen speeds real quick.

Here's to human factors engineering. It's subtle.

	-Barry Shein, Boston University

ken@argus.UUCP (Kenneth Ng) (06/30/87)

In article <8959@bu-cs.BU.EDU>, bzs@bu-cs.BU.EDU (Barry Shein) writes:
[edited discussion on 'need' for flow control in terminals and how fast
 a human can read]
> I doubt you could read a terminal running at 1200b for a sustained
> period of time, yet I'd bet you prefer a higher speed. Why?
> 
>   Two good examples of this are Emacs' incremental
> search where often a squinty-eyed view of the screen tells you you
> need another screenful (eg. looking for a function definition, you
> don't need to even focus your eyes to see you haven't found it yet in
> most languages) and games (ok, maybe not the most serious application,
> but I think it's an example of something.)
> 	-Barry Shein, Boston University

Here's an actual example: a few years ago I worked a part time job
in collge typesetting for a print shop.  Sometimes I'd would have to
look over someone else's work on the computer and correct spelling.
When I read the file off of disk, the file displayed on the screen at
about 4800-9600 baud.  I was able to catch most of the spelling errors
while it was displayed at that rate.  My employer thought that I was joking
around when I did this, but when I went exactly to the mistakes and
corrected them, she thought I had pretty good reading.

My personal view on the terminal update speed, computer speed, compiler
speed, etc. is simple: *FASTER* *BETTER* *STRONGER*!  We have the
techology (to quote the Six Million Dollar Man).

... This signature was put in in a way to bypass the 
... bogus artificial line limit on the .signature file.
... Also, by its length it adds fodder to help avoid having
... my followups being bounced due to the restriction on
... followup articles.

Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey  07102
uucp !ihnp4!allegra!bellcore!argus!ken *** NOT ken@bellcore.uucp ***
bitnet(prefered) ken@orion.bitnet