SCSI controller is now reset on x86 soft reset, fixes DOS driver hangs after soft reset; SCSI controller reset control is now implemented more accurately, on a 50 ms timer; For the PS/1 Model 2011, the Keyboard Input Port bit 6 now correctly reports if the currently selected (in FDC DOR) floppy drive is 3.5" or 5.25"; Commented out excess DMA logging; Added support for FDF floppy images; Fixed handling of CDB allocated length field for the CD-ROM INQUIRY command; (S)VGA port 03C1 write is back again (it was incorrectly gone in some builds); Commented out Compaq/Paradise VGA; PS/1 Model 2121+ISA now correctly allows selecting graphics card.
86 lines
2.0 KiB
C
86 lines
2.0 KiB
C
/* Copyright holders: Sarah Walker
|
|
see COPYING for more details
|
|
*/
|
|
static int opESCAPE_d8_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_d8_a16[(fetchdat >> 3) & 0x1f](fetchdat);
|
|
}
|
|
static int opESCAPE_d8_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_d8_a32[(fetchdat >> 3) & 0x1f](fetchdat);
|
|
}
|
|
|
|
static int opESCAPE_d9_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_d9_a16[fetchdat & 0xff](fetchdat);
|
|
}
|
|
static int opESCAPE_d9_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_d9_a32[fetchdat & 0xff](fetchdat);
|
|
}
|
|
|
|
static int opESCAPE_da_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_da_a16[fetchdat & 0xff](fetchdat);
|
|
}
|
|
static int opESCAPE_da_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_da_a32[fetchdat & 0xff](fetchdat);
|
|
}
|
|
|
|
static int opESCAPE_db_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_db_a16[fetchdat & 0xff](fetchdat);
|
|
}
|
|
static int opESCAPE_db_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_db_a32[fetchdat & 0xff](fetchdat);
|
|
}
|
|
|
|
static int opESCAPE_dc_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_dc_a16[(fetchdat >> 3) & 0x1f](fetchdat);
|
|
}
|
|
static int opESCAPE_dc_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_dc_a32[(fetchdat >> 3) & 0x1f](fetchdat);
|
|
}
|
|
|
|
static int opESCAPE_dd_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_dd_a16[fetchdat & 0xff](fetchdat);
|
|
}
|
|
static int opESCAPE_dd_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_dd_a32[fetchdat & 0xff](fetchdat);
|
|
}
|
|
|
|
static int opESCAPE_de_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_de_a16[fetchdat & 0xff](fetchdat);
|
|
}
|
|
static int opESCAPE_de_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_de_a32[fetchdat & 0xff](fetchdat);
|
|
}
|
|
|
|
static int opESCAPE_df_a16(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_df_a16[fetchdat & 0xff](fetchdat);
|
|
}
|
|
static int opESCAPE_df_a32(uint32_t fetchdat)
|
|
{
|
|
return x86_opcodes_df_a32[fetchdat & 0xff](fetchdat);
|
|
}
|
|
|
|
static int opWAIT(uint32_t fetchdat)
|
|
{
|
|
if ((cr0 & 0xa) == 0xa)
|
|
{
|
|
x86_int(7);
|
|
return 1;
|
|
}
|
|
CLOCK_CYCLES(4);
|
|
return 0;
|
|
}
|