improved debug
[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)
92e249b1 18#define OTOFFS_IRQ_HOOK (MapIRQHook - cpu_exec_table)
c0bf6f9f 19#define OTOFFS_X (X_ - cpu_exec_table)
af32b6c2 20
21@ fceu
22#define FCEU_IQNMI 0x08
23#define FCEU_IQTEMP 0x80
24
25
26@@@@@@@@@@@@@@@@@@@@@@@@@@
27
28
29@ SECTION_FAST
30 SECTION_TEXT
31 ALIGN
32
c0bf6f9f 33bbbb:
34.ascii "rebase: %04x"
35.byte 0x0a,0
36.align 4
af32b6c2 37
38
39@@@
40@@@ r0 = Address (unbased)
41@@@ uses REG_OP_TABLE; sets REG_PC; trashes r1,r2; keeps r0
42@@@
43.macro REBASE_PC
44 @ FIXME: do something with mem not in Page[].
c0bf6f9f 45@ stmfd sp!, {r0-r3,r12,lr}
46@ mov r1, r0
47@ ldr r0, =bbbb
48@ bl printf
49@ ldmfd sp!, {r0-r3,r12,lr}
50
af32b6c2 51 cmp r0, #0x2000
52 ldrge r1, =Page
53 movge r2, r0, lsr #11
54 ldrge r2, [r1, r2, lsl #2]
55 andlt r2, r0, #0xf800
56 addlt r1, REG_OP_TABLE, #OTOFFS_NES_RAM
57 sublt r2, r1, r2
58 str r2, [REG_OP_TABLE, #OTOFFS_PC_BASE]
59 add REG_PC, r2, r0
60.endm
61
62
af32b6c2 63
64@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
65@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
66@@@
67@@@ CYCLE_NEXT
68@@@
69