; returns the OS identifier for the OS ADFFS is emulating

; R11 - pointer to VARS

.os_byte_129
 TEQ     R1, #0
 TEQEQ   R2, #&FF			;OS identifier?
 BLEQ    check_taskID			;is the task supported?
 BLEQ    check_SWI_in_appspace_or_JIT
 BNE     vector_handler_forward		;NO, call directly

 LDR     R14, [R11, #emulate_RISCOS - VARS]
 CMP     R14, #&500 << 8		;is it set?
 BHS     vector_handler_forward		;NO

 MOV     R2, #0

 CMP     R14, #&410 << 8		;RO4.10 or higher?
 BEQ     _RO410
 CMP     R14, #&350 << 8		;above RO3.11?
 BHS     _RO350

 CMP     R14, #&310 << 8		;RO3.10 or 3.11?
 MOVHS   R1, #&A4			;YES
 BHS     vector_handler_trap

 TST     R14, #&0FF00			;minor version
 AND     R14, R14, #&F0000		;R14=major release
 ORRNE   R14, R14, #&08000		;R2=8 if a minor release
 ORR     R14, R14, R1
 LDRB    R1, [PC, R14, LSR #15]
B       vector_handler_trap

 DCB 0, 0
 DCB &A0, &A0		;Arthur 1.20
 DCB &A1, &A2		;RO 2.00 / RO 2.01
 DCB &A3, &A3		;RO 3.00

._RO350
 CMP     R14, #&380 << 8		;above RO3.8?
 MOVHI   R14, #&380 << 8		;YES
 SUB     R14, R14, #&350 << 8
 LDRB    R1, [PC, R14, LSR #12]
B       vector_handler_trap

 DCB &A5, &A6, &A7, &A8

._RO410
 MOV     R1, #&A9
EXITSWI ""
