|
|
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.