.vector_handler_2E
 AND     R12, R0, #&FF			;get op
 TEQ     R12, #36			;OS_SpriteOp 36? PRM1-815
 BEQ     _os_spriteop_36		;YES, Set pointer shape

 BL      check_taskID			;is the task supported?
 BNE     vector_handler_forward		;NO, call directly

 TEQ     R12, #3			;OS_SpriteOp 3? PRM1-792
 BEQ     _os_spriteop_3			;YES, ScreenLoad

 TEQ     R12, #5			;no op (Letrouve)
 BEQ     vector_handler_trap

 TEQ     R12, #52			;OS_SpriteOp 52? PRM1-830
 BNE     vector_handler_forward		;NO
					;YES, Put sprite scaled

._os_spriteop_52
 LDR     R12, emulate_RISCOS
 CMP     R12, #&500 << 8		;below RO5.00?
 BHS     vector_handler_forward		;NO, pass to RISCOS

 CMN     R7, #1				;is the translation table valid?
 MOVEQ   R7, #0				;NO, correct it
B       vector_handler_forward		;hand back to OS




._os_spriteop_3
 LDR     R12, emulate_RISCOS
 CMP     R12, #&350 << 8		;below RO3.50?
 BHS     vector_handler_forward		;NO, pass to RISCOS

 ADR     R12, _SPSR
 BL      pre_SWI_veneer			;call SWI that follows
; SWI     XOS_SpriteOp			;PRM1-792
; BL      post_SWI_veneer
; SWIVC   XOS_RemoveCursors		;PRM1-739
 SWI     XADFFS_DoNothing
 MOV     R0, R2
 BL      Entry_ScreenLoad
 MOV     R0, #3
 ADR     R12, _SPSR

B       exit_SWI_veneer

 ._SPSR     DBD 4




._os_spriteop_36			;PRM1-815
 ADR     R6, _scaling			;force 1:1 scaling

 BL      check_taskID			;is the task supported?
 BNE     vector_handler_forward		;NO, pass to OS

 LDR     R12, emulate_RISCOS
 CMP     R12, #&380 << 8		;RO3.8 or below?
 BHI     vector_handler_forward		;NO, pass to RISCOS

; CMN     R6, #1				;does R6=-1
; MOVEQ   R6, #0				;YES, correct to R6=0

 CMN     R7, #1				;does R7=-1
 MOVEQ   R7, #0				;YES, correct to R7=0
B       vector_handler_forward		;hand back to OS

 ._scaling DCD 1, 1, 1, 1