|
|
1.1 ! root 1: /* ! 2: Hatari - ioMem.h ! 3: ! 4: This file is distributed under the GNU Public License, version 2 or at ! 5: your option any later version. Read the file gpl.txt for details. ! 6: */ ! 7: ! 8: #ifndef HATARI_IOMEM_H ! 9: #define HATARI_IOMEM_H ! 10: ! 11: #include "config.h" ! 12: ! 13: # include "nextMemory.h" ! 14: # define IoMem NEXTIo ! 15: ! 16: ! 17: extern Uint32 IoAccessBaseAddress; ! 18: extern Uint32 IoAccessCurrentAddress; ! 19: extern int nIoMemAccessSize; ! 20: ! 21: ! 22: /** ! 23: * Read 32-bit word from IO memory space without interception. ! 24: * NOTE - value will be converted to PC endian. ! 25: */ ! 26: static inline Uint32 IoMem_ReadLong(Uint32 Address) ! 27: { ! 28: Address &= 0x01ffff; ! 29: return do_get_mem_long(&IoMem[Address]); ! 30: } ! 31: ! 32: ! 33: /** ! 34: * Read 16-bit word from IO memory space without interception. ! 35: * NOTE - value will be converted to PC endian. ! 36: */ ! 37: static inline Uint16 IoMem_ReadWord(Uint32 Address) ! 38: { ! 39: Address &= 0x01ffff; ! 40: return do_get_mem_word(&IoMem[Address]); ! 41: } ! 42: ! 43: ! 44: /** ! 45: * Read 8-bit byte from IO memory space without interception. ! 46: */ ! 47: static inline Uint8 IoMem_ReadByte(Uint32 Address) ! 48: { ! 49: Address &= 0x01ffff; ! 50: return IoMem[Address]; ! 51: } ! 52: ! 53: ! 54: /** ! 55: * Write 32-bit word into IO memory space without interception. ! 56: * NOTE - value will be convert to 68000 endian ! 57: */ ! 58: static inline void IoMem_WriteLong(Uint32 Address, Uint32 Var) ! 59: { ! 60: Address &= 0x01ffff; ! 61: do_put_mem_long(&IoMem[Address], Var); ! 62: } ! 63: ! 64: ! 65: /** ! 66: * Write 16-bit word into IO memory space without interception. ! 67: * NOTE - value will be convert to 68000 endian. ! 68: */ ! 69: static inline void IoMem_WriteWord(Uint32 Address, Uint16 Var) ! 70: { ! 71: Address &= 0x01ffff; ! 72: do_put_mem_word(&IoMem[Address], Var); ! 73: } ! 74: ! 75: ! 76: /** ! 77: * Write 8-bit byte into IO memory space without interception. ! 78: */ ! 79: static inline void IoMem_WriteByte(Uint32 Address, Uint8 Var) ! 80: { ! 81: Address &= 0x01ffff; ! 82: IoMem[Address] = Var; ! 83: } ! 84: ! 85: ! 86: void IoMem_Init(void); ! 87: void IoMem_UnInit(void); ! 88: ! 89: uae_u32 IoMem_bget(uaecptr addr); ! 90: uae_u32 IoMem_wget(uaecptr addr); ! 91: uae_u32 IoMem_lget(uaecptr addr); ! 92: ! 93: void IoMem_bput(uaecptr addr, uae_u32 val); ! 94: void IoMem_wput(uaecptr addr, uae_u32 val); ! 95: void IoMem_lput(uaecptr addr, uae_u32 val); ! 96: ! 97: void IoMem_BusErrorEvenReadAccess(void); ! 98: void IoMem_BusErrorOddReadAccess(void); ! 99: void IoMem_BusErrorEvenWriteAccess(void); ! 100: void IoMem_BusErrorOddWriteAccess(void); ! 101: void IoMem_VoidRead(void); ! 102: void IoMem_VoidRead_00(void); ! 103: void IoMem_VoidWrite(void); ! 104: void IoMem_WriteWithoutInterception(void); ! 105: void IoMem_ReadWithoutInterception(void); ! 106: void IoMem_WriteWithoutInterceptionButTrace(void); ! 107: void IoMem_ReadWithoutInterceptionButTrace(void); ! 108: void IoMem_Debug(void); ! 109: ! 110: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.