Abstract:
A graphics generator is provided for overlaying changeable graphics data on a video display. The graphics generator is microprocessor controlled, and includes a graphics data positioning circuit which permits the microprocessor to vary the displayed graphics in real-time without itself operating at video rates.

Description:
FIELD OF THE INVENTION 
     The present invention relates generally to a graphics display system and more specifically to a graphics generator for interposing pointer/cursor, system status, and other graphics on a video display. 
     BACKGROUND OF THE INVENTION 
     In many video systems applications it is desirable to provide a changeable, controllable graphics display for viewing with a video display. Such applications include, for example, a film-to-video player wherein a photographic film is converted to a video signal for display on a video monitor. With such a film-to-video player, it is desirable to provide a graphics capability wherein such graphics icons as pointers and text can be displayed on the monitor with the video display. Such graphics can be used, for example, to highlight or identify a particular subject in the video display, or to provide text relevant to the video display. Many other uses are apparent to those familiar with such video systems. 
     It is often desirable to provide such graphics under control of a microprocessor, whereby great flexibility can be accorded in the forming and changing of the graphics icons and displays. Different texts, for example, can be programmed to appear with different video displays. Various icons can be displayed, and their positions moved. Further, various graphical displays, such as clocks and control information relevant to the video system itself, can be updated on a periodic basis. 
     In providing such a microprocessor controlled graphics display, the graphics system must be synchronized for operation with the video monitor--for example in accordance with standard, NTSC video timing. This requires that the graphics system be capable of operating at video speeds, which are often much faster than the speeds available from a microprocessor. 
     SUMMARY OF THE INVENTION 
     A principal object of the present invention is to provide a new and improved graphics generator which permits user-controllable, changeable graphics to be displayed on a video display in real time. 
     Another object of the present invention is to provide a graphics generator for use in a video display system which permits microprocessor control of generated graphics without requiring the microprocessor to run at the video rates. 
     A further object of the present invention is to provide a graphics generator for use in a video display system which permits microprocessor control of generated graphics while requiring a relatively minimal amount of microprocessor time to provide this graphics control. 
     Yet another object of the present invention is to provide a graphics generator for use in a video display system which provides for real time display of graphics while having relatively small, economical memory requirements. 
     in accordance with the present invention, a new and improved graphics generator is provided for use in a video display system, the video display system including a video monitor and means for applying a video signal to the video monitor so as to provide a video display on the video monitor. The graphics generator comprises video timing means for providing a line rate clock signal and a pixel clock signal to synchronize the video signal for display on the video monitor. 
     A microprocessor is provided configured to provide a memory load clock signal of slower frequency than the pixel clock signal, and position data indicating the line and pixel on the video display at which selected graphical icons are to be displayed. 
     Graphics memory means are provided for selectively writing in, storing, and reading out graphics data resentative of graphical icons for display on the video monitor. 
     Graphics positioning means are provided operating in synchronism with said line rate and pixel clock signals for generating an actuating signal at a time determined by the position data. 
     Addressing means responsive to the microprocessor are provided for generating write addresses to write the digital data into the graphics memory means in synchronism with the load clock signal. This addressing means is further responsive to both the microprocessor and the actuating signal for generating read addresses to read the digital data out of the graphics memory means in synchronism with the pixel clock signal. 
     Means are provided for applying a graphics signal to display a selected color on the video monitor. 
     Means responsive to the digital data read from the graphics memory means are provided for selecting the video signal data or the graphics signal for display on the video monitor. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     While the specification concludes with claims defining the features of the invention that are regarded as novel, it is believed that the invention, together with further objects thereof, will be better understood from a consideration of the following description in conjunction with the drawing figures, in which like reference numerals are carried forward, and in which: 
     FIG. 1 is a block diagram showing a graphics display system incorporating a graphics generator constructed in accordance with the present invention; 
     FIG. 2 is a block diagram of the graphics generator of FIG. 1; 
     FIG. 3 is a functional block diagram illustrating the operation of the control logic circuit of FIG. 2; 
     FIGS. 4A-4B constitute a flow chart illustrating the assembly, loading, and updating of the data for the graphics data memory of FIG. 2; 
     FIG. 5 is a flow chart illustrating the reading of the graphics data memory of FIG. 2; 
     FIG. 6 is a block diagram showing the structure of the data assembled in the microprocessor RAM of FIG. 2; 
     FIG. 7 is a block diagram showing the structure of the data loaded in the graphics data RAM of FIG. 2; and 
     FIG. 8 is a block diagram showing the relationship of the graphics data loaded in the graphics data RAM to a video display. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring now to the drawings, FIG. 1 shows a video display system 10 constructed in accordance with the present invention. Video display system 10 includes a graphics monitor 12 having a cathode ray tube (CRT) display 13. Monitor 12 comprises a standard color monitor including analog R, G, B or NTSC video inputs. Connected to monitor 12 is a graphics generator 14, the structure and operation of which is described in detail below. Connected to graphics generator 14 is a cursor controller 16, and a video signal source 18. Cursor controller 16 comprises a conventional cursor position data generator, such as a momentary contact keypad. Video signal source 18 comprises, for example, a film-to-video player of the type shown in U.S. Pat. No. 4,482,924, assigned to the assignee of the present invention. Video signal source 18 includes a control panel 20 providing user-adjustable controls for controlling display 13 of monitor 12. Such controls include, but are not limited to, Red, Green, and Blue color intensity controls, a brightness control, a sharpness control, and a contrast control. Such controls are conventional in the art, and are not described in detail herein. 
     While the construction and operation of video display system 10 will be described in detail below, such description will be aided by a preliminary understanding of the basic operation of the system. Accordingly, in operation, monitor driver 18 provides a video signal for driving display 13 to produce a color video picture 22. Graphics generator 14 functions to selectively overlay a movable cursor 24, control status graphics 26, 28, or other selected graphics icons on picture 22. As used herein, the terms graphics and icons, when used to describe a display on monitor 12, include text, patterns, and all other generated displays. 
     Referring now to FIG. 2, graphics generator 14 includes a microprocessor/controller 30 for controlling the operation thereof. Microprocessor 30 comprises, for example, an 8 bit, TTL-compatible, Intel 8031 from Intel Corp. A read/write memory 32, comprising for example an 8K by 8-bit static random access memory (SRAM), is connected to microprocessor 30 by a control signal and data bus 34. Pointer icon position data generated by cursor controller 16 (FIG. 1) is indicated schematically at 36, and system status data from monitor driver 18 (FIG. 1) is indicated schematically at 38. 
     A graphics positioning circuit 40 includes two 8-bit, vertical and horizontal position shift registers 41, 42, respectively. Shift registers 41, 42 are connected to microprocessor 30 by a control line 44. Circuit 40 further includes two 8-bit counters 46, 48, connected to shift registers 41, 42, by 8-bit data lines 50, 52, respectively. Shift registers 41, 42, counters 46, 48, and the other logic elements set out below, comprise standard, TTL-compatible logic elements. A logic AND gate 54 is connected to the carry-outputs of counters 46, 48. 
     A second memory 56, which is a graphics data memory preferably comprising a 64K×1-bit static RAM, is connected to microprocessor 30 via a read/write control line 58, and a serial data transfer line 60. The data output line of memory 56 is connected to the input of a logical AND gate 61, the second input of the gate comprising a control line 59 from microprocessor 30. The output of AND gate 61 is connected to the select/control input of a multiplexer (MUX) 62. A first input to MUX 62 comprises a video signal from video signal source 18. A second input of MUX 62 comprises a graphics signal. This graphics signal is selected so as to drive monitor display 13 to a selected white, black, or color level. Microprocessor 30 functions to enable the output of memory 56 at gate 61 via control line 59. Once enabled by microprocessor 30, the output of gate 61 functions to control MUX 62 so as to select the video or graphics signal for application to monitor 12. 
     An address control circuit 66 is provided for controlling the read/write addressing of memory 56. Circuit 66 includes a control logic circuit 68, the details of which are shown and described with respect to FIG. 3 below. A control and data signal bus 69 connects microprocessor 30 with control logic circuit 68 for communicating control and clock signals thereto, while a signal line 71 connects the control logic circuit with the output of logical AND gate 54. Address control circuit 66 further includes a 14-bit counter 70. Counter 70 has its enable connected to control logic circuit 68 by a signal line 72, its clock connected to the control logic circuit by a signal line 73, and its 13 th  and carry-out (15 th ) bits connected to the control logic circuit by a signal bus 77. The 8 least significant bits of counter 70 are connected to the 8 least significant bit addresses of memory 56 by a signal bus 75, while the 6 most significant bits of the counter are connected to a MUX 74 by a signal bus 76. MUX 74 is connected to microprocessor 30 by a bus 78, so as to selectively provide 8 memory address bits and 1 data select control bit. The output of MUX 74 is connected to the 8 most significant bits of memory 56 by an 8 bit bus 80. 
     A video timing circuit 82 is provided, the video timing circuit comprising the same circuit used to generate video timing for monitor 12 and video signal source 18. Video timing circuit 82 comprises, for example, a Fairchild 3262 BDC connected with appropriate counters and logical gates. Video timing circuit 82 functions to provide all conventional video timing clocks, including: (1) a field rate clock (2) a line rate clock (a 15.75 Khz clock for timing vertical video position), and (3) a pixel clock (a 5.4 Mhz clock for timing horizontal video position). The line rate clock of video timing circuit 82 is connected to the clock input of counter 46. The pixel rate clock of video timing circuit 82 is connected to the clock input of counter 48, and to control circuit 68. The field rate clock is connected to the load control input of counters 46, 48. 
     Referring now to FIG. 3, control logic circuit 68 comprises, functionally, three switches indicated at 84, 86, 88, each switch including a controllable wiper positioned for selectively engaging one of two pole terminals. A logical flip-flop 90 is connected between the wiper of switch 84 and a terminal 92 of switch 88. 
     Examining first switch 88, the wiper thereof is connected to signal line 72 and thus to the enable of counter 70. Wiper control is provided by a &#34;load pointer&#34; control signal generated on signal line 69 by microprocessor 30. When the load pointer control signal is active, the switch wiper is positioned in contact with a terminal 94, the terminal providing a constant, &#34;enable&#34; logic level for enabling counter 70. When the load pointer control signal is inactive, the wiper of switch 88 is positioned to contact the Q&#39; output 92 of flip-flop 90. 
     Examining now switch 86, the wiper thereof is connected to signal line 73, and hence to the clock input of counter 70. Control of the wiper position is provided by the load pointer control signal on signal bus 69. When the load pointer control signal is active, the wiper is positioned to contact a terminal 96 so as to provide a &#34;pointer load clock&#34; signal to the clock of counter 70. When the load pointer control signal is inactive, the wiper is positioned to contact a terminal 98 so as to provide the &#34;video pixel clock&#34; signal generated by video timing circuit 82 to counter 70. 
     Examining switch 84, the wiper thereof is connected to a reset input 97 of flip-flop 90. Wiper control is provided by a &#34;graphics data select&#34; signal generated by microprocessor 30. Switch 84 functions to control the reading of memory 56. When the graphics data select signal is active, the wiper of switch 84 is positioned to contact signal line 74 and hence sense the 13 th  bit of counter 70. When the graphics data select control signal is set inactive, the wiper is positioned to sense the overflow bit (the 15 th  bit) of counter 70. 
     Turning now to the operation of graphics generator 14 in graphics display system 10, it will be best described in three sections. The first section of the description is keyed to the flow chart in FIG. 4, and will describe graphics data assembly in microprocessor memory 32, loading of the assembled data into memory 56, and loading of the cursor position data into counters 46, 48. The second section, also keyed to the flow chart of FIG. 4, is directed to updating the cursor position and system status data. The third section of the description is keyed to the flow chart of FIG. 5, and is directed to reading the graphics data in memory 56 for display on monitor 12. 
     DATA ASSEMBLY AND LOADING 
     Loading of the cursor position data into counters 46, 48, and the graphics data into memory 56, is performed under software control of microprocessor 30. 
     1. Loading the Graphics Memory 
     Referring now to FIGS. 4A, 4B, and 6 in addition to those FIGS. described above, upon power up 99 the loading of memory 56 is initiated by assembling data representing desired graphical icons (i.e. cursor and control status displays) in microprocessor memory 32, as shown at block 100 of FIG. 4A. This data is preferably programmed in a compressed format into the Program Memory of microprocessor 30. The compression is accomplished using standard data compression techniques including coding of empty spaces, letters, and fonts, and provides the advantage of requiring a minimal amount of space in the PROM. Subsequent to each power-up of graphics generator 14, this compressed data is expanded, again using the standard techniques described above, and assembled into memory 32 (block 100 of FIG. 4A). Referring specifically to FIG. 6, memory 32 is loaded such that it can be read to provide graphics data in serial format: i.e. as serial pixels in consecutive lines of video. In the embodiment shown, memory 32 is segmented into 512 consecutive blocks, each block containing 16 lines, each line containing an 8-bit byte of serial graphics data. 
     Referring now also to FIG. 7, upon completion of data assembly in memory 32, this graphics data is read out byte-wise (i.e. in 8-bit lines) from memory 32, as indicated by block 102, and written into memory 56 in a serial, bit-wise manner, as indicated by block 104. To initiate this loading of memory 56, switch 86 of control logic circuit 68 is operated to supply a pointer load clock from terminal 96 to counter 70. This pointer load clock operates at a 100 khz clock rate. Switch 88 is operated to enable counter 70 with the enable signal at terminal 94. 
     Data is now read byte-wise from memory 32 and written serially bit-wise into memory 56. Referring specifically to FIGS. 6 and 7, a first 8-bit byte is read from block 0 of memory 32, and written serially into the first line (line 0) of memory 56. The first byte of block 1 is then read from memory 32 and written serially as the second 8 bits of the first graphics data line in memory 56. This process is repeated until the first byte in block 31 (memory 32) is written into the last 8 bits of the first data line (memory 56). The second bytes of blocks 0-31 (memory 32) likewise from the second line (line 1) of graphics data (memory 56). 
     Referring to FIG. 2, the addressing for this loading of memory 56 is provided by using the the least significant 7 bits of counter 70 to address the 256 bits in a line. Microprocessor 30 generates 8 address bits, selected through MUX 74, to address the 256 lines in the memory. This transfer of graphics data from memory 32 to memory 56 is performed until all of the data has been transferred, as indicated by block 106 (FIG. 4A). 
     Referring now to FIG. 8, a block diagram of memory 56 is shown including the video data represented graphically as it would appear if displayed on monitor 12. More specifically, the cursor icon and control status data contained in memory 56 is represented graphically, logical data &#34;1&#34;&#39;s having been replaced with a drawing of the icon represented by the stored data. 
     In the preferred embodiment of the invention, each graphical icon is contained in a &#34;bar&#34; of memory 56, each bar including 256 bits×16 lines of data. Memory 56 thus contains 16 bars of data, six bars being indicated at 120, 122, 124, 126, 128, 130. Bars 120, 122 contain left- and right-pointing cursors 132, 134, respectively. Cursors 132, 134 are left- and right-justified, respectively, in their respective bars. Each cursor 132, 134 is comprised of four data blocks (FIG. 7). Bar 126 contains a &#34;RED&#34; icon 136, followed by a bar graph icon 138 indicative of the setting of the red color intensity control of monitor driver 18 (FIG. 1). Bars 128 and 130 contain similar graphical data regarding the status of the green and blue color intensity controls. Further shown in FIG. 8 are the four most significant address bits for each bar, which are the same for all 16 lines in each bar. The four most significant address bits of the 16 lines in block 120, for example, comprise &#34;0000&#34;. The four significant address bits for bar 122 comprise &#34;0001&#34;, with these most significant address bits increasing by &#34;1&#34; for each block to an address of &#34;1111&#34; for the sixteenth block 130. It will be understood that, while only six blocks are shown containing data, the remaining empty blocks can be filled with other desired graphical data (i.e. titles, scenes, error messages, etc . . . ). 
     In FIG. 8, the contents of memory 56 are shown overlain on the actual video display 13 of monitor 12. In the preferred embodiment of the invention, the pointer pixels in memory 56 are twice as wide as the video pixels. It can be seen that display 13 comprises 570 bits (or 570/2=285 equivalent graphics bits) by 242 lines, and is hence slightly wider and shorter than the graphics data content in memory 56. In the read mode of operation, the addressing of memory 56 is adjusted so as to center the contents of the memory on display 13. 
     2. Loading the Cursor Position Data 
     The cursor position data 36 is supplied to microprocessor 30 from cursor controller 16. When the cursor is enabled (by a switch not shown on cursor controller 16), the cursor position data is loaded into shift register 41, 42, and subsequently into counters 46, 48 via the field rate clock. 
     Updating Data in Memory 56 
     Referring back to FIG. 4, the control status data (represented in memory 56 by the bar graph icons such as icon 138) and the cursor position data (generated by cursor controller 16 of FIG. 1 and read by microprocessor 30 for loading into registers 41, 42 of FIG. 2) are monitored and updated as necessary. This monitoring, performed by microprocessor 30, is represented by blocks 108, 109, 110. 
     1. Updating the Cursor Position Data 
     When microprocessor 30 senses a change in the setting of the system control data, it first determines whether it is a change in the cursor status (enable/disable/position) or machine status (color, brightness, etc . . . ). If it is determined to be a change in the cursor status, the cursor is enabled (re-enabled if currently active) and displayed on the screen 13 (in a manner described in detail below). As long as the cursor is not disabled, its position data is updated once per video field as controlled by the field rate clock via the loading of the position data from registers 41, 42 into counters 46, 48. If there is no change in the cursor position data, the last data loaded into registers 41, 42 is maintained there. These functions are represented by blocks 111 and 112. If the cursor is not being disabled, new position data is being provided and is loaded by microprocessor 30 into shift registers 41, 42, and subsequently clocked by the field rate clock into counters 46, 48. These functions are represented by block 114. Subsequent to the changing of the position data, or the disabling of the cursor (block 115), microprocessor 30 returns to the monitoring mode. 
     2. Updating Machine Status Data 
     If the new data is machine status data, the new machine status data is used to update the corresponding graphical icon (eg. icon 138) in memory 56. This process is represented by block 116. 
     The processes of loading new control status data (block 116) into memory 56 is substantially identical to the data assembly and transfer steps described with respect to blocks 100, 102, 104, 106 above. The only difference between the original assembly and loading described above, and the updating assembly and loading described here, is that in the latter only those data lines which have changed are reassembled and reloaded. All other data is left in memory 56 unchanged. Due to the processing speed of microprocessor 30 and graphics generator 14, an update of one line of the graphics data in memory 56 can be completed in less than one video frame period of 16.7 msec. 
     Reading the Data to Display Graphics 
     Referring now to FIG. 5 in addition to those FIGS. described above, the step 160 of initiating a read of memory 56 is controlled by the software of microprocessor 30, and is performed whenever there is graphics data to be displayed on monitor 12. Reading of memory 56 is synchronized by video timing circuit 82 so as to synchronize the display of the graphics data in memory 56 with the video signal provided by video signal source 18. For purposes of explanation, the reading of the data describing cursors 132, 134 will be described first, and the reading of the control status data will follow. For purposes of clarity, several hardware functions have been included, as indicated, in FIG. 5. 
     1. Displaying the Cursor 
     It will be assumed that the above described updating has occurred, and the appropriate position data is available in microprocessor 30 for displaying the right and left-pointing cursors 132, 134. For purposes of explanation, the loading of this position data into counters 46, 48, described above, is briefly reviewed below with reference to FIG. 5. 
     In the embodiment of the invention shown and described herein, left- and right-pointing cursors 132, 134 are provided. Microprocessor 30 operates to select the left-pointing cursor 132 when the cursor is being operated in a left-moving direction of travel, and the right pointing cursor 134 when the cursor is being operated in a right-moving direction of travel. Microprocessor 30 further functions to control the alternating of cursors at the edges of display 13 such that a cursor is not `lost` off the edge of the display. For purposes of explanation, the reading of memory 56 will be explained with respect to the reading of the right-pointing cursor 134 in data bar 122. 
     As shown in blocks 160, 162, 164, upon initiating a read of memory 56 (responsive to the appropriate cursor position or machine status control input), microprocessor 30 loads the vertical and horizontal position data relevant for cursor 134 into registers 41, 42, respectively. As discussed above, this position data indicates the line (vertical position data) and pixel (horizontal position data) at which the data stored in the selected region of memory 56 (i.e. in this example cursor data) will begin reading out. Microprocessor 30 then selects data bar 122 (to select the right pointing cursor for this example), and generates the four most significant address bits for that bar. These latter steps are shown in blocks 166, 168. In this example, cursor 134 is selected and the most significant address bits &#34;0001&#34; are generated for data bar 122. 
     Referring to FIG. 3, the wiper of switch 84 is positioned to sense the 13th bit of counter 70. The wiper of switch 86 is positioned to provide the video clock to counter 70 over signal lead 73. The wiper of switch 88 is positioned to contact terminal 92, the Q&#39; terminal of flip-flop 90. 
     Referring to FIGS. 2 and 5, the field rate clock loads the data in registers 41, 42 into counters 46, 48, respectively. The operation of graphics generator 14 now operates synchronously with the video display as controlled by video timing circuit 82 and represented by the video clock in block 170. At the beginning of a video frame, counters 46, 48 begin to count upwards from the loaded starting position as shown in blocks 172, 174. Counter 46 is clocked by the line rate clock, and counter 48 is clocked by the pixel clock. When counters 46, 48 reach a count of 255, their respective carry-out bits will go high. When both counters have reached 255, AND gate 54 is made, and the GO signal on output signal line 71 goes active. Referring to FIG. 3, this GO signal sets flip-flop 90, enabling counter 70. These latter operations are indicated in blocks 176, 178, 180 of FIG. 5. 
     With counter 70 enabled, reading of memory 56 is initiated. Counter 70 is clocked by the horizontal pixel clock generated by video timing circuit 82. MUX 74 is controlled by microprocessor 30 to select the 4 most significant address bits, in this case 0001 as described above, from the microprocessor. The remaining 4 bits of the 8 most significant bits are selected from counter 70. Counter 70 thus provides 12 address bits. As counter 70 counts from 0 to 4095, data bar 122 is read in its entirety from memory 56. When the 13 th  bit of counter 70 goes high, flip-flip 90 is reset, the enable signal on line 72 to counter 70 goes inactive, and the reading of memory 56 is terminated. This reading operation is shown in blocks 182, 184, 186 of FIG. 5. 
     From a consideration of the above, it will be apparent that the data bar containing the selected, right-pointing cursor icon 134 is read from memory 56. The data bar is read at a time, as determined by the operation of counters 46, 48, that will place cursor 134 at the selected horizontal and vertical position in a video frame to be displayed on monitor display 13. This horizontal/vertical position was, of course, selected by an operator through the manipulation of cursor controller 16 in the manner described above. Due to the respective left and right justification of pointers 132, 134 in memory 56, as the direction of pointer travel is changed, the appropriate cursor appears on display 13 pointing at substantially the same spot as the previous cursor did. From a consideration of the circuit, it will be appreciated that pointer 134 appears one video line lower on display 13 than does pointer 132. 
     2. Displaying the System Status 
     The reading of the control status data in bars 124, 126, 128, 130 of memory 56 is performed substantially identically to the reading of the cursor data described above. However, in the preferred embodiment of the invention, whenever one of the Red, Green, or Blue color intensity controls is varied, the status of all three controls is simultaneously displayed. For ease of addressing, data bar 124, including all blanks (i.e. no graphics information), is read to provide a &#34;cushion&#34; between the video display and the graphics. In displaying these four bars of control status data, the position data loaded into registers 41, 42 by microprocessor 30 is always selected to start the read of memory 56 at the beginning of the 96 th  line up from the bottom of display 13. (When displaying only a single bar, the position data would be selected to start the read at the beginning of the 64 th  line up). 
     To perform this simultaneous display of the status of all three controls, switch 84 of control logic 68 is set to sense the 15 th  bit (i.e. overflow bit) of counter 70. Microprocessor 30 generates the two most significant bits of the address for data bar 124, or address bits &#34;11&#34;. MUX 74 is controlled by microprocessor 30 to select only these two most significant bits from the microprocessor, and to select the remaining 6 most significant address bits from counter 70. Counter 70 is thus providing 14 address bits. It will be apparent that, as counter 70 counts from 0 to 16,384, all four of data blocks 124, 126, 128, 130 are read sequentially from memory 56. Thus, all three control status graphics will be displayed at one time. In all other respects, the reading of the control status data is identical that of the cursor data described above. 
     Referring back to FIG. 2, appropriate apparatus 61, 62 is provided for selecting between the graphics data read from memory 56 and the video data generated by video signal source 18 for display on monitor display 13. This apparatus functions, in the manner described above, to display the graphics signal when graphics data is present in memory 56, and, in the absence of graphics data, to display the video signal data supplied by video signal source 18. Graphics data in memory 56 thus causes graphics icons, the color and intensity of which are selected by the appropriate selection of the graphics signal at the input of MUX 62, to appear overlaid on the video picture displayed on video display 13. 
     There is thus provided a graphics generator for overlaying graphics icons on a video picture. The graphics generator provides for flexible, microprocessor control of the displayed graphics in real-time, while permitting the use of a relatively slow microprocessor, and a relatively small and economical graphics data memory. 
     While a preferred embodiment of the invention has been illustrated and described, it will be clear that the invention is not so limited. Numerous modifications, changes, variations, substitutions, and equivalents will occur to those skilled in the art without departing from the scope of the present invention. 
     The following APPENDIX is a listing of assembly code in the Intel MSC-51 (MCS is a registered trademark of the Intel Corp.) instruction set. This listing, copyrighted by Eastman Kodak Co., includes assembly code defining one method of performing, on an Intel 8031 8-bit microprocessor, the software functions flow-charted and taught herein above. ##SPC1##