;os_byte_176
;-----------
;PRM1-415 - Read/write 50Hz counter
;
;Entry:
; R0 - 176
; R1 - 0 to read or new value to write
; R2 - 255 to read or 0 to write
; R11 - pointer to VARS
;
;Exit:
; R2 - corrupted

.os_byte_176
 BL      pre_SWI_veneer			;call SWI that follows
 SWI     XOS_ReadMonotonicTime		;PRM1-446

 MOV     R14, R1
 MOV     R0, R0, LSR #1			;divide down to 50Hz
 LDRB    R1, [R11, #os_byte_176_time - VARS]
 AND     R0, R0, #&FF			;only need one byte
 RSB     R0, R0, #&FF			;needs to count down
 SUB     R1, R0, R1
 AND     R1, R1, #&FF

 TEQ     R2, #0				;are we trying to write?
 ANDEQ   R0, R0, R2			;YES
 EOREQ   R0, R0, R14
 SUBEQ   R0, R1, R0
 LDREQB  R14, [R11, #os_byte_176_time - VARS]
 ADDEQ   R0, R0, R14
 STREQB  R0, [R11, #os_byte_176_time - VARS]

 MOV     R0, #176			;preserve R0
B       exit_SWI_veneer
