[comp.sys.atari.st] Blitter call

c162-br@zooey.Berkeley.EDU (Warner Young) (05/10/88)

This is essentially the file I received on disk from Atari.  This one only
describes how to use the call to the Blitter, it does not give information
about the internal format of the chip.  If I have time, I will post the
document for that (although it's much longer).  BTW, this has been formatted
for printout on 66 line printers already.

Read and enjoy!

------ cut here ------ ------ cut here ------ ------ cut here ------
     0x40 Blitmode - Get/Set Blitter Configuration

     Synopsis: WORD Blitmode(flag);
               WORD flag;

          Extended BIOS  (trap #14)  function number 0x40 (64 decimal) gets and
          sets the blitter configuration.  If  'flag' is  -1 (0xffff),  then no
          set operation  is performed, and the current blitter configuration is
          returned.  If 'flag' is not -1, then the blitter configuration is set
          as follows:

               bit 0:         0: set blit mode to software.
                              1: set blit mode to hardware.

               bits 1-14:     undefined, reserved.

               bit 15:        must be zero.

          The blitter  configuration before the set is returned in the low word
          of D0.  The fields are:

               bit 0:         0: blits are being done in software.
                              1: blits are being done in hardware.

               bit 1:         0: no chip is available.
                              1: a blit chip is installed.

               bits 2-14:     undefined, reserved.

               bit 15:        always retrned as zero.

          If an attempt is made to set the blit mode to 'hard' on a system that
          does not contain a blit chip, the mode is forced to software.

          The  reserved  fields  are  for future blitter capabilities and other
          graphics chips.  They should be  treated as  "don't care"  fields and
          should be  maintained (intact)  because they  will acquire meaning in
          the future.

          This call works on all ROM versions of the operating system.














                            XBIOS Blitter Call - page 1











               Example - from C
               -------   ---- -

               #define Blitmode(a) xbios(64,a);

                    curmode = Blitmode(-1);       /* save state       */
                    Blitmode(curmode | 1);        /* turn on blit     */
                    do_stuff();                   /* do processing    */
                    Blitmode(curmode);            /* restore state    */


               Example - from assembly
               -------   ---- --------
                    move.w    #-1,-(sp)      ; do Blitmode(-1)
                    move.w    #$40,-(sp)
                    trap      #14
                    addq      #4,sp
                    move.w    d0,-(sp)       ; save state
                    or.w      #1,d0          ; make sure it is on
                    move.w    d0,-(sp)       ; do Blitmode(d0)
                    move.w    #$40,-(sp)
                    trap#     14
                    addq      #4,sp
                                   ;
                                   ; do some processing
                                   ; (the old state is
                                   ;  still on the stack)
                    move.w    #$40,-(sp)     ;restore state
                    trap      #14
                    addq      #4,sp
























                            XBIOS Blitter Call - page 2