How to drive DragASprite

How to do a drag
----------------

i) Prepare a sprite to be dragged (this may be trivial as the application may
        have a suitable sprite already to hand).
ii) Perform a DragASprite_Start. This takes a copy of your sprite (so you can
        dispose of your copy whenever you like) and starts a Wimp drag.
iii) When the Wimp sends you an indication that your drag has finished do
        a DragASprite_Stop which will release the workspace necessary for
        doing a drag-a-sprite.

The Swis
--------

DragASprite_Start (0x42400)

This Swi starts dragging a sprite. The sprite you supply is copied, so there
is no problem with you disposing of your copy of the sprite.

In:
r0 = flags:
        Bits    Meaning
        0-1     Horizontal location of sprite in box:
                00      Left
                01      Centre
                10      Right
                11      <undefined>
        2-3     Vertical location of sprite in box:
                00      Bottom
                01      Centre
                10      Top
                11      <undefined>
        4-5     Drag bounding box is:
                00      Whole screen
                01      Display area of window that the pointer's over
                10      User specified
                11      <undefined>
        6       Bounding box applies to:
                0       The box
                1       The pointer
        7       Control of drop-shadow:
                0       Don't do a drop-shadow
                1       Make a drop shadow when copying the sprite
        8-31    Reserved for future use, should be set to 0.
r1 = sprite area:
        0       System sprite area
        1       Wimp sprite area
        other   Address of sprite area
r2 = sprite name^
r3 = Pointer to 16-byte block containing box:
        Offset  Use
        0       x0
        4       y0
        8       x1
        12      y1
r4 = Pointer to optional (see flags) 16-byte block containing bounding box:
        Offset  Use
        0       x0
        4       y0
        8       x1
        12      y1

Out:
All registers preserved.

DragASprite_Stop (0x42401)

This Swi terminates any current drag operation and releases any
drag-a-sprite workspace claimed to do a drag. It is expected that this Swi
will be called when the user_drag_box reason is received by the application.

In:
-
Out:
-
