CA1323439C - Memory mapped mouse - Google Patents
Memory mapped mouseInfo
- Publication number
- CA1323439C CA1323439C CA000612528A CA612528A CA1323439C CA 1323439 C CA1323439 C CA 1323439C CA 000612528 A CA000612528 A CA 000612528A CA 612528 A CA612528 A CA 612528A CA 1323439 C CA1323439 C CA 1323439C
- Authority
- CA
- Canada
- Prior art keywords
- cpu
- sampled
- interrupt
- pointer
- signals
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Position Input By Displaying (AREA)
- Digital Computer Display Output (AREA)
Abstract
ABSTRACT OF THE DISCLOSURE
In a computer system, an arrangement for storing condition signals indicative of the position of a pointing device and the condition of a button thereof, apparatus for comparing present condition signals generated by a pointing device with stored signals indicative of a previous condition of the pointing device, and apparatus responsive to the comparison of present condition signals generated by a pointing device for generating a pointer interrupt signals only if a change in the pointer condition has occurred.
In a computer system, an arrangement for storing condition signals indicative of the position of a pointing device and the condition of a button thereof, apparatus for comparing present condition signals generated by a pointing device with stored signals indicative of a previous condition of the pointing device, and apparatus responsive to the comparison of present condition signals generated by a pointing device for generating a pointer interrupt signals only if a change in the pointer condition has occurred.
Description
~23~
1 BACKGROUND OF THE I~ENTION
1. Field of the Invention This invention relates to computer operating systems and, more particularly, to improvements in operating systems for controlling pointing devices.
1 BACKGROUND OF THE I~ENTION
1. Field of the Invention This invention relates to computer operating systems and, more particularly, to improvements in operating systems for controlling pointing devices.
2. History of the Prior Art In a typical computer system utilizing bitmapped graphics, a mouse or other pointing device is used for accurately creating and revising graphic images. Basically, such a device provides signals accurately defining a position at which the pointing device is placed and the condition of one or more switches related to the device, usually referred to as buttons. In many of the more advanced systems, a mouse is also used for effecting many of the operations of various application programs by use of menus which may have operations selected by pointing to an item with a cursor controlled by the mouse and operating one or more of the buttons.
In the usual operating system utilizing a mouse or functionally similar pointing device ~which are referred to hereinafter by either term), tne pointing device generates interrupt si~nals approximately each one-fortieth of a second.
~ach of these signals causes the operating system to pause in its operation, sanse the device position, store the new device position, redraw the cursor position, and return to the interrupted operation. Thi~ is a useful operation when either the pointing device position or the status of a button has changed. However, statistically, such changes occur much less often than every one fortieth of a second. Consequently, a substantial amount of system operation time is los~ to the 3~ riPchar.~sm by which the pointing device conditlon is updated.
~ ' ' .
.
1323~3~
1 As is well known to those skilled in the art, in order to ma~e an operating system functional, there must be many levels of interrupts. That is, for an operating system to function, some level of interrupt must take precedence over all other levels of interrupts and other interrupts must, in like manner, have their own precedence with regard to the other interrupts for an operating system to function. Thus, the mouse interrupt may, in many cases, be delayed in execution because of some other process having precedence and preempting the system for some period of time.
Moreover, in many of the more advanced computer systems which utilize pointing devices and provide for multitasking of operations, more than one program or process may be operating at the same time. This is usually accomplished by an operating system which allows one process to utilized the central processing ùnit (CPU) for a period, a second process to utilize the CPU for a ~econd period, and so on, the sharing of the CPU, hopefully being such that each process appears to ~he user to be running without interruption by the other ~0 processes. ~he operation of a such multitasking system requires many more levels of preemption and interrupts and often delays the redrawing of the cursor represen~ing the pointing device position for long periods of time.
Certain application programs which make use of pointing ~5 devices include utility programs for accelerating the movement of the cursor representing the position of the pointing device on the output display. If the interrupt utilized to redraw the cursor on`the output display is preempted during movement of the pointing device, the output for the pointing device 3~ described on the output display may well be substantially distorted.
~3~3~3~
1 It is, therefore, an object of the present invention to improve a computer operating system by decreasing the time utilized for pointing device updating.
It is another object of the present invention to provide an improved operating system for a computer including a mouse updating system which operates more rapidly than do those of prior art systems.
Another object of this invention is to improve the mechanics by which a pointer position is updated in a computer operating system.
Another object of the present invention is to provide a pointing device interrupt system for use in computers which operates only in response to actual movement of the pointing device.
An additional object of the present invention is to provide an arrangement for remembering the positions to which a pointing device has been moved during an interim in which the position of the device has not been updated on the display so that the path previously taken by the device may be drawn as it occurred during that interim.
~ .
::
: :
-3-: ~
~323~3~
SIJMMARY (:)F THE INVENTION
These and other objects of the invention are realized in an operating system in which the operating system reviews the present mouse position on a repeating basis and generates a system interrupt to update the pointing device position only in the case in which a change in the pointing device has occurred since the last review. In this manner, the system continues with its present operation until the mouse position changes so that the system need not update the mouse position or redraw the cursor on a constantly repeating timed basis.
This significantly reduces the operating system overhead time allotted to the operation of the mouse.
This is accomplished in a particular computer system by me~ory for storing condition signals indicative of the position of a pointing device and the condition of a button ~hereof, means for comparing present condition signals generated by a pointing device with the stored signals indicative of a previous condition of the pointing device, and ~eans responsive to the comparison of present condition ~0 ~i~nals generated ~y a pointing device with stored signals indicative o~ a previous condition of the pointing device for gQnerating a pointer interrupt signal only if a change in the pointer condition has occurred.
In a specific adaptation o~ the invention, an arrangement is provided for storing a number of adjacent pointer positions ... .
over a period o~ time during which the mouse interrupt operation is preempted and the operating system is attending to other operations so that when the system returns to the pointing device to indicate its present position, various intervening positions may also be properl~ dlsplayed.
~4-' . : .' , " ' ' ' ' ' ~ 32~39 1 The invention provides a computer display system for displaying graphical input data, said computer display system comprising an interruptable central processor unit ("CPU") for execu~ing a plurality of data processing operations, said CPU coupled to a frame buffer and to display means including a display for displaying a cursor and data provided by said CPU, and pointing means coupled to said CPU for generating a plurality of pointer signals, said computer display system comprising: sampling means coupled to said CPU for providing a plurality of sampled painter signals corresponding to at least one cursor position indicated by said pointer means; memory means coupled to said CPU for storing said sampled pointer signals at least until said CPU updates said frame buffer according to said 1~ pointer signals stored in said memory means, if a flag is set and the CPU receives an interrupt to service, said memory means create a history list by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the service o~ the interrupt, and comparison means coupled to said mem~ry means for comparing said sampled pointer signals with said pointer signals stored in said memory means, said -comparison means further setting'said flag when sai~d sampled pointer signals differ from said pointer~signals stored in ~5 said memory means, after the CPU has serviced the interrupt, said CPU retrieving the history list from said memory~means and updating said frame buffer and rèdrawing the cursor according to said pointer signals stored in said history list during the serviclng oE said in~errupc.
~g . .
~3~3~3~
1 The invention also provides a metho~ for displaying graphical input d~ta in a computer display system comprising an interruptable ~entral processor unit ("CPU") for executing a plurality of data processing operations, said CPU coupled to a frame ~uffer and to display means including a display for disp~aying a cursor and data provided by said CPU, and po-nting means coupled to said CPU
for generating a plurality o~ pointer signals, said method comprising the steps of: providing a plurality of sampled pointer signals correspondin~ to at least one cursor position indicated by said pointing means; storing said sampled pointer signals in mQmOry means at least until said CPU updates said frame buffe according to said pointer signals stored in said memory means; comparing said sampled 1~ pointer signals with said pointer signals stored in said memory means; setting a flag when said sampled pointer signals differ from said pointer signals stored in said memory means; if the flag is set and the CPU receives an interrupt to service, creati~g a history list in said memory ~0 means by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the servicing of the interrupt; and a~ter the CPU has serviced the interrupt, retrieving the history list rom said memory means and updating said frame buffer and redrawing the cursor according to said pointer signals stored in said history list during the servicing o~
said interrupt.
These and other features and advantages of the present invention will become apparent to those~skllled in the art upon reading the following detailed description in conjunction with the several figures of the drawing in which like designations have been used~for like components and operations throughout.
- , ~323~3~ -1 B~I~F D_SC~`-P,IO~ OF THE DRAWINGS
Figure 1 is a flow chart illustrating the operation of a portion of an operating system in accordance with the present invention;
~igure 2 is a flow chart illustrating the operation of a more sophisticated portion of an operating system in accordance with the present invention; and Figure 3 is a diagram of the infoxmation stored at a me~ory position in accordance with the invention.
:
:
' -6- ~ :
- : .
`` ~323~39 Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic rQpre~entati~ns of oper~ttons on d~ta blts wlthin a co~puter memory. These algorithmic descrip~ions and representations are the means used by those skilied in the data processing arts to most ef~ectively convey the substance of their work to others skilled in the art.
An algorithm is here, and generally, conceived to be a 5elf-consistent se~uence of steps leading to a desired result.
The 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 has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, howe~er, that all o~ these and similar terms are to be associated with ~o tha appropriate physical quantities and are merely convenient labels applied to these quantities.
Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator lS necessary OF desirable in most cases in any of the operations ~escribed herein which form part o~ the present invention; the operations are machine operations. Useful machlnes ~or 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 _7 _ 1~23439 1 operating a computer and the method of computation itself should be borne in mind~ The present invention relates to method steps for operating a compu~er in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals.
The present invention also relates to apparatus for performing these operations. This appara~us may be specially 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 given below.
~0 ~5 , ~23~39 1 D~TAILED DESCRIPTION OF THE INVENTION
As pointed out above, in the usual operating system utilizing a mouse or functionally similar pointing device, the mouse device generates interrupt signals approximately every one-fortieth of a second. Each of these signals causes the operating system to pause in its operation, sense the mouse position, store the new mouse position, redraw the cursor position, and return to the preceding operation. A
substantial amount of time is lost in system operation to the 1~ means by which the mouse position is updated since the operation occurs forty times each second.
Figure 1 illustrates a flow chart which may be used to explain the operation of the present invention which substantially reduces the delay in system operation due to mouse condition ùpdating. In a system in accordance with the invention, a mouse interrupt is not generated unless the mouse has either moved or the condition of its buttons has changed.
In the flow chart of Figure 1, the mouse input signal is first received at step 10. This signal, as indicated above, includes the information by which the mouse position and the condition of its associated buttons is determined. At step 12, the incoming mouse signal is compared to the last mouse position and condition. The last mouse position is, in accordance with the preferred embodiment of the invention, stored as an entry in an array in memory.
Figura 3 illustrates ~he information provided in a preferred embodiment of the invention to the particular memory position recording the last mouse condition. The information stored includes the X position of the mouse in absolute rectilinear coordinates, the Y position of the mouse in absolute rectilinear coordinates, the condition o~ a button ~9_ ~32343~
1 one, the condltion of a button two, the condition of a button threa, and an indication of the time at which the last mouse condition occurred. Depe..ding on the particular system and the particular mouse utilized, there may be one or more S buttons. The preferred embodiment utilizes a three-button mousel and one bit is s~ored for each button. ~s thers is a substantial body of prior art explaining various mouse arran~ements, no detailed description of a particular mouse is considered to be necessary to this description.
At a step 14, the result of the comparison which occurred at step 12 determines whether the operation ignores the present mouse condition or generates an interrupt to utilize the incoming ~ouse signals. If the condition of the mouse has not changed as indicated by the comparison with the stored mouse condition, then the operating system simply ignores the incoming mous~ signal and returns to review the following mouse signals at step 10. In this manner, the en ire mouse interrupt is bypassed if no change in mouse condition has occurred. If, on the other hand, ~he mouse condition has ~o changed, the program mo~es to a step 16 to set a flag indicating that change in mouse condition has occurred. The change flag is set so that the mouse condition positions in memory are not overwritten during the process by incoming ~ouse condition signals.
The program next moves to a step 18 at which a determination is made whether one-fortieth of a second has passed since the last mouse condition update. I~ one-fortieth of a second has not passed since the last mouse condition update, the program simply recyales to s~ep 10 to loo~ for a new ~ouse conditlon. In this manner, a mouse interrupt can be generated no more often than each one-fortieth of a second.
If one-fortieth o~ a second has passed since the Iast mouse , ' .
13234~9 1 condition update, the program moves to a step 20 to generate a mouse interrupt.
When a mouse in~errupt is generated, the mouse interrup~
subroutine or function is entered at a step 22. This S subroutine is shown to the right in Figure 1 of the drawing.
The subroutine moves ~o a step 24 to read the new mouse position an~ the condition of the mouse buttons. The subroutine next moves to a step 26 to update in memory the mouse position, the button conditions, and the time the input occurred by providing to memory information in accordance with the illustration of Figure 3. Finally, the subroutine moves ~o step 28 to erase and redraw the mouse cursor in the frame buffer of the computer system ~not shown in the drawings) so that the mouse cursor position may be scanned to the output 1~ display. When step 28 is completed, the subroutine moves to a step 30 to clear the change flag previously set and then to a step 32 to return to the main program at step 10.
The advantages of the invention will be apparent to those skilled in the art. Rather than having to interrupt the O operation of the CPU each one-fortieth of a second, the present arrangement allows the updating to occur only upon an actual change in the mouse condition. Thus, it is not necessary to update the mouse position and the button conditions in memory each one-fortieth o~ a second nor is it ~5 necessary to erase and redraw the mouse cursor in the frame buffer of the computer system each one-fortieth of a second.
This provides a substantial saving in system operation time.
The arrangement of this invention may be used to more accurately draw the positions traversed by a mouse during intervals in which the mouse interrupt operation is preempted by interrupts of a higher level or by other processes of a multiprocessing operating system. Those ~amiliar with the 1323~39 1 operation of a mouse with a computer having a bitmapped outp~t display will recognize that ~he movement of the mouse is often less than optimal. That is, ~he mouse sometimes moves from physical position to physical posi~ion without all of the intervening positions being recorded on the output display.
This occurs because the CPU is preempted during various intervals of the movement of the mouse and, in prior art systems, mouse interrupts are generated only each one-fortieth of a second. If the mouse moves during a period when the CPU
is preempted by a higher level interrupt or another process, then intervening positions of the mouse do not find their way to the output display.
This may have no effect on opexation. For example, in a case where the ~ouse is merely moving from position to position, all that really needs to be recorded is the last position. However, if a graphic figure is being described by the mouse during the period of the preemption, the shape may be distorted: for example, the beginning and end points of an arc may be joined as a straight line if the mouse interrupt is preempted during the drawing of the arc by a process running in the background in a multiprocessing system.
~nother situation in which a mouse interrupt is preempted and distortion occurs is that in which the particular application program includes software which accelerates the apparent speed of the mouse across the output display. In such situations, an interrupt which preempts the mouse interrupt often causes the movement o~ the mouse cursor on the output display to be severely distorted because the points describing the mouse path are not drawn at the proper time intervals.
A second embodiment of the invention is illustrated in the flow chart of Figure 2. The arrangement illustrated in 132~439 1 Figure 2 corrects these problems of the prior art. The arrange~ent utilizes an expan~ed memory mapping facility comprising an array cf memory mapped tables to record the positions o~ the mouse during periods in which the mouse interrupt is preempted and then causes ~he display of all of those positions to occur at the proper rate after the preempting interrupt has been co~pleted.
This embodiment of the invention may be conveniently utilized in computer systems which utilize the Unix operating system and run anothe- operating system such as MSDOS as a window in the Unix system. such a system is exemplified by the Sun 386i Computer manufactured by Sun Microsystems, 2550 Garcia Avenue, Mountain View, California.
In the preferred embodiment of the arrangement, the main portion of program, that illustrated to the left in Figure 2, is carried out by the Unix operating system while the mouse interrupt function is a process of the MSDOS operating system running as a window urder the ~nix operating system.
The program illustrated is èntered after the initialization of a memory mapped position which contains the condition o~ the mouse last displayed. Moreover, a series of memory m~pped positions comprising an array of what are referred to hereinafter as mouse history records are also initialized before the first step of the program illustrated in Pigure 2. In a preferred embodiment of the invention, these mouse history re~ords are chronologically arranged in an array, each position of which is sufficient to contain four thirty-two bit words. These four word positions~each represent the information illustrated in Figure 3~ of the drawings for one mouse condition.~ The program begins at a step 40 where a new mo~se condition signal is received. The program moves to step 42 at which a determination is made : ~ :
* Tra~e Mark -13-~, .
~323~
1 whether one-forti~th of a second has passed since the last mouse interrupt occurred. To determine this, a comparison is made ~ith the timestamp signal of the memory mapped position carrying the last mouse position displayed. If the prescribed period has not passed, t~e program simply recycles to look at the incoming mouse condition signal at step ~0; thus mouse interrupts may only occur each one-fortieth of a second. If the appropriate period has passed, the program moves to step 44 at which the new mouse condition signal is compared to the last recorded mouse condition signal to determine if the mouse oondition has changed. With tAe first signal input to the system, the condition has changed, of course.
If the mouse condition has changed, the program moves to a step 46 at which a determination is made whether either a change flag has been set or a history list exists. If neither condition obtains (as with an initial mouse condition signal), the program moves to a step 48 to write the new mouse condition into the initialized memory mapped area, to set the mouse interrupt change flag, and to initiate a mouse interrupt.
As discussed above, in the preferred embodiment of the invention, the mouse interrupt is programmed as a separate ~unction or subprogram (depending on the computer language involved). Such a function is illustrated to the right in the diagram of Figure 2. The mouse interrupt function begins at step 50 and moves to a step 52 at which the mouse memory mapped area is read. From this information, the new position for the cursor i8 determined; and the program moves to step 54 to erase and redraw the mouse cursor in the ~rame buffer so that the new position may be scanned to the output display.
The function then moves to step 56 at which the change flag previously set is ~leared and returns from the mouse interrupt - ~
~323~3~
1 at step 58 to step 40 of the main program In the preferred embodiment of the invention, the change flag is stored in the memory mapped area and removed ~y the action of the MSDOS
operating system in carrying out the mouse interrupt seq~ence.
When the next mouse condition signal is received, if the mouse condition has not changed and one-fortieth of a second has passed, the program moves through the steps 40, 42, and 44 to a step 60 to determine whether a history list of positions, ~i.e., positions which have not yet been written to the display) exists. At this point, no history list exists because the first mouse condition signal (the last to occur) generated an interrupt and that mouse condition was stored and written to the frame buffer. Consequently, the program moves from step 60 to recycle to the beginning at step 40; and no mouse interrupt is generated thereby freeing the system of the necessity of restoring the mouse information and redrawing the cursor.
If the next mouse condition signal indicates a change has occurred and one-fortieth of a second has passed, the program proceeds through steps 40, 42, and 44 to step 46 at which it is determined that no change flag is set and no history list e~ists. Therefore, the program moves to step 48 to initiate the ~ouse interrupt function described above, set the change ~lag, store the new mouse condition in the memory mapped area, and (a~ter the interrupt) clear the ~hange flag and recycle to step 40. Thus, the operation of the system in response to a change in the mouse condition when no history list exists is essentially like that illustrated in Figure 1.
If on the other hand, sver one-fortieth of a second has passed and a mouse interrupt (as described above~ has been initiated so that the change flag is set, and the mouse interrupt is preempted for some reason so that~ it has not been .
~323~39 1 com~ieted when a mouse condltion ls received which is changed from a last mouse condition, then the program moves through steps ~0, 42, and 44 to step 46 at which ~he determination indicates that the change flag is set. This moves the program to a step 62 at which a new history record is created in the history list array in memoxy re~erred to above. This record contains the same in~ormation as that illus~rated in ~igure 3.
The program then moves to s~ep 60 where it is determined that a history now does, in fact, exist.
Since a history list exists, indicating that there are mouse conditions stored which have not been displayed, the program moves to a step 64 at which a determination is again made whether the change flag has been set. In the present example, the flag has been set by the preempted mouse interrupt, so the program recycles to the beginning at step 40 leaving a first mouse history record stored in the mouse history list.
The program continues to treat incoming mouse condition signals in the same manner, storing those new condition ~o signals which indicate a change from the last recorded mouse condition o~ the history list in the history list and recycling until the process preempting the mouse interrupt ~inally clears.
When the preempting condition ends and the mouse 2S interrupt clearsl the change flag is cleared in step 56 of the mouse interrupt function. Consequently, when the next mouse signal arrives at step 40, it is processed to step 44. If this new signal indicates a change in mouse condition, the program moves to step 46, finds no change flag but an existing history list, and moves to step 62 to record the new mouse condition signal in the history list.
~23~3~
1 ihe program then moves to step 60. The progra~ also moves directly to step 60 from step 44 if the new mouse condition signal indicates no change from t~e last signal recorded on the history list. ~t step 60, the program determines that a history list exists and moves to step 64 where a determination is made that the change flag is not set.
This moves the program to a step 66.
At step 66, the time interval between the last mouse condition recorded by the mouse interrupt function (the interrupt which has just cleaved) and the time of the first record stored in history is evaluated. The actual time since the last interrupt ( 1) is compared to the time ~ 2) between the timestamp on the las~ recorded interrupt mouse and the first mouse condition in the history list. The timestamp of the first event stored in the history list and the timestamp of the last mouse interrupt may be used to determine this interval, or the timestamps in the history list may be recorded on a delta (change in time) basis. Consequently, a comparison of the last mouse position generated by the mouse interrupt and the first stored event in the history list indicates whether an actual time e~ual to or greater than that this delta time has passed. If it has passed, then the first mouse condition of the history list condition is deleted from the history list and transferred to the memory mapped position at a step 68. From step 68, the program moves to step 48 to initiate the mouse interrupt sequence. On the other hand, if the time interval is not yet egual to or greater than the delta time between the last mouse condition written to the frame buffer and the first mouse condition in the history list, the program merely recycles from step 66 to the beginning at step 40 so that the first history is delayed until an appropriate time interval has passed.
~32~39 1 The use of the history list referred to and outlined in operation in Figure 2 provides, first, that all preempted changes of the mouse condition taking place after one-fortieth of a second has passed are stored for later recording. This eliminates the problem in which intervening mouse positions are omitted during conditions of preemption. The history list as implemented in the present invention also assures that mouse positions stored during a state in which the mouse interrupt is preempted are executed in proper time sequence so that distortions which might be caused by mouse accelerations utility programs are eliminated.
Although the present inven~ion has been described in terms of a preferred embodiment, it will be appreciated that various modifications and alterations might be made by those lS skilled in the art without departing from the spirit and scope of the invention. The invention should therefore be measured in terms of the claims which follow.
~5 , :
In the usual operating system utilizing a mouse or functionally similar pointing device ~which are referred to hereinafter by either term), tne pointing device generates interrupt si~nals approximately each one-fortieth of a second.
~ach of these signals causes the operating system to pause in its operation, sanse the device position, store the new device position, redraw the cursor position, and return to the interrupted operation. Thi~ is a useful operation when either the pointing device position or the status of a button has changed. However, statistically, such changes occur much less often than every one fortieth of a second. Consequently, a substantial amount of system operation time is los~ to the 3~ riPchar.~sm by which the pointing device conditlon is updated.
~ ' ' .
.
1323~3~
1 As is well known to those skilled in the art, in order to ma~e an operating system functional, there must be many levels of interrupts. That is, for an operating system to function, some level of interrupt must take precedence over all other levels of interrupts and other interrupts must, in like manner, have their own precedence with regard to the other interrupts for an operating system to function. Thus, the mouse interrupt may, in many cases, be delayed in execution because of some other process having precedence and preempting the system for some period of time.
Moreover, in many of the more advanced computer systems which utilize pointing devices and provide for multitasking of operations, more than one program or process may be operating at the same time. This is usually accomplished by an operating system which allows one process to utilized the central processing ùnit (CPU) for a period, a second process to utilize the CPU for a ~econd period, and so on, the sharing of the CPU, hopefully being such that each process appears to ~he user to be running without interruption by the other ~0 processes. ~he operation of a such multitasking system requires many more levels of preemption and interrupts and often delays the redrawing of the cursor represen~ing the pointing device position for long periods of time.
Certain application programs which make use of pointing ~5 devices include utility programs for accelerating the movement of the cursor representing the position of the pointing device on the output display. If the interrupt utilized to redraw the cursor on`the output display is preempted during movement of the pointing device, the output for the pointing device 3~ described on the output display may well be substantially distorted.
~3~3~3~
1 It is, therefore, an object of the present invention to improve a computer operating system by decreasing the time utilized for pointing device updating.
It is another object of the present invention to provide an improved operating system for a computer including a mouse updating system which operates more rapidly than do those of prior art systems.
Another object of this invention is to improve the mechanics by which a pointer position is updated in a computer operating system.
Another object of the present invention is to provide a pointing device interrupt system for use in computers which operates only in response to actual movement of the pointing device.
An additional object of the present invention is to provide an arrangement for remembering the positions to which a pointing device has been moved during an interim in which the position of the device has not been updated on the display so that the path previously taken by the device may be drawn as it occurred during that interim.
~ .
::
: :
-3-: ~
~323~3~
SIJMMARY (:)F THE INVENTION
These and other objects of the invention are realized in an operating system in which the operating system reviews the present mouse position on a repeating basis and generates a system interrupt to update the pointing device position only in the case in which a change in the pointing device has occurred since the last review. In this manner, the system continues with its present operation until the mouse position changes so that the system need not update the mouse position or redraw the cursor on a constantly repeating timed basis.
This significantly reduces the operating system overhead time allotted to the operation of the mouse.
This is accomplished in a particular computer system by me~ory for storing condition signals indicative of the position of a pointing device and the condition of a button ~hereof, means for comparing present condition signals generated by a pointing device with the stored signals indicative of a previous condition of the pointing device, and ~eans responsive to the comparison of present condition ~0 ~i~nals generated ~y a pointing device with stored signals indicative o~ a previous condition of the pointing device for gQnerating a pointer interrupt signal only if a change in the pointer condition has occurred.
In a specific adaptation o~ the invention, an arrangement is provided for storing a number of adjacent pointer positions ... .
over a period o~ time during which the mouse interrupt operation is preempted and the operating system is attending to other operations so that when the system returns to the pointing device to indicate its present position, various intervening positions may also be properl~ dlsplayed.
~4-' . : .' , " ' ' ' ' ' ~ 32~39 1 The invention provides a computer display system for displaying graphical input data, said computer display system comprising an interruptable central processor unit ("CPU") for execu~ing a plurality of data processing operations, said CPU coupled to a frame buffer and to display means including a display for displaying a cursor and data provided by said CPU, and pointing means coupled to said CPU for generating a plurality of pointer signals, said computer display system comprising: sampling means coupled to said CPU for providing a plurality of sampled painter signals corresponding to at least one cursor position indicated by said pointer means; memory means coupled to said CPU for storing said sampled pointer signals at least until said CPU updates said frame buffer according to said 1~ pointer signals stored in said memory means, if a flag is set and the CPU receives an interrupt to service, said memory means create a history list by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the service o~ the interrupt, and comparison means coupled to said mem~ry means for comparing said sampled pointer signals with said pointer signals stored in said memory means, said -comparison means further setting'said flag when sai~d sampled pointer signals differ from said pointer~signals stored in ~5 said memory means, after the CPU has serviced the interrupt, said CPU retrieving the history list from said memory~means and updating said frame buffer and rèdrawing the cursor according to said pointer signals stored in said history list during the serviclng oE said in~errupc.
~g . .
~3~3~3~
1 The invention also provides a metho~ for displaying graphical input d~ta in a computer display system comprising an interruptable ~entral processor unit ("CPU") for executing a plurality of data processing operations, said CPU coupled to a frame ~uffer and to display means including a display for disp~aying a cursor and data provided by said CPU, and po-nting means coupled to said CPU
for generating a plurality o~ pointer signals, said method comprising the steps of: providing a plurality of sampled pointer signals correspondin~ to at least one cursor position indicated by said pointing means; storing said sampled pointer signals in mQmOry means at least until said CPU updates said frame buffe according to said pointer signals stored in said memory means; comparing said sampled 1~ pointer signals with said pointer signals stored in said memory means; setting a flag when said sampled pointer signals differ from said pointer signals stored in said memory means; if the flag is set and the CPU receives an interrupt to service, creati~g a history list in said memory ~0 means by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the servicing of the interrupt; and a~ter the CPU has serviced the interrupt, retrieving the history list rom said memory means and updating said frame buffer and redrawing the cursor according to said pointer signals stored in said history list during the servicing o~
said interrupt.
These and other features and advantages of the present invention will become apparent to those~skllled in the art upon reading the following detailed description in conjunction with the several figures of the drawing in which like designations have been used~for like components and operations throughout.
- , ~323~3~ -1 B~I~F D_SC~`-P,IO~ OF THE DRAWINGS
Figure 1 is a flow chart illustrating the operation of a portion of an operating system in accordance with the present invention;
~igure 2 is a flow chart illustrating the operation of a more sophisticated portion of an operating system in accordance with the present invention; and Figure 3 is a diagram of the infoxmation stored at a me~ory position in accordance with the invention.
:
:
' -6- ~ :
- : .
`` ~323~39 Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic rQpre~entati~ns of oper~ttons on d~ta blts wlthin a co~puter memory. These algorithmic descrip~ions and representations are the means used by those skilied in the data processing arts to most ef~ectively convey the substance of their work to others skilled in the art.
An algorithm is here, and generally, conceived to be a 5elf-consistent se~uence of steps leading to a desired result.
The 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 has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, howe~er, that all o~ these and similar terms are to be associated with ~o tha appropriate physical quantities and are merely convenient labels applied to these quantities.
Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator lS necessary OF desirable in most cases in any of the operations ~escribed herein which form part o~ the present invention; the operations are machine operations. Useful machlnes ~or 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 _7 _ 1~23439 1 operating a computer and the method of computation itself should be borne in mind~ The present invention relates to method steps for operating a compu~er in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals.
The present invention also relates to apparatus for performing these operations. This appara~us may be specially 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 given below.
~0 ~5 , ~23~39 1 D~TAILED DESCRIPTION OF THE INVENTION
As pointed out above, in the usual operating system utilizing a mouse or functionally similar pointing device, the mouse device generates interrupt signals approximately every one-fortieth of a second. Each of these signals causes the operating system to pause in its operation, sense the mouse position, store the new mouse position, redraw the cursor position, and return to the preceding operation. A
substantial amount of time is lost in system operation to the 1~ means by which the mouse position is updated since the operation occurs forty times each second.
Figure 1 illustrates a flow chart which may be used to explain the operation of the present invention which substantially reduces the delay in system operation due to mouse condition ùpdating. In a system in accordance with the invention, a mouse interrupt is not generated unless the mouse has either moved or the condition of its buttons has changed.
In the flow chart of Figure 1, the mouse input signal is first received at step 10. This signal, as indicated above, includes the information by which the mouse position and the condition of its associated buttons is determined. At step 12, the incoming mouse signal is compared to the last mouse position and condition. The last mouse position is, in accordance with the preferred embodiment of the invention, stored as an entry in an array in memory.
Figura 3 illustrates ~he information provided in a preferred embodiment of the invention to the particular memory position recording the last mouse condition. The information stored includes the X position of the mouse in absolute rectilinear coordinates, the Y position of the mouse in absolute rectilinear coordinates, the condition o~ a button ~9_ ~32343~
1 one, the condltion of a button two, the condition of a button threa, and an indication of the time at which the last mouse condition occurred. Depe..ding on the particular system and the particular mouse utilized, there may be one or more S buttons. The preferred embodiment utilizes a three-button mousel and one bit is s~ored for each button. ~s thers is a substantial body of prior art explaining various mouse arran~ements, no detailed description of a particular mouse is considered to be necessary to this description.
At a step 14, the result of the comparison which occurred at step 12 determines whether the operation ignores the present mouse condition or generates an interrupt to utilize the incoming ~ouse signals. If the condition of the mouse has not changed as indicated by the comparison with the stored mouse condition, then the operating system simply ignores the incoming mous~ signal and returns to review the following mouse signals at step 10. In this manner, the en ire mouse interrupt is bypassed if no change in mouse condition has occurred. If, on the other hand, ~he mouse condition has ~o changed, the program mo~es to a step 16 to set a flag indicating that change in mouse condition has occurred. The change flag is set so that the mouse condition positions in memory are not overwritten during the process by incoming ~ouse condition signals.
The program next moves to a step 18 at which a determination is made whether one-fortieth of a second has passed since the last mouse condition update. I~ one-fortieth of a second has not passed since the last mouse condition update, the program simply recyales to s~ep 10 to loo~ for a new ~ouse conditlon. In this manner, a mouse interrupt can be generated no more often than each one-fortieth of a second.
If one-fortieth o~ a second has passed since the Iast mouse , ' .
13234~9 1 condition update, the program moves to a step 20 to generate a mouse interrupt.
When a mouse in~errupt is generated, the mouse interrup~
subroutine or function is entered at a step 22. This S subroutine is shown to the right in Figure 1 of the drawing.
The subroutine moves ~o a step 24 to read the new mouse position an~ the condition of the mouse buttons. The subroutine next moves to a step 26 to update in memory the mouse position, the button conditions, and the time the input occurred by providing to memory information in accordance with the illustration of Figure 3. Finally, the subroutine moves ~o step 28 to erase and redraw the mouse cursor in the frame buffer of the computer system ~not shown in the drawings) so that the mouse cursor position may be scanned to the output 1~ display. When step 28 is completed, the subroutine moves to a step 30 to clear the change flag previously set and then to a step 32 to return to the main program at step 10.
The advantages of the invention will be apparent to those skilled in the art. Rather than having to interrupt the O operation of the CPU each one-fortieth of a second, the present arrangement allows the updating to occur only upon an actual change in the mouse condition. Thus, it is not necessary to update the mouse position and the button conditions in memory each one-fortieth o~ a second nor is it ~5 necessary to erase and redraw the mouse cursor in the frame buffer of the computer system each one-fortieth of a second.
This provides a substantial saving in system operation time.
The arrangement of this invention may be used to more accurately draw the positions traversed by a mouse during intervals in which the mouse interrupt operation is preempted by interrupts of a higher level or by other processes of a multiprocessing operating system. Those ~amiliar with the 1323~39 1 operation of a mouse with a computer having a bitmapped outp~t display will recognize that ~he movement of the mouse is often less than optimal. That is, ~he mouse sometimes moves from physical position to physical posi~ion without all of the intervening positions being recorded on the output display.
This occurs because the CPU is preempted during various intervals of the movement of the mouse and, in prior art systems, mouse interrupts are generated only each one-fortieth of a second. If the mouse moves during a period when the CPU
is preempted by a higher level interrupt or another process, then intervening positions of the mouse do not find their way to the output display.
This may have no effect on opexation. For example, in a case where the ~ouse is merely moving from position to position, all that really needs to be recorded is the last position. However, if a graphic figure is being described by the mouse during the period of the preemption, the shape may be distorted: for example, the beginning and end points of an arc may be joined as a straight line if the mouse interrupt is preempted during the drawing of the arc by a process running in the background in a multiprocessing system.
~nother situation in which a mouse interrupt is preempted and distortion occurs is that in which the particular application program includes software which accelerates the apparent speed of the mouse across the output display. In such situations, an interrupt which preempts the mouse interrupt often causes the movement o~ the mouse cursor on the output display to be severely distorted because the points describing the mouse path are not drawn at the proper time intervals.
A second embodiment of the invention is illustrated in the flow chart of Figure 2. The arrangement illustrated in 132~439 1 Figure 2 corrects these problems of the prior art. The arrange~ent utilizes an expan~ed memory mapping facility comprising an array cf memory mapped tables to record the positions o~ the mouse during periods in which the mouse interrupt is preempted and then causes ~he display of all of those positions to occur at the proper rate after the preempting interrupt has been co~pleted.
This embodiment of the invention may be conveniently utilized in computer systems which utilize the Unix operating system and run anothe- operating system such as MSDOS as a window in the Unix system. such a system is exemplified by the Sun 386i Computer manufactured by Sun Microsystems, 2550 Garcia Avenue, Mountain View, California.
In the preferred embodiment of the arrangement, the main portion of program, that illustrated to the left in Figure 2, is carried out by the Unix operating system while the mouse interrupt function is a process of the MSDOS operating system running as a window urder the ~nix operating system.
The program illustrated is èntered after the initialization of a memory mapped position which contains the condition o~ the mouse last displayed. Moreover, a series of memory m~pped positions comprising an array of what are referred to hereinafter as mouse history records are also initialized before the first step of the program illustrated in Pigure 2. In a preferred embodiment of the invention, these mouse history re~ords are chronologically arranged in an array, each position of which is sufficient to contain four thirty-two bit words. These four word positions~each represent the information illustrated in Figure 3~ of the drawings for one mouse condition.~ The program begins at a step 40 where a new mo~se condition signal is received. The program moves to step 42 at which a determination is made : ~ :
* Tra~e Mark -13-~, .
~323~
1 whether one-forti~th of a second has passed since the last mouse interrupt occurred. To determine this, a comparison is made ~ith the timestamp signal of the memory mapped position carrying the last mouse position displayed. If the prescribed period has not passed, t~e program simply recycles to look at the incoming mouse condition signal at step ~0; thus mouse interrupts may only occur each one-fortieth of a second. If the appropriate period has passed, the program moves to step 44 at which the new mouse condition signal is compared to the last recorded mouse condition signal to determine if the mouse oondition has changed. With tAe first signal input to the system, the condition has changed, of course.
If the mouse condition has changed, the program moves to a step 46 at which a determination is made whether either a change flag has been set or a history list exists. If neither condition obtains (as with an initial mouse condition signal), the program moves to a step 48 to write the new mouse condition into the initialized memory mapped area, to set the mouse interrupt change flag, and to initiate a mouse interrupt.
As discussed above, in the preferred embodiment of the invention, the mouse interrupt is programmed as a separate ~unction or subprogram (depending on the computer language involved). Such a function is illustrated to the right in the diagram of Figure 2. The mouse interrupt function begins at step 50 and moves to a step 52 at which the mouse memory mapped area is read. From this information, the new position for the cursor i8 determined; and the program moves to step 54 to erase and redraw the mouse cursor in the ~rame buffer so that the new position may be scanned to the output display.
The function then moves to step 56 at which the change flag previously set is ~leared and returns from the mouse interrupt - ~
~323~3~
1 at step 58 to step 40 of the main program In the preferred embodiment of the invention, the change flag is stored in the memory mapped area and removed ~y the action of the MSDOS
operating system in carrying out the mouse interrupt seq~ence.
When the next mouse condition signal is received, if the mouse condition has not changed and one-fortieth of a second has passed, the program moves through the steps 40, 42, and 44 to a step 60 to determine whether a history list of positions, ~i.e., positions which have not yet been written to the display) exists. At this point, no history list exists because the first mouse condition signal (the last to occur) generated an interrupt and that mouse condition was stored and written to the frame buffer. Consequently, the program moves from step 60 to recycle to the beginning at step 40; and no mouse interrupt is generated thereby freeing the system of the necessity of restoring the mouse information and redrawing the cursor.
If the next mouse condition signal indicates a change has occurred and one-fortieth of a second has passed, the program proceeds through steps 40, 42, and 44 to step 46 at which it is determined that no change flag is set and no history list e~ists. Therefore, the program moves to step 48 to initiate the ~ouse interrupt function described above, set the change ~lag, store the new mouse condition in the memory mapped area, and (a~ter the interrupt) clear the ~hange flag and recycle to step 40. Thus, the operation of the system in response to a change in the mouse condition when no history list exists is essentially like that illustrated in Figure 1.
If on the other hand, sver one-fortieth of a second has passed and a mouse interrupt (as described above~ has been initiated so that the change flag is set, and the mouse interrupt is preempted for some reason so that~ it has not been .
~323~39 1 com~ieted when a mouse condltion ls received which is changed from a last mouse condition, then the program moves through steps ~0, 42, and 44 to step 46 at which ~he determination indicates that the change flag is set. This moves the program to a step 62 at which a new history record is created in the history list array in memoxy re~erred to above. This record contains the same in~ormation as that illus~rated in ~igure 3.
The program then moves to s~ep 60 where it is determined that a history now does, in fact, exist.
Since a history list exists, indicating that there are mouse conditions stored which have not been displayed, the program moves to a step 64 at which a determination is again made whether the change flag has been set. In the present example, the flag has been set by the preempted mouse interrupt, so the program recycles to the beginning at step 40 leaving a first mouse history record stored in the mouse history list.
The program continues to treat incoming mouse condition signals in the same manner, storing those new condition ~o signals which indicate a change from the last recorded mouse condition o~ the history list in the history list and recycling until the process preempting the mouse interrupt ~inally clears.
When the preempting condition ends and the mouse 2S interrupt clearsl the change flag is cleared in step 56 of the mouse interrupt function. Consequently, when the next mouse signal arrives at step 40, it is processed to step 44. If this new signal indicates a change in mouse condition, the program moves to step 46, finds no change flag but an existing history list, and moves to step 62 to record the new mouse condition signal in the history list.
~23~3~
1 ihe program then moves to step 60. The progra~ also moves directly to step 60 from step 44 if the new mouse condition signal indicates no change from t~e last signal recorded on the history list. ~t step 60, the program determines that a history list exists and moves to step 64 where a determination is made that the change flag is not set.
This moves the program to a step 66.
At step 66, the time interval between the last mouse condition recorded by the mouse interrupt function (the interrupt which has just cleaved) and the time of the first record stored in history is evaluated. The actual time since the last interrupt ( 1) is compared to the time ~ 2) between the timestamp on the las~ recorded interrupt mouse and the first mouse condition in the history list. The timestamp of the first event stored in the history list and the timestamp of the last mouse interrupt may be used to determine this interval, or the timestamps in the history list may be recorded on a delta (change in time) basis. Consequently, a comparison of the last mouse position generated by the mouse interrupt and the first stored event in the history list indicates whether an actual time e~ual to or greater than that this delta time has passed. If it has passed, then the first mouse condition of the history list condition is deleted from the history list and transferred to the memory mapped position at a step 68. From step 68, the program moves to step 48 to initiate the mouse interrupt sequence. On the other hand, if the time interval is not yet egual to or greater than the delta time between the last mouse condition written to the frame buffer and the first mouse condition in the history list, the program merely recycles from step 66 to the beginning at step 40 so that the first history is delayed until an appropriate time interval has passed.
~32~39 1 The use of the history list referred to and outlined in operation in Figure 2 provides, first, that all preempted changes of the mouse condition taking place after one-fortieth of a second has passed are stored for later recording. This eliminates the problem in which intervening mouse positions are omitted during conditions of preemption. The history list as implemented in the present invention also assures that mouse positions stored during a state in which the mouse interrupt is preempted are executed in proper time sequence so that distortions which might be caused by mouse accelerations utility programs are eliminated.
Although the present inven~ion has been described in terms of a preferred embodiment, it will be appreciated that various modifications and alterations might be made by those lS skilled in the art without departing from the spirit and scope of the invention. The invention should therefore be measured in terms of the claims which follow.
~5 , :
Claims (17)
1. A computer display system for displaying graphical input data, said computer display system comprising an interruptable central processor unit ("CPU") for executing a plurality of data processing operations, said CPU coupled to a frame buffer and to display means including a display for displaying a cursor and data provided by said CPU, and pointing means coupled to said CPU for generating a plurality of pointer signals, said computer display system comprising:
sampling means coupled to said CPU for providing a plurality of sampled pointer signals corresponding to at least one cursor position indicated by said pointer means;
memory means coupled to said CPU for storing said sampled pointer signals at least until said CPU updates said frame buffer according to said pointer signals stored in said memory means, if a flag is set and the CPU receives an interrupt to service, said memory means create a history list by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the service of the interrupt; and comparison means coupled to said memory means for comparing said sampled pointer signals with said pointer signals stored in said memory means, said comparison means further setting said flag when said sampled pointer signals differ from said pointer signals stored in said memory means, after the CPU has serviced the interrupt, said CPU
retrieving the history list from said memory means and updating said frame buffer and redrawing the cursor according to said pointer signals stored in said history list during the servicing of said interrupt.
sampling means coupled to said CPU for providing a plurality of sampled pointer signals corresponding to at least one cursor position indicated by said pointer means;
memory means coupled to said CPU for storing said sampled pointer signals at least until said CPU updates said frame buffer according to said pointer signals stored in said memory means, if a flag is set and the CPU receives an interrupt to service, said memory means create a history list by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the service of the interrupt; and comparison means coupled to said memory means for comparing said sampled pointer signals with said pointer signals stored in said memory means, said comparison means further setting said flag when said sampled pointer signals differ from said pointer signals stored in said memory means, after the CPU has serviced the interrupt, said CPU
retrieving the history list from said memory means and updating said frame buffer and redrawing the cursor according to said pointer signals stored in said history list during the servicing of said interrupt.
2. The computer display system as set forth in claim 1 wherein said sampling means further provides a plurality of sampled switch signals produced by switch means disposed on said pointing means, said sampled switch signals corresponding to at least one cursor position indicated by said pointing means.
3. The computer display system as set forth in claim 1, wherein said memory means further stores said sampled switch signals at least until said CPU updates said frame buffer according to said switch signals stored in said memory means.
4. The computer display system as set forth in claim 1, wherein said comparison means further compares said sampled switch signals with said switch signals stored in said memory means, said comparison means further setting said flag when said sampled switch signals differ from said switch signals stored in said memory means.
5. The computer display system as set forth in claim 3, wherein if the flag is set and the CPU receives an interrupt to service, said memory means sequentially stores said sampled switch signals corresponding to said cursor positions indicated by said pointing means during the servicing of the interrupt.
6. The computer display system as set forth in claim 1, wherein said history list further comprises said sequentially stored sampled switch signals corresponding to said cursor positions indicated by said pointing means during the servicing of the interrupt.
7. The computer display system as set forth in claim 1, wherein after the CPU services the interrupt, said CPU
retrieves the history list from said memory means and updates said frame buffer and redraws the cursor according to said switch signals corresponding to said intended cursor positions stored in said history list during the servicing of said interrupt.
retrieves the history list from said memory means and updates said frame buffer and redraws the cursor according to said switch signals corresponding to said intended cursor positions stored in said history list during the servicing of said interrupt.
8. The computer display system of claim 1, wherein said sampling means samples said pointer signals and said switch signals at a predetermined rate.
9. The computer display system as set forth in claim 1, wherein said computer display system further comprises clearing means coupled to said comparison means for clearing said flag after said frame buffer has been updated and said cursor positions recorded in said history list have been displayed.
10. A method for displaying graphical input data in a computer display system comprising an interruptable central processor unit ("CPU") for executing a plurality of data processing operations, said CPU coupled to a frame buffer and to display means including a display for displaying a cursor and data provided by said CPU, and pointing means coupled to said CPU for generating a plurality of pointer signals, said method comprising the steps of:
providing a plurality of sampled pointer signals corresponding to at least one cursor position indicated by said pointing means;
storing said sampled pointer signals in memory means at least until said CPU updates said frame buffer according to said pointer signals stored in said memory means;
comparing said sampled pointer signals with said pointer signals stored in said memory means;
setting a flag when said sampled pointer signals differ from said pointer signals stored in said memory means;
if the flag is set and the CPU receives an interrupt to service, creating a history list in said memory means by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the servicing of the interrupt; and after the CPU has serviced the interrupt, retrieving the history list from said memory means and updating said frame buffer and redrawing the cursor according to said pointer signal stored in said history list during the servicing of said interrupt.
providing a plurality of sampled pointer signals corresponding to at least one cursor position indicated by said pointing means;
storing said sampled pointer signals in memory means at least until said CPU updates said frame buffer according to said pointer signals stored in said memory means;
comparing said sampled pointer signals with said pointer signals stored in said memory means;
setting a flag when said sampled pointer signals differ from said pointer signals stored in said memory means;
if the flag is set and the CPU receives an interrupt to service, creating a history list in said memory means by sequentially storing all sampled pointer signals corresponding to said cursor positions indicated by said pointing means during the servicing of the interrupt; and after the CPU has serviced the interrupt, retrieving the history list from said memory means and updating said frame buffer and redrawing the cursor according to said pointer signal stored in said history list during the servicing of said interrupt.
11. The method as set forth in claim 10, wherein providing said plurality of sampled pointer signals further comprises a plurality of sampled switch signals corresponding to at least one cursor position indicated by said pointing means.
12. The method as set forth in claim 10, wherein storing said sampled pointer signals further comprises storing said sampled switch signals at least until said CPU
updates said frame buffer according to said switch signals stored in said memory means.
updates said frame buffer according to said switch signals stored in said memory means.
13. The method as set forth in claim 10, wherein comparing said sampled pointer signals further comprises comparing said sampled switch signals with said switch signals stored in said memory means, and further setting said flag when said sample switch signals differ from said switch signals stored in said memory means.
14. The method as set forth in claim 13, wherein if the flag is set and the CPU receives an interrupt to service, creating said history list further comprises sequentially storing said sampled switch signals corresponding to cursor positions indicated by said pointing means during the servicing of the interrupt.
15. The method as set forth in claim 10, wherein after said CPU has serviced the interrupt, retrieving the history list from said memory means and updating said frame buffer and redrawing the cursor according to said switch signals stored in said history list during the servicing of said interrupt.
16. The method as set forth in claim 12, wherein providing said sampled pointer signals and said switch signals occurs at a predetermined rate.
17. The method as set forth in claim 10, wherein said flag is cleared after said frame buffer has been updated and said cursor positions recorded in said history list have been displayed.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28829888A | 1988-12-22 | 1988-12-22 | |
US288,298 | 1988-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CA1323439C true CA1323439C (en) | 1993-10-19 |
Family
ID=23106535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA000612528A Expired - Fee Related CA1323439C (en) | 1988-12-22 | 1989-09-22 | Memory mapped mouse |
Country Status (5)
Country | Link |
---|---|
JP (1) | JPH02264321A (en) |
KR (1) | KR960009829B1 (en) |
CA (1) | CA1323439C (en) |
GB (1) | GB2226432B (en) |
HK (1) | HK117793A (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3002302B2 (en) * | 1991-07-25 | 2000-01-24 | キヤノン株式会社 | Data processing device |
FR2719685A1 (en) * | 1994-05-05 | 1995-11-10 | Ben Achour Camille | Computer interface which permits pointing device to simulate mouse function |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0171747A3 (en) * | 1984-08-14 | 1989-02-01 | Metaphor Computer Systems | Cordless intelligent mouse |
-
1989
- 1989-08-24 GB GB8919287A patent/GB2226432B/en not_active Expired - Fee Related
- 1989-09-22 CA CA000612528A patent/CA1323439C/en not_active Expired - Fee Related
- 1989-12-22 KR KR89019265A patent/KR960009829B1/en not_active IP Right Cessation
- 1989-12-22 JP JP1331445A patent/JPH02264321A/en active Pending
-
1993
- 1993-11-04 HK HK1177/93A patent/HK117793A/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
GB2226432A (en) | 1990-06-27 |
KR960009829B1 (en) | 1996-07-24 |
GB2226432B (en) | 1993-02-03 |
GB8919287D0 (en) | 1989-10-04 |
JPH02264321A (en) | 1990-10-29 |
KR900010603A (en) | 1990-07-09 |
HK117793A (en) | 1993-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4823108A (en) | Display system and memory architecture and method for displaying images in windows on a video display | |
JP3924020B2 (en) | System and method for fine and coarse grain control of zoom in the display of one-dimensional data sets | |
US4975690A (en) | Method for concurrent data entry and manipulation in multiple applications | |
US5745719A (en) | Commands functions invoked from movement of a control input device | |
US5491782A (en) | Method and apparatus for loosely ganging sliders on a user interface of a data processing system | |
EP0052753B1 (en) | Keystroke queueing arrangement in a text processing system | |
US5778442A (en) | Method and apparatus for buffering data in a computer system | |
EP0561684B1 (en) | System and method for scrolling control | |
CN1153169C (en) | Device and method for recognizing characters input from touch screen | |
EP0318154B1 (en) | A method of operating a computer graphics system | |
US5261054A (en) | System for storing a history of sampled pointer signals when a pointer interrupt routine is interrupted by a higher priority interrupt | |
CA1323439C (en) | Memory mapped mouse | |
US4937780A (en) | Single instruction updating of processing time field using software invisible working registers | |
US6342894B1 (en) | Icon display method | |
Goodfellow | WHIM, the window handler and input manager | |
JPH06348250A (en) | Smooth text display system | |
EP0352065B1 (en) | Text editing device | |
JPH02150919A (en) | Display system for state display row at the time of dividing and displaying | |
GB2175112A (en) | Sequence control method and apparatus | |
JP3147233B2 (en) | Document processing method and apparatus | |
JP3612202B2 (en) | WINDOW DISPLAY CONTROL DEVICE AND STORAGE MEDIUM CONTAINING PROGRAM FOR IMPLEMENTING THE WINDOW DISPLAY CONTROL DEVICE | |
JPH0693186B2 (en) | Multiple information display control method | |
JPS6294891A (en) | Display unit | |
JPS63158622A (en) | High speed accessing method for circulative memory buffer | |
JPS62276589A (en) | Scrolling system for display unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MKLA | Lapsed |