diff --git a/bochs/bios/BIOS-bochs-2-processors b/bochs/bios/BIOS-bochs-2-processors index e8c6347e0..2d34e469f 100644 Binary files a/bochs/bios/BIOS-bochs-2-processors and b/bochs/bios/BIOS-bochs-2-processors differ diff --git a/bochs/bios/BIOS-bochs-4-processors b/bochs/bios/BIOS-bochs-4-processors index f8b3810be..ad7eff5d0 100644 Binary files a/bochs/bios/BIOS-bochs-4-processors and b/bochs/bios/BIOS-bochs-4-processors differ diff --git a/bochs/bios/BIOS-bochs-8-processors b/bochs/bios/BIOS-bochs-8-processors index 61da6f06e..4ff1c966d 100644 Binary files a/bochs/bios/BIOS-bochs-8-processors and b/bochs/bios/BIOS-bochs-8-processors differ diff --git a/bochs/bios/BIOS-bochs-latest b/bochs/bios/BIOS-bochs-latest index bb65f4a01..ee4200164 100644 Binary files a/bochs/bios/BIOS-bochs-latest and b/bochs/bios/BIOS-bochs-latest differ diff --git a/bochs/bios/rombios.c b/bochs/bios/rombios.c index ac48f9263..568af5b1c 100644 --- a/bochs/bios/rombios.c +++ b/bochs/bios/rombios.c @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: rombios.c,v 1.124 2004-12-20 17:00:19 vruppert Exp $ +// $Id: rombios.c,v 1.125 2005-01-02 09:45:37 vruppert Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -912,10 +912,10 @@ Bit16u cdrom_boot(); #endif // BX_ELTORITO_BOOT -static char bios_cvs_version_string[] = "$Revision: 1.124 $"; -static char bios_date_string[] = "$Date: 2004-12-20 17:00:19 $"; +static char bios_cvs_version_string[] = "$Revision: 1.125 $"; +static char bios_date_string[] = "$Date: 2005-01-02 09:45:37 $"; -static char CVSID[] = "$Id: rombios.c,v 1.124 2004-12-20 17:00:19 vruppert Exp $"; +static char CVSID[] = "$Id: rombios.c,v 1.125 2005-01-02 09:45:37 vruppert Exp $"; /* Offset to skip the CVS $Id: prefix */ #define bios_version_string (CVSID + 4) @@ -3610,10 +3610,8 @@ int15_function_mouse(regs, ES, DS, FLAGS) Bit8u mouse_flags_1, mouse_flags_2; Bit16u mouse_driver_seg; Bit16u mouse_driver_offset; - Bit8u response, prev_command_byte; - bx_bool prev_a20_enable; - Bit8u ret, mouse_data1, mouse_data2, mouse_data3; - Bit8u comm_byte, mf2_state; + Bit8u comm_byte, prev_command_byte; + Bit8u ret, mouse_data1, mouse_data2, mouse_data3; BX_DEBUG_INT15("int15 AX=%04x\n",regs.u.r16.ax); @@ -3828,8 +3826,26 @@ BX_DEBUG_INT15("case 6:\n"); return; case 1: // Set Scaling Factor to 1:1 - CLEAR_CF(); - regs.u.r8.ah = 0; + case 2: // Set Scaling Factor to 2:1 + comm_byte = inhibit_mouse_int_and_events(); // disable IRQ12 and packets + if (regs.u.r8.bh == 1) { + ret = send_to_mouse_ctrl(0xE6); + } else { + ret = send_to_mouse_ctrl(0xE7); + } + if (ret == 0) { + get_mouse_data(&mouse_data1); + ret = (mouse_data1 != 0xFA); + } + if (ret == 0) { + CLEAR_CF(); + regs.u.r8.ah = 0; + } else { + // error + SET_CF(); + regs.u.r8.ah = UNSUPPORTED_FUNCTION; + } + set_kbd_command_byte(comm_byte); // restore IRQ12 and serial enable break; default: