- [FIX] No calculava be l'adreça de la ROM actual en 128K
- [FIX] La ROM accedeix al pot 0x7ffd "the torerous menner", he tingut que ficar un apanyo
This commit is contained in:
12
main.cpp
12
main.cpp
@@ -74,10 +74,12 @@ namespace actions
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
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;
|
const uint32_t update_freq = clock / 10;
|
||||||
|
|
||||||
new zx_48mem(); // zx_128mem();
|
//new zx_48mem();
|
||||||
|
new zx_128mem();
|
||||||
|
|
||||||
z80dis::loadSymbols();
|
z80dis::loadSymbols();
|
||||||
z80::reset();
|
z80::reset();
|
||||||
@@ -85,8 +87,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
SDL_Init(SDL_INIT_EVERYTHING);
|
SDL_Init(SDL_INIT_EVERYTHING);
|
||||||
z80debug::init();
|
z80debug::init();
|
||||||
//zxscreen::init(SCREEN_MODE_128K);
|
zxscreen::init(SCREEN_MODE_128K);
|
||||||
zxscreen::init(SCREEN_MODE_48K);
|
//zxscreen::init(SCREEN_MODE_48K);
|
||||||
|
|
||||||
ui::menu::init();
|
ui::menu::init();
|
||||||
ui::menu::setexitcallback(actions::exitMenu);
|
ui::menu::setexitcallback(actions::exitMenu);
|
||||||
@@ -118,7 +120,7 @@ int main(int argc, char *argv[])
|
|||||||
zx_tape::load("fernandomartin.tap");
|
zx_tape::load("fernandomartin.tap");
|
||||||
|
|
||||||
if (argc==3) { z80debug::loadngo(argv[1], argv[2]); }
|
if (argc==3) { z80debug::loadngo(argv[1], argv[2]); }
|
||||||
//z80debug::stop();
|
z80debug::stop();
|
||||||
|
|
||||||
bool should_exit = false;
|
bool should_exit = false;
|
||||||
SDL_Event e;
|
SDL_Event e;
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ zx_128mem::zx_128mem()
|
|||||||
|
|
||||||
void zx_128mem::port_out(int port, int val)
|
void zx_128mem::port_out(int port, int val)
|
||||||
{
|
{
|
||||||
const bool shadow = config & ZX_128MEM_SCREEN;
|
|
||||||
if (config & ZX_128MEM_DISPAG) return;
|
if (config & ZX_128MEM_DISPAG) return;
|
||||||
|
const bool shadow = config & ZX_128MEM_SCREEN;
|
||||||
config = val;
|
config = val;
|
||||||
if (config & ZX_128MEM_SCREEN) {
|
if (config & ZX_128MEM_SCREEN) {
|
||||||
if (!shadow) zxscreen::setBaseAddresses(0x4000*7, 0x1800+0x4000*7);
|
if (!shadow) zxscreen::setBaseAddresses(0x4000*7, 0x1800+0x4000*7);
|
||||||
@@ -40,7 +40,7 @@ uint8_t zx_128mem::readMem(uint16_t address)
|
|||||||
switch (bank)
|
switch (bank)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return rom[disp | ((config & ZX_128MEM_ROM)<<4)];
|
return rom[disp | ((config & ZX_128MEM_ROM)<<10)];
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
return memory[disp | 0x14000];
|
return memory[disp | 0x14000];
|
||||||
@@ -52,6 +52,7 @@ uint8_t zx_128mem::readMem(uint16_t address)
|
|||||||
return memory[disp | (0x4000 * (config&ZX_128MEM_PAGE))];
|
return memory[disp | (0x4000 * (config&ZX_128MEM_PAGE))];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void zx_128mem::writeMem(uint16_t address, uint8_t value)
|
void zx_128mem::writeMem(uint16_t address, uint8_t value)
|
||||||
@@ -88,7 +89,7 @@ uint8_t zx_128mem::getTag(uint16_t address)
|
|||||||
switch (bank)
|
switch (bank)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return romtags[disp | ((config & ZX_128MEM_ROM)<<4)];
|
return romtags[disp | ((config & ZX_128MEM_ROM)<<10)];
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
return tags[disp | 0x14000];
|
return tags[disp | 0x14000];
|
||||||
@@ -111,7 +112,7 @@ void zx_128mem::setTag(uint16_t address, uint8_t value)
|
|||||||
switch (bank)
|
switch (bank)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
romtags[disp | ((config & ZX_128MEM_ROM)<<4)] = value;
|
romtags[disp | ((config & ZX_128MEM_ROM)<<10)] = value;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
tags[disp | 0x14000] = value;
|
tags[disp | 0x14000] = value;
|
||||||
@@ -135,6 +136,7 @@ void zx_128mem::reset()
|
|||||||
for (int i=0; i<131072; ++i) tags[i] = MEMTAG_NONE;
|
for (int i=0; i<131072; ++i) tags[i] = MEMTAG_NONE;
|
||||||
|
|
||||||
z80::connect_port(0x7ffd, nullptr, zx_128_port_out);
|
z80::connect_port(0x7ffd, nullptr, zx_128_port_out);
|
||||||
|
z80::connect_port(0xfd, nullptr, zx_128_port_out);
|
||||||
}
|
}
|
||||||
|
|
||||||
void zx_128mem::saveState(FILE *f)
|
void zx_128mem::saveState(FILE *f)
|
||||||
|
|||||||
Reference in New Issue
Block a user