|
Description  |
|
|
BACKGROUND OF THE INVENTION
In modern computing there has recently been considerable attention paid to
improving the user interface in an effort to create an operating
environment that is easy and efficient to use. The term operating
environment in this context refers to everything in a computer that a user
can directly access and utilize in a unified and coordinated manner. In
improving the user interface, there have been various efforts to create an
operating environment that is integrated, that is, one which allows
activities for various applications to be interweaved without losing an
accumulated information and without sacrificing capability.
One aspect of integration focuses on the ability to access multiple
applications or processes that reside in the computers main memory
utilizing a single key stroke, command, or cursor movement within
"windows". A window is a viewing area on a video display which may be a
full screen region or smaller, and represents a bordered region, typically
of rectangular shape, into which display data from application programs
and the like are written. The use of a multiple window graphic interface
is one approach in modern computing to creating a "desktop" metaphor
interface.
In typical prior art video display systems and memory architectures, a
single application program is implemented at one time. Thus, the
application program can write directly to the video display buffer without
interfering with concurrent display data output, because only display data
of that single application program is displayed.
In recent attempts to create windowing environments, for computers using
prior art memory structures, data, such as alphanumeric characters or
graphic images to be displayed within single or multiple windows are
temporarily stored in a video display buffer and then written directly to
the video display. A particular application program running in the
windowing environment must call the environment to determine the size and
location and video display ownership priority of the current window.
In the prior art, display data from an application program is written only
to that portion of the video display defined by the window which the
program has identified. If a window on the video display is moved, or its
size or ownership priority changed, the application program must be
designed to implement a change in the display data that will be written to
that window. Thus, to use existing application programs in prior art
windowing environments, the program typically must be rewritten to
accommodate for the architecture of that particular windowing environment.
Thus, effective operation of the environment is "program dependant".
In addition, the video display buffer in prior art systems must be
continuously updated since there is no high speed reference means for
determining when there has been a change in display output data.
When an environment is introduced to the display system, such as a
windowing environment, windows, (e.g. bounded or boardered regions), and
display data, (e.g. application programs), typically appear on the video
display concurrently. Also, display data from a particular application
program typically must be written into a single window defined by the
environment on the display, rather than to the entire display area. In the
prior art, this accomplished by providing an operating environment that
requires application programs to call the operating environment to
determine current window parameters, and to insure that application
program display data is written into selected windows. Thus, the prior art
systems suffer the drawback of requiring that the application programs be
structured or rewritten to call the operating environment instead of
writing directly to the video display.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a computer that incorporates the present invention.
FIG. 2 is a functional block diagram of one embodiment of a typical
computer utilized in connection with the present invention.
FIGS. 3(a) through (e) illustrate the use of a pseudo-screen buffer which
stores display data written from an associated application program, and of
a previous image buffer as a reference means, for storing current display
data for updating changes in output display data that will appear on the
video display.
FIG. 4 symbolically illustrates the process of determining a memory grid
offset, in particular connection with the pseudo-screen buffer offset.
FIGS. 5(a) through (d) symbolically illustrate the process of determining
the coordinate location of a character of display data within an
associated window on the video display with respect to display data stored
in a pseudo-screen buffer.
FIGS. 6(a) and 6(b) symbolically illustrate the operation of determining
region ownership and priority of windows on the video display for display
data to be written thereto from associated pseudo-screen buffer character
locations.
SUMMARY OF THE INVENTION
The present invention provides methods and apparatus which are used in
conjunction with a digital computer for displaying the output of computer
programs within windows defined by an operating environment on a video
display monitor. The present invention enables computer program output
display data to be written within windows on the video display without the
necessity of having to call an operating environment to determine the
physical characteristics of a particular window, size, location, and
display area ownership.
The windows that appear on the video display are defined independently by
the operating environment. Application programs intended for use in
connection with the present invention need not necessarily be written with
windows in mind. That is, substantial modifications to the application
program need not be made for use in connection with the windows defined by
the operating environment.
Typically, in the prior art, program display data output is written
directly to a screen buffer and then displayed. However, where windows
appear concurrently on the display, display data simultaneously written to
that display would not appear in windows. Rather, it would appear written
on the entire screen area. Utilizing the present invention, such display
data will appear in selected windows.
In accordance with the present invention, display data is written to a
pseudo-screen buffer for temporary storage of display data. A timer
interrupt interrupts the writing of display data at selected intervals.
During those selected intervals, the contents of the pseudo-screen buffer
is compared with the contents of a previous image buffer. For those memory
locations where associated contents are determined to differ, the
differing contents are written into the previous image buffer. Thus,
changes in display data are identified and updated periodically.
Timer interrupt intervals are accelerated during events that are associated
with increased frequency of changes in display data. Further, comparison
between a pseudo-screen buffer and previous image buffer is confined to
the memory regions within the vicinity of changes that during such events.
Thus, system overhead and video display image response time are optimized
for maintaining high system performance. Means are provided to determine
whether a given character currently stored in the pseudo-screen buffer
will appear on the visible portion of its associated window on the video
display monitor. The relation between the first display data memory
location and the pseudo-screen buffer, and the first character of display
data associated with a particular window in the pseudo-screen buffer, is
determined.
Further, the relation between the first display monitor coordinate location
and the first character location of an associated window on the video
display is determined. From these operations, a window offset` is
determined. Also, a pseudo-screen buffer offset is determined for each
arbitrary or selected character on the pseudo-screen buffer which have
changed during a timer interrupt, and for all other characters update mode
which are intended for display on the video display monitor. From the
window offset and the pseudo-screen buffer offset, a "new" screen offset
is determined representing the coordinate locations on the video display
for associated pseudo-screen buffer display data locations in connection
with associated windows defined independently by the windowing
environment.
Having determined where display data should appear within a window on the
video display monitor, in accordance with the present invention, it is
next determined whether or not an associated window region is visible on
the video display. It is necessary to determine this because windows
frequently overlap, in which case only display data that is to appear in
the `uppermost` or `priority` window should be written to the video
display in that overlapping region. Further, a window may extend off the
video display screen boundary, in which case the display data would not
appear on the video display at all.
In the present invention, the visibility of a particular window region on
the video display is denoted as window `ownership`. A screen map is
provided which contains a parallel representation of the windows appearing
on the video display. Each pseudo-screen buffer associated with a
particular application program is assigned a label, such as integers 1
through n, to identify each such pseudo-screen buffer. The integer value
identifier of an associated pseudo-screen buffer is written into each
memory location of a memory map where that pseudo-screen buffer display
data would be visible within a window.
In the foregoing manner, display data from the pseudo-screen buffer is
updated, its associated location in a window on the video display is
defined, and whether or not that display data is visible on the video
display is determined. Further, means are provided for writing the visible
display data into its associated window on the video display.
Thus, by utilizing a crystal controlled timer interrupt clocking mechanism,
in conjunction with a pseudo-screen buffer, previous image buffer, and
screen map memory regions, selected display data is written into
independently defined windows on a video display for manipulation and
processing in an interactive windowing user interface. Further, this task
is accomplished without sacrificing overall system performance because
display data writing response time and system overhead, is optimized for
desired system operation. Thus, off the shelf application programs can be
written into selected windows of the windowing environment at high speed.
NOMENCLATURE AND DEFINITIONS
The detailed descriptions which follow are presented in part in terms of
algorithms and symbolic representations of operations on data bits within
a computer memory representing alphanumeric characters or other
information. These descriptions and representations are the means used by
those skilled in the data processing arts to most effectively convey the
substance of their work to others skilled in the art.
An algorithm is here, and generally, conceived to be a self-consistent
sequence of steps leading to a desired result. These steps are those
requiring physical manipulations of physical quantities. Usually, though
not necessarily, these quantities take the form of electrical or magnetic
signals capable of being stored, transferred, combined, compared, and
otherwise manipulated. It proves convenient at times, principally for
reasons of common usage, to refer to these signals as bits, values,
symbols, characters, display data, terms, numbers, or the like. It should
be borne in mind, however, that all of these and similar terms are to be
associated with the appropriate physical quantities and are merely used
here as convenient labels applied to these quantities.
Further, the manipulations performed are often referred to in terms, such
as comparing or adding, commonly associated with mental operations
performed by a human operator. No such capability of a human operator is
necessary, or desirable in most cases, in any of the operations described
herein which form part of the present invention; the operations are
machine operations. Useful machines for performing the operations of the
present invention include general purpose digital computers or other
similar devices. In all cases the distinction between the method
operations in operating a computer and the method of computation itself
should be recognized. The present invention relates to method steps and
apparatus for operating a computer in processing electrical or other
(e.g., mechanical, chemical) physical signals to generate other desired
physical signals.
The present invention also relates to an appartus for performing these
operations. This apparatus may be specifically constructed for the
required purposes or it may comprise a general purpose computer as
selectively activated or reconfigured by a computer program stored in the
computer. The algorithms presented herein are not inherently related to
any particular computer or other apparatus. In particular, various general
purpose machines may be used with programs written in accordance with the
teachings herein, or it may prove more convenient to construct more
specialized apparatus to perform the required method steps. The required
structure for a variety of these machines will appear from the description
below.
In the following description, several terms are used frequently, have
specialized meanings in the present context, and are thus defined. The
terms "environment", "windowing environment" and "running in windows" are
used interchangeably to denote a computer user interface in which
information is manipulated and displayed within bounded regions on a
raster scanned video display.
The term "pseudo-screen buffer" is used herein to desribe a portion of
memory of the present invention to which video display data is written
directly from an application program during its execution, and stored
temporarily prior to being written to the video display. Thus, by simple
analogy, the pseudo-screen buffer is similar to a scratch writing pad
where information is written temporarily until it is rewritten in its
final desired form or discarded. The term "pseudo" screen buffer is chosen
as appropriate because display data is written to this region of memory
from the application as if it were writing directly to a screen buffer as
in the prior art. It should be noted that a separate pseudo-screen buffer
is utilized for each different application program being run in the
windowing environment.
The terms "application", "application program", and "program" are used
interchangeably herein to refer to any computer program run in conjunction
with the present inventive system.
The term "current" is sometimes used herein as an antecedent to "window",
"application", etc., and is used to denote system components which are
currently being utilized or performing operations with respect to a
particular application program running in the environment.
Each application program or system component or operator is often referred
to as having an "associated pseudo-screen buffer", and an "associated
window", etc. The term "associated" is used to refer to associated system
components during a particular time or operation. For example, display
data from application programs 1 through n are written to associated
pseudo-screen buffers, associated window, and associated screen map
windows, 1 through n, respectively.
DETAILED DESCRIPTION
An improved computer memory architecture and method is disclosed for use by
a digital computer in combination with a video display or other suitable
output means to provide an "application program display
output-independent" windowing environment; that is, one in which the size,
location, and priority are determined and windows placed on the display,
independently. In the following description, certain details are set forth
to provide a complete understanding of the present invention. It will be
apparent to one skilled in the art, however, that these specific details
are not required in order to practice the present invention. Also, well
known electrical structures and circuits are depicted in block diagram
form so as not to obscure the present invention unnecessarily.
In prior art video display systems used in conjunction with windowing
environments, a particular application program currently running calls the
operating environment to determine the location and size of an associated
window on the video display. The current frame of display data of the
application program is then written directly to the video display by the
operating environment. The CPU may then read, write or modify the data
within the computer's memory for subsequent display on the video monitor.
However, application programs that are not written or designed to run in a
particular windowing environment typically cannot be written into a window
defined by that environment unless the application program is modified
significantly, since the existence of the windowing environment is
essentially unknown to the program. Absent significant application program
modification, or if the program is not originally written specifically for
the windowing environment, it will write to the entire video display area,
rather than into a current window.
It has been found that system performance is significantly reduced when, as
in the prior art, the application program must call the operating
environment in order for display data to be written into windows. This
loss in performance is due primarily to increased processor overhead which
substantially reduces the speed at which the display data will be written
to the screen. The present inventive system provides a solution to this
problem.
FIG. 1 shows a typical computer-based system for displaying data such as
alphanumeric characters and the like according to the present invention.
Referring now to FIG. 1, a computer 10 is shown which comprises three major
components, a central processing unit 11, memory, and I/O circuit 14 which
is used to communicate information in appropriately structured form, to
other parts of the computer system. Regions of memory, described in detail
below, include main memory 12, and mass memory storage 16. A portion of
main memory will typically include one or more applications programs, such
as, for example, spread sheets, data base managers, graphics programs and
the like. As in most computer systems, these primary memory regions are
also coupled to input devices such as a cursor control 17 or keyboard 19.
A portion of mass memory storage 16 will typically store any programs and
data for managing the system windowing environment to which the present
invention relates. It should be appreciated, however, that both
application programs and windowing environment related programs may be
stored equally or alternatively in either main memory 12 or mass storage
memory 16, or in other forms of memory widely known and used in the art.
FIG. 1 shows one embodiment of the present invention in functional block
diagram form which overcomes the disadvantages found in prior art video
display systems used in conjunction with prior art computers, represent a
typical although not required, sequence or order of operations and
functions performed by the present inventive apparatus. It should be
appreciated that some or all of the functions and operations shown and
described in connection with FIG. 2 may occur in an alternative sequence
or simultaneously using techniques widely known in the art.
Referring now to FIG. 2, the CPU 11 is also coupled to specialized memory
regions, including pseudo-screen buffer 18, previous image buffer 20,
display data coordinate transformation means 22 and screen map 24,
described in detail in the discussion which follows. These memory regions
and operators may comprise separate memory structures and electrical or
other devices, may alternatively comprise regions of main memory 12 or
mass storage 16.
Current display images or "frames", which consist of alphanumeric
characters and graphic representations appearing within windows, are
displayed on a video display 26 which is coupled to the screen map 24,
pseudo-screen buffers 18 and previous image buffer 20.
In prior art video display systems which incorporate a windowing
environment, the display images of a current application program typically
are written directly to the video display 26 from a video display buffer.
For example, in data processors of the type known as the IBM XT
manufactured by International Business Machines, upon initial program
execution, the CPU must typically be queried by the application program to
determine if it has a monochrome or color video display. If the video
display is determined by the application program to be monochrome, display
data from the application program is written directly into the monochrome
display buffer which, on the IBM PC, is at memory location B0000. If, on
the other hand, the video display is determined to be a color video
display, program display data is written directly into the color display
buffer beginning at address location B8000.
In contrast, in the present invention, application program display data is
written temporarily into a pseudo-screen buffer 18 in the same manner as
if it were being written directly to the screen buffer. The pseudo-screen
buffer, like the screen buffer of the prior art, stores a copy of program
display data which comprises a character or bit map representation of
display elements defined by coordinates on a display device such as video
display 26.
When video display output for multiple application programs is to be
displayed in multiple windows on the video display, the current image data
for each application is stored in pseudo-screen buffers 18.sub.(1) through
18.sub.(n), where n equals on the number of application programs currently
running or being displayed in windows. A timer interrupt 30 which is
typically a crystal controlled timing device implemented in hardware to
interrupt the CPU11, is coupled to the CPU 11, memory regions 18 through
24, and to the system I/O devices (shown only in FIG. 1) for interrupting
application program processing at selected intervals described in further
detail below.
Updating Display Data
Referring generally to FIGS. 1(b) and 3 and coding entitled Background Pad
Updater, attached and incorporated herein, periodically, timer interrupt
30 interrupts the operation of application programs that are running in a
currently visible window on the video display 26. During interrupt
intervals, the CPU 11 reads the contents of both the current pseudo-screen
buffer 18 and the previous image buffer 20, which have corresponding
memory mapped addresses for storage of output display data. The contents
of the pseudo-screen buffer and previous image buffer contents are then
compared. If, upon comparison, their contents are determined to be
different at any corresponding memory locations, the contents of the
associated memory locations in the pseudo-screen buffer are written into
the corresponding memory locations of the previous image buffer. Thus, the
previous image buffer 20 is updated during each preselected timer
interrupt interval so that it will contain the identical current frame
display data that is stored in the pseudo-screen buffer.
Referring now to FIG. 3, the contents of the previous image buffer and an
associated current pseudo-screen buffer at various times T.sub.x is shown
to illustrate the updating of display data in accordance with the present
invention.
In the examples shown in FIG. 3, it is considered that the present
inventive system has been activated and a single application program is
running in a window on the video display. It should be appreciated that
the present invention is suitable for use with multiple applications
running in multiple windows as well.
When display data is first written into a pseudo-screen buffer 18, the
associated memory region of the previous image buffer 20 is typically
blank. It will be appreciated, however, that it alternatively may contain
residual display data, such as the contents of the last current full frame
display data from a previous application program.
Thus, at time T.sub.0, the pseudo-screen buffer and the associated previous
image buffer memory region are blank, represented in FIG. 3(a) by zeros in
all memory map locations M(x,y) and M'(x,y).
At some later time T.sub.1, shown in FIG. 3(b), display data from the
currently running application program are written into the associated
pseudo-screen buffer shown here as a memory grid in which all memory
locations store "1s". At time T.sub.2, shown in FIG. 3(c), timer interrupt
30 interrupts the program operation, and the contents of the pseudo-screen
buffer and previous image buffer are compared using operations well known
in the art. Upon comparison, it is seen that all corresponding memory
locations in the pseudo-screen buffer differ from those of the previous
image buffer; that is all addresses of pseudo-screen buffer contain "1s"
while all addresses of the previous image buffer contain "0s" or blanks.
During normal system operation between timer interrupts display data from
current application programs are written directly into the pseudo-screen
buffer as if being written directly to the screen buffer or the video
display itself as in prior art systems. Without the previous image buffer
as a reference means for detecting changes in pseudo-screen buffers 18, it
would be necessary for the system to operate as if the entire contents of
the pseudo-screen buffer 18 were continuously changed at each new time
T.sub.n. In that event, all memory locations of the pseudo-screen buffer
would be continuously updated, even in those memory locations where no
display data change had occurred, resulting in substantial increase in
overhead and degradation in system performance. This drawback is overcome
in the present invention by utilizing timer interrupt 30 in conjunction
with the previous image buffer 20 for updating, such that only those
locations in memory that have actually changed from time T.sub.n to time
T.sub.n+1 will be updated. It should be noted that other aspects of the
present invention, including screen mapping and | | |