ref: bf67f7174d8e3f1348c786618ee5a3a076d1eff8
dir: /engine/bcd.asm/
DivideBCDPredef:: DivideBCDPredef2:: DivideBCDPredef3:: DivideBCDPredef4:: call GetPredefRegisters DivideBCD:: xor a ld [$ffa5], a ld [$ffa6], a ld [$ffa7], a ld d, $1 .asm_f72a ld a, [$ffa2] and $f0 jr nz, .asm_f75b inc d ld a, [$ffa2] swap a and $f0 ld b, a ld a, [$ffa3] swap a ld [$ffa3], a and $f or b ld [$ffa2], a ld a, [$ffa3] and $f0 ld b, a ld a, [$ffa4] swap a ld [$ffa4], a and $f or b ld [$ffa3], a ld a, [$ffa4] and $f0 ld [$ffa4], a jr .asm_f72a .asm_f75b push de push de call DivideBCD_f800 pop de ld a, b swap a and $f0 ld [$ffa5], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, [$ffa5] or b ld [$ffa5], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, b swap a and $f0 ld [$ffa6], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, [$ffa6] or b ld [$ffa6], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, b swap a and $f0 ld [$ffa7], a dec d jr z, .asm_f7bc push de call DivideBCD_f7d7 call DivideBCD_f800 pop de ld a, [$ffa7] or b ld [$ffa7], a .asm_f7bc ld a, [$ffa5] ld [$ffa2], a ld a, [$ffa6] ld [$ffa3], a ld a, [$ffa7] ld [$ffa4], a pop de ld a, $6 sub d and a ret z .asm_f7ce push af call DivideBCD_f7d7 pop af dec a jr nz, .asm_f7ce ret DivideBCD_f7d7: ld a, [$ffa4] swap a and $f ld b, a ld a, [$ffa3] swap a ld [$ffa3], a and $f0 or b ld [$ffa4], a ld a, [$ffa3] and $f ld b, a ld a, [$ffa2] swap a ld [$ffa2], a and $f0 or b ld [$ffa3], a ld a, [$ffa2] and $f ld [$ffa2], a ret DivideBCD_f800: ld bc, $3 .asm_f803 ld de, $ff9f ld hl, $ffa2 push bc call StringCmp pop bc ret c inc b ld de, $ffa1 ld hl, $ffa4 push bc call SubBCD pop bc jr .asm_f803 AddBCDPredef:: call GetPredefRegisters AddBCD:: and a ld b, c .add ld a, [de] adc [hl] daa ld [de], a dec de dec hl dec c jr nz, .add jr nc, .done ld a, $99 inc de .fill ld [de], a inc de dec b jr nz, .fill .done ret SubBCDPredef:: call GetPredefRegisters SubBCD:: and a ld b, c .sub ld a, [de] sbc [hl] daa ld [de], a dec de dec hl dec c jr nz, .sub jr nc, .done ld a, $00 inc de .fill ld [de], a inc de dec b jr nz, .fill scf .done ret