to detect Cirrus chips on OS/2...

忘れそうなので適当にパッチ捨て。

*** qemu-0.7.1-org/hw/cirrus_vga.c	Sun Jul 24 18:52:08 2005
--- qemu-0.7.1/hw/cirrus_vga.c	Tue Aug 22 15:02:05 2005
***************
*** 2509,2514 ****
--- 2509,2521 ----
  	    break;
  	case 0x3c4:
  	    val = s->sr_index;
+ 	    if ((val & 0x1e) == 0x10) { /* SR10-F0, SR11-F1 */
+ 	        /* least 3 bits of corsor X/Y */
+ 	        if (val & 1)
+ 		    val = ((s->hw_cursor_y & 7) << 5) | 0x11;
+ 		else
+ 		    val = ((s->hw_cursor_x & 7) << 5) | 0x10;
+ 	    }
  	    break;
  	case 0x3c5:
  	    if (cirrus_hook_read_sr(s, s->sr_index, &val))

とりあえず emmbed以下略なサイトに以前上がっていた OS/2 用 5446 ドライバ(日本語版)でひとまず動作するもより。

ついでなので bochs の該当部分もチャラっと追加してみた。
OS/2 での動作未確認)

*** bochs-2.2.1-org/iodev/svga_cirrus.cc	Wed Jul  6 20:49:33 2005
--- bochs-2.2.1/iodev/svga_cirrus.cc	Tue Aug 22 15:15:07 2005
***************
*** 822,827 ****
--- 822,837 ----
        break;
  
      case 0x03c4: /* VGA: Sequencer Index Register */
+       if (BX_CIRRUS_THIS is_unlocked()) {
+         Bit32u value = BX_CIRRUS_THIS sequencer.index;
+         if ((value & 0x1e) == 0x10) { /* SR10-F0, SR11-F1 */
+           if (value & 1)
+ 	    value = ((BX_CIRRUS_THIS hw_cursor.y & 7) << 5) | 0x11;
+ 	  else
+ 	    value = ((BX_CIRRUS_THIS hw_cursor.x & 7) << 5) | 0x10;
+         }
+         return value;
+       }
        return BX_CIRRUS_THIS sequencer.index;
      case 0x03c5: /* VGA: Sequencer Registers */
        if ((BX_CIRRUS_THIS sequencer.index == 0x06) ||

なんかタブと空白がヘンな具合に混ざっちゃったみたい…