;*
;* ROlib.h
;*
;* Assembler interface to RISC OS
;* (C) 1997 Andreas Dehmel
;*


a1	rn	0
a2	rn	1
a3	rn	2
a4	rn	3
v1	rn	4
v2	rn	5
v3	rn	6
v4	rn	7
v5	rn	8
v6	rn	9
sl	rn	10
fp	rn	11
ip	rn	12
sp	rn	13
lr	rn	14
pc	rn	15


	idfn	(C) 1997 by Andreas Dehmel

; ************ WIMP STUFF ****************

	AREA	CODE, READONLY
	align	4
	export	|Wimp_Initialise|
	=	"Wimp_Initialise"
	align	4

|Wimp_Initialise|:
	swi	0x600c0		;XWimp_Initialise
	movvs	a1,#0		;return 0 if error
	movvc	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CloseDown|
	=	"Wimp_CloseDown"
	align	4

|Wimp_CloseDown|
	swi	0x600dd		;XWimp_CloseDown
	movvc	a1,#0		;return pointer to error block
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CreateWindow|
	=	"Wimp_CreateWindow"
	align	4

|Wimp_CreateWindow|:
	mov	a2,a1
	swi	0x600c1
	movvs	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CreateIcon|
	=	"Wimp_CreateIcon"
	align	4

|Wimp_CreateIcon|:
	swi	0x600c2
	movvs	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_DeleteWindow|
	=	"Wimp_DeleteWindow"
	align	4

|Wimp_DeleteWindow|:
	mov	a2,a1
	swi	0x600c3
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_DeleteIcon|
	=	"Wimp_DeleteIcon"
	align	4

|Wimp_DeleteIcon|:
	mov	a2,a1
	swi	0x600c4
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_OpenWindow|
	=	"Wimp_OpenWindow"
	align	4

|Wimp_OpenWindow|:
	mov	a2,a1
	swi	0x600c5
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CloseWindow|
	=	"Wimp_CloseWindow"
	align	4

|Wimp_CloseWindow|:
	mov	a2,a1
	swi	0x600c6
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_Poll|
	=	"Wimp_Poll"
	align	4

|Wimp_Poll|:
	mov	a4,a3
	swi	0x600c7
	mvnvs	a1,#0		;return -1 if error
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_RedrawWindow|
	=	"Wimp_RedrawWindow"
	align	4

|Wimp_RedrawWindow|:
	mov	a2,a1
	swi	0x600c8
	movvs	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_UpdateWindow|
	=	"Wimp_UpdateWindow"
	align	4

|Wimp_UpdateWindow|
	mov	a2,a1
	swi	0x600c9
	movvs	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_GetRectangle|
	=	"Wimp_GetRectangle"
	align	4

|Wimp_GetRectangle|:
	mov	a2,a1
	swi	0x600ca
	movvs	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_GetWindowState|
	=	"Wimp_GetWindowState"
	align	4

|Wimp_GetWindowState|:
	mov	a2,a1
	swi	0x600cb
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_GetWindowInfo|
	=	"Wimp_GetWindowInfo"
	align	4

|Wimp_GetWindowInfo|:
	mov	a2,a1
	swi	0x600cc
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_SetIconState|
	=	"Wimp_SetIconState"
	align	4

|Wimp_SetIconState|:
	mov	a2,a1
	swi	0x600cd
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_GetIconState|
	=	"Wimp_GetIconState"
	align	4

|Wimp_GetIconState|:
	mov	a2,a1
	swi	0x600ce
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_GetPointerInfo|
	=	"Wimp_GetPointerInfo"
	align	4

|Wimp_GetPointerInfo|:
	mov	a2,a1
	swi	0x600cf
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_DragBox|
	=	"Wimp_DragBox"
	align	4

|Wimp_DragBox|:
	mov	a2,a1
	swi	0x600d0
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_ForceRedraw|
	=	"Wimp_ForceRedraw"
	align	4

|Wimp_ForceRedraw|:
	stmdb	sp!,{v1}
	ldr	v1,[sp,#4]
	swi	0x600d1
	movvc	a1,#0
	ldmia	sp!,{v1}
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_SetCaretPosition|
	=	"Wimp_SetCaretPosition"
	align	4

|Wimp_SetCaretPosition|:
	stmdb	sp!,{v1,v2}
	add	v1,sp,#8
	ldmia	v1,{v1,v2}
	swi	0x600d2
	movvc	a1,#0
	ldmia	sp!,{v1,v2}
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_GetCaretPosition|
	=	"Wimp_GetCaretPosition"
	align	4

|Wimp_GetCaretPosition|:
	mov	a2,a1
	swi	0x600d3
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CreateMenu|
	=	"Wimp_CreateMenu"
	align	4

|Wimp_CreateMenu|:
	mov	a4,a3
	mov	a3,a2
	mov	a2,a1
	swi	0x600d4
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_SetExtent|
	=	"Wimp_SetExtent"
	align	4

|Wimp_SetExtent|:
	swi	0x600d7
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_OpenTemplate|
	=	"Wimp_OpenTemplate"
	align	4

|Wimp_OpenTemplate|:
	mov	a2,a1
	swi	0x600d9
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CloseTemplate|
	=	"Wimp_CloseTemplate"
	align	4

|Wimp_CloseTemplate|:
	swi	0x600da
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_LoadTemplate|
	=	"Wimp_LoadTemplate"
	align	4

|Wimp_LoadTemplate|:
	stmdb	sp!,{a1,a2,v1-v4,lr}	;7 registers
	mov	v1,a4			;Fonts
	mov	a4,a3			;IndirectLimit
	ldr	a3,[a2]			;*Indirect
	ldr	a2,[a1]			;*Template
	add	v2,sp,#28
	ldmia	v2,{v2,v4}
	ldr	v3,[v4]			;Position
	swi	0x600db
	addvs	sp,sp,#8
	bvs	|WLTexit|
	str	v3,[v4]			;store Position
	ldmia	sp!,{v1,v2}
	str	a2,[v1]
	str	a3,[v2]
	mov	a1,#0
|WLTexit|:
	ldmia	sp!,{v1-v4,pc}^


	AREA	CODE, READONLY
	align	4
	export	|Wimp_ProcessKey|
	=	"Wimp_ProcessKey"
	align	4

|Wimp_ProcessKey|:
	swi	0x600dc
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_StartTask|
	=	"Wimp_StartTask"
	align	4

|Wimp_StartTask|:
	swi	0x600de
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_ReportError|
	=	"Wimp_ReportError"
	align	4

|Wimp_ReportError|:
	swi	0x600df
	movvs	a1,#0
	movvc	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_GetWindowOutline|
	=	"Wimp_GetWindowOutline"
	align	4

|Wimp_GetWindowOutline|:
	mov	a2,a1
	swi	0x600e0
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_PollIdle|
	=	"Wimp_PollIdle"
	align	4

|Wimp_PollIdle|:
	swi	0x600e1
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_PlotIcon|
	=	"Wimp_PlotIcon"
	align	4

|Wimp_PlotIcon|:
	mov	a2,a1
	swi	0x600e2
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_SendMessage|
	=	"Wimp_SendMessage"
	align	4

|Wimp_SendMessage|:
	swi	0x600e7
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CreateSubMenu|
	=	"Wimp_CreateSubMenu"
	align	4

|Wimp_CreateSubMenu|:
	mov	a4,a3
	mov	a3,a2
	mov	a2,a1
	swi	0x600e8
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_SpriteOp|
	=	"Wimp_SpriteOp"
	align	4

|Wimp_SpriteOp|:
	stmdb	sp!,{v1-v4,lr}
	add	v1,sp,#20
	ldmia	v1,{v1-v4}
	swi	0x600e9
	movvc	a1,#0
	ldmia	sp!,{v1-v4,pc}^


	AREA	CODE, READONLY
	align	4
	export	|Wimp_BaseOfSprites|
	=	"Wimp_BaseOfSprites"
	align	4

|Wimp_BaseOfSprites|:
	mov	a3,a1
	mov	a4,a2
	swi	0x600ea
	strvc	a1,[a3]
	strvc	a2,[a4]
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_CommandWindow|
	=	"Wimp_CommandWindow"
	align	4

|Wimp_CommandWindow|:
	swi	0x600ef
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_TransferBlock|
	=	"Wimp_TransferBlock"
	align	4

|Wimp_TransferBlock|:
	str	v1,[sp,#-4]!
	ldr	v1,[sp,#4]
	swi	0x600f1
	ldr	v1,[sp],#4
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|Wimp_SpriteInfo|
	=	"Wimp_SpriteInfo"
	align	4

|Wimp_SpriteInfo|:
	stmdb	sp!,{v1-v6,lr}
	mov	v4,a2
	mov	v5,a3
	mov	v6,a4
	mov	a3,a1
	mov	a1,#40
	movvc	a1,#0
	swi	0x600e9		;Wimp_SpriteOp
	str	a4,[v4]
	str	v1,[v5]
	str	v3,[v6]
	ldmia	sp!,{v1-v6,pc}^


	AREA	CODE, READONLY
	align	4
	export	|DragASprite_Start|
	=	"DragASprite_Start"
	align	4

|DragASprite_Start|:
	swi	0x62400
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|DragASprite_Stop|
	=	"DragASprite_Stop"
	align	4

|DragASprite_Stop|:
	swi	0x62401
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ColourTrans_SelectTable|
	=	"ColourTrans_SelectTable"
	align	4

|ColourTrans_SelectTable|:
	stmdb	sp!,{v1-v4,lr}
	add	v1,sp,#20
	ldmia	v1,{v1-v4}
	ldr	v1,[v1]
	swi	0x60740
	addvs	sp,sp,#4
	bvs	|CTSTexit|
	mov	a1,v1
	ldr	v1,[sp],#4
	str	a1,[v1]
	mov	a1,#0
|CTSTexit|:
	ldmia	sp!,{v2-v4,pc}^


	AREA	CODE, READONLY
	align	4
	export	|ColourTrans_SetFontColours|
	=	"ColourTrans_SetFontColours"
	align	4

|ColourTrans_SetFontColours|:
	swi	0x6074f
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ColourTrans_SetColour|
	=	"ColourTrans_SetColour"
	align	4

|ColourTrans_SetColour|:
	str	v1,[sp,#-4]!
	mov	v1,a3
	mov	a4,a2
	swi	0x6075e
	movvc	a1,#0
	ldr	v1,[sp],#4
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ColourTrans_SetGCOL|
	=	"ColourTrans_SetGCOL"
	align	4

|ColourTrans_SetGCOL|:
	str	v1,[sp,#-4]!
	mov	v1,a3
	mov	a4,a2
	swi	0x60743
	movvc	a1,#0
	ldr	v1,[sp],#4
	movs	pc,lr





; ************* OS STUFF ***************

	AREA	CODE, READONLY
	align	4
	export	|OS_ReadModeVariable|
	=	"OS_ReadModeVariable"
	align	4

|OS_ReadModeVariable|:
	swi	0x20035
	mvncs	a1,#0
	movcc	a1,a3
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|OS_ReadDynamicArea|
	=	"OS_ReadDynamicArea"
	align	4

|OS_ReadDynamicArea|:
	swi	0x2005c
	movvs	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ModeColourNumber|
	=	"ModeColourNumber"
	align	4

|ModeColourNumber|:
	swi	0x60744		;XColourTrans_ReturnColourNumber
	mvnvs	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ScanKeys|
	=	"ScanKeys"
	align	4

|ScanKeys|:
	mov	a2,a1
	mov	a1,#121
	swi	0x20006		;XOS_Byte 121
	mov	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ReadKeyboardStatus|
	=	"ReadKeyboardStatus"
	align	4

|ReadKeyboardStatus|:
	mov	a1,#202
	mov	a2,#0
	mov	a3,#255
	swi	0x20006
	mov	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ReadDragType|
	=	"ReadDragType"
	align	4

|ReadDragType|:
	mov	a1,#161
	mov	a2,#28
	swi	0x20006
	and	a1,a3,#2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|SetMousePointer|
	=	"SetMousePointer"
	align	4

|SetMousePointer|:
	mov	a2,a1
	mov	a1,#106
	swi	0x20006
	mov	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY	;sprite ops (I have 52, 53 and 56 in mind)
	align	4
	export	|OS_SpriteOp|
	=	"OS_SpriteOp"
	align	4

|OS_SpriteOp|:
	stmdb	sp!,{v1-v4,lr}
	add	v1,sp,#20
	ldmia	v1,{v1-v4}
	swi	0x2002e
	movvc	a1,#0
	ldmia	sp!,{v1-v4,pc}^


	AREA	CODE, READONLY
	align	4
	export	|OS_Plot|
	=	"OS_Plot"
	align	4

|OS_Plot|:
	swi	0x20045
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|MouseBoundingBox|
	=	"MouseBoundingBox"
	align	4

|MouseBoundingBox|:
	mov	a2,a1
	mov	a1,#21
	swi	0x20007		;OS_Word21,1
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|OS_ReadMonotonicTime|
	=	"OS_ReadMonotonicTime"
	align	4

|OS_ReadMonotonicTime|:
	swi	0x20042
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|OS_ReadC|
	=	"OS_ReadC"
	align	4

|OS_ReadC|:
	mov	a2,a1
	swi	0x20004
	strccb	a1,[a2]
	movcc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|OS_ReadLine|
	=	"OS_ReadLine"
	align	4

|OS_ReadLine|:
	stmdb	sp!,{a1,v1,v2}
	stmdb	sp!,{a1-a3}
	mov	a1,#200
	mov	a2,#1
	mvn	a3,#1
	swi	0x20006
	mov	v2,a2
	ldmia	sp!,{a1-a3}
	ldr	v1,[sp,#8]
	swi	0x2000e
	mov	v1,a2
	mov	a1,#200
	mov	a2,v2
	mvn	a3,#0
	swi	0x20006
	mov	a2,v1
	ldmia	sp!,{a4,v1,v2}
	bic	a4,a4,#0xc0000000
	mov	a1,#10
	strb	a1,[a4,a2]	;make compatible with fgets (terminated by 10, not 13)
	mov	a1,a2
	rsbcs	a1,a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|OS_ReadEscapeState|
	=	"OS_ReadEscapeState"
	align	4

|OS_ReadEscapeState|:
	swi	0x2002c
	movcc	a1,#0
	movcs	a1,#1
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ReadCatalogueInfo|
	=	"ReadCatalogueInfo"
	align	4

|ReadCatalogueInfo|:
	stmdb	sp!,{v1-v3,lr}
	mov	v3,a2
	mov	a2,a1
	mov	a1,#17
	swi	0x20008		;OS_File 17
	stmia	v3,{a3-v2}
	ldmia	sp!,{v1-v3,pc}^


	AREA	CODE, READONLY
	align	4
	export	|ReadDirName|
	=	"ReadDirName"
	align	4

|ReadDirName|:
	stmdb	sp!,{v1-v4,lr}
	mov	v4,a3		;preserve dir_env *
	ldmia	a3,{a4-v3}
	mov	a3,a2
	mov	a2,a1
	mov	a1,#9
	swi	0x2000c		;OS_GBPB 9
	stmia	v4,{a4,v1}
	movvc	a1,#0
	ldmia	sp!,{v1-v4,pc}^


	AREA	CODE, READONLY
	align	4
	export	|ReadDirNameInfo|
	=	"ReadDirNameInfo"
	align	4

|ReadDirNameInfo|:
	stmdb	sp!,{v1-v4,lr}
	mov	v4,a3
	ldmia	a3,{a4-v3}
	mov	a3,a2
	mov	a2,a1
	mov	a1,#10
	swi	0x2000c		;OS_GBPB 10
	stmia	v4,{a4,v1}
	movvc	a1,#0
	ldmia	sp!,{v1-v4,pc}^


	AREA	CODE, READONLY
	align	4
	export	|DeleteFile|
	=	"DeleteFile"
	align	4

|DeleteFile|:
	stmdb	sp!,{v1,v2}
	mov	a2,a1
	mov	a1,#6
	swi	0x20008		;OS_File 6
	movvc	a1,#0
	ldmia	sp!,{v1,v2}
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ConvertInteger1|
	=	"ConvertInteger1"
	align	4

|ConvertInteger1|:
	swi	0x200d9
	mov	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ConvertInteger2|
	=	"ConvertInteger2"
	align	4

|ConvertInteger2|:
	swi	0x200da
	mov	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ConvertInteger3|
	=	"ConvertInteger3"
	align	4

|ConvertInteger3|:
	swi	0x200db
	mov	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|ConvertInteger4|
	=	"ConvertInteger4"
	align	4

|ConvertInteger4|:
	swi	0x200dc
	mov	a1,a2
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|OS_FlushBuffer|
	=	"OS_FlushBuffer"
	align	4

|OS_FlushBuffer|:
	mov	a2,a1
	mov	a1,#21
	swi	0x20006
	movvc	a1,#0
	movs	pc,lr






; ************ MISC STUFF ***************

	AREA	CODE, READONLY
	align	4
	export	|Joystick_Read|
	=	"Joystick_Read"
	align	4

|Joystick_Read|:
	swi	0x63f40		;XJoystick_Read (Acorn)
	bvc	|JRexit|
	ldr	a2,[a1]		;get error-number
	eor	a2,a2,#0xe6
	eors	a2,a2,#0x100
	mvneq	a1,#1		;-2 ==> unknown SWI
	mvnne	a1,#0		;-1 ==> error generated from joystick module
|JRexit|:
	movs	pc,lr





; ************** SOUND SWIS *************

	AREA	CODE, READONLY
	align	4
	export	|Sound_Volume|
	=	"Sound_Volume"
	align	4

|Sound_Volume|:
	swi	0x60180
	mvnvs	a1,#0
	movs	pc,lr


; *********** DIGITAL RENDERER **********

DigiRendChunk	equ	0x6F700		;X flag set


	AREA	CODE, READONLY
	align	4
	export	|DigitalRenderer_Activate|
	=	"DigitalRenderer_Activate"
	align	4

|DigitalRenderer_Activate|:
	swi	DigiRendChunk
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|DigitalRenderer_Deactivate|
	=	"DigitalRenderer_Deactivate"
	align	4

|DigitalRenderer_Deactivate|:
	swi	DigiRendChunk+1
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|DigitalRenderer_Pause|
	=	"DigitalRenderer_Pause"
	align	4

|DigitalRenderer_Pause|:
	swi	DigiRendChunk+2
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|DigitalRenderer_Resume|
	=	"DigitalRenderer_Resume"
	align	4

|DigitalRenderer_Resume|:
	swi	DigiRendChunk+3
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|DigitalRenderer_GetTables|
	=	"DigitalRenderer_GetTables"
	align	4

|DigitalRenderer_GetTables|:
	mov	a3,a1
	mov	a4,a2
	swi	DigiRendChunk+4
	strvc	a1,[a3]
	strvc	a2,[a4]
	movvc	a1,#0
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|DigitalRenderer_ReadState|
	=	"DigitalRenderer_ReadState"
	align	4

|DigitalRenderer_ReadState|:
	swi	DigiRendChunk+5
	mvnvs	a1,#0			;returns -1 on error
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|DigitalRenderer_NewSample|
	=	"DigitalRenderer_NewSample"
	align	4

|DigitalRenderer_NewSample|:
	swi	DigiRendChunk+6
	movvc	a1,#0
	movs	pc,lr


; *********** PLOTTER **************

BPlotChunk	equ	0x70100		;X bit set

	AREA	CODE, READONLY
	align	4
	export	|PlotZoom1|
	=	"PlotZoom1"
	align	4

|PlotZoom1|:
	swi	BPlotChunk
	movs	pc,lr


	AREA	CODE, READONLY
	align	4
	export	|PlotZoom2|
	=	"PlotZoom2"
	align	4

|PlotZoom2|:
	swi	BPlotChunk+1
