Changes to LaserXT/3 :

- Changed LaserXT/3 processor to 8086.
- Changed LaserXT/3's minimum memory size to 512KB and granularity to 128KB.
- Changed EMS size granularity to 256KB on Laser Turbo XT and 512KB on LaserXT/3. Base memory size is calculated automatically.
- The mem_set_mem_state() function call for above of 1MB is called only when the memory size is more than 1024KB.
Patch from Greatpsycho.
This commit is contained in:
SarahW 2017-11-04 13:45:39 +00:00
commit bc4f98d814
3 changed files with 11 additions and 4 deletions

View file

@ -11,7 +11,9 @@ static int laserxt_ems_baseaddr_index = 0;
static uint32_t get_laserxt_ems_addr(uint32_t addr)
{
if (laserxt_emspage[(addr >> 14) & 3] & 0x80)
addr = 0xA0000 + ((laserxt_emspage[(addr >> 14) & 3] & 0x0F) << 14) + ((laserxt_emspage[(addr >> 14) & 3] & 0x40) << 12) + (addr & 0x3FFF);
{
addr = (romset == ROM_LTXT ? 0x70000 + (((mem_size + 64) & 255) << 10) : 0x30000 + (((mem_size + 320) & 511) << 10)) + ((laserxt_emspage[(addr >> 14) & 3] & 0x0F) << 14) + ((laserxt_emspage[(addr >> 14) & 3] & 0x40) << 12) + (addr & 0x3FFF);
}
return addr;
}
@ -99,6 +101,7 @@ void laserxt_init()
io_sethandler(0x4208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0x8208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
io_sethandler(0xc208, 0x0002, laserxt_read, NULL, NULL, laserxt_write, NULL, NULL, NULL);
mem_mapping_set_addr(&ram_low_mapping, 0, romset == ROM_LTXT ? 0x70000 + (((mem_size + 64) & 255) << 10) : 0x30000 + (((mem_size + 320) & 511) << 10));
}
for (i = 0; i < 4; i++)