; Assembler header file for OSSpriteOp
; Written by DefMod (Dec  9 2012) on Sun Dec  9 15:43:51 2012
; Jonathan Coxhead, jonathan@doves.demon.co.uk, 21 Aug 1995

; OSLib---efficient, type-safe, transparent, extensible,
; register-safe API coverage of RISC OS
; 
; Copyright (c) 1994-2012 Jonathan Coxhead and OSLib maintainers
; 
; Licence:
; 
;    OSLib is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 1, or (at your option)
; any later version - and this with the following clarification and
; special exception:
; 
;    Linking this library statically or dynamically with other modules
; is making a combined work based on this library. Thus, the terms
; and conditions of the GNU General Public License cover the whole
; combination.
; 
;    As a special exception, the copyright holders of this library
; give you permission to link this library with independent modules
; to produce an executable, regardless of the license terms of these
; independent modules, and to copy and distribute the resulting
; executable under terms of your choice, provided that you also meet,
; for each linked independent module, the terms and conditions of the
; license of that module. An independent module is a module which is
; not derived from or based on this library. If you modify this
; library, you may extend this exception to your version of the library,
; but you are not obliged to do so. If you do not wish to do so, delete
; this exception statement from your version.
; 
;    OSLib is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.
; 
;    You should have received a copy of the GNU General Public License
; along with this programme; if not, write to the Free Software
; Foundation, Inc, 675 Mass Ave, Cambridge, MA 02139, USA.

        [       :LNOT: :DEF: OSSpriteOp_Hdr
        GBLS    OSSpriteOp_Hdr

        [       :LNOT: :DEF: Get_Types
        GBLS    Get_Types
        ]
        [       :LNOT: :DEF: Types_Hdr
Get_Types                       SETS    "GET oslib/Types.Hdr"
        |
Get_Types                       SETS    ""
        ]
        $Get_Types

        [       :LNOT: :DEF: Get_OS
        GBLS    Get_OS
        ]
        [       :LNOT: :DEF: OS_Hdr
Get_OS                          SETS    "GET oslib/OS.Hdr"
        |
Get_OS                          SETS    ""
        ]
        $Get_OS

;Symbols for constants
OSSpriteOp_NameLimit            *       12
OSSpriteOp_SystemArea           *       &0
OSSpriteOp_UserArea             *       &100
OSSpriteOp_Name                 *       &100
OSSpriteOp_Ptr                  *       &200
OSSpriteOp_NewStyle             *       &1
OSSpriteOp_XRes                 *       &3FFE
OSSpriteOp_XResShift            *       1
OSSpriteOp_YRes                 *       &7FFC000
OSSpriteOp_YResShift            *       14
OSSpriteOp_Type                 *       &78000000
OSSpriteOp_TypeShift            *       27
OSSpriteOp_AlphaMask            *       &80000000
OSSpriteOp_TypeOld              *       &0
OSSpriteOp_Type1bpp             *       &1
OSSpriteOp_Type2bpp             *       &2
OSSpriteOp_Type4bpp             *       &3
OSSpriteOp_Type8bpp             *       &4
OSSpriteOp_Type16bpp            *       &5
OSSpriteOp_Type32bpp            *       &6
OSSpriteOp_TypeCMYK             *       &7
OSSpriteOp_Type16bpp64K         *       &A
OSSpriteOp_Unspecified          *       &100
Error_SpriteOpNoWorkSpace       *       &80
Error_SpriteOpNotGraphics       *       &81
Error_SpriteOpNoRoom            *       &82
Error_SpriteOpNoSprites         *       &83
Error_SpriteOpNotEnoughRoom     *       &85
Error_SpriteOpDoesntExist       *       &86
Error_SpriteOpBadSpriteFile     *       &700
Error_SpriteOpNoRoomToMerge     *       &701
Error_SpriteOpInvalidSecondPtr  *       &702
Error_SpriteOpInvalidRowOrCol   *       &703
Error_SpriteOpInvalidHeight     *       &704
Error_SpriteOpInvalidWidth      *       &705
Error_SpriteOpNoRoomToInsert    *       &706
Error_SpriteOpSpriteAlreadyExists *       &707
Error_SpriteOpInvalidSpriteMode *       &708
Error_SpriteOpBadReasonCode     *       &709
Error_SpriteOpCantDoSystem      *       &70A
Error_SpriteOpBadTranslation    *       &70B
Error_SpriteOpBadGreyScale      *       &70C
Error_SpriteOpBadPointerShape   *       &70D
Error_SpriteOpBadAppend         *       &70E
Error_SpriteOpCantInTeletext    *       &70F
Error_SpriteOpInvalidSaveArea   *       &710
Error_SpriteOpSpriteIsCurrentDest *       &711
Error_SpriteOpBadFlags          *       &712
Error_SpriteOpBadCoordBlock     *       &713
Error_SpriteOpBadSourceRectangle *       &714
Error_SpriteOpBadTransformation *       &715
Error_SpriteOpBadDepth          *       &716
Error_SpriteOpBadSwitchDepth    *       &717
Error_SpriteOpBadColourMap      *       &720
Error_SpriteOpBadJPEGUnsupported *       &721
Error_SpriteOpBadJPEGProgressive *       &722
Error_SpriteOpBadType           *       &723
OSSpriteOp_UseMask              *       &8
OSSpriteOp_UsePalette           *       &10
OSSpriteOp_GivenWideEntries     *       &20
OSSpriteOp_Dithered             *       &40
OSSpriteOp_GivenColourMapping   *       &80
OSSpriteOp_Translucency         *       &FF00
OSSpriteOp_TranslucencyShift    *       8
OSSpriteOp_PointerShape         *       &F
OSSpriteOp_PointerShapeShift    *       0
OSSpriteOp_PointerIgnoreShapeData *       &10
OSSpriteOp_PointerIgnorePalette *       &20
OSSpriteOp_PointerIgnoreShape   *       &40
OSSpriteOpRemoveAlphaChannelFlags_CutOffPointShift *       0
OSSpriteOpRemoveAlphaChannelFlags_CutOffPointMask *       255
OSSpriteOpRemoveAlphaChannelFlags_RemoveMask *       &100
OSSpriteOpAddAlphaChannelFlags_Add *       &80000000
OSSpriteOp_DestinationCoords    *       &1
OSSpriteOp_SourceRectangle      *       &2
ServiceSpriteReregisterType_SoftwareExt *       &0
ServiceSpriteReregisterType_AccelerationExt *       &1
ServiceSpriteReregisterType_MonitorOrVectorExt *       &2

;Symbols for structure offsets and sizes
        ^       0
OSSpriteOp_TransTab_c           #       Byte
OSSpriteOp_TransTab             *       @

        ^       0
OSSpriteOp_ColourMapping_workspace #       Ptr
OSSpriteOp_ColourMapping_function #       Ptr
OSSpriteOp_ColourMapping        *       @

        ^       0
OSSpriteOp_Area_size            #       Int
OSSpriteOp_Area_sprite_count    #       Int
OSSpriteOp_Area_first           #       Int
OSSpriteOp_Area_used            #       Int
OSSpriteOp_Area                 *       @

        ^       0
OSSpriteOp_Header_size          #       Int
OSSpriteOp_Header_name          #       12*Char
OSSpriteOp_Header_width         #       Int
OSSpriteOp_Header_height        #       Int
OSSpriteOp_Header_left_bit      #       Int
OSSpriteOp_Header_right_bit     #       Int
OSSpriteOp_Header_image         #       Int
OSSpriteOp_Header_mask          #       Int
OSSpriteOp_Header_mode          #       OS_Mode
OSSpriteOp_Header               *       @

        ^       0
        #       Bits
OSSpriteOp_Flags                *       @

        ^       0
        #       Bits
OSSpriteOp_ModeWord             *       @

OSSpriteOp_Id                   *       4 ;abstract type
        ^       0
OSSpriteOp_SaveArea_a           #       Int
OSSpriteOp_SaveArea             *       @

OSSpriteOp_Action               *       OS_Action

        ^       0
        #       Bits
OSSpriteOp_PointerFlags         *       @

        ^       0
        #       Bits
OSSpriteOpRemoveAlphaChannel_Flags *       @

        ^       0
        #       Bits
OSSpriteOpAddAlphaChannel_Flags *       @

        ^       0
        #       Bits
OSSpriteOp_TrfmFlags            *       @

        ^       0
        #       Bits
ServiceSpriteReregister_Type    *       @


;Symbols for SWI's and SWI reason codes
XOS_SpriteOp                    *       &2002E
OS_SpriteOp                     *       &2E

OSSpriteOp_ScreenSave           *       &2
   ;Entry
   ;  R0 = &2
   ;  R2 -> file_name (String)
   ;  R3 = save_palette (Bool)

OSSpriteOp_ScreenLoad           *       &3
   ;Entry
   ;  R0 = &3
   ;  R2 -> file_name (String)

OSSpriteOp_ReadAreaCB           *       &8
   ;Entry
   ;  R0 = &8 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;Exit
   ;  R2 = size (Int)
   ;  R3 = count (Int)
   ;  R4 = first (Int)
   ;  R5 = used (Int)

OSSpriteOp_ClearSprites         *       &9
   ;Entry
   ;  R0 = &9 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)

OSSpriteOp_LoadSpriteFile       *       &A
   ;Entry
   ;  R0 = &A :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 -> file_name (String)

OSSpriteOp_MergeSpriteFile      *       &B
   ;Entry
   ;  R0 = &B :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 -> file_name (String)

OSSpriteOp_SaveSpriteFile       *       &C
   ;Entry
   ;  R0 = &C :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 -> file_name (String)

OSSpriteOp_ReturnName           *       &D
   ;Entry
   ;  R0 = &D :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = buffer (pointer to String)
   ;  R3 = size (Int)
   ;  R4 = sprite_no (Int)
   ;Exit
   ;  R3 = used (Int)

OSSpriteOp_GetSprite            *       &E
   ;Entry
   ;  R0 = &E :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 -> sprite_name (String)
   ;  R3 = get_palette (Bool)
   ;Exit
   ;  R2 -> header (OSSpriteOp_Header)

OSSpriteOp_CreateSprite         *       &F
   ;Entry
   ;  R0 = &F :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 -> sprite_name (String)
   ;  R3 = create_palette (Bool)
   ;  R4 = width (Int)
   ;  R5 = height (Int)
   ;  R6 = mode (OS_Mode)

OSSpriteOp_GetSpriteUserCoords  *       &10
   ;Entry
   ;  R0 = &10 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 -> sprite_name (String)
   ;  R3 = get_palette (Bool)
   ;  R4 = x0 (Int)
   ;  R5 = y0 (Int)
   ;  R6 = x1 (Int)
   ;  R7 = y1 (Int)

OSSpriteOp_VerifyArea           *       &11
   ;Entry
   ;  R0 = &11 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)

OSSpriteOp_SelectSprite         *       &18
   ;Entry
   ;  R0 = &18 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;Exit
   ;  R2 -> header (OSSpriteOp_Header)

OSSpriteOp_DeleteSprite         *       &19
   ;Entry
   ;  R0 = &19 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)

OSSpriteOp_RenameSprite         *       &1A
   ;Entry
   ;  R0 = &1A :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 -> sprite_name (String)

OSSpriteOp_CopySprite           *       &1B
   ;Entry
   ;  R0 = &1B :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 -> sprite_name (String)

OSSpriteOp_PutSprite            *       &1C
   ;Entry
   ;  R0 = &1C :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R5 = action (OS_Action)

OSSpriteOp_CreateMask           *       &1D
   ;Entry
   ;  R0 = &1D :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)

OSSpriteOp_RemoveMask           *       &1E
   ;Entry
   ;  R0 = &1E :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)

OSSpriteOp_InsertRow            *       &1F
   ;Entry
   ;  R0 = &1F :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = row (Int)

OSSpriteOp_DeleteRow            *       &20
   ;Entry
   ;  R0 = &20 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = row (Int)

OSSpriteOp_FlipAboutXAxis       *       &21
   ;Entry
   ;  R0 = &21 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)

OSSpriteOp_PutSpriteUserCoords  *       &22
   ;Entry
   ;  R0 = &22 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = action (OS_Action)

OSSpriteOp_AppendSprite         *       &23
   ;Entry
   ;  R0 = &23 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id0 (OSSpriteOp_Id)
   ;  R3 = id1 (OSSpriteOp_Id)
   ;  R4 = append_vertically (Bool)

OSSpriteOp_SetPointerShape      *       &24
   ;Entry
   ;  R0 = &24 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = pointer_flags (OSSpriteOp_PointerFlags)
   ;  R4 = xactive (Int)
   ;  R5 = yactive (Int)
   ;  R6 -> factors (OS_Factors)
   ;  R7 -> trans_tab (OSSpriteOp_TransTab)

OSSpriteOp_ReadPaletteSize      *       &25
   ;Entry
   ;  R0 = &25 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = &FFFFFFFF
   ;Exit
   ;  R3 = size (Int)
   ;  R4 -> palette (OS_SpritePalette)
   ;  R5 = mode (OS_Mode)

OSSpriteOp_RemovePalette        *       &25
   ;Entry
   ;  R0 = &25 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = &0
   ;Exit
   ;  R4 corrupted
   ;  R5 corrupted

OSSpriteOp_CreatePalette        *       &25
   ;Entry
   ;  R0 = &25 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = &1
   ;Exit
   ;  R4 corrupted
   ;  R5 corrupted

OSSpriteOp_CreateTruePalette    *       &25
   ;Entry
   ;  R0 = &25 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = &80000000
   ;Exit
   ;  R4 corrupted
   ;  R5 corrupted

OSSpriteOp_RemoveAlphaChannel   *       &26
   ;Entry
   ;  R0 = &26 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = aflags (OSSpriteOpRemoveAlphaChannel_Flags)

OSSpriteOp_AddAlphaChannel      *       &26
   ;Entry
   ;  R0 = &26 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = &80000000 :OR: aflags (OSSpriteOpAddAlphaChannel_Flags)

OSSpriteOp_ReadSpriteInfo       *       &28
   ;Entry
   ;  R0 = &28 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;Exit
   ;  R3 = width (Int)
   ;  R4 = height (Int)
   ;  R5 = mask (Bool)
   ;  R6 = mode (OS_Mode)

OSSpriteOp_ReadPixelColour      *       &29
   ;Entry
   ;  R0 = &29 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;Exit
   ;  R5 = gcol (OS_GCOL)
   ;  R6 = tint (OS_Tint)

OSSpriteOp_ReadPixelColourDeep  *       &29
   ;Entry
   ;  R0 = &29 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;Exit
   ;  R5 = gcol (Bits)
   ;  R6 = tint (OS_Tint)

OSSpriteOp_WritePixelColour     *       &2A
   ;Entry
   ;  R0 = &2A :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = gcol (OS_GCOL)
   ;  R6 = tint (OS_Tint)

OSSpriteOp_WritePixelColourDeep *       &2A
   ;Entry
   ;  R0 = &2A :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = gcol (Bits)
   ;  R6 = tint (OS_Tint)

OSSpriteOp_ReadPixelMask        *       &2B
   ;Entry
   ;  R0 = &2B :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;Exit
   ;  R5 = solid (Bool)

OSSpriteOp_ReadPixelMaskAlpha   *       &2B
   ;Entry
   ;  R0 = &2B :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;Exit
   ;  R5 = opacity (Int)

OSSpriteOp_WritePixelMask       *       &2C
   ;Entry
   ;  R0 = &2C :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = solid (Bool)

OSSpriteOp_WritePixelMaskAlpha  *       &2C
   ;Entry
   ;  R0 = &2C :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = opacity (Int)

OSSpriteOp_InsertColumn         *       &2D
   ;Entry
   ;  R0 = &2D :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = column (Int)

OSSpriteOp_DeleteColumn         *       &2E
   ;Entry
   ;  R0 = &2E :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = column (Int)

OSSpriteOp_FlipAboutYAxis       *       &2F
   ;Entry
   ;  R0 = &2F :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)

OSSpriteOp_PlotMask             *       &30
   ;Entry
   ;  R0 = &30 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)

OSSpriteOp_PlotMaskUserCoords   *       &31
   ;Entry
   ;  R0 = &31 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)

OSSpriteOp_PlotMaskScaled       *       &32
   ;Entry
   ;  R0 = &32 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 -> factors (OS_Factors)

OSSpriteOp_PaintCharScaled      *       &33
   ;Entry
   ;  R0 = &33
   ;  R1 = c (Char)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R6 -> factors (OS_Factors)

OSSpriteOp_PutSpriteScaled      *       &34
   ;Entry
   ;  R0 = &34 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = action (OSSpriteOp_Action)
   ;  R6 -> factors (OS_Factors)
   ;  R7 -> trans_tab (OSSpriteOp_TransTab)

OSSpriteOp_PutSpriteScaledMapped *       &34
   ;Entry
   ;  R0 = &34 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = &80 :OR: action (OSSpriteOp_Action)
   ;  R6 -> factors (OS_Factors)
   ;  R7 -> mapping (OSSpriteOp_ColourMapping)

OSSpriteOp_PutSpriteGreyScaled  *       &35
   ;Entry
   ;  R0 = &35 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = &0
   ;  R6 -> factors (OS_Factors)
   ;  R7 -> trans_tab (OSSpriteOp_TransTab)

OSSpriteOp_RemoveLeftHandWastage *       &36
   ;Entry
   ;  R0 = &36 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)

OSSpriteOp_PlotMaskTrfm         *       &37
   ;Entry
   ;  R0 = &37 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = trfm_flags (OSSpriteOp_TrfmFlags)
   ;  R4 -> source_rect (OS_Box)
   ;  R6 -> trfm (OS_Trfm)

OSSpriteOp_PutSpriteTrfm        *       &38
   ;Entry
   ;  R0 = &38 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = trfm_flags (OSSpriteOp_TrfmFlags)
   ;  R4 -> source_rect (OS_Box)
   ;  R5 = action (OSSpriteOp_Action)
   ;  R6 -> trfm (OS_Trfm)
   ;  R7 -> trans_tab (OSSpriteOp_TransTab)

OSSpriteOp_PutSpriteTrfmMapped  *       &38
   ;Entry
   ;  R0 = &38 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = trfm_flags (OSSpriteOp_TrfmFlags)
   ;  R4 -> source_rect (OS_Box)
   ;  R5 = &80 :OR: action (OSSpriteOp_Action)
   ;  R6 -> trfm (OS_Trfm)
   ;  R7 -> mapping (OSSpriteOp_ColourMapping)

OSSpriteOp_InsertDeleteRows     *       &39
   ;Entry
   ;  R0 = &39 :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = row_no (Int)
   ;  R4 = row_count (Int)

OSSpriteOp_InsertDeleteColumns  *       &3A
   ;Entry
   ;  R0 = &3A :OR: flags (OSSpriteOp_Flags)
   ;  R1 = area (pointer to OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = column_no (Int)
   ;  R4 = column_count (Int)

OSSpriteOp_SwitchOutputToSprite *       &3C
   ;Entry
   ;  R0 = &3C :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = save_area (pointer to OSSpriteOp_SaveArea)
   ;Exit
   ;  R0 = context0 (Int)
   ;  R1 = context1 (Int)
   ;  R2 = context2 (Int)
   ;  R3 = context3 (Int)

OSSpriteOp_SwitchOutputToMask   *       &3D
   ;Entry
   ;  R0 = &3D :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = save_area (pointer to OSSpriteOp_SaveArea)
   ;Exit
   ;  R0 = context0 (Int)
   ;  R1 = context1 (Int)
   ;  R2 = context2 (Int)
   ;  R3 = context3 (Int)

OSSpriteOp_ReadSaveAreaSize     *       &3E
   ;Entry
   ;  R0 = &3E :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;Exit
   ;  R3 = size (Int)

XOSSpriteOp_UnswitchOutput      *       &2002E
OSSpriteOp_UnswitchOutput       *       &2E
   ;Entry
   ;  R0 = context0 (Int)
   ;  R1 = context1 (Int)
   ;  R2 = context2 (Int)
   ;  R3 = context3 (Int)

OSSpriteOp_PlotTiledSprite      *       &41
   ;Entry
   ;  R0 = &41 :OR: flags (OSSpriteOp_Flags)
   ;  R1 -> area (OSSpriteOp_Area)
   ;  R2 = id (OSSpriteOp_Id)
   ;  R3 = x (Int)
   ;  R4 = y (Int)
   ;  R5 = action (OSSpriteOp_Action)
   ;  R6 -> factors (OS_Factors)
   ;  R7 -> trans_tab (OSSpriteOp_TransTab)

SpriteV                         *       &1F

Service_SwitchingOutputToSprite *       &72
   ;Entry
   ;  R1 = &72

Service_SpriteReregister        *       &E1
   ;Entry
   ;  R0 = type (ServiceSpriteReregister_Type)
   ;  R1 = &E1

        ]
        END
