;==========================================================
;
; MACROs for x51 math library
; 
; (C) HELIUM  
; http://helium.webz.cz/
;
; compiled with MetaLink 8051 Cross-Assembler, Version 1.2k
;==========================================================

;$include(MATH.A51)
; INFO Hlavička pro Univerzalni matematicka knihovna pro x51
; Univerzalni matematicka knihovna pro x51


;==========================================================

; makro na SOUCET dvou cisel  [adr1] := [adr1] + [adr2]
SOUCET	MACRO	count, adr1, adr2;
	mov	R0, #adr1	;
	mov	R1, #adr2	;
	mov	R2, #count	;
	call	addm		; addm
ENDM				;

;==========================================================

; makro na SOUCET dvou cisel  [adr3] := [adr1] + [adr2]
SOUCET3	MACRO	count, adr1, adr2, adr3;
	mov	R0, #adr1	;
	mov	R1, #adr3	;
	mov	R2, #count	;
	call	copy		; copy
	mov	R0, #adr3	;
	mov	R1, #adr2	;
	mov	R2, #count	;
	call	addm		; addm
ENDM				;

;==========================================================

; makro na ROZDIL dvou cisel  [adr1] := [adr1] - [adr2]
ROZDIL	MACRO	count, adr1, adr2;
	mov	R0, #adr1	;
	mov	R1, #adr2	;
	mov	R2, #count	;
	call	subbm		; subbm
ENDM				;

;==========================================================

; makro na ROZDIL dvou cisel  [adr3] := [adr1] - [adr2]
ROZDIL3	MACRO	count, adr1, adr2, adr3;
	mov	R0, #adr1	;
	mov	R1, #adr3	;
	mov	R2, #count	;
	call	copy		; copy
	mov	R0, #adr3	;
	mov	R1, #adr2	;
	mov	R2, #count	;
	call	subbm		; subbm
ENDM				;

;==========================================================

; makro na SOUCIN dvou cisel  [adr3] := [adr1] * [adr2]
SOUCIN	MACRO	count, adr1, adr2, adr3;
	mov	R0, #adr1	;
	mov	R1, #adr2	;
	mov	R2, #count	;
	call	mulm		; mulm
	mov	R0, #adrm	;
	mov	R1, #adr3	;
	mov	R2, #count+count;
	call	copy		; copy
ENDM				;

;==========================================================

; makro na SOUCIN16 dvou 16bit cisel  [adr3] := [adr1] * [adr2]
SOUCIN16 MACRO	adr1, adr2, adr3;
	mov	R0, #adr1	;
	mov	R1, #adr2	;
	call	mul16		; mul16
	mov	R0, #adrm	;
	mov	R1, #adr3	;
	mov	R2, #4		;
	call	copy		; copy
ENDM				;

;==========================================================

; makro na PODIL dvou cisel  [adr3] := [adr1] div [adr2]
PODIL	MACRO	count, adr1, adr2, adr3;
	mov	R0, #adr1	;
	mov	R1, #adr2	;
	mov	R2, #count	;
	call	divm		; divm
	mov	R0, #adrm	;
	mov	R1, #adr3	;
	mov	R2, #count	;
	call	copy		; copy
ENDM				;

;==========================================================

; makro BINBCD prevod        [adr1] -> [adr2]
BINBCD	MACRO	count, adr1, adr2;
	mov	R0, #adr1	;
	mov	R1, #adr2	;
	mov	R2, #count	;
	mov	R3, #count+count;
	call	bin2bcd		; bin2bcd
ENDM				;

;==========================================================

; makro BCDBIN prevod        [adr1] -> [adr2]
BCDBIN	MACRO	count, adr1, adr2;
	mov	R0, #adr2	;
	mov	R1, #adr1	;
	mov	R2, #count	;
	mov	R3, #count+count;
 	call	bcd2bin		; bcd2bin
ENDM				;

;==========================================================