Abstract:
A hardware graphics accelerator (HGA) system which has a source memory element which is loaded to initiate HGA operations operates in two modes: (1) a FIFO mode for normal HGA operations and (2) a recirculate mode for high speed pattern transfers and pattern expands by the HGA. The use of the second mode simplifies the structure and increases the operating speed of the HGA and its associated CPU by eliminating the use of the dedicated pattern registers and pattern control multiplexers of prior art HGA systems.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates generally to hardware graphics accelerators used in computer systems and in computer display systems and more specifically to a hardware graphics accelerator (HGA) system and method therefor which accomplishes high speed pattern transfers and pattern expands without the use of the dedicated pattern registers and pattern control multiplexers of prior art HGA systems. 
     2. Description of the Prior Art 
     Hardware graphics accelerator (HGA) modules or systems have been commonly used in computer systems incorporating video displays for a number of years. The function of these HGA modules is to speed up the transfer of blocks of digital information from computer system memory to the control electronics and buffer memory portions of the video display hardware so that a particular video image can be displayed more rapidly as compared to the transfer of the same information via the normal non-accelerated memory input-output rate of the computer system. The applicability and advantage of incorporating HGA&#39;s has increased rapidly due to the ever increasing use of computer systems which use video displays to show icons or other &#34;window&#34; type information. In non-HGA systems, the heavy demand on the computer system local memory (DRAM) and central processing unit (CPU) required to maintain and update the more extensive video display tended to bog down the computer system as a whole so that not only were updates to the video display slower but the effective speed and availability of the CPU was reduced for all other computing tasks. One approach to solving this problem is to increase the speed and the effective computing rate of the CPU itself so that all computing tasks, including control of the video display are speeded up. The difficulty with this approach is that the CPU is the most complex element of the computing system and upgrading it&#39;s total design to increase speed and computing rate is an expensive and time consuming. A simpler and more direct approach is to partition the problem and to handle the maintenance and update of the video display separately with hardware and control software specifically dedicated to this task. The result of this approach is the HGA which can increase the speed of video operations by a factor of two to three times in a direct and cost effective manner. The success of this approach has resulted in the incorporation of some form of HGA in essentially all currently produced computer systems and especially in the portable and desktop personal computer systems which are in wide spread current use. 
     A feature of prior art HGA&#39;s is the incorporation of hardware specifically dedicated to &#34;pattern transfers&#34; and &#34;pattern expands&#34;. These pattern manipulations relate to repetitive operations which fill the portion of DRAM defining what is to appear on the video display. For this case, the DRAM locations will contain a particular sequence of &#34;bytes&#34; of information defining the basic elements of the pattern. This sequence is then repeated again and again through the portion of DRAM location corresponding to the repetition of the basic elements of the pattern to &#34;fill&#34; an area of the video display. The dedicated hardware used in prior art HGA&#39;s is made up of pattern registers and multiplexer circuits linked to the CPU which controls the HGA. 
     This set of data is then read out of the pattern registers and steered into the required DRAM locations again and again to &#34;fill&#34; the DRAM locations with the repeating sequence of data corresponding to a patterned area on the video display. In the &#34;pattern expand&#34; variation of these data manipulations, pattern information is stored in &#34;compressed&#34; form in DRAM making use of a specific algorithm which defines how the basic pattern element is to be expanded to the, final form which will be repetitively read from the pattern registers to fill the patterned area on the video display. 
     The prior art approach of using a dedicated pattern register-multiplexer module within the HGA suffers at least two significant disadvantages: (1) The electrical structure of the HGA block itself must necessarily be larger and more complex in order to incorporate the gates and interconnects required to implement the pattern registers and the associated multiplexers and, (2) CPU program structures and execution times are made longer and more complicated because the module is an additional entity which must be interfaced, controlled and monitored. Thus a need exists for an improved HGA design which accomplishes pattern transfers and pattern expands in a simpler and more cost effective manner. 
     OBJECTS OF THE INVENTION 
     Accordingly, it is an object of this invention to provide an improved HGA system and method therefor which accomplishes high speed pattern transfers and pattern expands without the use of the dedicated pattern registers and pattern control multiplexers of prior art HGA systems. 
     It is a further object of this invention to provide an improved HGA system and method therefor which reduces the number of gates and interconnects required to accomplish high speed pattern transfers and pattern expands. 
     It is a further object of this invention to provide an improved HGA system and method therefor in which CPU program structures and execution times are made shorter and less complex. 
     SUMMARY OF THE INVENTION 
     According to the foregoing objectives, this invention describes an improved HGA system and method therefor which accomplishes high speed pattern transfers and pattern expands by introducing simplified CPU commands and HGA control elements which re-adapt the source FIFO memory used for all HGA functions thereby eliminating the use of the dedicated pattern registers and pattern control multiplexers of prior art HGA systems. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of the improved HGA system according to the present invention. 
     FIG. 2 is a block diagram of the pattern register and pattern multiplexer module used in prior art HGA systems. 
     FIG. 3 is a block diagram showing additional details of the Source FIFO module which is part of the improved HGA system according to the present invention. 
    
    
     DETAILED DESCRIPTION 
     FIG. 1 shows a block diagram of HGA 10 according to the present invention. FIG. 1 also shows computer circuitry 20 which is not part of HGA 10 but which comprises the computer elements and interconnecting busses associated with the operation of HGA 10. Computer circuitry 20 comprises DRAM 22 (local memory), memory controller 30, and CPU 32. DRAM 22 is the random access memory for the computer system which contains HGA 10. Memorycontroller 30 controls access to DRAM 22 by arbitrating the various requests for memory by applying the appropriate address, data and control signals to the memory. CPU 32 is a microprocessor which for this particular embodiment of the present invention is an on-chip intel 386 microprocessor although other microprocessors could be used. Because of its complexity, the actual CPU interface for CPU 10 is not shown in FIG. 1. DRAM 22 couples to memory controller 30 by DRAM address bus 24, bi-directional DRAM data bus 26 and DRAM control bus 28. CPU 32 couples tomemory controller 30 via CPU address bus 34, CPU data bus 36 and CPU control bus 38. CPU address bus 34, CPU data bus 36 and CPU control bus 38also couple to CPU interface 40 which is part of HGA 10 as will be described in detail in the descriptions which follow. 
     As shown in FIG. 1, HGA 10 comprises source data FIFO 100, destination dataFIFO 42, color expand module 44, rotate module 46, ALU (arithmetic logic unit) 48, color expand mask 50, output data register 52, configuration registers control module 56, address generator 58 and mask 60. Source dataFIFO 100 couples to memory controller 30 via HGA data in bus 62 which also couples to destination data FIFO 42 and mask 60. Source data FIFO 100 alsocouples to memory controller 30 via HGA control in bus 64 which also couples to destination data FIFO 42. Source data FIFO 100 also couples to color expand module 44 via SRC data bus 66. Color expand module 44 couplesto rotate module 46 via bus 68 and couples to color expand mask 50 via bus 70. Rotate module 46 couples to ALU 48 via bus 72. ALU 48 couples to colorexpand mask 50 via bus 74. Color expand mask 50 couples to output data register 52 via bus 76. Output data register 52 couples to mask 60 via bus78. Mask 60 couples to memory controller 30 via HGA data out bus 80. Destination data FIFO 42 couples to ALU 48 and to color mask 50 via bus 82. CPU interface couples to configuration registers 54 via data bus address bus 85 and control bus 86. Configuration registers couples to color expand module 44, rotate module 46, ALU color expand mask 50, outputdata register 52 and mask 60 via configuration data bus 88. Configuration data bus 88 is a static bus which must remain fixed throughout a given operation. Configuration registers 54 also couples to control module 56 via bus 90 and to address generator 58 via bus 92. Control module 56 couples to source data FIFO 100, destination data FIFO 42, color expand module 44, rotate module 46, color expand mask 50, output data register 52and mask 60 via internal control bus 94. Internal control bus is a dynamic control bus which changes state as a given HGA operation progresses. Control module 56 also couples to memory controller 30 via HGA control outbus 96 and to address generator 58 via bus 98. Address generator 58 couplesto memory controller 30 via HGA address bus 200. In FIG. 1, the block representing mask 60 includes a pictorial representation which shows a register 60A coupled to an input of first multiplexer 60B whose output couple to an input of second multiplexer 60C. Bus 60D couples to an input of first multiplexer 60B and to an input of second multiplexer 60C. The output of second multiplexer 60C couples to HGA data out bus 80. This pictorial representation is included to assist in visualizing the operation of mask 60 in the detailed descriptions which follow. 
     The operation of HGA 10 according to the present invention is best understood by first discussing the overall task to be performed. At any moment of time, the next information to be displayed by the video display associated with HGA 10 is contained in a dedicated area of DRAM 22 known as the &#34;video frame buffer&#34;. In the video frame buffer, the stored data has a one-for-one correspondence with the pixels (picture elements or dots) of the video display. The number of bits per pixel in the buffer canbe varied depending upon the configuration (for example, one bit per pixel for monochrome display or four bits per pixel for color display). The frame buffer data is configured &#34;flat&#34; meaning that as consecutive bytes are read from DRAM by the video controller (not shown), consecutive pixelsare sent to the display. The pixels of the video display are commonly visualized as a vertical array of horizontal lines (horizontal rows of pixels). A typical display for HGA 10 would be 480 horizontal lines having640 pixels per line. Thus the overall function of HGA 10 is to obtain data from various appropriate DRAM locations separate from the video frame buffer, manipulate this data into the correct format (which may include expanding or repeating certain portions of the data) and transmitting the data to the required destination addresses in the video frame buffer. 
     Computer interface 40 in HGA 10 receives address, data and control signals from CPU 32 thereby allowing CPU 32 to generate input-output (I/O) writes and read to the registers of configuration register module 54. The CPU software uses I/O writes to initialize the configuration registers, defining the operation to be executed by HGA 10. A listing of the main parameters controlled by the registers of configuration register module 54are as follows: 
     (1) SRC, source address--a pointer to the area of DRAM where the source data for an operation is located. 
     (2) DEST, destination address--a pointer to the area of DRAM where the destination data for an operation is located. DEST is an address location in the active video frame buffer area of DRAM from where the video controller (not shown) reads the data to display on the video display. 
     (3) The number of bits of rotation required to align the SRC data with the DEST data. Rotation refers to shift of data generated as complete bytes ofinformation within HGA 10 into the appropriate single bit locations as DESTdata. 
     (4) The number of bits per pixel required as appropriate for monochrome, shades of gray or color display. 
     (5) Control bits specifying type of operation, subtype of operation, ALU operations to be performed and other related control information for operating HGA 10. 
     (6) Foreground and background colors for use in filling the area of the video frame buffer with one color or for color expanding monochrome data at a SRC by transforming a &#34;1&#34; in the SRC data to the foreground color anda &#34;0&#34; in the SRC data to the background color. 
     (7) Height and width parameters used to define the area to be operated on (how many scan lines high and how many bytes wide). 
     (8) Startmask and Endmask--values used to prevent modification of individual pixels (or bits within a byte) at the beginning and end of eachscan line in the video frame buffer. Because a byte can define up to eight pixels, masking provides a way to modify some pixels within the first and last word (2 bytes) of each scan line. This masking is required because not all operations necessarily occur on byte boundaries. 
     (9) Pitch--a number used to define the first address of each consecutive scan line. At the end of each scan line, the pitch value is added to the address of the current scan line to generate the address of the next scan line. 
     (10) Status bits--these bits report when an HGA operation is complete thereby providing the indication to the CPU 32 software to initiate another HGA operation. 
     Control module 56 receives input from configuration registers 54, address generator 58 and internal control bus 94. All timing and control for each particular HGA operation as well as the HGA control Signals to memory controller 30 are generated within control module 56. 
     Address generator 58 receives load and increment/decrement commands from control module 56 and receives initial values for SRC and DEST and for thetransfer size from the configuration registers. The current values for SRC and DEST are held in address generator 58 and passed via HGA address buss 200 to memory controller 30 at the appropriate times. The value for SRC orthe value for DEST (whichever is appropriate) is updated with each memory access. Accesses to DRAM are typically done four at a time in order to fill the four word deep source or destination FIFOs. Accessing four words at a time also improves DRAM bandwidth since the four locations are usually consecutive, allowing &#34;page mode access&#34; available from the DRAM. A transfer size counter within address generator 58 also decrements with each memory access. This count is checked for each access for an end of scan line condition or an end of transfer condition and the information passed back to control module 56. 
     In order to further describe and explain the operation of HGA 10 according to the present invention, the data flow for the case of a &#34;transparent color expand&#34; will be explained. For this example, a one bit per pixel (monochrome) pattern exists in an &#34;offscreen&#34; (i.e not in the video frame buffer) area of DRAM. This pattern is to be color expanded over a rectangular area of the video frame buffer to result, for example, in a four bit per pixel colored cursor character at the specified location on the video display screen. 
     The operation begins when CPU 32 initiates all of the appropriate registersand then writes to the &#34;go&#34; bit which is part of configuration registers 54to start the sequence of actions of control module 56. Address generator 58loads the SRC address and control module 56 issues a memory read request tomemory controller 30. Memory controller 30 will grant access to HGA 10 and will access the correct source data from the SRC address supplied by HGA 10. The source data will be returned to HGA 10 on HGA data in bus 62 together with a &#34;HGA ready&#34; bit which is transmitted as part of HGA control in bus 64. HGA 10 saves this data word in source data FIFO 100. Control module 56 then proceeds by requesting the next data word using thenext SRC address and the same sequence of actions. This process continues for four memory accesses until the source data FIFO 100 is full. Control module 56 then removes the memory read request from memory controller 30, thereby allowing other pending CPU requests to be serviced. A short time later, control module 56 loads the DEST address into address generator 58 and again requests memory access from memory controller 30, this time for four words of destination data. The destination data FIFO 42 is filled in the same manner just described for the source data FIFO 100. The first word of data from source data FIFO is available at source data bus 66 for color expand after the source data has been read. Control module 56 causesthe address generator 58 to load the destination address in preparation forwriting out the new data. 
     Color expand module 44 takes the sixteen bits of one bit per pixel data (the contents of source data FIFO 100) and expands the first four bits to sixteen bits (a 1:4 color expand) by converting each &#34;1&#34; of the source pattern to the four bit per pixel foreground color and each &#34;0&#34; of the source pattern to the four bit per pixel background color. The data outputof color expand module 44 is coupled to rotate module 46 via bus 68. A masksignal is sent from color expand module 44 to color expand mask module 50 via bus 70 for later use. 
     Rotate module 46 rotates the data from color expand module 44 to the right (corresponding to viewing the video frame buffer as horizontal lines of data scanned from left to right) This allows the data to be aligned with the correct pixel of the destination data. The destination data is not rotated since it is &#34;anchored&#34; in DRAM with each location having a fixed correspondence to a pixel of the video display. As each 16 bits of data pass through rotate module 46, multiplexers rotate the data the correct number of bits as commanded by configuration registers 54 and the bits &#34;rotated out&#34; are registered (re-stored) for rotation to the next 16 bits of data. At the end of a scan line, the saved data is discarded and the background color data is rotated to the first value of the next line. 
     ALU 48 performs required logical operations (not, and, or, etc.) on the output data from rotate module 46 and the destination data from destination data FIFO 42. These operations allow the pixel manipulation required by the drawing algorithm (the algorithm which controls the configuration of the cursor character of the current example). 
     Color expand mask 50 blocks out the bits of the output of ALU 48 which are not to be changed. For the current example of &#34;transparent color expand&#34;, source data bits which are &#34;0&#34; are required to be unmodified i.e. all &#34;1&#39;s&#34; in the source data word are expanded to the foreground color in the destination data word but the destination data word is left unchanged everywhere that a source data &#34;0&#34; has been expanded to the background color. It is this arrangement that makes the color expand &#34;transparent&#34; since result of this masking is that only the &#34;1&#39;s&#34; pattern (in this case the drawing of the cursor character) is color expanded while the surrounding background is left unchanged. By way of contrast, an &#34;opaque color expand&#34; would apply both the color expanded foreground color and thecolor expanded background color. An example might be a &#34;pop-up&#34; menu area of background color showing words of the foreground color. Color expand module 44 has previously transmitted am ask defining which bits to use from ALU 48 and which bits to use from destination data FIFO 42. The correct data is still at the output of destination data FIFO 42 because noread command has been transmitted from control module 56. The mask from color expand module 44 is rotated by the same amount and in the same manner as the source data was previously rotated by rotate module 46 thereby aligning the mask with the data. Multiplexers in the color expand mask are then used to select between data from ALU 48 and destination dataFIFO for each of the sixteen bits. 
     Output data register 52 stores the output of color expand mask 50 at the same time that control module 56 causes color expand module 44 to expand the next four bits of source data and also causes the destination data FIFO 42 to read out the next word of destination data. This process, from the readout of destination data FIFO 42 to storing in output data register52, take the same amount of time as one access to DRAM through the memory controller. The effect is that no additional delay time is added by these data path operations since the next data is processed while the current data is written to memory. 
     Mask 60 controls the masking of pixels at the beginning and the end of a video display scan line. All other data passes unchanged through this block but if control module 56 determines that the destination location tobe written is the start or the end of a scan line then masking will occur. To mask, control module 56 initiates a read cycle to the current memory location before the write. The read occurs in the same manner as a read toload a FIFO but the data is now saved into a 16 bit mask register 60A in mask 60 and not in an input FIFO. This data is then multiplexed with the data from output data register 52 with selection based on the 16 bit startmask or the 16 bit endmask from configuration registers 54. In FIG. 1, the block for mask 60 includes a pictorial which indicates the general register-multiplexer arrangement by showing register 60A, multiplexers 60Band 60C and interconnect 60D. For simplicity, the entire contents and exactinterconnection are not shown. Control module 56 supplies mask 60 with the information of whether to use startmask or endmask for the multiplexing and whether to pass this masked data or the unmasked data directly from output data register 52 as the data transmitted on HGA data out bus 80 to memory controller 30. 
     The above described operations continue until four words are written in DRAM. Control module then pauses for a short time to prevent monopolizing memory access, reads the next word off of source data FIFO 100, reads in the next four words of destination data into destination data FIFO and repeats. After all of the source data has been used, source data FIFO 100 is refilled along with destination data FIFO and the operation continues. This sequence of operations continues until control module 56 receives a signal from address generator 58 indicating that the transparent color expand is complete for all of the selected area. The &#34;done&#34; bit is then set in the status register in configuration registers 54 and HGA becomes idle. 
     As mentioned in the initial description of the prior art, a fundamental capability of all HGA systems is the ability to perform &#34;pattern transfers&#34; and &#34;pattern expands&#34;. This capability is important because if it is possible to define the required contents of the video frame buffer locations to be a repeating sequence of a single pattern element, the total number of DRAM cycles required to establish these contents in the video frame buffer are essentially cut in half. This improved operation ispossible in that once the basic pattern has been established and stored in the HGA hardware, all of the required destination data can be generated and loaded into the video frame buffer locations without making use of DRAM cycles to load and reload the source data FIFO. This provides a double benefit in that not only is the operation of the HGA itself speededup due to fewer DRAM cycle but the computer system overall is speeded up because more DRAM cycles are available for general use. 
     As indicated in the initial description, prior art HGA systems have implemented the pattern transfer and pattern expand capability by including dedicated pattern registers and multiplexer as part of the HGA hardware. FIG. 2 shows a representative block diagram describing a typicalpattern register and multiplexer hardware module 500 that would be requiredby prior art HGA systems. In pattern register and multiplexer hardware module 500, a pattern data bus 502 couples to a pattern registers module 504. Pattern registers module 504 contains pattern register 506 which couples to first pattern multiplexer 510 via bus 508, pattern register 512which couples to first pattern multiplexer 510 via bus 514, pattern register 516 which couples to first pattern multiplexer 510 via bus 518 and pattern register 520 which couples to first pattern multiplexer 510 via bus 522. Pattern control bus 524 couple as an input to pattern controlmodule 526 which has a first MUX control bus 528 coupled to first pattern multiplexer 510 and a second MUX control bus 530 coupled to second patternmultiplexer 532. The output of first pattern multiplexer 510 couples to an input of second pattern multiplexer 532 via bus 534. Another input of second pattern multiplexer 532 couples to source data bus 536. The output of second pattern multiplexer 532 couples to MUX output bus 538. Referringto FIG. 1, if the prior art pattern register and multiplexer hardware module 500 were to be incorporated into HGA 10, source data bus 66 would be removed to allow the output of source data FIFO to couple to source data bus 536 and the input of color expand module 44 to couple to MUX output bus 538. To complete the interconnects, pattern data bus 502 would couple to configuration data bus 88 and pattern control bus 524 would couple to internal control bus 94. 
     The operation of pattern register and multiplexer hardware module 500 wouldfollow a sequence similar to that previously described for HGA 10. CPU 32 would provide the initial load of the pattern registers via CPU interface 40 and configuration registers 54 into pattern data bus 502. When a pattern transfer or a pattern expand was required, control module 56 wouldsignal pattern control module 526 via pattern control bus 524 to operate second pattern multiplexer 532 so that the input data required for the HGAoperating sequence would come from the registers of pattern registers module 504 instead of from source data FIFO 100. This faster mode of operation without DRAM cycles to update source data FIFO would then continue with the repeated access of the pattern registers until the overall pattern expand or pattern transfer was completed. 
     Although the prior art approach of using a dedicated pattern register-multiplexer module within the HGA allows the stated advantages ofhaving a pattern expand and pattern transfer capability to be accomplished,the approach suffers, as previously discussed, at least two significant disadvantages: (1) The electrical structure of the HGA block itself must necessarily be larger and more complex in order to incorporate the gates and interconnects required to implement the pattern registers and the associated multiplexers and, (2) CPU program structures and execution times are made longer and more complicated because the module is an additional entity which must be interfaced, controlled and monitored. The central concept of the present invention is that an improved HGA design which accomplishes pattern transfers and pattern expands in a simpler and more cost effective manner by making some simple changes in the structure and operation of the source data FIFO 100 as will be shown by the discussion for FIG. 3. 
     A detailed block diagram for source data FIFO 100 is shown in FIG. 3. HGA data in bus 62 (a 16 bit wide bus) couples to the inputs to data latch 102, data latch 104, data latch 106 and data latch 108. The output of datalatch 102 couples to an input of MUX 118 via bus 110, the output of data latch 104 couples to another input of MUX 118 via bus 112, the output of data latch 106 couples to another input of MUX 118 via bus 114 and the output of data latch 108 couples to another input of MUX 118 via bus 116. The output of MUX 118 couples to SRC data bus 66. Bus WR-FIFO-N 140 (a 1 bit bus) couples to an input to write counter 120 and to an input of latchenable module 124. Bus DATA-READY-N 142 (a 1 bit bus) couples to another input to write counter 120 and to an input to read counter 132. The outputof write counter 120 couples via write bus 122 (a 2 bit binary bus) to an input of full detect module 128 and to an input of latch enable module 124. The output of latch enable module 124 couples via enable bus 126 (a 4bit &#34;one of four select&#34; bus) to inputs to data latch 102, data latch 104, data latch 106 and data latch 108. The output of full detect module 128 couples to full bus 130 (a 1 bit bus) which is part of internal control bus 94, Bus RD-FIFO-N 144 couples to an input to read counter 132. The output of read counter 132 couples to an input to MUX 118 and to an input to empty detect module 136 via read bus 134 (a 2 bit bus). The output of empty detect module 136 couples to empty bus 138 (a 1 bit bus) which is part of internal control bus 94. 
     Referring to FIG. 1 and FIG. 3, in HGA 10 according to the present invention, source FIFO will operate as a normal FIFO as previously described except during a pattern expand or pattern move command. For these commands, control module 56 will only cause one initial memory read of four values in order to fill the FIFO where the four values are source locations which define a desired pattern. After all of the data has been used, the empty flag (empty bus 138) will be active but will be ignored bycontrol module 56 so that no new data is read into the FIFO. The next assertion of count signal on bus RD-FIFO-N 144 causes read counter 132 to roll over so that the first word location (data latch 102) is once again selected via read bus 134 coupled to MUX 118 so that the pattern will be repeated. 
     Thus the uniqueness of the design of HGA 10 according to the present invention is that although the pattern fill and pattern transfer capabilities are fully obtained, the dedicated pattern registers and associated program structures of the &#34;prior art&#34; module are not required. The pattern fill algorithm uses the gates already required to support other HGA function with a minor control modification to allow the FIFO to &#34;roll over&#34; to repeat the pattern. Thus the same functionality is available without the penalty of the four pattern registers, the 16 bit 4:1 MUX and pattern control and the 16 bit 2:1 E in the data path. Also, the pattern is easier to program since the pattern data doesn&#39;t have to beread from DRAM by the CPU and outputted to the pattern registers for each word of the pattern, The CPU only has to load the SRC address register in the HGA and then do the operation in the normal fashion. 
     While the invention has been particularly shown and described with reference to a preferred embodiment thereof, it will be understood by those skilled in the art that changes in form and detail may be made therein without departing from the spirit and the scope of the invention. For example, different implementations of the internal structure of the HGA and of its controlling software could be used as long as the normal and recirculating modes for operating the source data FIFO were preserved.