
; 8 BCD digits are placed in 4 addresses, highest 2 (D1-D2) are first. Convert
; them to 4 byte binary and place them to R5-R4-R3-R2 (R5 highest)


X008a:	mov	a,@r0		; Take first (highest) pair BCD digits (D1-D2)
	inc	r0
	lcall	BCD2BI

	mov	b,#64h		; Mply by 100
	mul	ab
	mov	r2,a		; Lower
	mov	r3,b		; Higher

	mov	a,@r0		; Next pair (D3-D4)
	inc	r0
	lcall	BCD2BI

	add	a,r2		; Add first mplied pair
	jnc	X009f
	inc	r3		; Now (D1-D2-D3-D4) is converted to R3-R2 (max 9999)

X009f:	mov	b,#64h		; Mply lower byte by 100
	mul	ab
	mov	r2,a		; Lower
	mov	a,b
	xch	a,r3		; Save Higher temporary, take prev Higher ...

	mov	b,#64h		; ... to mply by 100
	mul	ab
	add	a,r3
	mov	r3,a
	clr	a
	addc	a,b
	mov	r4,a		; 100*(D1-D2-D3-D4) converted to R4-R3-R2 (max 999900)

	mov	a,@r0		; Next pair (D5-D6) should be added to this
	inc	r0
	lcall	BCD2BI

	add	a,r2		; Add to lowest, and update higher bytes
	jnc	X00be
	inc	r3
	cjne	r3,#0,X00be
	inc	r4		; (D1-D2-D3-D4-D5-D6) converted to R4-R3-R2 (max 10to6-1)

X00be:	mov	b,#64h		; Mply by 100
	mul	ab
	mov	r2,a
	mov	a,b
	xch	a,r3
	mov	b,#64h		; Mply by 100
	mul	ab
	add	a,r3
	mov	r3,a
	clr	a
	addc	a,b
	xch	a,r4
	mov	b,#64h		; Mply by 100
	mul	ab
	add	a,r4
	mov	r4,a
	clr	a
	addc	a,b
	mov	r5,a		; 100*(D1-D2-D3-D4-D5-D6) converted to R5-R4-R3-R2

	mov	a,@r0		; Add D7-D8
	inc	r0
	lcall	BCD2BI
	add	a,r2
	jnc	X00eb		; Update higher bytes
	inc	r3
	cjne	r3,#0,X00eb
	inc	r4
	cjne	r4,#0,X00eb
	inc	r5
X00eb:	mov	r2,a
	ret

;


BCD2BI:	xrl	a,#0f0h		; Complement only higher nibble
	jbc	acc.4,X00f4	; If 0, add 10, else only clear it
	add	a,#0ah		; add 10
X00f4:	jbc	acc.5,X00f9
	add	a,#14h		; add 20
X00f9:	jbc	acc.6,X00fe
	add	a,#28h		; add 40
X00fe:	jbc	acc.7,X0103
	add	a,#50h		; add 80
X0103:	ret	
;