diff --git a/Components/RP5C01/RP5C01.cpp b/Components/RP5C01/RP5C01.cpp index e0d4ee576..88d8d2001 100644 --- a/Components/RP5C01/RP5C01.cpp +++ b/Components/RP5C01/RP5C01.cpp @@ -100,6 +100,15 @@ void RP5C01::write(int address, uint8_t value) { return; } + switch(mode_) { + case 3: + address += 13; + [[fallthrough]]; + case 2: + ram_[size_t(address)] = value & 0xf; + return; + } + // TODO. printf("RP-5C01 write of %d to %d in mode %d\n", value, address & 0xf, mode_); } @@ -107,6 +116,16 @@ void RP5C01::write(int address, uint8_t value) { uint8_t RP5C01::read(int address) { address &= 0xf; + if(address < 0xd) { + switch(mode_) { + case 3: + address += 13; + [[fallthrough]]; + case 2: + return 0xf0 | ram_[size_t(address)]; + } + } + // TODO. printf("RP-5C01 read from %d in mode %d\n", address & 0xf, mode_); return 0xff;