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