Graphics implementation and conceptualization at Augmentation Research Center
How the Augmentation Research Center put graphics displays to work.
Irby, C.H., "Graphics implementation and conceptualization at Augmentation Research Center", RFC 191, DOI 10.17487/RFC0191, July 1971, <https://www.rfc-editor.org/info/rfc191>.
@misc{rfc191,
series = {Request for Comments},
number = 191,
howpublished = {RFC 191},
publisher = {RFC Editor},
doi = {10.17487/RFC0191},
url = {https://www.rfc-editor.org/info/rfc191},
author = {C.H. Irby},
title = {{Graphics implementation and conceptualization at Augmentation Research Center}},
pagetotal = 4,
year = 1971,
month = jul,
} RFC text
Contents
RFC 191 Charles Irby
NIC 7136 Augmentation Research Center
Category D.6, I.1 Stanford Research Institute
13-JUL-71
GRAPHICS IMPLEMENTATION AND CONCEPTUALIZATION AT ARC
Overview:
This document is a brief description of the way in which graphics
terminals are conceptualized and used at the Augmentation
Research Center. All things described are implemented and have
been operational for several months. Although our attention has
initially been centered about the display of textual material, we
are now about to turn our attention toward pictorial displays
(hopefully much enhanced over our previous 940 line drawing
capabilities).
This document will discuss only those facits of display use
which have been implemented and are currently operational,
namely only those dealing with textual display.
included is a discussion of the use of multiple file viewing
display areas in NLS to provide cross file editing capabilities.
A description of our display and terminal input equipment will
be issued as a separate document.
NOTE: RFC 190 includes a functional description of the
implementation of the interface to our displays and is a
description of the way this interface was extended to include
"Processor-displays" (an IMLAC PDS-1, in this case) to our
system, thus enabling one to use Display NLS over any of our
teletype lines (including the network).
A "processor dsplay" is a display with Processing power which
can be controlled by character strings.
Description of the "conceptual display" implemented at ARC
The allocatable output unit for our display terminals (which
include our local terminals and all remote processor-displays) is
a rectangular "display area". A program treats this display area
much like it would a file which it has opened with write access.
When requesting the allocation of a display area, a program
specifies its attributes, including where it is to be on the
screen. The program is returned an identifier which it
subsequently uses to manipulate images within the display area
and the display area itself. Each string which the program
writes into the display area is also given an identifier, which
can subsequently be used to move, delete, replace, or change the
characteristics of that string.
The currently implemented characteristics are character size,
horizontal spacing between characters, and font of the
characters (e.g. blinking, italics, intensity, etc.).
The position of items in the display area are given relative
to the 0,0, which is the lower left corner of the display
area. The horizontal coordinate increases to the right and the
vertical coordinate increases toward the top.
In addition to above described manipulation of strings within
display areas a program can suppress the display of individual
strings within display areas or suppress whole display areas.
Also, a program can switch the terminal's state from teletype
simulation to display mode and vis versa.
When in display mode, the teletype simulation display area is
suppressed and the coordinates of the cursor are input with
each character. When in teletype simulation mode, all user
owned display areas are suppressed and the coordinates of the
cursor are not input with each character.
At TENEX startup time, display areas are allocated for a teletype
simulation and a cursor for each local display terminal. Programs
can change the string being displayed as the cursor to give the
human feedback as to the programs state.
Within NLS:
The NLS subsystem deals only with the cursor and the display
areas it has requested from the system for output to the user.
The display area formatters assumes that the display has 64K
by 64K addressable points (with 0,0 at upper left), several
different character sizes and fonts, and 7-bit ASCII.
The display area formatters use format parameters during the
format process and post-processors to convert the vertual
format to one that is acceptable to the device for which the
formatting was being done (a display area on the screen, a
page for a printer, a microfilm device, or a teletype).
NLS allows the user to specify arguments to commands by
selecting items from the current display image. This is
accomplished through the use of a data structure, which
describes the current display image, to map the cursor
coordinates, which are input with each character, into the
proper selection.
Multiple text display areas in NLS
When the user's device is a display, NLS allows him to subdivide
the file-viewing display area (the one in which he views his
file) and view (and edit across) several different files at once.
Following is a discussion of the commands and capabilities
associated with this new feature.
new commands
Horizontal split
splits a file-viewing display area horizontally (into an
upper and lower segment) at the selected location moving
the image of the original display area to the upper or
lower segment depending on whether the cursor is above or
below the bugged position when the final Command Accept is
input.
No display area will be created which is smaller then 2
lines by 20 columns (using the character size of the
original display area).
Vertical split
splits a file-viewing display area vertically (into a left
and right segment) at the selected location moving the
image of the original display area to the left or right
segment depending on whether the cursor is to the left or
right of the selected position when the final CA is input.
No display area will he created which is smaller then 2
lines by 20 columns (using the character size of the
original display area).
Move boundary
The selected boundary is moved to the new position. A
boundary will not be moved passed a boundary of a neighbor.
A boundary is moved for all display areas for which it is a
boundary. Any resulting display area which is smaller than
two lines by twenty columns will be deleted.
Character size
The current character size of the display area which
currently contains the cursor is displayed, and the user
may type a number (0, 1, 2, 3) for a new character size.
The final Command Accept causes the character size to be
changed. The horizontal and vertical increment are
automatically adjusted. Different display areas may
simultaneously have different character sizes.
Clear display area
The selected display area is cleared, i.e. the image is
erased, the return and file return rings are released, and
the association of a file with that display area is
removed. The display area itself is not deleted.
One may freely edit and jump using several display areas. The
position of the cursor is used to resolve ambiguities.
For example, If one executes a Jump command, the position of
the cursor when the final Command Accept is entered determines
in which display area the new image is to appear.
Also, If one changes viewspecs using the leftmost two buttons
of the mouse, the viewspecs of the display area containing the
cursor when the buttons go down are used as the initial values
and are displayed in the viewspec area. When the buttons are
released, the display area containing the cursor receives the
new viewspecs.
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by BBN Corp. under the ]
[ direction of Alex McKenzie. 12/96 ]
AI ELI5
On this page
§1Display Areas as a Programming Model
RFC 191 describes how the Augmentation Research Center at Stanford Research Institute conceptualized and used graphics terminals in the early 1970s. The key innovation was thinking of the display as a collection of rectangular display areas that programs allocate dynamically. A program requests an area, specifying its position on the screen and the maximum number of text strings it will contain. The operating system returns an identifier which the program uses to manipulate the area and its strings. Each string has its own position, character size, font (italic, underline, blinking), and can be moved, redrawn or deleted independently. This model treats a graphics display like a file that a program can write to, with fine-grained control over what appears where.
Think of the screen as a cork board. A program asks for a rectangle on the board. Then it can pin words anywhere in that rectangle, change their size or style, or unpin them, without affecting other words.
§2Teletype and Display Modes
The system supports two display modes. In display mode, the screen shows the allocated display areas and their content. In teletype simulation mode, the screen shows the last lines of text output as if on a teletype, and user-owned display areas are suppressed. Programs can switch between modes under control. The cursor position is input with every character in display mode, allowing pointing-device interaction. This design lets the same NLS application program work on both a teletype and a graphics display: when switched to teletype mode, the program sees coordinates padded with zeros, and when in display mode, it sees real coordinates from the pointing device.
The screen can look like a fancy editor with boxes and mouse, or like an old-style line printer. Switching between them is just a command.
§3NLS Implementation and Format Independence
The NLS subsystem at ARC uses display area formatters that assume a 64K by 64K addressable display, several character sizes and fonts, and 7-bit ASCII. The formatter first formats content logically, then passes the result to a post-processor specialized for the target device: a display area, a teletype, a printer, or microfilm. NLS also lets users select command arguments by pointing at text on the screen, mapping cursor coordinates through a data structure that describes the current display image. Multiple text areas in NLS allow users to split the file-viewing area vertically or horizontally, viewing and editing multiple files at once.
The program thinks of text as a 64K by 64K space. A translator then squeezes it onto whatever is being used: a screen box, a printer page, or microfiche.