SVGA video RAM is no longer dumped on fatal; READ MULTIPLE command with block size 0 no longer fatals but instead aborts with Abort Command error per the official ATA reference.
This commit is contained in:
@@ -518,7 +518,6 @@ chdir(pcempath);
|
|||||||
/* f=fopen("rram3.dmp","wb");
|
/* f=fopen("rram3.dmp","wb");
|
||||||
for (c=0;c<0x8000000;c++) putc(readmemb(c+0x10000000),f);
|
for (c=0;c<0x8000000;c++) putc(readmemb(c+0x10000000),f);
|
||||||
fclose(f);*/
|
fclose(f);*/
|
||||||
svga_dump_vram();
|
|
||||||
f=fopen("ram.dmp","wb");
|
f=fopen("ram.dmp","wb");
|
||||||
fwrite(ram,mem_size*1024,1,f);
|
fwrite(ram,mem_size*1024,1,f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|||||||
19
src/ide.c
19
src/ide.c
@@ -1084,8 +1084,14 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case WIN_READ_MULTIPLE:
|
case WIN_READ_MULTIPLE:
|
||||||
if (!ide->blocksize && (ide->type != IDE_CDROM))
|
/* Fatal removed in accordance with the official ATAPI reference:
|
||||||
fatal("READ_MULTIPLE - blocksize = 0\n");
|
|
||||||
|
If the Read Multiple command is attempted before the Set Multiple Mode
|
||||||
|
command has been executed or when Read Multiple commands are
|
||||||
|
disabled, the Read Multiple operation is rejected with an Aborted Com-
|
||||||
|
mand error. */
|
||||||
|
/* if (!ide->blocksize && (ide->type != IDE_CDROM))
|
||||||
|
fatal("READ_MULTIPLE - blocksize = 0\n"); */
|
||||||
#if 0
|
#if 0
|
||||||
if (ide->lba) pclog("Read Multiple %i sectors from LBA addr %07X\n",ide->secount,ide->lba_addr);
|
if (ide->lba) pclog("Read Multiple %i sectors from LBA addr %07X\n",ide->secount,ide->lba_addr);
|
||||||
else pclog("Read Multiple %i sectors from sector %i cylinder %i head %i %i\n",ide->secount,ide->sector,ide->cylinder,ide->head,ins);
|
else pclog("Read Multiple %i sectors from sector %i cylinder %i head %i %i\n",ide->secount,ide->sector,ide->cylinder,ide->head,ins);
|
||||||
@@ -1544,9 +1550,16 @@ void callbackide(int ide_board)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case WIN_READ_MULTIPLE:
|
case WIN_READ_MULTIPLE:
|
||||||
if (IDE_DRIVE_IS_CDROM(ide)) {
|
/* According to the official ATAPI reference:
|
||||||
|
|
||||||
|
If the Read Multiple command is attempted before the Set Multiple Mode
|
||||||
|
command has been executed or when Read Multiple commands are
|
||||||
|
disabled, the Read Multiple operation is rejected with an Aborted Com-
|
||||||
|
mand error. */
|
||||||
|
if (IDE_DRIVE_IS_CDROM(ide) || !ide->blocksize) {
|
||||||
goto abort_cmd;
|
goto abort_cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
addr = ide_get_sector(ide) * 512;
|
addr = ide_get_sector(ide) * 512;
|
||||||
// pclog("Read multiple from %08X %i (%i) %i\n", addr, ide->blockcount, ide->blocksize, ide->secount);
|
// pclog("Read multiple from %08X %i (%i) %i\n", addr, ide->blockcount, ide->blocksize, ide->secount);
|
||||||
fseeko64(ide->hdfile, addr, SEEK_SET);
|
fseeko64(ide->hdfile, addr, SEEK_SET);
|
||||||
|
|||||||
@@ -1631,15 +1631,4 @@ void svga_add_status_info(char *s, int max_len, void *p)
|
|||||||
|
|
||||||
sprintf(temps, "SVGA DAC in %i-bit mode\n", (svga->attrregs[0x10] & 0x80) ? 8 : 6);
|
sprintf(temps, "SVGA DAC in %i-bit mode\n", (svga->attrregs[0x10] & 0x80) ? 8 : 6);
|
||||||
strncat(s, temps, max_len);
|
strncat(s, temps, max_len);
|
||||||
}
|
|
||||||
|
|
||||||
void svga_dump_vram()
|
|
||||||
{
|
|
||||||
FILE *f;
|
|
||||||
f = fopen("svga_ram.dmp", "wb");
|
|
||||||
fwrite(svga_pointer->vram, svga_pointer->vrammask + 1, 1, f);
|
|
||||||
fclose(f);
|
|
||||||
f = fopen("svga_pal.dmp", "wb");
|
|
||||||
fwrite(svga_pointer->pallook, 256, 1, f);
|
|
||||||
fclose(f);
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user