|
|
1.1 root 1: typedef uae_u32 (*nd_mem_get_func)(uaecptr) REGPARAM;
2: typedef void (*nd_mem_put_func)(uaecptr, uae_u32) REGPARAM;
3:
4: typedef struct {
5: /* These ones should be self-explanatory... */
6: mem_get_func lget, wget, bget;
7: mem_put_func lput, wput, bput;
8: mem_get_func cs8geti;
9: int flags;
10: } nd_addrbank;
11:
12: #define nd_bankindex(addr) (((uaecptr)(addr)) >> 16)
13:
14: #define nd_call_mem_get_func(func, addr) ((*func)(addr))
15: #define nd_call_mem_put_func(func, addr, v) ((*func)(addr, v))
16:
17: extern nd_addrbank *nd_mem_banks[65536];
18: #define nd_get_mem_bank(addr) (*nd_mem_banks[bankindex(addr)])
19: #define nd_put_mem_bank(addr, b) (nd_mem_banks[bankindex(addr)] = (b))
20:
21: #define nd_longget(addr) (nd_call_mem_get_func(nd_get_mem_bank(addr).lget, addr))
22: #define nd_wordget(addr) (nd_call_mem_get_func(nd_get_mem_bank(addr).wget, addr))
23: #define nd_byteget(addr) (nd_call_mem_get_func(nd_get_mem_bank(addr).bget, addr))
24: #define nd_longput(addr,l) (nd_call_mem_put_func(nd_get_mem_bank(addr).lput, addr, l))
25: #define nd_wordput(addr,w) (nd_call_mem_put_func(nd_get_mem_bank(addr).wput, addr, w))
26: #define nd_byteput(addr,b) (nd_call_mem_put_func(nd_get_mem_bank(addr).bput, addr, b))
27: #define nd_cs8get(addr) (nd_call_mem_get_func(nd_get_mem_bank(addr).cs8geti, addr))
28:
29: void nd_memory_init(void);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.