view src/swis.s @ 5899:60cdaa05a6ad v7.4.292

updated for version 7.4.292 Problem: Searching for "a" does not match accented "a" with new regexp engine, does match with old engine. (David B?rgin) "ca" does not match "ca" with accented "a" with either engine. Solution: Change the old engine, check for following composing character also for single-byte patterns.
author Bram Moolenaar <bram@vim.org>
date Tue, 13 May 2014 18:04:00 +0200
parents 3fc0f57ecb91
children
line wrap: on
line source

; Thomas Leonard
; 24/5/98

ar0	rn	0
ar1	rn	1
ar2	rn	2
ar3	rn	3
ar4	rn	4
ar5	rn	5
ar6	rn	6
ar7	rn	7
ar10	rn	10
ar11	rn	11
lk	rn	14
ar15	rn	15

	AREA	DATA
	align	4

	export	|r0|
r0:	dcd	0

	export	|r1|
r1:	dcd	0

	export	|r2|
r2:	dcd	0

	export	|r3|
r3:	dcd	0

	export	|r4|
r4:	dcd	0

	export	|r5|
r5:	dcd	0

	export	|r6|
r6:	dcd	0

	export	|r7|
r7:	dcd	0

	export	|time_of_last_poll|
time_of_last_poll:  dcd	0

	AREA	CODE, READONLY
	align 4
	import	|r0|
	export	|swi|
	=	"swi"
	align 4
swi:
	; r0 = swi number
	stmfd	sp!,{ar4-ar10,lk}
	orr	ar10,ar0,#1<<17		;always use the X form
	mov	ar0,ar1
	mov	ar1,ar2
	mov	ar2,ar3
	add	ar3,sp,#4*8
	ldmia	ar3,{ar3-ar7}
	swi	0x6f		; OS_CallASWI
	ldr	ar10,regs_addr
	stmia	ar10,{ar0-ar7}
	ldmvcfd	sp!,{ar4-ar10,pc}^
	; report the error and quit on Cancel
	mov	r1,#0x17
	adr	r2,s_title
	swi	0x400df		; Wimp_ReportError
	cmp	r1,#1			;OK selected?
	ldmeqfd	sp!,{ar4-ar10,pc}^	;yes - try to continue
	swi	0x11			;no  - die (OS_Exit)
s_title:
	= "Nasty error - Cancel to quit"
	= 0

	align 4
	export	|xswi|
	=	"xswi"
	align 4
xswi:
	; r0 = swi number
	stmfd	sp!,{ar4-ar10,lk}
	orr	ar10,ar0,#1<<17		;always use the X form
	mov	ar0,ar1
	mov	ar1,ar2
	mov	ar2,ar3
	add	ar3,sp,#4*8
	ldmia	ar3,{ar3-ar7}
	swi	0x6f		; OS_CallASWI
	ldr	ar10,regs_addr
	stmia	ar10,{ar0-ar7}
	mov	ar0,#0
	orr	ar0,ar0,ar15
	ldmfd	sp!,{ar4-ar10,pc}^

regs_addr:
	dcd	r0

	; The Wimp_Poll swis have to be done specially because,
	; for some reason, r13 sometimes gets corrupted by Wimp_Poll
	; (eg when running FileFind)
	AREA	CODE, READONLY
	align 4
	import  |time_of_last_poll|
	export	|wimp_poll|
	=	"wimp_poll"
	align 4
wimp_poll:
	mov	ar3,sp
	swi	0x400c7		; Wimp_Poll
	mov	sp,ar3

	mov	ar3,ar0
	swi	0x42		; OS_ReadMonotonicTime
	ldr	ar2,addr_time
	str	ar0,[ar2]
	mov	ar0,ar3

	mov	ar2,#0
	wfs	ar2		; Write floating point status. Needed?
	movs	pc,lk

	align 4
	export	|wimp_pollidle|
	=	"wimp_pollidle"
	align 4
wimp_pollidle:
	mov	ar3,sp
	swi	0x400e1		; Wimp_PollIdle
	mov	sp,ar3

	mov	ar3,ar0
	swi	0x42		; OS_ReadMonotonicTime
	ldr	ar2,addr_time
	str	ar0,[ar2]
	mov	ar0,ar3

	mov	ar2,#0
	wfs	ar2		; Write floating point status. Needed?
	movs	pc,lk

addr_time: dcd	time_of_last_poll