[net.unix-wizards] Pagination in TTY driver

rfm@frog.UUCP (Bob Mabee) (08/22/85)

{}
(referring to novice and expert users of ls)
> From *both* viewpoints, it is simpler to have pagination available in the
> tty driver.  This means that the implementors don't have to kludge it into
> every program, and the users need neither lightning reflexes nor high
> sophistication.	 Try it, you'll like it.
> -- 
> 				Henry Spencer @ U of Toronto Zoology

This sounds like a fruitful topic of discussion.  I would like to see this
become a "standard extension" like file locking.

Please tell us more about your user interface.  Do you require a Y every
23 lines of output?  Only after 23 lines without intervening input (so
you never notice pagination while running less verbose commands?

What are the drawbacks?  Do "portable" UNIX programs have to be modified
to disable pagination for editing, communications, etc?  Does the TTY
driver have to decode cursor motion sequences (as Multics did)?

--
				Bob Mabee @ Charles River Data Systems
				decvax!frog!rfm

hahn@AMES-NAS.ARPA (Jonathan Hahn) (08/23/85)

I cringed when I came across the first reference to tty
pagination at the driver level (actually, I think the first
reference was intended to be sarcastic), but then I recalled an
implementation I encountered that was somewhat respectable:

When pagination mode is turned on, the tty driver will
suspend output (a la canonical ^S) after it sends 23
<CR><LF>s to the terminal.  As long as pagination mode is
no, pagination repeats after output is resumed.

	^S	turns pagination mode on and suspends output
	^Q	turns pagination mode off and resumes output

When pagination is on, <BREAK> requests a new page/resumes output
(these days this might upset some terminal servers).  I don't
recall specifically, but I suspect that terminal input would
reset top-of-page so interactive terminal dialog wouldn't be
bothered with pagination.

This was implemented at Ampex Corp. on V7 and is on an old Usenix
distribution tape (<=1981, meeting location = Boulder, CO).

-jonathan hahn
hahn@ames-nas.arpa
...!ucbvax!atd!avsdT:jon	(I don't think this works.  Aside: can the ':'
				be quoted so mailers don't change it to a '.'?)

jack@boring.UUCP (08/24/85)

I implemented a kernel paginator in V7, which was about half an hour
work. It's invoked with the cr3 delay, and works only if the terminal
is in normal (cooked) mode.

It halts after 23 lines of output with no intervening input, and
is restarted by a <CR>. Also, you can type ^Q, which will turn the
paginator off, until the next time input is requested.

If someone wants the code, drop me a line at jack@htsa.UUCP.
-- 
	Jack Jansen, jack@mcvax.UUCP
	The shell is my oyster.

dan@rna.UUCP (Dan Ts'o) (08/25/85)

In article <280@frog.UUCP> rfm@frog.UUCP (Bob Mabee) writes:
>{}
>(referring to novice and expert users of ls)
>> From *both* viewpoints, it is simpler to have pagination available in the
>> tty driver.  This means that the implementors don't have to kludge it into
>> every program, and the users need neither lightning reflexes nor high
>> sophistication.	 Try it, you'll like it.
>> -- 
>> 				Henry Spencer @ U of Toronto Zoology
>
>This sounds like a fruitful topic of discussion.  I would like to see this
>become a "standard extension" like file locking.
>
>Please tell us more about your user interface.  Do you require a Y every
>23 lines of output?  Only after 23 lines without intervening input (so
>you never notice pagination while running less verbose commands?

	Also:

		What about terminals that don't have 24 lines ? Some have
16 and some have 66 ? Do you have yet another ioctl() ?

		What happen when you print lines that wrap around the screen ?
Does the kernel know how to count character spacing, know the screen width,
whether the terminal has AM and XN and account for it when making page breaks ?

		The better pagers allow reverse and forward viewing. I find
this capability indispensible. Do you plan to add a buffer in the kernel to
allow reviewing of previous lines ?

		Does your implementation handle well situations where the
application is sending more than 24 lines but since it is using cursor
addressing, it is self consistent ? Does your kernel recognize cursor motion
sequences or do you have to turn off paging every time you run such an
application ? (e.g. graphics, some screen editors) Maybe you expect such
applications to run in RAW or CBREAK and don't do paging in those modes, or
maybe you expect such applications to shut off paging themselves.

		Yes, I know paging works fine for many situations.

					Cheers,
					Dan Ts'o
					Dept. Neurobiology
					Rockefeller Univ.
					1230 York Ave.
					NY, NY 10021
					212-570-7671
					...cmcl2!rna!dan
					rna!dan@cmcl2.arpa

henry@utzoo.UUCP (Henry Spencer) (08/27/85)

This article is a collection of replies to several comments on in-kernel
tty paging.

> You mean like on TOPS-20? Where it seems the tty drivers use TERMCAP or an
> equivalent (if you type more than 1 line & hit ^U it cursors to the beginning
> of the input line (maybe several terminal lines above) and sends a CL sequence!

Interesting, but it has nothing to do with output pagination.

> Please tell us more about your user interface.  Do you require a Y every
> 23 lines of output?  Only after 23 lines without intervening input (so
> you never notice pagination while running less verbose commands?

Glossing over a few fine points, any time 22 lines of output are seen
without any intervening input, the tty driver stops and waits for a RETURN.
(Actually any input character will do, but RETURN arriving while the tty
is in a paging wait cancels the wait and disappears, while anything else
cancels the wait and sticks around.)  No, the "22" is not burned into the
kernel, it is set by an ioctl, generally to a number ultimately derived
from termcap.

> What are the drawbacks?

The only significant thing we've found is that it's hard to get line-wrap
handling 100% right.

> Do "portable" UNIX programs have to be modified
> to disable pagination for editing, communications, etc?

No, switching to CBREAK or RAW mode turns it off implicitly.  The only
things we have modified (except our kernel) are stty to know about the
paging ioctl, getty's terminal initialization to set the defaults right
(from termcap, by the way), and our local pager program "p" to exploit
kernel paging if it's on.  Nothing else.

> Does the TTY
> driver have to decode cursor motion sequences (as Multics did)?

No.

> [a similar scheme...]
> 	^S	turns pagination mode on and suspends output
> 	^Q	turns pagination mode off and resumes output

Wrong choice of control characters.  Nowadays one must assume that ^S
and ^Q are strictly, completely, and entirely reserved for flow control
between the terminal and the host.  We had a bug in this in our early
versions, in fact.

One thing which we do find valuable is a control character (settable via
the paging ioctls, default ^T) which turns paging off until the next
input character.  This lets you disable paging temporarily for something
like verbose program output that you don't want to see in detail.  The
ability to do this conveniently is important.

> The
> advantage of not having pagination in the kernel is the ability to have
> tailored paginators.

Agreed.  But for most people, a poor pager that's built in generally beats
a wonderful pager that always has to be invoked explicitly.  I dislike
building things like this into the kernel; there really ought to be some
way to run all one's terminal i/o through a central agent without having
to build the agent into the kernel.  Doing that efficiently isn't simple.
We decided that an ugly implementation now beat a clean one five years
down the road.  We were right.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

henry@utzoo.UUCP (Henry Spencer) (08/27/85)

> 		What about terminals that don't have 24 lines ? Some have
> 16 and some have 66 ? Do you have yet another ioctl() ?

The size is of course set by ioctl, since no way would we consider
imbedding something like that into the kernel.

> 		What happen when you print lines that wrap around the screen ?
> Does the kernel know how to count character spacing, know the screen width,
> whether the terminal has AM and XN and account for it when making page breaks ?

This is somewhat of a headache.  The kernel is *already* counting character
spacing, please note, so that's not an issue.  It gets it right for the
simple cases, and most non-simple cases want to use CBREAK mode anyway.
The ioctl includes an indication of screen width.  The AM/XN mess is not
yet fully accounted for, although there's nothing impossible about doing so.
(Before people start moaning about how unUnixish it is to put such things
into the kernel, check out the definition of newline delay type 1.  Such
details of terminal handling have a long history of being in the kernel!)

> 		The better pagers allow reverse and forward viewing. I find
> this capability indispensible. Do you plan to add a buffer in the kernel to
> allow reviewing of previous lines ?

This, we have not done; it would be a major added complication.  We find
the in-kernel pager very useful without it.  We agree that the in-kernel
pager is not the answer to all mankind's problems, or even all Unix's
pagination problems.  We are not convinced that "more" and its kin do in
fact represent such an answer, either!

> 		Does your implementation handle well situations where the
> application is sending more than 24 lines but since it is using cursor
> addressing, it is self consistent ? Does your kernel recognize cursor motion
> sequences or do you have to turn off paging every time you run such an
> application ? (e.g. graphics, some screen editors) Maybe you expect such
> applications to run in RAW or CBREAK and don't do paging in those modes, or
> maybe you expect such applications to shut off paging themselves.

Our experience has been that such applications invariably run in CBREAK
or RAW; paging is applicable only to COOKED mode.  This was a slightly
ad-hoc decision that has worked very well in practice.	We are opposed on
principle to having an unbounded number of programs know about paging.

>		Yes, I know paging works fine for many situations.

That it does.  We do still have explicit pager programs, but they get far
less use nowadays.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

tim@cithep.UucP (Tim Smith ) (09/01/85)

>> 		The better pagers allow reverse and forward viewing. I find
>> this capability indispensible. Do you plan to add a buffer in the kernel to
>> allow reviewing of previous lines ?
>
> This, we have not done; it would be a major added complication.  We find
> the in-kernel pager very useful without it.  We agree that the in-kernel
> pager is not the answer to all mankind's problems, or even all Unix's
> pagination problems.  We are not convinced that "more" and its kin do in
> fact represent such an answer, either!

Time for a third point of view here.  Pagination belongs in the terminal!
Note that the terminal already knows how many lines long the screen is.  It
also knows what happens at the last column.  It alread knows about escape
sequences recognized by itself, so it can deal with cursor addressing 
programs. 

And with what RAM prices have been doing, it is not unreasonable for a
terminal to have lots of memory, so you can back up.  Besides, in the
future, I think most "terminals" will be personal computers running
terminal emulator programs. 

While I'm at it, the terminal is also where history belongs...
-- 
unlk	a6
rts
					Tim Smith
				ihnp4!{wlbr!callan,cithep}!tim

andrew@stc.UUCP (Andrew Macpherson) (09/04/85)

>> From *both* viewpoints, it is simpler to have pagination available in the
>> tty driver.  ...... Try it, you'll like it.
>> -- 
>> 				Henry Spencer @ U of Toronto Zoology
>
>What are the drawbacks?  Do "portable" UNIX programs have to be modified
>to disable pagination for editing, communications, etc?
>--
>				Bob Mabee @ Charles River Data Systems

We have such a tty driver on an 11/34 running Xenix 2.?.  In 'normal' use
with keyboard input, one does not see the paginator, only when a program 
is producing reams of output.  It was a pain in the neck to find a process
blocking on tty output when one didn't want the paginator, and supreme 
relief when one realised that one had forgotten >more|less<.

The problem is, that version of Xenix does not have Berkley job control.
The times I've wanted to..
^Z
Stopped.
% stty length={0|24}
% fg
to turn off or on the pager for a command started with the terminal in the
wrong mode.

Conclusion, on balance quite nice, ( yes, I damn it with faint praise ).  I
might consider it excellent if I had had job control with it, and the above
sequence worked.
-- 
Regards,
	Andrew Macpherson.	<andrew@stc.UUCP>
	{creed, datlog, idec, iclbra, iclkid, root44, stl, ukc}!stc!andrew

gwyn@brl-tgr.ARPA (Doug Gwyn <gwyn>) (09/05/85)

> Pagination belongs in the terminal!

> While I'm at it, the terminal is also where history belongs...

Hear, hear!  Please enter my order for one stream I/O system with
downloadable DMD terminal driver.  Or isn't it available yet?

zben@umd5.UUCP (09/06/85)

In article <124@cithep.UucP> tim@cithep.UucP (Tim Smith ) writes:
>Time for a third point of view here.  Pagination belongs in the terminal!
>Note that the terminal already knows how many lines long the screen is.  It
>also knows what happens at the last column.  It alread knows about escape
>sequences recognized by itself, so it can deal with cursor addressing 
>programs. 
>
>And with what RAM prices have been doing, it is not unreasonable for a
>terminal to have lots of memory, so you can back up.  Besides, in the
>future, I think most "terminals" will be personal computers running
>terminal emulator programs. 
>
>While I'm at it, the terminal is also where history belongs...

I agree with the thrust of the arguments.  The latest complaint of my boss
is that his Zenith PC with Ethernet interface can dump stuff to the screen
faster than it can be read (by several orders of magnitude, probably).

After having talked him OUT of modifying every program in creation to meter
its output, and having convinced him that the place to solve the problem is
in the micro, your argument looks very good.  Most clones have oodles of
memory to spare when running terminal simulators.  Why not just accept the
hundred thousand bytes into memory directly, then either scroll them onto
the screen with keyboard control, or let the user page the screen up and
down in the circular buffer with the last 250,000 bytes received.

But, consider the difficulties of doing paging and history in the terminal
if a window environment is used.  You probably want to have N history streams,
at least one for each window running the shell, probably one for each window
in general.  The paging would also have to know which window is filling up,
and how big it is.  While one COULD extract this information from the
cursor addressing sequences on the fly, the principle-of-least-messiness
requires us to at least look at other solutions.

So, do all the window stuff in the terminal!  Tag output on the host-micro
link with which window it is destined for, and let software in the micro do
the actual screen management.  Since it knows which window the output is
for, it can do the MORE? stuff easily enough.  It could probably know enough
about where you are on the screen to determine which window you are typing
into, and know which history stack to pull from, push to, and use the same
information to tag incoming lines so the software on the host knows which of
the processes to which to deliver the input.

I dunno, just random thoughts.  I mean, I use a Volker Craig in ADM3 mode.
This window stuff is still hypothetical here...

-- 
Ben Cranston  ...{seismo!umcp-cs,ihnp4!rlgvax}!cvl!umd5!zben  zben@umd2.ARPA

henry@utzoo.UUCP (Henry Spencer) (09/06/85)

>    At caltech we have a network that lives between most computers and
>    most terminals, now unfortunately the network uses ^S/^Q (of course)
>    and any ^S, ^Q you type on your terminal will go to the network
>    not to the computer.  So putting pagination in the tty driver
>    really confuses novice users, the documentation says that pressing
>    ^Q gets things started again, but it doesn't...

As has already been pointed out, using ^Q to restart paging is a terrible
mistake because it is increasingly necessary to reserve ^S^Q exclusively
for low-level flow control.  Don't confuse this implementation mistake with
a general problem with the concept.

> Time for a third point of view here.  Pagination belongs in the terminal!
> ...[the terminal knows best what is happening on its screen]...
> While I'm at it, the terminal is also where history belongs...

This is 100% correct.  But if one does not have such terminals, that is not
cause to give up in despair.

> We have such a tty driver on an 11/34 running Xenix 2.?.  In 'normal' use
> with keyboard input, one does not see the paginator, only when a program 
> is producing reams of output.  It was a pain in the neck to find a process
> blocking on tty output when one didn't want the paginator...
> The problem is, that version of Xenix does not have Berkley job control.
> The times I've wanted to.. [use job control to turn paging off/on for a
> particular already-started process]

I'm not sure whether I mentioned this earlier:  it is *important* to have
a clean and simple way of turning paging off temporarily, to solve this
exact problem.  Having a single special character that turns paging off
until the next input character works wonderfully well -- you can turn the
paging off for a ream of output, and it turns itself back on automatically.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry

gww@aphasia.UUCP (George Williams) (09/11/85)

> >    At caltech we have a network that lives between most computers and
> >    most terminals, now unfortunately the network uses ^S/^Q (of course)
> >    and any ^S, ^Q you type on your terminal will go to the network
> >    not to the computer.  So putting pagination in the tty driver
> >    really confuses novice users, the documentation says that pressing
> >    ^Q gets things started again, but it doesn't...
>
> As has already been pointed out, using ^Q to restart paging is a terrible
> mistake because it is increasingly necessary to reserve ^S^Q exclusively
> for low-level flow control.  Don't confuse this implementation mistake with
> a general problem with the concept.

Actually I rather like pagenators, I was just objecting to the use of ^Q
to start them up again.  I also object to people's suggestion that a space
be used and then vanish; I have a strong believe that non-control characters
should hang around (control characters are designed to control things,
other characters are designed as text).  Not even the bsd terminal driver
uses all the control chars, there are still plenty left.

Of course the best thing to do is to have the magic character that restarts
output to be set by an ioctl, but its default should be neither ^Q nor space.

I also don't understand why some people have their paginators turned off by
input; I like typeahead but I don't always want it to turn off my output
control.  It seems to me that having yet another magic character to turn off
pagenation would be preferable.

Since I seem to be on the subject of magic characters, I have always liked
dec's ^T that generates a line with some status info on it. I have seen
this implemented on one unix system (cithep) rather well; where ^T (setable
with an ioctl of course) generated a signal that was normally ignored, but
if a program wanted to, it could be used.  This character did not flush
either the input or output buffer.

peter@graffiti.UUCP (Peter da Silva) (09/16/85)

> While I'm at it, the terminal is also where history belongs...

And savehist as well? Naw... history does all sorts of things you can't do
in a terminal program... but you did just give me a great idea for mine...

rartym@cybavax.UUCP (Richard Artym) (09/16/85)

[Munch.]

Goodness!  All this time you poor souls have been using tty handlers
without built-in pagination?  We've had a paginating handler on our
PDP-11 since V6 days, and the current V7 also has it.  Alas, our
Codata's Uniplus V7 doesn't, nor of course does our VAX's BSD4.2,
and as a result I find it quite exasperating to use these supposedly
"better" machines rather than the old PDP.

I strongly support henry@utzoo's words on this topic, and would add that
paging utilities like 'more' should really be viewed as a terrible
kludge. In the Unix way of working, nearly all the output arriving
at the vdu is useful information meant for reading, in contrast to
the old-fashioned methods which produced huge reams of output with
very little content meant for human consumption.  (If you don't
recognize this, you haven't discovered pipes and filters!)  To have
correctly generated the desired output only to find that it scrolls
off the page because the eye can't keep up with the computer is
ridiculous in my opinion; since this is the normal state of affairs,
the solution should be provided by default.  Where and how it's
implemented is a separate issue, although most will agree that for
efficiency and simplicity the best place to put the code is in the
tty handler.  (In our handler, ^P allows you to toggle the pagination
on and off on the fly, it's automatically reset on receiving a CR or NL
as input, and it can be turned off altogether with "stty page 0".)

I'm perplexed as to why AT&T and Berkeley never picked up on this approach,
which was widely used here in Europe (EUUG V7 I think).  A paginating
tty handler improves overall ease of use dramatically, without any
exaggeration.

-- 
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
> Rich Artym, Elec.Eng., Univ.College of Swansea, Swansea SA2 8PP, Wales, UK. <
>  UUCP : {UK}!ukc!reading!cybavax!rartym ; JANET : rartym@swxa/000060601800  <
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tim@cithep.UucP (Tim Smith ) (09/21/85)

Actually, UNIX has a way of preventing text from scrolling by so fast that
you can't read it ( or reach ^S before it goes by ).  There is a scroll rate
parameter setable vis stty.  I am sure most UNIXs have it.  Just do a stty
followed by a number indicating the desired scroll rate.  Higher numbers are
faster ( note: not all numbers are available - check your manual ).  For
example, a "stty 300" will set the scroll rate to 1/32 of what most people
have it set at.  If you are real slow, try "stty 75".

Oh, you may have to adjust some switches on your terminal.  Good luck!
-- 
					Tim Smith
					ihnp4!cithep!tim

snoopy@ecrcvax.UUCP (Sebastian Schmitz) (09/23/85)

Summary:
Expires:
References: <2067@ucf-cs.UUCP> <363@cuae2.UUCP> <2423@sun.uucp> <5937@utzoo.UUCP> <cybavax.147>
Sender:
Reply-To: snoopy@ecrcvax.UUCP (Sebastian Schmitz)
Followup-To: net.unix-wizards
Distribution:
Organization: European Computer-Industry Research Centre, Munchen, W. Germany
Keywords:



I hate to tell you all this, but the lads at Queen Mary College
Computer Science have had a paginating tty driver for YEARS
(and they also do same with 4.2). It works very nicely (no more
'more's and 'page's...)

If you ask me nicely I will forward you their net address so
that you can ask them for it. I don't have it handy at the
moment.
-- 
  Love,
  Sebastian (Snoopy)

"You haven't done it, till you've done it with pointers"

\!mcvax\!unido\!ecrcvax\!snoopy /* N.B. valid csh address */

whb@vax135.UUCP (Wilson H. Bent) (09/25/85)

Ah, but if the terminal does the history, etc, does it store it when
powered down?  I use a tty5620dmd/blit (the longest-named terminal in
the world!), which is very smart and has very smart software already
written, but no memory other than baud rate, etc.  There are several
examples of history use which extend from one day to the next - I guess
any complicated ones could be made into shell scripts, but that's not
the point.  UN*X remembers, so my terminal doesn't have to.  And that's
why I can also use an ADM-3A.

Wilson H. Bent, Jr.		... ihnp4!vax135!hoh-2!whb
AT&T - Bell Laboratories	(201) 949-1277
Disclaimer: My company has not authorized me to issue a disclaimer.

putnam@steinmetz.UUCP (jefu) (09/26/85)

In article <147@cybavax.UUCP> rartym@cybavax.UUCP (Richard Artym) writes:
>
>Goodness!  All this time you poor souls have been using tty handlers
>without built-in pagination? ...
>                             ...this is the normal state of affairs,
>the solution should be provided by default.  Where and how it's
>implemented is a separate issue, although most will agree that for
>efficiency and simplicity the best place to put the code is in the
>tty handler...

Most, perhaps.  Historically, perhaps.  

Pagination should be implemented in the terminal.  Silicon is
cheap enough these days to put a lot of smarts in even an inexpensive
terminal.   But even there it should be programmable by the user.  

Lacking that, i think that the best place to but pagination and such is
between the process and the terminal.  It would be nice to be able to 
specify (somehow) a filter that all output went through on its way
to /dev/tt???.  Then i could make my own pagination (or lack thereof)
sit in there and do what i want it to.  

It does not (!) belong in the low level driver.  I think that there
may well be too much going on there now.  If you have a choice between
putting the code in the driver and leaving it out for a user level program,
opt for the latter.  That way it can be more easily changed by someone
who wants something different.  

My philosophy boils down to :
    "When in doubt, leave it out -- of the kernel at least"
-- 
               O                      -- jefu
       tell me all about              -- UUCP: edison!steinmetz!putnam
Anna Livia! I want to hear all....    -- ARPA: putnam@kbsvax.decnet@GE-CRD

seth@megad.UUCP (Seth H Zirin) (10/02/85)

> Actually, UNIX has a way of preventing text from scrolling by so fast that
> you can't read it ( or reach ^S before it goes by ).  There is a scroll rate
> parameter setable vis stty.  I am sure most UNIXs have it.  Just do a stty
> followed by a number indicating the desired scroll rate.  Higher numbers are
> faster ( note: not all numbers are available - check your manual ).  For
> example, a "stty 300" will set the scroll rate to 1/32 of what most people
> have it set at.  If you are real slow, try "stty 75".
> Oh, you may have to adjust some switches on your terminal.  Good luck!
> 					ihnp4!cithep!tim

Doing a "stty 300" or a "stty 75" does more than set the scroll rate, it
sets the Baud rate!  I suggest using a command like "more" or "pg" to
paginate.
-- 
-------------------------------------------------------------------------------
Name:	Seth H Zirin
UUCP:	{decvax, ihnp4}!philabs!sbcs!megad!seth

Keeper of the News for megad

trb@masscomp.UUCP (Andy Tannenbaum) (10/08/85)

In article tim@cithep and seth@megad write:
> > Actually, UNIX has a way of preventing text from scrolling by so fast that
> > you can't read it ( or reach ^S before it goes by ).  There is a scroll rate
> > parameter setable vis stty.  I am sure most UNIXs have it.  Just do a stty
> > followed by a number indicating the desired scroll rate.  Higher numbers are
> > faster ( note: not all numbers are available - check your manual ).  For
> > example, a "stty 300" will set the scroll rate to 1/32 of what most people
> > have it set at.  If you are real slow, try "stty 75".
> > Oh, you may have to adjust some switches on your terminal.  Good luck!
> > 					ihnp4!cithep!tim
> 
> Doing a "stty 300" or a "stty 75" does more than set the scroll rate, it
> sets the Baud rate!  I suggest using a command like "more" or "pg" to
> paginate.
> 	Seth H Zirin

cithep!tim is barking up a tree that's next to the right one.
UNIX has, since the dawn of time, supported carriage return and
newline delays in the terminal driver.  If you want to control scroll
rates, you can use these.  These delay modes were originally in there
because in old terminals there was actually a *carriage* to return, and
it took time to return, and if you didn't give it time to return, your
output would be spewed on the *paper* wherever the carriage happened to
be flying on its flight home.  This was in the days before XON/XOFF,
RTS/CTS, 300 baud, and CRT's were features built into the tools of every
hacker's trade.

Anyway, if you want slower scroll rates, this is probably a better
idea than changing the baud rate.  A control key (or two!) could be made
to switch the delay mode on and off and delays times could be hacked
to taste.

FYI, Masscomp's tty driver has a nice passive tty paging system that is
quite smart, accounting for wrapped lines, different screen/window
sizes, it does scroll or noscroll (clear screen or overwrite with erase
EOL), and other goodies.  It is compatible with 4.2BSD and SysVr2 at
the ioctl(2) and stty(1), and user input levels, has ^T job/system
status with more than 25 selectable info items, optional delayed echo,
everything you ever wanted for Christmas.  Of course, if you don't like
this stuff or don't care about it, it doesn't get in your way.  If I
get enough requests, I'll post an annotated stty everything listing
(if the net can handle the load).

	Andy Tannenbaum   Masscomp  Westford, MA   (617) 692-6200 x2274

guy@sun.uucp (Guy Harris) (10/10/85)

> cithep!tim is barking up a tree that's next to the right one.

cithep!tim is pulling our collective leg.  I guess his article needed a :-).
Good grief.

	Guy Harris