Initial cpu and instruction parsing
This commit is contained in:
29
lib/cpu_util.c
Normal file
29
lib/cpu_util.c
Normal file
@ -0,0 +1,29 @@
|
||||
#include <cpu.h>
|
||||
|
||||
extern cpu_context ctx;
|
||||
|
||||
u16 reverse(u16 n) {
|
||||
return ((n & 0XFF00) >> 8) | ((n & 0x00FF) << 8);
|
||||
}
|
||||
|
||||
u16 cpu_read_reg(reg_type rt) {
|
||||
switch(rt) {
|
||||
case RT_A: return ctx.regs.a;
|
||||
case RT_F: return ctx.regs.f;
|
||||
case RT_B: return ctx.regs.b;
|
||||
case RT_C: return ctx.regs.c;
|
||||
case RT_D: return ctx.regs.d;
|
||||
case RT_E: return ctx.regs.e;
|
||||
case RT_H: return ctx.regs.h;
|
||||
case RT_L: return ctx.regs.l;
|
||||
|
||||
case RT_AF: return reverse(*((u16 *)&ctx.regs.a));
|
||||
case RT_BC: return reverse(*((u16 *)&ctx.regs.b));
|
||||
case RT_DE: return reverse(*((u16 *)&ctx.regs.d));
|
||||
case RT_HL: return reverse(*((u16 *)&ctx.regs.h));
|
||||
|
||||
case RT_PC: return ctx.regs.pc;
|
||||
case RT_SP: return ctx.regs.sp;
|
||||
default: return 0;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user