MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / cpu_execute_daa

Function cpu_execute_daa

core/cpu.c:365–388  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

363}
364
365static void cpu_execute_daa(void) {
366 eZ80registers_t *r = &cpu.registers;
367 uint8_t old = r->A;
368 uint8_t v = 0;
369 if ((r->A & 0xF) > 9 || r->flags.H) {
370 v += 6;
371 }
372 if (((r->A + v) >> 4) > 9 || cpuflag_carry_b(r->A + v) || r->flags.C) {
373 v += 0x60;
374 }
375 if (r->flags.N) {
376 r->A -= v;
377 r->F = cpuflag_sign_b(r->A) | cpuflag_zero(r->A)
378 | cpuflag_undef(r->F) | cpuflag_parity(r->A)
379 | cpuflag_subtract(r->flags.N) | cpuflag_c(v >= 0x60)
380 | cpuflag_halfcarry_b_sub(old, v, 0);
381 } else {
382 r->A += v;
383 r->F = cpuflag_sign_b(r->A) | cpuflag_zero(r->A)
384 | cpuflag_undef(r->F) | cpuflag_parity(r->A)
385 | cpuflag_subtract(r->flags.N) | cpuflag_c(v >= 0x60)
386 | cpuflag_halfcarry_b_add(old, v, 0);
387 }
388}
389
390static uint32_t cpu_dec_bc_partial_mode() {
391 uint32_t value = cpu_mask_mode(cpu.registers.BC - 1, cpu.L);

Callers 1

cpu_execute_rot_accFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected