XT models can now have less than 640kB RAM.
This commit is contained in:
parent
e9bea8ab7e
commit
c47df21a82
9 changed files with 139 additions and 83 deletions
24
src/piix.c
24
src/piix.c
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue