; Simple BBC News ticker client
; (c) Darren Salt
; GPL applies
; $Id: util.s,v 1.1.1.1 2003/03/10 23:31:09 ds Exp $

	EXPORT	rnd64
	EXPORT	rnd32

	EXPORT	stricmp
	EXPORT	strnicmp
	EXPORT	stristr

	EXPORT	osfile_get_type

	AREA	|C$$Code$$rnd64|, CODE, READONLY

rnd64	STMFD	sp!,{lr}
	BL	rnd32
	MOV	r2,r0
	BL	rnd32
	MOV	r1,r2
	LDMFD	sp!,{lr}
	MOV$S	pc,lr


	AREA	|C$$Code$$rnd32|, CODE, READONLY

rnd32	MOV	r3,lr
	SWI	&51980
	MOV	r1,r0
	SWI	&51980
	ORR	r1,r1,r0,LSL #8
	SWI	&51980
	ORR	r1,r1,r0,LSL #16
	SWI	&51980
	ORR	r0,r1,r0,LSL #24
	MOV$S	pc,r3


	AREA	|C$$Code|, CODE, READONLY

stricmp
	MOV	r2,#-1

strnicmp
	STMFD	sp!,{r4,lr}
	MOV	r3,r0
	MOVS	r0,r2 ; comparing nothing?
	BEQ	%FT1
0	LDRB	r0,[r3],#1
	LDRB	r4,[r1],#1
	CMP	r0,#'A'
	RSBHSS	lr,r0,#'Z'
	ADDHS	r0,r0,#32
	CMP	r4,#'A'
	RSBHSS	lr,r4,#'Z'
	ADDHS	r4,r4,#32
	SUBS	r0,r0,r4
	BNE	%FT1
	TEQ	r4,#0
	SUBNES	r2,r2,#1
	BNE	%BT0
1	LDMFD	sp!,{r4,lr}
	MOV$S	pc,lr

stristr
	STMFD	sp!,{r4-r6,lr}
	SUB	r0,r0,#1
0	LDRB	r4,[r1]
	TEQ	r4,#0
	BEQ	%FT4
	CMP	r4,#'A'
	RSBHSS  lr,r4,#'Z'
	ADDHS	r4,r4,#32
1	LDRB	r3,[r0,#1]!
	TEQ	r3,#0
	BEQ	%FT3
	CMP	r3,#'A'
	RSBHSS  lr,r3,#'Z'
	ADDHS	r3,r3,#32
	TEQ	r4,r3
	BNE	%BT1
	MOV	r2,#0
2	ADD	r2,r2,#1
	LDRB	r3,[r1,r2]
	LDRB	r4,[r0,r2]
	TEQ	r3,#0
	BEQ	%FT4
	CMP	r3,#'A'
	RSBHSS  lr,r3,#'Z'
	ADDHS	r3,r3,#32
	CMP	r4,#'A'
	RSBHSS  lr,r4,#'Z'
	ADDHS	r4,r4,#32
	TEQ	r4,r3
	BEQ	%BT2
	B	%BT0
3	MOV	r0,#0
4	LDMFD	sp!,{r4-r6,lr}
	MOV$S	pc,lr

osfile_get_type
	STMFD	sp!,{r4-r6,lr}
	MOV	r1,r0
	MOV	r0,#17
	SWI	&20008
	MOVVS	r0,#0
	LDMFD	sp!,{r4-r6,lr}
	MOV$S	pc,lr

	END
