Пример #1
0
template<int n, int i> void SMPcore::op_mov_dpr_reg() {
  dp  = op_readpc();
  op_io();
  dp += regs.r[i];
  op_readdp<false>(dp);
  op_writedp(dp, regs.r[n]);
}
Пример #2
0
template<int n, int i> alwaysinline void SMP::op_mov_dpr_reg() {
  dp  = op_readpc();
  op_io();
  dp += regs.r[i];
  op_readdp(dp);
  op_writedp(dp, regs.r[n]);
}
Пример #3
0
void SMPcore::op_adjust_dpx() {
  dp = op_readpc();
  op_io();
  rd = op_readdp(dp + regs.x);
  rd = (this->*op)(rd);
  op_writedp(dp + regs.x, rd);
}
Пример #4
0
void SMP::op_read_dp_const() {
  rd = op_readpc();
  dp = op_readpc();
  wr = op_readdp(dp);
  wr = (this->*op)(wr, rd);
  static uint8 (SMP::*cmp)(uint8, uint8) = &SMP::op_cmp;
  (op != cmp) ? op_writedp(dp, wr) : op_io();
}
Пример #5
0
void SMP::op_read_ix_iy() {
  op_io();
  rd = op_readdp(regs.y);
  wr = op_readdp(regs.x);
  wr = (this->*op)(wr, rd);
  static uint8 (SMP::*cmp)(uint8, uint8) = &SMP::op_cmp;
  (op != cmp) ? op_writedp(regs.x, wr) : op_io();
}
Пример #6
0
void SMPcore::op_adjustw_dp() {
  dp  = op_readpc();
  rd  = op_readdp(dp) << 0;
  rd += adjust;
  op_writedp(dp++, rd);
  rd += op_readdp(dp) << 8;
  op_writedp(dp, rd >> 8);
  regs.p.n = (rd & 0x8000);
  regs.p.z = (rd == 0);
}
Пример #7
0
alwaysinline void SMP::op_dbnz_dp() {
  dp = op_readpc();
  wr = op_readdp(dp);
  op_writedp(dp, --wr);
  rd = op_readpc();
  if(wr == 0) return;
  op_io();
  op_io();
  regs.pc += (int8)rd;
}
Пример #8
0
alwaysinline void SMP::op_mov_dp_const() {
  rd = op_readpc();
  dp = op_readpc();
  op_readdp(dp);
  op_writedp(dp, rd);
}
Пример #9
0
alwaysinline void SMP::op_mov_dp_dp() {
  sp = op_readpc();
  rd = op_readdp(sp);
  dp = op_readpc();
  op_writedp(dp, rd);
}
Пример #10
0
alwaysinline void SMP::op_movw_dp_ya() {
  dp = op_readpc();
  op_readdp(dp);
  op_writedp(dp + 0, regs.a);
  op_writedp(dp + 1, regs.y);
}
Пример #11
0
void SMPcore::op_adjust_dp() {
  dp = op_readpc();
  rd = op_readdp(dp);
  rd = (this->*op)(rd);
  op_writedp(dp, rd);
}
Пример #12
0
template<int n> alwaysinline void SMP::op_mov_dp_reg() {
  dp = op_readpc();
  op_readdp(dp);
  op_writedp(dp, regs.r[n]);
}
Пример #13
0
alwaysinline void SMP::op_mov_ixinc_a() {
  op_io();
  op_io();
  op_writedp(regs.x++, regs.a);
}
Пример #14
0
template<int n> void SMPcore::op_mov_dp_reg() {
  dp = op_readpc();
  op_readdp<false>(dp);
  op_writedp(dp, regs.r[n]);
}
Пример #15
0
template<int n, int i> void CPUcore::op_write_dpr_b() {
  dp = op_readpc();
  op_io_cond2();
  op_io();
L op_writedp(dp + regs.r[i], regs.r[n]);
}
Пример #16
0
void SMPcore::op_mov_dp_const() {
  rd = op_readpc();
  dp = op_readpc();
  op_readdp<false>(dp);
  op_writedp(dp, rd);
}
Пример #17
0
void SMPcore::op_mov_dp_dp() {
  sp = op_readpc();
  rd = op_readdp(sp);
  dp = op_readpc();
  op_writedp(dp, rd);
}
Пример #18
0
void SMPcore::op_movw_dp_ya() {
  dp = op_readpc();
  op_readdp<false>(dp);
  op_writedp(dp + 0, regs.a);
  op_writedp(dp + 1, regs.y);
}
Пример #19
0
void SMPcore::op_mov_ix_a() {
  op_io();
  op_readdp<false>(regs.x);
  op_writedp(regs.x, regs.a);
}
Пример #20
0
alwaysinline void SMP::op_mov_ix_a() {
  op_io();
  op_readdp(regs.x);
  op_writedp(regs.x, regs.a);
}
Пример #21
0
template<int n> void CPUcore::op_write_dp_b() {
  dp = op_readpc();
  op_io_cond2();
L op_writedp(dp, regs.r[n]);
}
Пример #22
0
void SMPcore::op_mov_ixinc_a() {
  op_io();
  op_io();
  op_writedp(regs.x++, regs.a);
}