first debug version of ncpu
[fceu.git] / ncpu.S
CommitLineData
af32b6c2 1/*************************************
2 Little John GP32
3 File : ncpu.S
4 Authors : FCA author
5 modified and adapted by Yoyo.
6 adapted for fceu by notaz, 2007.
7**************************************/
8
9#include "ncpu.h"
10
11@@@
12@@@ Offets from REG_OP_TABLE
13@@@
14#define OTOFFS_NES_RAM (nes_internal_ram - cpu_exec_table)
15#define OTOFFS_NES_STACK (nes_stack - cpu_exec_table)
16#define OTOFFS_NES_REGS (nes_registers - cpu_exec_table)
17#define OTOFFS_PC_BASE (pc_base - cpu_exec_table)
18
19@ fceu
20#define FCEU_IQNMI 0x08
21#define FCEU_IQTEMP 0x80
22
23
24@@@@@@@@@@@@@@@@@@@@@@@@@@
25
26
27@ SECTION_FAST
28 SECTION_TEXT
29 ALIGN
30
31
32
33@@@
34@@@ r0 = Address (unbased)
35@@@ uses REG_OP_TABLE; sets REG_PC; trashes r1,r2; keeps r0
36@@@
37.macro REBASE_PC
38 @ FIXME: do something with mem not in Page[].
39 cmp r0, #0x2000
40 ldrge r1, =Page
41 movge r2, r0, lsr #11
42 ldrge r2, [r1, r2, lsl #2]
43 andlt r2, r0, #0xf800
44 addlt r1, REG_OP_TABLE, #OTOFFS_NES_RAM
45 sublt r2, r1, r2
46 str r2, [REG_OP_TABLE, #OTOFFS_PC_BASE]
47 add REG_PC, r2, r0
48.endm
49
50
51.macro RETURN_FROM_CPU_EXEC
52 b cpu_exec_end
53.endm
54
55
56@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
57@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
58@@@
59@@@ CYCLE_NEXT
60@@@
61