kopia lustrzana https://github.com/Jean-MarcHarvengt/MCUME
35 wiersze
1.5 KiB
C
Executable File
35 wiersze
1.5 KiB
C
Executable File
/*
|
|
* Read/Write memory macros - little endian
|
|
*/
|
|
#ifdef BYTES_SWAP
|
|
#define ReadB(address) *(uint8*)((uint32)(address)^1)
|
|
#define WriteB(address,value) *(uint8*)((uint32)(address)^1)=value
|
|
#define ReadW(addr) *(uint16*)(addr)
|
|
#define WriteW(addr,value) *(uint16*)(addr)=value
|
|
#define ReadL(address) ((*(uint16*)(address))<<16)|(*(uint16*)(address+2))
|
|
#define WriteL(address,value) WriteW(address + 2, value); WriteW(address, value>> 16)
|
|
#define ReadSL(addr) (*(uint16*)(addr))|((*(uint16*)(addr+2))<<16)
|
|
#else
|
|
#define ReadB(address) *((int8 *) (address))
|
|
#define WriteB(address,value) *((int8 *) (address)) = (value)
|
|
//#define ReadW(addr) ((*(uint16 *)(addr) << 8) | (*(uint16 *)(addr) >> 8))
|
|
//#define WriteW(addr,value) *((int16 *)(addr)) = ((((uint16)(value)) << 8) | (((uint16)(value)) >> 8))
|
|
#define ReadW(addr) *(uint16*)(addr)
|
|
#define WriteW(addr,value) *(uint16*)(addr)=value
|
|
//#define ReadL(address) ((uint16) ReadW(address) << 16) | (uint16) ReadW((address) + 2)
|
|
//#define WriteL(address,value) WriteW((address) + 2, value); WriteW(address, (value) >> 16)
|
|
#define ReadL(addr) *(uint32*)(addr)
|
|
#define WriteL(addr,value) *(uint32*)(addr)=value
|
|
//#define ReadSL(addr) ((uint16)ReadW(addr))|((((uint16)ReadW(addr+2)))<<16)
|
|
#define ReadSL(addr) ((uint16)ReadW(addr+2))|((((uint16)ReadW(addr)))<<16)
|
|
#endif
|
|
|
|
int MemInit(void);
|
|
void MemQuit(void);
|
|
void MemClean(void);
|
|
void MemReInit(void);
|
|
|
|
extern unsigned short int TosVersion;
|
|
extern short TosCountry;
|
|
void TOS_FixRom(uint8 *TosAddress);
|