runcpm-pico/ram.h

48 lines
1,002 B
C

#ifndef RAM_H
#define RAM_H
/* see main.c for definition */
#ifndef RAM_FAST
static uint8 RAM[MEMSIZE]; // Definition of the emulated RAM
uint8* _RamSysAddr(uint16 address) {
if (address < CCPaddr) {
return(&RAM[address * curBank]);
} else {
return(&RAM[address]);
}
}
uint8 _RamRead(uint16 address) {
if (address < CCPaddr) {
return(RAM[address * curBank]);
} else {
return(RAM[address]);
}
}
uint16 _RamRead16(uint16 address) {
if (address < CCPaddr) {
return(RAM[address * curBank] + (RAM[(address * curBank) + 1] << 8));
} else {
return(RAM[address] + (RAM[address + 1] << 8));
}
}
void _RamWrite(uint16 address, uint8 value) {
if (address < CCPaddr) {
RAM[address * curBank] = value;
} else {
RAM[address] = value;
}
}
void _RamWrite16(uint16 address, uint16 value) {
// Z80 is a "little indian" (8 bit era joke)
_RamWrite(address, value & 0xff);
_RamWrite(address + 1, (value >> 8) & 0xff);
}
#endif
#endif