#code _CODE ; void __uitobcd (unsigned int v, unsigned char bcd[3]) ; __uitobcd converts v to BCD representation to the bcd. ; bcd[] will contain BCD value. ; ___uitobcd: push ix ld ix, #0 add ix, sp ; ld bc, #0x1000 ld d, c ld e, c ld l, 4 (ix) ld h, 5 (ix) ; ;--- begin speed optimization ; ld a, h or a, a jr NZ, 100$ ; ld h, l srl b ; ;--- end speed optimization ; ; HL - binary value ; CDE - future BCD value ; B - bits count (16) 100$: add hl, hl ld a, e adc a, a daa ld e, a ld a, d adc a, a daa ld d, a ld a, c adc a, a daa ld c, a djnz 100$ ; ld l, 6 (ix) ld h, 7 (ix) ld (hl), e inc hl ld (hl), d inc hl ld (hl), c ; pop ix ret