diff --git a/main.cpp b/main.cpp index 875898d..6aa65c3 100644 --- a/main.cpp +++ b/main.cpp @@ -74,10 +74,12 @@ namespace actions int main(int argc, char *argv[]) { - const uint32_t clock = 3500000; // 3546900; + //const uint32_t clock = 3500000; + const uint32_t clock = 3546900; const uint32_t update_freq = clock / 10; - new zx_48mem(); // zx_128mem(); + //new zx_48mem(); + new zx_128mem(); z80dis::loadSymbols(); z80::reset(); @@ -85,8 +87,8 @@ int main(int argc, char *argv[]) SDL_Init(SDL_INIT_EVERYTHING); z80debug::init(); - //zxscreen::init(SCREEN_MODE_128K); - zxscreen::init(SCREEN_MODE_48K); + zxscreen::init(SCREEN_MODE_128K); + //zxscreen::init(SCREEN_MODE_48K); ui::menu::init(); ui::menu::setexitcallback(actions::exitMenu); @@ -118,7 +120,7 @@ int main(int argc, char *argv[]) zx_tape::load("fernandomartin.tap"); if (argc==3) { z80debug::loadngo(argv[1], argv[2]); } - //z80debug::stop(); + z80debug::stop(); bool should_exit = false; SDL_Event e; diff --git a/zx_128mem.cpp b/zx_128mem.cpp index 91ea105..561b5e0 100644 --- a/zx_128mem.cpp +++ b/zx_128mem.cpp @@ -22,8 +22,8 @@ zx_128mem::zx_128mem() void zx_128mem::port_out(int port, int val) { - const bool shadow = config & ZX_128MEM_SCREEN; if (config & ZX_128MEM_DISPAG) return; + const bool shadow = config & ZX_128MEM_SCREEN; config = val; if (config & ZX_128MEM_SCREEN) { if (!shadow) zxscreen::setBaseAddresses(0x4000*7, 0x1800+0x4000*7); @@ -40,7 +40,7 @@ uint8_t zx_128mem::readMem(uint16_t address) switch (bank) { case 0: - return rom[disp | ((config & ZX_128MEM_ROM)<<4)]; + return rom[disp | ((config & ZX_128MEM_ROM)<<10)]; break; case 1: return memory[disp | 0x14000]; @@ -52,6 +52,7 @@ uint8_t zx_128mem::readMem(uint16_t address) return memory[disp | (0x4000 * (config&ZX_128MEM_PAGE))]; break; } + return 0; } void zx_128mem::writeMem(uint16_t address, uint8_t value) @@ -88,7 +89,7 @@ uint8_t zx_128mem::getTag(uint16_t address) switch (bank) { case 0: - return romtags[disp | ((config & ZX_128MEM_ROM)<<4)]; + return romtags[disp | ((config & ZX_128MEM_ROM)<<10)]; break; case 1: return tags[disp | 0x14000]; @@ -111,7 +112,7 @@ void zx_128mem::setTag(uint16_t address, uint8_t value) switch (bank) { case 0: - romtags[disp | ((config & ZX_128MEM_ROM)<<4)] = value; + romtags[disp | ((config & ZX_128MEM_ROM)<<10)] = value; break; case 1: tags[disp | 0x14000] = value; @@ -135,6 +136,7 @@ void zx_128mem::reset() for (int i=0; i<131072; ++i) tags[i] = MEMTAG_NONE; z80::connect_port(0x7ffd, nullptr, zx_128_port_out); + z80::connect_port(0xfd, nullptr, zx_128_port_out); } void zx_128mem::saveState(FILE *f)