--- hatari/src/includes/ioMem.h 2019/04/01 07:12:16 1.1.1.1 +++ hatari/src/includes/ioMem.h 2019/04/09 08:49:33 1.1.1.5 @@ -8,15 +8,18 @@ #ifndef HATARI_IOMEM_H #define HATARI_IOMEM_H -#if 0 -#include "sysdeps.h" -#include "maccess.h" -#include "main.h" +#include "config.h" + +#if ENABLE_SMALL_MEM +# include "sysdeps.h" +# include "maccess.h" +# include "main.h" +extern uae_u8 *IOmemory; +# define IoMem (IOmemory-0xff0000) #else -/* TODO: IoMem will later become independent from STRam... */ -#include "stMemory.h" -#define IoMem STRam -#endif +# include "stMemory.h" +# define IoMem STRam +#endif /* ENABLE_SMALL_MEM */ extern Uint32 IoAccessBaseAddress; @@ -24,32 +27,31 @@ extern Uint32 IoAccessCurrentAddress; extern int nIoMemAccessSize; -/*-----------------------------------------------------------------------*/ -/* - Read 32-bit word from IO memory space without interception. - NOTE - value will be converted to PC endian. -*/ +/** + * Read 32-bit word from IO memory space without interception. + * NOTE - value will be converted to PC endian. + */ static inline Uint32 IoMem_ReadLong(Uint32 Address) { Address &= 0x0ffffff; return do_get_mem_long(&IoMem[Address]); } -/*-----------------------------------------------------------------------*/ -/* - Read 16-bit word from IO memory space without interception. - NOTE - value will be converted to PC endian. -*/ + +/** + * Read 16-bit word from IO memory space without interception. + * NOTE - value will be converted to PC endian. + */ static inline Uint16 IoMem_ReadWord(Uint32 Address) { Address &= 0x0ffffff; return do_get_mem_word(&IoMem[Address]); } -/*-----------------------------------------------------------------------*/ -/* - Read 8-bit byte from IO memory space without interception. -*/ + +/** + * Read 8-bit byte from IO memory space without interception. + */ static inline Uint8 IoMem_ReadByte(Uint32 Address) { Address &= 0x0ffffff; @@ -57,32 +59,31 @@ static inline Uint8 IoMem_ReadByte(Uint3 } -/*-----------------------------------------------------------------------*/ -/* - Write 32-bit word into IO memory space without interception. - NOTE - value will be convert to 68000 endian -*/ +/** + * Write 32-bit word into IO memory space without interception. + * NOTE - value will be convert to 68000 endian + */ static inline void IoMem_WriteLong(Uint32 Address, Uint32 Var) { Address &= 0x0ffffff; do_put_mem_long(&IoMem[Address], Var); } -/*-----------------------------------------------------------------------*/ -/* - Write 16-bit word into IO memory space without interception. - NOTE - value will be convert to 68000 endian. -*/ + +/** + * Write 16-bit word into IO memory space without interception. + * NOTE - value will be convert to 68000 endian. + */ static inline void IoMem_WriteWord(Uint32 Address, Uint16 Var) { Address &= 0xffffff; do_put_mem_word(&IoMem[Address], Var); } -/*-----------------------------------------------------------------------*/ -/* - Write 8-bit byte into IO memory space without interception. -*/ + +/** + * Write 8-bit byte into IO memory space without interception. + */ static inline void IoMem_WriteByte(Uint32 Address, Uint8 Var) { Address &= 0x0ffffff; @@ -92,6 +93,8 @@ static inline void IoMem_WriteByte(Uint3 extern void IoMem_Init(void); extern void IoMem_UnInit(void); +extern void IoMem_Init_FalconInSTeBuscompatibilityMode(Uint8 value); + extern uae_u32 IoMem_bget(uaecptr addr); extern uae_u32 IoMem_wget(uaecptr addr); @@ -106,8 +109,11 @@ extern void IoMem_BusErrorOddReadAccess( extern void IoMem_BusErrorEvenWriteAccess(void); extern void IoMem_BusErrorOddWriteAccess(void); extern void IoMem_VoidRead(void); +extern void IoMem_VoidRead_00(void); extern void IoMem_VoidWrite(void); extern void IoMem_WriteWithoutInterception(void); extern void IoMem_ReadWithoutInterception(void); +extern void IoMem_MemorySnapShot_Capture(bool bSave); + #endif