Skip to content

Commit

Permalink
[#18] Move the generic implementations of the on_get_regp() handlers …
Browse files Browse the repository at this point in the history
…to the root module.
  • Loading branch information
kosarev committed Jul 4, 2021
1 parent b1cc451 commit c8c481d
Showing 1 changed file with 12 additions and 17 deletions.
29 changes: 12 additions & 17 deletions z80.h
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,16 @@ class root {
unreachable("Unknown index register.");
}

fast_u16 on_get_regp(regp rp) {
switch(rp) {
case regp::bc: return self().on_get_bc();
case regp::de: return self().on_get_de();
case regp::hl: return self().on_get_hl();
case regp::sp: return self().on_get_sp();
}
unreachable("Unknown register.");
}

// No dummy implementations for the following handlers as
// being forgotten to be implemented, they would lead to
// problems that are hard to diagnose.
Expand Down Expand Up @@ -2389,16 +2399,6 @@ class i8080_executor : public internals::executor_base<B> {
base::on_set_reg(r, n);
}

fast_u16 on_get_regp(regp rp) {
switch(rp) {
case regp::bc: return self().on_get_bc();
case regp::de: return self().on_get_de();
case regp::hl: return self().on_get_hl();
case regp::sp: return self().on_get_sp();
}
unreachable("Unknown register.");
}

void on_set_regp(regp rp, fast_u16 nn) {
switch(rp) {
case regp::bc: return self().on_set_bc(nn);
Expand Down Expand Up @@ -2937,13 +2937,8 @@ class z80_executor : public internals::executor_base<B> {
}

fast_u16 on_get_regp(regp rp, iregp irp) {
switch(rp) {
case regp::bc: return self().on_get_bc();
case regp::de: return self().on_get_de();
case regp::hl: return self().on_get_iregp(irp);
case regp::sp: return self().on_get_sp();
}
unreachable("Unknown register.");
return rp == regp::hl ? self().on_get_iregp(irp) :
base::on_get_regp(rp);
}

void on_set_regp(regp rp, iregp irp, fast_u16 nn) {
Expand Down

0 comments on commit c8c481d

Please sign in to comment.