idectrl - implemented verify no retry command [Carl]

i86 - Fixed imul instruction [Carl]
This commit is contained in:
Miodrag Milanovic 2011-05-30 14:25:35 +00:00
parent c3d6f72453
commit 73323f655d
3 changed files with 6 additions and 4 deletions

View File

@ -68,7 +68,7 @@ static void PREFIX186(_imul_d16)(i8086_state *cpustate) /* Opcode 0x69 */
{
DEF_r16w(dst,src);
unsigned src2=FETCH;
src+=(FETCH<<8);
src2+=(FETCH<<8);
ICOUNT -= (ModRM >= 0xc0) ? timing.imul_rri16 : timing.imul_rmi16;

View File

@ -510,7 +510,7 @@ static void PREFIX286(_0fpre)(i8086_state *cpustate)
desc[2] = ReadWord(addr+4);
r = RIGHTS(desc);
if (SEGDESC(r) || (GATE(r) != LDTDESC)) throw TRAP(GENERAL_PROTECTION_FAULT,IDXTBL(sel));
if (!PRES(r)) TRAP(SEG_NOT_PRESENT,IDXTBL(sel));
if (!PRES(r)) throw TRAP(SEG_NOT_PRESENT,IDXTBL(sel));
} else {
desc[0] = 0;
desc[1] = 0;
@ -530,7 +530,7 @@ static void PREFIX286(_0fpre)(i8086_state *cpustate)
desc[2] = ReadWord(addr+4);
r = RIGHTS(desc);
if (SEGDESC(r) || (GATE(r) != TSSDESCIDLE)) throw TRAP(GENERAL_PROTECTION_FAULT,IDXTBL(sel));
if (!PRES(r)) TRAP(SEG_NOT_PRESENT,IDXTBL(sel));
if (!PRES(r)) throw TRAP(SEG_NOT_PRESENT,IDXTBL(sel));
desc[2] |= 0x200; // mark busy
WriteWord(addr+4, desc[2]);
cpustate->tr.sel=sel;

View File

@ -79,6 +79,7 @@
#define IDE_COMMAND_SECURITY_UNLOCK 0xf2
#define IDE_COMMAND_UNKNOWN_F9 0xf9
#define IDE_COMMAND_VERIFY_MULTIPLE 0x40
#define IDE_COMMAND_VERIFY_NORETRY 0x41
#define IDE_COMMAND_ATAPI_IDENTIFY 0xa1
#define IDE_COMMAND_RECALIBRATE 0x10
#define IDE_COMMAND_IDLE_IMMEDIATE 0xe1
@ -1040,7 +1041,8 @@ static void handle_command(ide_state *ide, UINT8 command)
break;
case IDE_COMMAND_VERIFY_MULTIPLE:
LOGPRINT(("IDE Read verify multiple with retries: C=%d H=%d S=%d LBA=%d count=%d\n",
case IDE_COMMAND_VERIFY_NORETRY:
LOGPRINT(("IDE Read verify multiple with/without retries: C=%d H=%d S=%d LBA=%d count=%d\n",
ide->cur_cylinder, ide->cur_head, ide->cur_sector, lba_address(ide), ide->sector_count));
/* reset the buffer */