;References:
;swi - vector_handler_forward
;swi_OS_Module - vector_handler_trap

;os_byte_121_122_129
;-------------------
;Ensures frame pacing is adhered to when a key is pressed
;
;PRM1-892             - OS_Byte 121
;PRM1-894             - OS_Byte 122
;PRM1-899 / PRM5a-163 - OS_Byte 129

.os_byte_121_122_129
 LDR     R12, force_vsync
 TEQ     R12, #0			;do we need to slow down?
 BEQ     vector_handler_forward		;NO

 LDR     R12, os_byte_19_happened
 TEQ     R12, #0			;has a VSync occurred?
 BNE     vector_handler_forward		;YES

 ADR     R12, _SPSR			;buffer for C/SPSR (pre_swi_veneer)
 BL      pre_SWI_veneer			;call SWI that follows
 SWI     XOS_Byte
 BL      post_SWI_veneer

 STMFD   R13!, {R0-R2}
 MOV     R0, #19
 SWI     XOS_Byte			;force VSync(s)
 LDMFD   R13!, {R0-R2}
B       exit_SWI_veneer


 ._SPSR		DBD 4
