22 #ifndef SYSTEMROMBANKS_H
23 #define SYSTEMROMBANKS_H
29 #include "sidplayfp/c64/CPU/opcodes.h"
44 void setVal(uint_least16_t address, uint8_t val) {
rom[address & (N-1)]=val; }
47 uint8_t
getVal(uint_least16_t address)
const {
return rom[address & (N-1)]; }
50 void*
getPtr(uint_least16_t address)
const {
return (
void*)&
rom[address & (N-1)]; }
54 void set(
const uint8_t* source) {
if (source) memcpy(
rom, source, N); }
57 void poke(uint_least16_t address SID_UNUSED, uint8_t value SID_UNUSED) {}
59 uint8_t
peek(uint_least16_t address) {
return rom[address & (N-1)]; }
68 uint8_t resetVectorLo;
69 uint8_t resetVectorHi;
72 void set(
const uint8_t* kernal)
149 resetVectorLo =
getVal(0xfffc);
150 resetVectorHi =
getVal(0xfffd);
156 setVal(0xfffc, resetVectorLo);
157 setVal(0xfffd, resetVectorHi);
167 setVal(0xfffc, endian_16lo8(addr));
168 setVal(0xfffd, endian_16hi8(addr));
182 void set(
const uint8_t* basic)
187 memcpy(trap,
getPtr(0xa7ae), 3);
189 memcpy(subTune,
getPtr(0xbf53), 11);
195 memcpy(
getPtr(0xa7ae), trap, 3);
197 memcpy(
getPtr(0xbf53), subTune, 11);
208 setVal(0xa7af, endian_16lo8(addr));
209 setVal(0xa7b0, endian_16hi8(addr));
212 void setSubtune(uint8_t tune)
void installTrap(uint_least16_t addr)
Definition: SystemROMBanks.h:205
Definition: SystemROMBanks.h:231
Definition: SystemROMBanks.h:175
uint8_t getVal(uint_least16_t address) const
Return value from memory address.
Definition: SystemROMBanks.h:47
uint8_t rom[N]
The ROM array.
Definition: SystemROMBanks.h:40
void setVal(uint_least16_t address, uint8_t val)
Set value at memory address.
Definition: SystemROMBanks.h:44
void * getPtr(uint_least16_t address) const
Return pointer to memory address.
Definition: SystemROMBanks.h:50
Definition: SystemROMBanks.h:36
void set(const uint8_t *source)
Copy content from source buffer.
Definition: SystemROMBanks.h:54
void installResetHook(uint_least16_t addr)
Definition: SystemROMBanks.h:165
uint8_t peek(uint_least16_t address)
Definition: SystemROMBanks.h:59
Definition: SystemROMBanks.h:65
void poke(uint_least16_t address SID_UNUSED, uint8_t value SID_UNUSED)
Writing to ROM is a no-op.
Definition: SystemROMBanks.h:57