sc68fordevelopers  2.2.1
mem68.h
Go to the documentation of this file.
1 
45 /* Copyright (C) 1998-2001 Ben(jamin) Gerard */
46 
47 #ifndef _MEM68_H_
48 #define _MEM68_H_
49 
50 #include "emu68/struct68.h"
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
60 #ifdef EMU68DEBUG
61 # define READ_68 1
62 # define WRITTEN_68 2
63 # define EXECUTED_68 4
64 # define BREAKED_68 8
65 #endif
66 
75 #define ISIO68(ADDR) ((ADDR)&0x800000)
76 
77 extern memrfunc68_t read_mem_jmp_l[256];
78 extern memrfunc68_t read_mem_jmp_w[256];
79 extern memrfunc68_t read_mem_jmp_b[256];
80 extern memwfunc68_t write_mem_jmp_l[256];
81 extern memwfunc68_t write_mem_jmp_w[256];
82 extern memwfunc68_t write_mem_jmp_b[256];
85 
86 
91 extern u32 read_68000mem_b(u32 addr);
92 extern u32 read_68000mem_w(u32 addr);
93 extern u32 read_68000mem_l(u32 addr);
95 extern void write_68000mem_b(u32 addr,u32 v);
96 extern void write_68000mem_w(u32 addr,u32 v);
97 extern void write_68000mem_l(u32 addr,u32 v);
99 #define read_B(ADDR) read_68000mem_b(ADDR)
100 #define read_W(ADDR) read_68000mem_w(ADDR)
101 #define read_L(ADDR) read_68000mem_l(ADDR)
104 #define write_B(ADDR,VAL) write_68000mem_b(ADDR,VAL)
105 
106 #define write_W(ADDR,VAL) write_68000mem_w(ADDR,VAL)
107 
108 #define write_L(ADDR,VAL) write_68000mem_l(ADDR,VAL)
109 
117 s32 get_nextw(void);
118 s32 get_nextl(void);
121 
122 
126 void pushl(s32 v);
127 void pushw(s32 v);
128 s32 popl(void);
129 s32 popw(void);
131 
139 void EMU68memory_init(void);
140 
147 void EMU68memory_reset(void);
148 
157 void EMU68memory_new_area(u8 area,
158  memrfunc68_t *read_bwl,
159  memwfunc68_t *write_bwl);
160 
165 void EMU68memory_reset_area(u8 area);
166 
167 
168 #ifdef __cplusplus
169 }
170 #endif
171 
172 #endif /* #ifndef _MEM68_H_ */
173 
void EMU68memory_new_area(u8 area, memrfunc68_t *read_bwl, memwfunc68_t *write_bwl)
Add a new memory access control area (for new IO)
void pushl(s32 v)
Push long.
Struture definitions.
unsigned int u32
Must be an unsigned 32 bit integer.
Definition: type68.h:37
s32 popl(void)
Pop long.
s32 get_nextl(void)
Decode long and update PC.
void EMU68memory_reset(void)
Reset memory quick access table.
void write_68000mem_l(u32 addr, u32 v)
Write memory long.
unsigned char u8
Must be an unsigned 8 bit integer.
Definition: type68.h:31
void write_68000mem_w(u32 addr, u32 v)
Write memory word.
u32(* memrfunc68_t)(u32 addr, cycle68_t cycle)
Read memory function.
Definition: struct68.h:42
memrfunc68_t read_mem_jmp_b[256]
Read byte.
void write_68000mem_b(u32 addr, u32 v)
Write memory byte.
memrfunc68_t read_mem_jmp_l[256]
Read long.
s32 get_nextw(void)
Decode word and update PC.
memwfunc68_t write_mem_jmp_b[256]
Write byte.
signed int s32
Must be an signed 32 bit integer.
Definition: type68.h:38
void(* memwfunc68_t)(u32 addr, u32 value, cycle68_t cycle)
Write memory function.
Definition: struct68.h:45
memwfunc68_t write_mem_jmp_w[256]
Write word.
void pushw(s32 v)
Push word.
s32 popw(void)
Pop word.
memwfunc68_t write_mem_jmp_l[256]
Write long.
u32 read_68000mem_b(u32 addr)
Read memory byte.
u32 read_68000mem_l(u32 addr)
Read memory long.
memrfunc68_t read_mem_jmp_w[256]
Read word.
void EMU68memory_init(void)
Init memory quick access table.
u32 read_68000mem_w(u32 addr)
Read memory word.
void EMU68memory_reset_area(u8 area)
Reset memory access control area to default state.