|
|
1.1 root 1: #pragma once
2:
3: #ifndef __ND_MEM_H__
4: #define __ND_MEM_H__
5:
6: #include <sysdeps.h>
7: #include "log.h"
8:
9: #ifdef __cplusplus
10: extern "C" {
11: #endif /* __cplusplus */
12:
13: /* NeXTdimension board and slot memory */
14: #define ND_BOARD_SIZE 0x10000000
15: #define ND_BOARD_MASK 0x0FFFFFFF
16: #define ND_BOARD_BITS 0xF0000000
17:
18: #define ND_SLOT_SIZE 0x01000000
19: #define ND_SLOT_MASK 0x00FFFFFF
20: #define ND_SLOT_BITS 0x0F000000
21:
22: #define ND_NBIC_SPACE 0xFFFFFFE8
23:
24: #define LOG_ND_MEM LOG_NONE
25:
26: typedef uae_u32 (*nd_mem_get_func)(int, uaecptr) REGPARAM;
27: typedef void (*nd_mem_put_func)(int, uaecptr, uae_u32) REGPARAM;
28:
29: #define nd_bankindex(addr) (((uaecptr)(addr)) >> 16)
30: #define nd_get_mem_bank(addr) (nd->mem_banks[nd_bankindex(addr)])
31: #define nd68k_get_mem_bank(addr) (mem_banks[nd_bankindex(addr)])
32: #define nd_put_mem_bank(addr, b) (mem_banks[nd_bankindex(addr)] = (b))
33:
34: #define nd_longget(addr) (nd_get_mem_bank(addr)->lget(addr))
35: #define nd_wordget(addr) (nd_get_mem_bank(addr)->wget(addr))
36: #define nd_byteget(addr) (nd_get_mem_bank(addr)->bget(addr))
37: #define nd_longput(addr,l) (nd_get_mem_bank(addr)->lput(addr, l))
38: #define nd_wordput(addr,w) (nd_get_mem_bank(addr)->wput(addr, w))
39: #define nd_byteput(addr,b) (nd_get_mem_bank(addr)->bput(addr, b))
40: #define nd_cs8get(addr) (nd_get_mem_bank(addr)->cs8get(addr))
41:
42: #define nd68k_longget(addr) (nd68k_get_mem_bank(addr)->lget(addr))
43: #define nd68k_wordget(addr) (nd68k_get_mem_bank(addr)->wget(addr))
44: #define nd68k_byteget(addr) (nd68k_get_mem_bank(addr)->bget(addr))
45: #define nd68k_longput(addr,l) (nd68k_get_mem_bank(addr)->lput(addr, l))
46: #define nd68k_wordput(addr,w) (nd68k_get_mem_bank(addr)->wput(addr, w))
47: #define nd68k_byteput(addr,b) (nd68k_get_mem_bank(addr)->bput(addr, b))
48: #define nd68k_cs8get(addr) (nd68k_get_mem_bank(addr)->cs8geti(addr))
49:
50: #ifdef __cplusplus
51: }
52:
53: class ND_Addrbank {
54: protected:
55: NextDimension* nd;
56: public:
57: int flags;
58:
59: virtual Uint32 lget(Uint32 addr);
60: virtual Uint32 wget(Uint32 addr);
61: virtual Uint32 bget(Uint32 addr);
62: virtual Uint32 cs8get(Uint32 addr);
63:
64: virtual void lput(Uint32 addr, Uint32 val);
65: virtual void wput(Uint32 addr, Uint32 val);
66: virtual void bput(Uint32 addr, Uint32 val);
67:
68: ND_Addrbank(NextDimension* nd);
69: };
70:
71: #endif /* __cplusplus */
72:
73: #endif /* __ND_MEM_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.