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