--- hatari/src/includes/stMemory.h 2019/04/01 07:10:55 1.1.1.2 +++ hatari/src/includes/stMemory.h 2019/04/01 07:13:06 1.1.1.6 @@ -8,18 +8,86 @@ #ifndef HATARI_STMEMORY_H #define HATARI_STMEMORY_H -extern void STMemory_Clear(unsigned long StartAddress, unsigned long EndAddress); -extern unsigned short STMemory_Swap68000Int(unsigned short var); -extern unsigned long STMemory_Swap68000Long(unsigned long var); -extern void STMemory_WriteLong(unsigned long Address, unsigned long Var); -extern void STMemory_WriteWord(unsigned long Address, unsigned short Var); -extern void STMemory_WriteByte(unsigned long Address, unsigned char Var); -extern unsigned long STMemory_ReadLong(unsigned long Address); -extern unsigned short STMemory_ReadWord(unsigned long Address); -extern unsigned char STMemory_ReadByte(unsigned long Address); -extern void STMemory_WriteLong_PCSpace(void *pAddress, unsigned long Var); -extern void STMemory_WriteWord_PCSpace(void *pAddress, unsigned short Var); -extern unsigned long STMemory_ReadLong_PCSpace(void *pAddress); -extern unsigned short STMemory_ReadWord_PCSpace(void *pAddress); +#include "sysdeps.h" +#include "maccess.h" +#include "main.h" + + +extern Uint8 STRam[16*1024*1024]; +extern Uint32 STRamEnd; + + +/* Offset ST address to PC pointer: */ +#define STRAM_ADDR(Var) ((unsigned long)STRam+((Uint32)(Var) & 0x00ffffff)) + + +/*-----------------------------------------------------------------------*/ +/* + Write 32-bit word into ST memory space. + NOTE - value will be convert to 68000 endian +*/ +static inline void STMemory_WriteLong(Uint32 Address, Uint32 Var) +{ + Address &= 0xffffff; + do_put_mem_long(&STRam[Address], Var); +} + +/*-----------------------------------------------------------------------*/ +/* + Write 16-bit word into ST memory space. + NOTE - value will be convert to 68000 endian. +*/ +static inline void STMemory_WriteWord(Uint32 Address, Uint16 Var) +{ + Address &= 0xffffff; + do_put_mem_word(&STRam[Address], Var); +} + +/*-----------------------------------------------------------------------*/ +/* + Write 8-bit byte into ST memory space. +*/ +static inline void STMemory_WriteByte(Uint32 Address, Uint8 Var) +{ + Address &= 0xffffff; + STRam[Address] = Var; +} + + +/*-----------------------------------------------------------------------*/ +/* + Read 32-bit word from ST memory space. + NOTE - value will be converted to PC endian. +*/ +static inline Uint32 STMemory_ReadLong(Uint32 Address) +{ + Address &= 0xffffff; + return do_get_mem_long(&STRam[Address]); +} + +/*-----------------------------------------------------------------------*/ +/* + Read 16-bit word from ST memory space. + NOTE - value will be converted to PC endian. +*/ +static inline Uint16 STMemory_ReadWord(Uint32 Address) +{ + Address &= 0xffffff; + return do_get_mem_word(&STRam[Address]); +} + +/*-----------------------------------------------------------------------*/ +/* + Read 8-bit byte from ST memory space +*/ +static inline Uint8 STMemory_ReadByte(Uint32 Address) +{ + Address &= 0xffffff; + return STRam[Address]; +} + + +extern void STMemory_Clear(Uint32 StartAddress, Uint32 EndAddress); +extern void STMemory_SetDefaultConfig(void); #endif