;R11 - pointer to VARS

.vector_handler_2E
 AND     R14, R0, #&FF			;get op
 TEQ     R14, #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     R11, #3			;OS_SpriteOp 3? PRM1-792
 BEQ     _os_spriteop_3			;YES, ScreenLoad

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

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

._os_spriteop_52
 LDR     R14, [R11, #emulate_RISCOS - VARS]
 CMP     R14, #&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     R14, [R11, #emulate_RISCOS - VARS]
 CMP     R14, #&350 << 8		;below RO3.50?
 BHS     vector_handler_forward		;NO, pass to RISCOS

 BL      pre_SWI_veneer			;call SWI that follows
 SWI     XADFFS_DoNothing
 MOV     R0, R2
 BL      Entry_ADFScreenLoad
 MOVVC   R0, #3
B       exit_SWI_veneer




._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     R14, [R11, #emulate_RISCOS - VARS]
 CMP     R14, #&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