6502 emulator for Commodore 64 ROMs, serial terminal edition for MBED. Recommend terminal echo on, line edit on, caps lock, 115200bps, implicit carriage return on newline, currently non-buffered so don't paste lots of stuff
More details at:
[https://github.com/davervw] [https://techwithdave.davevw.com/2020/03/simple-emu-c64.html]
Diff: emuc64.cpp
- Revision:
- 6:0df1257f8cc1
- Parent:
- 4:0461c100cbbb
- Child:
- 7:f49fa56672d8
diff -r 8711ef4afd31 -r 0df1257f8cc1 emuc64.cpp --- a/emuc64.cpp Sun Apr 12 19:42:12 2020 +0000 +++ b/emuc64.cpp Mon Apr 13 04:36:42 2020 +0000 @@ -771,7 +771,7 @@ byte GetMemory(ushort addr) { - if (addr < sizeof(ram) && (addr < basic_addr || (addr >= open_addr && addr < open_addr + open_size))) + if (addr <= sizeof(ram)-1 && (addr < basic_addr || (addr >= open_addr && addr < open_addr + open_size))) return ram[addr]; else if (addr >= basic_addr && addr < basic_addr + sizeof(basic_rom)) return basic_rom[addr - basic_addr]; @@ -779,7 +779,7 @@ return color_nybles[addr - color_addr]; else if (addr >= io_addr && addr < io_addr + io_size) return 0; // io[addr - io_addr]; - else if (addr >= kernal_addr && addr < kernal_addr + sizeof(kernal_rom)) + else if (addr >= kernal_addr && addr <= kernal_addr + sizeof(kernal_rom)-1) return kernal_rom[addr - kernal_addr]; else return 0xFF; @@ -787,7 +787,7 @@ void SetMemory(ushort addr, byte value) { - if (addr < sizeof(ram) && (addr < io_addr || (addr >= kernal_addr && addr < kernal_addr + sizeof(kernal_rom)))) + if (addr < sizeof(ram) && (addr < io_addr || (addr >= kernal_addr && addr <= kernal_addr + sizeof(kernal_rom)-1))) ram[addr] = value; else if (addr == 0xD021) // background ;