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) ||
なんかタブと空白がヘンな具合に混ざっちゃったみたい…