Pre Smalltalk
I conclude that there will be no TTY of the world of display terminals. As the old terminal support grew about such a de facto standard, what are we to do to gain some of the flexibility that we enjoyed when we could hook up any kind of terminal with any kind of application?
I list here some of the ideas that seem likely to become important for us to support. Some of these ideas are incompatible except at extreme cost.
Scrolling continuously.
Invisible storage in the terminal where data that is likely to be redisplayed can be cached.
A variety of information compression techniques.
Host-loadable fonts.
And a large variety of graphics abilities that I am unable to categorize.
When this has happened for several such terminals the anarchy will be painful and we will write adaptors. An adaptor will mate a program written for one terminal to another terminal.
This lack of strategy would seem to result in a large number of adaptors but note that not all members of the cross bar need be filled in. The adaptors are written only after we know much more about these wonderful terminals than we now know. Indeed the adaptor will sometimes be customized to the application.
Adaptors may be stacked. This practice has approximately the same viability as stacking electrical adaptors, to wit, they are flaky and loose power. Stacked adaptors do, however, fill the need for occasional mating of programs to terminals.
There are a variety of things in the world besides terminals and applications that have a stake in standards:
Window managers are a tool that should ideally be separated from both the terminal logic and application logic.
Command languages may have special needs in this area.
In the BRUWIN scheme each window looks on a separate object. In Augment two windows can show two aspects of the same object. A change to an object via either window may be seen thru both windows.
In augment there is an idea that the window shows you the current state of an object. This is an elusive thing to generalize. It is accomplished in Augment by integrating the window logic with the higher level logic.
I presume that a window manager for a single screen with equivalent area and resolution would be even better.
Such windows might be weakened so to prevent the user of the terminal from effecting the object behind the window.
Stanford AI has provided display debuggers for several years that continuously showed values of selected variables associated with the program.
There is no inexpensive way to monitor for changes to a segment given only a segment key, but PER can provide this function efficiently in some cases for modifications made by the domain.
This is a function that pervades applications and terminal design.
It is a very frequent reason that an application gets locked into a particular type of terminal. An excellent example of this is the PLIC compiler. This compiler from IBM has a highly integrated editor. The editing style is obsolete. It fails to take advantage of either newer and more familiar ideas or hardware.
A great deal of application logic may be viewed as merely conversing with a person at a terminal about some abstract object and allowing that person to cause changes in that object. I think that a system that provides general and uniform structure editing will gain great loyalty and indeed fanaticism on the part of the user.
I suspect that a great deal of the fervor with which users of System 38 praise that system is the uniformity with which users talk to the system about complex objects.
One view is that a data base system {perhaps relational} talks about objects of sufficient complexity to model these structures. I don't think, however, that I want to think of my PL/I program as a Magnum data base. It might be more like a Focus data base, but please don't display it like Focus does.
See (show,) for more specific ideas on this subject.
IBM uses the term "APA" or "All Points Addressable" for "bit mapped". The image processing people call these "pixel displays". "Pixel" is short for "PIcture ELement".
The Pixel Window Problem
Another problem is to support the updating of windows partially obscured by other windows.
The application counters with values of its own for these parameters. The application can expect better performance insofar as it conforms to these values.
The application stores directly into this buffer and the image appears on the screen soon thereafter.
The real window is padded with an application specified pattern if the real window is larger than the application's window.
If the application does not conform to pixel size or aspect ratio something slow and ugly will be done to conform the application's pixels to the pixels of the real window. This might interact with a user's ability to zoom.