; syslog.s from Doggysoft / Jon Ribbens' !Syslog.C-veneer.s.syslog

R0      RN      0
R1      RN      1
R2      RN      2
R3      RN      3
R4      RN      4
R5      RN      5
R6      RN      6
R7      RN      7
R8      RN      8
R9      RN      9
R10     RN      10
R11     RN      11
R12     RN      12
R13     RN      13
R14     RN      14
R15     RN      15

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

R       RN      0

SL      RN      10
FP      RN      11
IP      RN      12
SP      RN      13
LR      RN      14
PC      RN      15


V       *       1 :SHL: 28
C       *       1 :SHL: 29
Z       *       1 :SHL: 30
N       *       1 :SHL: 31

	AREA	|syslog$$code|,CODE,READONLY  ;PIC

	EXPORT	syslog_logmessage
syslog_logmessage
	MOV	R12,R14
	SWI	&4C880
	MOV	PC,R12

	EXPORT	syslog_getloglevel
syslog_getloglevel
	MOV	R12,R14
	SWI	&4C881
	MOV	PC,R12

	EXPORT	syslog_flushlog
syslog_flushlog
	MOV	R12,R14
	SWI	&4C882
	MOV	PC,R12

	EXPORT	syslog_setloglevel
syslog_setloglevel
	MOV	R12,R14
	SWI	&4C883
	MOV	PC,R12

	EXPORT	syslog_logunstamped
syslog_logunstamped
	MOV	R12,R14
	SWI	&4C884
	MOV	PC,R12

	EXPORT	syslog_indent
syslog_indent
	MOV	R12,R14
	SWI	&4C885
	MOV	PC,R12

	EXPORT	syslog_unindent
syslog_unindent
	MOV	R12,R14
	SWI	&4C886
	MOV	PC,R12

	EXPORT	syslog_noindent
syslog_noindent
	MOV	R12,R14
	SWI	&4C887
	MOV	PC,R12

	EXPORT	syslog_opensessionlog
syslog_opensessionlog
	MOV	R12,R14
	SWI	&4C888
	MOV	PC,R12

	EXPORT	syslog_closesessionlog
syslog_closesessionlog
	MOV	R12,R14
	SWI	&4C889
	MOV	PC,R12

	EXPORT	syslog_logdata
syslog_logdata
	STMFD   R13!,{R4,R14}
	LDR	R4,[R13,#8]
	SWI	&4C88A
	LDMFD	R13!,{R4,PC}

	EXPORT	syslog_readerrormessage
syslog_readerrormessage
	MOV	R12,R14
	SWI	&4C88C
	MOV	PC,R12

	EXPORT	syslog_logcomplete
syslog_logcomplete
	MOV	R12,R14
	SWI	&4C88D
	MOVS	PC,R12

	EXPORT	syslog_irqmode
syslog_irqmode
	MOV	R12,R14
	SWI	&4C88E
	MOV	PC,R12

	EXPORT	xsyslog_logmessage
xsyslog_logmessage
	MOV	R12,R14
	SWI	&6C880
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_getloglevel
xsyslog_getloglevel
	MOV	R12,R14
	SWI	&6C881
	STRVC	R0,[R1]
	MOVVC	R0,#0
	MOVS	PC,R12

	EXPORT	xsyslog_flushlog
xsyslog_flushlog
	MOV	R12,R14
	SWI	&6C882
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_setloglevel
xsyslog_setloglevel
	MOV	R12,R14
	SWI	&6C883
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_logunstamped
xsyslog_logunstamped
	MOV	R12,R14
	SWI	&6C884
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_indent
xsyslog_indent
	MOV	R12,R14
	SWI	&6C885
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_unindent
xsyslog_unindent
	MOV	R12,R14
	SWI	&6C886
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_noindent
xsyslog_noindent
	MOV	R12,R14
	SWI	&6C887
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_opensessionlog
xsyslog_opensessionlog
	MOV	R12,R14
	SWI	&6C888
	STRVC	R0,[R2]
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_closesessionlog
xsyslog_closesessionlog
	MOV	R12,R14
	SWI	&6C889
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_logdata
xsyslog_logdata
	STMFD   R13!,{R4,R14}
	LDR	R4,[R13,#8]
	SWI	&6C88A
	MOVVC	R0,#0
	LDMFD	R13!,{R4,PC}

	EXPORT	xsyslog_readerrormessage
xsyslog_readerrormessage
	MOV	R12,R14
	SWI	&6C88C
	STRVC	R0,[R1]
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_logcomplete
xsyslog_logcomplete
	MOV	R12,R14
	SWI	&6C88D
	MOVVC	R0,#0
	MOV	PC,R12

	EXPORT	xsyslog_irqmode
xsyslog_irqmode
	MOV	R12,R14
	SWI	&6C88E
	MOVVC	R0,#0
	MOV	PC,R12

	IMPORT	vsprintf
	EXPORT	syslogf
syslogf
	MOV	R12,R13
	STMDB	R13!,{R3}
	STMDB	R13!,{R0,R1,R11,R12,R14,PC}
	SUB	R11,R12,#8
	MOV	R1,R2
	ADD 	R2,R11,#4
	STR	R2,[R13,#-4]!
	MOV	R2,R13
	LDR	R0,_syslogf_temp_adr
	BL	vsprintf
	LDR	R2,[R11,#-&10]
	LDR	R1,_syslogf_temp_adr
	LDR	R0,[R11,#-&14]
	SWI	&4C880
	LDMDB	R11,{R11,R13,PC}

	EXPORT	xsyslogf
xsyslogf
	MOV	R12,R13
	STMDB	R13!,{R3}
	STMDB	R13!,{R0,R1,R11,R12,R14,PC}
	SUB	R11,R12,#8
	MOV	R1,R2
	ADD 	R2,R11,#4
	STR	R2,[R13,#-4]!
	MOV	R2,R13
	LDR	R0,_syslogf_temp_adr
	BL	vsprintf
	LDR	R2,[R11,#-&10]
	LDR	R1,_syslogf_temp_adr
	LDR	R0,[R11,#-&14]
	SWI	&6C880
	MOVVC	R0,#0
	LDMDB	R11,{R11,R13,PC}

_syslogf_temp_adr
	&	_syslogf_temp

	AREA	|syslog$$zinit|,NOINIT

_syslogf_temp
	%	15360

	END
