All pastes #220178 Raw Edit

Pi

public text v1 · immutable
#220178 ·published 2006-10-25 01:51 UTC
rendered paste body
;;; Subroutine to add bcd
;;; Call: HL: Base of first number
;;;       DE: Base of second number
;;;       B:  Length of bigger number
;;; Result: HL+DE in IY register

;;; Code borrowed from http://www.mct.net/download/zilog/z80cpu.pdf and http://icarus.ticalc.org/articles/z80_faq.html
;;;  and banged on til it actually worked

Add_BCD:
    ld      A, B     ; Check length
    or      A
    ret     z        ; Get out if we've finished
    and A            ; clear carry? wat
addloop:
    ld      A, (DE)  ; get second-number byte
    add     A, (HL)  ; adc it to first
    daa              ; BCDify
    ld      (IY+0), A  ; save back
    dec     HL       ; next number
    dec     DE
    inc     IY       ;grr
    djnz    addloop     ; continue until all bytes summed
    ret