(19)
(11) EP 0 229 986 B1

(12) EUROPEAN PATENT SPECIFICATION

(45) Mention of the grant of the patent:
02.03.1994 Bulletin 1994/09

(21) Application number: 86117314.4

(22) Date of filing: 12.12.1986
(51) International Patent Classification (IPC)5: G09G 1/00

(54)

Cursor circuit for a dual port memory

Kursorschaltung für einen Speicher mit zwei Eingängen

Circuit de curseur pour une mémoire à deux entrées


(84) Designated Contracting States:
DE FR GB IT

(30) Priority: 17.01.1986 US 820487

(43) Date of publication of application:
29.07.1987 Bulletin 1987/31

(73) Proprietor: International Business Machines Corporation
Armonk, N.Y. 10504 (US)

(72) Inventors:
  • Muhich, John Stephen
    Austin Texas (US)
  • Thornley, Joseph Stoddard
    Round Rock Texas 78681 (US)

(74) Representative: Burt, Roger James, Dr. 
IBM United Kingdom Limited Intellectual Property Department Hursley Park
Winchester Hampshire SO21 2JN
Winchester Hampshire SO21 2JN (GB)


(56) References cited: : 
US-A- 4 566 000
   
  • IBM TECHNICAL DISCLOSURE BULLETIN, vol. 26, no. 10B, March 1984, pages 5622-5623, New York, US; A.C. GAY: "Cursor display on raster graphic devices"
  • IEEE COMPCON SPRING '85 DIGEST OF PAPERS, San Francisco, California, 25th-28th February 1985, pages 276-279, IEEE, New York, US; K. GUTTAG et al.: "New silicon to solve fundamental graphics problems"
   
Note: Within nine months from the publication of the mention of the grant of the European patent, any person may give notice to the European Patent Office of opposition to the European patent granted. Notice of opposition shall be filed in a written reasoned statement. It shall not be deemed to have been filed until the opposition fee has been paid. (Art. 99(1) European Patent Convention).


Description


[0001] This invention relates to video display systems and more specifically to a video display system providing all-points-addressable functions implemented using dual ported memory.

[0002] Video display screens typically provide a movable marker, referred to as a cursor, to provide a visible indication as to the current position of interest on the display screen. Traditionally, this function has been implemented by either the host system or the display logic circuitry. Lower cost, lower performance systems have used software to create and manage the cursor while more performance orientated systems have used more expensive logic circuits with the intention of minimising system software overhead.

[0003] It is nevertheless desirable to minimise software overhead in any type of system, and a low cost solution to the problem of cursor display is accordingly an object of the present invention.

[0004] One approach to the problem is disclosed in the IBM Technical Disclosure Bulletin, Volume 26, No. 10B, March 1984, on pages 5622 and 5623. Here an existing storage array, used normally for area fill operations, is used between such operations to store cursor data. While clearly not adding substantially to the cost of the system, the arrangement has the disadvantage that the two functions of the shared storage array can interfere with each other, resulting for example in partial deletion of the cursor.

[0005] According to the invention there is provided a video display system of the type having a digital image store arranged to store image data in the form of a bit map constituted by data lines representing lines of picture elements of a display image, said image store being operable under the control of a digital processor to supply stored image data line by line to a computer display device to cause an image including a cursor to be displayed, characterised in that said image store has a first port for transmission of data to and from said processor and a second port for transmission of image data to said display device and that said processor is adapted, in response to cursor position data indicating that a subsequent line, to be displayed after the current line, includes a cursor, to retrieve image data from such subsequent line through said first port and combine such data with cursor pattern data to develop composite image data representing the superimposition of the cursor on the image, to replace the image data in the data line corresponding to said subsequent line with said composite image data for transmission to said display device, and to restore the replaced data to said data line after delivery of the composite image data to said second port for transmission thereby preserving the original bit map data.

[0006] In order that the invention may be well understood, a preferred embodiment thereof will now be described with reference to the accompanying drawings in which:

Figure 1 is a block diagram of the display system;

Figure 2 is an illustration of a prior art;

Figure 3 is an illustration of the cursor technique according to the present invention;

Figure 4 is a flow chart depicting the sequence of operations to generate a cursor image and video formatting; and

Figure 5 is an illustration of a display screen and a cursor rectangle positioned on the screen.



[0007] A cursor function implemented in logic circuits is highly desirable in high performance video displays systems to minimise system software overhead. Typical implementations of this function, however, are relatively expensive. This invention provides the desired cursor function, in a unique way and with very low circuitry cost.

[0008] Basic video formatting in a raster based video display system consists of reading each scan line of the bit map, a memory which contains the display image, serialising the bit map in synchronisation with the electron beam scanning of the display screen, and outputting the resultant serial data stream to control the beam intensity. Each bit of the bit map is called a pixel and is the smallest addressable display element on the screen or in bit map.

[0009] Video formatting in this display is controlled by the scan line counter. The counter is incremented after the writing of each scan line to the screen and is reset at the end of every frame. The counter thus describes the current Y position that is being written n the screen at any instant in time.

[0010] The cursor is generated during the video formatting operation. In Figure 1, this is accomplished by a micro-processor 6 executing microcode.

[0011] In Figure 3, the curso position on the screen is defined by two registers, the X curso position register 13 and the Y cursor position register 14. These registers 13 and 14 are loaded and maintained by the host system in accordance with the desired screen position of the cursor, representing X and Y screen coordinates respectively.

[0012] During video formatting, a comparison of the Y cursor position register 14 with the scan line counter 16 determines whether video formatting is within the range of the cursor 15.

[0013] The actual size and shape of the cursor image is defined by the host system and is programmable within certain limitations. The host system establishes the pattern of pixels to be used as the cursor, and stores that pattern within a specific rectangular block of bits in a portion of the bit map 8 that is not visible on screen (the hidden area). The size and shape of the stored pattern is limited only in that it must lie within the specified rectangle. This invention manipulates the entire rectangle as though it were the cursor. This entire area of the cursor pattern is logically combined with the corresponding displayable area of the bit map 7 to produce the desired cursor on the screen.

[0014] The technique for displaying the cursor, defined by the host system, requires that the source of the serialized bit stream be efficiently changed from one area of the bit map to another at the exact instant the beam reaches the desired cursor position and two or more areas of the bit map to be logically combined and the result saved. In the embodiment to be described these functions are performed conveniently by the use of VIDEO RAM configured in a manner disclosed in our copending European Patent Application No. EP-A-O 191 280 and a micro-processor. A suitable video RAM would be a Texas Instrument TMS 4161. Hereinafter, the VIDEO RAM as configured will be referred to as a bit addressable multi-dimensional array memory or BAMDA.

[0015] Refer to Figures 3 and 4 for the discussion of cursor image generation. Cursor processing begins one scan line before the line in which the cursor is to be displayed. This step in cursor processing is termed "preconstruction of the cursor". In Figure 4, a cursor image is created by steps 56-68, by logically combining the cursor pattern(s) (Figure 3) 22a and 22b with the bit map data at the location 21 in which the cursor is to be displayed. This process is done one line at a time for each scan line 18 and the respective cursor pattern line 20a and 20b as the video formatting proceeds from scan line to scan line down the bit map. The resultant pattern is stored in an assigned cursor save area 17 in the hidden bit map 8. This process does not preconstruct more than one line of cursor image at a time. However, one skilled in the art could preconstruct the entire cursor image before it is needed by the video formatter.

[0016] During the horizontal blanking time, the period just before the scan line for which the cursor save image 17 was created, the cursor save image 17 is exchanged with the bit map data 19 of the scan line 18 at the horizontal position 21 in which the cursor pattern is to appear. With the cursor save image 17 now inserted into the scan line 18, the entire scan line 18 is loaded into the Video RAM serial output port (Figure 1) 12. It is important to note that this load operation takes only one memory cycle to load the entire scan line 18 of the 1024 pixels. This is accomplished very rapidly by virtue of the video ram serial output port 12. The serial video output data stream contains a cursor image, combined with the bit map data, and thus appears on the display screen as if the cursor pattern were actually merged into the display bit map.

[0017] As seen in steps 48-54 of Figure 4, immediately after loading the video RAM serial output port, the original scan line is restored to its original state using the memory data bits which the exchange operation saved, thus preserving the bit map data.

[0018] In Figure 1, all system I/O data 11 must pass through the micro-processor 6, and therefore, the bit map update from the system I/O channel 11 is prevented by the micro-processor 6 during the exchange and resort process. This ensures that no update is erroneously performed on cursor data instead of bit map data.

[0019] The operations described above (Figure 4) are repeated for each scan line until the scan line counter indicates that maximum depth of the cursor has been reached, at which time normal video formatting 42, 46 and 44 resumes.

[0020] The above invention provides the following functions with minimal circuitry cost and system overhead:

1. Logical merging of a cursor pattern(s) with the serialized video data stream. This preserves bit map data integrity at all times and thus reduces the system software overhead usually associated with temporarily removing the cursor pattern from the bit map before each update procedure.

2. The cursor position is controlled simply by changing the content in the X and/or Y cursor position registers, which contain the actual X and Y screen coordinates for the cursor. This is as opposed to requiring host system to access the bit map itself and perform the necessary translation and memory masking operations involving arbitrary bit alignments.

3. The micro-code overhead to preform the cursor preconstruction is processed in the background by virtue of the video ram architecture.

4. The cursor is in the bit map 7, one line at a time, for a very short period of time. Because of this, the bit map 1 is available for system update most of the time giving the impression that the cursor is generated external to the bit map.



[0021] The following is a more detailed description of the invention.

[0022] Figure 1 is a block diagram of the display system containing the present invention.

[0023] Communication between the host system and the display circuitry is via the system I/O channel 11.

[0024] In the preferred embodiment, the bit map 1 is a special BAMDA memory array organized as 1024 lines of 1024 bits each. The bit map 1 possesses the following special property: it is accessible from one to sixteen bits at a time, with the resultant access beginning on any arbitrary bit boundary and extending for one to sixteen bits in either the vertical (down) or horizontal (right) direction. The starting point for BAMDA access is specified by an X register 2 and a Y register 3, providing a ten bit X and Y rectilinear coordinate respectively on address lines 4 and 5.

[0025] Micro-processor 6 is a microprogrammed logic sequencer such as an Advanced Micro Devices part No. 29226. This micro-processor 6 includes a set of general purpose registers, an arithmetic/logic unit and a control unit. The micro-processor 6 is controlled in accordance with micro-instructions stored in high speed Read-Only-Memory (see Figure 4). The micro-processor 6 controls all display system operations including the reading and writing of data to and from the bit map 1. The micro-processor 6, through its registers and logic unit, also provides the ability to logically modify the contents of bit map 1 or the data being written or read by the system software.

[0026] The bit map 1 is divided into two logical areas, the visible display memory 7 and the hidden display memory 8. In the preferred embodiment, visible bit map 7 is 768 lines of 1024 bits each and represents all of the bits that are directly mapped to the display screen 10 as pixels, i.e. it is the visible bit map 7 with each bit corresponding to a specific pixel location of the display screen 10. The hidden area 8 is the remaining 256 lines of 1024 bits each and is physically identical, and contiguous to the visible area 7 and also represents a bit map of pixels. The hidden area, however, is not scanned and mapped directly to the display.

[0027] System may read or modify the bit map 1 either by reading or writing the data register 9 directly, under control of the micro-processor 6, or by requesting the micro-processor 6 to perform a micro-coded sequence of operations in accordance with its pre-programmed micro instructions.

[0028] The following will describe the unique circuit features and micro-coded operations that have been implemented to allow the system to control and display a sophisticated cursor image with a minimum of system software processing overhead.

[0029] To fully explain the novelty of the present invention, the prior art will be discussed. Figure 2 illustrates a classical prior art logic circuit approach to providing cursor control.

[0030] The cursor, requires four components 28, 29, 30, and 31 that are not needed when the cursor is implemented as described in this invention.

[0031] Cursor control logic 30 uses the outputs of X and Y cursor position registers 28 and 29 to determine the precise time in which to merge the cursor pattern 31 into the serial video data 33. This merge process must be done with care to avoid skewing of the serial data.

[0032] Block 31 is a memory/register large enough to contain the cursor pattern. The point being, that there must be data available for insertion at all times without any latency.

[0033] Blocks 28 and 29 are registers loaded by system software. The contents of the two registers are used to position the cursor on the screen 32. These registers, like block 31, must have their outputs available to block 30 at all times. For this reason, registers 28 and 29 cannot reside in the hidden area 26 of the bit map.

[0034] Figure 3 provides the additional details of the present invention.

[0035] The present invention provides complete cursor functioning with a minimum of circuitry.

[0036] The system must specify three pieces of information to enable the cursor to be displayed: 1. The exact nature of the cursor (size and shape). 2. The desired position of the cursor on the display screen. 3. The type of logical merge of the cursor pattern with the bit map pixels.

[0037] Specification of the size and shape is accomplished by writing a bit pattern in a specified, unused, area of the hidden bit map 8, called the cursor pattern area 22a and 22b. This operation need only be performed once unless the cursor pattern is to be changed or power removed from the bit map. Loading of the cursor pattern area can be accomplished via a write operation from the system I/O channel 11 or a copy from any other area of the bit map 1. The maximum size of the cursor is limited by the size of the rectangular block of bits assigned to this function by the micro-processor 6 microcode. The maximum horizontal assignable size is limited by the display circuit speed. The width of the cursor dictates the number of bit map 1 memory cycles required to complete cursor processing. If the width of the cursor is excessive, severe timing problem occur. The technique implemented is assumed to have a cursor pattern area 22a and 22b of sixty four lines of forty eight bits each. This allows a maximum cursor image on the display screen 10 of forty eight pixels wide by sixty four pixels high.

[0038] The precise location of the cursor is specified by the value contained in the two cursor position registers 13 and 14, which are two unused 16 bit words in the hidden bit map 8. To establish the position 23 (Figure 5) of the cursor rectangle 15, in screen coordinates, system software simply writes the required value to each of these fixed locations 13 and 14 in the hidden portion 8 of the bit map 1. The micro-processor 6 treats these two locations as dedicated registers, the X cursor position register 13 and the Y cursor position register 14.

[0039] At this point, no further system involvement is required to display the cursor. Movements of the cursor requires only that the system updates either or both the X cursor position register 13 or the Y cursor position register 14.

[0040] To complete the requirements for maintenance and control of the cursor, two additional elements which reside in the hidden bit map are needed.

[0041] A 16 bit word location is assigned to hold the current scan line position pointer. This word is referred to as the "scan line counter" 16. This register 16, which is used for cursor control and video processing, is cleared during vertical blanking period of the CRT, and incremented by 1 during each horizontal blanking period.

[0042] Finally, a cursor save area 17 must be dedicated in the hidden bit map to hold an preconstructed cursor scan line image. This, in the preferred embodiment, is a 48 bit wide by one bit high rectangular block and is used to store one line at a time of a cursor image. The micro-processor 6 uses this area during cursor processing (Figure 4).

[0043] Video formatting is controlled by the micro-processor 6 and consists primarily of managing the conversion of scan lines to serial video output data, timing and control of CRT synchronization signals.

[0044] Figure 4 illustrates the microcode executed by the micro-processor 6 during video formatting, the value of the scan line counter and the Y cursor position register are compared to detect cursor range 46. If the comparison shows that the cursor should start on the next scan line 18, then the bit map data 19 is logically combined with the cursor pattern 20a and 20b and stored in the cursor save area 17 of hidden memory 8. To accomplish this, the 48 bits 19 of the scan line that will be affected by the cursor are read from the visible bit map 7 and saved. That same data is then logically ANDed with cursor pattern 20a and then XORed with cursor pattern 20b and then the result is placed in the cursor save area 17. The starting bit 21 of the affected scan line area 19 is provided by the X cursor position register 13. Other ways and sequences of doing the logical function(s) should be apparent to those skilled in the art.

[0045] Now the bit map data 19 has been fully merged with the cursor pattern 20a and 20b and is stored in the cursor save area 17.

[0046] When it is time to load the next scan line into the video RAM serial output port 12, the cursor image in the temporary save area 17 is exchanged with the bit map data 19. After the exchange, the merged bit map data and cursor image data reside in the scan line 18 that is to be displayed next. The scan line 18 is now ready to be displayed on the screen and the entire scan line is loaded into the video RAM serial output port 12 during horizontal blanking. It is then serialized and sent to the display 10.

[0047] Once the scan line 18 is loaded into the video RAM serial output port 12, the original bit map data is restored.

[0048] Between the time that the merged cursor data in the cursor save area 17 is exchanged with the bit map data 19, and the bit map data is restored to the scan line 18, the bit map cannot be accessed by the host system. Because of this, the cursor does not appear, to the host system, to be in the bit map at all and gives the impression that the cursor is completely controlled by logic circuits.

[0049] The logical function of ANDing and XORing of the bit map data is illustrated in Figure 4. This micro- code steps 56-68 are executed one scan line before it is to be serialized and displayed, i.e., when the previous scan line is being serialized and sent to the display 10. It is approximately 90% of the total time required for a complete horizontal period. Because of this long period of time, 90%, computation of the cursor pattern can be done in background mode. This is done ahead of time so it can be exchanged quickly during the Video Formatting period (horizontal blanking) which is approximately 10% of total time required to complete a horizontal period.


Claims

1. A video display system of the type having a digital image store (1) arranged to store image data in the form of a bit map constituted by data lines (18) representing lines of picture elements of a display image, said image store being operable under the control of a digital processor (6) to supply stored image data line by line to a computer display device (10) to cause an image including a cursor to be displayed, characterised in that said image store has a first port (9) for transmission of data to and from said processor and a second port (12) for transmission of image data to said display device and that said processor is adapted, in response to cursor position data indicating that a subsequent line, to be displayed after the current line, includes a cursor, to retrieve image data from such subsequent line through said first port and combine such data with cursor pattern data (steps 56 - 58) to develop composite image data representing the superimposition of the cursor on the image, to replace (step 48) the image data in the data line corresponding to said subsequent line with said composite image data for transmission to said display device, and to restore (step 54) the replaced data to said data line after delivery of the composite image data to said second port for transmission thereby preserving the original bit map data.
 
2. A system as claimed in claim 1, in which said image store includes a hidden portion unavailable for data transfer to said display device while being accessible to said processor, said cursor position data being stored (14) in said hidden area.
 
3. A system as claimed in claim 2, in which said processor is adapted to place said composite image data in a cursor save area (17) in said hidden area and said replacement and subsequent restoration of image data by said processor is effected by exchanging data in the data line corresponding to said subsequent line with the contents of said cursor save area.
 


Ansprüche

1. Ein Bildschirmanzeigesystem, das einen digitalen Bildspeicher (1) zur Speicherung von Bilddaten in Form eines Rasters hat, welches aus Datenzeilen (18) gebildet wird, die Zeilen von Bildelementen eines Anzeigebilds darstellen, wobei der Bildspeicher von einem digitalen Prozessor (6) gesteuert wird, um gespeicherte Bilddaten zeilenweise in einem Computeranzeigegerät (10) zu speichern und ein Bild einschließlich eines angezeigten Kursors zu liefern, dadurch gekennzeichnet, daß der Bildspeicher einen ersten Eingang (9) zum Übertragen von Daten in und aus dem Prozessor hat und einen zweiten Eingang (12) zur Übertragung von Bilddaten in das Anzeigegerät hat und der Prozessor angepaßt wird, als Reaktion auf die Kursor-Positionsdaten, die anzeigen, daß eine nachfolgende Zeile, die nach der aktuellen Zeile angezeigt wird, einen Kursor enthält, um Bilddaten aus der nachfolgenden Zeile über den ersten Eingang wieder zurückzugewinnen und die Daten mit den Kursor-Musterdaten zu kombinieren (Schritte 56 - 58) und zusammengesetzte Bilddaten zu entwickeln, die die Aufbringung des Kursors im Bild darstellen, um Bilddaten in der Datenzeile entsprechend der nachfolgenden Zeile durch die zusammengesetzten Bilddaten für die Übertragung zu dem Anzeigegerät zu ersetzen (Schritt 48) und die ersetzten Daten in der Datenzeile, nach Lieferung der zusammengesetzten Bilddaten an den zweiten Eingang, für die Übertragung wiederherzustellen (Schritt 54), wodurch die Original-Rasterdaten erhalten bleiben.
 
2. Ein System wie in Anspruch 1, in dem der Bildspeicher einen verborgenen Teil enthält, der für die Datenübertragung zu dem Anzeigegerät nicht zur Verfügung steht, da dieser für den Prozessor zugänglich ist, wobei die Kursorpositionsdaten in dem verborgenen Bereich gespeichert werden (14).
 
3. Ein System wie in Anspruch 2, in dem der Prozessor angepaßt ist, um zusammengesetzte Bilddaten in einen Kursorsicherungsbereich (17) in dem verborgenen Bereich zu setzen und der Ersatz und die nachfolgende Wiederherstellung der Bilddaten durch den Prozessor ausgeführt wird, wobei die Daten in der Datenzeile entsprechend der nachfolgenden Zeile gegen die Inhalte des Kursorsicherungsbereichs ausgetauscht werden.
 


Revendications

1. Un système d'affichage vidéo comprenant une mémoire graphique numérique (1) conçue pour stocker des données graphiques sous la forme d'un bit map constitué de lignes de données (18) représentant des lignes d'éléments graphiques d'une image, ladite mémoire graphique pouvant être commandée par un processeur numérique (6) pour fournir les données graphiques en mémoire ligne par ligne à un écran de visualisation informatique (10) pour produire une image incluant le curseur à afficher, et caractérisé par le fait que ladite mémoire graphique dispose d'un premier port (9) pour la transmission de données dans les deux sens vers ledit processeur, et un second port (12) pour la transmission de données graphiques audit écran de visualisation, et par le fait que ledit processeur est adapté - en fonction des données de positionnement du curseur qui indiquent qu'une ligne suivante, affichée après la ligne en cours, inclue un curseur - de manière a récupérer les données graphiques de ladite ligne suivante par ledit premier port, et à combiner ces données avec les données du motif du curseur (phases 56 - 58) pour développer une image composite qui représente la superposition du curseur sur l'image, remplacer (phase 48) les données graphiques dans la ligne de données correspondant à ladite ligne suivante par lesdites données graphiques composites pour les transmettre audit écran de visualisation, et restaurer (phase 54) les données remplacées dans ladite ligne de données après la sortie des données graphiques composites par ledit second port en vue de leur transmission en préservant le bit map initial.
 
2. Un système tel que dans la revendication 1, où ladite mémoire graphique inclue une portion cachée qui ne peut être transférée audit écran de visualisation, tout en étant accessible pour ledit processeur, les données de position du curseur étant stockées (14) dans ladite zone cachée.
 
3. Un système tel que dans la revendication 2, où ledit processeur est adapté pour placer lesdites données composites dans une zone de sauvegarde du curseur (17) dans ladite zone cachée, et ledit remplacement suivi de restauration des images graphiques par ledit processeur est effectué en échangeant les données dans la ligne de données correspondant à ladite ligne suivante avec le contenu de ladite zone de sauvegarde du curseur.
 




Drawing