; WinFront v0.03
; By Kiwi Software (UK)   http://www.kiwisoftware.demon.co.uk
; Released under the GPL

; This code is designed to be assembled with extASM, but is easily modified
; for other assemblers.

#base 0
#type &ffa
#name ^.WinFront
#smile

.start_offset		dcd	0
.init_offset		dcd	initCode
.final_offset		dcd	finalCode
.service_offset		dcd	0
.title_offset		dcd	titleString
.help_offset		dcd	helpString
.commands_offset	dcd	0
.swi_base		dcd	0
.swi_handler		dcd	0
.swi_decode_table	dcd	0
.swi_decode_code	dcd	0
.messagetrans_file	dcd	0

.titleString		dcb	"WinFront", 0
.helpString		dcb	"WinFront", 9, "0.03 (15 Feb 1999) by lrg & rjek", 0
			align

.initCode		stmfd	r13!, {r12, r14}

			mov	r0, #&10		; EventV Vector
			adr	r1, eventVCode
			mov	r2, r12
			swi	XOS_Claim

			ldmfd	r13!, {r12, pc}

.finalCode		stmfd	r13!, {r14}

			mov	r0, #&10		; EventV Vector
			adr	r1, eventVCode
			mov	r2, r12
			swi	XOS_Release

			ldmfd	r13!, {pc}

.eventVCode		teq	r0, #11			; Key transition?
			movnes	pc, r14			; if not, return
			teqeq	r2, #94			; Left Alt?
			movnes	pc, r14			; if not, return
			teqeq	r1, #0			; relevent?
			movnes	pc, r14			; if not, return

			stmfd	r13!, {r0-r3, r14}



			mov	r1, r12
			swi	XWimp_GetPointerInfo
			ldr	r0, [r1, #8]
			;teq	r0, #%100		; left button
			;ldmnefd	r13!, {r0-r3, pc}	; if not, return

			ldr	r0, [r1, #12]
			str	r0, [r1, #0]
			mov	r2, r0

			swi	XWimp_GetWindowState
			ldr	r0, [r1, #32]
			and	r0, r0, #&20000
			teq	r0, #&20000
			mvneq	r0, #1
			mvnne	r0, #0
			str	r0, [r1, #28]
			mov	r0, #2
			swi	XWimp_SendMessage

			ldmfd	r13!, {r0-r3, pc}


