00001
00045
00046
00047 #ifndef _MEM68_H_
00048 #define _MEM68_H_
00049
00050 #include "emu68/struct68.h"
00051
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055
00060 #ifdef EMU68DEBUG
00061 # define READ_68 1
00062 # define WRITTEN_68 2
00063 # define EXECUTED_68 4
00064 # define BREAKED_68 8
00065 #endif
00066
00075 #define ISIO68(ADDR) ((ADDR)&0x800000)
00076
00077 extern memrfunc68_t read_mem_jmp_l[256];
00078 extern memrfunc68_t read_mem_jmp_w[256];
00079 extern memrfunc68_t read_mem_jmp_b[256];
00080 extern memwfunc68_t write_mem_jmp_l[256];
00081 extern memwfunc68_t write_mem_jmp_w[256];
00082 extern memwfunc68_t write_mem_jmp_b[256];
00085
00086
00091 extern u32 read_68000mem_b(u32 addr);
00092 extern u32 read_68000mem_w(u32 addr);
00093 extern u32 read_68000mem_l(u32 addr);
00095 extern void write_68000mem_b(u32 addr,u32 v);
00096 extern void write_68000mem_w(u32 addr,u32 v);
00097 extern void write_68000mem_l(u32 addr,u32 v);
00099 #define read_B(ADDR) read_68000mem_b(ADDR)
00100 #define read_W(ADDR) read_68000mem_w(ADDR)
00101 #define read_L(ADDR) read_68000mem_l(ADDR)
00104 #define write_B(ADDR,VAL) write_68000mem_b(ADDR,VAL)
00105
00106 #define write_W(ADDR,VAL) write_68000mem_w(ADDR,VAL)
00107
00108 #define write_L(ADDR,VAL) write_68000mem_l(ADDR,VAL)
00109
00117 s32 get_nextw(void);
00118 s32 get_nextl(void);
00121
00122
00126 void pushl(s32 v);
00127 void pushw(s32 v);
00128 s32 popl(void);
00129 s32 popw(void);
00131
00139 void EMU68memory_init(void);
00140
00147 void EMU68memory_reset(void);
00148
00157 void EMU68memory_new_area(u8 area,
00158 memrfunc68_t *read_bwl,
00159 memwfunc68_t *write_bwl);
00160
00165 void EMU68memory_reset_area(u8 area);
00166
00167
00168 #ifdef __cplusplus
00169 }
00170 #endif
00171
00172 #endif
00173