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