XT models can now have less than 640kB RAM.

This commit is contained in:
TomW 2015-11-18 20:28:57 +00:00
commit c47df21a82
9 changed files with 139 additions and 83 deletions

View file

@ -201,11 +201,11 @@ int piix_bus_master_sector_read(int channel, uint8_t *data)
if (piix_busmaster[channel].count < (512 - transferred))
{
// pclog("Transferring smaller - %i bytes\n", piix_busmaster[channel].count);
if (piix_busmaster[channel].addr < (mem_size * 1024 * 1024))
if (piix_busmaster[channel].addr < (mem_size * 1024))
{
int count = piix_busmaster[channel].count;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024 * 1024))
count = (mem_size * 1024 * 1024) - piix_busmaster[channel].addr;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024))
count = (mem_size * 1024) - piix_busmaster[channel].addr;
memcpy(&ram[piix_busmaster[channel].addr], data + transferred, count);
}
transferred += piix_busmaster[channel].count;
@ -215,11 +215,11 @@ int piix_bus_master_sector_read(int channel, uint8_t *data)
else
{
// pclog("Transferring larger - %i bytes\n", 512 - transferred);
if (piix_busmaster[channel].addr < (mem_size * 1024 * 1024))
if (piix_busmaster[channel].addr < (mem_size * 1024))
{
int count = 512 - transferred;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024 * 1024))
count = (mem_size * 1024 * 1024) - piix_busmaster[channel].addr;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024))
count = (mem_size * 1024) - piix_busmaster[channel].addr;
memcpy(&ram[piix_busmaster[channel].addr], data + transferred, count);
}
piix_busmaster[channel].addr += (512 - transferred);
@ -258,11 +258,11 @@ int piix_bus_master_sector_write(int channel, uint8_t *data)
if (piix_busmaster[channel].count < (512 - transferred))
{
// pclog("Transferring smaller - %i bytes\n", piix_busmaster[channel].count);
if (piix_busmaster[channel].addr < (mem_size * 1024 * 1024))
if (piix_busmaster[channel].addr < (mem_size * 1024))
{
int count = piix_busmaster[channel].count;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024 * 1024))
count = (mem_size * 1024 * 1024) - piix_busmaster[channel].addr;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024))
count = (mem_size * 1024) - piix_busmaster[channel].addr;
memcpy(data + transferred, &ram[piix_busmaster[channel].addr], count);
}
transferred += piix_busmaster[channel].count;
@ -272,11 +272,11 @@ int piix_bus_master_sector_write(int channel, uint8_t *data)
else
{
// pclog("Transferring larger - %i bytes\n", 512 - transferred);
if (piix_busmaster[channel].addr < (mem_size * 1024 * 1024))
if (piix_busmaster[channel].addr < (mem_size * 1024))
{
int count = 512 - transferred;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024 * 1024))
count = (mem_size * 1024 * 1024) - piix_busmaster[channel].addr;
if ((piix_busmaster[channel].addr + count) > (mem_size * 1024))
count = (mem_size * 1024) - piix_busmaster[channel].addr;
memcpy(data + transferred, &ram[piix_busmaster[channel].addr], count);
}
piix_busmaster[channel].addr += (512 - transferred);