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]

Revision:
6:0df1257f8cc1
Parent:
4:0461c100cbbb
Child:
7:f49fa56672d8
--- 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
 		;