;Assembler header file for OSSpriteOp
;written by DefMod (Dec 31 2005) on Sat Dec 31 14:03:54 2005
;Jonathan Coxhead, jonathan@doves.demon.co.uk, 21 Aug 1995

        [       :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_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
OSSpriteOp_DestinationCoords    *       &1
OSSpriteOp_SourceRectangle      *       &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
OSSpriteOp_TrfmFlags            *       @


;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_ReadSpriteSize       *       &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_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)

SpriteV                         *       &1F

Service_SwitchingOutputToSprite *       &72
   ;Entry
   ;  R1 = &72

        ]
        END
