[comp.sys.amiga.tech] How well does the blitter blit?

griffith@eecs.cs.pdx.edu (Michael Griffith) (09/02/90)

I need to know if it is possible to clear bit-wise areas of memory with the
blitter. For example, if I wanted to clear a three bit wide swath in memory
with the blitter without disturbing the bits to the right and left could I
do it in a single blit? In the case of normal clearing this would involve
leaving all channels except the destination (D) cleared and using a minterm
byte of 0. However, it seems that it would be more complicated to clear an
area that is not an increment of 16 bits wide.

What I need to know is if any of your bright programmers out there have a
solution to my dilema. Here is a description of the reason why I'm trying
to do this:

   In "Computer Graphics: Systems & Concepts" by Rod Salmon and Mel
   Slater, Chapter 11, there is a discussion of a generic black and
   white blitting routine called BitBLT. BitBLT takes the following
   parameters:

      BitBLT(Op, SourceForm, SourcePos, SourceSize,
                 DestForm,   DestPos,   DestSize)

   The operation is a 4-bit value describing the method to use in
   combining the source and destination forms (forms being black
   and white bitmaps with a header describing their size). A
   partial table for the combination rules follows:

      Bit Pattern   Boolean Expression           Name of Operation

         0000        d := 0                         CR_0
         0001        d := s & d                     CR_AND
         0010        d := s & (~d)                  CR_SND
         0011        d := s                         CR_S

          .
          .
          .

         1110        d := ~(s & d)                  CR_NAND
         1111        d := 1                         CR_1

   The pos and size variables all consist of a pair of integers. The
   idea being to take the source and destination bitmaps, align and
   clip them according to the pos and size variables and combine
   them using the operation storing the result in the destination.
   The book mentions the fact that different architectures may make
   different requirements as to the alignment of the bit planes.
   Yet I would like to make the routine function on non-aligned
   blocks for use in clearing space for windows, etc., which is what
   the routine is intended to be used for. I would greatly appreciate
   if if some kind soul could point me in the right direction.


| Michael Griffith                     | If I had an opinion it certainly   |
| griffith@eecs.ee.pdx.edu             | wouldn't be the same one as        |
| ...!tektronix!psueea!eecs!griffith   | Portland State University anyways. |