ia64/xen-unstable

changeset 3453:2c56c6b39a48

bitkeeper revision 1.1159.212.18 (41ebe1caQQ_SlJestrvsT95t1oER-Q)

Merge arcadians.cl.cam.ac.uk:/auto/groups/xeno/BK/xen-unstable.bk
into arcadians.cl.cam.ac.uk:/auto/groups/xeno/users/cl349/BK/xen-unstable.bk
author cl349@arcadians.cl.cam.ac.uk
date Mon Jan 17 16:03:22 2005 +0000 (2005-01-17)
parents f5275225c5cb 4abfb7f9fa7a
children 3c69b6ca4021
files .hgtags .rootkeys BitKeeper/etc/ignore buildconfigs/mk.linux-2.6-xen0 buildconfigs/mk.linux-2.6-xenU linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0 linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig linux-2.6.10-xen-sparse/arch/xen/kernel/fixup.c linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c linux-2.6.10-xen-sparse/drivers/xen/blkfront/block.h linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c tools/Makefile tools/examples/Makefile tools/examples/network-route tools/examples/vif-route tools/examples/xend-config.sxp tools/ioemu/Makefile tools/ioemu/font/vga.bitmap.h tools/ioemu/gui/Makefile tools/ioemu/gui/Makefile.in tools/ioemu/gui/bitmaps/cdromd.h tools/ioemu/gui/bitmaps/cdromd.xpm tools/ioemu/gui/bitmaps/configbutton.h tools/ioemu/gui/bitmaps/configbutton.xpm tools/ioemu/gui/bitmaps/copy.h tools/ioemu/gui/bitmaps/copy.xpm tools/ioemu/gui/bitmaps/floppya.h tools/ioemu/gui/bitmaps/floppya.xpm tools/ioemu/gui/bitmaps/floppyb.h tools/ioemu/gui/bitmaps/floppyb.xpm tools/ioemu/gui/bitmaps/mouse.h tools/ioemu/gui/bitmaps/mouse.xpm tools/ioemu/gui/bitmaps/paste.h tools/ioemu/gui/bitmaps/paste.xpm tools/ioemu/gui/bitmaps/power.h tools/ioemu/gui/bitmaps/power.xpm tools/ioemu/gui/bitmaps/reset.h tools/ioemu/gui/bitmaps/reset.xpm tools/ioemu/gui/bitmaps/snapshot.h tools/ioemu/gui/bitmaps/snapshot.xpm tools/ioemu/gui/bitmaps/userbutton.h tools/ioemu/gui/bitmaps/userbutton.xpm tools/ioemu/gui/gui.cc tools/ioemu/gui/gui.h tools/ioemu/gui/icon_bochs.h tools/ioemu/gui/icon_bochs.xpm tools/ioemu/gui/keymap.cc tools/ioemu/gui/keymap.h tools/ioemu/gui/keymaps/convertmap.pl tools/ioemu/gui/keymaps/sdl-pc-de.map tools/ioemu/gui/keymaps/sdl-pc-us.map tools/ioemu/gui/keymaps/x11-pc-be.map tools/ioemu/gui/keymaps/x11-pc-da.map tools/ioemu/gui/keymaps/x11-pc-de.map tools/ioemu/gui/keymaps/x11-pc-es.map tools/ioemu/gui/keymaps/x11-pc-fr.map tools/ioemu/gui/keymaps/x11-pc-it.map tools/ioemu/gui/keymaps/x11-pc-se.map tools/ioemu/gui/keymaps/x11-pc-uk.map tools/ioemu/gui/keymaps/x11-pc-us.map tools/ioemu/gui/nogui.cc tools/ioemu/gui/rfb.cc tools/ioemu/gui/rfb.h tools/ioemu/gui/rfbproto.h tools/ioemu/gui/sdl.h tools/ioemu/gui/sdlkeys.h tools/ioemu/gui/siminterface.cc tools/ioemu/gui/siminterface.h tools/ioemu/gui/svga.cc tools/ioemu/gui/term.cc tools/ioemu/gui/textconfig.cc tools/ioemu/gui/textconfig.h tools/ioemu/gui/x.cc tools/ioemu/include/bochs.h tools/ioemu/include/bxversion.h tools/ioemu/include/config.h tools/ioemu/include/cpu/cpu.h tools/ioemu/include/extplugin.h tools/ioemu/include/instrument.h tools/ioemu/include/ltdl.h tools/ioemu/include/ltdlconf.h tools/ioemu/include/osdep.h tools/ioemu/include/pc_system.h tools/ioemu/include/plugin.h tools/ioemu/include/state_file.h tools/ioemu/iodev/Makefile tools/ioemu/iodev/aspi-win32.h tools/ioemu/iodev/biosdev.cc tools/ioemu/iodev/biosdev.h tools/ioemu/iodev/cdrom.cc tools/ioemu/iodev/cdrom.h tools/ioemu/iodev/cdrom_beos.h tools/ioemu/iodev/cmos.cc tools/ioemu/iodev/cmos.h tools/ioemu/iodev/cpu.cc tools/ioemu/iodev/crc32.cc tools/ioemu/iodev/crc32.h tools/ioemu/iodev/devices.cc tools/ioemu/iodev/dma.cc tools/ioemu/iodev/dma.h tools/ioemu/iodev/eth.cc tools/ioemu/iodev/eth.h tools/ioemu/iodev/eth_arpback.cc tools/ioemu/iodev/eth_fbsd.cc tools/ioemu/iodev/eth_linux.cc tools/ioemu/iodev/eth_null.cc tools/ioemu/iodev/eth_packetmaker.cc tools/ioemu/iodev/eth_packetmaker.h tools/ioemu/iodev/eth_tap.cc tools/ioemu/iodev/eth_tuntap.cc tools/ioemu/iodev/extfpuirq.cc tools/ioemu/iodev/extfpuirq.h tools/ioemu/iodev/floppy.cc tools/ioemu/iodev/floppy.h tools/ioemu/iodev/gameport.cc tools/ioemu/iodev/gameport.h tools/ioemu/iodev/guest2host.h tools/ioemu/iodev/harddrv.cc tools/ioemu/iodev/harddrv.h tools/ioemu/iodev/ioapic.cc tools/ioemu/iodev/ioapic.h tools/ioemu/iodev/iodebug.cc tools/ioemu/iodev/iodebug.h tools/ioemu/iodev/iodev.h tools/ioemu/iodev/keyboard.cc tools/ioemu/iodev/keyboard.h tools/ioemu/iodev/load32bitOShack.cc tools/ioemu/iodev/logio.cc tools/ioemu/iodev/main.cc tools/ioemu/iodev/ne2k.cc tools/ioemu/iodev/ne2k.h tools/ioemu/iodev/osdep.cc tools/ioemu/iodev/parallel.cc tools/ioemu/iodev/parallel.h tools/ioemu/iodev/pc_system.cc tools/ioemu/iodev/pci.cc tools/ioemu/iodev/pci.h tools/ioemu/iodev/pci2isa.cc tools/ioemu/iodev/pci2isa.h tools/ioemu/iodev/pciusb.cc tools/ioemu/iodev/pciusb.h tools/ioemu/iodev/pcivga.cc tools/ioemu/iodev/pcivga.h tools/ioemu/iodev/pic.cc tools/ioemu/iodev/pic.h tools/ioemu/iodev/pit.cc tools/ioemu/iodev/pit.h tools/ioemu/iodev/pit82c54.cc tools/ioemu/iodev/pit82c54.h tools/ioemu/iodev/pit_wrap.cc tools/ioemu/iodev/pit_wrap.h tools/ioemu/iodev/plugin.cc tools/ioemu/iodev/scancodes.cc tools/ioemu/iodev/scancodes.h tools/ioemu/iodev/scsi_commands.h tools/ioemu/iodev/scsidefs.h tools/ioemu/iodev/scsipt.h tools/ioemu/iodev/serial.cc tools/ioemu/iodev/serial.h tools/ioemu/iodev/serial_raw.h tools/ioemu/iodev/slowdown_timer.cc tools/ioemu/iodev/slowdown_timer.h tools/ioemu/iodev/soundlnx.cc tools/ioemu/iodev/soundlnx.h tools/ioemu/iodev/soundwin.cc tools/ioemu/iodev/soundwin.h tools/ioemu/iodev/state_file.cc tools/ioemu/iodev/unmapped.cc tools/ioemu/iodev/unmapped.h tools/ioemu/iodev/vga.cc tools/ioemu/iodev/vga.h tools/ioemu/iodev/virt_timer.cc tools/ioemu/iodev/virt_timer.h tools/ioemu/memory/Makefile tools/ioemu/memory/memory.cc tools/ioemu/memory/memory.h tools/ioemu/memory/misc_mem.cc tools/ioemu/mk/helix.mk tools/libxc/Makefile tools/libxc/xc.h tools/libxc/xc_domain.c tools/libxc/xc_linux_build.c tools/libxc/xc_linux_restore.c tools/libxc/xc_linux_save.c tools/libxc/xc_plan9_build.c tools/libxc/xc_private.c tools/libxc/xc_private.h tools/libxc/xc_vmx_build.c tools/misc/netfix tools/misc/xend tools/misc/xensv tools/misc/xm tools/python/Makefile tools/python/xen/xend/server/blkif.py tools/python/xen/xm/create.py xen/arch/x86/domain.c xen/arch/x86/memory.c xen/arch/x86/traps.c xen/arch/x86/x86_32/mm.c xen/arch/x86/x86_32/seg_fixup.c xen/common/dom0_ops.c xen/common/string.c xen/include/asm-x86/mm.h xen/include/asm-x86/processor.h xen/include/asm-x86/x86_32/string.h xen/include/public/xen.h xen/include/xen/irq.h xen/include/xen/list.h
line diff
     1.1 --- a/.hgtags	Mon Jan 10 10:26:55 2005 +0000
     1.2 +++ b/.hgtags	Mon Jan 17 16:03:22 2005 +0000
     1.3 @@ -1,6 +1,7 @@
     1.4  42882b3e0dda89f3a8ec00da568f86e9b3c230f1 RELEASE-2.0.0
     1.5  475a162b66e2c19b1e9468b234a4ba705334905e RELEASE-2.0.1
     1.6  dc2f08429f17e6614fd2f1ab88cc09ca0a850f32 RELEASE-2.0.2
     1.7 +6e1bbc13911751efa0b1c018425c1b085820fa02 RELEASE-2.0.3
     1.8  487b2ee37d1cecb5f3e7a546b05ad097a0226f2f beta1
     1.9  3d330e41f41ce1bc118c02346e18949ad5d67f6b latest-semistable
    1.10  30c521db4c71960b0cf1d9c9e1b658e77b535a3e latest-stable
     2.1 --- a/.rootkeys	Mon Jan 10 10:26:55 2005 +0000
     2.2 +++ b/.rootkeys	Mon Jan 17 16:03:22 2005 +0000
     2.3 @@ -325,11 +325,175 @@ 405ff55dawQyCHFEnJ067ChPRoXBBA tools/exa
     2.4  40278d94cIUWl2eRgnwZtr4hTyWT1Q tools/examples/init.d/xendomains
     2.5  41dde8afTUuvdtFUlOx0ZRusKxyd8w tools/examples/mem-map.sxp
     2.6  40ee75a9xFz6S05sDKu-JCLqyVTkDA tools/examples/network
     2.7 +41e661e1giIEKbJ25qfiP-ke8u8hFA tools/examples/network-route
     2.8  40ee75a967sxgcRY4Q7zXoVUaJ4flA tools/examples/vif-bridge
     2.9 +41e661e1ooiRKlOfwumG6wwzc0PdhQ tools/examples/vif-route
    2.10  40ee75a93cqxHp6MiYXxxwR5j2_8QQ tools/examples/xend-config.sxp
    2.11  41dde8af6M2Pm1Rrv_f5jEFC_BIOIA tools/examples/xmexample.vmx
    2.12  41090ec8Pj_bkgCBpg2W7WfmNkumEA tools/examples/xmexample1
    2.13  40cf2937oKlROYOJTN8GWwWM5AmjBg tools/examples/xmexample2
    2.14 +41e2ff6dNPgvIrdIF6dC1azdex1U3A tools/ioemu/Makefile
    2.15 +41e2ff6aoF5fgddZi0QpEWqFr89E5g tools/ioemu/font/vga.bitmap.h
    2.16 +41e2ff6avgnBNvZRiL4ynyGGq2UKlw tools/ioemu/gui/Makefile
    2.17 +41e2ff6a30Xuw7pDX3SlVBx3ssOMDQ tools/ioemu/gui/Makefile.in
    2.18 +41e2ff6aGGn5D3-Yh856G7xWJ5ZJsA tools/ioemu/gui/bitmaps/cdromd.h
    2.19 +41e2ff6abNiWU34DwftxJ30sI6TQmw tools/ioemu/gui/bitmaps/cdromd.xpm
    2.20 +41e2ff6adSUYHlvyVpz7q1Izcx5_gQ tools/ioemu/gui/bitmaps/configbutton.h
    2.21 +41e2ff6aLWWXfMqIH2jSCNUzuc4_Yg tools/ioemu/gui/bitmaps/configbutton.xpm
    2.22 +41e2ff6ahsqMjwuhpbqfrFHCBqYhEA tools/ioemu/gui/bitmaps/copy.h
    2.23 +41e2ff6ajL41CnUeGefMrNijudQlCg tools/ioemu/gui/bitmaps/copy.xpm
    2.24 +41e2ff6aXn5GhkDNOGqUcfCLbDZf3w tools/ioemu/gui/bitmaps/floppya.h
    2.25 +41e2ff6agOpnECodSZ62L-Uijy5fsQ tools/ioemu/gui/bitmaps/floppya.xpm
    2.26 +41e2ff6akrHp6jG_Y2BmFpEcaswUqg tools/ioemu/gui/bitmaps/floppyb.h
    2.27 +41e2ff6aGbvPO1cQLMLduGl16rntbg tools/ioemu/gui/bitmaps/floppyb.xpm
    2.28 +41e2ff6aEcsgeBHQZ_5e3rfgo0USMA tools/ioemu/gui/bitmaps/mouse.h
    2.29 +41e2ff6aO8pXESvDVxMG7TgZL7UvFA tools/ioemu/gui/bitmaps/mouse.xpm
    2.30 +41e2ff6aSd1H6Z0dUVUYLsW-6EDrYw tools/ioemu/gui/bitmaps/paste.h
    2.31 +41e2ff6aRGfY6Jd2TThqWtXoh2CHuQ tools/ioemu/gui/bitmaps/paste.xpm
    2.32 +41e2ff6aKDap56ifPVgdBVPc9yfmvw tools/ioemu/gui/bitmaps/power.h
    2.33 +41e2ff6aDLfEO8dFUd9IpsfUpMk-Vg tools/ioemu/gui/bitmaps/power.xpm
    2.34 +41e2ff6aKWtTsWCds4vL2azV3w-XtQ tools/ioemu/gui/bitmaps/reset.h
    2.35 +41e2ff6a_AU4_ytzHU0Btr3trcbVmA tools/ioemu/gui/bitmaps/reset.xpm
    2.36 +41e2ff6a-hGpcXEChJQDo-xRyH5oGQ tools/ioemu/gui/bitmaps/snapshot.h
    2.37 +41e2ff6aRoGi5nKyQFtcUzK0-9dRDA tools/ioemu/gui/bitmaps/snapshot.xpm
    2.38 +41e2ff6aZdTp9lSJjyUI7YoXqQnCng tools/ioemu/gui/bitmaps/userbutton.h
    2.39 +41e2ff6aWc4p23rAKngLMu8eLZiXlw tools/ioemu/gui/bitmaps/userbutton.xpm
    2.40 +41e2ff6a7gMd57Q5DL0kRD-mR7JzZg tools/ioemu/gui/gui.cc
    2.41 +41e2ff6a-USvofVXiSpY76RT4C0IVw tools/ioemu/gui/gui.h
    2.42 +41e2ff6aYAuOb0x4zTVB7cWYIFIdOA tools/ioemu/gui/icon_bochs.h
    2.43 +41e2ff6aZbFf-Djysg393N4vCEJ7ig tools/ioemu/gui/icon_bochs.xpm
    2.44 +41e2ff6ai-vJcSE9hfz4SHZ20rK5QA tools/ioemu/gui/keymap.cc
    2.45 +41e2ff6a_TY9EJnCcbr5EKV_pi90kg tools/ioemu/gui/keymap.h
    2.46 +41e2ff6aP0co3DAK04MrugZCkp0roQ tools/ioemu/gui/keymaps/convertmap.pl
    2.47 +41e2ff6a-GiP9bzqtVXEjxmxiYgzeg tools/ioemu/gui/keymaps/sdl-pc-de.map
    2.48 +41e2ff6aa5xj7jyze5bcPnj-UHYgTQ tools/ioemu/gui/keymaps/sdl-pc-us.map
    2.49 +41e2ff6ahemkf0kG8SzDXq8g2qp9Pg tools/ioemu/gui/keymaps/x11-pc-be.map
    2.50 +41e2ff6ajdaBBS85yriZ3S9ecy5Odg tools/ioemu/gui/keymaps/x11-pc-da.map
    2.51 +41e2ff6aGkLyRvwOTZnDqvobziAoiQ tools/ioemu/gui/keymaps/x11-pc-de.map
    2.52 +41e2ff6aWcqOK6RjpY28Y4bVjMy9yg tools/ioemu/gui/keymaps/x11-pc-es.map
    2.53 +41e2ff6aF46Uu09XOmmkcGDotToSxw tools/ioemu/gui/keymaps/x11-pc-fr.map
    2.54 +41e2ff6aHM040MYLmOeW_PKIx1TWWg tools/ioemu/gui/keymaps/x11-pc-it.map
    2.55 +41e2ff6aCa-6fHjBOoPWP8hDweZ1Fw tools/ioemu/gui/keymaps/x11-pc-se.map
    2.56 +41e2ff6aUH4wvnqRwo91dJBnhxEYUg tools/ioemu/gui/keymaps/x11-pc-uk.map
    2.57 +41e2ff6aF7b08llRJQBLgNAEfyn9wQ tools/ioemu/gui/keymaps/x11-pc-us.map
    2.58 +41e2ff6a2gbWdoaE7X9vtizvQ4QqdQ tools/ioemu/gui/nogui.cc
    2.59 +41e2ff6a_rWAWre2toEtNUMKliCJPA tools/ioemu/gui/rfb.cc
    2.60 +41e2ff6aQfuugiO3YE07l03L6ASP9g tools/ioemu/gui/rfb.h
    2.61 +41e2ff6aTWFzmW0sjxXpQq7ulaj_Pw tools/ioemu/gui/rfbproto.h
    2.62 +41e2ff6bf4pfJkZTN5vA6HbiJJqeNA tools/ioemu/gui/sdl.h
    2.63 +41e2ff6bVnojmIqKJCbhVUKtMcUWJg tools/ioemu/gui/sdlkeys.h
    2.64 +41e2ff6bKVx97oSdGGToXQXvbQgkZA tools/ioemu/gui/siminterface.cc
    2.65 +41e2ff6bDB5XABCVAA7nMolZPe5ZoA tools/ioemu/gui/siminterface.h
    2.66 +41e2ff6benMg1o7HQ2C5PGS3KFHFow tools/ioemu/gui/svga.cc
    2.67 +41e2ff6bz3XZGzzwvXGqFadb3QqWWQ tools/ioemu/gui/term.cc
    2.68 +41e2ff6b8jzKgyKu2gNVlRWepPNA0A tools/ioemu/gui/textconfig.cc
    2.69 +41e2ff6bUKaJhGtIDqUYzAesLg1MGA tools/ioemu/gui/textconfig.h
    2.70 +41e2ff6b__Pd6Q2aYDZ5vB9bGJEMNA tools/ioemu/gui/x.cc
    2.71 +41e2ff6bp96y5NyMIFjH-HpCRcGBPg tools/ioemu/include/bochs.h
    2.72 +41e2ff6bqIMIJlitAnubjNjf70s3dw tools/ioemu/include/bxversion.h
    2.73 +41e2ff6bTfksDlUXSWC_wC_g30r1cQ tools/ioemu/include/config.h
    2.74 +41e2ff6bwDEGCUwYTf1oo9ZCva2nkw tools/ioemu/include/cpu/cpu.h
    2.75 +41e2ff6bH1PTh2iMScpOn9v9R3SDag tools/ioemu/include/extplugin.h
    2.76 +41e2ff6bFS9XP8ndI6IhGFitzsvTtw tools/ioemu/include/instrument.h
    2.77 +41e2ff6bz71jKff_NUdmI279ArbMgw tools/ioemu/include/ltdl.h
    2.78 +41e2ff6bYayW_YSVmb1sJCvk9z9-ug tools/ioemu/include/ltdlconf.h
    2.79 +41e2ff6b_MdkIIjsFYTFMIKIt7Royw tools/ioemu/include/osdep.h
    2.80 +41e2ff6bPJNSITgePniKtvlujrmcLA tools/ioemu/include/pc_system.h
    2.81 +41e2ff6bmHZyZrzF7iHpD212GeAT-w tools/ioemu/include/plugin.h
    2.82 +41e2ff6bHgstm2ZhCIdsag_c3_dVjA tools/ioemu/include/state_file.h
    2.83 +41e2ff6bJjm8-4K6Cu2k6zoanQ8Yyg tools/ioemu/iodev/Makefile
    2.84 +41e2ff6bKj9bQ4ELP2msSYoT7XrxHQ tools/ioemu/iodev/aspi-win32.h
    2.85 +41e2ff6b95DLt3iA-okw7D4NJcaDCg tools/ioemu/iodev/biosdev.cc
    2.86 +41e2ff6b1ra22hFnE6Tm9lxVaH4Mjw tools/ioemu/iodev/biosdev.h
    2.87 +41e2ff6bftET40KQA19RAisCxyDHVQ tools/ioemu/iodev/cdrom.cc
    2.88 +41e2ff6buuSLUZPj9EtlGA3tufslNQ tools/ioemu/iodev/cdrom.h
    2.89 +41e2ff6bvD6jE2JHKP0wd7I_mB7MJg tools/ioemu/iodev/cdrom_beos.h
    2.90 +41e2ff6b99qviTPyKLjy0-D5DIqACw tools/ioemu/iodev/cmos.cc
    2.91 +41e2ff6bpeZbWqQfuwM_Xj-kElElAA tools/ioemu/iodev/cmos.h
    2.92 +41e2ff6bRf7QN_i1c7BAzkQha8AFUg tools/ioemu/iodev/cpu.cc
    2.93 +41e2ff6byVHp6G3fxAlly1u1sx_DEg tools/ioemu/iodev/crc32.cc
    2.94 +41e2ff6bHWz28hOKgLKRizX9UjsyOQ tools/ioemu/iodev/crc32.h
    2.95 +41e2ff6b3tvq7uKSC9DWkOswq0Re8w tools/ioemu/iodev/devices.cc
    2.96 +41e2ff6bO-SYXzx1RB-1If_FNkyjLg tools/ioemu/iodev/dma.cc
    2.97 +41e2ff6bdI7Ri1mVb1MzkvBKlNSx6Q tools/ioemu/iodev/dma.h
    2.98 +41e2ff6bfnGRrb25sneyvOXxSi8pLg tools/ioemu/iodev/eth.cc
    2.99 +41e2ff6bteOXqvNO1FIR5iFHUwqUuA tools/ioemu/iodev/eth.h
   2.100 +41e2ff6bTQxXrfWSsDCISUAdzlAe9w tools/ioemu/iodev/eth_arpback.cc
   2.101 +41e2ff6brorlh9N9Myd1_g7ktKcIfQ tools/ioemu/iodev/eth_fbsd.cc
   2.102 +41e2ff6b5xRFy8_OISEtd2UrHEUdfw tools/ioemu/iodev/eth_linux.cc
   2.103 +41e2ff6biySiByowEn40XP_yx_lxKg tools/ioemu/iodev/eth_null.cc
   2.104 +41e2ff6bFAVD0UO_ob40usJOnEPAZg tools/ioemu/iodev/eth_packetmaker.cc
   2.105 +41e2ff6bsR-mjksFNRC9HiDDVUfI2w tools/ioemu/iodev/eth_packetmaker.h
   2.106 +41e2ff6bMnzZ7cpqVPQY0_0smpqjHw tools/ioemu/iodev/eth_tap.cc
   2.107 +41e2ff6bGa18jj0cqoOAqBPDzk2Aog tools/ioemu/iodev/eth_tuntap.cc
   2.108 +41e2ff6bY1u244mkTGfttym3HoLo5Q tools/ioemu/iodev/extfpuirq.cc
   2.109 +41e2ff6b_wh3dgYBx38KIJ00Qv4XUA tools/ioemu/iodev/extfpuirq.h
   2.110 +41e2ff6b3uiKo02slxJn11bvZKsF3g tools/ioemu/iodev/floppy.cc
   2.111 +41e2ff6bKba0nlJHGy2kWUr_3e_nvw tools/ioemu/iodev/floppy.h
   2.112 +41e2ff6bC1KaCAEBYYTkJJ5_pBydkQ tools/ioemu/iodev/gameport.cc
   2.113 +41e2ff6bePGww4K0p8vTLphdE_zdig tools/ioemu/iodev/gameport.h
   2.114 +41e2ff6biLQpMiiiKokz7qUXpBn5cg tools/ioemu/iodev/guest2host.h
   2.115 +41e2ff6bji1Iix0CzQTeh9yB-Ao14Q tools/ioemu/iodev/harddrv.cc
   2.116 +41e2ff6bcSDALK1SdvKvTCxemzpWwQ tools/ioemu/iodev/harddrv.h
   2.117 +41e2ff6b36hFBfV06tX0a5CRjFpuxA tools/ioemu/iodev/ioapic.cc
   2.118 +41e2ff6brajF6a0a7RkLHiX0M9oH7w tools/ioemu/iodev/ioapic.h
   2.119 +41e2ff6btDX2IfOnC_LkP08ZlKxjJw tools/ioemu/iodev/iodebug.cc
   2.120 +41e2ff6b-__Z4ECo9pHWVM-Rz-0ehw tools/ioemu/iodev/iodebug.h
   2.121 +41e2ff6btRbGfsUt5k4MClieCZ-EBQ tools/ioemu/iodev/iodev.h
   2.122 +41e2ff6bH5C9aG3f2QhoD6zCdShJYQ tools/ioemu/iodev/keyboard.cc
   2.123 +41e2ff6bUOmeloSf5s9Gkdffo1bEyA tools/ioemu/iodev/keyboard.h
   2.124 +41e2ff6b55oybF1yhInYSZX2bxiJSw tools/ioemu/iodev/load32bitOShack.cc
   2.125 +41e2ff6b5WcmfYXaREzUm0KQu7pKCQ tools/ioemu/iodev/logio.cc
   2.126 +41e2ff6bqqHfrDtizlRKA-_oPRbGAw tools/ioemu/iodev/main.cc
   2.127 +41e2ff6cWAAGa6Pt6eE4URbCOq8wQA tools/ioemu/iodev/ne2k.cc
   2.128 +41e2ff6cap6qrVL42AgTpxjav0QMQg tools/ioemu/iodev/ne2k.h
   2.129 +41e2ff6cHH0UoJW74RKZFnPBSt1jUw tools/ioemu/iodev/osdep.cc
   2.130 +41e2ff6ckuFNtxuAQDMVwJtYwL2QCg tools/ioemu/iodev/parallel.cc
   2.131 +41e2ff6cbqWnJwLAQ9NDZJwUyGiIww tools/ioemu/iodev/parallel.h
   2.132 +41e2ff6cAdkxmfzVhbQn9Plq3X4S_w tools/ioemu/iodev/pc_system.cc
   2.133 +41e2ff6csu1e9S_rywWOq9B85IaZzA tools/ioemu/iodev/pci.cc
   2.134 +41e2ff6cjcmNZLD17naGuKj_Qon6Ow tools/ioemu/iodev/pci.h
   2.135 +41e2ff6c91zYiAb9XulXkl2vLERo-w tools/ioemu/iodev/pci2isa.cc
   2.136 +41e2ff6cV7IdLNbFXwlWvdcOz4F1Aw tools/ioemu/iodev/pci2isa.h
   2.137 +41e2ff6cviwF37ZllnYtHA3MEHRMWw tools/ioemu/iodev/pciusb.cc
   2.138 +41e2ff6ceFmfyqr1MgYhEoRM1s6icQ tools/ioemu/iodev/pciusb.h
   2.139 +41e2ff6cd-1VHyISVo789tv3ImNgLw tools/ioemu/iodev/pcivga.cc
   2.140 +41e2ff6cVkXDlrNUTdt7D6BULEp1Tg tools/ioemu/iodev/pcivga.h
   2.141 +41e2ff6c3xjAFB8X5OLFz_8Of62v2Q tools/ioemu/iodev/pic.cc
   2.142 +41e2ff6c4UHzse5_N0Mx6u5dqKrVkw tools/ioemu/iodev/pic.h
   2.143 +41e2ff6cdD9yovRmQNNJu8QVtZg7Iw tools/ioemu/iodev/pit.cc
   2.144 +41e2ff6cXtvewmYJyoxrWGic2sOayg tools/ioemu/iodev/pit.h
   2.145 +41e2ff6cXaqNRxMagdpNiT1kTWJJUA tools/ioemu/iodev/pit82c54.cc
   2.146 +41e2ff6cHAkpKzMwyz3diMZWTswxmg tools/ioemu/iodev/pit82c54.h
   2.147 +41e2ff6cMK9E2gjqHoWV9ZQfz-cP1Q tools/ioemu/iodev/pit_wrap.cc
   2.148 +41e2ff6cbie7fPpQMgBImJ885GAPdw tools/ioemu/iodev/pit_wrap.h
   2.149 +41e2ff6c0wLrWtBHxxboIzHsrZzkRA tools/ioemu/iodev/plugin.cc
   2.150 +41e2ff6cN4Z6pnguPQaqiCkWp42MOQ tools/ioemu/iodev/scancodes.cc
   2.151 +41e2ff6chK1sqb78l1sqhF3fJhjzBw tools/ioemu/iodev/scancodes.h
   2.152 +41e2ff6cIyPvY7hNE5rP_PMZELhyVw tools/ioemu/iodev/scsi_commands.h
   2.153 +41e2ff6cF3wH8A_66_yG92Wk7I2IWQ tools/ioemu/iodev/scsidefs.h
   2.154 +41e2ff6cbAin6eD3Gfz2CozOS4_bwA tools/ioemu/iodev/scsipt.h
   2.155 +41e2ff6cce6mNXZPGmlQ1bg_I0ef8Q tools/ioemu/iodev/serial.cc
   2.156 +41e2ff6cxsITO-ikpd4vBYZUYO3qSw tools/ioemu/iodev/serial.h
   2.157 +41e2ff6cbaCEgMJ92UELiRE2wEYe3g tools/ioemu/iodev/serial_raw.h
   2.158 +41e2ff6cwDKTU8OukKNBNMDiAYUWvQ tools/ioemu/iodev/slowdown_timer.cc
   2.159 +41e2ff6cM5XYdcgL417IBOzW-QipFg tools/ioemu/iodev/slowdown_timer.h
   2.160 +41e2ff6c5X0WxdBPUyZlNmW6Zv_LRQ tools/ioemu/iodev/soundlnx.cc
   2.161 +41e2ff6cIuE1VxGF_L6rdBtD6rZ_aA tools/ioemu/iodev/soundlnx.h
   2.162 +41e2ff6cDIv87LKamP0Y-yjrdqALzQ tools/ioemu/iodev/soundwin.cc
   2.163 +41e2ff6cB55j_uYIqYh-UiLS4wlm_g tools/ioemu/iodev/soundwin.h
   2.164 +41e2ff6dRPBmtxjFbEM5WYuilnSSZg tools/ioemu/iodev/state_file.cc
   2.165 +41e2ff6dMwkI1Dpa-UHSEzHCvjpOyw tools/ioemu/iodev/unmapped.cc
   2.166 +41e2ff6d_yJMFHYPENtVmJz6wyldQA tools/ioemu/iodev/unmapped.h
   2.167 +41e2ff6dU5hJI6Kn70mFingJo4cHUw tools/ioemu/iodev/vga.cc
   2.168 +41e2ff6dh8xDcCXkZzpSqnFP-OXggw tools/ioemu/iodev/vga.h
   2.169 +41e2ff6dayXwb5dxf0K5pd3q4QppRA tools/ioemu/iodev/virt_timer.cc
   2.170 +41e2ff6dI_rNgBwki594UAWN337-zw tools/ioemu/iodev/virt_timer.h
   2.171 +41e2ff6dCCtE_btrlEopLaCsLO3JDA tools/ioemu/memory/Makefile
   2.172 +41e2ff6dZtwsTW8s-Gqv7bqObdvaXw tools/ioemu/memory/memory.cc
   2.173 +41e2ff6dpk6EFzlHlsAsFEFdyG4wrA tools/ioemu/memory/memory.h
   2.174 +41e2ff6d2i-wqgCe4iAXdckUc1GD-A tools/ioemu/memory/misc_mem.cc
   2.175 +41e2ff6dCYuZgf6pxRmphkh5yeuA9Q tools/ioemu/mk/helix.mk
   2.176  3fbba6dbDfYvJSsw9500b4SZyUhxjQ tools/libxc/Makefile
   2.177  41dde8afKYRKxS4XtLv1KUegGQy_bg tools/libxc/linux_boot_params.h
   2.178  41cc934abX-QLXJXW_clV_wRjM0zYg tools/libxc/plan9a.out.h
     3.1 --- a/BitKeeper/etc/ignore	Mon Jan 10 10:26:55 2005 +0000
     3.2 +++ b/BitKeeper/etc/ignore	Mon Jan 17 16:03:22 2005 +0000
     3.3 @@ -20,29 +20,9 @@ docs/*.log
     3.4  docs/*.pdf
     3.5  docs/*.ps
     3.6  docs/*.toc
     3.7 -docs/figs/xenserver.eps
     3.8  docs/html/*
     3.9 -docs/interface/WARNINGS
    3.10 -docs/interface/images.pl
    3.11 -docs/interface/images.tex
    3.12 -docs/interface/img1.png
    3.13 -docs/interface/index.html
    3.14 -docs/interface/interface.css
    3.15 -docs/interface/interface.html
    3.16 -docs/interface/labels.pl
    3.17  docs/pdf/*
    3.18  docs/ps/*
    3.19 -docs/user/WARNINGS
    3.20 -docs/user/images.pl
    3.21 -docs/user/images.tex
    3.22 -docs/user/img1.png
    3.23 -docs/user/img2.png
    3.24 -docs/user/img3.png
    3.25 -docs/user/index.html
    3.26 -docs/user/internals.pl
    3.27 -docs/user/labels.pl
    3.28 -docs/user/user.css
    3.29 -docs/user/user.html
    3.30  extras/mini-os/h/hypervisor-ifs
    3.31  install/*
    3.32  linux-*-xen0/*
    3.33 @@ -61,6 +41,7 @@ pristine-*
    3.34  tools/*/build/lib*/*.py
    3.35  tools/balloon/balloon
    3.36  tools/check/.*
    3.37 +tools/ioemu/iodev/device-model
    3.38  tools/libxc/xen/*
    3.39  tools/misc/miniterm/miniterm
    3.40  tools/misc/xen_cpuperf
     4.1 --- a/buildconfigs/mk.linux-2.6-xen0	Mon Jan 10 10:26:55 2005 +0000
     4.2 +++ b/buildconfigs/mk.linux-2.6-xen0	Mon Jan 17 16:03:22 2005 +0000
     4.3 @@ -11,12 +11,14 @@ include buildconfigs/Rules.mk
     4.4  
     4.5  .PHONY: build clean delete
     4.6  
     4.7 +# The real action starts here!
     4.8  build: $(LINUX_DIR)/include/linux/autoconf.h
     4.9 -	$(MAKE) -C $(LINUX_DIR) ARCH=xen modules
    4.10 -	$(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_MOD_PATH=$(INSTALL_DIR) modules_install
    4.11 +	if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
    4.12 +	    $(MAKE) -C $(LINUX_DIR) ARCH=xen modules ; \
    4.13 +	    $(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_MOD_PATH=$(INSTALL_DIR) modules_install ; \
    4.14 +	fi
    4.15  	$(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_PATH=$(INSTALL_DIR) install
    4.16  
    4.17 -# The real action starts here!
    4.18  $(LINUX_DIR)/include/linux/autoconf.h: pristine-linux-$(LINUX_VER)
    4.19  	rm -rf $(LINUX_DIR)
    4.20  	cp -al $< $(LINUX_DIR)
     5.1 --- a/buildconfigs/mk.linux-2.6-xenU	Mon Jan 10 10:26:55 2005 +0000
     5.2 +++ b/buildconfigs/mk.linux-2.6-xenU	Mon Jan 17 16:03:22 2005 +0000
     5.3 @@ -13,11 +13,12 @@ include buildconfigs/Rules.mk
     5.4  
     5.5  # The real action starts here!
     5.6  build: $(LINUX_DIR)/include/linux/autoconf.h
     5.7 -	$(MAKE) -C $(LINUX_DIR) ARCH=xen modules
     5.8 -	$(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_MOD_PATH=$(INSTALL_DIR) modules_install
     5.9 +	if grep "^CONFIG_MODULES=" $(LINUX_DIR)/.config ; then \
    5.10 +	    $(MAKE) -C $(LINUX_DIR) ARCH=xen modules ; \
    5.11 +	    $(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_MOD_PATH=$(INSTALL_DIR) modules_install ; \
    5.12 +	fi
    5.13  	$(MAKE) -C $(LINUX_DIR) ARCH=xen INSTALL_PATH=$(INSTALL_DIR) install
    5.14  
    5.15 -
    5.16  $(LINUX_DIR)/include/linux/autoconf.h: pristine-linux-$(LINUX_VER)
    5.17  	rm -rf $(LINUX_DIR)
    5.18  	cp -al $< $(LINUX_DIR)
     6.1 --- a/linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0	Mon Jan 10 10:26:55 2005 +0000
     6.2 +++ b/linux-2.4.28-xen-sparse/arch/xen/defconfig-xen0	Mon Jan 17 16:03:22 2005 +0000
     6.3 @@ -554,7 +554,7 @@ CONFIG_E100=y
     6.4  # CONFIG_LNE390 is not set
     6.5  # CONFIG_FEALNX is not set
     6.6  # CONFIG_NATSEMI is not set
     6.7 -# CONFIG_NE2K_PCI is not set
     6.8 +CONFIG_NE2K_PCI=y
     6.9  # CONFIG_FORCEDETH is not set
    6.10  # CONFIG_NE3210 is not set
    6.11  # CONFIG_ES3210 is not set
     7.1 --- a/linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig	Mon Jan 10 10:26:55 2005 +0000
     7.2 +++ b/linux-2.6.10-xen-sparse/arch/xen/configs/xen0_defconfig	Mon Jan 17 16:03:22 2005 +0000
     7.3 @@ -641,7 +641,7 @@ CONFIG_E100=y
     7.4  # CONFIG_E100_NAPI is not set
     7.5  # CONFIG_FEALNX is not set
     7.6  # CONFIG_NATSEMI is not set
     7.7 -# CONFIG_NE2K_PCI is not set
     7.8 +CONFIG_NE2K_PCI=y
     7.9  # CONFIG_8139CP is not set
    7.10  CONFIG_8139TOO=y
    7.11  CONFIG_8139TOO_PIO=y
     8.1 --- a/linux-2.6.10-xen-sparse/arch/xen/kernel/fixup.c	Mon Jan 10 10:26:55 2005 +0000
     8.2 +++ b/linux-2.6.10-xen-sparse/arch/xen/kernel/fixup.c	Mon Jan 17 16:03:22 2005 +0000
     8.3 @@ -33,10 +33,17 @@
     8.4  #include <linux/slab.h>
     8.5  #include <linux/kernel.h>
     8.6  #include <linux/delay.h>
     8.7 +#include <linux/version.h>
     8.8  
     8.9  #define DP(_f) printk(KERN_ALERT "  " _f "\n")
    8.10  
    8.11 -asmlinkage void do_fixup_4gb_segment(struct pt_regs *regs, long error_code)
    8.12 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
    8.13 +#define __LINKAGE fastcall
    8.14 +#else
    8.15 +#define __LINKAGE asmlinkage
    8.16 +#endif
    8.17 +
    8.18 +__LINKAGE void do_fixup_4gb_segment(struct pt_regs *regs, long error_code)
    8.19  {
    8.20      static unsigned long printed = 0;
    8.21      int i;
     9.1 --- a/linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c	Mon Jan 10 10:26:55 2005 +0000
     9.2 +++ b/linux-2.6.10-xen-sparse/drivers/xen/blkfront/blkfront.c	Mon Jan 17 16:03:22 2005 +0000
     9.3 @@ -62,21 +62,6 @@ static void vbd_update(void){};
     9.4  #define BLKIF_STATE_DISCONNECTED 1
     9.5  #define BLKIF_STATE_CONNECTED    2
     9.6  
     9.7 -#ifdef VERBOSE
     9.8 -static char *blkif_state_name[] = {
     9.9 -    [BLKIF_STATE_CLOSED]       = "closed",
    9.10 -    [BLKIF_STATE_DISCONNECTED] = "disconnected",
    9.11 -    [BLKIF_STATE_CONNECTED]    = "connected",
    9.12 -};
    9.13 -
    9.14 -static char * blkif_status_name[] = {
    9.15 -    [BLKIF_INTERFACE_STATUS_CLOSED]       = "closed",
    9.16 -    [BLKIF_INTERFACE_STATUS_DISCONNECTED] = "disconnected",
    9.17 -    [BLKIF_INTERFACE_STATUS_CONNECTED]    = "connected",
    9.18 -    [BLKIF_INTERFACE_STATUS_CHANGED]      = "changed",
    9.19 -};
    9.20 -#endif
    9.21 -
    9.22  #define WPRINTK(fmt, args...) printk(KERN_WARNING "xen_blk: " fmt, ##args)
    9.23  
    9.24  static int blkif_handle = 0;
    9.25 @@ -177,7 +162,7 @@ static inline void flush_requests(void)
    9.26  
    9.27  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
    9.28  
    9.29 -__initcall(xlblk_init);
    9.30 +module_init(xlblk_init);
    9.31  
    9.32  #if ENABLE_VBD_UPDATE
    9.33  static void vbd_update(void)
    9.34 @@ -331,11 +316,11 @@ static int blkif_queue_request(struct re
    9.35      blkif_request_t *ring_req;
    9.36      struct bio *bio;
    9.37      struct bio_vec *bvec;
    9.38 -    int idx, s;
    9.39 +    int idx;
    9.40      unsigned long id;
    9.41      unsigned int fsect, lsect;
    9.42  
    9.43 -    if (unlikely(blkif_state != BLKIF_STATE_CONNECTED))
    9.44 +    if ( unlikely(blkif_state != BLKIF_STATE_CONNECTED) )
    9.45          return 1;
    9.46  
    9.47      /* Fill out a communications ring structure. */
    9.48 @@ -349,29 +334,25 @@ static int blkif_queue_request(struct re
    9.49      ring_req->sector_number = (blkif_sector_t)req->sector;
    9.50      ring_req->device = di->xd_device;
    9.51  
    9.52 -    s = 0;
    9.53      ring_req->nr_segments = 0;
    9.54 -    rq_for_each_bio(bio, req) {
    9.55 -        bio_for_each_segment(bvec, bio, idx) {
    9.56 +    rq_for_each_bio(bio, req)
    9.57 +    {
    9.58 +        bio_for_each_segment(bvec, bio, idx)
    9.59 +        {
    9.60 +            if ( ring_req->nr_segments == BLKIF_MAX_SEGMENTS_PER_REQUEST )
    9.61 +                BUG();
    9.62              buffer_ma = page_to_phys(bvec->bv_page);
    9.63 -            if (unlikely((buffer_ma & ((1<<9)-1)) != 0))
    9.64 -                BUG();
    9.65 -
    9.66              fsect = bvec->bv_offset >> 9;
    9.67              lsect = fsect + (bvec->bv_len >> 9) - 1;
    9.68 -            if (unlikely(lsect > 7))
    9.69 -                BUG();
    9.70 -
    9.71              ring_req->frame_and_sects[ring_req->nr_segments++] =
    9.72                  buffer_ma | (fsect << 3) | lsect;
    9.73 -            s += bvec->bv_len >> 9;
    9.74          }
    9.75      }
    9.76  
    9.77      blk_ring.req_prod_pvt++;
    9.78      
    9.79      /* Keep a private copy so we can reissue requests when recovering. */
    9.80 -    translate_req_to_pfn( &rec_ring[id], ring_req);
    9.81 +    translate_req_to_pfn(&rec_ring[id], ring_req);
    9.82  
    9.83      return 0;
    9.84  }
    9.85 @@ -439,14 +420,14 @@ static irqreturn_t blkif_int(int irq, vo
    9.86  
    9.87      for ( i = blk_ring.rsp_cons; i != rp; i++ )
    9.88      {
    9.89 -	unsigned long id;
    9.90 +        unsigned long id;
    9.91  
    9.92          bret = RING_GET_RESPONSE(BLKIF_RING, &blk_ring, i);
    9.93 -	id = bret->id;
    9.94 -	req = (struct request *)rec_ring[id].id;
    9.95 -	blkif_completion( &rec_ring[id] );
    9.96 +        id = bret->id;
    9.97 +        req = (struct request *)rec_ring[id].id;
    9.98 +        blkif_completion( &rec_ring[id] );
    9.99  
   9.100 -	ADD_ID_TO_FREELIST(id); /* overwrites req */
   9.101 +        ADD_ID_TO_FREELIST(id); /* overwrites req */
   9.102  
   9.103          switch ( bret->operation )
   9.104          {
   9.105 @@ -455,7 +436,7 @@ static irqreturn_t blkif_int(int irq, vo
   9.106              if ( unlikely(bret->status != BLKIF_RSP_OKAY) )
   9.107                  DPRINTK("Bad return from blkdev data request: %x\n",
   9.108                          bret->status);
   9.109 -	    
   9.110 +     
   9.111              if ( unlikely(end_that_request_first
   9.112                            (req, 
   9.113                             (bret->status == BLKIF_RSP_OKAY),
   9.114 @@ -528,7 +509,7 @@ static void kick_pending_request_queues(
   9.115      /* We kick pending request queues if the ring is reasonably empty. */
   9.116      if ( (nr_pending != 0) && 
   9.117           (RING_PENDING_REQUESTS(BLKIF_RING, &blk_ring) < 
   9.118 -            (RING_SIZE(BLKIF_RING, &blk_ring) >> 1)) )
   9.119 +          (RING_SIZE(BLKIF_RING, &blk_ring) >> 1)) )
   9.120      {
   9.121          /* Attempt to drain the queue, but bail if the ring becomes full. */
   9.122          while ( (nr_pending != 0) && !RING_FULL(BLKIF_RING, &blk_ring) )
   9.123 @@ -651,7 +632,7 @@ int blkif_ioctl(struct inode *inode, str
   9.124          if (!argument) return -EINVAL;
   9.125  
   9.126          /* We don't have real geometry info, but let's at least return
   9.127 -	   values consistent with the size of the device */
   9.128 +           values consistent with the size of the device */
   9.129  
   9.130          heads = 0xff;
   9.131          sectors = 0x3f; 
   9.132 @@ -669,7 +650,7 @@ int blkif_ioctl(struct inode *inode, str
   9.133          if (!argument) return -EINVAL;
   9.134  
   9.135          /* We don't have real geometry info, but let's at least return
   9.136 -	   values consistent with the size of the device */
   9.137 +           values consistent with the size of the device */
   9.138  
   9.139          heads = 0xff;
   9.140          sectors = 0x3f; 
   9.141 @@ -826,13 +807,13 @@ static int blkif_queue_request(unsigned 
   9.142               (sg_next_sect == sector_number) )
   9.143          {
   9.144              req = RING_GET_REQUEST(BLKIF_RING, &blk_ring, 
   9.145 -                    blk_ring.req_prod_pvt - 1);
   9.146 +                                   blk_ring.req_prod_pvt - 1);
   9.147              bh = (struct buffer_head *)id;
   9.148 -	    
   9.149 +     
   9.150              bh->b_reqnext = (struct buffer_head *)rec_ring[req->id].id;
   9.151 -	    
   9.152 +     
   9.153  
   9.154 -	    rec_ring[req->id].id = id;
   9.155 +            rec_ring[req->id].id = id;
   9.156  
   9.157              req->frame_and_sects[req->nr_segments] = 
   9.158                  buffer_ma | (fsect<<3) | lsect;
   9.159 @@ -985,16 +966,16 @@ static void blkif_int(int irq, void *dev
   9.160  
   9.161      for ( i = blk_ring.rsp_cons; i != rp; i++ )
   9.162      {
   9.163 -	unsigned long id;
   9.164 +        unsigned long id;
   9.165          blkif_response_t *bret;
   9.166          
   9.167          bret = RING_GET_RESPONSE(BLKIF_RING, &blk_ring, i);
   9.168 -	id = bret->id;
   9.169 -	bh = (struct buffer_head *)rec_ring[id].id; 
   9.170 +        id = bret->id;
   9.171 +        bh = (struct buffer_head *)rec_ring[id].id; 
   9.172  
   9.173 -	blkif_completion( &rec_ring[id] );
   9.174 +        blkif_completion( &rec_ring[id] );
   9.175  
   9.176 -	ADD_ID_TO_FREELIST(id);
   9.177 +        ADD_ID_TO_FREELIST(id);
   9.178  
   9.179          switch ( bret->operation )
   9.180          {
   9.181 @@ -1019,7 +1000,7 @@ static void blkif_int(int irq, void *dev
   9.182              BUG();
   9.183          }
   9.184  
   9.185 -	}
   9.186 +    }
   9.187      blk_ring.rsp_cons = i;
   9.188      
   9.189      kick_pending_request_queues();
   9.190 @@ -1168,7 +1149,7 @@ static void blkif_recover(void)
   9.191          if ( rec_ring[i].id >= PAGE_OFFSET )
   9.192          {
   9.193              req = RING_GET_REQUEST(BLKIF_RING, &blk_ring, 
   9.194 -                    blk_ring.req_prod_pvt);
   9.195 +                                   blk_ring.req_prod_pvt);
   9.196              translate_req_to_mfn(req, &rec_ring[i]);
   9.197              blk_ring.req_prod_pvt++;
   9.198          }
   9.199 @@ -1178,7 +1159,7 @@ static void blkif_recover(void)
   9.200      for ( i = 0; i < blk_ring.req_prod_pvt; i++ ) 
   9.201      {
   9.202          req = RING_GET_REQUEST(BLKIF_RING, &blk_ring, i);
   9.203 -        rec_ring[i].id = req->id;		
   9.204 +        rec_ring[i].id = req->id;  
   9.205          req->id = i;
   9.206          translate_req_to_pfn(&rec_ring[i], req);
   9.207      }
   9.208 @@ -1241,9 +1222,8 @@ static void blkif_connect(blkif_fe_inter
   9.209  
   9.210  static void unexpected(blkif_fe_interface_status_t *status)
   9.211  {
   9.212 -    DPRINTK(" Unexpected blkif status %s in state %s\n", 
   9.213 -            blkif_status_name[status->status],
   9.214 -            blkif_state_name[blkif_state]);
   9.215 +    DPRINTK(" Unexpected blkif status %u in state %u\n", 
   9.216 +            status->status, blkif_state);
   9.217  }
   9.218  
   9.219  static void blkif_status(blkif_fe_interface_status_t *status)
   9.220 @@ -1303,7 +1283,7 @@ static void blkif_status(blkif_fe_interf
   9.221          }
   9.222          break;
   9.223  
   9.224 -   case BLKIF_INTERFACE_STATUS_CHANGED:
   9.225 +    case BLKIF_INTERFACE_STATUS_CHANGED:
   9.226          switch ( blkif_state )
   9.227          {
   9.228          case BLKIF_STATE_CLOSED:
   9.229 @@ -1314,7 +1294,7 @@ static void blkif_status(blkif_fe_interf
   9.230              vbd_update();
   9.231              break;
   9.232          }
   9.233 -       break;
   9.234 +        break;
   9.235  
   9.236      default:
   9.237          WPRINTK(" Invalid blkif status: %d\n", status->status);
   9.238 @@ -1382,7 +1362,7 @@ int __init xlblk_init(void)
   9.239  
   9.240      rec_ring_free = 0;
   9.241      for ( i = 0; i < RING_SIZE(BLKIF_RING, &blk_ring); i++ )
   9.242 -	rec_ring[i].id = i+1;
   9.243 +        rec_ring[i].id = i+1;
   9.244      rec_ring[RING_SIZE(BLKIF_RING, &blk_ring)-1].id = 0x0fffffff;
   9.245  
   9.246      (void)ctrl_if_register_receiver(CMSG_BLKIF_FE, blkif_ctrlif_rx,
   9.247 @@ -1411,13 +1391,13 @@ void blkif_completion(blkif_request_t *r
   9.248      switch ( req->operation )
   9.249      {
   9.250      case BLKIF_OP_READ:
   9.251 -	for ( i = 0; i < req->nr_segments; i++ )
   9.252 -	{
   9.253 -	    unsigned long pfn = req->frame_and_sects[i] >> PAGE_SHIFT;
   9.254 -	    unsigned long mfn = phys_to_machine_mapping[pfn];
   9.255 -	    xen_machphys_update(mfn, pfn);
   9.256 -	}
   9.257 -	break;
   9.258 +        for ( i = 0; i < req->nr_segments; i++ )
   9.259 +        {
   9.260 +            unsigned long pfn = req->frame_and_sects[i] >> PAGE_SHIFT;
   9.261 +            unsigned long mfn = phys_to_machine_mapping[pfn];
   9.262 +            xen_machphys_update(mfn, pfn);
   9.263 +        }
   9.264 +        break;
   9.265      }
   9.266      
   9.267  }
    10.1 --- a/linux-2.6.10-xen-sparse/drivers/xen/blkfront/block.h	Mon Jan 10 10:26:55 2005 +0000
    10.2 +++ b/linux-2.6.10-xen-sparse/drivers/xen/blkfront/block.h	Mon Jan 17 16:03:22 2005 +0000
    10.3 @@ -64,12 +64,12 @@
    10.4  #endif
    10.5  
    10.6  struct xlbd_type_info {
    10.7 -	int partn_shift;
    10.8 -	int partn_per_major;
    10.9 -	int devs_per_major;
   10.10 -	int hardsect_size;
   10.11 -	int max_sectors;
   10.12 -	char *name;
   10.13 +    int partn_shift;
   10.14 +    int partn_per_major;
   10.15 +    int devs_per_major;
   10.16 +    int hardsect_size;
   10.17 +    int max_sectors;
   10.18 +    char *name;
   10.19  };
   10.20  
   10.21  /*
   10.22 @@ -78,19 +78,19 @@ struct xlbd_type_info {
   10.23   * putting all kinds of interesting stuff here :-)
   10.24   */
   10.25  struct xlbd_major_info {
   10.26 -	int major;
   10.27 -	int index;
   10.28 -	int usage;
   10.29 -	struct xlbd_type_info *type;
   10.30 +    int major;
   10.31 +    int index;
   10.32 +    int usage;
   10.33 +    struct xlbd_type_info *type;
   10.34  };
   10.35  
   10.36  struct xlbd_disk_info {
   10.37 -	int xd_device;
   10.38 -	struct xlbd_major_info *mi;
   10.39 +    int xd_device;
   10.40 +    struct xlbd_major_info *mi;
   10.41  };
   10.42  
   10.43  typedef struct xen_block {
   10.44 -	int usage;
   10.45 +    int usage;
   10.46  } xen_block_t;
   10.47  
   10.48  extern struct request_queue *xlbd_blk_queue;
   10.49 @@ -99,7 +99,7 @@ extern spinlock_t blkif_io_lock;
   10.50  extern int blkif_open(struct inode *inode, struct file *filep);
   10.51  extern int blkif_release(struct inode *inode, struct file *filep);
   10.52  extern int blkif_ioctl(struct inode *inode, struct file *filep,
   10.53 -                           unsigned command, unsigned long argument);
   10.54 +                       unsigned command, unsigned long argument);
   10.55  extern int blkif_check(dev_t dev);
   10.56  extern int blkif_revalidate(dev_t dev);
   10.57  extern void blkif_control_send(blkif_request_t *req, blkif_response_t *rsp);
    11.1 --- a/linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c	Mon Jan 10 10:26:55 2005 +0000
    11.2 +++ b/linux-2.6.10-xen-sparse/drivers/xen/blkfront/vbd.c	Mon Jan 17 16:03:22 2005 +0000
    11.3 @@ -43,39 +43,37 @@
    11.4  #define NUM_VBD_MAJORS 1
    11.5  
    11.6  static struct xlbd_type_info xlbd_ide_type = {
    11.7 -	.partn_shift = 6,
    11.8 -	.partn_per_major = 2,
    11.9 -	// XXXcl todo blksize_size[major]  = 1024;
   11.10 -	.hardsect_size = 512,
   11.11 -	.max_sectors = 128,  /* 'hwif->rqsize' if we knew it */
   11.12 -	// XXXcl todo read_ahead[major]    = 8; /* from drivers/ide/ide-probe.c */
   11.13 -	.name = "hd",
   11.14 +    .partn_shift = 6,
   11.15 +    .partn_per_major = 2,
   11.16 +    // XXXcl todo blksize_size[major]  = 1024;
   11.17 +    .hardsect_size = 512,
   11.18 +    .max_sectors = 128,  /* 'hwif->rqsize' if we knew it */
   11.19 +    // XXXcl todo read_ahead[major]    = 8; /* from drivers/ide/ide-probe.c */
   11.20 +    .name = "hd",
   11.21  };
   11.22  
   11.23  static struct xlbd_type_info xlbd_scsi_type = {
   11.24 -	.partn_shift = 4,
   11.25 -	.partn_per_major = 16,
   11.26 -	// XXXcl todo blksize_size[major]  = 1024; /* XXX 512; */
   11.27 -	.hardsect_size = 512,
   11.28 -	.max_sectors = 128*8, /* XXX 128; */
   11.29 -	// XXXcl todo read_ahead[major]    = 0; /* XXX 8; -- guessing */
   11.30 -	.name = "sd",
   11.31 +    .partn_shift = 4,
   11.32 +    .partn_per_major = 16,
   11.33 +    // XXXcl todo blksize_size[major]  = 1024; /* XXX 512; */
   11.34 +    .hardsect_size = 512,
   11.35 +    .max_sectors = 128*8, /* XXX 128; */
   11.36 +    // XXXcl todo read_ahead[major]    = 0; /* XXX 8; -- guessing */
   11.37 +    .name = "sd",
   11.38  };
   11.39  
   11.40  static struct xlbd_type_info xlbd_vbd_type = {
   11.41 -	.partn_shift = 4,
   11.42 -	.partn_per_major = 16,
   11.43 -	// XXXcl todo blksize_size[major]  = 512;
   11.44 -	.hardsect_size = 512,
   11.45 -	.max_sectors = 128,
   11.46 -	// XXXcl todo read_ahead[major]    = 8;
   11.47 -	.name = "xvd",
   11.48 +    .partn_shift = 4,
   11.49 +    .partn_per_major = 16,
   11.50 +    // XXXcl todo blksize_size[major]  = 512;
   11.51 +    .hardsect_size = 512,
   11.52 +    .max_sectors = 128,
   11.53 +    // XXXcl todo read_ahead[major]    = 8;
   11.54 +    .name = "xvd",
   11.55  };
   11.56  
   11.57 -/* XXXcl handle cciss after finding out why it's "hacked" in */
   11.58 -
   11.59  static struct xlbd_major_info *major_info[NUM_IDE_MAJORS + NUM_SCSI_MAJORS +
   11.60 -					 NUM_VBD_MAJORS];
   11.61 +                                         NUM_VBD_MAJORS];
   11.62  
   11.63  /* Information about our VBDs. */
   11.64  #define MAX_VBDS 64
   11.65 @@ -84,15 +82,15 @@ static vdisk_t *vbd_info;
   11.66  
   11.67  struct request_queue *xlbd_blk_queue = NULL;
   11.68  
   11.69 -#define MAJOR_XEN(dev)	((dev)>>8)
   11.70 -#define MINOR_XEN(dev)	((dev) & 0xff)
   11.71 +#define MAJOR_XEN(dev) ((dev)>>8)
   11.72 +#define MINOR_XEN(dev) ((dev) & 0xff)
   11.73  
   11.74  static struct block_device_operations xlvbd_block_fops = 
   11.75  {
   11.76 -	.owner		= THIS_MODULE,
   11.77 -	.open		= blkif_open,
   11.78 -	.release	= blkif_release,
   11.79 -	.ioctl		= blkif_ioctl,
   11.80 +    .owner  = THIS_MODULE,
   11.81 +    .open  = blkif_open,
   11.82 +    .release = blkif_release,
   11.83 +    .ioctl  = blkif_ioctl,
   11.84  #if 0
   11.85      check_media_change: blkif_check,
   11.86      revalidate:         blkif_revalidate,
   11.87 @@ -122,7 +120,7 @@ static int xlvbd_get_vbd_info(vdisk_t *d
   11.88      }
   11.89  
   11.90      if ( (nr = rsp.status) > MAX_VBDS )
   11.91 -         nr = MAX_VBDS;
   11.92 +        nr = MAX_VBDS;
   11.93      memcpy(disk_info, buf, nr * sizeof(vdisk_t));
   11.94  
   11.95      free_page((unsigned long)buf);
   11.96 @@ -132,153 +130,154 @@ static int xlvbd_get_vbd_info(vdisk_t *d
   11.97  
   11.98  static struct xlbd_major_info *xlbd_get_major_info(int xd_device, int *minor)
   11.99  {
  11.100 -	int mi_idx, new_major;
  11.101 -	int xd_major = MAJOR_XEN(xd_device); 
  11.102 -	int xd_minor = MINOR_XEN(xd_device);
  11.103 +    int mi_idx, new_major;
  11.104 +    int xd_major = MAJOR_XEN(xd_device); 
  11.105 +    int xd_minor = MINOR_XEN(xd_device);
  11.106  
  11.107 -	*minor = xd_minor;
  11.108 +    *minor = xd_minor;
  11.109  
  11.110 -	switch (xd_major) {
  11.111 -	case IDE0_MAJOR: mi_idx = 0; new_major = IDE0_MAJOR; break;
  11.112 -	case IDE1_MAJOR: mi_idx = 1; new_major = IDE1_MAJOR; break;
  11.113 -	case IDE2_MAJOR: mi_idx = 2; new_major = IDE2_MAJOR; break;
  11.114 -	case IDE3_MAJOR: mi_idx = 3; new_major = IDE3_MAJOR; break;
  11.115 -	case IDE4_MAJOR: mi_idx = 4; new_major = IDE4_MAJOR; break;
  11.116 -	case IDE5_MAJOR: mi_idx = 5; new_major = IDE5_MAJOR; break;
  11.117 -	case IDE6_MAJOR: mi_idx = 6; new_major = IDE6_MAJOR; break;
  11.118 -	case IDE7_MAJOR: mi_idx = 7; new_major = IDE7_MAJOR; break;
  11.119 -	case IDE8_MAJOR: mi_idx = 8; new_major = IDE8_MAJOR; break;
  11.120 -	case IDE9_MAJOR: mi_idx = 9; new_major = IDE9_MAJOR; break;
  11.121 -	case SCSI_DISK0_MAJOR: mi_idx = 10; new_major = SCSI_DISK0_MAJOR; break;
  11.122 -	case SCSI_DISK1_MAJOR ... SCSI_DISK7_MAJOR:
  11.123 -		mi_idx = 11 + xd_major - SCSI_DISK1_MAJOR;
  11.124 -		new_major = SCSI_DISK1_MAJOR + xd_major - SCSI_DISK1_MAJOR;
  11.125 -		break;
  11.126 -	case SCSI_CDROM_MAJOR: mi_idx = 18; new_major = SCSI_CDROM_MAJOR; break;
  11.127 -	default: mi_idx = 19; new_major = 0;/* XXXcl notyet */ break;
  11.128 -	}
  11.129 +    switch (xd_major) {
  11.130 +    case IDE0_MAJOR: mi_idx = 0; new_major = IDE0_MAJOR; break;
  11.131 +    case IDE1_MAJOR: mi_idx = 1; new_major = IDE1_MAJOR; break;
  11.132 +    case IDE2_MAJOR: mi_idx = 2; new_major = IDE2_MAJOR; break;
  11.133 +    case IDE3_MAJOR: mi_idx = 3; new_major = IDE3_MAJOR; break;
  11.134 +    case IDE4_MAJOR: mi_idx = 4; new_major = IDE4_MAJOR; break;
  11.135 +    case IDE5_MAJOR: mi_idx = 5; new_major = IDE5_MAJOR; break;
  11.136 +    case IDE6_MAJOR: mi_idx = 6; new_major = IDE6_MAJOR; break;
  11.137 +    case IDE7_MAJOR: mi_idx = 7; new_major = IDE7_MAJOR; break;
  11.138 +    case IDE8_MAJOR: mi_idx = 8; new_major = IDE8_MAJOR; break;
  11.139 +    case IDE9_MAJOR: mi_idx = 9; new_major = IDE9_MAJOR; break;
  11.140 +    case SCSI_DISK0_MAJOR: mi_idx = 10; new_major = SCSI_DISK0_MAJOR; break;
  11.141 +    case SCSI_DISK1_MAJOR ... SCSI_DISK7_MAJOR:
  11.142 +        mi_idx = 11 + xd_major - SCSI_DISK1_MAJOR;
  11.143 +        new_major = SCSI_DISK1_MAJOR + xd_major - SCSI_DISK1_MAJOR;
  11.144 +        break;
  11.145 +    case SCSI_CDROM_MAJOR: mi_idx = 18; new_major = SCSI_CDROM_MAJOR; break;
  11.146 +    default: mi_idx = 19; new_major = 0;/* XXXcl notyet */ break;
  11.147 +    }
  11.148  
  11.149 -	if (major_info[mi_idx])
  11.150 -		return major_info[mi_idx];
  11.151 +    if (major_info[mi_idx])
  11.152 +        return major_info[mi_idx];
  11.153  
  11.154 -	major_info[mi_idx] = kmalloc(sizeof(struct xlbd_major_info), GFP_KERNEL);
  11.155 -	if (major_info[mi_idx] == NULL)
  11.156 -		return NULL;
  11.157 +    major_info[mi_idx] = kmalloc(sizeof(struct xlbd_major_info), GFP_KERNEL);
  11.158 +    if (major_info[mi_idx] == NULL)
  11.159 +        return NULL;
  11.160  
  11.161 -	memset(major_info[mi_idx], 0, sizeof(struct xlbd_major_info));
  11.162 +    memset(major_info[mi_idx], 0, sizeof(struct xlbd_major_info));
  11.163  
  11.164 -	switch (mi_idx) {
  11.165 -	case 0 ... (NUM_IDE_MAJORS - 1):
  11.166 -		major_info[mi_idx]->type = &xlbd_ide_type;
  11.167 -		major_info[mi_idx]->index = mi_idx;
  11.168 -		break;
  11.169 -	case NUM_IDE_MAJORS ... (NUM_IDE_MAJORS + NUM_SCSI_MAJORS - 1):
  11.170 -		major_info[mi_idx]->type = &xlbd_scsi_type;
  11.171 -		major_info[mi_idx]->index = mi_idx - NUM_IDE_MAJORS;
  11.172 -		break;
  11.173 -	case (NUM_IDE_MAJORS + NUM_SCSI_MAJORS) ...
  11.174 -		(NUM_IDE_MAJORS + NUM_SCSI_MAJORS + NUM_VBD_MAJORS - 1):
  11.175 -		major_info[mi_idx]->type = &xlbd_vbd_type;
  11.176 -		major_info[mi_idx]->index = mi_idx -
  11.177 -			(NUM_IDE_MAJORS + NUM_SCSI_MAJORS);
  11.178 -		break;
  11.179 -	}
  11.180 -	major_info[mi_idx]->major = new_major;
  11.181 +    switch (mi_idx) {
  11.182 +    case 0 ... (NUM_IDE_MAJORS - 1):
  11.183 +        major_info[mi_idx]->type = &xlbd_ide_type;
  11.184 +        major_info[mi_idx]->index = mi_idx;
  11.185 +        break;
  11.186 +    case NUM_IDE_MAJORS ... (NUM_IDE_MAJORS + NUM_SCSI_MAJORS - 1):
  11.187 +        major_info[mi_idx]->type = &xlbd_scsi_type;
  11.188 +        major_info[mi_idx]->index = mi_idx - NUM_IDE_MAJORS;
  11.189 +        break;
  11.190 +        case (NUM_IDE_MAJORS + NUM_SCSI_MAJORS) ...
  11.191 +            (NUM_IDE_MAJORS + NUM_SCSI_MAJORS + NUM_VBD_MAJORS - 1):
  11.192 +                major_info[mi_idx]->type = &xlbd_vbd_type;
  11.193 +        major_info[mi_idx]->index = mi_idx -
  11.194 +            (NUM_IDE_MAJORS + NUM_SCSI_MAJORS);
  11.195 +        break;
  11.196 +    }
  11.197 +    major_info[mi_idx]->major = new_major;
  11.198  
  11.199 -	if (register_blkdev(major_info[mi_idx]->major, major_info[mi_idx]->type->name)) {
  11.200 -		printk(KERN_ALERT "XL VBD: can't get major %d with name %s\n",
  11.201 -		    major_info[mi_idx]->major, major_info[mi_idx]->type->name);
  11.202 -		goto out;
  11.203 -	}
  11.204 +    if (register_blkdev(major_info[mi_idx]->major, major_info[mi_idx]->type->name)) {
  11.205 +        printk(KERN_ALERT "XL VBD: can't get major %d with name %s\n",
  11.206 +               major_info[mi_idx]->major, major_info[mi_idx]->type->name);
  11.207 +        goto out;
  11.208 +    }
  11.209  
  11.210 -	devfs_mk_dir(major_info[mi_idx]->type->name);
  11.211 +    devfs_mk_dir(major_info[mi_idx]->type->name);
  11.212  
  11.213 -	return major_info[mi_idx];
  11.214 +    return major_info[mi_idx];
  11.215  
  11.216   out:
  11.217 -	kfree(major_info[mi_idx]);
  11.218 -	major_info[mi_idx] = NULL;
  11.219 -	return NULL;
  11.220 +    kfree(major_info[mi_idx]);
  11.221 +    major_info[mi_idx] = NULL;
  11.222 +    return NULL;
  11.223  }
  11.224  
  11.225  static struct gendisk *xlvbd_get_gendisk(struct xlbd_major_info *mi,
  11.226 -					 int xd_minor, vdisk_t *xd)
  11.227 +                                         int xd_minor, vdisk_t *xd)
  11.228  {
  11.229 -	struct gendisk *gd;
  11.230 -	struct xlbd_disk_info *di;
  11.231 -	int device, partno;
  11.232 +    struct gendisk *gd;
  11.233 +    struct xlbd_disk_info *di;
  11.234 +    int device, partno;
  11.235  
  11.236 -	device = MKDEV(mi->major, xd_minor);
  11.237 -	gd = get_gendisk(device, &partno);
  11.238 -	if (gd)
  11.239 -		return gd;
  11.240 -
  11.241 -	di = kmalloc(sizeof(struct xlbd_disk_info), GFP_KERNEL);
  11.242 -	if (di == NULL)
  11.243 -		return NULL;
  11.244 -	di->mi = mi;
  11.245 -	di->xd_device = xd->device;
  11.246 +    device = MKDEV(mi->major, xd_minor);
  11.247 +    gd = get_gendisk(device, &partno);
  11.248 +    if ( gd != NULL )
  11.249 +        return gd;
  11.250  
  11.251 -	/* Construct an appropriate gendisk structure. */
  11.252 -	gd = alloc_disk(1);
  11.253 -	if (gd == NULL)
  11.254 -		goto out;
  11.255 +    di = kmalloc(sizeof(struct xlbd_disk_info), GFP_KERNEL);
  11.256 +    if ( di == NULL )
  11.257 +        return NULL;
  11.258 +    di->mi = mi;
  11.259 +    di->xd_device = xd->device;
  11.260 +
  11.261 +    /* Construct an appropriate gendisk structure. */
  11.262 +    gd = alloc_disk(1);
  11.263 +    if ( gd == NULL )
  11.264 +        goto out;
  11.265  
  11.266 -	gd->major = mi->major;
  11.267 -	gd->first_minor = xd_minor;
  11.268 -	gd->fops = &xlvbd_block_fops;
  11.269 -	gd->private_data = di;
  11.270 -	sprintf(gd->disk_name, "%s%c%d", mi->type->name,
  11.271 -	    'a' + mi->index * mi->type->partn_per_major +
  11.272 -		(xd_minor >> mi->type->partn_shift),
  11.273 -	    xd_minor & ((1 << mi->type->partn_shift) - 1));
  11.274 -	/*  sprintf(gd->devfs_name, "%s%s/disc%d", mi->type->name, , ); XXXdevfs */
  11.275 +    gd->major = mi->major;
  11.276 +    gd->first_minor = xd_minor;
  11.277 +    gd->fops = &xlvbd_block_fops;
  11.278 +    gd->private_data = di;
  11.279 +    sprintf(gd->disk_name, "%s%c%d", mi->type->name,
  11.280 +            'a' + mi->index * mi->type->partn_per_major +
  11.281 +            (xd_minor >> mi->type->partn_shift),
  11.282 +            xd_minor & ((1 << mi->type->partn_shift) - 1));
  11.283  
  11.284 -	set_capacity(gd, xd->capacity);
  11.285 +    set_capacity(gd, xd->capacity);
  11.286  
  11.287 -	if (xlbd_blk_queue == NULL) {
  11.288 -		xlbd_blk_queue = blk_init_queue(do_blkif_request,
  11.289 -						&blkif_io_lock);
  11.290 -		if (xlbd_blk_queue == NULL)
  11.291 -			goto out;
  11.292 -		elevator_init(xlbd_blk_queue, "noop");
  11.293 +    if ( xlbd_blk_queue == NULL )
  11.294 +    {
  11.295 +        xlbd_blk_queue = blk_init_queue(do_blkif_request,
  11.296 +                                        &blkif_io_lock);
  11.297 +        if ( xlbd_blk_queue == NULL )
  11.298 +            goto out;
  11.299 +        elevator_init(xlbd_blk_queue, "noop");
  11.300  
  11.301 -		/*
  11.302 -		 * Turn off barking 'headactive' mode. We dequeue
  11.303 -		 * buffer heads as soon as we pass them to back-end
  11.304 -		 * driver.
  11.305 -		 */
  11.306 -		blk_queue_headactive(xlbd_blk_queue, 0); /* XXXcl: noop according to blkdev.h */
  11.307 -
  11.308 -		blk_queue_hardsect_size(xlbd_blk_queue,
  11.309 -					mi->type->hardsect_size);
  11.310 -		blk_queue_max_sectors(xlbd_blk_queue, mi->type->max_sectors); /* 'hwif->rqsize' if we knew it */
  11.311 +        /*
  11.312 +         * Turn off barking 'headactive' mode. We dequeue
  11.313 +         * buffer heads as soon as we pass them to back-end
  11.314 +         * driver.
  11.315 +         */
  11.316 +        blk_queue_headactive(xlbd_blk_queue, 0);
  11.317  
  11.318 -		/* XXXcl: set mask to PAGE_SIZE for now, to improve either use 
  11.319 -		   - blk_queue_merge_bvec to merge requests with adjacent ma's
  11.320 -		   - the tags infrastructure
  11.321 -		   - the dma infrastructure
  11.322 -		*/
  11.323 -		blk_queue_segment_boundary(xlbd_blk_queue, PAGE_SIZE - 1);
  11.324 +        /* Hard sector size and max sectors impersonate the equiv. hardware. */
  11.325 +        blk_queue_hardsect_size(
  11.326 +            xlbd_blk_queue, mi->type->hardsect_size);
  11.327 +        blk_queue_max_sectors(
  11.328 +            xlbd_blk_queue, mi->type->max_sectors);
  11.329 +
  11.330 +        /* Each segment in a request is up to an aligned page in size. */
  11.331 +        blk_queue_segment_boundary(xlbd_blk_queue, PAGE_SIZE - 1);
  11.332 +        blk_queue_max_segment_size(xlbd_blk_queue, PAGE_SIZE);
  11.333  
  11.334 -		blk_queue_max_phys_segments(xlbd_blk_queue,
  11.335 -                    BLKIF_MAX_SEGMENTS_PER_REQUEST);
  11.336 -		blk_queue_max_hw_segments(xlbd_blk_queue,
  11.337 -                    BLKIF_MAX_SEGMENTS_PER_REQUEST); /* XXXcl not needed? */
  11.338 -
  11.339 +        /* Ensure a merged request will fit in a single I/O ring slot. */
  11.340 +        blk_queue_max_phys_segments(
  11.341 +            xlbd_blk_queue, BLKIF_MAX_SEGMENTS_PER_REQUEST);
  11.342 +        blk_queue_max_hw_segments(
  11.343 +            xlbd_blk_queue, BLKIF_MAX_SEGMENTS_PER_REQUEST);
  11.344  
  11.345 -	}
  11.346 -	gd->queue = xlbd_blk_queue;
  11.347 +        /* Make sure buffer addresses are sector-aligned. */
  11.348 +        blk_queue_dma_alignment(xlbd_blk_queue, 511);
  11.349 +    }
  11.350 +    gd->queue = xlbd_blk_queue;
  11.351  
  11.352 -	add_disk(gd);
  11.353 +    add_disk(gd);
  11.354  
  11.355 -	return gd;
  11.356 +    return gd;
  11.357  
  11.358   out:
  11.359 -	if (gd)
  11.360 -		del_gendisk(gd);
  11.361 -	kfree(di);
  11.362 -	return NULL;
  11.363 +    if ( gd != NULL )
  11.364 +        del_gendisk(gd);
  11.365 +    kfree(di);
  11.366 +    return NULL;
  11.367  }
  11.368  
  11.369  /*
  11.370 @@ -294,62 +293,62 @@ static struct gendisk *xlvbd_get_gendisk
  11.371   */
  11.372  static int xlvbd_init_device(vdisk_t *xd)
  11.373  {
  11.374 -	struct block_device *bd;
  11.375 -	struct gendisk *gd;
  11.376 -	struct xlbd_major_info *mi;
  11.377 -	int device;
  11.378 -	int minor;
  11.379 +    struct block_device *bd;
  11.380 +    struct gendisk *gd;
  11.381 +    struct xlbd_major_info *mi;
  11.382 +    int device;
  11.383 +    int minor;
  11.384  
  11.385 -	int err = -ENOMEM;
  11.386 +    int err = -ENOMEM;
  11.387  
  11.388 -	mi = xlbd_get_major_info(xd->device, &minor);
  11.389 -	if (mi == NULL)
  11.390 -		return -EPERM;
  11.391 +    mi = xlbd_get_major_info(xd->device, &minor);
  11.392 +    if (mi == NULL)
  11.393 +        return -EPERM;
  11.394  
  11.395 -	device = MKDEV(mi->major, minor);
  11.396 +    device = MKDEV(mi->major, minor);
  11.397  
  11.398 -	if ((bd = bdget(device)) == NULL)
  11.399 -		return -EPERM;
  11.400 +    if ((bd = bdget(device)) == NULL)
  11.401 +        return -EPERM;
  11.402  
  11.403 -	/*
  11.404 -	 * Update of partition info, and check of usage count, is protected
  11.405 -	 * by the per-block-device semaphore.
  11.406 -	 */
  11.407 -	down(&bd->bd_sem);
  11.408 +    /*
  11.409 +     * Update of partition info, and check of usage count, is protected
  11.410 +     * by the per-block-device semaphore.
  11.411 +     */
  11.412 +    down(&bd->bd_sem);
  11.413  
  11.414 -	gd = xlvbd_get_gendisk(mi, minor, xd);
  11.415 -	if (mi == NULL) {
  11.416 -		err = -EPERM;
  11.417 -		goto out;
  11.418 -	}
  11.419 +    gd = xlvbd_get_gendisk(mi, minor, xd);
  11.420 +    if (mi == NULL) {
  11.421 +        err = -EPERM;
  11.422 +        goto out;
  11.423 +    }
  11.424  
  11.425 -	if (VDISK_READONLY(xd->info))
  11.426 -		set_disk_ro(gd, 1); 
  11.427 +    if (VDISK_READONLY(xd->info))
  11.428 +        set_disk_ro(gd, 1); 
  11.429  
  11.430 -	/* Some final fix-ups depending on the device type */
  11.431 -	switch (VDISK_TYPE(xd->info)) { 
  11.432 -	case VDISK_TYPE_CDROM:
  11.433 -		gd->flags |= GENHD_FL_REMOVABLE | GENHD_FL_CD; 
  11.434 -		/* FALLTHROUGH */
  11.435 -	case VDISK_TYPE_FLOPPY: 
  11.436 -	case VDISK_TYPE_TAPE:
  11.437 -		gd->flags |= GENHD_FL_REMOVABLE; 
  11.438 -		break; 
  11.439 +    /* Some final fix-ups depending on the device type */
  11.440 +    switch (VDISK_TYPE(xd->info)) { 
  11.441 +    case VDISK_TYPE_CDROM:
  11.442 +        gd->flags |= GENHD_FL_REMOVABLE | GENHD_FL_CD; 
  11.443 +        /* FALLTHROUGH */
  11.444 +    case VDISK_TYPE_FLOPPY: 
  11.445 +    case VDISK_TYPE_TAPE:
  11.446 +        gd->flags |= GENHD_FL_REMOVABLE; 
  11.447 +        break; 
  11.448  
  11.449 -	case VDISK_TYPE_DISK:
  11.450 -		break; 
  11.451 +    case VDISK_TYPE_DISK:
  11.452 +        break; 
  11.453  
  11.454 -	default:
  11.455 -		printk(KERN_ALERT "XenLinux: unknown device type %d\n", 
  11.456 -		    VDISK_TYPE(xd->info)); 
  11.457 -		break; 
  11.458 -	}
  11.459 +    default:
  11.460 +        printk(KERN_ALERT "XenLinux: unknown device type %d\n", 
  11.461 +               VDISK_TYPE(xd->info)); 
  11.462 +        break; 
  11.463 +    }
  11.464  
  11.465 -	err = 0;
  11.466 +    err = 0;
  11.467   out:
  11.468 -	up(&bd->bd_sem);
  11.469 -	bdput(bd);    
  11.470 -	return err;
  11.471 +    up(&bd->bd_sem);
  11.472 +    bdput(bd);    
  11.473 +    return err;
  11.474  }
  11.475  
  11.476  #if 0
  11.477 @@ -393,7 +392,7 @@ static int xlvbd_remove_device(int devic
  11.478      {
  11.479          /* 1: The VBD is mapped to a partition rather than a whole unit. */
  11.480          invalidate_device(device, 1);
  11.481 -	gd->part[minor].start_sect = 0;
  11.482 +        gd->part[minor].start_sect = 0;
  11.483          gd->part[minor].nr_sects   = 0;
  11.484          gd->sizes[minor]           = 0;
  11.485  
  11.486 @@ -531,31 +530,31 @@ void xlvbd_update_vbds(void)
  11.487   */
  11.488  int xlvbd_init(void)
  11.489  {
  11.490 -	int i;
  11.491 +    int i;
  11.492  
  11.493 -	/*
  11.494 -	 * If compiled as a module, we don't support unloading yet. We
  11.495 -	 * therefore permanently increment the reference count to
  11.496 -	 * disallow it.
  11.497 -	 */
  11.498 -	/* MOD_INC_USE_COUNT; */
  11.499 +    /*
  11.500 +     * If compiled as a module, we don't support unloading yet. We
  11.501 +     * therefore permanently increment the reference count to
  11.502 +     * disallow it.
  11.503 +     */
  11.504 +    /* MOD_INC_USE_COUNT; */
  11.505  
  11.506 -	memset(major_info, 0, sizeof(major_info));
  11.507 +    memset(major_info, 0, sizeof(major_info));
  11.508  
  11.509 -	for (i = 0; i < sizeof(major_info) / sizeof(major_info[0]); i++) {
  11.510 -	}
  11.511 +    for (i = 0; i < sizeof(major_info) / sizeof(major_info[0]); i++) {
  11.512 +    }
  11.513  
  11.514 -	vbd_info = kmalloc(MAX_VBDS * sizeof(vdisk_t), GFP_KERNEL);
  11.515 -	nr_vbds  = xlvbd_get_vbd_info(vbd_info);
  11.516 +    vbd_info = kmalloc(MAX_VBDS * sizeof(vdisk_t), GFP_KERNEL);
  11.517 +    nr_vbds  = xlvbd_get_vbd_info(vbd_info);
  11.518  
  11.519 -	if (nr_vbds < 0) {
  11.520 -		kfree(vbd_info);
  11.521 -		vbd_info = NULL;
  11.522 -		nr_vbds  = 0;
  11.523 -	} else {
  11.524 -		for (i = 0; i < nr_vbds; i++)
  11.525 -			xlvbd_init_device(&vbd_info[i]);
  11.526 -	}
  11.527 +    if (nr_vbds < 0) {
  11.528 +        kfree(vbd_info);
  11.529 +        vbd_info = NULL;
  11.530 +        nr_vbds  = 0;
  11.531 +    } else {
  11.532 +        for (i = 0; i < nr_vbds; i++)
  11.533 +            xlvbd_init_device(&vbd_info[i]);
  11.534 +    }
  11.535  
  11.536 -	return 0;
  11.537 +    return 0;
  11.538  }
    12.1 --- a/linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c	Mon Jan 10 10:26:55 2005 +0000
    12.2 +++ b/linux-2.6.10-xen-sparse/drivers/xen/netfront/netfront.c	Mon Jan 17 16:03:22 2005 +0000
    12.3 @@ -257,7 +257,7 @@ static int netctrl_connected_count(void)
    12.4   * @param dev device
    12.5   * @return 0 on success, error code otherwise
    12.6   */
    12.7 -static int vif_wake(struct net_device *dev)
    12.8 +static int send_fake_arp(struct net_device *dev)
    12.9  {
   12.10      struct sk_buff *skb;
   12.11      u32             src_ip, dst_ip;
   12.12 @@ -265,10 +265,15 @@ static int vif_wake(struct net_device *d
   12.13      dst_ip = INADDR_BROADCAST;
   12.14      src_ip = inet_select_addr(dev, dst_ip, RT_SCOPE_LINK);
   12.15  
   12.16 +    /* No IP? Then nothing to do. */
   12.17 +    if ( src_ip == 0 )
   12.18 +        return 0;
   12.19 +
   12.20      skb = arp_create(ARPOP_REPLY, ETH_P_ARP,
   12.21                       dst_ip, dev, src_ip,
   12.22                       /*dst_hw*/ NULL, /*src_hw*/ NULL, 
   12.23                       /*target_hw*/ dev->dev_addr);
   12.24 +    printk(KERN_ALERT "ARP sent on %08x %08x %p\n", dst_ip, src_ip, skb);
   12.25      if ( skb == NULL )
   12.26          return -ENOMEM;
   12.27  
   12.28 @@ -822,13 +827,11 @@ static void send_interface_connect(struc
   12.29      };
   12.30      netif_fe_interface_connect_t *msg = (void*)cmsg.msg;
   12.31  
   12.32 -    DPRINTK(">\n"); vif_show(np); 
   12.33      msg->handle = np->handle;
   12.34      msg->tx_shmem_frame = (virt_to_machine(np->tx) >> PAGE_SHIFT);
   12.35      msg->rx_shmem_frame = (virt_to_machine(np->rx) >> PAGE_SHIFT);
   12.36          
   12.37      ctrl_if_send_message_block(&cmsg, NULL, 0, TASK_UNINTERRUPTIBLE);
   12.38 -    DPRINTK("<\n");
   12.39  }
   12.40  
   12.41  /* Send a driver status notification to the domain controller. */
   12.42 @@ -876,13 +879,12 @@ static void vif_release(struct net_priva
   12.43   */
   12.44  static void vif_close(struct net_private *np)
   12.45  {
   12.46 -    DPRINTK(">\n"); vif_show(np);
   12.47      WPRINTK("Unexpected netif-CLOSED message in state %s\n",
   12.48              be_state_name[np->backend_state]);
   12.49      vif_release(np);
   12.50      np->backend_state = BEST_CLOSED;
   12.51      /* todo: take dev down and free. */
   12.52 -    vif_show(np); DPRINTK("<\n");
   12.53 +    vif_show(np);
   12.54  }
   12.55  
   12.56  /* Move the vif into disconnected state.
   12.57 @@ -891,7 +893,6 @@ static void vif_close(struct net_private
   12.58   */
   12.59  static void vif_disconnect(struct net_private *np)
   12.60  {
   12.61 -    DPRINTK(">\n");
   12.62      if(np->tx) free_page((unsigned long)np->tx);
   12.63      if(np->rx) free_page((unsigned long)np->rx);
   12.64      // Before this np->tx and np->rx had better be null.
   12.65 @@ -901,7 +902,7 @@ static void vif_disconnect(struct net_pr
   12.66      memset(np->rx, 0, PAGE_SIZE);
   12.67      np->backend_state = BEST_DISCONNECTED;
   12.68      send_interface_connect(np);
   12.69 -    vif_show(np); DPRINTK("<\n");
   12.70 +    vif_show(np);
   12.71  }
   12.72  
   12.73  /* Begin interface recovery.
   12.74 @@ -921,12 +922,11 @@ static void
   12.75  vif_reset(
   12.76      struct net_private *np)
   12.77  {
   12.78 -    DPRINTK(">\n");
   12.79      IPRINTK("Attempting to reconnect network interface: handle=%u\n",
   12.80              np->handle);    
   12.81      vif_release(np);
   12.82      vif_disconnect(np);
   12.83 -    vif_show(np); DPRINTK("<\n");
   12.84 +    vif_show(np);
   12.85  }
   12.86  
   12.87  /* Move the vif into connected state.
   12.88 @@ -938,15 +938,14 @@ vif_connect(
   12.89      struct net_private *np, netif_fe_interface_status_t *status)
   12.90  {
   12.91      struct net_device *dev = np->dev;
   12.92 -    DPRINTK(">\n");
   12.93      memcpy(dev->dev_addr, status->mac, ETH_ALEN);
   12.94      network_connect(dev, status);
   12.95      np->evtchn = status->evtchn;
   12.96      np->irq = bind_evtchn_to_irq(np->evtchn);
   12.97      (void)request_irq(np->irq, netif_int, SA_SAMPLE_RANDOM, dev->name, dev);
   12.98      netctrl_connected_count();
   12.99 -    vif_wake(dev);
  12.100 -    vif_show(np); DPRINTK("<\n");
  12.101 +    (void)send_fake_arp(dev);
  12.102 +    vif_show(np);
  12.103  }
  12.104  
  12.105  
  12.106 @@ -1058,7 +1057,6 @@ static void netif_interface_status(netif
  12.107      int err = 0;
  12.108      struct net_private *np = NULL;
  12.109      
  12.110 -    DPRINTK(">\n");
  12.111      DPRINTK("> status=%s handle=%d\n",
  12.112              status_name[status->status], status->handle);
  12.113  
  12.114 @@ -1074,8 +1072,6 @@ static void netif_interface_status(netif
  12.115          return;
  12.116      }
  12.117  
  12.118 -    DPRINTK(">\n"); vif_show(np);
  12.119 -
  12.120      switch ( status->status )
  12.121      {
  12.122      case NETIF_INTERFACE_STATUS_CLOSED:
  12.123 @@ -1129,8 +1125,8 @@ static void netif_interface_status(netif
  12.124          WPRINTK("Invalid netif status code %d\n", status->status);
  12.125          break;
  12.126      }
  12.127 +
  12.128      vif_show(np);
  12.129 -    DPRINTK("<\n");
  12.130  }
  12.131  
  12.132  /*
  12.133 @@ -1138,10 +1134,7 @@ static void netif_interface_status(netif
  12.134   */
  12.135  static void netif_driver_status(netif_fe_driver_status_t *status)
  12.136  {
  12.137 -    DPRINTK("> status=%d\n", status->status);
  12.138      netctrl.up = status->status;
  12.139 -    //netctrl.interface_n = status->max_handle;
  12.140 -    //netctrl.connected_n = 0;
  12.141      netctrl_connected_count();
  12.142  }
  12.143  
  12.144 @@ -1266,6 +1259,39 @@ static int probe_interfaces(void)
  12.145  
  12.146  #endif
  12.147  
  12.148 +/*
  12.149 + * We use this notifier to send out a fake ARP reply to reset switches and
  12.150 + * router ARP caches when an IP interface is brought up on a VIF.
  12.151 + */
  12.152 +static int inetdev_notify(struct notifier_block *this, 
  12.153 +                          unsigned long event, 
  12.154 +                          void *ptr)
  12.155 +{
  12.156 +    struct in_ifaddr  *ifa = (struct in_ifaddr *)ptr; 
  12.157 +    struct net_device *dev = ifa->ifa_dev->dev;
  12.158 +    struct list_head  *ent;
  12.159 +    struct net_private *np;
  12.160 +
  12.161 +    if ( event != NETDEV_UP )
  12.162 +        goto out;
  12.163 +
  12.164 +    list_for_each ( ent, &dev_list )
  12.165 +    {
  12.166 +        np = list_entry(ent, struct net_private, list);
  12.167 +        if ( np->dev == dev )
  12.168 +            (void)send_fake_arp(dev);
  12.169 +    }
  12.170 +        
  12.171 + out:
  12.172 +    return NOTIFY_DONE;
  12.173 +}
  12.174 +
  12.175 +static struct notifier_block notifier_inetdev = {
  12.176 +    .notifier_call  = inetdev_notify,
  12.177 +    .next           = NULL,
  12.178 +    .priority       = 0
  12.179 +};
  12.180 +
  12.181  static int __init netif_init(void)
  12.182  {
  12.183      int err = 0;
  12.184 @@ -1276,6 +1302,7 @@ static int __init netif_init(void)
  12.185  
  12.186      IPRINTK("Initialising virtual ethernet driver.\n");
  12.187      INIT_LIST_HEAD(&dev_list);
  12.188 +    (void)register_inetaddr_notifier(&notifier_inetdev);
  12.189      netctrl_init();
  12.190      (void)ctrl_if_register_receiver(CMSG_NETIF_FE, netif_ctrlif_rx,
  12.191                                      CALLBACK_IN_BLOCKING_CONTEXT);
  12.192 @@ -1290,57 +1317,48 @@ static int __init netif_init(void)
  12.193  
  12.194  static void vif_suspend(struct net_private *np)
  12.195  {
  12.196 -    // Avoid having tx/rx stuff happen until we're ready.
  12.197 -    DPRINTK(">\n");
  12.198 +    /* Avoid having tx/rx stuff happen until we're ready. */
  12.199      free_irq(np->irq, np->dev);
  12.200      unbind_evtchn_from_irq(np->evtchn);
  12.201 -    DPRINTK("<\n");
  12.202  }
  12.203  
  12.204  static void vif_resume(struct net_private *np)
  12.205  {
  12.206 -    // Connect regardless of whether IFF_UP flag set.
  12.207 -    // Stop bad things from happening until we're back up.
  12.208 -    DPRINTK(">\n");
  12.209 +    /*
  12.210 +     * Connect regardless of whether IFF_UP flag set.
  12.211 +     * Stop bad things from happening until we're back up.
  12.212 +     */
  12.213      np->backend_state = BEST_DISCONNECTED;
  12.214      memset(np->tx, 0, PAGE_SIZE);
  12.215      memset(np->rx, 0, PAGE_SIZE);
  12.216      
  12.217      send_interface_connect(np);
  12.218 -    DPRINTK("<\n");
  12.219  }
  12.220  
  12.221  void netif_suspend(void)
  12.222  {
  12.223 -#if 1 /* XXX THIS IS TEMPORARY */
  12.224      struct list_head *ent;
  12.225      struct net_private *np;
  12.226      
  12.227 -    DPRINTK(">\n");
  12.228 -    list_for_each(ent, &dev_list){
  12.229 +    list_for_each ( ent, &dev_list )
  12.230 +    {
  12.231          np = list_entry(ent, struct net_private, list);
  12.232          vif_suspend(np);
  12.233      }
  12.234 -    DPRINTK("<\n");
  12.235 -#endif
  12.236  }
  12.237  
  12.238  void netif_resume(void)
  12.239  {
  12.240 -#if 1
  12.241 -    /* XXX THIS IS TEMPORARY */
  12.242      struct list_head *ent;
  12.243      struct net_private *np;
  12.244  
  12.245 -    DPRINTK(">\n");
  12.246      list_for_each ( ent, &dev_list )
  12.247      {
  12.248          np = list_entry(ent, struct net_private, list);
  12.249          vif_resume(np);
  12.250      }
  12.251 -    DPRINTK("<\n");
  12.252 -#endif	    
  12.253  }
  12.254  
  12.255  
  12.256 -__initcall(netif_init);
  12.257 +module_init(netif_init);
  12.258 +
    13.1 --- a/tools/Makefile	Mon Jan 10 10:26:55 2005 +0000
    13.2 +++ b/tools/Makefile	Mon Jan 17 16:03:22 2005 +0000
    13.3 @@ -9,6 +9,7 @@ all:
    13.4  	$(MAKE) -C python
    13.5  	$(MAKE) -C xfrd
    13.6  	$(MAKE) -C xcs
    13.7 +	$(MAKE) -C ioemu
    13.8  
    13.9  install: 
   13.10  ifneq ($(dist),yes)
   13.11 @@ -23,6 +24,7 @@ endif
   13.12  	$(MAKE) -C xfrd install
   13.13  	$(MAKE) -C sv install
   13.14  	$(MAKE) -C xcs install
   13.15 +	$(MAKE) -C ioemu install
   13.16  
   13.17  dist: $(TARGET)
   13.18  	$(MAKE) prefix=`pwd`/../../install dist=yes install
   13.19 @@ -37,4 +39,4 @@ clean:
   13.20  	$(MAKE) -C python clean
   13.21  	$(MAKE) -C xfrd clean
   13.22  	$(MAKE) -C xcs clean
   13.23 -
   13.24 +	$(MAKE) -C ioemu clean
    14.1 --- a/tools/examples/Makefile	Mon Jan 10 10:26:55 2005 +0000
    14.2 +++ b/tools/examples/Makefile	Mon Jan 17 16:03:22 2005 +0000
    14.3 @@ -14,8 +14,8 @@ XEN_CONFIGS += bochsrc
    14.4  
    14.5  # Xen script dir and scripts to go there.
    14.6  XEN_SCRIPT_DIR = /etc/xen/scripts
    14.7 -XEN_SCRIPTS = network
    14.8 -XEN_SCRIPTS += vif-bridge
    14.9 +XEN_SCRIPTS = network vif-bridge
   14.10 +XEN_SCRIPTS += network-route vif-route
   14.11  XEN_SCRIPTS += block-file
   14.12  XEN_SCRIPTS += block-enbd
   14.13  
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/tools/examples/network-route	Mon Jan 17 16:03:22 2005 +0000
    15.3 @@ -0,0 +1,19 @@
    15.4 +#!/bin/sh
    15.5 +#============================================================================
    15.6 +# Default Xen network start/stop script.
    15.7 +# Xend calls a network script when it starts.
    15.8 +# The script name to use is defined in /etc/xen/xend-config.sxp
    15.9 +# in the network-script field.
   15.10 +#
   15.11 +# Usage:
   15.12 +#
   15.13 +# network-route (start|stop|status) {VAR=VAL}*
   15.14 +#
   15.15 +# Vars:
   15.16 +#
   15.17 +# netdev     The gateway interface (default eth0).
   15.18 +# antispoof  Whether to use iptables to prevent spoofing (default yes).
   15.19 +#
   15.20 +#============================================================================
   15.21 +
   15.22 +echo 1 >/proc/sys/net/ipv4/ip_forward
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/tools/examples/vif-route	Mon Jan 17 16:03:22 2005 +0000
    16.3 @@ -0,0 +1,76 @@
    16.4 +#!/bin/sh
    16.5 +#============================================================================
    16.6 +# /etc/xen/vif-route
    16.7 +#
    16.8 +# Script for configuring a vif in routed mode.
    16.9 +# Xend calls a vif script when bringing a vif up or down.
   16.10 +# This script is the default - but it can be configured for each vif.
   16.11 +#
   16.12 +# Example invocation:
   16.13 +#
   16.14 +# vif-route up domain=VM1 vif=vif1.0 ip="128.232.38.45/28 10.10.10.55/24"
   16.15 +#
   16.16 +# Usage:
   16.17 +# vif-route (up|down) {VAR=VAL}*
   16.18 +#
   16.19 +# Vars:
   16.20 +#
   16.21 +# domain  name of the domain the interface is on (required).
   16.22 +# vif     vif interface name (required).
   16.23 +# mac     vif MAC address (required).
   16.24 +# ip      list of IP networks for the vif, space-separated (optional).
   16.25 +#============================================================================
   16.26 +
   16.27 +# Exit if anything goes wrong
   16.28 +set -e 
   16.29 +
   16.30 +echo "vif-route $*"
   16.31 +
   16.32 +# Operation name.
   16.33 +OP=$1
   16.34 +shift
   16.35 +
   16.36 +# Pull variables in args into environment
   16.37 +for arg ; do export "${arg}" ; done
   16.38 +
   16.39 +# Required parameters. Fail if not set.
   16.40 +domain=${domain:?}
   16.41 +vif=${vif:?}
   16.42 +mac=${mac:?}
   16.43 +
   16.44 +# Optional parameters. Set defaults.
   16.45 +ip=${ip:-''}   # default to null (do nothing)
   16.46 +
   16.47 +main_ip=`ifconfig eth0 | grep "inet addr:" | sed -e 's/.*inet addr:\(\w\w*\.\w\w*\.\w\w*\.\w\w*\).*/\1/'`
   16.48 +
   16.49 +# Are we going up or down?
   16.50 +case $OP in
   16.51 +    up)
   16.52 +        ifconfig ${vif} 169.254.1.0 netmask 255.255.255.255 up
   16.53 +        echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp
   16.54 +        iptcmd='-A'
   16.55 +        ipcmd='a'
   16.56 +        ;;
   16.57 +    down)
   16.58 +        ifconfig ${vif} down
   16.59 +        iptcmd='-D'
   16.60 +        ipcmd='d'
   16.61 +        ;;
   16.62 +    *)
   16.63 +        echo 'Invalid command: ' $OP
   16.64 +        echo 'Valid commands are: up, down'
   16.65 +        exit 1
   16.66 +        ;;
   16.67 +esac
   16.68 +
   16.69 +if [ ${ip} ] ; then
   16.70 +
   16.71 +    # If we've been given a list of IP networks, allow pkts with these src addrs.
   16.72 +    for addr in ${ip} ; do
   16.73 +      ip r ${ipcmd} ${addr} dev ${vif} src ${main_ip}
   16.74 +#      iptables ${iptcmd} FORWARD -m physdev --physdev-in ${vif} -s ${addr} -j ACCEPT
   16.75 +    done 
   16.76 +
   16.77 +    # Always allow us to talk to a DHCP server anyhow.
   16.78 +#    iptables ${iptcmd} FORWARD -m physdev --physdev-in ${vif} -p udp --sport 68 --dport 67 -j ACCEPT
   16.79 +fi
    17.1 --- a/tools/examples/xend-config.sxp	Mon Jan 10 10:26:55 2005 +0000
    17.2 +++ b/tools/examples/xend-config.sxp	Mon Jan 17 16:03:22 2005 +0000
    17.3 @@ -8,12 +8,17 @@
    17.4  # Specifying the empty string '' allows all connections.
    17.5  (xend-address      '')
    17.6  
    17.7 +## Use the following if VIF traffic is routed.
    17.8 +# The script used to start/stop networking for xend.
    17.9 +#(network-script     network-route)
   17.10 +# The default script used to control virtual interfaces.
   17.11 +#(vif-script         vif-route)
   17.12 +
   17.13 +## Use the following if VIF traffic is bridged.
   17.14  # The script used to start/stop networking for xend.
   17.15  (network-script    network)
   17.16 -
   17.17  # The default bridge that virtual interfaces should be connected to.
   17.18  (vif-bridge        xen-br0)
   17.19 -
   17.20  # The default script used to control virtual interfaces.
   17.21  (vif-script        vif-bridge)
   17.22  
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/tools/ioemu/Makefile	Mon Jan 17 16:03:22 2005 +0000
    18.3 @@ -0,0 +1,19 @@
    18.4 +# Order is important!
    18.5 +SUBDIRS=gui memory iodev
    18.6 +
    18.7 +.PHONY: all clean install
    18.8 +
    18.9 +all:
   18.10 +	@for subdir in $(SUBDIRS); do 				\
   18.11 +		$(MAKE) -C $$subdir $(MAKEDEFS) $@ || exit -1; 	\
   18.12 +	done
   18.13 +
   18.14 +clean:
   18.15 +	@for subdir in $(SUBDIRS); do 				\
   18.16 +		$(MAKE) -C $$subdir $(MAKEDEFS) $@ || exit -1; 	\
   18.17 +	done
   18.18 +
   18.19 +install:
   18.20 +	@for subdir in $(SUBDIRS); do 				\
   18.21 +		$(MAKE) -C $$subdir $(MAKEDEFS) $@ || exit -1; 	\
   18.22 +	done
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/tools/ioemu/font/vga.bitmap.h	Mon Jan 17 16:03:22 2005 +0000
    19.3 @@ -0,0 +1,288 @@
    19.4 +/////////////////////////////////////////////////////////////////////////
    19.5 +// $Id: vga.bitmap.h,v 1.4 2002/05/25 14:22:53 vruppert Exp $
    19.6 +/////////////////////////////////////////////////////////////////////////
    19.7 +//
    19.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
    19.9 +//
   19.10 +//    MandrakeSoft S.A.
   19.11 +//    43, rue d'Aboukir
   19.12 +//    75002 Paris - France
   19.13 +//    http://www.linux-mandrake.com/
   19.14 +//    http://www.mandrakesoft.com/
   19.15 +//
   19.16 +//  This library is free software; you can redistribute it and/or
   19.17 +//  modify it under the terms of the GNU Lesser General Public
   19.18 +//  License as published by the Free Software Foundation; either
   19.19 +//  version 2 of the License, or (at your option) any later version.
   19.20 +//
   19.21 +//  This library is distributed in the hope that it will be useful,
   19.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   19.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   19.24 +//  Lesser General Public License for more details.
   19.25 +//
   19.26 +//  You should have received a copy of the GNU Lesser General Public
   19.27 +//  License along with this library; if not, write to the Free Software
   19.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   19.29 +
   19.30 +typedef struct {
   19.31 +  unsigned char data[16];
   19.32 +  } bx_fontcharbitmap_t;
   19.33 +
   19.34 +static const bx_fontcharbitmap_t bx_vgafont[256] = {
   19.35 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.36 +{{ 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xa5, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
   19.37 +{{ 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xdb, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
   19.38 +{{ 0x00, 0x00, 0x00, 0x00, 0x36, 0x7f, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00 }},
   19.39 +{{ 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x3e, 0x7f, 0x3e, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.40 +{{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   19.41 +{{ 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
   19.42 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.43 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }},
   19.44 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.45 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff }},
   19.46 +{{ 0x00, 0x00, 0x78, 0x60, 0x70, 0x58, 0x1e, 0x33, 0x33, 0x33, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00 }},
   19.47 +{{ 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   19.48 +{{ 0x00, 0x00, 0xfc, 0xcc, 0xfc, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00 }},
   19.49 +{{ 0x00, 0x00, 0xfe, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xe6, 0xe7, 0x67, 0x03, 0x00, 0x00, 0x00 }},
   19.50 +{{ 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   19.51 +{{ 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00 }},
   19.52 +{{ 0x00, 0x40, 0x60, 0x70, 0x78, 0x7c, 0x7f, 0x7c, 0x78, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00 }},
   19.53 +{{ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.54 +{{ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }},
   19.55 +{{ 0x00, 0x00, 0xfe, 0xdb, 0xdb, 0xdb, 0xde, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00 }},
   19.56 +{{ 0x00, 0x3e, 0x63, 0x06, 0x1c, 0x36, 0x63, 0x63, 0x36, 0x1c, 0x30, 0x63, 0x3e, 0x00, 0x00, 0x00 }},
   19.57 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   19.58 +{{ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
   19.59 +{{ 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   19.60 +{{ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   19.61 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x7f, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.62 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x7f, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.63 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.64 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x36, 0x7f, 0x36, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.65 +{{ 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x1c, 0x3e, 0x3e, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.66 +{{ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x3e, 0x3e, 0x1c, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.67 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.68 +{{ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   19.69 +{{ 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.70 +{{ 0x00, 0x00, 0x00, 0x36, 0x36, 0x7f, 0x36, 0x36, 0x36, 0x7f, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }},
   19.71 +{{ 0x18, 0x18, 0x3e, 0x63, 0x43, 0x03, 0x3e, 0x60, 0x60, 0x61, 0x63, 0x3e, 0x18, 0x18, 0x00, 0x00 }},
   19.72 +{{ 0x00, 0x00, 0x00, 0x00, 0x43, 0x63, 0x30, 0x18, 0x0c, 0x06, 0x63, 0x61, 0x00, 0x00, 0x00, 0x00 }},
   19.73 +{{ 0x00, 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x6e, 0x3b, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
   19.74 +{{ 0x00, 0x0c, 0x0c, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.75 +{{ 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00 }},
   19.76 +{{ 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00 }},
   19.77 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.78 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.79 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00 }},
   19.80 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.81 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   19.82 +{{ 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00 }},
   19.83 +{{ 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x6b, 0x6b, 0x63, 0x63, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00 }},
   19.84 +{{ 0x00, 0x00, 0x18, 0x1c, 0x1e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
   19.85 +{{ 0x00, 0x00, 0x3e, 0x63, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
   19.86 +{{ 0x00, 0x00, 0x3e, 0x63, 0x60, 0x60, 0x3c, 0x60, 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   19.87 +{{ 0x00, 0x00, 0x30, 0x38, 0x3c, 0x36, 0x33, 0x7f, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00 }},
   19.88 +{{ 0x00, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x3f, 0x60, 0x60, 0x60, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   19.89 +{{ 0x00, 0x00, 0x1c, 0x06, 0x03, 0x03, 0x3f, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   19.90 +{{ 0x00, 0x00, 0x7f, 0x63, 0x60, 0x60, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00 }},
   19.91 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
   19.92 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x7e, 0x60, 0x60, 0x60, 0x30, 0x1e, 0x00, 0x00, 0x00, 0x00 }},
   19.93 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.94 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00 }},
   19.95 +{{ 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00 }},
   19.96 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
   19.97 +{{ 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00 }},
   19.98 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x30, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
   19.99 +{{ 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x7b, 0x7b, 0x7b, 0x3b, 0x03, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.100 +{{ 0x00, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.101 +{{ 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x66, 0x66, 0x66, 0x66, 0x3f, 0x00, 0x00, 0x00, 0x00 }},
  19.102 +{{ 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x03, 0x03, 0x43, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.103 +{{ 0x00, 0x00, 0x1f, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x36, 0x1f, 0x00, 0x00, 0x00, 0x00 }},
  19.104 +{{ 0x00, 0x00, 0x7f, 0x66, 0x46, 0x16, 0x1e, 0x16, 0x06, 0x46, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
  19.105 +{{ 0x00, 0x00, 0x7f, 0x66, 0x46, 0x16, 0x1e, 0x16, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
  19.106 +{{ 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x7b, 0x63, 0x63, 0x66, 0x5c, 0x00, 0x00, 0x00, 0x00 }},
  19.107 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.108 +{{ 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.109 +{{ 0x00, 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x33, 0x33, 0x1e, 0x00, 0x00, 0x00, 0x00 }},
  19.110 +{{ 0x00, 0x00, 0x67, 0x66, 0x66, 0x36, 0x1e, 0x1e, 0x36, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
  19.111 +{{ 0x00, 0x00, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
  19.112 +{{ 0x00, 0x00, 0x63, 0x77, 0x7f, 0x7f, 0x6b, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.113 +{{ 0x00, 0x00, 0x63, 0x67, 0x6f, 0x7f, 0x7b, 0x73, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.114 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.115 +{{ 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
  19.116 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x6b, 0x7b, 0x3e, 0x30, 0x70, 0x00, 0x00 }},
  19.117 +{{ 0x00, 0x00, 0x3f, 0x66, 0x66, 0x66, 0x3e, 0x36, 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
  19.118 +{{ 0x00, 0x00, 0x3e, 0x63, 0x63, 0x06, 0x1c, 0x30, 0x60, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.119 +{{ 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.120 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.121 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00 }},
  19.122 +{{ 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x6b, 0x6b, 0x6b, 0x7f, 0x77, 0x36, 0x00, 0x00, 0x00, 0x00 }},
  19.123 +{{ 0x00, 0x00, 0x63, 0x63, 0x36, 0x3e, 0x1c, 0x1c, 0x3e, 0x36, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.124 +{{ 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.125 +{{ 0x00, 0x00, 0x7f, 0x63, 0x61, 0x30, 0x18, 0x0c, 0x06, 0x43, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
  19.126 +{{ 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.127 +{{ 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00 }},
  19.128 +{{ 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.129 +{{ 0x08, 0x1c, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.130 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00 }},
  19.131 +{{ 0x0c, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.132 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.133 +{{ 0x00, 0x00, 0x07, 0x06, 0x06, 0x1e, 0x36, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.134 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x03, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.135 +{{ 0x00, 0x00, 0x38, 0x30, 0x30, 0x3c, 0x36, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.136 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.137 +{{ 0x00, 0x00, 0x1c, 0x36, 0x26, 0x06, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
  19.138 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3e, 0x30, 0x33, 0x1e, 0x00 }},
  19.139 +{{ 0x00, 0x00, 0x07, 0x06, 0x06, 0x36, 0x6e, 0x66, 0x66, 0x66, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
  19.140 +{{ 0x00, 0x00, 0x18, 0x18, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.141 +{{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x3c, 0x00 }},
  19.142 +{{ 0x00, 0x00, 0x07, 0x06, 0x06, 0x66, 0x36, 0x1e, 0x1e, 0x36, 0x66, 0x67, 0x00, 0x00, 0x00, 0x00 }},
  19.143 +{{ 0x00, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.144 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x6b, 0x6b, 0x6b, 0x6b, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.145 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }},
  19.146 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.147 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x0f, 0x00 }},
  19.148 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3e, 0x30, 0x30, 0x78, 0x00 }},
  19.149 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x6e, 0x66, 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00 }},
  19.150 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x63, 0x06, 0x1c, 0x30, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.151 +{{ 0x00, 0x00, 0x08, 0x0c, 0x0c, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00 }},
  19.152 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.153 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 }},
  19.154 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x6b, 0x6b, 0x6b, 0x7f, 0x36, 0x00, 0x00, 0x00, 0x00 }},
  19.155 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x36, 0x1c, 0x1c, 0x1c, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.156 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7e, 0x60, 0x30, 0x1f, 0x00 }},
  19.157 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x33, 0x18, 0x0c, 0x06, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
  19.158 +{{ 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00 }},
  19.159 +{{ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
  19.160 +{{ 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
  19.161 +{{ 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.162 +{{ 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.163 +{{ 0x00, 0x00, 0x3c, 0x66, 0x43, 0x03, 0x03, 0x03, 0x43, 0x66, 0x3c, 0x30, 0x60, 0x3e, 0x00, 0x00 }},
  19.164 +{{ 0x00, 0x00, 0x33, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.165 +{{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.166 +{{ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.167 +{{ 0x00, 0x00, 0x33, 0x00, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.168 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.169 +{{ 0x00, 0x1c, 0x36, 0x1c, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.170 +{{ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x06, 0x06, 0x66, 0x3c, 0x30, 0x60, 0x3c, 0x00, 0x00, 0x00 }},
  19.171 +{{ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.172 +{{ 0x00, 0x00, 0x63, 0x00, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.173 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x3e, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.174 +{{ 0x00, 0x00, 0x66, 0x00, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.175 +{{ 0x00, 0x18, 0x3c, 0x66, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.176 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.177 +{{ 0x00, 0x63, 0x00, 0x08, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.178 +{{ 0x1c, 0x36, 0x1c, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.179 +{{ 0x18, 0x0c, 0x06, 0x00, 0x7f, 0x66, 0x06, 0x3e, 0x06, 0x06, 0x66, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
  19.180 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x6e, 0x6c, 0x7e, 0x1b, 0x1b, 0x76, 0x00, 0x00, 0x00, 0x00 }},
  19.181 +{{ 0x00, 0x00, 0x7c, 0x36, 0x33, 0x33, 0x7f, 0x33, 0x33, 0x33, 0x33, 0x73, 0x00, 0x00, 0x00, 0x00 }},
  19.182 +{{ 0x00, 0x08, 0x1c, 0x36, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.183 +{{ 0x00, 0x00, 0x63, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.184 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.185 +{{ 0x00, 0x0c, 0x1e, 0x33, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.186 +{{ 0x00, 0x06, 0x0c, 0x18, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.187 +{{ 0x00, 0x00, 0x63, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7e, 0x60, 0x30, 0x1e, 0x00 }},
  19.188 +{{ 0x00, 0x63, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.189 +{{ 0x00, 0x63, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.190 +{{ 0x00, 0x18, 0x18, 0x3c, 0x66, 0x06, 0x06, 0x06, 0x66, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
  19.191 +{{ 0x00, 0x1c, 0x36, 0x26, 0x06, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x67, 0x3f, 0x00, 0x00, 0x00, 0x00 }},
  19.192 +{{ 0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
  19.193 +{{ 0x00, 0x1f, 0x33, 0x33, 0x1f, 0x23, 0x33, 0x7b, 0x33, 0x33, 0x33, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.194 +{{ 0x00, 0x70, 0xd8, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x0e, 0x00, 0x00 }},
  19.195 +{{ 0x00, 0x18, 0x0c, 0x06, 0x00, 0x1e, 0x30, 0x3e, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.196 +{{ 0x00, 0x30, 0x18, 0x0c, 0x00, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.197 +{{ 0x00, 0x18, 0x0c, 0x06, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.198 +{{ 0x00, 0x18, 0x0c, 0x06, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.199 +{{ 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x3b, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00 }},
  19.200 +{{ 0x6e, 0x3b, 0x00, 0x63, 0x67, 0x6f, 0x7f, 0x7b, 0x73, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.201 +{{ 0x00, 0x3c, 0x36, 0x36, 0x7c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.202 +{{ 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.203 +{{ 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0x06, 0x03, 0x63, 0x63, 0x3e, 0x00, 0x00, 0x00, 0x00 }},
  19.204 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.205 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.206 +{{ 0x00, 0x03, 0x03, 0x43, 0x63, 0x33, 0x18, 0x0c, 0x06, 0x3b, 0x61, 0x30, 0x18, 0x7c, 0x00, 0x00 }},
  19.207 +{{ 0x00, 0x03, 0x03, 0x43, 0x63, 0x33, 0x18, 0x0c, 0x66, 0x73, 0x79, 0x7c, 0x60, 0x60, 0x00, 0x00 }},
  19.208 +{{ 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00 }},
  19.209 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x36, 0x1b, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.210 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x36, 0x6c, 0x36, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.211 +{{ 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22 }},
  19.212 +{{ 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55 }},
  19.213 +{{ 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee }},
  19.214 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.215 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.216 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.217 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.218 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.219 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.220 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x60, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.221 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.222 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x60, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.223 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x60, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.224 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.225 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.226 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.227 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.228 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.229 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.230 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.231 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.232 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.233 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.234 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.235 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x0c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.236 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.237 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.238 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xef, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.239 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0x0c, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.240 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.241 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0x00, 0xef, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.242 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.243 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.244 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.245 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.246 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.247 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.248 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.249 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.250 +{{ 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c }},
  19.251 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.252 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.253 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.254 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }},
  19.255 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }},
  19.256 +{{ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f }},
  19.257 +{{ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0 }},
  19.258 +{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.259 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b, 0x1b, 0x1b, 0x3b, 0x6e, 0x00, 0x00, 0x00, 0x00 }},
  19.260 +{{ 0x00, 0x00, 0x1e, 0x33, 0x33, 0x33, 0x1b, 0x33, 0x63, 0x63, 0x63, 0x33, 0x00, 0x00, 0x00, 0x00 }},
  19.261 +{{ 0x00, 0x00, 0x7f, 0x63, 0x63, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00 }},
  19.262 +{{ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00 }},
  19.263 +{{ 0x00, 0x00, 0x00, 0x7f, 0x63, 0x06, 0x0c, 0x18, 0x0c, 0x06, 0x63, 0x7f, 0x00, 0x00, 0x00, 0x00 }},
  19.264 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
  19.265 +{{ 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3e, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00 }},
  19.266 +{{ 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00 }},
  19.267 +{{ 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
  19.268 +{{ 0x00, 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x7f, 0x63, 0x63, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00 }},
  19.269 +{{ 0x00, 0x00, 0x1c, 0x36, 0x63, 0x63, 0x63, 0x36, 0x36, 0x36, 0x36, 0x77, 0x00, 0x00, 0x00, 0x00 }},
  19.270 +{{ 0x00, 0x00, 0x78, 0x0c, 0x18, 0x30, 0x7c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00 }},
  19.271 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.272 +{{ 0x00, 0x00, 0x00, 0xc0, 0x60, 0x7e, 0xdb, 0xdb, 0xcf, 0x7e, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00 }},
  19.273 +{{ 0x00, 0x00, 0x38, 0x0c, 0x06, 0x06, 0x3e, 0x06, 0x06, 0x06, 0x0c, 0x38, 0x00, 0x00, 0x00, 0x00 }},
  19.274 +{{ 0x00, 0x00, 0x00, 0x3e, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00 }},
  19.275 +{{ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.276 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00 }},
  19.277 +{{ 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
  19.278 +{{ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00 }},
  19.279 +{{ 0x00, 0x00, 0x70, 0xd8, 0xd8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }},
  19.280 +{{ 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1b, 0x1b, 0x1b, 0x0e, 0x00, 0x00, 0x00, 0x00 }},
  19.281 +{{ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.282 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x00, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.283 +{{ 0x00, 0x1c, 0x36, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.284 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.285 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.286 +{{ 0x00, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x36, 0x36, 0x3c, 0x38, 0x00, 0x00, 0x00, 0x00 }},
  19.287 +{{ 0x00, 0x1b, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.288 +{{ 0x00, 0x0e, 0x1b, 0x0c, 0x06, 0x13, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.289 +{{ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.290 +{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }},
  19.291 +};
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/tools/ioemu/gui/Makefile	Mon Jan 17 16:03:22 2005 +0000
    20.3 @@ -0,0 +1,12 @@
    20.4 +TOPDIR= ..
    20.5 +CXXFLAGS=-I. -I../include -I..
    20.6 +OBJS= gui.o keymap.o siminterface.o textconfig.o x.o
    20.7 +
    20.8 +all: libgui.a
    20.9 +
   20.10 +libgui.a: $(OBJS)
   20.11 +	$(AR) $(ARFLAGS) $@ $(OBJS)
   20.12 +
   20.13 +include $(TOPDIR)/mk/helix.mk
   20.14 +
   20.15 +install:: all
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/tools/ioemu/gui/Makefile.in	Mon Jan 17 16:03:22 2005 +0000
    21.3 @@ -0,0 +1,561 @@
    21.4 +# Copyright (C) 2002  MandrakeSoft S.A.
    21.5 +#
    21.6 +#   MandrakeSoft S.A.
    21.7 +#   43, rue d'Aboukir
    21.8 +#   75002 Paris - France
    21.9 +#   http://www.linux-mandrake.com/
   21.10 +#   http://www.mandrakesoft.com/
   21.11 +#
   21.12 +# This library is free software; you can redistribute it and/or
   21.13 +# modify it under the terms of the GNU Lesser General Public
   21.14 +# License as published by the Free Software Foundation; either
   21.15 +# version 2 of the License, or (at your option) any later version.
   21.16 +#
   21.17 +# This library is distributed in the hope that it will be useful,
   21.18 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
   21.19 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   21.20 +# Lesser General Public License for more details.
   21.21 +#
   21.22 +# You should have received a copy of the GNU Lesser General Public
   21.23 +# License along with this library; if not, write to the Free Software
   21.24 +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   21.25 +
   21.26 +# Makefile for the gui component of bochs
   21.27 +
   21.28 +
   21.29 +@SUFFIX_LINE@
   21.30 +
   21.31 +prefix          = @prefix@
   21.32 +exec_prefix     = @exec_prefix@
   21.33 +srcdir          = @srcdir@
   21.34 +VPATH = @srcdir@
   21.35 +bindir          = @bindir@
   21.36 +libdir          = @libdir@
   21.37 +mandir          = @mandir@
   21.38 +man1dir         = $(mandir)/man1
   21.39 +man5dir         = $(mandir)/man5
   21.40 +docdir          = $(prefix)/share/doc/bochs
   21.41 +sharedir        = $(prefix)/share/bochs
   21.42 +top_builddir    = ..
   21.43 +top_srcdir      = @top_srcdir@
   21.44 +
   21.45 +SHELL = /bin/sh
   21.46 +
   21.47 +@SET_MAKE@
   21.48 +
   21.49 +CXX = @CXX@
   21.50 +CXXFLAGS = $(BX_INCDIRS) @CXXFLAGS@  @GUI_CXXFLAGS@
   21.51 +LOCAL_CXXFLAGS =
   21.52 +LDFLAGS = @LDFLAGS@
   21.53 +LIBS = @LIBS@
   21.54 +X_CFLAGS = @X_CFLAGS@
   21.55 +RANLIB = @RANLIB@
   21.56 +PLUGIN_PATH=@libdir@
   21.57 +top_builddir    = ..
   21.58 +LIBTOOL=@LIBTOOL@
   21.59 +WIN32_DLL_IMPORT_LIBRARY=../dllexports.a
   21.60 +BX_INCDIRS = -I.. -I$(srcdir)/.. -I../iodev -I$(srcdir)/../iodev -I../@INSTRUMENT_DIR@ -I$(srcdir)/../@INSTRUMENT_DIR@
   21.61 +
   21.62 +GUI_OBJS_X11  = x.o
   21.63 +GUI_OBJS_SDL = sdl.o
   21.64 +GUI_OBJS_SVGA = svga.o
   21.65 +GUI_OBJS_BEOS = beos.o
   21.66 +GUI_OBJS_WIN32 = win32.o
   21.67 +GUI_OBJS_MACOS = macintosh.o
   21.68 +GUI_OBJS_CARBON = carbon.o
   21.69 +GUI_OBJS_NOGUI = nogui.o
   21.70 +GUI_OBJS_TERM  = term.o
   21.71 +GUI_OBJS_RFB = rfb.o
   21.72 +GUI_OBJS_AMIGAOS = amigaos.o
   21.73 +GUI_OBJS_WX = wx.o
   21.74 +GUI_OBJS_WX_SUPPORT = wxmain.o wxdialog.o
   21.75 +OBJS_THAT_CANNOT_BE_PLUGINS = keymap.o gui.o siminterface.o textconfig.o @DIALOG_OBJS@
   21.76 +OBJS_THAT_CAN_BE_PLUGINS = @GUI_OBJS@
   21.77 +
   21.78 +X_LIBS = @X_LIBS@
   21.79 +X_PRE_LIBS = @X_PRE_LIBS@
   21.80 +GUI_LINK_OPTS_X = $(X_LIBS) $(X_PRE_LIBS) -lX11 -lXpm
   21.81 +GUI_LINK_OPTS_SDL = `sdl-config --cflags --libs`
   21.82 +GUI_LINK_OPTS_SVGA =  -lvga -lvgagl
   21.83 +GUI_LINK_OPTS_BEOS = -lbe
   21.84 +GUI_LINK_OPTS_RFB = @RFB_LIBS@
   21.85 +GUI_LINK_OPTS_AMIGAOS = 
   21.86 +GUI_LINK_OPTS_WIN32 = -luser32 -lgdi32 -lcomdlg32 -lcomctl32
   21.87 +GUI_LINK_OPTS_WIN32_VCPP = user32.lib gdi32.lib winmm.lib \
   21.88 +  comdlg32.lib comctl32.lib wsock32.lib
   21.89 +GUI_LINK_OPTS_MACOS =
   21.90 +GUI_LINK_OPTS_CARBON = -framework Carbon
   21.91 +GUI_LINK_OPTS_NOGUI =
   21.92 +GUI_LINK_OPTS_TERM = @GUI_LINK_OPTS_TERM@
   21.93 +GUI_LINK_OPTS_WX = @GUI_LINK_OPTS_WX@
   21.94 +GUI_LINK_OPTS = @GUI_LINK_OPTS@  @DEVICE_LINK_OPTS@
   21.95 +
   21.96 +NONPLUGIN_OBJS = @GUI_NON_PLUGIN_OBJS@
   21.97 +PLUGIN_OBJS = @GUI_PLUGIN_OBJS@
   21.98 +
   21.99 +#
  21.100 +# -------- end configurable options --------------------------
  21.101 +#
  21.102 +
  21.103 +all: libgui.a 
  21.104 +
  21.105 +plugins: $(PLUGIN_OBJS:@PLUGIN_LIBNAME_TRANSFORMATION@)
  21.106 +
  21.107 +libgui.a: $(NONPLUGIN_OBJS)
  21.108 +	@RMCOMMAND@ libgui.a
  21.109 +	@MAKELIB@ $(NONPLUGIN_OBJS)
  21.110 +	@RANLIB@ libgui.a
  21.111 +
  21.112 +# standard compile rule for C++ files
  21.113 +.@CPP_SUFFIX@.o:
  21.114 +	$(CXX) @DASH@c  $(CXXFLAGS) $(LOCAL_CXXFLAGS) @CXXFP@$< @OFP@$@
  21.115 +
  21.116 +##### building plugins with libtool
  21.117 +%.lo: %.@CPP_SUFFIX@
  21.118 +	$(LIBTOOL) --mode=compile $(CXX) -c $(CXXFLAGS) $(LOCAL_CXXFLAGS) $< -o $@
  21.119 +
  21.120 +libbx_%.la: %.lo
  21.121 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH)
  21.122 +
  21.123 +libbx_x.la: x.lo
  21.124 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_X)
  21.125 +
  21.126 +libbx_sdl.la: sdl.lo
  21.127 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_SDL)
  21.128 +
  21.129 +libbx_svga.la: svga.lo
  21.130 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_SVGA)
  21.131 +
  21.132 +libbx_beos.la: beos.lo
  21.133 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_BEOS)
  21.134 +
  21.135 +libbx_rfb.la: rfb.lo
  21.136 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_RFB)
  21.137 +
  21.138 +libbx_amigaos.la: amigaos.lo
  21.139 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_AMIGAOS)
  21.140 +
  21.141 +libbx_win32.la: win32.lo
  21.142 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_WIN32)
  21.143 +
  21.144 +libbx_macos.la: macos.lo
  21.145 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_MACOS)
  21.146 +
  21.147 +libbx_carbon.la: carbon.lo
  21.148 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_CARBON)
  21.149 +
  21.150 +libbx_nogui.la: nogui.lo
  21.151 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_NOGUI)
  21.152 +
  21.153 +libbx_term.la: term.lo
  21.154 +	$(LIBTOOL) --mode=link $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) $(GUI_LINK_OPTS_TERM)
  21.155 +
  21.156 +# special link rules for plugins that require more than one object file
  21.157 +libbx_wx.la: $(GUI_OBJS_WX:.o=.lo) $(GUI_OBJS_WX_SUPPORT:.o=.lo)
  21.158 +	$(LIBTOOL) --mode=link $(CXX) -module $(GUI_OBJS_WX:.o=.lo) $(GUI_OBJS_WX_SUPPORT:.o=.lo) -o libbx_wx.la -rpath $(PLUGIN_PATH)  $(GUI_LINK_OPTS_WX)
  21.159 +
  21.160 +#### building DLLs for win32  (tested on cygwin only)
  21.161 +bx_%.dll: %.o
  21.162 +	$(CXX) $(CXXFLAGS) -shared -o $@ $< $(WIN32_DLL_IMPORT_LIBRARY)  $(GUI_LINK_OPTS_WIN32)
  21.163 +
  21.164 +bx_wx.dll: $(GUI_OBJS_WX) $(GUI_OBJS_WX_SUPPORT)
  21.165 +	$(CXX) $(CXXFLAGS) -shared -o bx_wx.dll $(GUI_OBJS_WX) $(GUI_OBJS_WX_SUPPORT) $(WIN32_DLL_IMPORT_LIBRARY) `wx-config --libs` -luser32 -lgdi32 -lcomdlg32 -lcomctl32
  21.166 +
  21.167 +bx_sdl.dll: $(GUI_OBJS_SDL) 
  21.168 +	$(CXX) $(CXXFLAGS) -shared -o bx_sdl.dll $(GUI_OBJS_SDL) $(WIN32_DLL_IMPORT_LIBRARY) $(GUI_LINK_OPTS_SDL)
  21.169 +
  21.170 +bx_rfb.dll: $(GUI_OBJS_RFB) 
  21.171 +	$(CXX) $(CXXFLAGS) -shared -o bx_rfb.dll $(GUI_OBJS_RFB) $(WIN32_DLL_IMPORT_LIBRARY) $(GUI_LINK_OPTS_RFB)
  21.172 +
  21.173 +# no need to build DLLs for beos.o
  21.174 +# no need to build DLLs for x.o
  21.175 +
  21.176 +##### end DLL section
  21.177 +
  21.178 +clean:
  21.179 +	@RMCOMMAND@ -rf .libs *.la *.a *.lo *.o *.dll
  21.180 +
  21.181 +dist-clean: clean
  21.182 +	@RMCOMMAND@ Makefile
  21.183 +
  21.184 +###########################################
  21.185 +# all other dependencies generated by
  21.186 +#  gcc -MM -I.. -I../instrument/stubs `wx-config --cxxflags` *.cc | 
  21.187 +#     sed -e 's/\.cc/.@CPP_SUFFIX@/g'
  21.188 +#  gcc -MM -I.. -I../instrument/stubs `wx-config --cxxflags` *.cc | \
  21.189 +#     sed -e 's/\.cc/.@CPP_SUFFIX@/g' -e 's/\.o:/.lo:/g'
  21.190 +#
  21.191 +# This means that every source file is listed twice, once with a .o rule
  21.192 +# and then again with an identical .lo rule.  The .lo rules are used when
  21.193 +# building plugins.
  21.194 +###########################################
  21.195 +amigaos.o: amigaos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
  21.196 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.197 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.198 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.199 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.200 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.201 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.202 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.203 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.204 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.205 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
  21.206 + icon_bochs.h amigagui.h
  21.207 +beos.o: beos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.208 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.209 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.210 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.211 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.212 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.213 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.214 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.215 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.216 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.217 + ../instrument/stubs/instrument.h ../font/vga.bitmap.h
  21.218 +carbon.o: carbon.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.219 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.220 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.221 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.222 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.223 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.224 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.225 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.226 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.227 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.228 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
  21.229 +gui.o: gui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.230 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.231 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.232 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.233 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.234 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.235 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.236 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.237 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.238 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.239 + ../instrument/stubs/instrument.h ../gui/bitmaps/floppya.h \
  21.240 + ../gui/bitmaps/floppyb.h ../gui/bitmaps/mouse.h \
  21.241 + ../gui/bitmaps/reset.h ../gui/bitmaps/power.h \
  21.242 + ../gui/bitmaps/snapshot.h ../gui/bitmaps/copy.h \
  21.243 + ../gui/bitmaps/paste.h ../gui/bitmaps/configbutton.h \
  21.244 + ../gui/bitmaps/cdromd.h ../gui/bitmaps/userbutton.h
  21.245 +keymap.o: keymap.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.246 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.247 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.248 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.249 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.250 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.251 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.252 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.253 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.254 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.255 + ../instrument/stubs/instrument.h
  21.256 +macintosh.o: macintosh.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
  21.257 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.258 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.259 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.260 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.261 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.262 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.263 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.264 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.265 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.266 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
  21.267 + icon_bochs.h ../font/vga.bitmap.h
  21.268 +nogui.o: nogui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.269 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.270 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.271 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.272 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.273 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.274 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.275 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.276 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.277 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.278 + ../instrument/stubs/instrument.h icon_bochs.h
  21.279 +rfb.o: rfb.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.280 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.281 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.282 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.283 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.284 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.285 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.286 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.287 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.288 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.289 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h \
  21.290 + rfbproto.h
  21.291 +sdl.o: sdl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.292 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.293 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.294 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.295 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.296 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.297 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.298 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.299 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.300 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.301 + ../instrument/stubs/instrument.h icon_bochs.h sdl.h sdlkeys.h
  21.302 +siminterface.o: siminterface.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
  21.303 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.304 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.305 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.306 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.307 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.308 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.309 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.310 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.311 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.312 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h
  21.313 +svga.o: svga.@CPP_SUFFIX@ ../font/vga.bitmap.h ../bochs.h ../config.h ../osdep.h \
  21.314 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.315 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.316 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.317 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.318 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.319 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.320 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.321 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.322 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.323 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
  21.324 + icon_bochs.h
  21.325 +term.o: term.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.326 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.327 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.328 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.329 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.330 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.331 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.332 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.333 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.334 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.335 + ../instrument/stubs/instrument.h icon_bochs.h
  21.336 +textconfig.o: textconfig.@CPP_SUFFIX@ ../config.h ../osdep.h textconfig.h \
  21.337 + siminterface.h ../extplugin.h ../ltdl.h
  21.338 +win32.o: win32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.339 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.340 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.341 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.342 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.343 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.344 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.345 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.346 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.347 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.348 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
  21.349 +wx.o: wx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.350 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.351 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.352 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.353 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.354 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.355 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.356 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.357 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.358 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.359 + ../instrument/stubs/instrument.h ../gui/icon_bochs.h \
  21.360 + ../font/vga.bitmap.h wxmain.h
  21.361 +wxdialog.o: wxdialog.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
  21.362 + ../bxversion.h wxdialog.h wxmain.h
  21.363 +wxmain.o: wxmain.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
  21.364 + ../bxversion.h wxdialog.h wxmain.h ../extplugin.h ../ltdl.h \
  21.365 + bitmaps/cdromd.xpm bitmaps/copy.xpm bitmaps/floppya.xpm \
  21.366 + bitmaps/floppyb.xpm bitmaps/paste.xpm bitmaps/power.xpm \
  21.367 + bitmaps/reset.xpm bitmaps/snapshot.xpm bitmaps/mouse.xpm \
  21.368 + bitmaps/userbutton.xpm
  21.369 +x.o: x.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.370 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.371 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.372 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.373 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.374 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.375 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.376 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.377 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.378 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.379 + ../instrument/stubs/instrument.h icon_bochs.h
  21.380 +amigaos.lo: amigaos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
  21.381 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.382 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.383 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.384 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.385 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.386 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.387 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.388 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.389 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.390 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
  21.391 + icon_bochs.h amigagui.h
  21.392 +beos.lo: beos.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.393 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.394 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.395 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.396 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.397 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.398 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.399 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.400 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.401 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.402 + ../instrument/stubs/instrument.h ../font/vga.bitmap.h
  21.403 +carbon.lo: carbon.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.404 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.405 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.406 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.407 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.408 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.409 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.410 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.411 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.412 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.413 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
  21.414 +gui.lo: gui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.415 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.416 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.417 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.418 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.419 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.420 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.421 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.422 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.423 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.424 + ../instrument/stubs/instrument.h ../gui/bitmaps/floppya.h \
  21.425 + ../gui/bitmaps/floppyb.h ../gui/bitmaps/mouse.h \
  21.426 + ../gui/bitmaps/reset.h ../gui/bitmaps/power.h \
  21.427 + ../gui/bitmaps/snapshot.h ../gui/bitmaps/copy.h \
  21.428 + ../gui/bitmaps/paste.h ../gui/bitmaps/configbutton.h \
  21.429 + ../gui/bitmaps/cdromd.h ../gui/bitmaps/userbutton.h
  21.430 +keymap.lo: keymap.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.431 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.432 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.433 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.434 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.435 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.436 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.437 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.438 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.439 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.440 + ../instrument/stubs/instrument.h
  21.441 +macintosh.lo: macintosh.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
  21.442 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.443 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.444 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.445 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.446 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.447 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.448 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.449 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.450 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.451 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
  21.452 + icon_bochs.h ../font/vga.bitmap.h
  21.453 +nogui.lo: nogui.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.454 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.455 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.456 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.457 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.458 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.459 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.460 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.461 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.462 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.463 + ../instrument/stubs/instrument.h icon_bochs.h
  21.464 +rfb.lo: rfb.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.465 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.466 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.467 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.468 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.469 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.470 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.471 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.472 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.473 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.474 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h \
  21.475 + rfbproto.h
  21.476 +sdl.lo: sdl.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.477 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.478 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.479 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.480 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.481 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.482 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.483 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.484 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.485 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.486 + ../instrument/stubs/instrument.h icon_bochs.h sdl.h sdlkeys.h
  21.487 +siminterface.lo: siminterface.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h \
  21.488 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.489 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.490 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.491 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.492 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.493 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.494 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.495 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.496 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.497 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h
  21.498 +svga.lo: svga.@CPP_SUFFIX@ ../font/vga.bitmap.h ../bochs.h ../config.h ../osdep.h \
  21.499 + ../bx_debug/debug.h ../bxversion.h ../gui/siminterface.h ../state_file.h \
  21.500 + ../cpu/cpu.h ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h \
  21.501 + ../pc_system.h ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h \
  21.502 + ../gui/textconfig.h ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h \
  21.503 + ../iodev/biosdev.h ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h \
  21.504 + ../iodev/harddrv.h ../iodev/cdrom.h ../iodev/keyboard.h \
  21.505 + ../iodev/parallel.h ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h \
  21.506 + ../iodev/pit82c54.h ../iodev/serial.h ../iodev/unmapped.h \
  21.507 + ../iodev/eth.h ../iodev/ne2k.h ../iodev/guest2host.h \
  21.508 + ../iodev/slowdown_timer.h ../instrument/stubs/instrument.h \
  21.509 + icon_bochs.h
  21.510 +term.lo: term.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.511 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.512 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.513 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.514 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.515 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.516 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.517 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.518 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.519 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.520 + ../instrument/stubs/instrument.h icon_bochs.h
  21.521 +textconfig.lo: textconfig.@CPP_SUFFIX@ ../config.h ../osdep.h textconfig.h \
  21.522 + siminterface.h ../extplugin.h ../ltdl.h
  21.523 +win32.lo: win32.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.524 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.525 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.526 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.527 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.528 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.529 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.530 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.531 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.532 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.533 + ../instrument/stubs/instrument.h icon_bochs.h ../font/vga.bitmap.h
  21.534 +wx.lo: wx.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.535 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.536 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.537 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.538 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.539 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.540 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.541 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.542 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.543 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.544 + ../instrument/stubs/instrument.h ../gui/icon_bochs.h \
  21.545 + ../font/vga.bitmap.h wxdialog.h wxmain.h
  21.546 +wxdialog.lo: wxdialog.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
  21.547 + ../bxversion.h wxdialog.h wxmain.h
  21.548 +wxmain.lo: wxmain.@CPP_SUFFIX@ ../config.h ../osdep.h ../gui/siminterface.h \
  21.549 + ../bxversion.h wxdialog.h wxmain.h ../extplugin.h ../ltdl.h \
  21.550 + bitmaps/cdromd.xpm bitmaps/copy.xpm bitmaps/floppya.xpm \
  21.551 + bitmaps/floppyb.xpm bitmaps/paste.xpm bitmaps/power.xpm \
  21.552 + bitmaps/reset.xpm bitmaps/snapshot.xpm bitmaps/mouse.xpm \
  21.553 + bitmaps/userbutton.xpm
  21.554 +x.lo: x.@CPP_SUFFIX@ ../bochs.h ../config.h ../osdep.h ../bx_debug/debug.h \
  21.555 + ../bxversion.h ../gui/siminterface.h ../state_file.h ../cpu/cpu.h \
  21.556 + ../cpu/lazy_flags.h ../cpu/i387.h ../memory/memory.h ../pc_system.h \
  21.557 + ../plugin.h ../extplugin.h ../ltdl.h ../gui/gui.h ../gui/textconfig.h \
  21.558 + ../gui/keymap.h ../iodev/iodev.h ../iodev/vga.h ../iodev/biosdev.h \
  21.559 + ../iodev/cmos.h ../iodev/dma.h ../iodev/floppy.h ../iodev/harddrv.h \
  21.560 + ../iodev/cdrom.h ../iodev/keyboard.h ../iodev/parallel.h \
  21.561 + ../iodev/pic.h ../iodev/pit.h ../iodev/pit_wrap.h ../iodev/pit82c54.h \
  21.562 + ../iodev/serial.h ../iodev/unmapped.h ../iodev/eth.h ../iodev/ne2k.h \
  21.563 + ../iodev/guest2host.h ../iodev/slowdown_timer.h \
  21.564 + ../instrument/stubs/instrument.h icon_bochs.h
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/tools/ioemu/gui/bitmaps/cdromd.h	Mon Jan 17 16:03:22 2005 +0000
    22.3 @@ -0,0 +1,34 @@
    22.4 +/////////////////////////////////////////////////////////////////////////
    22.5 +// $Id: cdromd.h,v 1.1 2002/01/31 21:16:52 vruppert Exp $
    22.6 +/////////////////////////////////////////////////////////////////////////
    22.7 +//
    22.8 +#define BX_CDROMD_BMAP_X 32
    22.9 +#define BX_CDROMD_BMAP_Y 32
   22.10 +
   22.11 +static const unsigned char bx_cdromd_bmap[(BX_CONFIG_BMAP_X * BX_CONFIG_BMAP_Y)/8] = {
   22.12 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0e, 0x00, 0x00, 0x10, 0x12, 0x00, 
   22.13 +  0x00, 0x10, 0x12, 0x00, 0x00, 0x10, 0x12, 0x00, 0x00, 0x60, 0x0e, 0x00, 
   22.14 +  0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x0c, 0x30, 0x00, 
   22.15 +  0x00, 0xe2, 0x47, 0x00, 0x00, 0x19, 0x98, 0x00, 0x80, 0xe6, 0x67, 0x01, 
   22.16 +  0x40, 0x19, 0x98, 0x02, 0x20, 0xe5, 0xa7, 0x04, 0xa0, 0x12, 0x48, 0x05, 
   22.17 +  0x90, 0xca, 0x53, 0x09, 0x50, 0x25, 0xa4, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 
   22.18 +  0x50, 0x15, 0xa8, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 
   22.19 +  0x50, 0x25, 0xa4, 0x0a, 0x90, 0xca, 0x53, 0x09, 0xa0, 0x12, 0x48, 0x05, 
   22.20 +  0x20, 0xe5, 0xa7, 0x04, 0x40, 0x19, 0x98, 0x02, 0x80, 0xe6, 0x67, 0x01, 
   22.21 +  0x00, 0x19, 0x98, 0x00, 0x00, 0xe2, 0x47, 0x00, 0x00, 0x0c, 0x30, 0x00, 
   22.22 +  0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00
   22.23 +  };
   22.24 +
   22.25 +static const unsigned char bx_cdromd_eject_bmap[(BX_CONFIG_BMAP_X * BX_CONFIG_BMAP_Y)/8] = {
   22.26 +  0x01, 0x00, 0x00, 0x80, 0x02, 0x60, 0x0e, 0x40, 0x04, 0x10, 0x12, 0x20, 
   22.27 +  0x08, 0x10, 0x12, 0x10, 0x10, 0x10, 0x12, 0x08, 0x20, 0x60, 0x0e, 0x04, 
   22.28 +  0x40, 0x00, 0x00, 0x02, 0x80, 0xf0, 0x0f, 0x01, 0x00, 0x0d, 0xb0, 0x00, 
   22.29 +  0x00, 0xe2, 0x47, 0x00, 0x00, 0x1d, 0xb8, 0x00, 0x80, 0xee, 0x77, 0x01, 
   22.30 +  0x40, 0x19, 0x98, 0x02, 0x20, 0xe5, 0xa7, 0x04, 0xa0, 0x52, 0x4a, 0x05, 
   22.31 +  0x90, 0xca, 0x53, 0x09, 0x50, 0xa5, 0xa5, 0x0a, 0x50, 0x55, 0xaa, 0x0a, 
   22.32 +  0x50, 0x35, 0xac, 0x0a, 0x50, 0x15, 0xa8, 0x0a, 0x50, 0x1d, 0xb8, 0x0a, 
   22.33 +  0x50, 0x25, 0xa4, 0x0a, 0x90, 0xca, 0x53, 0x09, 0xa0, 0x13, 0xc8, 0x05, 
   22.34 +  0xa0, 0xe5, 0xa7, 0x05, 0x40, 0x19, 0x98, 0x02, 0xa0, 0xe6, 0x67, 0x05, 
   22.35 +  0x10, 0x19, 0x98, 0x08, 0x08, 0xe2, 0x47, 0x10, 0x04, 0x0c, 0x30, 0x20, 
   22.36 +  0x02, 0xf0, 0x0f, 0x40, 0x01, 0x00, 0x00, 0x80
   22.37 +  };
    23.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.2 +++ b/tools/ioemu/gui/bitmaps/cdromd.xpm	Mon Jan 17 16:03:22 2005 +0000
    23.3 @@ -0,0 +1,41 @@
    23.4 +/* XPM */
    23.5 +static char *cdromd_xpm[] = {
    23.6 +/* width height num_colors chars_per_pixel */
    23.7 +"    32    32        2            1",
    23.8 +/* colors */
    23.9 +". c None",
   23.10 +"# c #000000",
   23.11 +/* pixels */
   23.12 +"................................",
   23.13 +".............##..###............",
   23.14 +"............#....#..#...........",
   23.15 +"............#....#..#...........",
   23.16 +"............#....#..#...........",
   23.17 +".............##..###............",
   23.18 +"................................",
   23.19 +"............########............",
   23.20 +"..........##........##..........",
   23.21 +".........#...######...#.........",
   23.22 +"........#..##......##..#........",
   23.23 +".......#.##..######..##.#.......",
   23.24 +"......#.#..##......##..#.#......",
   23.25 +".....#..#.#..######..#.#..#.....",
   23.26 +".....#.#.#..#......#..#.#.#.....",
   23.27 +"....#..#.#.#..####..#.#.#..#....",
   23.28 +"....#.#.#.#..#....#..#.#.#.#....",
   23.29 +"....#.#.#.#.#......#.#.#.#.#....",
   23.30 +"....#.#.#.#.#......#.#.#.#.#....",
   23.31 +"....#.#.#.#.#......#.#.#.#.#....",
   23.32 +"....#.#.#.#.#......#.#.#.#.#....",
   23.33 +"....#.#.#.#..#....#..#.#.#.#....",
   23.34 +"....#..#.#.#..####..#.#.#..#....",
   23.35 +".....#.#.#..#......#..#.#.#.....",
   23.36 +".....#..#.#..######..#.#..#.....",
   23.37 +"......#.#..##......##..#.#......",
   23.38 +".......#.##..######..##.#.......",
   23.39 +"........#..##......##..#........",
   23.40 +".........#...######...#.........",
   23.41 +"..........##........##..........",
   23.42 +"............########............",
   23.43 +"................................"
   23.44 +};
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/tools/ioemu/gui/bitmaps/configbutton.h	Mon Jan 17 16:03:22 2005 +0000
    24.3 @@ -0,0 +1,16 @@
    24.4 +#define BX_CONFIG_BMAP_X 32
    24.5 +#define BX_CONFIG_BMAP_Y 32
    24.6 +
    24.7 +static const unsigned char bx_config_bmap[(BX_CONFIG_BMAP_X * BX_CONFIG_BMAP_Y)/8] = {
    24.8 +  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x01, 0xfc, 0x7f, 0xc0, 0x03, 
    24.9 +  0xfc, 0xff, 0xc1, 0x03, 0xfc, 0xff, 0xc1, 0x03, 0xfc, 0x7f, 0xc0, 0x03, 
   24.10 +  0x84, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
   24.11 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
   24.12 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
   24.13 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xc0, 0x03, 
   24.14 +  0x80, 0x07, 0xc0, 0x03, 0x80, 0x07, 0xe0, 0x07, 0x80, 0x07, 0xf0, 0x0f, 
   24.15 +  0x80, 0x07, 0x70, 0x0e, 0x80, 0x07, 0x30, 0x0c, 0x80, 0x07, 0x30, 0x0c, 
   24.16 +  0x80, 0x07, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x38, 0x27, 0xba, 0x1c, 
   24.17 +  0x84, 0x68, 0x8a, 0x02, 0x84, 0xa8, 0xba, 0x32, 0x84, 0x28, 0x8b, 0x22, 
   24.18 +  0x38, 0x27, 0x8a, 0x1c, 0x00, 0x00, 0x00, 0x00
   24.19 +  };
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/tools/ioemu/gui/bitmaps/configbutton.xpm	Mon Jan 17 16:03:22 2005 +0000
    25.3 @@ -0,0 +1,41 @@
    25.4 +/* XPM */
    25.5 +static char *configbutton_xpm[] = {
    25.6 +/* width height num_colors chars_per_pixel */
    25.7 +"    32    32        2            1",
    25.8 +/* colors */
    25.9 +". c None",
   25.10 +"# c #000000",
   25.11 +/* pixels */
   25.12 +"................................",
   25.13 +"..#....................##.......",
   25.14 +"..#############.......####......",
   25.15 +"..###############.....####......",
   25.16 +"..###############.....####......",
   25.17 +"..#############.......####......",
   25.18 +"..#....####...........####......",
   25.19 +".......####...........####......",
   25.20 +".......####...........####......",
   25.21 +".......####...........####......",
   25.22 +".......####...........####......",
   25.23 +".......####...........####......",
   25.24 +".......####...........####......",
   25.25 +".......####...........####......",
   25.26 +".......####...........####......",
   25.27 +".......####...........####......",
   25.28 +".......####...........####......",
   25.29 +".......####...........####......",
   25.30 +".......####...........####......",
   25.31 +".......####..........######.....",
   25.32 +".......####.........########....",
   25.33 +".......####.........###..###....",
   25.34 +".......####.........##....##....",
   25.35 +".......####.........##....##....",
   25.36 +".......####..........#....#.....",
   25.37 +"................................",
   25.38 +"...###..###..#...#.###.#..###...",
   25.39 +"..#....#...#.##..#.#...#.#......",
   25.40 +"..#....#...#.#.#.#.###.#.#..##..",
   25.41 +"..#....#...#.#..##.#...#.#...#..",
   25.42 +"...###..###..#...#.#...#..###...",
   25.43 +"................................"
   25.44 +};
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/tools/ioemu/gui/bitmaps/copy.h	Mon Jan 17 16:03:22 2005 +0000
    26.3 @@ -0,0 +1,18 @@
    26.4 +/////////////////////////////////////////////////////////////////////////
    26.5 +// $Id: copy.h,v 1.1 2002/03/11 15:04:58 bdenney Exp $
    26.6 +/////////////////////////////////////////////////////////////////////////
    26.7 +#define BX_COPY_BMAP_X 32
    26.8 +#define BX_COPY_BMAP_Y 32
    26.9 +
   26.10 +static unsigned char bx_copy_bmap[(BX_COPY_BMAP_X*BX_COPY_BMAP_Y)] = {
   26.11 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
   26.12 +  0x80, 0x60, 0x4e, 0x02, 0x80, 0x90, 0x52, 0x02, 0x80, 0x90, 0x52, 0x02,
   26.13 +  0x00, 0x6f, 0x8e, 0x03, 0x00, 0x00, 0x02, 0x02, 0xf8, 0x3f, 0x02, 0x02,
   26.14 +  0x08, 0x20, 0xc0, 0x01, 0xe8, 0x2b, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00,
   26.15 +  0xe8, 0x2e, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0xe8, 0x39, 0x00, 0x00,
   26.16 +  0x08, 0x24, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0xe8, 0xaf, 0xff, 0x03,
   26.17 +  0x08, 0xa0, 0x00, 0x02, 0xf8, 0xbf, 0xbe, 0x02, 0x00, 0x80, 0x00, 0x02,
   26.18 +  0x80, 0x88, 0xee, 0x02, 0x80, 0x90, 0x00, 0x02, 0x00, 0xbf, 0x9e, 0x03,
   26.19 +  0x00, 0x90, 0x40, 0x02, 0x00, 0x88, 0x08, 0x02, 0x00, 0x80, 0xfe, 0x02,
   26.20 +  0x00, 0x80, 0x00, 0x02, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00,
   26.21 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
    27.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.2 +++ b/tools/ioemu/gui/bitmaps/copy.xpm	Mon Jan 17 16:03:22 2005 +0000
    27.3 @@ -0,0 +1,41 @@
    27.4 +/* XPM */
    27.5 +static char *copy_xpm[] = {
    27.6 +/* width height num_colors chars_per_pixel */
    27.7 +"    32    32        2            1",
    27.8 +/* colors */
    27.9 +". c None",
   27.10 +"# c #000000",
   27.11 +/* pixels */
   27.12 +"................................",
   27.13 +"........####....................",
   27.14 +".......#........................",
   27.15 +".......#.....##..###..#..#......",
   27.16 +".......#....#..#.#..#.#..#......",
   27.17 +".......#....#..#.#..#.#..#......",
   27.18 +"........####.##..###...###......",
   27.19 +".................#.......#......",
   27.20 +"...###########...#.......#......",
   27.21 +"...#.........#........###.......",
   27.22 +"...#.#####.#.#..................",
   27.23 +"...#.........#..................",
   27.24 +"...#.###.###.#..................",
   27.25 +"...#.........#..................",
   27.26 +"...#.####..###..................",
   27.27 +"...#......#..#..................",
   27.28 +"...#...#.....#..................",
   27.29 +"...#.#######.#.###########......",
   27.30 +"...#.........#.#.........#......",
   27.31 +"...###########.#.#####.#.#......",
   27.32 +"...............#.........#......",
   27.33 +".......#...#...#.###.###.#......",
   27.34 +".......#....#..#.........#......",
   27.35 +"........######.#.####..###......",
   27.36 +"............#..#......#..#......",
   27.37 +"...........#...#...#.....#......",
   27.38 +"...............#.#######.#......",
   27.39 +"...............#.........#......",
   27.40 +"...............###########......",
   27.41 +"................................",
   27.42 +"................................",
   27.43 +"................................"
   27.44 +};
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/tools/ioemu/gui/bitmaps/floppya.h	Mon Jan 17 16:03:22 2005 +0000
    28.3 @@ -0,0 +1,34 @@
    28.4 +/////////////////////////////////////////////////////////////////////////
    28.5 +// $Id: floppya.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    28.6 +/////////////////////////////////////////////////////////////////////////
    28.7 +//
    28.8 +#define BX_FLOPPYA_BMAP_X 32
    28.9 +#define BX_FLOPPYA_BMAP_Y 32
   28.10 +
   28.11 +static const unsigned char bx_floppya_bmap[(BX_FLOPPYA_BMAP_X * BX_FLOPPYA_BMAP_Y)/8] = {
   28.12 +   0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x11, 0x00,
   28.13 +   0x00, 0xc0, 0x01, 0x00, 0x00, 0x60, 0x13, 0x00, 0x00, 0x60, 0x03, 0x00,
   28.14 +   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   28.15 +   0x20, 0xfd, 0xbf, 0x04, 0x20, 0x01, 0x80, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   28.16 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   28.17 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   28.18 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   28.19 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   28.20 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   28.21 +   0xe0, 0xef, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07, 0xc0, 0xef, 0xea, 0x07,
   28.22 +   0x80, 0x57, 0xd5, 0x07, 0x00, 0xaf, 0xea, 0x07
   28.23 +  };
   28.24 +
   28.25 +static const unsigned char bx_floppya_eject_bmap[(BX_FLOPPYA_BMAP_X * BX_FLOPPYA_BMAP_Y)/8] = {
   28.26 +   0x01, 0x80, 0x00, 0x80, 0x02, 0x40, 0x01, 0x40, 0x04, 0x40, 0x11, 0x20,
   28.27 +   0x08, 0xc0, 0x01, 0x10, 0x10, 0x60, 0x13, 0x08, 0x20, 0x60, 0x03, 0x04,
   28.28 +   0x40, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   28.29 +   0x20, 0xff, 0xff, 0x04, 0x20, 0x05, 0xa0, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   28.30 +   0xe0, 0x11, 0x88, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x41, 0x82, 0x07,
   28.31 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x81, 0x81, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   28.32 +   0xe0, 0x21, 0x84, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x09, 0x90, 0x07,
   28.33 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   28.34 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   28.35 +   0xf0, 0xef, 0xea, 0x0f, 0xe8, 0xf7, 0xd5, 0x17, 0xc4, 0xef, 0xea, 0x27,
   28.36 +   0x82, 0x57, 0xd5, 0x47, 0x01, 0xaf, 0xea, 0x87
   28.37 +  };
    29.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.2 +++ b/tools/ioemu/gui/bitmaps/floppya.xpm	Mon Jan 17 16:03:22 2005 +0000
    29.3 @@ -0,0 +1,41 @@
    29.4 +/* XPM */
    29.5 +static char *floppya_xpm[] = {
    29.6 +/* width height num_colors chars_per_pixel */
    29.7 +"    32    32        2            1",
    29.8 +/* colors */
    29.9 +". c None",
   29.10 +"# c #000000",
   29.11 +/* pixels */
   29.12 +"...............#................",
   29.13 +"..............#.#...............",
   29.14 +"..............#.#...#...........",
   29.15 +"..............###...............",
   29.16 +".............##.##..#...........",
   29.17 +".............##.##..............",
   29.18 +"................................",
   29.19 +".....######################.....",
   29.20 +".....####..............####.....",
   29.21 +".....#..#.############.#..#.....",
   29.22 +".....#..#..............#..#.....",
   29.23 +".....####.############.####.....",
   29.24 +".....####..............####.....",
   29.25 +".....####.############.####.....",
   29.26 +".....####..............####.....",
   29.27 +".....####.############.####.....",
   29.28 +".....####..............####.....",
   29.29 +".....####.############.####.....",
   29.30 +".....####..............####.....",
   29.31 +".....####.############.####.....",
   29.32 +".....####..............####.....",
   29.33 +".....######################.....",
   29.34 +".....######################.....",
   29.35 +".....######################.....",
   29.36 +".....######################.....",
   29.37 +".....#######.#.#.#.#.######.....",
   29.38 +".....######.#####.#.#.#####.....",
   29.39 +".....#######.###.#.#.######.....",
   29.40 +".....######.#####.#.#.#####.....",
   29.41 +"......######.###.#.#.######.....",
   29.42 +".......####.#.#.#.#.#.#####.....",
   29.43 +"........####.#.#.#.#.######....."
   29.44 +};
    30.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.2 +++ b/tools/ioemu/gui/bitmaps/floppyb.h	Mon Jan 17 16:03:22 2005 +0000
    30.3 @@ -0,0 +1,34 @@
    30.4 +/////////////////////////////////////////////////////////////////////////
    30.5 +// $Id: floppyb.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    30.6 +/////////////////////////////////////////////////////////////////////////
    30.7 +//
    30.8 +#define BX_FLOPPYB_BMAP_X 32
    30.9 +#define BX_FLOPPYB_BMAP_Y 32
   30.10 +
   30.11 +static const unsigned char bx_floppyb_bmap[(BX_FLOPPYB_BMAP_X * BX_FLOPPYB_BMAP_Y)/8] = {
   30.12 +   0x00, 0xe0, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0xe0, 0x08, 0x00,
   30.13 +   0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 0xe0, 0x00, 0x00,
   30.14 +   0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   30.15 +   0x20, 0xfd, 0xbf, 0x04, 0x20, 0x01, 0x80, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   30.16 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   30.17 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   30.18 +   0xe0, 0x01, 0x80, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x01, 0x80, 0x07,
   30.19 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   30.20 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   30.21 +   0xe0, 0xef, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07, 0xc0, 0xef, 0xea, 0x07,
   30.22 +   0x80, 0x57, 0xd5, 0x07, 0x00, 0xaf, 0xea, 0x07
   30.23 +  };
   30.24 +
   30.25 +static const unsigned char bx_floppyb_eject_bmap[(BX_FLOPPYB_BMAP_X * BX_FLOPPYB_BMAP_Y)/8] = {
   30.26 +   0x01, 0xe0, 0x00, 0x80, 0x02, 0x20, 0x01, 0x40, 0x04, 0xe0, 0x08, 0x20,
   30.27 +   0x08, 0x20, 0x01, 0x10, 0x10, 0x20, 0x09, 0x08, 0x20, 0xe0, 0x00, 0x04,
   30.28 +   0x40, 0x00, 0x00, 0x02, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0x01, 0x80, 0x07,
   30.29 +   0x20, 0xff, 0xff, 0x04, 0x20, 0x05, 0xa0, 0x04, 0xe0, 0xfd, 0xbf, 0x07,
   30.30 +   0xe0, 0x11, 0x88, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x41, 0x82, 0x07,
   30.31 +   0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x81, 0x81, 0x07, 0xe0, 0xfd, 0xbf, 0x07,
   30.32 +   0xe0, 0x21, 0x84, 0x07, 0xe0, 0xfd, 0xbf, 0x07, 0xe0, 0x09, 0x90, 0x07,
   30.33 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0x07,
   30.34 +   0xe0, 0xff, 0xff, 0x07, 0xe0, 0xaf, 0xea, 0x07, 0xe0, 0xf7, 0xd5, 0x07,
   30.35 +   0xf0, 0xef, 0xea, 0x0f, 0xe8, 0xf7, 0xd5, 0x17, 0xc4, 0xef, 0xea, 0x27,
   30.36 +   0x82, 0x57, 0xd5, 0x47, 0x01, 0xaf, 0xea, 0x87
   30.37 +  };
    31.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.2 +++ b/tools/ioemu/gui/bitmaps/floppyb.xpm	Mon Jan 17 16:03:22 2005 +0000
    31.3 @@ -0,0 +1,41 @@
    31.4 +/* XPM */
    31.5 +static char *floppyb_xpm[] = {
    31.6 +/* width height num_colors chars_per_pixel */
    31.7 +"    32    32        2            1",
    31.8 +/* colors */
    31.9 +". c None",
   31.10 +"# c #000000",
   31.11 +/* pixels */
   31.12 +".............###................",
   31.13 +".............#..#...............",
   31.14 +".............###...#............",
   31.15 +".............#..#...............",
   31.16 +".............#..#..#............",
   31.17 +".............###................",
   31.18 +"................................",
   31.19 +".....######################.....",
   31.20 +".....####..............####.....",
   31.21 +".....#..#.############.#..#.....",
   31.22 +".....#..#..............#..#.....",
   31.23 +".....####.############.####.....",
   31.24 +".....####..............####.....",
   31.25 +".....####.############.####.....",
   31.26 +".....####..............####.....",
   31.27 +".....####.############.####.....",
   31.28 +".....####..............####.....",
   31.29 +".....####.############.####.....",
   31.30 +".....####..............####.....",
   31.31 +".....####.############.####.....",
   31.32 +".....####..............####.....",
   31.33 +".....######################.....",
   31.34 +".....######################.....",
   31.35 +".....######################.....",
   31.36 +".....######################.....",
   31.37 +".....#######.#.#.#.#.######.....",
   31.38 +".....######.#####.#.#.#####.....",
   31.39 +".....#######.###.#.#.######.....",
   31.40 +".....######.#####.#.#.#####.....",
   31.41 +"......######.###.#.#.######.....",
   31.42 +".......####.#.#.#.#.#.#####.....",
   31.43 +"........####.#.#.#.#.######....."
   31.44 +};
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/tools/ioemu/gui/bitmaps/mouse.h	Mon Jan 17 16:03:22 2005 +0000
    32.3 @@ -0,0 +1,34 @@
    32.4 +/////////////////////////////////////////////////////////////////////////
    32.5 +// $Id: mouse.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    32.6 +/////////////////////////////////////////////////////////////////////////
    32.7 +//
    32.8 +#define BX_MOUSE_BMAP_X 32
    32.9 +#define BX_MOUSE_BMAP_Y 32
   32.10 +
   32.11 +static unsigned char bx_mouse_bmap[(BX_MOUSE_BMAP_X * BX_MOUSE_BMAP_Y)/8] = {
   32.12 +   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf8, 0x1f, 0x00,
   32.13 +   0x00, 0x0c, 0x30, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x06, 0x40, 0x00,
   32.14 +   0xf8, 0xff, 0xc0, 0x00, 0x0c, 0x80, 0xc1, 0x00, 0x24, 0x22, 0xc1, 0x00,
   32.15 +   0x74, 0x77, 0x81, 0x00, 0x74, 0x77, 0x81, 0x01, 0x74, 0x77, 0x81, 0x01,
   32.16 +   0x74, 0x77, 0x01, 0x01, 0x74, 0x77, 0x01, 0x03, 0x74, 0x77, 0x01, 0x06,
   32.17 +   0x24, 0x22, 0x01, 0x0c, 0x0c, 0x80, 0x01, 0x38, 0x04, 0x00, 0x01, 0x00,
   32.18 +   0x0c, 0x80, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x0c, 0x80, 0x01, 0x00,
   32.19 +   0x04, 0x00, 0x01, 0x00, 0x0c, 0x80, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00,
   32.20 +   0x0c, 0x80, 0x01, 0x00, 0x14, 0x40, 0x01, 0x00, 0x2c, 0xa0, 0x01, 0x00,
   32.21 +   0x54, 0x55, 0x01, 0x00, 0xac, 0xaa, 0x01, 0x00, 0xf8, 0xff, 0x00, 0x00,
   32.22 +   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   32.23 +   };
   32.24 +
   32.25 +static unsigned char bx_nomouse_bmap[(BX_MOUSE_BMAP_X * BX_MOUSE_BMAP_Y)/8] = {
   32.26 +   0x01, 0x00, 0x00, 0x80, 0x02, 0xe0, 0x07, 0x40, 0x04, 0xf8, 0x1f, 0x20,
   32.27 +   0x08, 0x0c, 0x30, 0x10, 0x10, 0x06, 0x60, 0x08, 0x20, 0x06, 0x40, 0x04,
   32.28 +   0xf8, 0xff, 0xc0, 0x02, 0x8c, 0x80, 0xc1, 0x01, 0x24, 0x23, 0xc1, 0x00,
   32.29 +   0x74, 0x77, 0xc1, 0x00, 0x74, 0x77, 0xa1, 0x01, 0x74, 0x7f, 0x91, 0x01,
   32.30 +   0x74, 0x77, 0x09, 0x01, 0x74, 0x77, 0x05, 0x03, 0x74, 0x77, 0x03, 0x06,
   32.31 +   0x24, 0xa2, 0x01, 0x0c, 0x0c, 0x80, 0x01, 0x38, 0x04, 0x40, 0x03, 0x00,
   32.32 +   0x0c, 0xa0, 0x05, 0x00, 0x04, 0x10, 0x09, 0x00, 0x0c, 0x88, 0x11, 0x00,
   32.33 +   0x04, 0x04, 0x21, 0x00, 0x0c, 0x82, 0x41, 0x00, 0x04, 0x01, 0x81, 0x00,
   32.34 +   0x8c, 0x80, 0x01, 0x01, 0x54, 0x40, 0x01, 0x02, 0x2c, 0xa0, 0x01, 0x04,
   32.35 +   0x54, 0x55, 0x01, 0x08, 0xac, 0xaa, 0x01, 0x10, 0xfc, 0xff, 0x00, 0x20,
   32.36 +   0x02, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x80
   32.37 +   };
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/tools/ioemu/gui/bitmaps/mouse.xpm	Mon Jan 17 16:03:22 2005 +0000
    33.3 @@ -0,0 +1,41 @@
    33.4 +/* XPM */
    33.5 +static char *mouse_xpm[] = {
    33.6 +/* width height num_colors chars_per_pixel */
    33.7 +"    32    32        2            1",
    33.8 +/* colors */
    33.9 +". c None",
   33.10 +"# c #000000",
   33.11 +/* pixels */
   33.12 +"................................",
   33.13 +".............######.............",
   33.14 +"...........##########...........",
   33.15 +"..........##........##..........",
   33.16 +".........##..........##.........",
   33.17 +".........##...........#.........",
   33.18 +"...#############......##........",
   33.19 +"..##...........##.....##........",
   33.20 +"..#..#...#...#..#.....##........",
   33.21 +"..#.###.###.###.#......#........",
   33.22 +"..#.###.###.###.#......##.......",
   33.23 +"..#.###.###.###.#......##.......",
   33.24 +"..#.###.###.###.#.......#.......",
   33.25 +"..#.###.###.###.#.......##......",
   33.26 +"..#.###.###.###.#........##.....",
   33.27 +"..#..#...#...#..#.........##....",
   33.28 +"..##...........##..........###..",
   33.29 +"..#.............#...............",
   33.30 +"..##...........##...............",
   33.31 +"..#.............#...............",
   33.32 +"..##...........##...............",
   33.33 +"..#.............#...............",
   33.34 +"..##...........##...............",
   33.35 +"..#.............#...............",
   33.36 +"..##...........##...............",
   33.37 +"..#.#.........#.#...............",
   33.38 +"..##.#.......#.##...............",
   33.39 +"..#.#.#.#.#.#.#.#...............",
   33.40 +"..##.#.#.#.#.#.##...............",
   33.41 +"...#############................",
   33.42 +"................................",
   33.43 +"................................"
   33.44 +};
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/tools/ioemu/gui/bitmaps/paste.h	Mon Jan 17 16:03:22 2005 +0000
    34.3 @@ -0,0 +1,18 @@
    34.4 +/////////////////////////////////////////////////////////////////////////
    34.5 +// $Id: paste.h,v 1.1 2002/03/11 15:04:58 bdenney Exp $
    34.6 +/////////////////////////////////////////////////////////////////////////
    34.7 +#define BX_PASTE_BMAP_X 32
    34.8 +#define BX_PASTE_BMAP_Y 32
    34.9 +
   34.10 +static unsigned char bx_paste_bmap[(BX_PASTE_BMAP_X*BX_PASTE_BMAP_Y)] = {
   34.11 +  0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x10, 0x00, 0x20, 0x9a, 0x93, 0x03,
   34.12 +  0x20, 0x66, 0x78, 0x04, 0xe0, 0xa5, 0xd3, 0x07, 0x20, 0x24, 0x54, 0x00,
   34.13 +  0x20, 0xd8, 0x93, 0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x02, 0x00,
   34.14 +  0x00, 0x7c, 0x3f, 0x00, 0xc0, 0x83, 0xc1, 0x03, 0x20, 0x02, 0x40, 0x04,
   34.15 +  0x20, 0x01, 0x80, 0x04, 0x20, 0x01, 0x80, 0x04, 0xa0, 0xff, 0xff, 0x05,
   34.16 +  0x20, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x04, 0x20, 0xf8, 0x3f, 0x04,
   34.17 +  0x20, 0x08, 0x20, 0x04, 0x20, 0xe8, 0x2b, 0x04, 0x20, 0x08, 0x20, 0x04,
   34.18 +  0x20, 0xe8, 0x2e, 0x04, 0x20, 0x08, 0x20, 0x04, 0x20, 0xe8, 0x39, 0x04,
   34.19 +  0x20, 0x08, 0x24, 0x04, 0x20, 0x88, 0x20, 0x04, 0x20, 0xe8, 0x2f, 0x04,
   34.20 +  0x20, 0x08, 0x20, 0x04, 0x20, 0xf8, 0x3f, 0x04, 0x20, 0x00, 0x00, 0x04,
   34.21 +  0xc0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, };
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/tools/ioemu/gui/bitmaps/paste.xpm	Mon Jan 17 16:03:22 2005 +0000
    35.3 @@ -0,0 +1,41 @@
    35.4 +/* XPM */
    35.5 +static char *paste_xpm[] = {
    35.6 +/* width height num_colors chars_per_pixel */
    35.7 +"    32    32        2            1",
    35.8 +/* colors */
    35.9 +". c None",
   35.10 +"# c #000000",
   35.11 +/* pixels */
   35.12 +"................................",
   35.13 +".....####...........#...........",
   35.14 +".....#...#.##..###..#..###......",
   35.15 +".....#...##..##....####...#.....",
   35.16 +".....####.#..#.###..#.#####.....",
   35.17 +".....#....#..#....#.#.#.........",
   35.18 +".....#.....##.####..#..###......",
   35.19 +"...............##...............",
   35.20 +"..............##.#..............",
   35.21 +"..........#####.######..........",
   35.22 +"......####.....##.....####......",
   35.23 +".....#...#............#...#.....",
   35.24 +".....#..#..............#..#.....",
   35.25 +".....#..#..............#..#.....",
   35.26 +".....#.##################.#.....",
   35.27 +".....#....................#.....",
   35.28 +".....#....................#.....",
   35.29 +".....#.....###########....#.....",
   35.30 +".....#.....#.........#....#.....",
   35.31 +".....#.....#.#####.#.#....#.....",
   35.32 +".....#.....#.........#....#.....",
   35.33 +".....#.....#.###.###.#....#.....",
   35.34 +".....#.....#.........#....#.....",
   35.35 +".....#.....#.####..###....#.....",
   35.36 +".....#.....#......#..#....#.....",
   35.37 +".....#.....#...#.....#....#.....",
   35.38 +".....#.....#.#######.#....#.....",
   35.39 +".....#.....#.........#....#.....",
   35.40 +".....#.....###########....#.....",
   35.41 +".....#....................#.....",
   35.42 +"......####################......",
   35.43 +"................................"
   35.44 +};
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/tools/ioemu/gui/bitmaps/power.h	Mon Jan 17 16:03:22 2005 +0000
    36.3 @@ -0,0 +1,20 @@
    36.4 +/////////////////////////////////////////////////////////////////////////
    36.5 +// $Id: power.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    36.6 +/////////////////////////////////////////////////////////////////////////
    36.7 +//
    36.8 +#define BX_POWER_BMAP_X 32
    36.9 +#define BX_POWER_BMAP_Y 32
   36.10 +
   36.11 +static const unsigned char bx_power_bmap[(BX_POWER_BMAP_X * BX_POWER_BMAP_Y)/8] = {
   36.12 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
   36.13 +  0x24, 0x67, 0x66, 0x34, 0xa4, 0x28, 0x92, 0x48, 0x9a, 0xa8, 0xfa, 0x04,
   36.14 +  0x82, 0x64, 0x09, 0x04, 0x07, 0xa3, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00,
   36.15 +  0x00, 0xf8, 0x03, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x0f, 0x1e, 0x00,
   36.16 +  0x80, 0x03, 0x38, 0x00, 0xc0, 0x00, 0x60, 0x00, 0xe0, 0xe0, 0xe0, 0x00,
   36.17 +  0x60, 0xe0, 0xc0, 0x00, 0x70, 0xe0, 0xc0, 0x01, 0x30, 0xe0, 0x80, 0x01,
   36.18 +  0x30, 0xe0, 0x80, 0x01, 0x30, 0xe0, 0x80, 0x01, 0x30, 0xe0, 0x80, 0x01,
   36.19 +  0x30, 0xe0, 0x80, 0x01, 0x70, 0xe0, 0xc0, 0x01, 0x60, 0xe0, 0xc0, 0x00,
   36.20 +  0xe0, 0xe0, 0xe0, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x80, 0x03, 0x38, 0x00,
   36.21 +  0x00, 0x0f, 0x1e, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0xf8, 0x03, 0x00,
   36.22 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   36.23 +  };
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/tools/ioemu/gui/bitmaps/power.xpm	Mon Jan 17 16:03:22 2005 +0000
    37.3 @@ -0,0 +1,41 @@
    37.4 +/* XPM */
    37.5 +static char *power_xpm[] = {
    37.6 +/* width height num_colors chars_per_pixel */
    37.7 +"    32    32        2            1",
    37.8 +/* colors */
    37.9 +". c None",
   37.10 +"# c #000000",
   37.11 +/* pixels */
   37.12 +"................................",
   37.13 +"................................",
   37.14 +".####...........................",
   37.15 +"..#..#..###..##..##..##...#.##..",
   37.16 +"..#..#.#...#.#...#..#..#...#..#.",
   37.17 +".#.##..#...#.#.#.#.#####..#.....",
   37.18 +".#.....#..#..##.#..#......#.....",
   37.19 +"###.....##...#.#....###..###....",
   37.20 +"................................",
   37.21 +"...........#######..............",
   37.22 +".........###########............",
   37.23 +"........####.....####...........",
   37.24 +".......###.........###..........",
   37.25 +"......##.............##.........",
   37.26 +".....###.....###.....###........",
   37.27 +".....##......###......##........",
   37.28 +"....###......###......###.......",
   37.29 +"....##.......###.......##.......",
   37.30 +"....##.......###.......##.......",
   37.31 +"....##.......###.......##.......",
   37.32 +"....##.......###.......##.......",
   37.33 +"....##.......###.......##.......",
   37.34 +"....###......###......###.......",
   37.35 +".....##......###......##........",
   37.36 +".....###.....###.....###........",
   37.37 +"......##.............##.........",
   37.38 +".......###.........###..........",
   37.39 +"........####.....####...........",
   37.40 +".........###########............",
   37.41 +"...........#######..............",
   37.42 +"................................",
   37.43 +"................................"
   37.44 +};
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/tools/ioemu/gui/bitmaps/reset.h	Mon Jan 17 16:03:22 2005 +0000
    38.3 @@ -0,0 +1,20 @@
    38.4 +/////////////////////////////////////////////////////////////////////////
    38.5 +// $Id: reset.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    38.6 +/////////////////////////////////////////////////////////////////////////
    38.7 +//
    38.8 +#define BX_RESET_BMAP_X 32
    38.9 +#define BX_RESET_BMAP_Y 32
   38.10 +
   38.11 +static const unsigned char bx_reset_bmap[(BX_RESET_BMAP_X * BX_RESET_BMAP_Y)/8] = {
   38.12 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x10,
   38.13 +  0x48, 0x0c, 0xc7, 0x7c, 0x48, 0x92, 0x20, 0x11, 0x34, 0x1f, 0xf3, 0x09,
   38.14 +  0x24, 0x41, 0x12, 0x48, 0x6e, 0xce, 0xe1, 0x30, 0x00, 0x00, 0x00, 0x00,
   38.15 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   38.16 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
   38.17 +  0x00, 0xe0, 0x0f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xe0, 0x3f, 0x00,
   38.18 +  0x00, 0xc7, 0x38, 0x00, 0x00, 0x87, 0x38, 0x00, 0x00, 0x07, 0x38, 0x00,
   38.19 +  0x00, 0x07, 0x38, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x07, 0x38, 0x00,
   38.20 +  0x00, 0x07, 0x38, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00,
   38.21 +  0x00, 0xfc, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   38.22 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   38.23 +  };
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/tools/ioemu/gui/bitmaps/reset.xpm	Mon Jan 17 16:03:22 2005 +0000
    39.3 @@ -0,0 +1,41 @@
    39.4 +/* XPM */
    39.5 +static char *reset_xpm[] = {
    39.6 +/* width height num_colors chars_per_pixel */
    39.7 +"    32    32        2            1",
    39.8 +/* colors */
    39.9 +". c None",
   39.10 +"# c #000000",
   39.11 +/* pixels */
   39.12 +"................................",
   39.13 +".............................#..",
   39.14 +"..####......................#...",
   39.15 +"...#..#...##....###...##..#####.",
   39.16 +"...#..#..#..#..#.....#..#...#...",
   39.17 +"..#.##..#####...##..#####..#....",
   39.18 +"..#..#..#.....#..#..#......#..#.",
   39.19 +".###.##..###..###....###....##..",
   39.20 +"................................",
   39.21 +"................................",
   39.22 +"................................",
   39.23 +"................................",
   39.24 +"................................",
   39.25 +"...............#................",
   39.26 +"..............##................",
   39.27 +".............#######............",
   39.28 +"............#########...........",
   39.29 +".............#########..........",
   39.30 +"........###...##...###..........",
   39.31 +"........###....#...###..........",
   39.32 +"........###........###..........",
   39.33 +"........###........###..........",
   39.34 +"........###........###..........",
   39.35 +"........###........###..........",
   39.36 +"........###........###..........",
   39.37 +"........##############..........",
   39.38 +".........############...........",
   39.39 +"..........##########............",
   39.40 +"................................",
   39.41 +"................................",
   39.42 +"................................",
   39.43 +"................................"
   39.44 +};
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/tools/ioemu/gui/bitmaps/snapshot.h	Mon Jan 17 16:03:22 2005 +0000
    40.3 @@ -0,0 +1,20 @@
    40.4 +/////////////////////////////////////////////////////////////////////////
    40.5 +// $Id: snapshot.h,v 1.2 2001/10/03 13:10:37 bdenney Exp $
    40.6 +/////////////////////////////////////////////////////////////////////////
    40.7 +//
    40.8 +#define BX_SNAPSHOT_BMAP_X 32
    40.9 +#define BX_SNAPSHOT_BMAP_Y 32
   40.10 +
   40.11 +static const unsigned char bx_snapshot_bmap[(BX_SNAPSHOT_BMAP_X * BX_SNAPSHOT_BMAP_Y)/8] = {
   40.12 +  0x00, 0x00, 0x20, 0x40, 0x77, 0xe6, 0xee, 0xec, 0x91, 0xa8, 0xa2, 0x52,
   40.13 +  0x96, 0xac, 0xac, 0x52, 0x94, 0xaa, 0xa8, 0x52, 0xb7, 0xee, 0xae, 0xcc,
   40.14 +  0x00, 0x20, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x08, 0x10, 0x00,
   40.15 +  0x7c, 0x0f, 0x10, 0x1f, 0xfa, 0x07, 0xa0, 0x2e, 0x42, 0x07, 0xa0, 0x50,
   40.16 +  0xa3, 0x03, 0xc0, 0xe0, 0xff, 0xee, 0x77, 0xbf, 0x01, 0xf9, 0x9f, 0x40,
   40.17 +  0x01, 0x1d, 0xb8, 0xa0, 0xff, 0xe5, 0xa7, 0xff, 0xff, 0xba, 0x5a, 0xff,
   40.18 +  0xff, 0x55, 0xb5, 0xff, 0xff, 0x8d, 0xaa, 0xff, 0xff, 0x16, 0x55, 0xff,
   40.19 +  0xff, 0xa2, 0x6a, 0xff, 0xff, 0x46, 0x55, 0xff, 0xff, 0xaa, 0x6a, 0xff,
   40.20 +  0xff, 0x56, 0x55, 0xff, 0xfe, 0xae, 0x6a, 0x7f, 0x00, 0x55, 0xb5, 0x00,
   40.21 +  0x00, 0xbd, 0xba, 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0xe4, 0x27, 0x00,
   40.22 +  0x00, 0x18, 0x18, 0x00, 0x00, 0xe0, 0x07, 0x00
   40.23 +  };
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/tools/ioemu/gui/bitmaps/snapshot.xpm	Mon Jan 17 16:03:22 2005 +0000
    41.3 @@ -0,0 +1,41 @@
    41.4 +/* XPM */
    41.5 +static char *snapshot_xpm[] = {
    41.6 +/* width height num_colors chars_per_pixel */
    41.7 +"    32    32        2            1",
    41.8 +/* colors */
    41.9 +". c None",
   41.10 +"# c #000000",
   41.11 +/* pixels */
   41.12 +".....................#........#.",
   41.13 +"###.###..##..###.###.###..##.###",
   41.14 +"#...#..#...#.#.#.#...#.#.#..#.#.",
   41.15 +".##.#..#..##.#.#..##.#.#.#..#.#.",
   41.16 +"..#.#..#.#.#.#.#...#.#.#.#..#.#.",
   41.17 +"###.##.#.###.###.###.#.#..##..##",
   41.18 +".............#..................",
   41.19 +"............########............",
   41.20 +"...........#........#...........",
   41.21 +"..#####.####........#...#####...",
   41.22 +".#.########..........#.#.###.#..",
   41.23 +".#....#.###..........#.#....#.#.",
   41.24 +"##...#.###............##.....###",
   41.25 +"########.###.######.###.######.#",
   41.26 +"#.......#..##########..#......#.",
   41.27 +"#.......#.###......###.#.....#.#",
   41.28 +"#########.#..######..#.#########",
   41.29 +"########.#.###.#.#.##.#.########",
   41.30 +"#########.#.#.#.#.#.##.#########",
   41.31 +"#########.##...#.#.#.#.#########",
   41.32 +"########.##.#...#.#.#.#.########",
   41.33 +"########.#...#.#.#.#.##.########",
   41.34 +"########.##...#.#.#.#.#.########",
   41.35 +"########.#.#.#.#.#.#.##.########",
   41.36 +"########.##.#.#.#.#.#.#.########",
   41.37 +".#######.###.#.#.#.#.##.#######.",
   41.38 +"........#.#.#.#.#.#.##.#........",
   41.39 +"........#.####.#.#.###.#........",
   41.40 +".........#.##########.#.........",
   41.41 +"..........#..######..#..........",
   41.42 +"...........##......##...........",
   41.43 +".............######............."
   41.44 +};
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/tools/ioemu/gui/bitmaps/userbutton.h	Mon Jan 17 16:03:22 2005 +0000
    42.3 @@ -0,0 +1,19 @@
    42.4 +/////////////////////////////////////////////////////////////////////////
    42.5 +// $Id: userbutton.h,v 1.1 2002/08/09 06:16:43 vruppert Exp $
    42.6 +/////////////////////////////////////////////////////////////////////////
    42.7 +#define BX_USER_BMAP_X 32
    42.8 +#define BX_USER_BMAP_Y 32
    42.9 +
   42.10 +static const unsigned char bx_user_bmap[BX_USER_BMAP_X*BX_USER_BMAP_Y/8] = {
   42.11 +  0x00, 0x00, 0x00, 0x00, 0x84, 0x78, 0x9e, 0x07, 0x84, 0x04, 0x82, 0x08, 
   42.12 +  0x84, 0x04, 0x82, 0x08, 0x84, 0x38, 0x9e, 0x07, 0x84, 0x40, 0x82, 0x01, 
   42.13 +  0x84, 0x40, 0x82, 0x06, 0x78, 0x3c, 0x9e, 0x08, 0x00, 0x00, 0x00, 0x00, 
   42.14 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1c, 
   42.15 +  0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 
   42.16 +  0x00, 0x00, 0x80, 0x00, 0xfe, 0xff, 0xff, 0x3f, 0x02, 0x00, 0x00, 0x20, 
   42.17 +  0xaa, 0xaa, 0x2a, 0x2a, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x20, 
   42.18 +  0xaa, 0xaa, 0xaa, 0x2a, 0x52, 0x55, 0x11, 0x25, 0xaa, 0xaa, 0xaa, 0x2a, 
   42.19 +  0x52, 0x55, 0x01, 0x25, 0xaa, 0xaa, 0x82, 0x2a, 0x52, 0x55, 0x11, 0x25, 
   42.20 +  0xaa, 0xbf, 0xaa, 0x2a, 0x02, 0x00, 0x00, 0x20, 0xfe, 0xff, 0xff, 0x3f, 
   42.21 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
   42.22 +  };
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/tools/ioemu/gui/bitmaps/userbutton.xpm	Mon Jan 17 16:03:22 2005 +0000
    43.3 @@ -0,0 +1,40 @@
    43.4 +/* XPM */
    43.5 +static char *userbutton_xpm[] = {
    43.6 +/* columns rows colors chars-per-pixel */
    43.7 +"32 32 2 1",
    43.8 +". c None",
    43.9 +"# c #000000",
   43.10 +/* pixels */
   43.11 +"................................",
   43.12 +"..#....#...####..####..####.....",
   43.13 +"..#....#..#......#.....#...#....",
   43.14 +"..#....#..#......#.....#...#....",
   43.15 +"..#....#...###...####..####.....",
   43.16 +"..#....#......#..#.....##.......",
   43.17 +"..#....#......#..#.....#.##.....",
   43.18 +"...####...####...####..#...#....",
   43.19 +"................................",
   43.20 +"................................",
   43.21 +".............................#..",
   43.22 +"..........................###...",
   43.23 +".........................#......",
   43.24 +"........................#.......",
   43.25 +".......................#........",
   43.26 +".......................#........",
   43.27 +".#############################..",
   43.28 +".#...........................#..",
   43.29 +".#.#.#.#.#.#.#.#.#.#.#...#.#.#..",
   43.30 +".#...........................#..",
   43.31 +".#...........................#..",
   43.32 +".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..",
   43.33 +".#..#.#.#.#.#.#.#...#...#.#..#..",
   43.34 +".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..",
   43.35 +".#..#.#.#.#.#.#.#.......#.#..#..",
   43.36 +".#.#.#.#.#.#.#.#.#.....#.#.#.#..",
   43.37 +".#..#.#.#.#.#.#.#...#...#.#..#..",
   43.38 +".#.#.#.#######.#.#.#.#.#.#.#.#..",
   43.39 +".#...........................#..",
   43.40 +".#############################..",
   43.41 +"................................",
   43.42 +"................................"
   43.43 +};
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/tools/ioemu/gui/gui.cc	Mon Jan 17 16:03:22 2005 +0000
    44.3 @@ -0,0 +1,592 @@
    44.4 +/////////////////////////////////////////////////////////////////////////
    44.5 +// $Id: gui.cc,v 1.73 2003/12/18 20:04:48 vruppert Exp $
    44.6 +/////////////////////////////////////////////////////////////////////////
    44.7 +//
    44.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
    44.9 +//
   44.10 +//    MandrakeSoft S.A.
   44.11 +//    43, rue d'Aboukir
   44.12 +//    75002 Paris - France
   44.13 +//    http://www.linux-mandrake.com/
   44.14 +//    http://www.mandrakesoft.com/
   44.15 +//
   44.16 +//  This library is free software; you can redistribute it and/or
   44.17 +//  modify it under the terms of the GNU Lesser General Public
   44.18 +//  License as published by the Free Software Foundation; either
   44.19 +//  version 2 of the License, or (at your option) any later version.
   44.20 +//
   44.21 +//  This library is distributed in the hope that it will be useful,
   44.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   44.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   44.24 +//  Lesser General Public License for more details.
   44.25 +//
   44.26 +//  You should have received a copy of the GNU Lesser General Public
   44.27 +//  License along with this library; if not, write to the Free Software
   44.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   44.29 +
   44.30 +
   44.31 +#include <signal.h>
   44.32 +#include "bochs.h"
   44.33 +#include "gui/bitmaps/floppya.h"
   44.34 +#include "gui/bitmaps/floppyb.h"
   44.35 +#include "gui/bitmaps/mouse.h"
   44.36 +#include "gui/bitmaps/reset.h"
   44.37 +#include "gui/bitmaps/power.h"
   44.38 +#include "gui/bitmaps/snapshot.h"
   44.39 +#include "gui/bitmaps/copy.h"
   44.40 +#include "gui/bitmaps/paste.h"
   44.41 +#include "gui/bitmaps/configbutton.h"
   44.42 +#include "gui/bitmaps/cdromd.h"
   44.43 +#include "gui/bitmaps/userbutton.h"
   44.44 +#if BX_WITH_MACOS
   44.45 +#  include <Disks.h>
   44.46 +#endif
   44.47 +
   44.48 +bx_gui_c *bx_gui = NULL;
   44.49 +
   44.50 +#define BX_GUI_THIS bx_gui->
   44.51 +#define LOG_THIS BX_GUI_THIS
   44.52 +
   44.53 +bx_gui_c::bx_gui_c(void)
   44.54 +{
   44.55 +  put("GUI"); // Init in specific_init
   44.56 +  settype(GUILOG);
   44.57 +}
   44.58 +
   44.59 +bx_gui_c::~bx_gui_c()
   44.60 +{
   44.61 +}
   44.62 +
   44.63 +  void
   44.64 +bx_gui_c::init(int argc, char **argv, unsigned tilewidth, unsigned tileheight)
   44.65 +{
   44.66 +  specific_init(argc, argv, tilewidth, tileheight, BX_HEADER_BAR_Y);
   44.67 +
   44.68 +  // Define some bitmaps to use in the headerbar
   44.69 +  BX_GUI_THIS floppyA_bmap_id = create_bitmap(bx_floppya_bmap,
   44.70 +                          BX_FLOPPYA_BMAP_X, BX_FLOPPYA_BMAP_Y);
   44.71 +  BX_GUI_THIS floppyA_eject_bmap_id = create_bitmap(bx_floppya_eject_bmap,
   44.72 +                          BX_FLOPPYA_BMAP_X, BX_FLOPPYA_BMAP_Y);
   44.73 +  BX_GUI_THIS floppyB_bmap_id = create_bitmap(bx_floppyb_bmap,
   44.74 +                          BX_FLOPPYB_BMAP_X, BX_FLOPPYB_BMAP_Y);
   44.75 +  BX_GUI_THIS floppyB_eject_bmap_id = create_bitmap(bx_floppyb_eject_bmap,
   44.76 +                          BX_FLOPPYB_BMAP_X, BX_FLOPPYB_BMAP_Y);
   44.77 +  BX_GUI_THIS cdromD_bmap_id = create_bitmap(bx_cdromd_bmap,
   44.78 +                          BX_CDROMD_BMAP_X, BX_CDROMD_BMAP_Y);
   44.79 +  BX_GUI_THIS cdromD_eject_bmap_id = create_bitmap(bx_cdromd_eject_bmap,
   44.80 +                          BX_CDROMD_BMAP_X, BX_CDROMD_BMAP_Y);
   44.81 +  BX_GUI_THIS mouse_bmap_id = create_bitmap(bx_mouse_bmap,
   44.82 +                          BX_MOUSE_BMAP_X, BX_MOUSE_BMAP_Y);
   44.83 +  BX_GUI_THIS nomouse_bmap_id = create_bitmap(bx_nomouse_bmap,
   44.84 +                          BX_MOUSE_BMAP_X, BX_MOUSE_BMAP_Y);
   44.85 +
   44.86 +
   44.87 +  BX_GUI_THIS power_bmap_id = create_bitmap(bx_power_bmap, BX_POWER_BMAP_X, BX_POWER_BMAP_Y);
   44.88 +  BX_GUI_THIS reset_bmap_id = create_bitmap(bx_reset_bmap, BX_RESET_BMAP_X, BX_RESET_BMAP_Y);
   44.89 +  BX_GUI_THIS snapshot_bmap_id = create_bitmap(bx_snapshot_bmap, BX_SNAPSHOT_BMAP_X, BX_SNAPSHOT_BMAP_Y);
   44.90 +  BX_GUI_THIS copy_bmap_id = create_bitmap(bx_copy_bmap, BX_COPY_BMAP_X, BX_COPY_BMAP_Y);
   44.91 +  BX_GUI_THIS paste_bmap_id = create_bitmap(bx_paste_bmap, BX_PASTE_BMAP_X, BX_PASTE_BMAP_Y);
   44.92 +  BX_GUI_THIS config_bmap_id = create_bitmap(bx_config_bmap, BX_CONFIG_BMAP_X, BX_CONFIG_BMAP_Y);
   44.93 +  BX_GUI_THIS user_bmap_id = create_bitmap(bx_user_bmap, BX_USER_BMAP_X, BX_USER_BMAP_Y);
   44.94 +
   44.95 +
   44.96 +  // Add the initial bitmaps to the headerbar, and enable callback routine, for use
   44.97 +  // when that bitmap is clicked on
   44.98 +
   44.99 +  // Floppy A:
  44.100 +  BX_GUI_THIS floppyA_status = DEV_floppy_get_media_status(0);
  44.101 +  if (BX_GUI_THIS floppyA_status)
  44.102 +    BX_GUI_THIS floppyA_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyA_bmap_id,
  44.103 +                          BX_GRAVITY_LEFT, floppyA_handler);
  44.104 +  else
  44.105 +    BX_GUI_THIS floppyA_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyA_eject_bmap_id,
  44.106 +                          BX_GRAVITY_LEFT, floppyA_handler);
  44.107 +
  44.108 +  // Floppy B:
  44.109 +  BX_GUI_THIS floppyB_status = DEV_floppy_get_media_status(1);
  44.110 +  if (BX_GUI_THIS floppyB_status)
  44.111 +    BX_GUI_THIS floppyB_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyB_bmap_id,
  44.112 +                          BX_GRAVITY_LEFT, floppyB_handler);
  44.113 +  else
  44.114 +    BX_GUI_THIS floppyB_hbar_id = headerbar_bitmap(BX_GUI_THIS floppyB_eject_bmap_id,
  44.115 +                          BX_GRAVITY_LEFT, floppyB_handler);
  44.116 +
  44.117 +  // CDROM, 
  44.118 +  // valgrinds says that the harddrive object is not be initialised yet, 
  44.119 +  // so we just set the bitmap to ejected for now
  44.120 +#if 0
  44.121 +  if (DEV_hd_present()) {
  44.122 +    Bit32u handle = DEV_hd_get_first_cd_handle();
  44.123 +    BX_GUI_THIS cdromD_status = DEV_hd_get_cd_media_status(handle);
  44.124 +  }
  44.125 +
  44.126 +  if (BX_GUI_THIS cdromD_status)
  44.127 +    BX_GUI_THIS cdromD_hbar_id = headerbar_bitmap(BX_GUI_THIS cdromD_bmap_id,
  44.128 +                          BX_GRAVITY_LEFT, cdromD_handler);
  44.129 +  else
  44.130 +#endif
  44.131 +    BX_GUI_THIS cdromD_hbar_id = headerbar_bitmap(BX_GUI_THIS cdromD_eject_bmap_id,
  44.132 +                          BX_GRAVITY_LEFT, cdromD_handler);
  44.133 +
  44.134 +  // Mouse button
  44.135 +  if (bx_options.Omouse_enabled->get ())
  44.136 +    BX_GUI_THIS mouse_hbar_id = headerbar_bitmap(BX_GUI_THIS mouse_bmap_id,
  44.137 +                          BX_GRAVITY_LEFT, toggle_mouse_enable);
  44.138 +  else
  44.139 +    BX_GUI_THIS mouse_hbar_id = headerbar_bitmap(BX_GUI_THIS nomouse_bmap_id,
  44.140 +                          BX_GRAVITY_LEFT, toggle_mouse_enable);
  44.141 +
  44.142 +  // These are the buttons on the right side.  They are created in order
  44.143 +  // of right to left.
  44.144 +
  44.145 +  // Power button
  44.146 +  BX_GUI_THIS power_hbar_id = headerbar_bitmap(BX_GUI_THIS power_bmap_id,
  44.147 +                          BX_GRAVITY_RIGHT, power_handler);
  44.148 +  // Reset button
  44.149 +  BX_GUI_THIS reset_hbar_id = headerbar_bitmap(BX_GUI_THIS reset_bmap_id,
  44.150 +                          BX_GRAVITY_RIGHT, reset_handler);
  44.151 +  // Configure button
  44.152 +  BX_GUI_THIS config_hbar_id = headerbar_bitmap(BX_GUI_THIS config_bmap_id,
  44.153 +                          BX_GRAVITY_RIGHT, config_handler);
  44.154 +  // Snapshot button
  44.155 +  BX_GUI_THIS snapshot_hbar_id = headerbar_bitmap(BX_GUI_THIS snapshot_bmap_id,
  44.156 +                          BX_GRAVITY_RIGHT, snapshot_handler);
  44.157 +  // Paste button
  44.158 +  BX_GUI_THIS paste_hbar_id = headerbar_bitmap(BX_GUI_THIS paste_bmap_id,
  44.159 +                          BX_GRAVITY_RIGHT, paste_handler);
  44.160 +  // Copy button
  44.161 +  BX_GUI_THIS copy_hbar_id = headerbar_bitmap(BX_GUI_THIS copy_bmap_id,
  44.162 +                          BX_GRAVITY_RIGHT, copy_handler);
  44.163 +  // User button
  44.164 +  BX_GUI_THIS user_hbar_id = headerbar_bitmap(BX_GUI_THIS user_bmap_id,
  44.165 +                          BX_GRAVITY_RIGHT, userbutton_handler);
  44.166 +
  44.167 +  if(bx_options.Otext_snapshot_check->get()) {
  44.168 +    bx_pc_system.register_timer(this, bx_gui_c::snapshot_checker, (unsigned) 1000000, 1, 1, "snap_chk");
  44.169 +  }
  44.170 +
  44.171 +  BX_GUI_THIS charmap_updated = 0;
  44.172 +
  44.173 +  show_headerbar();
  44.174 +}
  44.175 +
  44.176 +void
  44.177 +bx_gui_c::update_drive_status_buttons (void) {
  44.178 +  BX_GUI_THIS floppyA_status = 
  44.179 +    DEV_floppy_get_media_status(0)
  44.180 +    && bx_options.floppya.Ostatus->get ();
  44.181 +  BX_GUI_THIS floppyB_status = 
  44.182 +      DEV_floppy_get_media_status(1)
  44.183 +      && bx_options.floppyb.Ostatus->get ();
  44.184 +  Bit32u handle = DEV_hd_get_first_cd_handle();
  44.185 +  BX_GUI_THIS cdromD_status = DEV_hd_get_cd_media_status(handle);
  44.186 +  if (BX_GUI_THIS floppyA_status)
  44.187 +    replace_bitmap(BX_GUI_THIS floppyA_hbar_id, BX_GUI_THIS floppyA_bmap_id);
  44.188 +  else {
  44.189 +#if BX_WITH_MACOS
  44.190 +    // If we are using the Mac floppy driver, eject the disk
  44.191 +    // from the floppy drive.  This doesn't work in MacOS X.
  44.192 +    if (!strcmp(bx_options.floppya.Opath->getptr (), SuperDrive))
  44.193 +      DiskEject(1);
  44.194 +#endif
  44.195 +    replace_bitmap(BX_GUI_THIS floppyA_hbar_id, BX_GUI_THIS floppyA_eject_bmap_id);
  44.196 +    }
  44.197 +  if (BX_GUI_THIS floppyB_status)
  44.198 +    replace_bitmap(BX_GUI_THIS floppyB_hbar_id, BX_GUI_THIS floppyB_bmap_id);
  44.199 +  else {
  44.200 +#if BX_WITH_MACOS
  44.201 +    // If we are using the Mac floppy driver, eject the disk
  44.202 +    // from the floppy drive.  This doesn't work in MacOS X.
  44.203 +    if (!strcmp(bx_options.floppyb.Opath->getptr (), SuperDrive))
  44.204 +      DiskEject(1);
  44.205 +#endif
  44.206 +    replace_bitmap(BX_GUI_THIS floppyB_hbar_id, BX_GUI_THIS floppyB_eject_bmap_id);
  44.207 +    }
  44.208 +  if (BX_GUI_THIS cdromD_status)
  44.209 +    replace_bitmap(BX_GUI_THIS cdromD_hbar_id, BX_GUI_THIS cdromD_bmap_id);
  44.210 +  else {
  44.211 +    replace_bitmap(BX_GUI_THIS cdromD_hbar_id, BX_GUI_THIS cdromD_eject_bmap_id);
  44.212 +    }
  44.213 +}
  44.214 +
  44.215 +  void
  44.216 +bx_gui_c::floppyA_handler(void)
  44.217 +{
  44.218 +  if (bx_options.floppya.Odevtype->get() == BX_FLOPPY_NONE)
  44.219 +    return; // no primary floppy device present
  44.220 +#ifdef WIN32
  44.221 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  44.222 +              "rfb")) {
  44.223 +    // instead of just toggling the status, call win32dialog to bring up
  44.224 +    // a dialog asking what disk image you want to switch to.
  44.225 +    int ret = SIM->ask_param (BXP_FLOPPYA_PATH);
  44.226 +    if (ret > 0) {
  44.227 +      BX_GUI_THIS update_drive_status_buttons ();
  44.228 +    }
  44.229 +    return;
  44.230 +  }
  44.231 +#endif
  44.232 +  BX_GUI_THIS floppyA_status = !BX_GUI_THIS floppyA_status;
  44.233 +  DEV_floppy_set_media_status(0, BX_GUI_THIS floppyA_status);
  44.234 +  BX_GUI_THIS update_drive_status_buttons ();
  44.235 +}
  44.236 +
  44.237 +  void
  44.238 +bx_gui_c::floppyB_handler(void)
  44.239 +{
  44.240 +  if (bx_options.floppyb.Odevtype->get() == BX_FLOPPY_NONE)
  44.241 +    return; // no secondary floppy device present
  44.242 +#ifdef WIN32
  44.243 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  44.244 +              "rfb")) {
  44.245 +    // instead of just toggling the status, call win32dialog to bring up
  44.246 +    // a dialog asking what disk image you want to switch to.
  44.247 +    int ret = SIM->ask_param (BXP_FLOPPYB_PATH);
  44.248 +    if (ret > 0) {
  44.249 +      BX_GUI_THIS update_drive_status_buttons ();
  44.250 +    }
  44.251 +    return;
  44.252 +  }
  44.253 +#endif
  44.254 +  BX_GUI_THIS floppyB_status = !BX_GUI_THIS floppyB_status;
  44.255 +  DEV_floppy_set_media_status(1, BX_GUI_THIS floppyB_status);
  44.256 +  BX_GUI_THIS update_drive_status_buttons ();
  44.257 +}
  44.258 +
  44.259 +  void
  44.260 +bx_gui_c::cdromD_handler(void)
  44.261 +{
  44.262 +  Bit32u handle = DEV_hd_get_first_cd_handle();
  44.263 +  if (!strcmp(bx_options.Osel_config->get_choice(bx_options.Osel_config->get()),
  44.264 +              "wx")) {
  44.265 +    // instead of just toggling the status, call wxWindows to bring up 
  44.266 +    // a dialog asking what disk image you want to switch to.
  44.267 +    // BBD: for now, find the first cdrom and call ask_param on that.
  44.268 +    // Since we could have multiple cdroms now, maybe we should be adding
  44.269 +    // one cdrom button for each?
  44.270 +    bx_param_c *cdrom = SIM->get_first_cdrom ();
  44.271 +    if (cdrom == NULL)
  44.272 +      return;  // no cdrom found
  44.273 +    int ret = SIM->ask_param (cdrom->get_id ());
  44.274 +    if (ret < 0) return;  // cancelled
  44.275 +    // eject and then insert the disk.  If the new path is invalid,
  44.276 +    // the status will return 0.
  44.277 +    unsigned status = DEV_hd_set_cd_media_status(handle, 0);
  44.278 +    printf ("eject disk, new_status is %d\n", status);
  44.279 +    status = DEV_hd_set_cd_media_status(handle, 1);
  44.280 +    printf ("insert disk, new_status is %d\n", status);
  44.281 +    fflush (stdout);
  44.282 +    BX_GUI_THIS cdromD_status = status;
  44.283 +  } else {
  44.284 +    BX_GUI_THIS cdromD_status =
  44.285 +      DEV_hd_set_cd_media_status(handle, !BX_GUI_THIS cdromD_status);
  44.286 +  }
  44.287 +  BX_GUI_THIS update_drive_status_buttons ();
  44.288 +}
  44.289 +
  44.290 +  void
  44.291 +bx_gui_c::reset_handler(void)
  44.292 +{
  44.293 +  BX_INFO(( "system RESET callback." ));
  44.294 +  bx_pc_system.ResetSignal( PCS_SET ); /* XXX is this right? */
  44.295 +  for (int i=0; i<BX_SMP_PROCESSORS; i++)
  44.296 +      BX_CPU(i)->reset(BX_RESET_HARDWARE);
  44.297 +}
  44.298 +
  44.299 +  void
  44.300 +bx_gui_c::power_handler(void)
  44.301 +{
  44.302 +  // the user pressed power button, so there's no doubt they want bochs
  44.303 +  // to quit.  Change panics to fatal for the GUI and then do a panic.
  44.304 +  bx_user_quit = 1;
  44.305 +  LOG_THIS setonoff(LOGLEV_PANIC, ACT_FATAL);
  44.306 +  BX_PANIC (("POWER button turned off."));
  44.307 +  // shouldn't reach this point, but if you do, QUIT!!!
  44.308 +  fprintf (stderr, "Bochs is exiting because you pressed the power button.\n");
  44.309 +  BX_EXIT (1);
  44.310 +}
  44.311 +
  44.312 +Bit32s
  44.313 +bx_gui_c::make_text_snapshot (char **snapshot, Bit32u *length)
  44.314 +{
  44.315 +  Bit8u* raw_snap = NULL;
  44.316 +  char *clean_snap;
  44.317 +  unsigned line_addr, txt_addr, txHeight, txWidth;
  44.318 +
  44.319 +  DEV_vga_get_text_snapshot(&raw_snap, &txHeight, &txWidth);
  44.320 +  if (txHeight <= 0) return -1;
  44.321 +  clean_snap = (char*) malloc(txHeight*(txWidth+2)+1);
  44.322 +  txt_addr = 0;
  44.323 +  for (unsigned i=0; i<txHeight; i++) {
  44.324 +    line_addr = i * txWidth * 2;
  44.325 +    for (unsigned j=0; j<(txWidth*2); j+=2) {
  44.326 +      clean_snap[txt_addr++] = raw_snap[line_addr+j];
  44.327 +    }
  44.328 +    while ((txt_addr > 0) && (clean_snap[txt_addr-1] == ' ')) txt_addr--;
  44.329 +#ifdef WIN32
  44.330 +    if(!(bx_options.Otext_snapshot_check->get())) {
  44.331 +      clean_snap[txt_addr++] = 13;
  44.332 +    }
  44.333 +#endif
  44.334 +    clean_snap[txt_addr++] = 10;
  44.335 +  }
  44.336 +  clean_snap[txt_addr] = 0;
  44.337 +  *snapshot = clean_snap;
  44.338 +  *length = txt_addr;
  44.339 +  return 0;
  44.340 +}
  44.341 +
  44.342 +// create a text snapshot and copy to the system clipboard.  On guis that
  44.343 +// we haven't figured out how to support yet, dump to a file instead.
  44.344 +  void
  44.345 +bx_gui_c::copy_handler(void)
  44.346 +{
  44.347 +  Bit32u len;
  44.348 +  char *text_snapshot;
  44.349 +  if (make_text_snapshot (&text_snapshot, &len) < 0) {
  44.350 +    BX_INFO(( "copy button failed, mode not implemented"));
  44.351 +    return;
  44.352 +  }
  44.353 +  if (!BX_GUI_THIS set_clipboard_text(text_snapshot, len)) {
  44.354 +    // platform specific code failed, use portable code instead
  44.355 +    FILE *fp = fopen("copy.txt", "w");
  44.356 +    fwrite(text_snapshot, 1, len, fp);
  44.357 +    fclose(fp);
  44.358 +  }
  44.359 +  free(text_snapshot);
  44.360 +}
  44.361 +
  44.362 +// Check the current text snapshot against file snapchk.txt.
  44.363 +  void
  44.364 +bx_gui_c::snapshot_checker(void * this_ptr)
  44.365 +{
  44.366 +  char filename[BX_PATHNAME_LEN];
  44.367 +  strcpy(filename,"snapchk.txt");
  44.368 +  FILE *fp = fopen(filename, "rb");
  44.369 +  if(fp) {
  44.370 +    char *text_snapshot;
  44.371 +    Bit32u len;
  44.372 +    if (make_text_snapshot (&text_snapshot, &len) < 0) {
  44.373 +      return;
  44.374 +    }
  44.375 +    char *compare_snapshot = (char *) malloc((len+1) * sizeof(char));
  44.376 +    fread(compare_snapshot, 1, len, fp);
  44.377 +    fclose(fp);
  44.378 +    strcpy(filename,"snapmask.txt");
  44.379 +    fp=fopen(filename, "rb");
  44.380 +    if(fp) {
  44.381 +      char *mask_snapshot = (char *) malloc((len+1) * sizeof(char));
  44.382 +      unsigned i;
  44.383 +      bx_bool flag = 1;
  44.384 +      fread(mask_snapshot, 1, len, fp);
  44.385 +      fclose(fp);
  44.386 +      for(i=0;i<len;i++) {
  44.387 +	if((text_snapshot[i] != compare_snapshot[i]) &&
  44.388 +	   (compare_snapshot[i] == mask_snapshot[i])) {
  44.389 +	  flag = 0;
  44.390 +	  break;
  44.391 +	}
  44.392 +      }
  44.393 +      if(flag) {
  44.394 +	if(!memcmp(text_snapshot,compare_snapshot,len)) {
  44.395 +	  BX_PASS(("Test Passed."));
  44.396 +	} else {
  44.397 +	  BX_PASS(("Test Passed with Mask."));
  44.398 +	}
  44.399 +      }
  44.400 +    } else {
  44.401 +      if(!memcmp(text_snapshot,compare_snapshot,len)) {
  44.402 +	BX_PASS(("Test Passed."));
  44.403 +      }
  44.404 +    }
  44.405 +    free(compare_snapshot);
  44.406 +    free(text_snapshot);
  44.407 +  }
  44.408 +}
  44.409 +
  44.410 +// create a text snapshot and dump it to a file
  44.411 +  void
  44.412 +bx_gui_c::snapshot_handler(void)
  44.413 +{
  44.414 +  char *text_snapshot;
  44.415 +  Bit32u len;
  44.416 +  if (make_text_snapshot (&text_snapshot, &len) < 0) {
  44.417 +    BX_ERROR(( "snapshot button failed, mode not implemented"));
  44.418 +    return;
  44.419 +  }
  44.420 +  //FIXME
  44.421 +  char filename[BX_PATHNAME_LEN];
  44.422 +#ifdef WIN32
  44.423 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  44.424 +              "rfb")) {
  44.425 +#else
  44.426 +  if (!strcmp(bx_options.Osel_config->get_choice(bx_options.Osel_config->get()),
  44.427 +              "wx")) {
  44.428 +#endif
  44.429 +    int ret = SIM->ask_filename (filename, sizeof(filename),
  44.430 +                                 "Save snapshot as...", "snapshot.txt",
  44.431 +                                 bx_param_string_c::SAVE_FILE_DIALOG);
  44.432 +    if (ret < 0) { // cancelled
  44.433 +      free(text_snapshot);
  44.434 +      return;
  44.435 +    }
  44.436 +  } else {
  44.437 +    strcpy (filename, "snapshot.txt");
  44.438 +  }
  44.439 +  FILE *fp = fopen(filename, "wb");
  44.440 +  fwrite(text_snapshot, 1, len, fp);
  44.441 +  fclose(fp);
  44.442 +  free(text_snapshot);
  44.443 +}
  44.444 +
  44.445 +// Read ASCII chars from the system clipboard and paste them into bochs.
  44.446 +// Note that paste cannot work with the key mapping tables loaded.
  44.447 +  void
  44.448 +bx_gui_c::paste_handler(void)
  44.449 +{
  44.450 +  Bit32s nbytes;
  44.451 +  Bit8u *bytes;
  44.452 +  if (!bx_keymap.isKeymapLoaded ()) {
  44.453 +    BX_ERROR (("keyboard_mapping disabled, so paste cannot work"));
  44.454 +    return;
  44.455 +  }
  44.456 +  if (!BX_GUI_THIS get_clipboard_text(&bytes, &nbytes)) {
  44.457 +    BX_ERROR (("paste not implemented on this platform"));
  44.458 +    return;
  44.459 +  }
  44.460 +  BX_INFO (("pasting %d bytes", nbytes));
  44.461 +  DEV_kbd_paste_bytes (bytes, nbytes);
  44.462 +}
  44.463 +
  44.464 +
  44.465 +  void
  44.466 +bx_gui_c::config_handler(void)
  44.467 +{
  44.468 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  44.469 +              "rfb")) {
  44.470 +    SIM->configuration_interface (NULL, CI_RUNTIME_CONFIG);
  44.471 +  }
  44.472 +}
  44.473 +
  44.474 +  void
  44.475 +bx_gui_c::toggle_mouse_enable(void)
  44.476 +{
  44.477 +  int old = bx_options.Omouse_enabled->get ();
  44.478 +  BX_DEBUG (("toggle mouse_enabled, now %d", !old));
  44.479 +  bx_options.Omouse_enabled->set (!old);
  44.480 +}
  44.481 +
  44.482 +  void
  44.483 +bx_gui_c::userbutton_handler(void)
  44.484 +{
  44.485 +  unsigned shortcut[4];
  44.486 +  unsigned p;
  44.487 +  char *user_shortcut;
  44.488 +  int i, len, ret = 1;
  44.489 +
  44.490 +  len = 0;
  44.491 +#ifdef WIN32
  44.492 +  if (strcmp(bx_options.Osel_displaylib->get_choice(bx_options.Osel_displaylib->get()),
  44.493 +              "rfb")) {
  44.494 +#else
  44.495 +  if (!strcmp(bx_options.Osel_config->get_choice(bx_options.Osel_config->get()),
  44.496 +              "wx")) {
  44.497 +#endif
  44.498 +    ret = SIM->ask_param (BXP_USER_SHORTCUT);
  44.499 +  }
  44.500 +  user_shortcut = bx_options.Ouser_shortcut->getptr();
  44.501 +  if ((ret > 0) && user_shortcut[0] && (strcmp(user_shortcut, "none"))) {
  44.502 +    len = 0;
  44.503 +    p = 0;
  44.504 +    while ((p < strlen(user_shortcut)) && (len < 3)) {
  44.505 +      if (!strncmp(user_shortcut+p, "alt", 3)) {
  44.506 +        shortcut[len++] = BX_KEY_ALT_L;
  44.507 +        p += 3;
  44.508 +      } else if (!strncmp(user_shortcut+p, "ctrl", 4)) {
  44.509 +        shortcut[len++] = BX_KEY_CTRL_L;
  44.510 +        p += 4;
  44.511 +      } else if (!strncmp(user_shortcut+p, "del", 3)) {
  44.512 +        shortcut[len++] = BX_KEY_DELETE;
  44.513 +        p += 3;
  44.514 +      } else if (!strncmp(user_shortcut+p, "esc", 3)) {
  44.515 +        shortcut[len++] = BX_KEY_ESC;
  44.516 +        p += 3;
  44.517 +      } else if (!strncmp(user_shortcut+p, "f1", 2)) {
  44.518 +        shortcut[len++] = BX_KEY_F1;
  44.519 +        p += 2;
  44.520 +      } else if (!strncmp(user_shortcut+p, "f4", 2)) {
  44.521 +        shortcut[len++] = BX_KEY_F4;
  44.522 +        p += 2;
  44.523 +      } else if (!strncmp(user_shortcut+p, "tab", 3)) {
  44.524 +        shortcut[len++] = BX_KEY_TAB;
  44.525 +        p += 3;
  44.526 +      } else if (!strncmp(user_shortcut+p, "win", 3)) {
  44.527 +        shortcut[len++] = BX_KEY_WIN_L;
  44.528 +        p += 3;
  44.529 +      } else if (!strncmp(user_shortcut+p, "bksp", 4)) {
  44.530 +        shortcut[len++] = BX_KEY_BACKSPACE;
  44.531 +        p += 4;
  44.532 +      } else {
  44.533 +        BX_ERROR(("Unknown shortcut %s ignored", user_shortcut));
  44.534 +        return;
  44.535 +      }
  44.536 +    }
  44.537 +    i = 0;
  44.538 +    while (i < len) {
  44.539 +      DEV_kbd_gen_scancode(shortcut[i++]);
  44.540 +    }
  44.541 +    i--;
  44.542 +    while (i >= 0) {
  44.543 +      DEV_kbd_gen_scancode(shortcut[i--] | BX_KEY_RELEASED);
  44.544 +    }
  44.545 +  }
  44.546 +}
  44.547 +
  44.548 +  void
  44.549 +bx_gui_c::mouse_enabled_changed (bx_bool val)
  44.550 +{
  44.551 +  // This is only called when SIM->get_init_done is 1.  Note that VAL
  44.552 +  // is the new value of mouse_enabled, which may not match the old
  44.553 +  // value which is still in bx_options.Omouse_enabled->get ().
  44.554 +  BX_DEBUG (("replacing the mouse bitmaps"));
  44.555 +  if (val)
  44.556 +    BX_GUI_THIS replace_bitmap(BX_GUI_THIS mouse_hbar_id, BX_GUI_THIS mouse_bmap_id);
  44.557 +  else
  44.558 +    BX_GUI_THIS replace_bitmap(BX_GUI_THIS mouse_hbar_id, BX_GUI_THIS nomouse_bmap_id);
  44.559 +  // give the GUI a chance to respond to the event.  Most guis will hide
  44.560 +  // the native mouse cursor and do something to trap the mouse inside the
  44.561 +  // bochs VGA display window.
  44.562 +  BX_GUI_THIS mouse_enabled_changed_specific (val);
  44.563 +}
  44.564 +
  44.565 +void
  44.566 +bx_gui_c::init_signal_handlers ()
  44.567 +{
  44.568 +#if BX_GUI_SIGHANDLER
  44.569 +  if (bx_gui_sighandler) 
  44.570 +  {
  44.571 +    Bit32u mask = bx_gui->get_sighandler_mask ();
  44.572 +    for (Bit32u sig=0; sig<32; sig++)
  44.573 +    {
  44.574 +      if (mask & (1<<sig))
  44.575 +        signal (sig, bx_signal_handler);
  44.576 +    }
  44.577 +  }
  44.578 +#endif
  44.579 +}
  44.580 +
  44.581 +  void
  44.582 +bx_gui_c::set_text_charmap(Bit8u *fbuffer)
  44.583 +{
  44.584 +  memcpy(& BX_GUI_THIS vga_charmap, fbuffer, 0x2000);
  44.585 +  for (unsigned i=0; i<256; i++) BX_GUI_THIS char_changed[i] = 1;
  44.586 +  BX_GUI_THIS charmap_updated = 1;
  44.587 +}
  44.588 +
  44.589 +  void
  44.590 +bx_gui_c::set_text_charbyte(Bit16u address, Bit8u data)
  44.591 +{
  44.592 +  BX_GUI_THIS vga_charmap[address] = data;
  44.593 +  BX_GUI_THIS char_changed[address >> 5] = 1;
  44.594 +  BX_GUI_THIS charmap_updated = 1;
  44.595 +}
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/tools/ioemu/gui/gui.h	Mon Jan 17 16:03:22 2005 +0000
    45.3 @@ -0,0 +1,352 @@
    45.4 +/////////////////////////////////////////////////////////////////////////
    45.5 +// $Id: gui.h,v 1.40 2003/06/28 08:04:31 vruppert Exp $
    45.6 +/////////////////////////////////////////////////////////////////////////
    45.7 +//
    45.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
    45.9 +//
   45.10 +//    MandrakeSoft S.A.
   45.11 +//    43, rue d'Aboukir
   45.12 +//    75002 Paris - France
   45.13 +//    http://www.linux-mandrake.com/
   45.14 +//    http://www.mandrakesoft.com/
   45.15 +//
   45.16 +//  This library is free software; you can redistribute it and/or
   45.17 +//  modify it under the terms of the GNU Lesser General Public
   45.18 +//  License as published by the Free Software Foundation; either
   45.19 +//  version 2 of the License, or (at your option) any later version.
   45.20 +//
   45.21 +//  This library is distributed in the hope that it will be useful,
   45.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   45.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   45.24 +//  Lesser General Public License for more details.
   45.25 +//
   45.26 +//  You should have received a copy of the GNU Lesser General Public
   45.27 +//  License along with this library; if not, write to the Free Software
   45.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   45.29 +
   45.30 +typedef struct {
   45.31 +  Bit8u cs_start;
   45.32 +  Bit8u cs_end;
   45.33 +  Bit16u line_offset;
   45.34 +  Bit16u line_compare;
   45.35 +  Bit8u h_panning;
   45.36 +  Bit8u v_panning;
   45.37 +  bx_bool line_graphics;
   45.38 +} bx_vga_tminfo_t;
   45.39 +
   45.40 +
   45.41 +BOCHSAPI extern class bx_gui_c *bx_gui;
   45.42 +
   45.43 +
   45.44 +// The bx_gui_c class provides data and behavior that is common to
   45.45 +// all guis.  Each gui implementation will override the abstract methods.
   45.46 +class BOCHSAPI bx_gui_c : public logfunctions {
   45.47 +public:
   45.48 +  bx_gui_c (void);
   45.49 +  virtual ~bx_gui_c ();
   45.50 +  // Define the following functions in the module for your particular GUI
   45.51 +  // (x.cc, beos.cc, ...)
   45.52 +  virtual void specific_init(int argc, char **argv,
   45.53 +                 unsigned x_tilesize, unsigned y_tilesize, unsigned header_bar_y) = 0;
   45.54 +  virtual void text_update(Bit8u *old_text, Bit8u *new_text,
   45.55 +                          unsigned long cursor_x, unsigned long cursor_y,
   45.56 +                          bx_vga_tminfo_t tm_info, unsigned rows) = 0;
   45.57 +  virtual void graphics_tile_update(Bit8u *snapshot, unsigned x, unsigned y) = 0;
   45.58 +  virtual void handle_events(void) = 0;
   45.59 +  virtual void flush(void) = 0;
   45.60 +  virtual void clear_screen(void) = 0;
   45.61 +  virtual bx_bool palette_change(unsigned index, unsigned red, unsigned green, unsigned blue) = 0;
   45.62 +  virtual void dimension_update(unsigned x, unsigned y, unsigned fheight=0, unsigned fwidth=0, unsigned bpp=8) = 0;
   45.63 +  virtual unsigned create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim) = 0;
   45.64 +  virtual unsigned headerbar_bitmap(unsigned bmap_id, unsigned alignment, void (*f)(void)) = 0;
   45.65 +  virtual void replace_bitmap(unsigned hbar_id, unsigned bmap_id) = 0;
   45.66 +  virtual void show_headerbar(void) = 0;
   45.67 +  virtual int get_clipboard_text(Bit8u **bytes, Bit32s *nbytes)  = 0;
   45.68 +  virtual int set_clipboard_text(char *snapshot, Bit32u len) = 0;
   45.69 +  virtual void mouse_enabled_changed_specific (bx_bool val) = 0;
   45.70 +  virtual void exit(void) = 0;
   45.71 +  // set_display_mode() changes the mode between the configuration interface
   45.72 +  // and the simulation.  This is primarily intended for display libraries
   45.73 +  // which have a full-screen mode such as SDL, term, and svgalib.  The display
   45.74 +  // mode is set to DISP_MODE_CONFIG before displaying any configuration menus,
   45.75 +  // for panics that requires user input, when entering the debugger, etc.  It
   45.76 +  // is set to DISP_MODE_SIM when the Bochs simulation resumes.  The
   45.77 +  // enum is defined in gui/siminterface.h.
   45.78 +  virtual void set_display_mode (disp_mode_t newmode) { /* default=no action*/ }
   45.79 +  // These are only needed for the term gui. For all other guis they will
   45.80 +  // have no effect.
   45.81 +  // returns 32-bit bitmask in which 1 means the GUI should handle that signal
   45.82 +  virtual Bit32u get_sighandler_mask () {return 0;}
   45.83 +  // called when registered signal arrives
   45.84 +  virtual void sighandler (int sig) {}
   45.85 +#if BX_USE_IDLE_HACK
   45.86 +  // this is called from the CPU model when the HLT instruction is executed.
   45.87 +  virtual void sim_is_idle(void) {}
   45.88 +#endif
   45.89 +
   45.90 +  // The following function(s) are defined already, and your
   45.91 +  // GUI code calls them
   45.92 +  static void key_event(Bit32u key);
   45.93 +  static void set_text_charmap(Bit8u *fbuffer);
   45.94 +  static void set_text_charbyte(Bit16u address, Bit8u data);
   45.95 +
   45.96 +  void init(int argc, char **argv,
   45.97 +                 unsigned x_tilesize, unsigned y_tilesize);
   45.98 +  void update_drive_status_buttons (void);
   45.99 +  static void     mouse_enabled_changed (bx_bool val);
  45.100 +  static void init_signal_handlers ();
  45.101 +
  45.102 +
  45.103 +protected:
  45.104 +  // And these are defined and used privately in gui.cc
  45.105 +  static void floppyA_handler(void);
  45.106 +  static void floppyB_handler(void);
  45.107 +  static void cdromD_handler(void);
  45.108 +  static void reset_handler(void);
  45.109 +  static void power_handler(void);
  45.110 +  static void copy_handler(void);
  45.111 +  static void paste_handler(void);
  45.112 +  static void snapshot_handler(void);
  45.113 +  static void snapshot_checker(void *);
  45.114 +  static void config_handler(void);
  45.115 +  static void toggle_mouse_enable(void);
  45.116 +  static void userbutton_handler(void);
  45.117 +  static Bit32s make_text_snapshot (char **snapshot, Bit32u *length);
  45.118 +
  45.119 +  bx_bool floppyA_status;
  45.120 +  bx_bool floppyB_status;
  45.121 +  bx_bool cdromD_status;
  45.122 +  unsigned floppyA_bmap_id, floppyA_eject_bmap_id, floppyA_hbar_id;
  45.123 +  unsigned floppyB_bmap_id, floppyB_eject_bmap_id, floppyB_hbar_id;
  45.124 +  unsigned cdromD_bmap_id, cdromD_eject_bmap_id, cdromD_hbar_id;
  45.125 +  unsigned power_bmap_id,    power_hbar_id;
  45.126 +  unsigned reset_bmap_id,    reset_hbar_id;
  45.127 +  unsigned copy_bmap_id, copy_hbar_id;
  45.128 +  unsigned paste_bmap_id, paste_hbar_id;
  45.129 +  unsigned snapshot_bmap_id, snapshot_hbar_id;
  45.130 +  unsigned config_bmap_id, config_hbar_id;
  45.131 +  unsigned mouse_bmap_id, nomouse_bmap_id, mouse_hbar_id;
  45.132 +  unsigned user_bmap_id, user_hbar_id;
  45.133 +
  45.134 +  unsigned char vga_charmap[0x2000];
  45.135 +  bx_bool charmap_updated;
  45.136 +  bx_bool char_changed[256];
  45.137 +  disp_mode_t disp_mode;
  45.138 +  };
  45.139 +
  45.140 +
  45.141 +// Add this macro in the class declaration of each GUI, to define all the
  45.142 +// required virtual methods.  Example:
  45.143 +//   
  45.144 +//    class bx_rfb_gui_c : public bx_gui_c {
  45.145 +//    public:
  45.146 +//      bx_rfb_gui_c (void) {}
  45.147 +//      DECLARE_GUI_VIRTUAL_METHODS()
  45.148 +//    };
  45.149 +// Then, each method must be defined later in the file.
  45.150 +#define DECLARE_GUI_VIRTUAL_METHODS()                                         \
  45.151 +  virtual void specific_init(int argc, char **argv,                           \
  45.152 +                 unsigned x_tilesize, unsigned y_tilesize,                    \
  45.153 +		 unsigned header_bar_y);                                      \
  45.154 +  virtual void text_update(Bit8u *old_text, Bit8u *new_text,                  \
  45.155 +                          unsigned long cursor_x, unsigned long cursor_y,     \
  45.156 +                          bx_vga_tminfo_t tm_info, unsigned rows);            \
  45.157 +  virtual void graphics_tile_update(Bit8u *snapshot, unsigned x, unsigned y); \
  45.158 +  virtual void handle_events(void);                                           \
  45.159 +  virtual void flush(void);                                                   \
  45.160 +  virtual void clear_screen(void);                                            \
  45.161 +  virtual bx_bool palette_change(unsigned index,                              \
  45.162 +      unsigned red, unsigned green, unsigned blue);                           \
  45.163 +  virtual void dimension_update(unsigned x, unsigned y, unsigned fheight=0,   \
  45.164 +                                unsigned fwidth=0, unsigned bpp=8);           \
  45.165 +  virtual unsigned create_bitmap(const unsigned char *bmap,                   \
  45.166 +      unsigned xdim, unsigned ydim);                                          \
  45.167 +  virtual unsigned headerbar_bitmap(unsigned bmap_id, unsigned alignment,     \
  45.168 +      void (*f)(void));                                                       \
  45.169 +  virtual void replace_bitmap(unsigned hbar_id, unsigned bmap_id);            \
  45.170 +  virtual void show_headerbar(void);                                          \
  45.171 +  virtual int get_clipboard_text(Bit8u **bytes, Bit32s *nbytes);              \
  45.172 +  virtual int set_clipboard_text(char *snapshot, Bit32u len);                 \
  45.173 +  virtual void mouse_enabled_changed_specific (bx_bool val);                  \
  45.174 +  virtual void exit(void);                                                    \
  45.175 +  /* end of DECLARE_GUI_VIRTUAL_METHODS */
  45.176 +
  45.177 +#define BX_MAX_PIXMAPS 16
  45.178 +#define BX_MAX_HEADERBAR_ENTRIES 11
  45.179 +#define BX_HEADER_BAR_Y 32
  45.180 +
  45.181 +// align pixmaps towards left or right side of header bar
  45.182 +#define BX_GRAVITY_LEFT 10
  45.183 +#define BX_GRAVITY_RIGHT 11
  45.184 +
  45.185 +#define BX_KEY_PRESSED  0x00000000
  45.186 +#define BX_KEY_RELEASED 0x80000000
  45.187 +
  45.188 +#define BX_KEY_UNHANDLED 0x10000000
  45.189 +
  45.190 +#define BX_KEY_CTRL_L   0
  45.191 +#define BX_KEY_SHIFT_L  1
  45.192 +
  45.193 +#define BX_KEY_F1     2
  45.194 +#define BX_KEY_F2     3
  45.195 +#define BX_KEY_F3     4
  45.196 +#define BX_KEY_F4     5
  45.197 +#define BX_KEY_F5     6
  45.198 +#define BX_KEY_F6     7
  45.199 +#define BX_KEY_F7     8
  45.200 +#define BX_KEY_F8     9
  45.201 +#define BX_KEY_F9    10
  45.202 +#define BX_KEY_F10   11
  45.203 +#define BX_KEY_F11   12
  45.204 +#define BX_KEY_F12   13
  45.205 +
  45.206 +#define BX_KEY_CTRL_R    14
  45.207 +#define BX_KEY_SHIFT_R   15
  45.208 +#define BX_KEY_CAPS_LOCK 16
  45.209 +#define BX_KEY_NUM_LOCK  17
  45.210 +#define BX_KEY_ALT_L     18
  45.211 +#define BX_KEY_ALT_R     19
  45.212 +
  45.213 +#define BX_KEY_A     20
  45.214 +#define BX_KEY_B     21
  45.215 +#define BX_KEY_C     22
  45.216 +#define BX_KEY_D     23
  45.217 +#define BX_KEY_E     24
  45.218 +#define BX_KEY_F     25
  45.219 +#define BX_KEY_G     26
  45.220 +#define BX_KEY_H     27
  45.221 +#define BX_KEY_I     28
  45.222 +#define BX_KEY_J     29
  45.223 +#define BX_KEY_K     30
  45.224 +#define BX_KEY_L     31
  45.225 +#define BX_KEY_M     32
  45.226 +#define BX_KEY_N     33
  45.227 +#define BX_KEY_O     34
  45.228 +#define BX_KEY_P     35
  45.229 +#define BX_KEY_Q     36
  45.230 +#define BX_KEY_R     37
  45.231 +#define BX_KEY_S     38
  45.232 +#define BX_KEY_T     39
  45.233 +#define BX_KEY_U     40
  45.234 +#define BX_KEY_V     41
  45.235 +#define BX_KEY_W     42
  45.236 +#define BX_KEY_X     43
  45.237 +#define BX_KEY_Y     44
  45.238 +#define BX_KEY_Z     45
  45.239 +
  45.240 +#define BX_KEY_0     46
  45.241 +#define BX_KEY_1     47
  45.242 +#define BX_KEY_2     48
  45.243 +#define BX_KEY_3     49
  45.244 +#define BX_KEY_4     50
  45.245 +#define BX_KEY_5     51
  45.246 +#define BX_KEY_6     52
  45.247 +#define BX_KEY_7     53
  45.248 +#define BX_KEY_8     54
  45.249 +#define BX_KEY_9     55
  45.250 +
  45.251 +#define BX_KEY_ESC    56
  45.252 +
  45.253 +#define BX_KEY_SPACE         57
  45.254 +#define BX_KEY_SINGLE_QUOTE  58
  45.255 +#define BX_KEY_COMMA         59
  45.256 +#define BX_KEY_PERIOD        60
  45.257 +#define BX_KEY_SLASH         61
  45.258 +
  45.259 +#define BX_KEY_SEMICOLON     62
  45.260 +#define BX_KEY_EQUALS        63
  45.261 +
  45.262 +#define BX_KEY_LEFT_BRACKET  64
  45.263 +#define BX_KEY_BACKSLASH     65
  45.264 +#define BX_KEY_RIGHT_BRACKET 66
  45.265 +#define BX_KEY_MINUS         67
  45.266 +#define BX_KEY_GRAVE         68
  45.267 +
  45.268 +#define BX_KEY_BACKSPACE     69
  45.269 +#define BX_KEY_ENTER         70
  45.270 +#define BX_KEY_TAB           71
  45.271 +
  45.272 +#define BX_KEY_LEFT_BACKSLASH 72
  45.273 +#define BX_KEY_PRINT         73
  45.274 +#define BX_KEY_SCRL_LOCK     74
  45.275 +#define BX_KEY_PAUSE         75
  45.276 +
  45.277 +#define BX_KEY_INSERT        76
  45.278 +#define BX_KEY_DELETE        77
  45.279 +#define BX_KEY_HOME          78
  45.280 +#define BX_KEY_END           79
  45.281 +#define BX_KEY_PAGE_UP       80
  45.282 +#define BX_KEY_PAGE_DOWN     81
  45.283 +
  45.284 +#define BX_KEY_KP_ADD        82
  45.285 +#define BX_KEY_KP_SUBTRACT   83
  45.286 +#define BX_KEY_KP_END        84
  45.287 +#define BX_KEY_KP_DOWN       85
  45.288 +#define BX_KEY_KP_PAGE_DOWN  86
  45.289 +#define BX_KEY_KP_LEFT       87
  45.290 +#define BX_KEY_KP_RIGHT      88
  45.291 +#define BX_KEY_KP_HOME       89
  45.292 +#define BX_KEY_KP_UP         90
  45.293 +#define BX_KEY_KP_PAGE_UP    91
  45.294 +#define BX_KEY_KP_INSERT     92
  45.295 +#define BX_KEY_KP_DELETE     93
  45.296 +#define BX_KEY_KP_5          94
  45.297 +
  45.298 +#define BX_KEY_UP            95
  45.299 +#define BX_KEY_DOWN          96
  45.300 +#define BX_KEY_LEFT          97
  45.301 +#define BX_KEY_RIGHT         98
  45.302 +
  45.303 +#define BX_KEY_KP_ENTER      99
  45.304 +#define BX_KEY_KP_MULTIPLY  100
  45.305 +#define BX_KEY_KP_DIVIDE    101
  45.306 +
  45.307 +#define BX_KEY_WIN_L        102
  45.308 +#define BX_KEY_WIN_R        103
  45.309 +#define BX_KEY_MENU         104
  45.310 +
  45.311 +#define BX_KEY_ALT_SYSREQ   105
  45.312 +#define BX_KEY_CTRL_BREAK   106
  45.313 +
  45.314 +#define BX_KEY_INT_BACK     107
  45.315 +#define BX_KEY_INT_FORWARD  108
  45.316 +#define BX_KEY_INT_STOP     109
  45.317 +#define BX_KEY_INT_MAIL     110
  45.318 +#define BX_KEY_INT_SEARCH   111
  45.319 +#define BX_KEY_INT_FAV      112
  45.320 +#define BX_KEY_INT_HOME     113
  45.321 +
  45.322 +#define BX_KEY_POWER_MYCOMP 114
  45.323 +#define BX_KEY_POWER_CALC   115
  45.324 +#define BX_KEY_POWER_SLEEP  116
  45.325 +#define BX_KEY_POWER_POWER  117
  45.326 +#define BX_KEY_POWER_WAKE   118
  45.327 +
  45.328 +#define BX_KEY_NBKEYS       119
  45.329 +// If you add BX_KEYs Please update 
  45.330 +// - BX_KEY_NBKEYS
  45.331 +// - the scancodes table in the file iodev/scancodes.cc
  45.332 +// - the bx_key_symbol table in the file gui/keymap.cc
  45.333 +
  45.334 +
  45.335 +/////////////// GUI plugin support
  45.336 +
  45.337 +// Define macro to supply gui plugin code.  This macro is called once in GUI to
  45.338 +// supply the plugin initialization methods.  Since it is nearly identical for
  45.339 +// each gui module, the macro is easier to maintain than pasting the same code
  45.340 +// in each one.
  45.341 +//
  45.342 +// Each gui should declare a class pointer called "theGui" which is derived
  45.343 +// from bx_gui_c, before calling this macro.  For example, the SDL port
  45.344 +// says:
  45.345 +//   static bx_sdl_gui_c *theGui;
  45.346 +
  45.347 +#define IMPLEMENT_GUI_PLUGIN_CODE(gui_name)                           \
  45.348 +  int lib##gui_name##_LTX_plugin_init(plugin_t *plugin,               \
  45.349 +          plugintype_t type, int argc, char *argv[]) {                \
  45.350 +    genlog->info("installing %s module as the Bochs GUI", #gui_name); \
  45.351 +    theGui = new bx_##gui_name##_gui_c ();                            \
  45.352 +    bx_gui = theGui;                                                  \
  45.353 +    return(0); /* Success */                                          \
  45.354 +  }                                                                   \
  45.355 +  void lib##gui_name##_LTX_plugin_fini(void) { }
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/tools/ioemu/gui/icon_bochs.h	Mon Jan 17 16:03:22 2005 +0000
    46.3 @@ -0,0 +1,40 @@
    46.4 +/////////////////////////////////////////////////////////////////////////
    46.5 +// $Id: icon_bochs.h,v 1.3 2001/10/03 13:10:37 bdenney Exp $
    46.6 +/////////////////////////////////////////////////////////////////////////
    46.7 +//
    46.8 +//  Copyright (C) 2001  MandrakeSoft S.A.
    46.9 +//
   46.10 +//    MandrakeSoft S.A.
   46.11 +//    43, rue d'Aboukir
   46.12 +//    75002 Paris - France
   46.13 +//    http://www.linux-mandrake.com/
   46.14 +//    http://www.mandrakesoft.com/
   46.15 +//
   46.16 +//  This library is free software; you can redistribute it and/or
   46.17 +//  modify it under the terms of the GNU Lesser General Public
   46.18 +//  License as published by the Free Software Foundation; either
   46.19 +//  version 2 of the License, or (at your option) any later version.
   46.20 +//
   46.21 +//  This library is distributed in the hope that it will be useful,
   46.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   46.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   46.24 +//  Lesser General Public License for more details.
   46.25 +//
   46.26 +//  You should have received a copy of the GNU Lesser General Public
   46.27 +//  License along with this library; if not, write to the Free Software
   46.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   46.29 +
   46.30 +#define bochs_icon_width 32
   46.31 +#define bochs_icon_height 32
   46.32 +static unsigned char bochs_icon_bits[] = {
   46.33 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00,
   46.34 +  0xe0, 0xff, 0xff, 0x07, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f,
   46.35 +  0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc3, 0xc3, 0x3f,
   46.36 +  0xfc, 0xc3, 0xc3, 0x3f, 0xf8, 0xc1, 0x83, 0x1f, 0xf0, 0xc0, 0x03, 0x0f,
   46.37 +  0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
   46.38 +  0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00,
   46.39 +  0x00, 0xc0, 0x03, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xf0, 0xc0, 0x03, 0x0f,
   46.40 +  0xf8, 0xc1, 0x83, 0x1f, 0xfc, 0xc3, 0xc3, 0x3f, 0xfc, 0xc3, 0xc3, 0x3f,
   46.41 +  0xfc, 0xc7, 0xe3, 0x3f, 0xfc, 0xc7, 0xe3, 0x3f, 0xf8, 0xff, 0xff, 0x1f,
   46.42 +  0xf8, 0xff, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x00,
   46.43 +  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/tools/ioemu/gui/icon_bochs.xpm	Mon Jan 17 16:03:22 2005 +0000
    47.3 @@ -0,0 +1,45 @@
    47.4 +/* XPM */
    47.5 +static char *icon_bochs_xpm[] = {
    47.6 +/* columns rows colors chars-per-pixel */
    47.7 +"32 32 7 1",
    47.8 +"  c black",
    47.9 +". c #800000",
   47.10 +"X c #808000",
   47.11 +"o c yellow",
   47.12 +"O c #808080",
   47.13 +"+ c #c0c0c0",
   47.14 +"@ c None",
   47.15 +/* pixels */
   47.16 +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
   47.17 +"@@@@@@@@@@.    +@@@+  +@@@@@@@@@",
   47.18 +"@@@@@@@@    Oo  @+     .@@@@@@@@",
   47.19 +"@@@@@@    ooooo    ooo.  @@@@@@@",
   47.20 +"@@@@   oooooo.    oooooX   @@@@@",
   47.21 +"@+  XoooooO   XX   ooooooo  O@@@",
   47.22 +"+  oooooO   XXXX X  ooooooo   @@",
   47.23 +"@   ooo   XXXXXX XX   ooooooX   ",
   47.24 +"@@.     XXXXXXXX XXX   Xooooo.  ",
   47.25 +"@@@@  OXXXXXXXXX XXXXXO   oO  .@",
   47.26 +"@@@@    .XXXXXXX XXXXXXX.    @@@",
   47.27 +"@+   oo   XXXX    XXXXXXXX   @@@",
   47.28 +"@   ooooo          XXXXXX      O",
   47.29 +"@@O  oooooo  OXXXX.  XX  Oooo   ",
   47.30 +"@@@@  .ooooo.  XXXXX    oooo  O@",
   47.31 +"@@@@    Oooooo   XX.  .ooo   @@@",
   47.32 +"@@@@ XX   oooooo    .oooo.  @@@@",
   47.33 +"@@@@ ooXX   .        ooO  o @@@@",
   47.34 +"@@@@ oooXX.   .Xo XX    XXo @@@@",
   47.35 +"@@@@ ooooXXXXXXXo XXXX.XXoo @@@@",
   47.36 +"@@@+ oooooooooooo XooXXXooo @@@@",
   47.37 +"@@@. oooooooooooo Xooooooo  @@@@",
   47.38 +"@@@+   oooooooooo XoooooX .@@@@@",
   47.39 +"@@@@@O  XoooooooX ooooo  +@@@@@@",
   47.40 +"@@@@@@@   ooooooX oooX  @@@@@@@@",
   47.41 +"@@@@@@@@@   ooooX oo   @@@@@@@@@",
   47.42 +"@@@@@@@@@@.  Ooo.    O@@@@@@@@@@",
   47.43 +"@@@@@@@@@@@@        @@@@@@@@@@@@",
   47.44 +"@@@@@@@@@@@@@@O   O@@@@@@@@@@@@@",
   47.45 +"@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@",
   47.46 +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
   47.47 +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
   47.48 +};
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/tools/ioemu/gui/keymap.cc	Mon Jan 17 16:03:22 2005 +0000
    48.3 @@ -0,0 +1,330 @@
    48.4 +/////////////////////////////////////////////////////////////////////////
    48.5 +// $Id: keymap.cc,v 1.16 2003/10/11 10:43:24 vruppert Exp $
    48.6 +/////////////////////////////////////////////////////////////////////////
    48.7 +//
    48.8 +//  Copyright (C) 2002 MandrakeSoft S.A.
    48.9 +//
   48.10 +//  This library is free software; you can redistribute it and/or
   48.11 +//  modify it under the terms of the GNU Lesser General Public
   48.12 +//  License as published by the Free Software Foundation; either
   48.13 +//  version 2 of the License, or (at your option) any later version.
   48.14 +//
   48.15 +//  This library is distributed in the hope that it will be useful,
   48.16 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   48.17 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   48.18 +//  Lesser General Public License for more details.
   48.19 +//
   48.20 +//  You should have received a copy of the GNU Lesser General Public
   48.21 +//  License along with this library; if not, write to the Free Software
   48.22 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   48.23 +
   48.24 +/////////////////////////////////////////////////////////////////////////
   48.25 +//
   48.26 +// Todo
   48.27 +//  . Currently supported by sdl, wxGTK and x11. Check if other guis need mapping.
   48.28 +//  . Tables look-up should be optimised.
   48.29 +//
   48.30 +
   48.31 +#include "bochs.h"
   48.32 +
   48.33 +// Table of bochs "BX_KEY_*" symbols
   48.34 +// the table must be in BX_KEY_* order
   48.35 +char *bx_key_symbol[BX_KEY_NBKEYS] = {
   48.36 +  "BX_KEY_CTRL_L",         "BX_KEY_SHIFT_L",        "BX_KEY_F1",
   48.37 +  "BX_KEY_F2",             "BX_KEY_F3",             "BX_KEY_F4",
   48.38 +  "BX_KEY_F5",             "BX_KEY_F6",             "BX_KEY_F7",
   48.39 +  "BX_KEY_F8",             "BX_KEY_F9",             "BX_KEY_F10",
   48.40 +  "BX_KEY_F11",            "BX_KEY_F12",            "BX_KEY_CTRL_R",
   48.41 +  "BX_KEY_SHIFT_R",        "BX_KEY_CAPS_LOCK",      "BX_KEY_NUM_LOCK",
   48.42 +  "BX_KEY_ALT_L",          "BX_KEY_ALT_R",          "BX_KEY_A",
   48.43 +  "BX_KEY_B",              "BX_KEY_C",              "BX_KEY_D",
   48.44 +  "BX_KEY_E",              "BX_KEY_F",              "BX_KEY_G",
   48.45 +  "BX_KEY_H",              "BX_KEY_I",              "BX_KEY_J",
   48.46 +  "BX_KEY_K",              "BX_KEY_L",              "BX_KEY_M",
   48.47 +  "BX_KEY_N",              "BX_KEY_O",              "BX_KEY_P",
   48.48 +  "BX_KEY_Q",              "BX_KEY_R",              "BX_KEY_S",
   48.49 +  "BX_KEY_T",              "BX_KEY_U",              "BX_KEY_V",
   48.50 +  "BX_KEY_W",              "BX_KEY_X",              "BX_KEY_Y",
   48.51 +  "BX_KEY_Z",              "BX_KEY_0",              "BX_KEY_1",
   48.52 +  "BX_KEY_2",              "BX_KEY_3",              "BX_KEY_4",
   48.53 +  "BX_KEY_5",              "BX_KEY_6",              "BX_KEY_7",
   48.54 +  "BX_KEY_8",              "BX_KEY_9",              "BX_KEY_ESC",
   48.55 +  "BX_KEY_SPACE",          "BX_KEY_SINGLE_QUOTE",   "BX_KEY_COMMA",
   48.56 +  "BX_KEY_PERIOD",         "BX_KEY_SLASH",          "BX_KEY_SEMICOLON",
   48.57 +  "BX_KEY_EQUALS",         "BX_KEY_LEFT_BRACKET",   "BX_KEY_BACKSLASH",
   48.58 +  "BX_KEY_RIGHT_BRACKET",  "BX_KEY_MINUS",          "BX_KEY_GRAVE",
   48.59 +  "BX_KEY_BACKSPACE",      "BX_KEY_ENTER",          "BX_KEY_TAB",
   48.60 +  "BX_KEY_LEFT_BACKSLASH", "BX_KEY_PRINT",          "BX_KEY_SCRL_LOCK",
   48.61 +  "BX_KEY_PAUSE",          "BX_KEY_INSERT",         "BX_KEY_DELETE",
   48.62 +  "BX_KEY_HOME",           "BX_KEY_END",            "BX_KEY_PAGE_UP",
   48.63 +  "BX_KEY_PAGE_DOWN",      "BX_KEY_KP_ADD",         "BX_KEY_KP_SUBTRACT",
   48.64 +  "BX_KEY_KP_END",         "BX_KEY_KP_DOWN",        "BX_KEY_KP_PAGE_DOWN",
   48.65 +  "BX_KEY_KP_LEFT",        "BX_KEY_KP_RIGHT",       "BX_KEY_KP_HOME",
   48.66 +  "BX_KEY_KP_UP",          "BX_KEY_KP_PAGE_UP",     "BX_KEY_KP_INSERT",
   48.67 +  "BX_KEY_KP_DELETE",      "BX_KEY_KP_5",           "BX_KEY_UP",
   48.68 +  "BX_KEY_DOWN",           "BX_KEY_LEFT",           "BX_KEY_RIGHT",
   48.69 +  "BX_KEY_KP_ENTER",       "BX_KEY_KP_MULTIPLY",    "BX_KEY_KP_DIVIDE",
   48.70 +  "BX_KEY_WIN_L",          "BX_KEY_WIN_R",          "BX_KEY_MENU",           
   48.71 +  "BX_KEY_ALT_SYSREQ",     "BX_KEY_CTRL_BREAK",     "BX_KEY_INT_BACK",       
   48.72 +  "BX_KEY_INT_FORWARD",    "BX_KEY_INT_STOP",       "BX_KEY_INT_MAIL",       
   48.73 +  "BX_KEY_INT_SEARCH",     "BX_KEY_INT_FAV",        "BX_KEY_INT_HOME",       
   48.74 +  "BX_KEY_POWER_MYCOMP",   "BX_KEY_POWER_CALC",     "BX_KEY_POWER_SLEEP",    
   48.75 +  "BX_KEY_POWER_POWER",    "BX_KEY_POWER_WAKE",
   48.76 +  };
   48.77 +
   48.78 +bx_keymap_c bx_keymap;
   48.79 +
   48.80 +#define LOG_THIS bx_keymap.
   48.81 +
   48.82 +bx_keymap_c::bx_keymap_c(void)
   48.83 +{
   48.84 +    put("KMAP");
   48.85 +
   48.86 +    keymapCount = 0;
   48.87 +    keymapTable = (BXKeyEntry *)NULL;
   48.88 +
   48.89 +}
   48.90 +
   48.91 +bx_keymap_c::~bx_keymap_c(void)
   48.92 +{
   48.93 +    if(keymapTable != NULL) {
   48.94 +      free(keymapTable);
   48.95 +      keymapTable = (BXKeyEntry *)NULL;
   48.96 +      }
   48.97 +    keymapCount = 0;
   48.98 +}
   48.99 +
  48.100 +    void
  48.101 +bx_keymap_c::loadKeymap(Bit32u stringToSymbol(const char*))
  48.102 +{
  48.103 +  if(bx_options.keyboard.OuseMapping->get()) {
  48.104 +    loadKeymap(stringToSymbol,bx_options.keyboard.Okeymap->getptr());
  48.105 +    }
  48.106 +}
  48.107 +
  48.108 +
  48.109 +bx_bool 
  48.110 +bx_keymap_c::isKeymapLoaded ()
  48.111 +{
  48.112 +  return (keymapCount > 0);
  48.113 +}
  48.114 +
  48.115 +
  48.116 +///////////////////
  48.117 +// I'll add these to the keymap object in a minute.
  48.118 +static unsigned char *lineptr = NULL;
  48.119 +static int lineCount;
  48.120 +
  48.121 +static void
  48.122 +init_parse ()
  48.123 +{
  48.124 +  lineCount = 0;
  48.125 +}
  48.126 +
  48.127 +static void
  48.128 +init_parse_line (char *line_to_parse)
  48.129 +{
  48.130 +  // chop off newline
  48.131 +  lineptr = (unsigned char *)line_to_parse;
  48.132 +  char *nl;
  48.133 +  if( (nl = strchr(line_to_parse,'\n')) != NULL) {
  48.134 +    *nl = 0;
  48.135 +  }
  48.136 +}
  48.137 +
  48.138 +static Bit32s
  48.139 +get_next_word (char *output)
  48.140 +{
  48.141 +  char *copyp = output;
  48.142 +  // find first nonspace
  48.143 +  while (*lineptr && isspace (*lineptr))
  48.144 +    lineptr++;
  48.145 +  if (!*lineptr) 
  48.146 +    return -1;  // nothing but spaces until end of line
  48.147 +  if (*lineptr == '#')
  48.148 +    return -1;  // nothing but a comment
  48.149 +  // copy nonspaces into the output
  48.150 +  while (*lineptr && !isspace (*lineptr))
  48.151 +    *copyp++ = *lineptr++;
  48.152 +  *copyp=0;  // null terminate the copy
  48.153 +  // there must be at least one nonspace, since that's why we stopped the
  48.154 +  // first loop!
  48.155 +  BX_ASSERT (copyp != output);
  48.156 +  return 0;
  48.157 +}
  48.158 +
  48.159 +static Bit32s
  48.160 +get_next_keymap_line (FILE *fp, char *bxsym, char *modsym, Bit32s *ascii, char *hostsym)
  48.161 +{
  48.162 +  char line[256];
  48.163 +  char buf[256];
  48.164 +  line[0] = 0;
  48.165 +  while (1) {
  48.166 +    lineCount++;
  48.167 +    if (!fgets(line, sizeof(line)-1, fp)) return -1;  // EOF
  48.168 +    init_parse_line (line);
  48.169 +    if (get_next_word (bxsym) >= 0) {
  48.170 +      modsym[0] = 0;
  48.171 +      char *p;
  48.172 +      if ((p = strchr (bxsym, '+')) != NULL) {
  48.173 +	*p = 0;  // truncate bxsym.
  48.174 +	p++;  // move one char beyond the +
  48.175 +	strcpy (modsym, p);  // copy the rest to modsym
  48.176 +      }
  48.177 +      if (get_next_word (buf) < 0) {
  48.178 +	BX_PANIC (("keymap line %d: expected 3 columns", lineCount));
  48.179 +	return -1;
  48.180 +      }
  48.181 +      if (buf[0] == '\'' && buf[2] == '\'' && buf[3]==0) {
  48.182 +	*ascii = (Bit8u) buf[1];
  48.183 +      } else if (!strcmp(buf, "space")) {
  48.184 +	*ascii = ' ';
  48.185 +      } else if (!strcmp(buf, "return")) {
  48.186 +	*ascii = '\n';
  48.187 +      } else if (!strcmp(buf, "tab")) {
  48.188 +	*ascii = '\t';
  48.189 +      } else if (!strcmp(buf, "backslash")) {
  48.190 +	*ascii = '\\';
  48.191 +      } else if (!strcmp(buf, "apostrophe")) {
  48.192 +	*ascii = '\'';
  48.193 +      } else if (!strcmp(buf, "none")) {
  48.194 +	*ascii = -1;
  48.195 +      } else {
  48.196 +	BX_PANIC (("keymap line %d: ascii equivalent is \"%s\" but it must be char constant like 'x', or one of space,tab,return,none", lineCount, buf));
  48.197 +      }
  48.198 +      if (get_next_word (hostsym) < 0) {
  48.199 +        BX_PANIC (("keymap line %d: expected 3 columns", lineCount));
  48.200 +	return -1;
  48.201 +      }
  48.202 +      return 0;
  48.203 +    }
  48.204 +    // no words on this line, keep reading.
  48.205 +  }
  48.206 +}
  48.207 +
  48.208 +    void
  48.209 +bx_keymap_c::loadKeymap(Bit32u stringToSymbol(const char*), const char* filename)
  48.210 +{
  48.211 +    FILE   *keymapFile;
  48.212 +    char baseSym[256], modSym[256], hostSym[256]; 
  48.213 +    Bit32s ascii;
  48.214 +    Bit32u baseKey, modKey, hostKey;
  48.215 +    struct stat status;
  48.216 +
  48.217 +    if (stat(filename, &status)) {
  48.218 +      BX_PANIC(("Can not stat keymap file '%s'.",filename));
  48.219 +      }
  48.220 +
  48.221 +    if (!(S_ISREG(status.st_mode))) {
  48.222 +      BX_PANIC(("Keymap file '%s' is not a file",filename));
  48.223 +      }
  48.224 +
  48.225 +    if((keymapFile = fopen(filename,"r"))==NULL) {
  48.226 +      BX_PANIC(("Can not open keymap file '%s'.",filename));
  48.227 +      }
  48.228 +    
  48.229 +    BX_INFO(("Loading keymap from '%s'",filename));
  48.230 +    init_parse ();
  48.231 +
  48.232 +    // Read keymap file one line at a time
  48.233 +    while(1) {
  48.234 +      if (get_next_keymap_line (keymapFile, 
  48.235 +            baseSym, modSym, &ascii, hostSym) < 0) { break; }
  48.236 +
  48.237 +
  48.238 +      // convert X_KEY_* symbols to values
  48.239 +      baseKey = convertStringToBXKey(baseSym);
  48.240 +      modKey = convertStringToBXKey(modSym);
  48.241 +      hostKey = 0;
  48.242 +      if (stringToSymbol != NULL)
  48.243 +        hostKey = stringToSymbol(hostSym);
  48.244 +
  48.245 +      BX_DEBUG (("baseKey='%s' (%d), modSym='%s' (%d), ascii=%d, guisym='%s' (%d)", baseSym, baseKey, modSym, modKey, ascii, hostSym, hostKey));
  48.246 +       
  48.247 +      // Check if data is valid
  48.248 +      if( baseKey==BX_KEYMAP_UNKNOWN ) {
  48.249 +        BX_PANIC (("line %d: unknown BX_KEY constant '%s'",lineCount,baseSym));
  48.250 +        continue;
  48.251 +        }
  48.252 +
  48.253 +      if( hostKey==BX_KEYMAP_UNKNOWN ) {
  48.254 +        BX_PANIC (("line %d: unknown host key name '%s'",lineCount,hostSym));
  48.255 +        continue;
  48.256 +        }
  48.257 +
  48.258 +      keymapTable=(BXKeyEntry*)realloc(keymapTable,(keymapCount+1) * sizeof(BXKeyEntry));
  48.259 +      
  48.260 +      if(keymapTable==NULL) 
  48.261 +        BX_PANIC(("Can not allocate memory for keymap table."));
  48.262 +
  48.263 +      keymapTable[keymapCount].baseKey=baseKey;
  48.264 +      keymapTable[keymapCount].modKey=modKey;
  48.265 +      keymapTable[keymapCount].ascii=ascii;
  48.266 +      keymapTable[keymapCount].hostKey=hostKey;
  48.267 +      
  48.268 +      keymapCount++;
  48.269 +      }
  48.270 +
  48.271 +    BX_INFO(("Loaded %d symbols",keymapCount));
  48.272 +
  48.273 +    fclose(keymapFile);
  48.274 +}
  48.275 +
  48.276 +    Bit32u
  48.277 +bx_keymap_c::convertStringToBXKey(const char* string)
  48.278 +{
  48.279 +    Bit16u i;
  48.280 +
  48.281 +    // We look through the bx_key_symbol table to find the searched string
  48.282 +    for (i=0; i<BX_KEY_NBKEYS; i++) {
  48.283 +      if (strcmp(string,bx_key_symbol[i])==0) {
  48.284 +        return i;
  48.285 +        }
  48.286 +      }
  48.287 +  
  48.288 +    // Key is not known
  48.289 +    return BX_KEYMAP_UNKNOWN;
  48.290 +}
  48.291 +
  48.292 +    BXKeyEntry *
  48.293 +bx_keymap_c::findHostKey(Bit32u key)
  48.294 +{
  48.295 +    Bit16u i;
  48.296 +
  48.297 +    // We look through the keymap table to find the searched key
  48.298 +    for (i=0; i<keymapCount; i++) {
  48.299 +      if (keymapTable[i].hostKey == key) {
  48.300 +	BX_DEBUG (("key 0x%02x matches hostKey for entry #%d", key, i));
  48.301 +        return &keymapTable[i];
  48.302 +        }
  48.303 +      }
  48.304 +    BX_DEBUG (("key %02x matches no entries", key));
  48.305 +
  48.306 +    // Return default
  48.307 +    return NULL;
  48.308 +}
  48.309 +
  48.310 +    BXKeyEntry *
  48.311 +bx_keymap_c::findAsciiChar(Bit8u ch)
  48.312 +{
  48.313 +    Bit16u i;
  48.314 +    BX_DEBUG (("findAsciiChar (0x%02x)", ch));
  48.315 +
  48.316 +    // We look through the keymap table to find the searched key
  48.317 +    for (i=0; i<keymapCount; i++) {
  48.318 +      if (keymapTable[i].ascii == ch) {
  48.319 +	BX_DEBUG (("key %02x matches ascii for entry #%d", ch, i));
  48.320 +        return &keymapTable[i];
  48.321 +        }
  48.322 +      }
  48.323 +    BX_DEBUG (("key 0x%02x matches no entries", ch));
  48.324 +
  48.325 +    // Return default
  48.326 +    return NULL;
  48.327 +}
  48.328 +
  48.329 +    char *
  48.330 +bx_keymap_c::getBXKeyName(Bit32u key)
  48.331 +{
  48.332 +    return bx_key_symbol[key & 0x7fffffff];
  48.333 +}
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/tools/ioemu/gui/keymap.h	Mon Jan 17 16:03:22 2005 +0000
    49.3 @@ -0,0 +1,77 @@
    49.4 +/////////////////////////////////////////////////////////////////////////
    49.5 +// $Id: keymap.h,v 1.9 2003/07/12 08:17:10 vruppert Exp $
    49.6 +/////////////////////////////////////////////////////////////////////////
    49.7 +//
    49.8 +//  Copyright (C) 2002  MandrakeSoft S.A.
    49.9 +//
   49.10 +//  This library is free software; you can redistribute it and/or
   49.11 +//  modify it under the terms of the GNU Lesser General Public
   49.12 +//  License as published by the Free Software Foundation; either
   49.13 +//  version 2 of the License, or (at your option) any later version.
   49.14 +//
   49.15 +//  This library is distributed in the hope that it will be useful,
   49.16 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   49.17 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   49.18 +//  Lesser General Public License for more details.
   49.19 +//
   49.20 +//  You should have received a copy of the GNU Lesser General Public
   49.21 +//  License along with this library; if not, write to the Free Software
   49.22 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   49.23 +
   49.24 +/////////////////////////////////////////////////////////////////////////
   49.25 +//
   49.26 +// Methods of bx_keymap_c :
   49.27 +//
   49.28 +// - loadKeymap(Bit32u convertStringToSymbol(const char*));
   49.29 +//   loads the configuration specified keymap file if keymapping is enabled
   49.30 +//   using convertStringToSymbol to convert strings to client constants
   49.31 +//
   49.32 +// - loadKeymap(Bit32u convertStringToSymbol(const char*), const char* filename);
   49.33 +//   loads the specified keymap file 
   49.34 +//   using convertStringToSymbol to convert strings to client constants
   49.35 +//
   49.36 +// - isKeymapLoaded () returns true if the keymap contains any valid key
   49.37 +//   entries.
   49.38 +//
   49.39 +// - convertStringToBXKey
   49.40 +//   convert a null-terminate string to a BX_KEY code
   49.41 +//
   49.42 +// - findHostKey(Bit32u key)
   49.43 +// - findAsciiChar(Bit8u ch)
   49.44 +//   Each of these methods returns a pointer to a BXKeyEntry structure
   49.45 +//   corresponding to a key.  findHostKey() finds an entry whose hostKey
   49.46 +//   value matches the target value, and findAsciiChar() finds an entry
   49.47 +//   whose ASCII code matches the search value.
   49.48 +
   49.49 +// In case of unknown symbol
   49.50 +#define BX_KEYMAP_UNKNOWN   0xFFFFFFFF
   49.51 +
   49.52 +// Structure of an element of the keymap table
   49.53 +typedef struct BOCHSAPI { 
   49.54 +  Bit32u baseKey;   // base key
   49.55 +  Bit32u modKey;   // modifier key that must be held down
   49.56 +  Bit32s ascii;    // ascii equivalent, if any
   49.57 +  Bit32u hostKey;  // value that the host's OS or library recognizes
   49.58 +  } BXKeyEntry;
   49.59 +
   49.60 +class BOCHSAPI bx_keymap_c : public logfunctions {
   49.61 +public:
   49.62 +  bx_keymap_c(void);
   49.63 +  ~bx_keymap_c(void);
   49.64 +
   49.65 +  void   loadKeymap(Bit32u(*)(const char*));
   49.66 +  void   loadKeymap(Bit32u(*)(const char*),const char *filename);
   49.67 +  bx_bool isKeymapLoaded ();
   49.68 +
   49.69 +  BXKeyEntry *findHostKey(Bit32u hostkeynum);
   49.70 +  BXKeyEntry *findAsciiChar(Bit8u ascii);
   49.71 +  char *getBXKeyName(Bit32u key);
   49.72 +
   49.73 +private:
   49.74 +  Bit32u convertStringToBXKey(const char *);
   49.75 + 
   49.76 +  BXKeyEntry *keymapTable;
   49.77 +  Bit16u   keymapCount;
   49.78 +  };
   49.79 +
   49.80 +BOCHSAPI extern bx_keymap_c bx_keymap;
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/tools/ioemu/gui/keymaps/convertmap.pl	Mon Jan 17 16:03:22 2005 +0000
    50.3 @@ -0,0 +1,14 @@
    50.4 +#!/usr/bin/perl
    50.5 +# little utility script that I used to convert key map files from
    50.6 +# the pre-March 11 format to the post-March 11 format.  It doesn't
    50.7 +# do anything smart with the ascii equivalents and modifiers, so ATM those must
    50.8 +# be added by hand.
    50.9 +
   50.10 +while (<STDIN>)
   50.11 +{
   50.12 +  chop;
   50.13 +  s/^ *//;
   50.14 +  if (/^#/ || /^ *$/) { print "$_\n"; next;}
   50.15 +  ($key, $equals, $xksym) = split (/ +/);
   50.16 +  printf ("%-45s %-10s %s\n", $key, 'none', "XK_$xksym");
   50.17 +}
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/tools/ioemu/gui/keymaps/sdl-pc-de.map	Mon Jan 17 16:03:22 2005 +0000
    51.3 @@ -0,0 +1,222 @@
    51.4 +# Bochs Keymap file
    51.5 +# $Id: sdl-pc-de.map,v 1.2 2002/10/24 21:06:55 bdenney Exp $
    51.6 +# Target: PC(x86) keyboard, DE keymap, SDL gui on X11
    51.7 +# Author: Volker Ruppert
    51.8 +#
    51.9 +# The keymap file describes the layout of a keyboard, and how it translates
   51.10 +# into Bochs key codes.
   51.11 +#
   51.12 +# Format:
   51.13 +#  BX_Keysym                ASCII_equivalent      Host_key_name
   51.14 +#
   51.15 +# Or, for keys that require modifiers:
   51.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent      Host_key_name
   51.17 +#
   51.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   51.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   51.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   51.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   51.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   51.23 +# modifier).
   51.24 +#
   51.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   51.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   51.27 +# This format is designed to look like a char constant in C, but it's a very
   51.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   51.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   51.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   51.31 +# ugly.
   51.32 +#
   51.33 +# Host_key_name is the name of the key combination according to the gui library
   51.34 +# (X windows, SDL, etc).  Each GUI module must provide a function that converts
   51.35 +# these host key names into numbers.  A pointer to the conversion function is
   51.36 +# passed to loadKeymap(), and it is used when parsing the keymap file.  As the
   51.37 +# keymap file is parsed, the conversion function is called for each host key
   51.38 +# name, to convert it into a number.  Only the number is stored.  If the host
   51.39 +# key name is not found, the conversion function returns BX_KEYMAP_UNKNOWN, and
   51.40 +# the keymap code will panic, like this: 
   51.41 +#
   51.42 +#    [KMAP ] line 51: unknown host key name 'SDLK_PAREN_RIGHT' 
   51.43 +#
   51.44 +# If this happens, you must edit the keymap file, and either correct the host
   51.45 +# key name or comment out that line.
   51.46 +#
   51.47 +
   51.48 +BX_KEY_0                                      '0'        SDLK_0
   51.49 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        SDLK_EQUALS
   51.50 +BX_KEY_1                                      '1'        SDLK_1
   51.51 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        SDLK_EXCLAIM
   51.52 +BX_KEY_2                                      '2'        SDLK_2
   51.53 +BX_KEY_2+BX_KEY_ALT_R                         ''        SDLK_2
   51.54 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        SDLK_QUOTEDBL
   51.55 +BX_KEY_3                                      '3'        SDLK_3
   51.56 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        SDLK_3
   51.57 +BX_KEY_4                                      '4'        SDLK_4
   51.58 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        SDLK_DOLLAR
   51.59 +BX_KEY_4+BX_KEY_ALT_R                         ''        SDLK_4
   51.60 +BX_KEY_5                                      '5'        SDLK_5
   51.61 +BX_KEY_5+BX_KEY_ALT_R                         ''        SDLK_5
   51.62 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        SDLK_5
   51.63 +BX_KEY_6                                      '6'        SDLK_6
   51.64 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        SDLK_AMPERSAND
   51.65 +BX_KEY_7                                      '7'        SDLK_7
   51.66 +BX_KEY_7+BX_KEY_ALT_R                         '{'        SDLK_7
   51.67 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        SDLK_SLASH
   51.68 +BX_KEY_8                                      '8'        SDLK_8
   51.69 +BX_KEY_8+BX_KEY_ALT_R                         '['        SDLK_LEFTBRACKET
   51.70 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        SDLK_LEFTPAREN
   51.71 +BX_KEY_9                                      '9'        SDLK_9
   51.72 +BX_KEY_9+BX_KEY_ALT_R                         ']'        SDLK_RIGHTBRACKET
   51.73 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        SDLK_RIGHTPAREN
   51.74 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        SDLK_a
   51.75 +BX_KEY_A                                      'a'        SDLK_a
   51.76 +BX_KEY_A+BX_KEY_ALT_R                         ''        SDLK_a
   51.77 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        SDLK_b
   51.78 +BX_KEY_B                                      'b'        SDLK_b
   51.79 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        SDLK_c
   51.80 +BX_KEY_C                                      'c'        SDLK_c
   51.81 +BX_KEY_C+BX_KEY_ALT_R                         ''        SDLK_c
   51.82 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        SDLK_d
   51.83 +BX_KEY_D                                      'd'        SDLK_d
   51.84 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        SDLK_e
   51.85 +BX_KEY_E+BX_KEY_ALT_R                         none       SDLK_EURO
   51.86 +BX_KEY_E                                      'e'        SDLK_e
   51.87 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        SDLK_f
   51.88 +BX_KEY_F                                      'f'        SDLK_f
   51.89 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        SDLK_g
   51.90 +BX_KEY_G                                      'g'        SDLK_g
   51.91 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        SDLK_h
   51.92 +BX_KEY_H                                      'h'        SDLK_h
   51.93 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        SDLK_i
   51.94 +BX_KEY_I                                      'i'        SDLK_i
   51.95 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        SDLK_j
   51.96 +BX_KEY_J                                      'j'        SDLK_j
   51.97 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        SDLK_k
   51.98 +BX_KEY_K                                      'k'        SDLK_k
   51.99 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        SDLK_l
  51.100 +BX_KEY_L                                      'l'        SDLK_l
  51.101 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        SDLK_m
  51.102 +BX_KEY_M                                      'm'        SDLK_m
  51.103 +BX_KEY_M+BX_KEY_ALT_R                         ''        SDLK_m
  51.104 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        SDLK_n
  51.105 +BX_KEY_N                                      'n'        SDLK_n
  51.106 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        SDLK_o
  51.107 +BX_KEY_O                                      'o'        SDLK_o
  51.108 +BX_KEY_O+BX_KEY_ALT_R                         ''        SDLK_o
  51.109 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        SDLK_p
  51.110 +BX_KEY_P                                      'p'        SDLK_p
  51.111 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        SDLK_q
  51.112 +BX_KEY_Q+BX_KEY_ALT_R                         '@'        SDLK_AT
  51.113 +BX_KEY_Q                                      'q'        SDLK_q
  51.114 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        SDLK_r
  51.115 +BX_KEY_R+BX_KEY_ALT_R                         ''        SDLK_r
  51.116 +BX_KEY_R                                      'r'        SDLK_r
  51.117 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        SDLK_s
  51.118 +BX_KEY_S                                      's'        SDLK_s
  51.119 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        SDLK_t
  51.120 +BX_KEY_T                                      't'        SDLK_t
  51.121 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        SDLK_u
  51.122 +BX_KEY_U                                      'u'        SDLK_u
  51.123 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        SDLK_v
  51.124 +BX_KEY_V                                      'v'        SDLK_v
  51.125 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        SDLK_w
  51.126 +BX_KEY_W                                      'w'        SDLK_w
  51.127 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        SDLK_x
  51.128 +BX_KEY_X+BX_KEY_ALT_R                         ''        SDLK_x
  51.129 +BX_KEY_X                                      'x'        SDLK_x
  51.130 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Z'        SDLK_z
  51.131 +BX_KEY_Y                                      'z'        SDLK_z
  51.132 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Y'        SDLK_y
  51.133 +BX_KEY_Z+BX_KEY_ALT_R                         ''        SDLK_y
  51.134 +BX_KEY_Z                                      'y'        SDLK_y
  51.135 +BX_KEY_F1                                     none       SDLK_F1
  51.136 +BX_KEY_F2                                     none       SDLK_F2
  51.137 +BX_KEY_F3                                     none       SDLK_F3
  51.138 +BX_KEY_F4                                     none       SDLK_F4
  51.139 +BX_KEY_F5                                     none       SDLK_F5
  51.140 +BX_KEY_F6                                     none       SDLK_F6
  51.141 +BX_KEY_F7                                     none       SDLK_F7
  51.142 +BX_KEY_F8                                     none       SDLK_F8
  51.143 +BX_KEY_F9                                     none       SDLK_F9
  51.144 +BX_KEY_F10                                    none       SDLK_F10
  51.145 +BX_KEY_F11                                    none       SDLK_F11
  51.146 +BX_KEY_F12                                    none       SDLK_F12
  51.147 +BX_KEY_ALT_L                                  none       SDLK_LALT
  51.148 +BX_KEY_ALT_L                                  none       SDLK_LMETA
  51.149 +BX_KEY_ALT_R                                  none       SDLK_RALT
  51.150 +BX_KEY_ALT_R                                  none       SDLK_MODE
  51.151 +BX_KEY_BACKSLASH                              apostrophe SDLK_QUOTE
  51.152 +BX_KEY_BACKSLASH                              '#'        SDLK_HASH
  51.153 +BX_KEY_BACKSPACE                              none       SDLK_BACKSPACE
  51.154 +BX_KEY_CAPS_LOCK                              none       SDLK_CAPSLOCK
  51.155 +BX_KEY_COMMA                                  ','        SDLK_COMMA
  51.156 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        SDLK_SEMICOLON
  51.157 +BX_KEY_CTRL_L                                 none       SDLK_LCTRL
  51.158 +BX_KEY_CTRL_R                                 none       SDLK_RCTRL
  51.159 +BX_KEY_DELETE                                 none       SDLK_DELETE
  51.160 +BX_KEY_DOWN                                   none       SDLK_DOWN
  51.161 +BX_KEY_END                                    none       SDLK_END
  51.162 +BX_KEY_ENTER                                  return     SDLK_RETURN
  51.163 +BX_KEY_EQUALS                                 none       SDLK_WORLD_20
  51.164 +BX_KEY_EQUALS+BX_KEY_ALT_R                    ''        SDLK_WORLD_20
  51.165 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '`'        SDLK_WORLD_20
  51.166 +BX_KEY_ESC                                    none       SDLK_ESCAPE
  51.167 +BX_KEY_GRAVE                                  '^'        SDLK_CARET
  51.168 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        SDLK_CARET
  51.169 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        SDLK_CARET
  51.170 +BX_KEY_HOME                                   none       SDLK_HOME
  51.171 +BX_KEY_INSERT                                 none       SDLK_INSERT
  51.172 +BX_KEY_KP_5                                   none       SDLK_KP5
  51.173 +BX_KEY_KP_ADD                                 none       SDLK_KP_PLUS
  51.174 +BX_KEY_KP_DELETE                              none       SDLK_KP_PERIOD
  51.175 +BX_KEY_KP_DIVIDE                              none       SDLK_KP_DIVIDE
  51.176 +BX_KEY_KP_DOWN                                none       SDLK_KP2
  51.177 +BX_KEY_KP_END                                 none       SDLK_KP1
  51.178 +BX_KEY_KP_ENTER                               none       SDLK_KP_ENTER
  51.179 +BX_KEY_KP_HOME                                none       SDLK_KP7
  51.180 +BX_KEY_KP_INSERT                              none       SDLK_KP0
  51.181 +BX_KEY_KP_LEFT                                none       SDLK_KP4
  51.182 +BX_KEY_KP_MULTIPLY                            none       SDLK_KP_MULTIPLY
  51.183 +BX_KEY_KP_PAGE_DOWN                           none       SDLK_KP3
  51.184 +BX_KEY_KP_PAGE_UP                             none       SDLK_KP9
  51.185 +BX_KEY_KP_RIGHT                               none       SDLK_KP6
  51.186 +BX_KEY_KP_SUBTRACT                            none       SDLK_KP_MINUS
  51.187 +BX_KEY_KP_UP                                  none       SDLK_KP8
  51.188 +BX_KEY_LEFT                                   none       SDLK_LEFT
  51.189 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            '|'        SDLK_LESS
  51.190 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        SDLK_GREATER
  51.191 +BX_KEY_LEFT_BACKSLASH                         '<'        SDLK_LESS
  51.192 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        SDLK_WORLD_92
  51.193 +BX_KEY_LEFT_BRACKET                           ''        SDLK_WORLD_92
  51.194 +BX_KEY_MENU                                   none       SDLK_MENU
  51.195 +BX_KEY_MINUS+BX_KEY_ALT_L                     backslash  SDLK_BACKSLASH
  51.196 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        SDLK_QUESTION
  51.197 +BX_KEY_MINUS                                  ''        SDLK_WORLD_63
  51.198 +BX_KEY_NUM_LOCK                               none       SDLK_NUMLOCK
  51.199 +BX_KEY_PAGE_DOWN                              none       SDLK_PAGEDOWN
  51.200 +BX_KEY_PAGE_UP                                none       SDLK_PAGEUP
  51.201 +BX_KEY_PAUSE                                  none       SDLK_BREAK
  51.202 +BX_KEY_PAUSE                                  none       SDLK_PAUSE
  51.203 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        SDLK_COLON
  51.204 +BX_KEY_PERIOD                                 '.'        SDLK_PERIOD
  51.205 +BX_KEY_PERIOD+BX_KEY_ALT_L                    ''        SDLK_PERIOD
  51.206 +BX_KEY_PRINT                                  none       SDLK_PRINT
  51.207 +BX_KEY_PRINT                                  none       SDLK_SYSREQ
  51.208 +BX_KEY_RIGHT                                  none       SDLK_RIGHT
  51.209 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             '~'        SDLK_PLUS
  51.210 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        SDLK_PLUS
  51.211 +BX_KEY_RIGHT_BRACKET                          '+'        SDLK_PLUS
  51.212 +BX_KEY_SCRL_LOCK                              none       SDLK_SCROLLOCK
  51.213 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        SDLK_WORLD_86
  51.214 +BX_KEY_SEMICOLON                              ''        SDLK_WORLD_86
  51.215 +BX_KEY_SHIFT_L                                none       SDLK_LSHIFT
  51.216 +BX_KEY_SHIFT_R                                none       SDLK_RSHIFT
  51.217 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        SDLK_WORLD_68
  51.218 +BX_KEY_SINGLE_QUOTE                           ''        SDLK_WORLD_68
  51.219 +BX_KEY_SLASH                                  '-'        SDLK_MINUS
  51.220 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        SDLK_UNDERSCORE
  51.221 +BX_KEY_SPACE                                  space      SDLK_SPACE
  51.222 +BX_KEY_TAB                                    tab        SDLK_TAB
  51.223 +BX_KEY_UP                                     none       SDLK_UP
  51.224 +BX_KEY_WIN_L                                  none       SDLK_LSUPER
  51.225 +BX_KEY_WIN_R                                  none       SDLK_RSUPER
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/tools/ioemu/gui/keymaps/sdl-pc-us.map	Mon Jan 17 16:03:22 2005 +0000
    52.3 @@ -0,0 +1,211 @@
    52.4 +# Bochs Keymap file
    52.5 +# $Id: sdl-pc-us.map,v 1.2 2002/10/24 21:06:55 bdenney Exp $
    52.6 +# Target: PC(x86) keyboard, US keymap, SDL gui
    52.7 +# Author: Bryce Denney
    52.8 +#
    52.9 +# The keymap file describes the layout of a keyboard, and how it translates
   52.10 +# into Bochs key codes.
   52.11 +#
   52.12 +# Format:
   52.13 +#  BX_Keysym                ASCII_equivalent      Host_key_name
   52.14 +#
   52.15 +# Or, for keys that require modifiers:
   52.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent      Host_key_name
   52.17 +#
   52.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   52.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   52.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   52.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   52.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   52.23 +# modifier).
   52.24 +#
   52.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   52.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   52.27 +# This format is designed to look like a char constant in C, but it's a very
   52.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   52.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   52.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   52.31 +# ugly.
   52.32 +#
   52.33 +# Host_key_name is the name of the key combination according to the gui library
   52.34 +# (X windows, SDL, etc).  Each GUI module must provide a function that converts
   52.35 +# these host key names into numbers.  A pointer to the conversion function is
   52.36 +# passed to loadKeymap(), and it is used when parsing the keymap file.  As the
   52.37 +# keymap file is parsed, the conversion function is called for each host key
   52.38 +# name, to convert it into a number.  Only the number is stored.  If the host
   52.39 +# key name is not found, the conversion function returns BX_KEYMAP_UNKNOWN, and
   52.40 +# the keymap code will panic, like this: 
   52.41 +#
   52.42 +#    [KMAP ] line 51: unknown host key name 'SDLK_PAREN_RIGHT' 
   52.43 +#
   52.44 +# If this happens, you must edit the keymap file, and either correct the host
   52.45 +# key name or comment out that line.
   52.46 +#
   52.47 +
   52.48 +BX_KEY_0                                      '0'        SDLK_0
   52.49 +BX_KEY_0+BX_KEY_SHIFT_L                       ')'        SDLK_RIGHTPAREN
   52.50 +BX_KEY_1                                      '1'        SDLK_1
   52.51 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        SDLK_EXCLAIM
   52.52 +BX_KEY_2                                      '2'        SDLK_2
   52.53 +BX_KEY_2+BX_KEY_SHIFT_L                       '@'        SDLK_AT
   52.54 +BX_KEY_3                                      '3'        SDLK_3
   52.55 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        SDLK_HASH
   52.56 +BX_KEY_4                                      '4'        SDLK_4
   52.57 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        SDLK_DOLLAR
   52.58 +BX_KEY_5                                      '5'        SDLK_5
   52.59 +#BX_KEY_5+BX_KEY_SHIFT_L                       '%'        SDLK_PERCENT
   52.60 +BX_KEY_6                                      '6'        SDLK_6
   52.61 +BX_KEY_6+BX_KEY_SHIFT_L                       '^'        SDLK_CARET
   52.62 +BX_KEY_7                                      '7'        SDLK_7
   52.63 +BX_KEY_7+BX_KEY_SHIFT_L                       '&'        SDLK_AMPERSAND
   52.64 +BX_KEY_8                                      '8'        SDLK_8
   52.65 +BX_KEY_8+BX_KEY_SHIFT_L                       '*'        SDLK_ASTERISK
   52.66 +BX_KEY_9                                      '9'        SDLK_9
   52.67 +BX_KEY_9+BX_KEY_SHIFT_L                       '('        SDLK_LEFTPAREN
   52.68 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        SDLK_a
   52.69 +BX_KEY_A                                      'a'        SDLK_a
   52.70 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        SDLK_b
   52.71 +BX_KEY_B                                      'b'        SDLK_b
   52.72 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        SDLK_c
   52.73 +BX_KEY_C                                      'c'        SDLK_c
   52.74 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        SDLK_d
   52.75 +BX_KEY_D                                      'd'        SDLK_d
   52.76 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        SDLK_e
   52.77 +BX_KEY_E                                      'e'        SDLK_e
   52.78 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        SDLK_f
   52.79 +BX_KEY_F                                      'f'        SDLK_f
   52.80 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        SDLK_g
   52.81 +BX_KEY_G                                      'g'        SDLK_g
   52.82 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        SDLK_h
   52.83 +BX_KEY_H                                      'h'        SDLK_h
   52.84 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        SDLK_i
   52.85 +BX_KEY_I                                      'i'        SDLK_i
   52.86 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        SDLK_j
   52.87 +BX_KEY_J                                      'j'        SDLK_j
   52.88 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        SDLK_k
   52.89 +BX_KEY_K                                      'k'        SDLK_k
   52.90 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        SDLK_l
   52.91 +BX_KEY_L                                      'l'        SDLK_l
   52.92 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        SDLK_m
   52.93 +BX_KEY_M                                      'm'        SDLK_m
   52.94 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        SDLK_n
   52.95 +BX_KEY_N                                      'n'        SDLK_n
   52.96 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        SDLK_o
   52.97 +BX_KEY_O                                      'o'        SDLK_o
   52.98 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        SDLK_p
   52.99 +BX_KEY_P                                      'p'        SDLK_p
  52.100 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        SDLK_q
  52.101 +BX_KEY_Q                                      'q'        SDLK_q
  52.102 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        SDLK_r
  52.103 +BX_KEY_R                                      'r'        SDLK_r
  52.104 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        SDLK_s
  52.105 +BX_KEY_S                                      's'        SDLK_s
  52.106 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        SDLK_t
  52.107 +BX_KEY_T                                      't'        SDLK_t
  52.108 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        SDLK_u
  52.109 +BX_KEY_U                                      'u'        SDLK_u
  52.110 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        SDLK_v
  52.111 +BX_KEY_V                                      'v'        SDLK_v
  52.112 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        SDLK_w
  52.113 +BX_KEY_W                                      'w'        SDLK_w
  52.114 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        SDLK_x
  52.115 +BX_KEY_X                                      'x'        SDLK_x
  52.116 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        SDLK_y
  52.117 +BX_KEY_Y                                      'y'        SDLK_y
  52.118 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        SDLK_z
  52.119 +BX_KEY_Z                                      'z'        SDLK_z
  52.120 +BX_KEY_F1                                     none       SDLK_F1
  52.121 +BX_KEY_F2                                     none       SDLK_F2
  52.122 +BX_KEY_F3                                     none       SDLK_F3
  52.123 +BX_KEY_F4                                     none       SDLK_F4
  52.124 +BX_KEY_F5                                     none       SDLK_F5
  52.125 +BX_KEY_F6                                     none       SDLK_F6
  52.126 +BX_KEY_F7                                     none       SDLK_F7
  52.127 +BX_KEY_F8                                     none       SDLK_F8
  52.128 +BX_KEY_F9                                     none       SDLK_F9
  52.129 +BX_KEY_F10                                    none       SDLK_F10
  52.130 +BX_KEY_F11                                    none       SDLK_F11
  52.131 +BX_KEY_F12                                    none       SDLK_F12
  52.132 +BX_KEY_ALT_L                                  none       SDLK_LALT
  52.133 +BX_KEY_ALT_L                                  none       SDLK_LMETA
  52.134 +BX_KEY_ALT_R                                  none       SDLK_MODE
  52.135 +#BX_KEY_ALT_R                                  none       SDLK_Multi_key
  52.136 +BX_KEY_BACKSLASH                              backslash  SDLK_BACKSLASH
  52.137 +#BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '|'        SDLK_bar
  52.138 +BX_KEY_BACKSPACE                              none       SDLK_BACKSPACE
  52.139 +BX_KEY_CAPS_LOCK                              none       SDLK_CAPSLOCK
  52.140 +BX_KEY_COMMA                                  ','        SDLK_COMMA
  52.141 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '<'        SDLK_LESS
  52.142 +BX_KEY_CTRL_L                                 none       SDLK_LCTRL
  52.143 +BX_KEY_CTRL_R                                 none       SDLK_RCTRL
  52.144 +BX_KEY_DELETE                                 none       SDLK_DELETE
  52.145 +BX_KEY_DOWN                                   none       SDLK_DOWN
  52.146 +BX_KEY_END                                    none       SDLK_END
  52.147 +BX_KEY_ENTER                                  return     SDLK_RETURN
  52.148 +BX_KEY_EQUALS                                 '='        SDLK_EQUALS
  52.149 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        SDLK_PLUS
  52.150 +BX_KEY_ESC                                    none       SDLK_ESCAPE
  52.151 +#BX_KEY_GRAVE+BX_KEY_SHIFT_L                   '~'        SDLK_asciitilde
  52.152 +BX_KEY_GRAVE                                  '`'        SDLK_BACKQUOTE
  52.153 +BX_KEY_HOME                                   none       SDLK_HOME
  52.154 +BX_KEY_INSERT                                 none       SDLK_INSERT
  52.155 +BX_KEY_KP_5                                   none       SDLK_KP5
  52.156 +#BX_KEY_KP_5                                   none       SDLK_KP_BEGIN
  52.157 +BX_KEY_KP_ADD                                 none       SDLK_KP_PLUS
  52.158 +BX_KEY_KP_DELETE                              none       SDLK_KP_PERIOD
  52.159 +#BX_KEY_KP_DELETE                              none       SDLK_KP_DELETE
  52.160 +BX_KEY_KP_DIVIDE                              none       SDLK_KP_DIVIDE
  52.161 +BX_KEY_KP_DOWN                                none       SDLK_KP2
  52.162 +#BX_KEY_KP_DOWN                                none       SDLK_KP_DOWN
  52.163 +BX_KEY_KP_END                                 none       SDLK_KP1
  52.164 +#BX_KEY_KP_END                                 none       SDLK_KP_END
  52.165 +BX_KEY_KP_ENTER                               none       SDLK_KP_ENTER
  52.166 +BX_KEY_KP_HOME                                none       SDLK_KP7
  52.167 +#BX_KEY_KP_HOME                                none       SDLK_KP_HOME
  52.168 +BX_KEY_KP_INSERT                              none       SDLK_KP0
  52.169 +#BX_KEY_KP_INSERT                              none       SDLK_KP_INSERT
  52.170 +BX_KEY_KP_LEFT                                none       SDLK_KP4
  52.171 +#BX_KEY_KP_LEFT                                none       SDLK_KP_LEFT
  52.172 +BX_KEY_KP_MULTIPLY                            none       SDLK_KP_MULTIPLY
  52.173 +BX_KEY_KP_PAGE_DOWN                           none       SDLK_KP3
  52.174 +#BX_KEY_KP_PAGE_DOWN                           none       SDLK_KP_PAGE_DOWN
  52.175 +BX_KEY_KP_PAGE_UP                             none       SDLK_KP9
  52.176 +#BX_KEY_KP_PAGE_UP                             none       SDLK_KP_PAGE_UP
  52.177 +BX_KEY_KP_RIGHT                               none       SDLK_KP6
  52.178 +#BX_KEY_KP_RIGHT                               none       SDLK_KP_Right
  52.179 +BX_KEY_KP_SUBTRACT                            none       SDLK_KP_MINUS
  52.180 +BX_KEY_KP_UP                                  none       SDLK_KP8
  52.181 +#BX_KEY_KP_UP                                  none       SDLK_KP_Up
  52.182 +BX_KEY_LEFT                                   none       SDLK_LEFT
  52.183 +#BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            '{'        SDLK_BRACELEFT
  52.184 +BX_KEY_LEFT_BRACKET                           '['        SDLK_LEFTBRACKET
  52.185 +BX_KEY_MENU                                   none       SDLK_MENU
  52.186 +BX_KEY_MINUS                                  '-'        SDLK_MINUS
  52.187 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '_'        SDLK_UNDERSCORE
  52.188 +BX_KEY_NUM_LOCK                               none       SDLK_NUMLOCK
  52.189 +BX_KEY_PAGE_DOWN                              none       SDLK_PAGEDOWN
  52.190 +BX_KEY_PAGE_UP                                none       SDLK_PAGEUP
  52.191 +BX_KEY_PAUSE                                  none       SDLK_BREAK
  52.192 +BX_KEY_PAUSE                                  none       SDLK_PAUSE
  52.193 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '>'        SDLK_GREATER
  52.194 +BX_KEY_PERIOD                                 '.'        SDLK_PERIOD
  52.195 +BX_KEY_PRINT                                  none       SDLK_PRINT
  52.196 +BX_KEY_PRINT                                  none       SDLK_SYSREQ
  52.197 +BX_KEY_RIGHT                                  none       SDLK_RIGHT
  52.198 +#BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '}'        SDLK_BRACERIGHT
  52.199 +BX_KEY_RIGHT_BRACKET                          ']'        SDLK_RIGHTBRACKET
  52.200 +BX_KEY_SCRL_LOCK                              none       SDLK_SCROLLOCK
  52.201 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ':'        SDLK_COLON
  52.202 +BX_KEY_SEMICOLON                              ';'        SDLK_SEMICOLON
  52.203 +BX_KEY_SHIFT_L                                none       SDLK_LSHIFT
  52.204 +BX_KEY_SHIFT_R                                none       SDLK_RSHIFT
  52.205 +BX_KEY_SINGLE_QUOTE                           apostrophe SDLK_QUOTE
  52.206 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '"'        SDLK_QUOTEDBL
  52.207 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '?'        SDLK_QUESTION
  52.208 +BX_KEY_SLASH                                  '/'        SDLK_SLASH
  52.209 +BX_KEY_SPACE                                  space      SDLK_SPACE
  52.210 +#BX_KEY_TAB                                    none       SDLK_ISO_LEFT_TAB
  52.211 +BX_KEY_TAB                                    tab        SDLK_TAB
  52.212 +BX_KEY_UP                                     none       SDLK_UP
  52.213 +BX_KEY_WIN_L                                  none       SDLK_LSUPER
  52.214 +BX_KEY_WIN_R                                  none       SDLK_LSUPER
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-be.map	Mon Jan 17 16:03:22 2005 +0000
    53.3 @@ -0,0 +1,220 @@
    53.4 +# Bochs Keymap file
    53.5 +# $Id: x11-pc-be.map,v 1.2 2003/07/29 13:31:11 bdenney Exp $
    53.6 +# Target: PC(x86) keyboard, BE keymap
    53.7 +# Author: Wouter Verhelst,
    53.8 +# based on FR keymap by Christophe Bothamy, Bryce Denney
    53.9 +#
   53.10 +# The keymap file describes the layout of a keyboard, and how it translates
   53.11 +# into Bochs key codes.
   53.12 +#
   53.13 +# Format:
   53.14 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   53.15 +#
   53.16 +# Or, for keys that require modifiers:
   53.17 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   53.18 +#
   53.19 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   53.20 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   53.21 +# could be any key.  Presently a maximum of one modifier is supported, but this
   53.22 +# could be changed in keymap.h (structure def has only one slot for modifier),
   53.23 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   53.24 +# modifier).
   53.25 +#
   53.26 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   53.27 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   53.28 +# This format is designed to look like a char constant in C, but it's a very
   53.29 +# simple parser.  There's no concept of backslash being an escape char.  The
   53.30 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   53.31 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   53.32 +# ugly.
   53.33 +#
   53.34 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   53.35 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   53.36 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   53.37 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   53.38 +# numerical codes.  If this lookup fails, you will get a panic and you need
   53.39 +# to edit the keymap file.
   53.40 +
   53.41 +BX_KEY_0+BX_KEY_SHIFT_L                       '0'        XK_0
   53.42 +BX_KEY_0                                      ''        XK_agrave
   53.43 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
   53.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '1'        XK_1
   53.45 +BX_KEY_1                                      '&'        XK_ampersand
   53.46 +BX_KEY_1+BX_KEY_ALT_R                         '|'        XK_bar
   53.47 +BX_KEY_2+BX_KEY_SHIFT_L                       '2'        XK_2
   53.48 +BX_KEY_2+BX_KEY_ALT_R                         '@'        XK_at
   53.49 +BX_KEY_2                                      ''        XK_eacute
   53.50 +BX_KEY_3+BX_KEY_SHIFT_L                       '3'        XK_3
   53.51 +BX_KEY_3+BX_KEY_ALT_R                         '#'        XK_numbersign
   53.52 +BX_KEY_3                                      '"'        XK_quotedbl
   53.53 +BX_KEY_4+BX_KEY_SHIFT_L                       '4'        XK_4
   53.54 +BX_KEY_4                                      apostrophe XK_apostrophe
   53.55 +BX_KEY_5+BX_KEY_SHIFT_L                       '5'        XK_5
   53.56 +BX_KEY_5                                      '('        XK_parenleft
   53.57 +BX_KEY_6+BX_KEY_SHIFT_L                       '6'        XK_6
   53.58 +BX_KEY_6+BX_KEY_ALT_R                         '^'        XK_asciicircum
   53.59 +BX_KEY_6                                      ''        XK_section
   53.60 +BX_KEY_7+BX_KEY_SHIFT_L                       '7'        XK_7
   53.61 +BX_KEY_7                                      ''        XK_egrave
   53.62 +BX_KEY_8+BX_KEY_SHIFT_L                       '8'        XK_8
   53.63 +BX_KEY_8                                      '!'        XK_exclam
   53.64 +BX_KEY_9+BX_KEY_SHIFT_L                       '9'        XK_9
   53.65 +BX_KEY_9+BX_KEY_ALT_R                         '{'        XK_braceleft
   53.66 +BX_KEY_9                                      ''        XK_ccedilla
   53.67 +BX_KEY_A+BX_KEY_SHIFT_L                       'Q'        XK_Q
   53.68 +BX_KEY_A                                      'q'        XK_q
   53.69 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   53.70 +BX_KEY_B                                      'b'        XK_b
   53.71 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   53.72 +BX_KEY_C                                      'c'        XK_c
   53.73 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   53.74 +BX_KEY_D                                      'd'        XK_d
   53.75 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   53.76 +BX_KEY_E                                      'e'        XK_e
   53.77 +BX_KEY_E+BX_KEY_ALT_R                         none       XK_EuroSign
   53.78 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   53.79 +BX_KEY_F                                      'f'        XK_f
   53.80 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   53.81 +BX_KEY_G                                      'g'        XK_g
   53.82 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   53.83 +BX_KEY_H                                      'h'        XK_h
   53.84 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   53.85 +BX_KEY_I                                      'i'        XK_i
   53.86 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   53.87 +BX_KEY_J                                      'j'        XK_j
   53.88 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   53.89 +BX_KEY_K                                      'k'        XK_k
   53.90 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   53.91 +BX_KEY_L                                      'l'        XK_l
   53.92 +BX_KEY_M+BX_KEY_SHIFT_L                       '?'        XK_question
   53.93 +BX_KEY_M                                      ','        XK_comma
   53.94 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   53.95 +BX_KEY_N                                      'n'        XK_n
   53.96 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   53.97 +BX_KEY_O                                      'o'        XK_o
   53.98 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   53.99 +BX_KEY_P                                      'p'        XK_p
  53.100 +BX_KEY_Q+BX_KEY_SHIFT_L                       'A'        XK_A
  53.101 +BX_KEY_Q                                      'a'        XK_a
  53.102 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  53.103 +BX_KEY_R                                      'r'        XK_r
  53.104 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  53.105 +BX_KEY_S                                      's'        XK_s
  53.106 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  53.107 +BX_KEY_T                                      't'        XK_t
  53.108 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  53.109 +BX_KEY_U                                      'u'        XK_u
  53.110 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  53.111 +BX_KEY_V                                      'v'        XK_v
  53.112 +BX_KEY_W+BX_KEY_SHIFT_L                       'Z'        XK_Z
  53.113 +BX_KEY_W                                      'z'        XK_z
  53.114 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  53.115 +BX_KEY_X                                      'x'        XK_x
  53.116 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  53.117 +BX_KEY_Y                                      'y'        XK_y
  53.118 +BX_KEY_Z+BX_KEY_SHIFT_L                       'W'        XK_W
  53.119 +BX_KEY_Z                                      'w'        XK_w
  53.120 +BX_KEY_F1                                     none       XK_F1
  53.121 +BX_KEY_F2                                     none       XK_F2
  53.122 +BX_KEY_F3                                     none       XK_F3
  53.123 +BX_KEY_F4                                     none       XK_F4
  53.124 +BX_KEY_F5                                     none       XK_F5
  53.125 +BX_KEY_F6                                     none       XK_F6
  53.126 +BX_KEY_F7                                     none       XK_F7
  53.127 +BX_KEY_F8                                     none       XK_F8
  53.128 +BX_KEY_F9                                     none       XK_F9
  53.129 +BX_KEY_F10                                    none       XK_F10
  53.130 +BX_KEY_F11                                    none       XK_F11
  53.131 +BX_KEY_F12                                    none       XK_F12
  53.132 +BX_KEY_ALT_L                                  none       XK_Alt_L
  53.133 +BX_KEY_ALT_L                                  none       XK_Meta_L
  53.134 +BX_KEY_ALT_R                                  none       XK_Alt_R
  53.135 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  53.136 +BX_KEY_ALT_R                                  none       XK_Multi_key
  53.137 +BX_KEY_BACKSLASH                              ''        XK_mu
  53.138 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               ''        XK_sterling
  53.139 +BX_KEY_BACKSLASH+BX_KEY_ALT_R                 '`'        XK_dead_grave
  53.140 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  53.141 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  53.142 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '.'        XK_period
  53.143 +BX_KEY_COMMA                                  ';'        XK_semicolon
  53.144 +BX_KEY_CTRL_L                                 none       XK_Control_L
  53.145 +BX_KEY_CTRL_R                                 none       XK_Control_R
  53.146 +BX_KEY_DELETE                                 none       XK_Delete
  53.147 +BX_KEY_DOWN                                   none       XK_Down
  53.148 +BX_KEY_END                                    none       XK_End
  53.149 +BX_KEY_ENTER                                  return     XK_Return
  53.150 +BX_KEY_EQUALS                                 '-'        XK_minus
  53.151 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '_'        XK_underscore
  53.152 +BX_KEY_ESC                                    none       XK_Escape
  53.153 +BX_KEY_GRAVE                                  ''        XK_twosuperior
  53.154 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_threesuperior
  53.155 +BX_KEY_HOME                                   none       XK_Home
  53.156 +BX_KEY_INSERT                                 none       XK_Insert
  53.157 +BX_KEY_KP_5                                   none       XK_KP_5
  53.158 +BX_KEY_KP_5                                   none       XK_KP_Begin
  53.159 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  53.160 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  53.161 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  53.162 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  53.163 +BX_KEY_KP_DOWN                                none       XK_KP_2
  53.164 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  53.165 +BX_KEY_KP_END                                 none       XK_KP_1
  53.166 +BX_KEY_KP_END                                 none       XK_KP_End
  53.167 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  53.168 +BX_KEY_KP_HOME                                none       XK_KP_7
  53.169 +BX_KEY_KP_HOME                                none       XK_KP_Home
  53.170 +BX_KEY_KP_INSERT                              none       XK_KP_0
  53.171 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  53.172 +BX_KEY_KP_LEFT                                none       XK_KP_4
  53.173 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  53.174 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  53.175 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  53.176 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  53.177 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  53.178 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  53.179 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  53.180 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  53.181 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  53.182 +BX_KEY_KP_UP                                  none       XK_KP_8
  53.183 +BX_KEY_KP_UP                                  none       XK_KP_Up
  53.184 +BX_KEY_LEFT                                   none       XK_Left
  53.185 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  53.186 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  53.187 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            backslash  XK_backslash
  53.188 +BX_KEY_LEFT_BRACKET                           none       XK_dead_circumflex
  53.189 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            none       XK_dead_diaeresis
  53.190 +BX_KEY_LEFT_BRACKET+BX_KEY_ALT_R              '['        XK_bracketleft
  53.191 +BX_KEY_MENU                                   none       XK_Menu
  53.192 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   ''        XK_degree
  53.193 +BX_KEY_MINUS                                  ')'        XK_parenright
  53.194 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  53.195 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  53.196 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  53.197 +BX_KEY_PAUSE                                  none       XK_Break
  53.198 +BX_KEY_PAUSE                                  none       XK_Pause
  53.199 +BX_KEY_PERIOD                                 ':'        XK_colon
  53.200 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '/'        XK_slash
  53.201 +BX_KEY_PRINT                                  none       XK_Print
  53.202 +BX_KEY_PRINT                                  none       XK_Sys_Req
  53.203 +BX_KEY_RIGHT                                  none       XK_Right
  53.204 +BX_KEY_RIGHT_BRACKET                          '$'        XK_dollar
  53.205 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        XK_asterisk
  53.206 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             ']'        XK_bracketright
  53.207 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  53.208 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               'M'        XK_M
  53.209 +BX_KEY_SEMICOLON                              'm'        XK_m
  53.210 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  53.211 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  53.212 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '%'        XK_percent
  53.213 +BX_KEY_SINGLE_QUOTE+BX_KEY_ALT_R              none       XK_dead_acute
  53.214 +BX_KEY_SINGLE_QUOTE                           ''        XK_ugrave
  53.215 +BX_KEY_SLASH                                  '='        XK_equal
  53.216 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '+'        XK_plus
  53.217 +BX_KEY_SLASH+BX_KEY_ALT_R                     none       XK_dead_tilde
  53.218 +BX_KEY_SPACE                                  space      XK_space
  53.219 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  53.220 +BX_KEY_TAB                                    tab        XK_Tab
  53.221 +BX_KEY_UP                                     none       XK_Up
  53.222 +BX_KEY_WIN_L                                  none       XK_Super_L
  53.223 +BX_KEY_WIN_R                                  none       XK_Super_R
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-da.map	Mon Jan 17 16:03:22 2005 +0000
    54.3 @@ -0,0 +1,247 @@
    54.4 +# Bochs Keymap file
    54.5 +# $Id: x11-pc-da.map,v 0.9 2002/09/02
    54.6 +# Target: PC(x86) keyboard, DA keymap
    54.7 +# Author: Andreas Ott
    54.8 +#
    54.9 +# The keymap file describes the layout of a keyboard, and how it translates
   54.10 +# into Bochs key codes.
   54.11 +#
   54.12 +# Format:
   54.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   54.14 +#
   54.15 +# Or, for keys that require modifiers:
   54.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   54.17 +#
   54.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   54.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   54.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   54.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   54.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   54.23 +# modifier).
   54.24 +#
   54.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   54.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   54.27 +# This format is designed to look like a char constant in C, but it's a very
   54.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   54.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   54.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   54.31 +# ugly.
   54.32 +#
   54.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   54.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   54.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   54.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   54.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   54.38 +# to edit the keymap file.
   54.39 +
   54.40 +BX_KEY_0                                      '0'        XK_0
   54.41 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
   54.42 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
   54.43 +BX_KEY_1                                      '1'        XK_1
   54.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   54.45 +BX_KEY_1+BX_KEY_ALT_R                         ''        XK_exclamdown
   54.46 +BX_KEY_2                                      '2'        XK_2
   54.47 +BX_KEY_2+BX_KEY_SHIFT_L                       '='        XK_quotedbl
   54.48 +BX_KEY_2+BX_KEY_ALT_R                         '@'        XK_at # XK_twosuperior
   54.49 +BX_KEY_3                                      '3'        XK_3
   54.50 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        XK_numbersign
   54.51 +BX_KEY_3+BX_KEY_ALT_R                         ''        XK_sterling
   54.52 +BX_KEY_4                                      '4'        XK_4
   54.53 +BX_KEY_4+BX_KEY_SHIFT_L                       ''        XK_currency
   54.54 +BX_KEY_4+BX_KEY_ALT_R                         '$'        XK_dollar
   54.55 +BX_KEY_5                                      '5'        XK_5
   54.56 +BX_KEY_5+BX_KEY_ALT_R                         ''        XK_onehalf
   54.57 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   54.58 +BX_KEY_6                                      '6'        XK_6
   54.59 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   54.60 +BX_KEY_6+BX_KEY_ALT_R                         ''        XK_yen
   54.61 +BX_KEY_7                                      '7'        XK_7
   54.62 +BX_KEY_7+BX_KEY_ALT_R                         '{'        XK_braceleft
   54.63 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   54.64 +BX_KEY_8                                      '8'        XK_8
   54.65 +BX_KEY_8+BX_KEY_ALT_R                         '['        XK_bracketleft
   54.66 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   54.67 +BX_KEY_9                                      '9'        XK_9
   54.68 +BX_KEY_9+BX_KEY_ALT_R                         ']'        XK_bracketright
   54.69 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
   54.70 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   54.71 +BX_KEY_A                                      'a'        XK_a
   54.72 +BX_KEY_A+BX_KEY_ALT_R                         ''        XK_ordfeminine
   54.73 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   54.74 +BX_KEY_B                                      'b'        XK_b
   54.75 +BX_KEY_B+BX_KEY_ALT_R                         none       XK_rightdoublequotemark
   54.76 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   54.77 +BX_KEY_C                                      'c'        XK_c
   54.78 +BX_KEY_C+BX_KEY_ALT_R                         ''        XK_copyright
   54.79 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   54.80 +BX_KEY_D                                      'd'        XK_d
   54.81 +BX_KEY_D+BX_KEY_ALT_R                         ''        XK_eth
   54.82 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   54.83 +BX_KEY_E+BX_KEY_ALT_R                         '?'        XK_EuroSign
   54.84 +BX_KEY_E                                      'e'        XK_e
   54.85 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   54.86 +BX_KEY_F+BX_KEY_ALT_R                         '?'        XK_dstroke
   54.87 +BX_KEY_F                                      'f'        XK_f
   54.88 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   54.89 +BX_KEY_G+BX_KEY_ALT_R                         '?'        XK_eng
   54.90 +BX_KEY_G                                      'g'        XK_g
   54.91 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   54.92 +BX_KEY_H                                      'h'        XK_h
   54.93 +BX_KEY_H+BX_KEY_ALT_R                         '?'        XK_hstroke
   54.94 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   54.95 +BX_KEY_I                                      'i'        XK_i
   54.96 +BX_KEY_I+BX_KEY_ALT_R                         none       XK_rightarrow
   54.97 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   54.98 +BX_KEY_J                                      'j'        XK_j
   54.99 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
  54.100 +BX_KEY_K                                      'k'        XK_k
  54.101 +BX_KEY_K+BX_KEY_ALT_R                         none       XK_kra
  54.102 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
  54.103 +BX_KEY_L                                      'l'        XK_l
  54.104 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
  54.105 +BX_KEY_M                                      'm'        XK_m
  54.106 +BX_KEY_M+BX_KEY_ALT_R                         ''        XK_mu
  54.107 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
  54.108 +BX_KEY_N                                      'n'        XK_n
  54.109 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
  54.110 +BX_KEY_O                                      'o'        XK_o
  54.111 +BX_KEY_O+BX_KEY_ALT_R                         none       XK_oslash
  54.112 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  54.113 +BX_KEY_P                                      'p'        XK_p
  54.114 +BX_KEY_P+BX_KEY_ALT_R                         ''        XK_thorn
  54.115 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
  54.116 +BX_KEY_Q+BX_KEY_ALT_R                         '@'        XK_at
  54.117 +BX_KEY_Q                                      'q'        XK_q
  54.118 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  54.119 +BX_KEY_R+BX_KEY_ALT_R                         ''        XK_registered
  54.120 +BX_KEY_R                                      'r'        XK_r
  54.121 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  54.122 +BX_KEY_S                                      's'        XK_s
  54.123 +BX_KEY_S+BX_KEY_ALT_R                         ''        XK_ssharp
  54.124 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  54.125 +BX_KEY_T                                      't'        XK_t
  54.126 +BX_KEY_T+BX_KEY_ALT_R                         ''        XK_thorn
  54.127 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  54.128 +BX_KEY_U+BX_KEY_ALT_R                         none       XK_downarrow
  54.129 +BX_KEY_U                                      'u'        XK_u
  54.130 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  54.131 +BX_KEY_V+BX_KEY_ALT_R                         none       XK_leftdoublequotemark
  54.132 +BX_KEY_V                                      'v'        XK_v
  54.133 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  54.134 +BX_KEY_W+BX_KEY_ALT_R                         '?'        XK_lstroke
  54.135 +BX_KEY_W                                      'w'        XK_w
  54.136 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  54.137 +BX_KEY_X+BX_KEY_ALT_R                         ''        XK_guillemotright
  54.138 +BX_KEY_X                                      'x'        XK_x
  54.139 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  54.140 +BX_KEY_Y+BX_KEY_ALT_R                         none       XK_leftarrow
  54.141 +BX_KEY_Y                                      'y'        XK_y
  54.142 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  54.143 +BX_KEY_Z+BX_KEY_ALT_R                         ''        XK_guillemotleft
  54.144 +BX_KEY_Z                                      'z'        XK_z
  54.145 +BX_KEY_F1                                     none       XK_F1
  54.146 +BX_KEY_F2                                     none       XK_F2
  54.147 +BX_KEY_F3                                     none       XK_F3
  54.148 +BX_KEY_F4                                     none       XK_F4
  54.149 +BX_KEY_F5                                     none       XK_F5
  54.150 +BX_KEY_F6                                     none       XK_F6
  54.151 +BX_KEY_F7                                     none       XK_F7
  54.152 +BX_KEY_F8                                     none       XK_F8
  54.153 +BX_KEY_F9                                     none       XK_F9
  54.154 +BX_KEY_F10                                    none       XK_F10
  54.155 +BX_KEY_F11                                    none       XK_F11
  54.156 +BX_KEY_F12                                    none       XK_F12
  54.157 +BX_KEY_ALT_L                                  none       XK_Alt_L
  54.158 +BX_KEY_ALT_L                                  none       XK_Meta_L
  54.159 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  54.160 +BX_KEY_ALT_R                                  none       XK_Multi_key
  54.161 +BX_KEY_BACKSLASH                              apostrophe XK_apostrophe
  54.162 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '*'        XK_asterisk
  54.163 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  54.164 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  54.165 +BX_KEY_COMMA                                  ','        XK_comma
  54.166 +BX_KEY_COMMA+BX_KEY_ALT_R                     none       XK_horizconnector
  54.167 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  54.168 +BX_KEY_CTRL_L                                 none       XK_Control_L
  54.169 +BX_KEY_CTRL_R                                 none       XK_Control_R
  54.170 +BX_KEY_DELETE                                 none       XK_Delete
  54.171 +BX_KEY_DOWN                                   none       XK_Down
  54.172 +BX_KEY_END                                    none       XK_End
  54.173 +BX_KEY_ENTER                                  return     XK_Return
  54.174 +BX_KEY_EQUALS                                 none       XK_acute
  54.175 +BX_KEY_EQUALS+BX_KEY_ALT_R                    '|'        XK_bar
  54.176 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '`'        XK_grave
  54.177 +BX_KEY_ESC                                    none       XK_Escape
  54.178 +BX_KEY_GRAVE                                  ''        XK_onehalf
  54.179 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_section
  54.180 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        XK_threequarters
  54.181 +BX_KEY_HOME                                   none       XK_Home
  54.182 +BX_KEY_INSERT                                 none       XK_Insert
  54.183 +BX_KEY_KP_5                                   none       XK_KP_5
  54.184 +BX_KEY_KP_5                                   none       XK_KP_Begin
  54.185 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  54.186 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  54.187 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  54.188 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  54.189 +BX_KEY_KP_DOWN                                none       XK_KP_2
  54.190 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  54.191 +BX_KEY_KP_END                                 none       XK_KP_1
  54.192 +BX_KEY_KP_END                                 none       XK_KP_End
  54.193 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  54.194 +BX_KEY_KP_HOME                                none       XK_KP_7
  54.195 +BX_KEY_KP_HOME                                none       XK_KP_Home
  54.196 +BX_KEY_KP_INSERT                              none       XK_KP_0
  54.197 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  54.198 +BX_KEY_KP_LEFT                                none       XK_KP_4
  54.199 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  54.200 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  54.201 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  54.202 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  54.203 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  54.204 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  54.205 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  54.206 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  54.207 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  54.208 +BX_KEY_KP_UP                                  none       XK_KP_8
  54.209 +BX_KEY_KP_UP                                  none       XK_KP_Up
  54.210 +BX_KEY_LEFT                                   none       XK_Left
  54.211 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            backslash  XK_backslash
  54.212 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  54.213 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  54.214 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_Aring
  54.215 +BX_KEY_LEFT_BRACKET+BX_KEY_ALT_L              none       XK_diaeresis
  54.216 +BX_KEY_LEFT_BRACKET                           ''        XK_aring
  54.217 +BX_KEY_MENU                                   none       XK_Menu
  54.218 +BX_KEY_MINUS+BX_KEY_ALT_R                     ''        XK_plusminus
  54.219 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  54.220 +BX_KEY_MINUS                                  '+'        XK_plus
  54.221 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  54.222 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  54.223 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  54.224 +BX_KEY_PAUSE                                  none       XK_Break
  54.225 +BX_KEY_PAUSE                                  none       XK_Pause
  54.226 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  54.227 +BX_KEY_PERIOD                                 '.'        XK_period
  54.228 +BX_KEY_PERIOD+BX_KEY_ALT_R                    ''        XK_periodcentered
  54.229 +BX_KEY_PRINT                                  none       XK_Print
  54.230 +BX_KEY_PRINT                                  none       XK_Sys_Req
  54.231 +BX_KEY_RIGHT                                  none       XK_Right
  54.232 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             '~'        XK_asciitilde
  54.233 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '^'        XK_asciicircum
  54.234 +BX_KEY_RIGHT_BRACKET                          '"'        XK_diaeresis
  54.235 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  54.236 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_AE
  54.237 +BX_KEY_SEMICOLON                              ''        XK_ae
  54.238 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  54.239 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  54.240 +BX_KEY_SINGLE_QUOTE                           ''        XK_oslash
  54.241 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_Ooblique
  54.242 +BX_KEY_SLASH+BX_KEY_ALT_R                     ''        XK_hyphen
  54.243 +BX_KEY_SLASH                                  '-'        XK_minus
  54.244 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        XK_underscore
  54.245 +BX_KEY_SPACE                                  space      XK_space
  54.246 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  54.247 +BX_KEY_TAB                                    tab        XK_Tab
  54.248 +BX_KEY_UP                                     none       XK_Up
  54.249 +BX_KEY_WIN_L                                  none       XK_Super_L
  54.250 +BX_KEY_WIN_R                                  none       XK_Super_R
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-de.map	Mon Jan 17 16:03:22 2005 +0000
    55.3 @@ -0,0 +1,247 @@
    55.4 +# Bochs Keymap file
    55.5 +# $Id: x11-pc-de.map,v 1.7 2002/10/24 21:06:56 bdenney Exp $
    55.6 +# Target: PC(x86) keyboard, DE keymap
    55.7 +# Author: Volker Ruppert
    55.8 +#
    55.9 +# The keymap file describes the layout of a keyboard, and how it translates
   55.10 +# into Bochs key codes.
   55.11 +#
   55.12 +# Format:
   55.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   55.14 +#
   55.15 +# Or, for keys that require modifiers:
   55.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   55.17 +#
   55.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   55.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   55.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   55.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   55.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   55.23 +# modifier).
   55.24 +#
   55.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   55.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   55.27 +# This format is designed to look like a char constant in C, but it's a very
   55.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   55.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   55.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   55.31 +# ugly.
   55.32 +#
   55.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   55.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   55.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   55.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   55.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   55.38 +# to edit the keymap file.
   55.39 +
   55.40 +BX_KEY_0                                      '0'        XK_0
   55.41 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
   55.42 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
   55.43 +BX_KEY_1                                      '1'        XK_1
   55.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   55.45 +BX_KEY_1+BX_KEY_ALT_R                         ''        XK_onesuperior
   55.46 +BX_KEY_2                                      '2'        XK_2
   55.47 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   55.48 +BX_KEY_2+BX_KEY_ALT_R                         ''        XK_twosuperior
   55.49 +BX_KEY_3                                      '3'        XK_3
   55.50 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        XK_section
   55.51 +BX_KEY_3+BX_KEY_ALT_R                         ''        XK_threesuperior
   55.52 +BX_KEY_4                                      '4'        XK_4
   55.53 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   55.54 +BX_KEY_4+BX_KEY_ALT_R                         ''        XK_onequarter
   55.55 +BX_KEY_5                                      '5'        XK_5
   55.56 +BX_KEY_5+BX_KEY_ALT_R                         ''        XK_onehalf
   55.57 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   55.58 +BX_KEY_6                                      '6'        XK_6
   55.59 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   55.60 +BX_KEY_6+BX_KEY_ALT_R                         ''        XK_threequarters
   55.61 +BX_KEY_7                                      '7'        XK_7
   55.62 +BX_KEY_7+BX_KEY_ALT_R                         '{'        XK_braceleft
   55.63 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   55.64 +BX_KEY_8                                      '8'        XK_8
   55.65 +BX_KEY_8+BX_KEY_ALT_R                         '['        XK_bracketleft
   55.66 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   55.67 +BX_KEY_9                                      '9'        XK_9
   55.68 +BX_KEY_9+BX_KEY_ALT_R                         ']'        XK_bracketright
   55.69 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
   55.70 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   55.71 +BX_KEY_A                                      'a'        XK_a
   55.72 +BX_KEY_A+BX_KEY_ALT_R                         ''        XK_ae
   55.73 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   55.74 +BX_KEY_B                                      'b'        XK_b
   55.75 +BX_KEY_B+BX_KEY_ALT_R                         none       XK_rightdoublequotemark
   55.76 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   55.77 +BX_KEY_C                                      'c'        XK_c
   55.78 +BX_KEY_C+BX_KEY_ALT_R                         ''        XK_cent
   55.79 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   55.80 +BX_KEY_D                                      'd'        XK_d
   55.81 +BX_KEY_D+BX_KEY_ALT_R                         ''        XK_eth
   55.82 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   55.83 +BX_KEY_E+BX_KEY_ALT_R                         none       XK_EuroSign
   55.84 +BX_KEY_E                                      'e'        XK_e
   55.85 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   55.86 +BX_KEY_F+BX_KEY_ALT_R                         none       XK_dstroke
   55.87 +BX_KEY_F                                      'f'        XK_f
   55.88 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   55.89 +BX_KEY_G+BX_KEY_ALT_R                         none       XK_eng
   55.90 +BX_KEY_G                                      'g'        XK_g
   55.91 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   55.92 +BX_KEY_H                                      'h'        XK_h
   55.93 +BX_KEY_H+BX_KEY_ALT_R                         none       XK_hstroke
   55.94 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   55.95 +BX_KEY_I                                      'i'        XK_i
   55.96 +BX_KEY_I+BX_KEY_ALT_R                         none       XK_rightarrow
   55.97 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   55.98 +BX_KEY_J                                      'j'        XK_j
   55.99 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
  55.100 +BX_KEY_K                                      'k'        XK_k
  55.101 +BX_KEY_K+BX_KEY_ALT_R                         none       XK_kra
  55.102 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
  55.103 +BX_KEY_L                                      'l'        XK_l
  55.104 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
  55.105 +BX_KEY_M                                      'm'        XK_m
  55.106 +BX_KEY_M+BX_KEY_ALT_R                         ''        XK_mu
  55.107 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
  55.108 +BX_KEY_N                                      'n'        XK_n
  55.109 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
  55.110 +BX_KEY_O                                      'o'        XK_o
  55.111 +BX_KEY_O+BX_KEY_ALT_R                         ''        XK_oslash
  55.112 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  55.113 +BX_KEY_P                                      'p'        XK_p
  55.114 +BX_KEY_P+BX_KEY_ALT_R                         ''        XK_thorn
  55.115 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
  55.116 +BX_KEY_Q+BX_KEY_ALT_R                         '@'        XK_at
  55.117 +BX_KEY_Q                                      'q'        XK_q
  55.118 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  55.119 +BX_KEY_R+BX_KEY_ALT_R                         ''        XK_paragraph
  55.120 +BX_KEY_R                                      'r'        XK_r
  55.121 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  55.122 +BX_KEY_S                                      's'        XK_s
  55.123 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  55.124 +BX_KEY_T                                      't'        XK_t
  55.125 +BX_KEY_T+BX_KEY_ALT_R                         none       XK_tslash
  55.126 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  55.127 +BX_KEY_U+BX_KEY_ALT_R                         none       XK_downarrow
  55.128 +BX_KEY_U                                      'u'        XK_u
  55.129 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  55.130 +BX_KEY_V+BX_KEY_ALT_R                         none       XK_leftdoublequotemark
  55.131 +BX_KEY_V                                      'v'        XK_v
  55.132 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  55.133 +BX_KEY_W+BX_KEY_ALT_R                         none       XK_lstroke
  55.134 +BX_KEY_W                                      'w'        XK_w
  55.135 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  55.136 +BX_KEY_X+BX_KEY_ALT_R                         ''        XK_guillemotright
  55.137 +BX_KEY_X                                      'x'        XK_x
  55.138 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Z'        XK_Z
  55.139 +BX_KEY_Y+BX_KEY_ALT_R                         none       XK_leftarrow
  55.140 +BX_KEY_Y                                      'z'        XK_z
  55.141 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Y'        XK_Y
  55.142 +BX_KEY_Z+BX_KEY_ALT_R                         ''        XK_guillemotleft
  55.143 +BX_KEY_Z                                      'y'        XK_y
  55.144 +BX_KEY_F1                                     none       XK_F1
  55.145 +BX_KEY_F2                                     none       XK_F2
  55.146 +BX_KEY_F3                                     none       XK_F3
  55.147 +BX_KEY_F4                                     none       XK_F4
  55.148 +BX_KEY_F5                                     none       XK_F5
  55.149 +BX_KEY_F6                                     none       XK_F6
  55.150 +BX_KEY_F7                                     none       XK_F7
  55.151 +BX_KEY_F8                                     none       XK_F8
  55.152 +BX_KEY_F9                                     none       XK_F9
  55.153 +BX_KEY_F10                                    none       XK_F10
  55.154 +BX_KEY_F11                                    none       XK_F11
  55.155 +BX_KEY_F12                                    none       XK_F12
  55.156 +BX_KEY_ALT_L                                  none       XK_Alt_L
  55.157 +BX_KEY_ALT_L                                  none       XK_Meta_L
  55.158 +BX_KEY_ALT_R                                  none       XK_Alt_R
  55.159 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  55.160 +BX_KEY_ALT_R                                  none       XK_Multi_key
  55.161 +BX_KEY_BACKSLASH                              apostrophe XK_apostrophe
  55.162 +BX_KEY_BACKSLASH                              '#'        XK_numbersign
  55.163 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  55.164 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  55.165 +BX_KEY_COMMA                                  ','        XK_comma
  55.166 +BX_KEY_COMMA+BX_KEY_ALT_R                     none       XK_horizconnector
  55.167 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  55.168 +BX_KEY_CTRL_L                                 none       XK_Control_L
  55.169 +BX_KEY_CTRL_R                                 none       XK_Control_R
  55.170 +BX_KEY_DELETE                                 none       XK_Delete
  55.171 +BX_KEY_DOWN                                   none       XK_Down
  55.172 +BX_KEY_END                                    none       XK_End
  55.173 +BX_KEY_ENTER                                  return     XK_Return
  55.174 +BX_KEY_EQUALS                                 none       XK_acute
  55.175 +BX_KEY_EQUALS+BX_KEY_ALT_R                    ''        XK_cedilla
  55.176 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '`'        XK_grave
  55.177 +BX_KEY_ESC                                    none       XK_Escape
  55.178 +BX_KEY_GRAVE                                  '^'        XK_asciicircum
  55.179 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_degree
  55.180 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        XK_notsign
  55.181 +BX_KEY_HOME                                   none       XK_Home
  55.182 +BX_KEY_INSERT                                 none       XK_Insert
  55.183 +BX_KEY_KP_5                                   none       XK_KP_5
  55.184 +BX_KEY_KP_5                                   none       XK_KP_Begin
  55.185 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  55.186 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  55.187 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  55.188 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  55.189 +BX_KEY_KP_DOWN                                none       XK_KP_2
  55.190 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  55.191 +BX_KEY_KP_END                                 none       XK_KP_1
  55.192 +BX_KEY_KP_END                                 none       XK_KP_End
  55.193 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  55.194 +BX_KEY_KP_HOME                                none       XK_KP_7
  55.195 +BX_KEY_KP_HOME                                none       XK_KP_Home
  55.196 +BX_KEY_KP_INSERT                              none       XK_KP_0
  55.197 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  55.198 +BX_KEY_KP_LEFT                                none       XK_KP_4
  55.199 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  55.200 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  55.201 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  55.202 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  55.203 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  55.204 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  55.205 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  55.206 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  55.207 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  55.208 +BX_KEY_KP_UP                                  none       XK_KP_8
  55.209 +BX_KEY_KP_UP                                  none       XK_KP_Up
  55.210 +BX_KEY_LEFT                                   none       XK_Left
  55.211 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            '|'        XK_bar
  55.212 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  55.213 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  55.214 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_Udiaeresis
  55.215 +BX_KEY_LEFT_BRACKET+BX_KEY_ALT_L              none       XK_diaeresis
  55.216 +BX_KEY_LEFT_BRACKET                           ''        XK_udiaeresis
  55.217 +BX_KEY_MENU                                   none       XK_Menu
  55.218 +BX_KEY_MINUS+BX_KEY_ALT_L                     backslash  XK_backslash
  55.219 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  55.220 +BX_KEY_MINUS                                  ''        XK_ssharp
  55.221 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  55.222 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  55.223 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  55.224 +BX_KEY_PAUSE                                  none       XK_Break
  55.225 +BX_KEY_PAUSE                                  none       XK_Pause
  55.226 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  55.227 +BX_KEY_PERIOD                                 '.'        XK_period
  55.228 +BX_KEY_PERIOD+BX_KEY_ALT_L                    ''        XK_periodcentered
  55.229 +BX_KEY_PRINT                                  none       XK_Print
  55.230 +BX_KEY_PRINT                                  none       XK_Sys_Req
  55.231 +BX_KEY_RIGHT                                  none       XK_Right
  55.232 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             '~'        XK_asciitilde
  55.233 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        XK_asterisk
  55.234 +BX_KEY_RIGHT_BRACKET                          '+'        XK_plus
  55.235 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  55.236 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_Odiaeresis
  55.237 +BX_KEY_SEMICOLON                              ''        XK_odiaeresis
  55.238 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  55.239 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  55.240 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_Adiaeresis
  55.241 +BX_KEY_SINGLE_QUOTE                           ''        XK_adiaeresis
  55.242 +BX_KEY_SLASH                                  none       XK_dead_belowdot
  55.243 +BX_KEY_SLASH                                  '-'        XK_minus
  55.244 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        XK_underscore
  55.245 +BX_KEY_SPACE                                  space      XK_space
  55.246 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  55.247 +BX_KEY_TAB                                    tab        XK_Tab
  55.248 +BX_KEY_UP                                     none       XK_Up
  55.249 +BX_KEY_WIN_L                                  none       XK_Super_L
  55.250 +BX_KEY_WIN_R                                  none       XK_Super_R
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-es.map	Mon Jan 17 16:03:22 2005 +0000
    56.3 @@ -0,0 +1,217 @@
    56.4 +# Bochs Keymap file
    56.5 +# $Id: x11-pc-es.map,v 1.4 2002/09/25 08:00:24 bdenney Exp $
    56.6 +# Target: PC(x86) keyboard, ES keymap
    56.7 +# Author: Vicente Hernando Ara 
    56.8 +#
    56.9 +# The keymap file describes the layout of a keyboard, and how it translates
   56.10 +# into Bochs key codes.
   56.11 +#
   56.12 +# Format:
   56.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   56.14 +#
   56.15 +# Or, for keys that require modifiers:
   56.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   56.17 +#
   56.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   56.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   56.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   56.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   56.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   56.23 +# modifier).
   56.24 +#
   56.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   56.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   56.27 +# This format is designed to look like a char constant in C, but it's a very
   56.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   56.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   56.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   56.31 +# ugly.
   56.32 +#
   56.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   56.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   56.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   56.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   56.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   56.38 +# to edit the keymap file.
   56.39 +#
   56.40 +BX_KEY_0                                      none       XK_0
   56.41 +BX_KEY_0                                      none       XK_equal
   56.42 +BX_KEY_1                                      none       XK_1
   56.43 +BX_KEY_1                                      none       XK_bar
   56.44 +BX_KEY_1                                      none       XK_exclam
   56.45 +BX_KEY_2                                      none       XK_2
   56.46 +BX_KEY_2                                      none       XK_at
   56.47 +BX_KEY_2                                      none       XK_quotedbl
   56.48 +BX_KEY_3                                      none       XK_3
   56.49 +BX_KEY_3                                      none       XK_numbersign
   56.50 +BX_KEY_3                                      none       XK_periodcentered
   56.51 +BX_KEY_4                                      none       XK_4
   56.52 +BX_KEY_4                                      none       XK_dollar
   56.53 +BX_KEY_5                                      none       XK_5
   56.54 +BX_KEY_5                                      none       XK_percent
   56.55 +BX_KEY_6                                      none       XK_6
   56.56 +BX_KEY_6                                      none       XK_ampersand
   56.57 +BX_KEY_7                                      none       XK_7
   56.58 +BX_KEY_7                                      none       XK_slash
   56.59 +BX_KEY_8                                      none       XK_8
   56.60 +BX_KEY_8                                      none       XK_parenleft
   56.61 +BX_KEY_9                                      none       XK_9
   56.62 +BX_KEY_9                                      none       XK_parenright
   56.63 +BX_KEY_A                                      none       XK_A
   56.64 +BX_KEY_A                                      none       XK_a
   56.65 +BX_KEY_B                                      none       XK_B
   56.66 +BX_KEY_B                                      none       XK_b
   56.67 +BX_KEY_C                                      none       XK_C
   56.68 +BX_KEY_C                                      none       XK_c
   56.69 +BX_KEY_D                                      none       XK_D
   56.70 +BX_KEY_D                                      none       XK_d
   56.71 +BX_KEY_E                                      none       XK_E
   56.72 +BX_KEY_E                                      none       XK_EuroSign
   56.73 +BX_KEY_E                                      none       XK_e
   56.74 +BX_KEY_F                                      none       XK_F
   56.75 +BX_KEY_F                                      none       XK_f
   56.76 +BX_KEY_G                                      none       XK_G
   56.77 +BX_KEY_G                                      none       XK_g
   56.78 +BX_KEY_H                                      none       XK_H
   56.79 +BX_KEY_H                                      none       XK_h
   56.80 +BX_KEY_I                                      none       XK_I
   56.81 +BX_KEY_I                                      none       XK_i
   56.82 +BX_KEY_J                                      none       XK_J
   56.83 +BX_KEY_J                                      none       XK_j
   56.84 +BX_KEY_K                                      none       XK_K
   56.85 +BX_KEY_K                                      none       XK_k
   56.86 +BX_KEY_L                                      none       XK_L
   56.87 +BX_KEY_L                                      none       XK_l
   56.88 +BX_KEY_M                                      none       XK_M
   56.89 +BX_KEY_M                                      none       XK_m
   56.90 +BX_KEY_N                                      none       XK_N
   56.91 +BX_KEY_N                                      none       XK_n
   56.92 +BX_KEY_O                                      none       XK_O
   56.93 +BX_KEY_O                                      none       XK_o
   56.94 +BX_KEY_P                                      none       XK_P
   56.95 +BX_KEY_P                                      none       XK_p
   56.96 +BX_KEY_Q                                      none       XK_Q
   56.97 +BX_KEY_Q                                      none       XK_q
   56.98 +BX_KEY_R                                      none       XK_R
   56.99 +BX_KEY_R                                      none       XK_r
  56.100 +BX_KEY_S                                      none       XK_S
  56.101 +BX_KEY_S                                      none       XK_s
  56.102 +BX_KEY_T                                      none       XK_T
  56.103 +BX_KEY_T                                      none       XK_t
  56.104 +BX_KEY_U                                      none       XK_U
  56.105 +BX_KEY_U                                      none       XK_u
  56.106 +BX_KEY_V                                      none       XK_V
  56.107 +BX_KEY_V                                      none       XK_v
  56.108 +BX_KEY_W                                      none       XK_W
  56.109 +BX_KEY_W                                      none       XK_w
  56.110 +BX_KEY_X                                      none       XK_X
  56.111 +BX_KEY_X                                      none       XK_x
  56.112 +BX_KEY_Y                                      none       XK_Y
  56.113 +BX_KEY_Y                                      none       XK_y
  56.114 +BX_KEY_Z                                      none       XK_Z
  56.115 +BX_KEY_Z                                      none       XK_z
  56.116 +BX_KEY_F1                                     none       XK_F1
  56.117 +BX_KEY_F2                                     none       XK_F2
  56.118 +BX_KEY_F3                                     none       XK_F3
  56.119 +BX_KEY_F4                                     none       XK_F4
  56.120 +BX_KEY_F5                                     none       XK_F5
  56.121 +BX_KEY_F6                                     none       XK_F6
  56.122 +BX_KEY_F7                                     none       XK_F7
  56.123 +BX_KEY_F8                                     none       XK_F8
  56.124 +BX_KEY_F9                                     none       XK_F9
  56.125 +BX_KEY_F10                                    none       XK_F10
  56.126 +BX_KEY_F11                                    none       XK_F11
  56.127 +BX_KEY_F12                                    none       XK_F12
  56.128 +BX_KEY_ALT_L                                  none       XK_Alt_L
  56.129 +BX_KEY_ALT_L                                  none       XK_Meta_L
  56.130 +BX_KEY_ALT_R                                  none       XK_Alt_R
  56.131 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  56.132 +BX_KEY_ALT_R                                  none       XK_Multi_key
  56.133 +BX_KEY_BACKSLASH                              none       XK_Ccedilla
  56.134 +BX_KEY_BACKSLASH                              none       XK_ccedilla
  56.135 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  56.136 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  56.137 +BX_KEY_COMMA                                  none       XK_comma
  56.138 +BX_KEY_COMMA                                  none       XK_semicolon
  56.139 +BX_KEY_CTRL_L                                 none       XK_Control_L
  56.140 +BX_KEY_CTRL_R                                 none       XK_Control_R
  56.141 +BX_KEY_DELETE                                 none       XK_Delete
  56.142 +BX_KEY_DOWN                                   none       XK_Down
  56.143 +BX_KEY_END                                    none       XK_End
  56.144 +BX_KEY_ENTER                                  none       XK_Return
  56.145 +BX_KEY_EQUALS                                 none       XK_exclamdown
  56.146 +BX_KEY_EQUALS                                 none       XK_questiondown
  56.147 +BX_KEY_ESC                                    none       XK_Escape
  56.148 +BX_KEY_GRAVE                                  none       XK_asciitilde
  56.149 +BX_KEY_GRAVE                                  none       XK_backslash
  56.150 +BX_KEY_GRAVE                                  none       XK_grave
  56.151 +BX_KEY_GRAVE                                  none       XK_masculine
  56.152 +BX_KEY_GRAVE                                  none       XK_ordfeminine
  56.153 +BX_KEY_HOME                                   none       XK_Home
  56.154 +BX_KEY_INSERT                                 none       XK_Insert
  56.155 +BX_KEY_KP_5                                   none       XK_KP_5
  56.156 +BX_KEY_KP_5                                   none       XK_KP_Begin
  56.157 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  56.158 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  56.159 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  56.160 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  56.161 +BX_KEY_KP_DOWN                                none       XK_KP_2
  56.162 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  56.163 +BX_KEY_KP_END                                 none       XK_KP_1
  56.164 +BX_KEY_KP_END                                 none       XK_KP_End
  56.165 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  56.166 +BX_KEY_KP_HOME                                none       XK_KP_7
  56.167 +BX_KEY_KP_HOME                                none       XK_KP_Home
  56.168 +BX_KEY_KP_INSERT                              none       XK_KP_0
  56.169 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  56.170 +BX_KEY_KP_LEFT                                none       XK_KP_4
  56.171 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  56.172 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  56.173 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  56.174 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  56.175 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  56.176 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  56.177 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  56.178 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  56.179 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  56.180 +BX_KEY_KP_UP                                  none       XK_KP_8
  56.181 +BX_KEY_KP_UP                                  none       XK_KP_Up
  56.182 +BX_KEY_LEFT                                   none       XK_Left
  56.183 +BX_KEY_LEFT_BACKSLASH                         none       XK_greater
  56.184 +BX_KEY_LEFT_BACKSLASH                         none       XK_less
  56.185 +BX_KEY_LEFT_BRACKET                           none       XK_braceleft
  56.186 +BX_KEY_LEFT_BRACKET                           none       XK_bracketleft
  56.187 +BX_KEY_LEFT_BRACKET                           none       XK_dead_circumflex
  56.188 +BX_KEY_LEFT_BRACKET                           none       XK_dead_grave
  56.189 +BX_KEY_MENU                                   none       XK_Menu
  56.190 +BX_KEY_MINUS                                  none       XK_apostrophe
  56.191 +BX_KEY_MINUS                                  none       XK_question
  56.192 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  56.193 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  56.194 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  56.195 +BX_KEY_PAUSE                                  none       XK_Break
  56.196 +BX_KEY_PAUSE                                  none       XK_Pause
  56.197 +BX_KEY_PERIOD                                 none       XK_colon
  56.198 +BX_KEY_PERIOD                                 none       XK_period
  56.199 +BX_KEY_PRINT                                  none       XK_Print
  56.200 +BX_KEY_PRINT                                  none       XK_Sys_Req
  56.201 +BX_KEY_RIGHT                                  none       XK_Right
  56.202 +BX_KEY_RIGHT_BRACKET                          none       XK_asterisk
  56.203 +BX_KEY_RIGHT_BRACKET                          none       XK_braceright
  56.204 +BX_KEY_RIGHT_BRACKET                          none       XK_bracketright
  56.205 +BX_KEY_RIGHT_BRACKET                          none       XK_plus
  56.206 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  56.207 +BX_KEY_SEMICOLON                              none       XK_Ntilde
  56.208 +BX_KEY_SEMICOLON                              none       XK_ntilde
  56.209 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  56.210 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  56.211 +BX_KEY_SINGLE_QUOTE                           none       XK_dead_acute
  56.212 +BX_KEY_SINGLE_QUOTE                           none       XK_dead_diaeresis
  56.213 +BX_KEY_SLASH                                  none       XK_minus
  56.214 +BX_KEY_SLASH                                  none       XK_underscore
  56.215 +BX_KEY_SPACE                                  none       XK_space
  56.216 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  56.217 +BX_KEY_TAB                                    none       XK_Tab
  56.218 +BX_KEY_UP                                     none       XK_Up
  56.219 +BX_KEY_WIN_L                                  none       XK_Super_L
  56.220 +BX_KEY_WIN_R                                  none       XK_Super_R
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-fr.map	Mon Jan 17 16:03:22 2005 +0000
    57.3 @@ -0,0 +1,218 @@
    57.4 +# Bochs Keymap file
    57.5 +# $Id: x11-pc-fr.map,v 1.5 2002/09/25 08:00:24 bdenney Exp $
    57.6 +# Target: PC(x86) keyboard, FR keymap
    57.7 +# Author: Christophe Bothamy, Bryce Denney
    57.8 +#
    57.9 +# The keymap file describes the layout of a keyboard, and how it translates
   57.10 +# into Bochs key codes.
   57.11 +#
   57.12 +# Format:
   57.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   57.14 +#
   57.15 +# Or, for keys that require modifiers:
   57.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   57.17 +#
   57.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   57.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   57.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   57.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   57.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   57.23 +# modifier).
   57.24 +#
   57.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   57.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   57.27 +# This format is designed to look like a char constant in C, but it's a very
   57.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   57.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   57.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   57.31 +# ugly.
   57.32 +#
   57.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   57.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   57.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   57.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   57.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   57.38 +# to edit the keymap file.
   57.39 +
   57.40 +BX_KEY_0+BX_KEY_SHIFT_L                       '0'        XK_0
   57.41 +BX_KEY_0                                      ''        XK_agrave
   57.42 +BX_KEY_0+BX_KEY_ALT_R                         '@'        XK_at
   57.43 +BX_KEY_1+BX_KEY_SHIFT_L                       '1'        XK_1
   57.44 +BX_KEY_1                                      '&'        XK_ampersand
   57.45 +BX_KEY_2+BX_KEY_SHIFT_L                       '2'        XK_2
   57.46 +BX_KEY_2+BX_KEY_ALT_R                         '~'        XK_asciitilde
   57.47 +BX_KEY_2                                      ''        XK_eacute
   57.48 +BX_KEY_3+BX_KEY_SHIFT_L                       '3'        XK_3
   57.49 +BX_KEY_3+BX_KEY_ALT_R                         '#'        XK_numbersign
   57.50 +BX_KEY_3                                      '"'        XK_quotedbl
   57.51 +BX_KEY_4+BX_KEY_SHIFT_L                       '4'        XK_4
   57.52 +BX_KEY_4                                      apostrophe XK_apostrophe
   57.53 +BX_KEY_4+BX_KEY_ALT_R                         '{'        XK_braceleft
   57.54 +BX_KEY_5+BX_KEY_SHIFT_L                       '5'        XK_5
   57.55 +BX_KEY_5+BX_KEY_ALT_R                         '['        XK_bracketleft
   57.56 +BX_KEY_5                                      '('        XK_parenleft
   57.57 +BX_KEY_6+BX_KEY_SHIFT_L                       '6'        XK_6
   57.58 +BX_KEY_6+BX_KEY_ALT_R                         '|'        XK_bar
   57.59 +BX_KEY_6                                      '-'        XK_minus
   57.60 +BX_KEY_7+BX_KEY_SHIFT_L                       '7'        XK_7
   57.61 +BX_KEY_7                                      ''        XK_egrave
   57.62 +BX_KEY_7+BX_KEY_ALT_R                         '`'        XK_grave
   57.63 +BX_KEY_8+BX_KEY_SHIFT_L                       '8'        XK_8
   57.64 +BX_KEY_8+BX_KEY_ALT_R                         backslash  XK_backslash
   57.65 +BX_KEY_8                                      '_'        XK_underscore
   57.66 +BX_KEY_9+BX_KEY_SHIFT_L                       '9'        XK_9
   57.67 +BX_KEY_9+BX_KEY_ALT_R                         '^'        XK_asciicircum
   57.68 +BX_KEY_9                                      ''       XK_ccedilla
   57.69 +BX_KEY_A+BX_KEY_SHIFT_L                       'Q'        XK_Q
   57.70 +BX_KEY_A                                      'q'        XK_q
   57.71 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   57.72 +BX_KEY_B                                      'b'        XK_b
   57.73 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   57.74 +BX_KEY_C                                      'c'        XK_c
   57.75 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   57.76 +BX_KEY_D                                      'd'        XK_d
   57.77 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   57.78 +BX_KEY_E                                      'e'        XK_e
   57.79 +BX_KEY_E+BX_KEY_ALT_R                         none       XK_EuroSign
   57.80 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   57.81 +BX_KEY_F                                      'f'        XK_f
   57.82 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   57.83 +BX_KEY_G                                      'g'        XK_g
   57.84 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   57.85 +BX_KEY_H                                      'h'        XK_h
   57.86 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   57.87 +BX_KEY_I                                      'i'        XK_i
   57.88 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   57.89 +BX_KEY_J                                      'j'        XK_j
   57.90 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   57.91 +BX_KEY_K                                      'k'        XK_k
   57.92 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   57.93 +BX_KEY_L                                      'l'        XK_l
   57.94 +BX_KEY_M+BX_KEY_SHIFT_L                       '?'        XK_question
   57.95 +BX_KEY_M                                      ','        XK_comma
   57.96 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   57.97 +BX_KEY_N                                      'n'        XK_n
   57.98 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   57.99 +BX_KEY_O                                      'o'        XK_o
  57.100 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  57.101 +BX_KEY_P                                      'p'        XK_p
  57.102 +BX_KEY_Q+BX_KEY_SHIFT_L                       'A'        XK_A
  57.103 +BX_KEY_Q                                      'a'        XK_a
  57.104 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  57.105 +BX_KEY_R                                      'r'        XK_r
  57.106 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  57.107 +BX_KEY_S                                      's'        XK_s
  57.108 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  57.109 +BX_KEY_T                                      't'        XK_t
  57.110 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  57.111 +BX_KEY_U                                      'u'        XK_u
  57.112 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  57.113 +BX_KEY_V                                      'v'        XK_v
  57.114 +BX_KEY_W+BX_KEY_SHIFT_L                       'Z'        XK_Z
  57.115 +BX_KEY_W                                      'z'        XK_z
  57.116 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  57.117 +BX_KEY_X                                      'x'        XK_x
  57.118 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  57.119 +BX_KEY_Y                                      'y'        XK_y
  57.120 +BX_KEY_Z+BX_KEY_SHIFT_L                       'W'        XK_W
  57.121 +BX_KEY_Z                                      'w'        XK_w
  57.122 +BX_KEY_F1                                     none       XK_F1
  57.123 +BX_KEY_F2                                     none       XK_F2
  57.124 +BX_KEY_F3                                     none       XK_F3
  57.125 +BX_KEY_F4                                     none       XK_F4
  57.126 +BX_KEY_F5                                     none       XK_F5
  57.127 +BX_KEY_F6                                     none       XK_F6
  57.128 +BX_KEY_F7                                     none       XK_F7
  57.129 +BX_KEY_F8                                     none       XK_F8
  57.130 +BX_KEY_F9                                     none       XK_F9
  57.131 +BX_KEY_F10                                    none       XK_F10
  57.132 +BX_KEY_F11                                    none       XK_F11
  57.133 +BX_KEY_F12                                    none       XK_F12
  57.134 +BX_KEY_ALT_L                                  none       XK_Alt_L
  57.135 +BX_KEY_ALT_L                                  none       XK_Meta_L
  57.136 +BX_KEY_ALT_R                                  none       XK_Alt_R
  57.137 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  57.138 +BX_KEY_ALT_R                                  none       XK_Multi_key
  57.139 +BX_KEY_BACKSLASH                              '*'        XK_asterisk
  57.140 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               ''        XK_mu
  57.141 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  57.142 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  57.143 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '.'        XK_period
  57.144 +BX_KEY_COMMA                                  ';'        XK_semicolon
  57.145 +BX_KEY_CTRL_L                                 none       XK_Control_L
  57.146 +BX_KEY_CTRL_R                                 none       XK_Control_R
  57.147 +BX_KEY_DELETE                                 none       XK_Delete
  57.148 +BX_KEY_DOWN                                   none       XK_Down
  57.149 +BX_KEY_END                                    none       XK_End
  57.150 +BX_KEY_ENTER                                  return     XK_Return
  57.151 +BX_KEY_EQUALS+BX_KEY_ALT_R                    '}'        XK_braceright
  57.152 +BX_KEY_EQUALS                                 '='        XK_equal
  57.153 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        XK_plus
  57.154 +BX_KEY_ESC                                    none       XK_Escape
  57.155 +BX_KEY_GRAVE                                  ''        XK_twosuperior
  57.156 +BX_KEY_HOME                                   none       XK_Home
  57.157 +BX_KEY_INSERT                                 none       XK_Insert
  57.158 +BX_KEY_KP_5                                   none       XK_KP_5
  57.159 +BX_KEY_KP_5                                   none       XK_KP_Begin
  57.160 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  57.161 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  57.162 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  57.163 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  57.164 +BX_KEY_KP_DOWN                                none       XK_KP_2
  57.165 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  57.166 +BX_KEY_KP_END                                 none       XK_KP_1
  57.167 +BX_KEY_KP_END                                 none       XK_KP_End
  57.168 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  57.169 +BX_KEY_KP_HOME                                none       XK_KP_7
  57.170 +BX_KEY_KP_HOME                                none       XK_KP_Home
  57.171 +BX_KEY_KP_INSERT                              none       XK_KP_0
  57.172 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  57.173 +BX_KEY_KP_LEFT                                none       XK_KP_4
  57.174 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  57.175 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  57.176 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  57.177 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  57.178 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  57.179 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  57.180 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  57.181 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  57.182 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  57.183 +BX_KEY_KP_UP                                  none       XK_KP_8
  57.184 +BX_KEY_KP_UP                                  none       XK_KP_Up
  57.185 +BX_KEY_LEFT                                   none       XK_Left
  57.186 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  57.187 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  57.188 +BX_KEY_LEFT_BRACKET                           '^'        XK_dead_circumflex
  57.189 +BX_KEY_LEFT_BRACKET                           none       XK_dead_diaeresis
  57.190 +BX_KEY_MENU                                   none       XK_Menu
  57.191 +BX_KEY_MINUS+BX_KEY_ALT_R                     ']'        XK_bracketright
  57.192 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   ''        XK_degree
  57.193 +BX_KEY_MINUS                                  ')'        XK_parenright
  57.194 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  57.195 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  57.196 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  57.197 +BX_KEY_PAUSE                                  none       XK_Break
  57.198 +BX_KEY_PAUSE                                  none       XK_Pause
  57.199 +BX_KEY_PERIOD                                 ':'        XK_colon
  57.200 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '/'        XK_slash
  57.201 +BX_KEY_PRINT                                  none       XK_Print
  57.202 +BX_KEY_PRINT                                  none       XK_Sys_Req
  57.203 +BX_KEY_RIGHT                                  none       XK_Right
  57.204 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             ''        XK_currency
  57.205 +BX_KEY_RIGHT_BRACKET                          '$'        XK_dollar
  57.206 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           ''        XK_sterling
  57.207 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  57.208 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               'M'        XK_M
  57.209 +BX_KEY_SEMICOLON                              'm'        XK_m
  57.210 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  57.211 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  57.212 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '%'        XK_percent
  57.213 +BX_KEY_SINGLE_QUOTE                           ''        XK_ugrave
  57.214 +BX_KEY_SLASH                                  '!'        XK_exclam
  57.215 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   ''        XK_section
  57.216 +BX_KEY_SPACE                                  space      XK_space
  57.217 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  57.218 +BX_KEY_TAB                                    tab        XK_Tab
  57.219 +BX_KEY_UP                                     none       XK_Up
  57.220 +BX_KEY_WIN_L                                  none       XK_Super_L
  57.221 +BX_KEY_WIN_R                                  none       XK_Super_R
    58.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-it.map	Mon Jan 17 16:03:22 2005 +0000
    58.3 @@ -0,0 +1,207 @@
    58.4 +# Bochs Keymap file
    58.5 +# $Id: x11-pc-it.map,v 1.2 2002/09/25 08:00:25 bdenney Exp $
    58.6 +# Target: PC(x86) keyboard, IT keymap
    58.7 +# Author: Emanuele Goldoni
    58.8 +#
    58.9 +# The keymap file describes the layout of a keyboard, and how it translates
   58.10 +# into Bochs key codes.
   58.11 +#
   58.12 +# Format:
   58.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   58.14 +#
   58.15 +# Or, for keys that require modifiers:
   58.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   58.17 +#
   58.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   58.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   58.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   58.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   58.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   58.23 +# modifier).
   58.24 +#
   58.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   58.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   58.27 +# This format is designed to look like a char constant in C, but it's a very
   58.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   58.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   58.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   58.31 +# ugly.
   58.32 +#
   58.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   58.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   58.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   58.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   58.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   58.38 +# to edit the keymap file.
   58.39 +#
   58.40 +
   58.41 +BX_KEY_0                                      '0'        XK_0
   58.42 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
   58.43 +BX_KEY_1                                      '1'        XK_1
   58.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   58.45 +BX_KEY_2                                      '2'        XK_2
   58.46 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   58.47 +BX_KEY_3                                      '3'        XK_3
   58.48 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        XK_sterling
   58.49 +BX_KEY_4                                      '4'        XK_4
   58.50 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   58.51 +BX_KEY_5                                      '5'        XK_5
   58.52 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   58.53 +BX_KEY_6                                      '6'        XK_6
   58.54 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   58.55 +BX_KEY_7                                      '7'        XK_7
   58.56 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   58.57 +BX_KEY_8                                      '8'        XK_8
   58.58 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   58.59 +BX_KEY_9                                      '9'        XK_9
   58.60 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
   58.61 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   58.62 +BX_KEY_A                                      'a'        XK_a
   58.63 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   58.64 +BX_KEY_B                                      'b'        XK_b
   58.65 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   58.66 +BX_KEY_C                                      'c'        XK_c
   58.67 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   58.68 +BX_KEY_D                                      'd'        XK_d
   58.69 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   58.70 +BX_KEY_E                                      'e'        XK_e
   58.71 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   58.72 +BX_KEY_F                                      'f'        XK_f
   58.73 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   58.74 +BX_KEY_G                                      'g'        XK_g
   58.75 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   58.76 +BX_KEY_H                                      'h'        XK_h
   58.77 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   58.78 +BX_KEY_I                                      'i'        XK_i
   58.79 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   58.80 +BX_KEY_J                                      'j'        XK_j
   58.81 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   58.82 +BX_KEY_K                                      'k'        XK_k
   58.83 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   58.84 +BX_KEY_L                                      'l'        XK_l
   58.85 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
   58.86 +BX_KEY_M                                      'm'        XK_m
   58.87 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   58.88 +BX_KEY_N                                      'n'        XK_n
   58.89 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   58.90 +BX_KEY_O                                      'o'        XK_o
   58.91 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   58.92 +BX_KEY_P                                      'p'        XK_p
   58.93 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
   58.94 +BX_KEY_Q                                      'q'        XK_q
   58.95 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
   58.96 +BX_KEY_R                                      'r'        XK_r
   58.97 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
   58.98 +BX_KEY_S                                      's'        XK_s
   58.99 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  58.100 +BX_KEY_T                                      't'        XK_t
  58.101 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  58.102 +BX_KEY_U                                      'u'        XK_u
  58.103 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  58.104 +BX_KEY_V                                      'v'        XK_v
  58.105 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  58.106 +BX_KEY_W                                      'w'        XK_w
  58.107 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  58.108 +BX_KEY_X                                      'x'        XK_x
  58.109 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  58.110 +BX_KEY_Y                                      'y'        XK_y
  58.111 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  58.112 +BX_KEY_Z                                      'z'        XK_z
  58.113 +BX_KEY_F1                                     none       XK_F1
  58.114 +BX_KEY_F2                                     none       XK_F2
  58.115 +BX_KEY_F3                                     none       XK_F3
  58.116 +BX_KEY_F4                                     none       XK_F4
  58.117 +BX_KEY_F5                                     none       XK_F5
  58.118 +BX_KEY_F6                                     none       XK_F6
  58.119 +BX_KEY_F7                                     none       XK_F7
  58.120 +BX_KEY_F8                                     none       XK_F8
  58.121 +BX_KEY_F9                                     none       XK_F9
  58.122 +BX_KEY_F10                                    none       XK_F10
  58.123 +BX_KEY_F11                                    none       XK_F11
  58.124 +BX_KEY_F12                                    none       XK_F12
  58.125 +BX_KEY_ALT_L                                  none       XK_Alt_L
  58.126 +BX_KEY_ALT_L                                  none       XK_Meta_L
  58.127 +BX_KEY_ALT_R                                  none       XK_Alt_R
  58.128 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  58.129 +BX_KEY_ALT_R                                  none       XK_Multi_key
  58.130 +BX_KEY_BACKSLASH                              ''	 XK_ugrave
  58.131 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               ''        XK_section
  58.132 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  58.133 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  58.134 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  58.135 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  58.136 +BX_KEY_COMMA                                  ','        XK_comma
  58.137 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  58.138 +BX_KEY_CTRL_L                                 none       XK_Control_L
  58.139 +BX_KEY_CTRL_R                                 none       XK_Control_R
  58.140 +BX_KEY_DELETE                                 none       XK_Delete
  58.141 +BX_KEY_DOWN                                   none       XK_Down
  58.142 +BX_KEY_END                                    none       XK_End
  58.143 +BX_KEY_ENTER                                  return     XK_Return
  58.144 +BX_KEY_EQUALS                                 ''  	 XK_igrave
  58.145 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '^'        XK_asciicircum
  58.146 +BX_KEY_ESC                                    none       XK_Escape
  58.147 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   '|'        XK_bar
  58.148 +BX_KEY_GRAVE                                  backslash  XK_backslash
  58.149 +BX_KEY_HOME                                   none       XK_Home
  58.150 +BX_KEY_INSERT                                 none       XK_Insert
  58.151 +BX_KEY_KP_5                                   none       XK_KP_5
  58.152 +BX_KEY_KP_5                                   none       XK_KP_Begin
  58.153 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  58.154 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  58.155 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  58.156 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  58.157 +BX_KEY_KP_DOWN                                none       XK_KP_2
  58.158 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  58.159 +BX_KEY_KP_END                                 none       XK_KP_1
  58.160 +BX_KEY_KP_END                                 none       XK_KP_End
  58.161 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  58.162 +BX_KEY_KP_HOME                                none       XK_KP_7
  58.163 +BX_KEY_KP_HOME                                none       XK_KP_Home
  58.164 +BX_KEY_KP_INSERT                              none       XK_KP_0
  58.165 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  58.166 +BX_KEY_KP_LEFT                                none       XK_KP_4
  58.167 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  58.168 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  58.169 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  58.170 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  58.171 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  58.172 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  58.173 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  58.174 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  58.175 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  58.176 +BX_KEY_KP_UP                                  none       XK_KP_8
  58.177 +BX_KEY_KP_UP                                  none       XK_KP_Up
  58.178 +BX_KEY_LEFT                                   none       XK_Left
  58.179 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_eacute
  58.180 +BX_KEY_LEFT_BRACKET                           ''        XK_egrave
  58.181 +BX_KEY_MENU                                   none       XK_Menu
  58.182 +BX_KEY_MINUS                                  apostrophe XK_apostrophe
  58.183 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  58.184 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  58.185 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  58.186 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  58.187 +BX_KEY_PAUSE                                  none       XK_Break
  58.188 +BX_KEY_PAUSE                                  none       XK_Pause
  58.189 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  58.190 +BX_KEY_PERIOD                                 '.'        XK_period
  58.191 +BX_KEY_PRINT                                  none       XK_Print
  58.192 +BX_KEY_PRINT                                  none       XK_Sys_Req
  58.193 +BX_KEY_RIGHT                                  none       XK_Right
  58.194 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '*'        XK_asterisk
  58.195 +BX_KEY_RIGHT_BRACKET                          '+'        XK_plus
  58.196 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  58.197 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_ccedilla
  58.198 +BX_KEY_SEMICOLON                              ''        XK_ograve
  58.199 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  58.200 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  58.201 +BX_KEY_SINGLE_QUOTE                           ''	   XK_agrave 
  58.202 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_degree 
  58.203 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '_'        XK_underscore
  58.204 +BX_KEY_SLASH                                  '-'        XK_minus
  58.205 +BX_KEY_SPACE                                  space      XK_space
  58.206 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  58.207 +BX_KEY_TAB                                    tab        XK_Tab
  58.208 +BX_KEY_UP                                     none       XK_Up
  58.209 +BX_KEY_WIN_L                                  none       XK_Super_L
  58.210 +BX_KEY_WIN_R                                  none       XK_Super_R
    59.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-se.map	Mon Jan 17 16:03:22 2005 +0000
    59.3 @@ -0,0 +1,278 @@
    59.4 +# Bochs Keymap file
    59.5 +# $Id: x11-pc-se.map,v 1.2 2002/09/25 08:00:25 bdenney Exp $
    59.6 +# Target: PC(x86) keyboard, SE keymap
    59.7 +# Author: Magnus 'Moggen' berg
    59.8 +#
    59.9 +# The keymap file describes the layout of a keyboard, and how it translates
   59.10 +# into Bochs key codes.
   59.11 +#
   59.12 +# Format:
   59.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   59.14 +#
   59.15 +# Or, for keys that require modifiers:
   59.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   59.17 +#
   59.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   59.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   59.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   59.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   59.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   59.23 +# modifier).
   59.24 +#
   59.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   59.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   59.27 +# This format is designed to look like a char constant in C, but it's a very
   59.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   59.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   59.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   59.31 +# ugly.
   59.32 +#
   59.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   59.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   59.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   59.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   59.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   59.38 +# to edit the keymap file.
   59.39 +#
   59.40 +
   59.41 +# Upper key groups
   59.42 +BX_KEY_ESC                                    none       XK_Escape
   59.43 +
   59.44 +BX_KEY_F1                                     none       XK_F1
   59.45 +BX_KEY_F2                                     none       XK_F2
   59.46 +BX_KEY_F3                                     none       XK_F3
   59.47 +BX_KEY_F4                                     none       XK_F4
   59.48 +
   59.49 +BX_KEY_F5                                     none       XK_F5
   59.50 +BX_KEY_F6                                     none       XK_F6
   59.51 +BX_KEY_F7                                     none       XK_F7
   59.52 +BX_KEY_F8                                     none       XK_F8
   59.53 +
   59.54 +BX_KEY_F9                                     none       XK_F9
   59.55 +BX_KEY_F10                                    none       XK_F10
   59.56 +BX_KEY_F11                                    none       XK_F11
   59.57 +BX_KEY_F12                                    none       XK_F12
   59.58 +
   59.59 +BX_KEY_PRINT                                  none       XK_Print
   59.60 +BX_KEY_PRINT                                  none       XK_Sys_Req
   59.61 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
   59.62 +BX_KEY_PAUSE                                  none       XK_Break
   59.63 +BX_KEY_PAUSE                                  none       XK_Pause
   59.64 +
   59.65 +# Main key group
   59.66 +#  Row 1
   59.67 +BX_KEY_GRAVE                                  ''        XK_section
   59.68 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_onehalf
   59.69 +BX_KEY_GRAVE+BX_KEY_ALT_R                     ''        XK_paragraph
   59.70 +BX_KEY_GRAVE+BX_KEY_SHIFT_L+BX_KEY_ALT_R      ''        XK_threequarters
   59.71 +BX_KEY_1                                      '1'        XK_1
   59.72 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   59.73 +BX_KEY_1+BX_KEY_ALT_R                         ''        XK_exclamdown
   59.74 +BX_KEY_1+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_onesuperior
   59.75 +BX_KEY_2                                      '2'        XK_2
   59.76 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   59.77 +BX_KEY_2+BX_KEY_ALT_R                         '@'        XK_at
   59.78 +BX_KEY_2+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_twosuperior
   59.79 +BX_KEY_3                                      '3'        XK_3
   59.80 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        XK_numbersign
   59.81 +BX_KEY_3+BX_KEY_ALT_R                         ''        XK_sterling
   59.82 +BX_KEY_3+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_threesuperior
   59.83 +BX_KEY_4                                      '4'        XK_4
   59.84 +BX_KEY_4+BX_KEY_SHIFT_L                       ''        XK_currency
   59.85 +BX_KEY_4+BX_KEY_ALT_R                         '$'        XK_dollar
   59.86 +BX_KEY_4+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_onequarter
   59.87 +BX_KEY_5                                      '5'        XK_5
   59.88 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   59.89 +BX_KEY_5+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_cent
   59.90 +BX_KEY_6                                      '6'        XK_6
   59.91 +BX_KEY_6+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   59.92 +BX_KEY_6+BX_KEY_ALT_R                         ''        XK_yen
   59.93 +BX_KEY_7                                      '7'        XK_7
   59.94 +BX_KEY_7+BX_KEY_SHIFT_L                       '/'        XK_slash
   59.95 +BX_KEY_7+BX_KEY_ALT_R                         '{'        XK_braceleft
   59.96 +BX_KEY_7+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_division
   59.97 +BX_KEY_8                                      '8'        XK_8
   59.98 +BX_KEY_8+BX_KEY_SHIFT_L                       '('        XK_parenleft
   59.99 +BX_KEY_8+BX_KEY_ALT_R                         '['        XK_bracketleft
  59.100 +BX_KEY_9                                      '9'        XK_9
  59.101 +BX_KEY_9+BX_KEY_SHIFT_L                       ')'        XK_parenright
  59.102 +BX_KEY_9+BX_KEY_ALT_R                         ']'        XK_bracketright
  59.103 +BX_KEY_0                                      '0'        XK_0
  59.104 +BX_KEY_0+BX_KEY_SHIFT_L                       '='        XK_equal
  59.105 +BX_KEY_0+BX_KEY_ALT_R                         '}'        XK_braceright
  59.106 +BX_KEY_0+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_degree
  59.107 +BX_KEY_MINUS                                  '+'        XK_plus
  59.108 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '?'        XK_question
  59.109 +BX_KEY_MINUS+BX_KEY_ALT_L                     backslash  XK_backslash
  59.110 +BX_KEY_MINUS+BX_KEY_SHIFT_L+BX_KEY_ALT_R      ''        XK_questiondown
  59.111 +BX_KEY_EQUALS                                 none       XK_dead_acute
  59.112 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  none       XK_dead_grave
  59.113 +BX_KEY_EQUALS+BX_KEY_ALT_L                    ''        XK_plusminus
  59.114 +BX_KEY_EQUALS+BX_KEY_ALT_L+BX_KEY_ALT_R       ''        XK_notsign
  59.115 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  59.116 +
  59.117 +#  Row 2
  59.118 +BX_KEY_TAB                                    tab        XK_Tab
  59.119 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  59.120 +BX_KEY_Q                                      'q'        XK_q
  59.121 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
  59.122 +BX_KEY_W                                      'w'        XK_w
  59.123 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  59.124 +BX_KEY_E                                      'e'        XK_e
  59.125 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
  59.126 +BX_KEY_E+BX_KEY_SHIFT_L+BX_KEY_ALT_R          none       XK_EuroSign
  59.127 +BX_KEY_R                                      'r'        XK_r
  59.128 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
  59.129 +BX_KEY_R+BX_KEY_ALT_R                         ''        XK_registered
  59.130 +BX_KEY_T                                      't'        XK_t
  59.131 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  59.132 +BX_KEY_T+BX_KEY_ALT_R                         ''        XK_thorn
  59.133 +BX_KEY_T+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_THORN
  59.134 +BX_KEY_Y                                      'y'        XK_y
  59.135 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  59.136 +BX_KEY_U                                      'u'        XK_u
  59.137 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  59.138 +BX_KEY_I                                      'i'        XK_i
  59.139 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
  59.140 +BX_KEY_O                                      'o'        XK_o
  59.141 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
  59.142 +BX_KEY_P                                      'p'        XK_p
  59.143 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
  59.144 +BX_KEY_LEFT_BRACKET                           ''        XK_aring
  59.145 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            ''        XK_Aring
  59.146 +BX_KEY_RIGHT_BRACKET                          none       XK_dead_diaeresis
  59.147 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           none       XK_dead_circumflex
  59.148 +BX_KEY_RIGHT_BRACKET+BX_KEY_ALT_R             none       XK_dead_tilde
  59.149 +BX_KEY_ENTER                                  return     XK_Return
  59.150 +
  59.151 +#  Row 3
  59.152 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  59.153 +BX_KEY_A                                      'a'        XK_a
  59.154 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
  59.155 +BX_KEY_A+BX_KEY_ALT_R                         ''        XK_ordfeminine
  59.156 +BX_KEY_A+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_masculine
  59.157 +BX_KEY_S                                      's'        XK_s
  59.158 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
  59.159 +BX_KEY_S+BX_KEY_ALT_R                         ''        XK_ssharp
  59.160 +BX_KEY_D                                      'd'        XK_d
  59.161 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
  59.162 +BX_KEY_D+BX_KEY_ALT_R                         ''        XK_eth
  59.163 +BX_KEY_D+BX_KEY_SHIFT_L+BX_KEY_ALT_R          ''        XK_ETH
  59.164 +BX_KEY_F                                      'f'        XK_f
  59.165 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
  59.166 +BX_KEY_G                                      'g'        XK_g
  59.167 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
  59.168 +BX_KEY_H                                      'h'        XK_h
  59.169 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
  59.170 +BX_KEY_J                                      'j'        XK_j
  59.171 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
  59.172 +BX_KEY_K                                      'k'        XK_k
  59.173 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
  59.174 +BX_KEY_L                                      'l'        XK_l
  59.175 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
  59.176 +BX_KEY_SEMICOLON                              ''        XK_odiaeresis
  59.177 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ''        XK_Odiaeresis
  59.178 +BX_KEY_SEMICOLON+BX_KEY_ALT_R                 ''        XK_oslash
  59.179 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L+BX_KEY_ALT_R  ''        XK_Ooblique
  59.180 +BX_KEY_SINGLE_QUOTE                           ''        XK_adiaeresis
  59.181 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            ''        XK_Adiaeresis
  59.182 +BX_KEY_SINGLE_QUOTE+BX_KEY_ALT_R              ''        XK_ae
  59.183 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L+BX_KEY_ALT_R ''      XK_AE
  59.184 +BX_KEY_BACKSLASH                              apostrophe XK_apostrophe
  59.185 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '*'        XK_asterisk
  59.186 +BX_KEY_BACKSLASH+BX_KEY_ALT_R                 ''        XK_acute
  59.187 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L+BX_KEY_ALT_R  ''        XK_multiply
  59.188 +
  59.189 +#  Row 4
  59.190 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  59.191 +BX_KEY_LEFT_BACKSLASH                         '<'        XK_less
  59.192 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '>'        XK_greater
  59.193 +BX_KEY_LEFT_BACKSLASH+BX_KEY_ALT_R            '|'        XK_bar
  59.194 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L+BX_KEY_ALT_R ''    XK_brokenbar
  59.195 +BX_KEY_Z                                      'z'        XK_z
  59.196 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  59.197 +BX_KEY_Z+BX_KEY_ALT_R                         ''        XK_guillemotleft
  59.198 +BX_KEY_X                                      'x'        XK_x
  59.199 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  59.200 +BX_KEY_X+BX_KEY_ALT_R                         ''        XK_guillemotright
  59.201 +BX_KEY_C                                      'c'        XK_c
  59.202 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
  59.203 +BX_KEY_C+BX_KEY_ALT_R                         ''        XK_copyright
  59.204 +BX_KEY_V                                      'v'        XK_v
  59.205 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  59.206 +BX_KEY_V+BX_KEY_SHIFT_L+BX_KEY_ALT_R          '`'        XK_grave
  59.207 +BX_KEY_B                                      'b'        XK_b
  59.208 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
  59.209 +BX_KEY_N                                      'n'        XK_n
  59.210 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
  59.211 +BX_KEY_M                                      'm'        XK_m
  59.212 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
  59.213 +BX_KEY_M+BX_KEY_ALT_R                         ''        XK_mu
  59.214 +BX_KEY_COMMA                                  ','        XK_comma
  59.215 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   ';'        XK_semicolon
  59.216 +BX_KEY_PERIOD                                 '.'        XK_period
  59.217 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  ':'        XK_colon
  59.218 +BX_KEY_PERIOD+BX_KEY_ALT_R                    ''        XK_periodcentered
  59.219 +BX_KEY_SLASH                                  '-'        XK_minus
  59.220 +BX_KEY_SLASH+BX_KEY_SHIFT                     '_'        XK_underscore
  59.221 +BX_KEY_SLASH+BX_KEY_ALT_R                     ''        XK_hyphen
  59.222 +BX_KEY_SLASH+BX_KEY_SHIFT+BX_KEY_ALT_R        ''        XK_macron
  59.223 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  59.224 +
  59.225 +#  Row 5
  59.226 +BX_KEY_CTRL_L                                 none       XK_Control_L
  59.227 +BX_KEY_WIN_L                                  none       XK_Super_L
  59.228 +BX_KEY_ALT_L                                  none       XK_Alt_L
  59.229 +BX_KEY_ALT_L                                  none       XK_Meta_L
  59.230 +BX_KEY_SPACE                                  space      XK_space
  59.231 +BX_KEY_SPACE+BX_KEY_ALT_R                     none       XK_nobreakspace
  59.232 +BX_KEY_ALT_R                                  none       XK_Alt_R
  59.233 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  59.234 +BX_KEY_ALT_R                                  none       XK_Multi_key
  59.235 +BX_KEY_WIN_R                                  none       XK_Super_R
  59.236 +BX_KEY_MENU                                   none       XK_Menu
  59.237 +BX_KEY_CTRL_R                                 none       XK_Control_R
  59.238 +
  59.239 +# Ins/Del/Home/End/PgUp/PgDn
  59.240 +BX_KEY_INSERT                                 none       XK_Insert
  59.241 +BX_KEY_DELETE                                 none       XK_Delete
  59.242 +BX_KEY_HOME                                   none       XK_Home
  59.243 +BX_KEY_END                                    none       XK_End
  59.244 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  59.245 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  59.246 +
  59.247 +# Arrow keys
  59.248 +BX_KEY_LEFT                                   none       XK_Left
  59.249 +BX_KEY_RIGHT                                  none       XK_Right
  59.250 +BX_KEY_UP                                     none       XK_Up
  59.251 +BX_KEY_DOWN                                   none       XK_Down
  59.252 +
  59.253 +# Numerical keypad
  59.254 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  59.255 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  59.256 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  59.257 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  59.258 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  59.259 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  59.260 +BX_KEY_KP_HOME                                none       XK_KP_7
  59.261 +BX_KEY_KP_HOME                                none       XK_KP_Home
  59.262 +BX_KEY_KP_UP                                  none       XK_KP_8
  59.263 +BX_KEY_KP_UP                                  none       XK_KP_Up
  59.264 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  59.265 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  59.266 +BX_KEY_KP_LEFT                                none       XK_KP_4
  59.267 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  59.268 +BX_KEY_KP_5                                   none       XK_KP_5
  59.269 +BX_KEY_KP_5                                   none       XK_KP_Begin
  59.270 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  59.271 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  59.272 +BX_KEY_KP_END                                 none       XK_KP_1
  59.273 +BX_KEY_KP_END                                 none       XK_KP_End
  59.274 +BX_KEY_KP_DOWN                                none       XK_KP_2
  59.275 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  59.276 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  59.277 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  59.278 +BX_KEY_KP_INSERT                              none       XK_KP_0
  59.279 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  59.280 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  59.281 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-uk.map	Mon Jan 17 16:03:22 2005 +0000
    60.3 @@ -0,0 +1,209 @@
    60.4 +# Bochs Keymap file
    60.5 +# $Id: x11-pc-uk.map,v 1.1 2002/12/11 21:35:50 bdenney Exp $
    60.6 +# Target: PC(x86) keyboard, UK keymap
    60.7 +# Author: Denis Lenihan
    60.8 +#
    60.9 +# The keymap file describes the layout of a keyboard, and how it translates
   60.10 +# into Bochs key codes.
   60.11 +#
   60.12 +# Format:
   60.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   60.14 +#
   60.15 +# Or, for keys that require modifiers:
   60.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   60.17 +#
   60.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   60.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   60.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   60.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   60.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   60.23 +# modifier).
   60.24 +#
   60.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   60.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   60.27 +# This format is designed to look like a char constant in C, but it's a very
   60.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   60.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   60.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   60.31 +# ugly.
   60.32 +#
   60.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   60.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   60.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   60.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   60.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   60.38 +# to edit the keymap file.
   60.39 +#
   60.40 +
   60.41 +BX_KEY_0                                      '0'        XK_0
   60.42 +BX_KEY_0+BX_KEY_SHIFT_L                       ')'        XK_parenright
   60.43 +BX_KEY_1                                      '1'        XK_1
   60.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   60.45 +BX_KEY_2                                      '2'        XK_2
   60.46 +BX_KEY_2+BX_KEY_SHIFT_L                       '"'        XK_quotedbl
   60.47 +BX_KEY_3                                      '3'        XK_3
   60.48 +BX_KEY_3+BX_KEY_SHIFT_L                       ''        XK_sterling
   60.49 +BX_KEY_3+BX_KEY_ALT_R   	              '|'        XK_EuroSign
   60.50 +BX_KEY_4                                      '4'        XK_4
   60.51 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   60.52 +BX_KEY_5                                      '5'        XK_5
   60.53 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   60.54 +BX_KEY_6                                      '6'        XK_6
   60.55 +BX_KEY_6+BX_KEY_SHIFT_L                       '^'        XK_asciicircum
   60.56 +BX_KEY_7                                      '7'        XK_7
   60.57 +BX_KEY_7+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   60.58 +BX_KEY_8                                      '8'        XK_8
   60.59 +BX_KEY_8+BX_KEY_SHIFT_L                       '*'        XK_asterisk
   60.60 +BX_KEY_9                                      '9'        XK_9
   60.61 +BX_KEY_9+BX_KEY_SHIFT_L                       '('        XK_parenleft
   60.62 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   60.63 +BX_KEY_A                                      'a'        XK_a
   60.64 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   60.65 +BX_KEY_B                                      'b'        XK_b
   60.66 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   60.67 +BX_KEY_C                                      'c'        XK_c
   60.68 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   60.69 +BX_KEY_D                                      'd'        XK_d
   60.70 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   60.71 +BX_KEY_E                                      'e'        XK_e
   60.72 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   60.73 +BX_KEY_F                                      'f'        XK_f
   60.74 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   60.75 +BX_KEY_G                                      'g'        XK_g
   60.76 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   60.77 +BX_KEY_H                                      'h'        XK_h
   60.78 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   60.79 +BX_KEY_I                                      'i'        XK_i
   60.80 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   60.81 +BX_KEY_J                                      'j'        XK_j
   60.82 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   60.83 +BX_KEY_K                                      'k'        XK_k
   60.84 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   60.85 +BX_KEY_L                                      'l'        XK_l
   60.86 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
   60.87 +BX_KEY_M                                      'm'        XK_m
   60.88 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   60.89 +BX_KEY_N                                      'n'        XK_n
   60.90 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   60.91 +BX_KEY_O                                      'o'        XK_o
   60.92 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   60.93 +BX_KEY_P                                      'p'        XK_p
   60.94 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
   60.95 +BX_KEY_Q                                      'q'        XK_q
   60.96 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
   60.97 +BX_KEY_R                                      'r'        XK_r
   60.98 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
   60.99 +BX_KEY_S                                      's'        XK_s
  60.100 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  60.101 +BX_KEY_T                                      't'        XK_t
  60.102 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  60.103 +BX_KEY_U                                      'u'        XK_u
  60.104 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  60.105 +BX_KEY_V                                      'v'        XK_v
  60.106 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  60.107 +BX_KEY_W                                      'w'        XK_w
  60.108 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  60.109 +BX_KEY_X                                      'x'        XK_x
  60.110 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  60.111 +BX_KEY_Y                                      'y'        XK_y
  60.112 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  60.113 +BX_KEY_Z                                      'z'        XK_z
  60.114 +BX_KEY_F1                                     none       XK_F1
  60.115 +BX_KEY_F2                                     none       XK_F2
  60.116 +BX_KEY_F3                                     none       XK_F3
  60.117 +BX_KEY_F4                                     none       XK_F4
  60.118 +BX_KEY_F5                                     none       XK_F5
  60.119 +BX_KEY_F6                                     none       XK_F6
  60.120 +BX_KEY_F7                                     none       XK_F7
  60.121 +BX_KEY_F8                                     none       XK_F8
  60.122 +BX_KEY_F9                                     none       XK_F9
  60.123 +BX_KEY_F10                                    none       XK_F10
  60.124 +BX_KEY_F11                                    none       XK_F11
  60.125 +BX_KEY_F12                                    none       XK_F12
  60.126 +BX_KEY_ALT_L                                  none       XK_Alt_L
  60.127 +BX_KEY_ALT_L                                  none       XK_Meta_L
  60.128 +BX_KEY_ALT_R                                  none       XK_Alt_R
  60.129 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  60.130 +BX_KEY_ALT_R                                  none       XK_Multi_key
  60.131 +BX_KEY_LEFT_BACKSLASH                         '\'	 XK_backslash
  60.132 +BX_KEY_LEFT_BACKSLASH+BX_KEY_SHIFT_L          '|'        XK_bar
  60.133 +BX_KEY_BACKSLASH                	      '~'	 XK_asciitilde
  60.134 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L    	      '#'        XK_numbersign
  60.135 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  60.136 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  60.137 +BX_KEY_COMMA                                  ','        XK_comma
  60.138 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '<'        XK_less
  60.139 +BX_KEY_CTRL_L                                 none       XK_Control_L
  60.140 +BX_KEY_CTRL_R                                 none       XK_Control_R
  60.141 +BX_KEY_DELETE                                 none       XK_Delete
  60.142 +BX_KEY_DOWN                                   none       XK_Down
  60.143 +BX_KEY_END                                    none       XK_End
  60.144 +BX_KEY_ENTER                                  return     XK_Return
  60.145 +BX_KEY_EQUALS                                 '='        XK_equal
  60.146 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        XK_plus
  60.147 +BX_KEY_ESC                                    none       XK_Escape
  60.148 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   ''        XK_notsign
  60.149 +BX_KEY_GRAVE                                  '`'        XK_grave
  60.150 +BX_KEY_GRAVE+BX_KEY_ALT_R                     '|'        XK_bar
  60.151 +BX_KEY_HOME                                   none       XK_Home
  60.152 +BX_KEY_INSERT                                 none       XK_Insert
  60.153 +BX_KEY_KP_5                                   none       XK_KP_5
  60.154 +BX_KEY_KP_5                                   none       XK_KP_Begin
  60.155 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  60.156 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  60.157 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  60.158 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  60.159 +BX_KEY_KP_DOWN                                none       XK_KP_2
  60.160 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  60.161 +BX_KEY_KP_END                                 none       XK_KP_1
  60.162 +BX_KEY_KP_END                                 none       XK_KP_End
  60.163 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  60.164 +BX_KEY_KP_HOME                                none       XK_KP_7
  60.165 +BX_KEY_KP_HOME                                none       XK_KP_Home
  60.166 +BX_KEY_KP_INSERT                              none       XK_KP_0
  60.167 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  60.168 +BX_KEY_KP_LEFT                                none       XK_KP_4
  60.169 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  60.170 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  60.171 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  60.172 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  60.173 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  60.174 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  60.175 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  60.176 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  60.177 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  60.178 +BX_KEY_KP_UP                                  none       XK_KP_8
  60.179 +BX_KEY_KP_UP                                  none       XK_KP_Up
  60.180 +BX_KEY_LEFT                                   none       XK_Left
  60.181 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            '{'        XK_braceleft
  60.182 +BX_KEY_LEFT_BRACKET                           '['        XK_bracketleft
  60.183 +BX_KEY_MENU                                   none       XK_Menu
  60.184 +BX_KEY_MINUS                                  '-'        XK_minus
  60.185 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '_'        XK_underscore
  60.186 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  60.187 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  60.188 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  60.189 +BX_KEY_PAUSE                                  none       XK_Break
  60.190 +BX_KEY_PAUSE                                  none       XK_Pause
  60.191 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '>'        XK_greater
  60.192 +BX_KEY_PERIOD                                 '.'        XK_period
  60.193 +BX_KEY_PRINT                                  none       XK_Print
  60.194 +BX_KEY_PRINT                                  none       XK_Sys_Req
  60.195 +BX_KEY_RIGHT                                  none       XK_Right
  60.196 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '}'        XK_braceright
  60.197 +BX_KEY_RIGHT_BRACKET                          ']'        XK_bracketright
  60.198 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  60.199 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ':'        XK_colon
  60.200 +BX_KEY_SEMICOLON                              ';'        XK_semicolon
  60.201 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  60.202 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  60.203 +BX_KEY_SINGLE_QUOTE                           apostrophe XK_apostrophe
  60.204 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '@'        XK_at
  60.205 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '?'        XK_question
  60.206 +BX_KEY_SLASH                                  '/'        XK_slash
  60.207 +BX_KEY_SPACE                                  space      XK_space
  60.208 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  60.209 +BX_KEY_TAB                                    tab        XK_Tab
  60.210 +BX_KEY_UP                                     none       XK_Up
  60.211 +BX_KEY_WIN_L                                  none       XK_Super_L
  60.212 +BX_KEY_WIN_R                                  none       XK_Super_R
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/tools/ioemu/gui/keymaps/x11-pc-us.map	Mon Jan 17 16:03:22 2005 +0000
    61.3 @@ -0,0 +1,205 @@
    61.4 +# Bochs Keymap file
    61.5 +# $Id: x11-pc-us.map,v 1.3 2002/09/25 08:00:25 bdenney Exp $
    61.6 +# Target: PC(x86) keyboard, US keymap
    61.7 +# Author: Christophe Bothamy, Bryce Denney
    61.8 +#
    61.9 +# The keymap file describes the layout of a keyboard, and how it translates
   61.10 +# into Bochs key codes.
   61.11 +#
   61.12 +# Format:
   61.13 +#  BX_Keysym                ASCII_equivalent      Xwin_Keysym
   61.14 +#
   61.15 +# Or, for keys that require modifiers:
   61.16 +#  BX_Keysym+BX_Modifier    ASCII_equivalent    Xwin_Keysym
   61.17 +#
   61.18 +# BX_Keysym and BX_Modifier must be present in the bx_key_symbol[] list in
   61.19 +# gui/keymap.cc.  The BX_Modifier is usually a shift key press, but it
   61.20 +# could be any key.  Presently a maximum of one modifier is supported, but this
   61.21 +# could be changed in keymap.h (structure def has only one slot for modifier),
   61.22 +# keymap.cc (parsing code), and iodev/keyboard.cc (simulate keypresses for >1
   61.23 +# modifier).
   61.24 +#
   61.25 +# The ASCII_equivalent must be either apostrophe + one character + apostrophe,
   61.26 +# or one of these keywords: space, return, tab, backslash, apostrophe, none.
   61.27 +# This format is designed to look like a char constant in C, but it's a very
   61.28 +# simple parser.  There's no concept of backslash being an escape char.  The
   61.29 +# backslash and apostrophe entries are provided for aesthetic purposes only: no
   61.30 +# C++ programmer wants to see '\' or '''. The parser doesn't care, but they are
   61.31 +# ugly.
   61.32 +#
   61.33 +# Xwin_Keysym is the X windows equivalent of the key combination.  These
   61.34 +# codes should match whatever you find in /usr/X11R6/include/X11/keysymdef.h.
   61.35 +# If you're running X windows, Bochs will take each of these Xwin_Keysyms,
   61.36 +# pull off the XK_ in front, and use XStringToKeysym() to change them into
   61.37 +# numerical codes.  If this lookup fails, you will get a panic and you need
   61.38 +# to edit the keymap file.
   61.39 +#
   61.40 +
   61.41 +BX_KEY_0                                      '0'        XK_0
   61.42 +BX_KEY_0+BX_KEY_SHIFT_L                       ')'        XK_parenright
   61.43 +BX_KEY_1                                      '1'        XK_1
   61.44 +BX_KEY_1+BX_KEY_SHIFT_L                       '!'        XK_exclam
   61.45 +BX_KEY_2                                      '2'        XK_2
   61.46 +BX_KEY_2+BX_KEY_SHIFT_L                       '@'        XK_at
   61.47 +BX_KEY_3                                      '3'        XK_3
   61.48 +BX_KEY_3+BX_KEY_SHIFT_L                       '#'        XK_numbersign
   61.49 +BX_KEY_4                                      '4'        XK_4
   61.50 +BX_KEY_4+BX_KEY_SHIFT_L                       '$'        XK_dollar
   61.51 +BX_KEY_5                                      '5'        XK_5
   61.52 +BX_KEY_5+BX_KEY_SHIFT_L                       '%'        XK_percent
   61.53 +BX_KEY_6                                      '6'        XK_6
   61.54 +BX_KEY_6+BX_KEY_SHIFT_L                       '^'        XK_asciicircum
   61.55 +BX_KEY_7                                      '7'        XK_7
   61.56 +BX_KEY_7+BX_KEY_SHIFT_L                       '&'        XK_ampersand
   61.57 +BX_KEY_8                                      '8'        XK_8
   61.58 +BX_KEY_8+BX_KEY_SHIFT_L                       '*'        XK_asterisk
   61.59 +BX_KEY_9                                      '9'        XK_9
   61.60 +BX_KEY_9+BX_KEY_SHIFT_L                       '('        XK_parenleft
   61.61 +BX_KEY_A+BX_KEY_SHIFT_L                       'A'        XK_A
   61.62 +BX_KEY_A                                      'a'        XK_a
   61.63 +BX_KEY_B+BX_KEY_SHIFT_L                       'B'        XK_B
   61.64 +BX_KEY_B                                      'b'        XK_b
   61.65 +BX_KEY_C+BX_KEY_SHIFT_L                       'C'        XK_C
   61.66 +BX_KEY_C                                      'c'        XK_c
   61.67 +BX_KEY_D+BX_KEY_SHIFT_L                       'D'        XK_D
   61.68 +BX_KEY_D                                      'd'        XK_d
   61.69 +BX_KEY_E+BX_KEY_SHIFT_L                       'E'        XK_E
   61.70 +BX_KEY_E                                      'e'        XK_e
   61.71 +BX_KEY_F+BX_KEY_SHIFT_L                       'F'        XK_F
   61.72 +BX_KEY_F                                      'f'        XK_f
   61.73 +BX_KEY_G+BX_KEY_SHIFT_L                       'G'        XK_G
   61.74 +BX_KEY_G                                      'g'        XK_g
   61.75 +BX_KEY_H+BX_KEY_SHIFT_L                       'H'        XK_H
   61.76 +BX_KEY_H                                      'h'        XK_h
   61.77 +BX_KEY_I+BX_KEY_SHIFT_L                       'I'        XK_I
   61.78 +BX_KEY_I                                      'i'        XK_i
   61.79 +BX_KEY_J+BX_KEY_SHIFT_L                       'J'        XK_J
   61.80 +BX_KEY_J                                      'j'        XK_j
   61.81 +BX_KEY_K+BX_KEY_SHIFT_L                       'K'        XK_K
   61.82 +BX_KEY_K                                      'k'        XK_k
   61.83 +BX_KEY_L+BX_KEY_SHIFT_L                       'L'        XK_L
   61.84 +BX_KEY_L                                      'l'        XK_l
   61.85 +BX_KEY_M+BX_KEY_SHIFT_L                       'M'        XK_M
   61.86 +BX_KEY_M                                      'm'        XK_m
   61.87 +BX_KEY_N+BX_KEY_SHIFT_L                       'N'        XK_N
   61.88 +BX_KEY_N                                      'n'        XK_n
   61.89 +BX_KEY_O+BX_KEY_SHIFT_L                       'O'        XK_O
   61.90 +BX_KEY_O                                      'o'        XK_o
   61.91 +BX_KEY_P+BX_KEY_SHIFT_L                       'P'        XK_P
   61.92 +BX_KEY_P                                      'p'        XK_p
   61.93 +BX_KEY_Q+BX_KEY_SHIFT_L                       'Q'        XK_Q
   61.94 +BX_KEY_Q                                      'q'        XK_q
   61.95 +BX_KEY_R+BX_KEY_SHIFT_L                       'R'        XK_R
   61.96 +BX_KEY_R                                      'r'        XK_r
   61.97 +BX_KEY_S+BX_KEY_SHIFT_L                       'S'        XK_S
   61.98 +BX_KEY_S                                      's'        XK_s
   61.99 +BX_KEY_T+BX_KEY_SHIFT_L                       'T'        XK_T
  61.100 +BX_KEY_T                                      't'        XK_t
  61.101 +BX_KEY_U+BX_KEY_SHIFT_L                       'U'        XK_U
  61.102 +BX_KEY_U                                      'u'        XK_u
  61.103 +BX_KEY_V+BX_KEY_SHIFT_L                       'V'        XK_V
  61.104 +BX_KEY_V                                      'v'        XK_v
  61.105 +BX_KEY_W+BX_KEY_SHIFT_L                       'W'        XK_W
  61.106 +BX_KEY_W                                      'w'        XK_w
  61.107 +BX_KEY_X+BX_KEY_SHIFT_L                       'X'        XK_X
  61.108 +BX_KEY_X                                      'x'        XK_x
  61.109 +BX_KEY_Y+BX_KEY_SHIFT_L                       'Y'        XK_Y
  61.110 +BX_KEY_Y                                      'y'        XK_y
  61.111 +BX_KEY_Z+BX_KEY_SHIFT_L                       'Z'        XK_Z
  61.112 +BX_KEY_Z                                      'z'        XK_z
  61.113 +BX_KEY_F1                                     none       XK_F1
  61.114 +BX_KEY_F2                                     none       XK_F2
  61.115 +BX_KEY_F3                                     none       XK_F3
  61.116 +BX_KEY_F4                                     none       XK_F4
  61.117 +BX_KEY_F5                                     none       XK_F5
  61.118 +BX_KEY_F6                                     none       XK_F6
  61.119 +BX_KEY_F7                                     none       XK_F7
  61.120 +BX_KEY_F8                                     none       XK_F8
  61.121 +BX_KEY_F9                                     none       XK_F9
  61.122 +BX_KEY_F10                                    none       XK_F10
  61.123 +BX_KEY_F11                                    none       XK_F11
  61.124 +BX_KEY_F12                                    none       XK_F12
  61.125 +BX_KEY_ALT_L                                  none       XK_Alt_L
  61.126 +BX_KEY_ALT_L                                  none       XK_Meta_L
  61.127 +BX_KEY_ALT_R                                  none       XK_Alt_R
  61.128 +BX_KEY_ALT_R                                  none       XK_Mode_switch
  61.129 +BX_KEY_ALT_R                                  none       XK_Multi_key
  61.130 +BX_KEY_BACKSLASH                              backslash  XK_backslash
  61.131 +BX_KEY_BACKSLASH+BX_KEY_SHIFT_L               '|'        XK_bar
  61.132 +BX_KEY_BACKSPACE                              none       XK_BackSpace
  61.133 +BX_KEY_CAPS_LOCK                              none       XK_Caps_Lock
  61.134 +BX_KEY_COMMA                                  ','        XK_comma
  61.135 +BX_KEY_COMMA+BX_KEY_SHIFT_L                   '<'        XK_less
  61.136 +BX_KEY_CTRL_L                                 none       XK_Control_L
  61.137 +BX_KEY_CTRL_R                                 none       XK_Control_R
  61.138 +BX_KEY_DELETE                                 none       XK_Delete
  61.139 +BX_KEY_DOWN                                   none       XK_Down
  61.140 +BX_KEY_END                                    none       XK_End
  61.141 +BX_KEY_ENTER                                  return     XK_Return
  61.142 +BX_KEY_EQUALS                                 '='        XK_equal
  61.143 +BX_KEY_EQUALS+BX_KEY_SHIFT_L                  '+'        XK_plus
  61.144 +BX_KEY_ESC                                    none       XK_Escape
  61.145 +BX_KEY_GRAVE+BX_KEY_SHIFT_L                   '~'        XK_asciitilde
  61.146 +BX_KEY_GRAVE                                  '`'        XK_grave
  61.147 +BX_KEY_HOME                                   none       XK_Home
  61.148 +BX_KEY_INSERT                                 none       XK_Insert
  61.149 +BX_KEY_KP_5                                   none       XK_KP_5
  61.150 +BX_KEY_KP_5                                   none       XK_KP_Begin
  61.151 +BX_KEY_KP_ADD                                 none       XK_KP_Add
  61.152 +BX_KEY_KP_DELETE                              none       XK_KP_Decimal
  61.153 +BX_KEY_KP_DELETE                              none       XK_KP_Delete
  61.154 +BX_KEY_KP_DIVIDE                              none       XK_KP_Divide
  61.155 +BX_KEY_KP_DOWN                                none       XK_KP_2
  61.156 +BX_KEY_KP_DOWN                                none       XK_KP_Down
  61.157 +BX_KEY_KP_END                                 none       XK_KP_1
  61.158 +BX_KEY_KP_END                                 none       XK_KP_End
  61.159 +BX_KEY_KP_ENTER                               none       XK_KP_Enter
  61.160 +BX_KEY_KP_HOME                                none       XK_KP_7
  61.161 +BX_KEY_KP_HOME                                none       XK_KP_Home
  61.162 +BX_KEY_KP_INSERT                              none       XK_KP_0
  61.163 +BX_KEY_KP_INSERT                              none       XK_KP_Insert
  61.164 +BX_KEY_KP_LEFT                                none       XK_KP_4
  61.165 +BX_KEY_KP_LEFT                                none       XK_KP_Left
  61.166 +BX_KEY_KP_MULTIPLY                            none       XK_KP_Multiply
  61.167 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_3
  61.168 +BX_KEY_KP_PAGE_DOWN                           none       XK_KP_Page_Down
  61.169 +BX_KEY_KP_PAGE_UP                             none       XK_KP_9
  61.170 +BX_KEY_KP_PAGE_UP                             none       XK_KP_Page_Up
  61.171 +BX_KEY_KP_RIGHT                               none       XK_KP_6
  61.172 +BX_KEY_KP_RIGHT                               none       XK_KP_Right
  61.173 +BX_KEY_KP_SUBTRACT                            none       XK_KP_Subtract
  61.174 +BX_KEY_KP_UP                                  none       XK_KP_8
  61.175 +BX_KEY_KP_UP                                  none       XK_KP_Up
  61.176 +BX_KEY_LEFT                                   none       XK_Left
  61.177 +BX_KEY_LEFT_BRACKET+BX_KEY_SHIFT_L            '{'        XK_braceleft
  61.178 +BX_KEY_LEFT_BRACKET                           '['        XK_bracketleft
  61.179 +BX_KEY_MENU                                   none       XK_Menu
  61.180 +BX_KEY_MINUS                                  '-'        XK_minus
  61.181 +BX_KEY_MINUS+BX_KEY_SHIFT_L                   '_'        XK_underscore
  61.182 +BX_KEY_NUM_LOCK                               none       XK_Num_Lock
  61.183 +BX_KEY_PAGE_DOWN                              none       XK_Page_Down
  61.184 +BX_KEY_PAGE_UP                                none       XK_Page_Up
  61.185 +BX_KEY_PAUSE                                  none       XK_Break
  61.186 +BX_KEY_PAUSE                                  none       XK_Pause
  61.187 +BX_KEY_PERIOD+BX_KEY_SHIFT_L                  '>'        XK_greater
  61.188 +BX_KEY_PERIOD                                 '.'        XK_period
  61.189 +BX_KEY_PRINT                                  none       XK_Print
  61.190 +BX_KEY_PRINT                                  none       XK_Sys_Req
  61.191 +BX_KEY_RIGHT                                  none       XK_Right
  61.192 +BX_KEY_RIGHT_BRACKET+BX_KEY_SHIFT_L           '}'        XK_braceright
  61.193 +BX_KEY_RIGHT_BRACKET                          ']'        XK_bracketright
  61.194 +BX_KEY_SCRL_LOCK                              none       XK_Scroll_Lock
  61.195 +BX_KEY_SEMICOLON+BX_KEY_SHIFT_L               ':'        XK_colon
  61.196 +BX_KEY_SEMICOLON                              ';'        XK_semicolon
  61.197 +BX_KEY_SHIFT_L                                none       XK_Shift_L
  61.198 +BX_KEY_SHIFT_R                                none       XK_Shift_R
  61.199 +BX_KEY_SINGLE_QUOTE                           apostrophe XK_apostrophe
  61.200 +BX_KEY_SINGLE_QUOTE+BX_KEY_SHIFT_L            '"'        XK_quotedbl
  61.201 +BX_KEY_SLASH+BX_KEY_SHIFT_L                   '?'        XK_question
  61.202 +BX_KEY_SLASH                                  '/'        XK_slash
  61.203 +BX_KEY_SPACE                                  space      XK_space
  61.204 +BX_KEY_TAB                                    none       XK_ISO_Left_Tab
  61.205 +BX_KEY_TAB                                    tab        XK_Tab
  61.206 +BX_KEY_UP                                     none       XK_Up
  61.207 +BX_KEY_WIN_L                                  none       XK_Super_L
  61.208 +BX_KEY_WIN_R                                  none       XK_Super_R
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/tools/ioemu/gui/nogui.cc	Mon Jan 17 16:03:22 2005 +0000
    62.3 @@ -0,0 +1,336 @@
    62.4 +/////////////////////////////////////////////////////////////////////////
    62.5 +// $Id: nogui.cc,v 1.21 2003/06/28 08:04:31 vruppert Exp $
    62.6 +/////////////////////////////////////////////////////////////////////////
    62.7 +//
    62.8 +//  Copyright (C) 2001  MandrakeSoft S.A.
    62.9 +//
   62.10 +//    MandrakeSoft S.A.
   62.11 +//    43, rue d'Aboukir
   62.12 +//    75002 Paris - France
   62.13 +//    http://www.linux-mandrake.com/
   62.14 +//    http://www.mandrakesoft.com/
   62.15 +//
   62.16 +//  This library is free software; you can redistribute it and/or
   62.17 +//  modify it under the terms of the GNU Lesser General Public
   62.18 +//  License as published by the Free Software Foundation; either
   62.19 +//  version 2 of the License, or (at your option) any later version.
   62.20 +//
   62.21 +//  This library is distributed in the hope that it will be useful,
   62.22 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   62.23 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   62.24 +//  Lesser General Public License for more details.
   62.25 +//
   62.26 +//  You should have received a copy of the GNU Lesser General Public
   62.27 +//  License along with this library; if not, write to the Free Software
   62.28 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   62.29 +
   62.30 +
   62.31 +
   62.32 +// Define BX_PLUGGABLE in files that can be compiled into plugins.  For
   62.33 +// platforms that require a special tag on exported symbols, BX_PLUGGABLE 
   62.34 +// is used to know when we are exporting symbols and when we are importing.
   62.35 +#define BX_PLUGGABLE
   62.36 +
   62.37 +#include "bochs.h"
   62.38 +#include "icon_bochs.h"
   62.39 +
   62.40 +class bx_nogui_gui_c : public bx_gui_c {
   62.41 +public:
   62.42 +  bx_nogui_gui_c (void) {}
   62.43 +  DECLARE_GUI_VIRTUAL_METHODS()
   62.44 +};
   62.45 +
   62.46 +// declare one instance of the gui object and call macro to insert the
   62.47 +// plugin code
   62.48 +static bx_nogui_gui_c *theGui = NULL;
   62.49 +IMPLEMENT_GUI_PLUGIN_CODE(nogui)
   62.50 +
   62.51 +#define LOG_THIS theGui->
   62.52 +
   62.53 +// This file defines stubs for the GUI interface, which is a
   62.54 +// place to start if you want to port bochs to a platform, for
   62.55 +// which there is no support for your native GUI, or if you want to compile
   62.56 +// bochs without any native GUI support (no output window or
   62.57 +// keyboard input will be possible).
   62.58 +// Look in 'x.cc', 'beos.cc', and 'win32.cc' for specific
   62.59 +// implementations of this interface.  -Kevin
   62.60 +
   62.61 +
   62.62 +
   62.63 +// ::SPECIFIC_INIT()
   62.64 +//
   62.65 +// Called from gui.cc, once upon program startup, to allow for the
   62.66 +// specific GUI code (X11, BeOS, ...) to be initialized.
   62.67 +//
   62.68 +// argc, argv: not used right now, but the intention is to pass native GUI
   62.69 +//     specific options from the command line.  (X11 options, BeOS options,...)
   62.70 +//
   62.71 +// tilewidth, tileheight: for optimization, graphics_tile_update() passes
   62.72 +//     only updated regions of the screen to the gui code to be redrawn.
   62.73 +//     These define the dimensions of a region (tile).
   62.74 +// headerbar_y:  A headerbar (toolbar) is display on the top of the
   62.75 +//     VGA window, showing floppy status, and other information.  It
   62.76 +//     always assumes the width of the current VGA mode width, but
   62.77 +//     it's height is defined by this parameter.
   62.78 +
   62.79 +  void
   62.80 +bx_nogui_gui_c::specific_init(int argc, char **argv, unsigned tilewidth, unsigned tileheight,
   62.81 +                     unsigned headerbar_y)
   62.82 +{
   62.83 +  put("NGUI");
   62.84 +  UNUSED(argc);
   62.85 +  UNUSED(argv);
   62.86 +  UNUSED(tilewidth);
   62.87 +  UNUSED(tileheight);
   62.88 +  UNUSED(headerbar_y);
   62.89 +
   62.90 +  UNUSED(bochs_icon_bits);  // global variable
   62.91 +
   62.92 +  if (bx_options.Oprivate_colormap->get ()) {
   62.93 +    BX_INFO(("private_colormap option ignored."));
   62.94 +    }
   62.95 +}
   62.96 +
   62.97 +
   62.98 +// ::HANDLE_EVENTS()
   62.99 +//
  62.100 +// Called periodically (vga_update_interval in .bochsrc) so the
  62.101 +// the gui code can poll for keyboard, mouse, and other
  62.102 +// relevant events.
  62.103 +
  62.104 +  void
  62.105 +bx_nogui_gui_c::handle_events(void)
  62.106 +{
  62.107 +}
  62.108 +
  62.109 +
  62.110 +// ::FLUSH()
  62.111 +//
  62.112 +// Called periodically, requesting that the gui code flush all pending
  62.113 +// screen update requests.
  62.114 +
  62.115 +  void
  62.116 +bx_nogui_gui_c::flush(void)
  62.117 +{
  62.118 +}
  62.119 +
  62.120 +
  62.121 +// ::CLEAR_SCREEN()
  62.122 +//
  62.123 +// Called to request that the VGA region is cleared.  Don't
  62.124 +// clear the area that defines the headerbar.
  62.125 +
  62.126 +  void
  62.127 +bx_nogui_gui_c::clear_screen(void)
  62.128 +{
  62.129 +}
  62.130 +
  62.131 +
  62.132 +
  62.133 +// ::TEXT_UPDATE()
  62.134 +//
  62.135 +// Called in a VGA text mode, to update the screen with
  62.136 +// new content.
  62.137 +//
  62.138 +// old_text: array of character/attributes making up the contents
  62.139 +//           of the screen from the last call.  See below
  62.140 +// new_text: array of character/attributes making up the current
  62.141 +//           contents, which should now be displayed.  See below
  62.142 +//
  62.143 +// format of old_text & new_text: each is 4000 bytes long.
  62.144 +//     This represents 80 characters wide by 25 high, with
  62.145 +//     each character being 2 bytes.  The first by is the
  62.146 +//     character value, the second is the attribute byte.
  62.147 +//     I currently don't handle the attribute byte.
  62.148 +//
  62.149 +// cursor_x: new x location of cursor
  62.150 +// cursor_y: new y location of cursor
  62.151 +
  62.152 +  void
  62.153 +bx_nogui_gui_c::text_update(Bit8u *old_text, Bit8u *new_text,
  62.154 +                      unsigned long cursor_x, unsigned long cursor_y,
  62.155 +                      bx_vga_tminfo_t tm_info, unsigned nrows)
  62.156 +{
  62.157 +  UNUSED(old_text);
  62.158 +  UNUSED(new_text);
  62.159 +  UNUSED(cursor_x);
  62.160 +  UNUSED(cursor_y);
  62.161 +  UNUSED(tm_info);
  62.162 +  UNUSED(nrows);
  62.163 +}
  62.164 +
  62.165 +  int
  62.166 +bx_nogui_gui_c::get_clipboard_text(Bit8u **bytes, Bit32s *nbytes)
  62.167 +{
  62.168 +  UNUSED(bytes);
  62.169 +  UNUSED(nbytes);
  62.170 +  return 0;
  62.171 +}
  62.172 +
  62.173 +  int
  62.174 +bx_nogui_gui_c::set_clipboard_text(char *text_snapshot, Bit32u len)
  62.175 +{
  62.176 +  UNUSED(text_snapshot);
  62.177 +  UNUSED(len);
  62.178 +  return 0;
  62.179 +}
  62.180 +
  62.181 +
  62.182 +// ::PALETTE_CHANGE()
  62.183 +//
  62.184 +// Allocate a color in the native GUI, for this color, and put
  62.185 +// it in the colormap location 'index'.
  62.186 +// returns: 0=no screen update needed (color map change has direct effect)
  62.187 +//          1=screen updated needed (redraw using current colormap)
  62.188 +
  62.189 +  bx_bool
  62.190 +bx_nogui_gui_c::palette_change(unsigned index, unsigned red, unsigned green, unsigned blue)
  62.191 +{
  62.192 +  UNUSED(index);
  62.193 +  UNUSED(red);
  62.194 +  UNUSED(green);
  62.195 +  UNUSED(blue);
  62.196 +  return(0);
  62.197 +}
  62.198 +
  62.199 +
  62.200 +// ::GRAPHICS_TILE_UPDATE()
  62.201 +//
  62.202 +// Called to request that a tile of graphics be drawn to the
  62.203 +// screen, since info in this region has changed.
  62.204 +//
  62.205 +// tile: array of 8bit values representing a block of pixels with
  62.206 +//       dimension equal to the 'tilewidth' & 'tileheight' parameters to
  62.207 +//       ::specific_init().  Each value specifies an index into the
  62.208 +//       array of colors you allocated for ::palette_change()
  62.209 +// x0: x origin of tile
  62.210 +// y0: y origin of tile
  62.211 +//
  62.212 +// note: origin of tile and of window based on (0,0) being in the upper
  62.213 +//       left of the window.
  62.214 +
  62.215 +  void
  62.216 +bx_nogui_gui_c::graphics_tile_update(Bit8u *tile, unsigned x0, unsigned y0)
  62.217 +{
  62.218 +  UNUSED(tile);
  62.219 +  UNUSED(x0);
  62.220 +  UNUSED(y0);
  62.221 +}
  62.222 +
  62.223 +
  62.224 +
  62.225 +// ::DIMENSION_UPDATE()
  62.226 +//
  62.227 +// Called when the VGA mode changes it's X,Y dimensions.
  62.228 +// Resize the window to this size, but you need to add on
  62.229 +// the height of the headerbar to the Y value.
  62.230 +//
  62.231 +// x: new VGA x size
  62.232 +// y: new VGA y size (add headerbar_y parameter from ::specific_init().
  62.233 +// fheight: new VGA character height in text mode
  62.234 +// fwidth : new VGA character width in text mode
  62.235 +// bpp : bits per pixel in graphics mode
  62.236 +
  62.237 +  void
  62.238 +bx_nogui_gui_c::dimension_update(unsigned x, unsigned y, unsigned fheight, unsigned fwidth, unsigned bpp)
  62.239 +{
  62.240 +  UNUSED(x);
  62.241 +  UNUSED(y);
  62.242 +  UNUSED(fheight);
  62.243 +  UNUSED(fwidth);
  62.244 +  UNUSED(bpp);
  62.245 +}
  62.246 +
  62.247 +
  62.248 +// ::CREATE_BITMAP()
  62.249 +//
  62.250 +// Create a monochrome bitmap of size 'xdim' by 'ydim', which will
  62.251 +// be drawn in the headerbar.  Return an integer ID to the bitmap,
  62.252 +// with which the bitmap can be referenced later.
  62.253 +//
  62.254 +// bmap: packed 8 pixels-per-byte bitmap.  The pixel order is:
  62.255 +//       bit0 is the left most pixel, bit7 is the right most pixel.
  62.256 +// xdim: x dimension of bitmap
  62.257 +// ydim: y dimension of bitmap
  62.258 +
  62.259 +  unsigned
  62.260 +bx_nogui_gui_c::create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim)
  62.261 +{
  62.262 +  UNUSED(bmap);
  62.263 +  UNUSED(xdim);
  62.264 +  UNUSED(ydim);
  62.265 +  return(0);
  62.266 +}
  62.267 +
  62.268 +
  62.269 +// ::HEADERBAR_BITMAP()
  62.270 +//
  62.271 +// Called to install a bitmap in the bochs headerbar (toolbar).
  62.272 +//
  62.273 +// bmap_id: will correspond to an ID returned from
  62.274 +//     ::create_bitmap().  'alignment' is either BX_GRAVITY_LEFT
  62.275 +//     or BX_GRAVITY_RIGHT, meaning install the bitmap in the next
  62.276 +//     available leftmost or rightmost space.
  62.277 +// alignment: is either BX_GRAVITY_LEFT or BX_GRAVITY_RIGHT,
  62.278 +//     meaning install the bitmap in the next
  62.279 +//     available leftmost or rightmost space.
  62.280 +// f: a 'C' function pointer to callback when the mouse is clicked in
  62.281 +//     the boundaries of this bitmap.
  62.282 +
  62.283 +  unsigned
  62.284 +bx_nogui_gui_c::headerbar_bitmap(unsigned bmap_id, unsigned alignment, void (*f)(void))
  62.285 +{
  62.286 +  UNUSED(bmap_id);
  62.287 +  UNUSED(alignment);
  62.288 +  UNUSED(f);
  62.289 +  return(0);
  62.290 +}
  62.291 +
  62.292 +
  62.293 +// ::SHOW_HEADERBAR()
  62.294 +//
  62.295 +// Show (redraw) the current headerbar, which is composed of
  62.296 +// currently installed bitmaps.
  62.297 +
  62.298 +  void
  62.299 +bx_nogui_gui_c::show_headerbar(void)
  62.300 +{
  62.301 +}
  62.302 +
  62.303 +
  62.304 +// ::REPLACE_BITMAP()
  62.305 +//
  62.306 +// Replace the bitmap installed in the headerbar ID slot 'hbar_id',
  62.307 +// with the one specified by 'bmap_id'.  'bmap_id' will have
  62.308 +// been generated by ::create_bitmap().  The old and new bitmap
  62.309 +// must be of the same size.  This allows the bitmap the user
  62.310 +// sees to change, when some action occurs.  For example when
  62.311 +// the user presses on the floppy icon, it then displays
  62.312 +// the ejected status.
  62.313 +//
  62.314 +// hbar_id: headerbar slot ID
  62.315 +// bmap_id: bitmap ID
  62.316 +
  62.317 +  void
  62.318 +bx_nogui_gui_c::replace_bitmap(unsigned hbar_id, unsigned bmap_id)
  62.319 +{
  62.320 +  UNUSED(hbar_id);
  62.321 +  UNUSED(bmap_id);
  62.322 +}
  62.323 +
  62.324 +
  62.325 +// ::EXIT()
  62.326 +//
  62.327 +// Called before bochs terminates, to allow for a graceful
  62.328 +// exit from the native GUI mechanism.
  62.329 +
  62.330 +  void
  62.331 +bx_nogui_gui_c::exit(void)
  62.332 +{
  62.333 +  BX_INFO(("bx_nogui_gui_c::exit() not implemented yet."));
  62.334 +}
  62.335 +
  62.336 +  void
  62.337 +bx_nogui_gui_c::mouse_enabled_changed_specific (bx_bool val)
  62.338 +{
  62.339 +}
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/tools/ioemu/gui/rfb.cc	Mon Jan 17 16:03:22 2005 +0000
    63.3 @@ -0,0 +1,1508 @@
    63.4 +/////////////////////////////////////////////////////////////////////////
    63.5 +// $Id: rfb.cc,v 1.26.2.1 2004/02/02 22:35:30 cbothamy Exp $
    63.6 +/////////////////////////////////////////////////////////////////////////
    63.7 +//
    63.8 +//  Copyright (C) 2000  Psyon.Org!
    63.9 +//
   63.10 +//    Donald Becker
   63.11 +//    http://www.psyon.org
   63.12 +//
   63.13 +//  This library is free software; you can redistribute it and/or
   63.14 +//  modify it under the terms of the GNU Lesser General Public
   63.15 +//  License as published by the Free Software Foundation; either
   63.16 +//  version 2 of the License, or (at your option) any later version.
   63.17 +//
   63.18 +//  This library is distributed in the hope that it will be useful,
   63.19 +//  but WITHOUT ANY WARRANTY; without even the implied warranty of
   63.20 +//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   63.21 +//  Lesser General Public License for more details.
   63.22 +//
   63.23 +//  You should have received a copy of the GNU Lesser General Public
   63.24 +//  License along with this library; if not, write to the Free Software
   63.25 +//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
   63.26 +
   63.27 +// Define BX_PLUGGABLE in files that can be compiled into plugins.  For
   63.28 +// platforms that require a special tag on exported symbols, BX_PLUGGABLE 
   63.29 +// is used to know when we are exporting symbols and when we are importing.
   63.30 +#define BX_PLUGGABLE
   63.31 +
   63.32 +#include "bochs.h"
   63.33 +#if BX_WITH_RFB
   63.34 +
   63.35 +#include "icon_bochs.h"
   63.36 +#include "font/vga.bitmap.h"
   63.37 +
   63.38 +class bx_rfb_gui_c : public bx_gui_c {
   63.39 +public:
   63.40 +  bx_rfb_gui_c (void) {}
   63.41 +  DECLARE_GUI_VIRTUAL_METHODS()
   63.42 +};
   63.43 +
   63.44 +// declare one instance of the gui object and call macro to insert the
   63.45 +// plugin code
   63.46 +static bx_rfb_gui_c *theGui = NULL;
   63.47 +IMPLEMENT_GUI_PLUGIN_CODE(rfb)
   63.48 +
   63.49 +#define LOG_THIS theGui->
   63.50 +
   63.51 +#ifdef WIN32
   63.52 +
   63.53 +#include <winsock.h>
   63.54 +#include <process.h>
   63.55 +#include "rfb.h"
   63.56 +
   63.57 +#else
   63.58 +
   63.59 +#include <sys/socket.h>
   63.60 +#include <netinet/tcp.h>
   63.61 +#include <netinet/in.h>
   63.62 +#include <unistd.h>
   63.63 +#include <sys/errno.h>
   63.64 +#include <pthread.h>
   63.65 +typedef unsigned long CARD32;
   63.66 +typedef unsigned short CARD16;
   63.67 +typedef short INT16;
   63.68 +typedef unsigned char  CARD8;
   63.69 +typedef int SOCKET;
   63.70 +
   63.71 +#endif
   63.72 +
   63.73 +#include "rfbproto.h"
   63.74 +
   63.75 +static bool keep_alive;
   63.76 +static bool client_connected;
   63.77 +
   63.78 +#define BX_RFB_PORT_MIN 5900
   63.79 +#define BX_RFB_PORT_MAX 5949
   63.80 +static unsigned short rfbPort;
   63.81 +
   63.82 +// Headerbar stuff
   63.83 +unsigned rfbBitmapCount = 0;
   63.84 +struct {
   63.85 +	char     *bmap;
   63.86 +	unsigned xdim;
   63.87 +	unsigned ydim;
   63.88 +} rfbBitmaps[BX_MAX_PIXMAPS];
   63.89 +
   63.90 +unsigned rfbHeaderbarBitmapCount = 0;
   63.91 +struct {
   63.92 +	unsigned int index;
   63.93 +	unsigned int xorigin;
   63.94 +	unsigned int yorigin;
   63.95 +	unsigned int alignment;
   63.96 +	void (*f)(void);
   63.97 +} rfbHeaderbarBitmaps[BX_MAX_HEADERBAR_ENTRIES];
   63.98 +
   63.99 +//Keyboard stuff
  63.100 +#define KEYBOARD true
  63.101 +#define MOUSE    false
  63.102 +#define MAX_KEY_EVENTS 512
  63.103 +struct {
  63.104 +	bool type;
  63.105 +	int  key;
  63.106 +	int  down;
  63.107 +	int  x;
  63.108 +	int  y;
  63.109 +} rfbKeyboardEvent[MAX_KEY_EVENTS];
  63.110 +static unsigned long rfbKeyboardEvents = 0;
  63.111 +static bool          bKeyboardInUse = false;
  63.112 +
  63.113 +// Misc Stuff
  63.114 +struct {
  63.115 +	unsigned int x;
  63.116 +	unsigned int y;
  63.117 +	unsigned int width;
  63.118 +	unsigned int height;
  63.119 +	bool updated;
  63.120 +} rfbUpdateRegion;
  63.121 +
  63.122 +static char  *rfbScreen;
  63.123 +static char  rfbPallet[256];
  63.124 +
  63.125 +static long  rfbDimensionX, rfbDimensionY;
  63.126 +static long  rfbStretchedX, rfbStretchedY;
  63.127 +static long  rfbHeaderbarY;
  63.128 +static long  rfbTileX = 0;
  63.129 +static long  rfbTileY = 0;
  63.130 +static unsigned long  rfbCursorX = 0;
  63.131 +static unsigned long  rfbCursorY = 0;
  63.132 +static unsigned long  rfbOriginLeft  = 0;
  63.133 +static unsigned long  rfbOriginRight = 0;
  63.134 +
  63.135 +static unsigned int text_rows=25, text_cols=80;
  63.136 +static unsigned int font_height=16, font_width=8;
  63.137 +
  63.138 +//static unsigned long ServerThread   = 0;
  63.139 +//static unsigned long ServerThreadID = 0;
  63.140 +
  63.141 +static SOCKET sGlobal;
  63.142 +
  63.143 +void ServerThreadInit(void *indata);
  63.144 +void HandleRfbClient(SOCKET sClient);
  63.145 +int  ReadExact(int sock, char *buf, int len);
  63.146 +int  WriteExact(int sock, char *buf, int len);
  63.147 +void DrawBitmap(int x, int y, int width, int height, char *bmap, char color, bool update_client);
  63.148 +void DrawChar(int x, int y, int width, int height, int fonty, char *bmap, char color);
  63.149 +void UpdateScreen(unsigned char *newBits, int x, int y, int width, int height, bool update_client);
  63.150 +void SendUpdate(int x, int y, int width, int height);
  63.151 +void StartThread();
  63.152 +void rfbKeyPressed(Bit32u key, int press_release);
  63.153 +void rfbMouseMove(int x, int y, int bmask);
  63.154 +void DrawColorPallet();
  63.155 +
  63.156 +static const rfbPixelFormat BGR233Format = {
  63.157 +    8, 8, 1, 1, 7, 7, 3, 0, 3, 6
  63.158 +};
  63.159 +
  63.160 +// Set this for the endian of your machine. 0 = big, 1 = little 
  63.161 +static const int rfbEndianTest = 1;
  63.162 +
  63.163 +#define Swap16(s) ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff))
  63.164 +#define Swap32(l) (((l) >> 24) | (((l) & 0x00ff0000) >> 8)  | (((l) & 0x0000ff00) << 8)  | ((l) << 24))
  63.165 +#define Swap16IfLE(s) (*(const char *)&rfbEndianTest ? Swap16(s) : (s))
  63.166 +#define Swap32IfLE(l) (*(const char *)&rfbEndianTest ? Swap32(l) : (l))
  63.167 +#define PF_EQ(x,y) ((x.bitsPerPixel == y.bitsPerPixel) && (x.depth == y.depth) && (x.trueColour == y.trueColour) &&	((x.bigEndian == y.bigEndian) || (x.bitsPerPixel == 8)) && (!x.trueColour || ((x.redMax == y.redMax) &&	(x.greenMax == y.greenMax) && (x.blueMax == y.blueMax) && (x.redShift == y.redShift) && (x.greenShift == y.greenShift) && (x.blueShift == y.blueShift))))
  63.168 +
  63.169 +// This file defines stubs for the GUI interface, which is a
  63.170 +// place to start if you want to port bochs to a platform, for
  63.171 +// which there is no support for your native GUI, or if you want to compile
  63.172 +// bochs without any native GUI support (no output window or
  63.173 +// keyboard input will be possible).
  63.174 +// Look in 'x.cc', 'beos.cc', and 'win32.cc' for specific
  63.175 +// implementations of this interface.  -Kevin
  63.176 +
  63.177 +
  63.178 +// ::SPECIFIC_INIT()
  63.179 +//
  63.180 +// Called from gui.cc, once upon program startup, to allow for the
  63.181 +// specific GUI code (X11, BeOS, ...) to be initialized.
  63.182 +//
  63.183 +// argc, argv: not used right now, but the intention is to pass native GUI
  63.184 +//     specific options from the command line.  (X11 options, BeOS options,...)
  63.185 +//
  63.186 +// tilewidth, tileheight: for optimization, graphics_tile_update() passes
  63.187 +//     only updated regions of the screen to the gui code to be redrawn.
  63.188 +//     These define the dimensions of a region (tile).
  63.189 +// headerbar_y:  A headerbar (toolbar) is display on the top of the
  63.190 +//     VGA window, showing floppy status, and other information.  It
  63.191 +//     always assumes the width of the current VGA mode width, but
  63.192 +//     it's height is defined by this parameter.
  63.193 +
  63.194 +void bx_rfb_gui_c::specific_init(int argc, char **argv, unsigned tilewidth, unsigned tileheight, unsigned headerbar_y)
  63.195 +{
  63.196 +  unsigned char fc, vc;
  63.197 +
  63.198 +  put("RFB");
  63.199 +  UNUSED(bochs_icon_bits);
  63.200 +
  63.201 +  // the ask menu doesn't work on the client side
  63.202 +  io->set_log_action(LOGLEV_PANIC, ACT_FATAL);
  63.203 +
  63.204 +  rfbHeaderbarY = headerbar_y;
  63.205 +  rfbDimensionX = 640;
  63.206 +  rfbDimensionY = 480 + rfbHeaderbarY;
  63.207 +  rfbStretchedX = rfbDimensionX;
  63.208 +  rfbStretchedY = rfbDimensionY;
  63.209 +  rfbTileX      = tilewidth;
  63.210 +  rfbTileY      = tileheight;
  63.211 +
  63.212 +  for(int i = 0; i < 256; i++) {
  63.213 +    for(int j = 0; j < 16; j++) {
  63.214 +      vc = bx_vgafont[i].data[j];
  63.215 +      fc = 0;
  63.216 +      for (int b = 0; b < 8; b++) {
  63.217 +        fc |= (vc & 0x01) << (7 - b);
  63.218 +        vc >>= 1;
  63.219 +      }
  63.220 +      vga_charmap[i*32+j] = fc;
  63.221 +    }
  63.222 +  }
  63.223 +
  63.224 +  rfbScreen = (char *)malloc(rfbDimensionX * rfbDimensionY); 
  63.225 +  memset(&rfbPallet, 0, sizeof(rfbPallet));
  63.226 +  rfbPallet[63] = (char)0xFF;
  63.227 +
  63.228 +  rfbUpdateRegion.x = rfbDimensionX;
  63.229 +  rfbUpdateRegion.y = rfbDimensionY;
  63.230 +  rfbUpdateRegion.width  = 0;
  63.231 +  rfbUpdateRegion.height = 0;
  63.232 +  rfbUpdateRegion.updated = false;
  63.233 +
  63.234 +  keep_alive = true;
  63.235 +  client_connected = false;
  63.236 +  StartThread();
  63.237 +
  63.238 +#ifdef WIN32
  63.239 +  Sleep(1000);
  63.240 +  SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
  63.241 +#endif
  63.242 +  if (bx_options.Oprivate_colormap->get ()) {
  63.243 +    BX_ERROR(( "private_colormap option ignored." ));
  63.244 +  }
  63.245 +  int counter = 30;
  63.246 +  while ((!client_connected) && (counter--)) {
  63.247 +#ifdef WIN32
  63.248 +    Sleep(1000);
  63.249 +#else
  63.250 +    sleep(1);
  63.251 +#endif
  63.252 +  }
  63.253 +  if (counter < 0) BX_PANIC(("timeout! no client present"));
  63.254 +}
  63.255 +
  63.256 +bool InitWinsock()
  63.257 +{
  63.258 +#ifdef WIN32
  63.259 +	WSADATA wsaData;
  63.260 +	if(WSAStartup(MAKEWORD(1,1), &wsaData) != 0) return false;
  63.261 +#endif
  63.262 +	return true;
  63.263 +}
  63.264 +
  63.265 +bool StopWinsock()
  63.266 +{
  63.267 +#ifdef WIN32
  63.268 +	WSACleanup();
  63.269 +#endif
  63.270 +	return true;
  63.271 +}
  63.272 +
  63.273 +void ServerThreadInit(void *indata) 
  63.274 +{
  63.275 +	SOCKET             sServer;
  63.276 +	SOCKET             sClient;
  63.277 +	struct sockaddr_in sai;
  63.278 +	unsigned int       sai_size;
  63.279 +	int port_ok = 0;
  63.280 +
  63.281 +#ifdef WIN32
  63.282 +	SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_IDLE);
  63.283 +#endif
  63.284 +	if(!InitWinsock()) {
  63.285 +		BX_PANIC(( "could not initialize winsock."));
  63.286 +		goto end_of_thread;
  63.287 +	}
  63.288 +
  63.289 +	sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  63.290 +	if(sServer == -1) { 
  63.291 +		BX_PANIC(( "could not create socket." ));
  63.292 +		goto end_of_thread;
  63.293 +	}
  63.294 +	for (rfbPort = BX_RFB_PORT_MIN; rfbPort <= BX_RFB_PORT_MAX; rfbPort++) {
  63.295 +	  sai.sin_addr.s_addr = INADDR_ANY;
  63.296 +	  sai.sin_family      = AF_INET;
  63.297 +	  sai.sin_port        = htons(rfbPort);
  63.298 +	  BX_INFO (("Trying port %d", rfbPort));
  63.299 +	  if(bind(sServer, (struct sockaddr *)&sai, sizeof(sai)) == -1) {
  63.300 +		  BX_INFO(( "Could not bind socket."));
  63.301 +		  continue;
  63.302 +	  }
  63.303 +	  if(listen(sServer, SOMAXCONN) == -1) {
  63.304 +		  BX_INFO(( "Could not listen on socket."));
  63.305 +		  continue;
  63.306 +	  }
  63.307 +	  // success
  63.308 +	  port_ok = 1;
  63.309 +	  break;
  63.310 +	}
  63.311 +	if (!port_ok) {
  63.312 +	  BX_PANIC (("RFB could not bind any port between %d and %d\n", 
  63.313 +		BX_RFB_PORT_MIN,
  63.314 +		BX_RFB_PORT_MAX));
  63.315 +	  goto end_of_thread;
  63.316 +	}
  63.317 +	BX_INFO (("listening for connections on port %i", rfbPort));
  63.318 +	fprintf (stderr, "RFB: listening for connections on port %i\n", rfbPort);
  63.319 +	sai_size = sizeof(sai);
  63.320 +	while(keep_alive) {
  63.321 +		sClient = accept(sServer, (struct sockaddr *)&sai, (socklen_t*)&sai_size);
  63.322 +		if(sClient != -1) {
  63.323 +			HandleRfbClient(sClient);
  63.324 +			sGlobal = -1;
  63.325 +			close(sClient);
  63.326 +		} else {
  63.327 +			close(sClient);
  63.328 +		}
  63.329 +	}
  63.330 +
  63.331 +end_of_thread:
  63.332 +	StopWinsock();
  63.333 +}
  63.334 +
  63.335 +void HandleRfbClient(SOCKET sClient) 
  63.336 +{
  63.337 +	char rfbName[] = "Bochs-RFB";
  63.338 +	rfbProtocolVersionMsg pv;
  63.339 +	int one = 1;
  63.340 +	CARD32 auth;
  63.341 +	rfbClientInitMsg cim;
  63.342 +	rfbServerInitMsg sim;
  63.343 +
  63.344 +	client_connected = true;
  63.345 +	setsockopt(sClient, IPPROTO_TCP, TCP_NODELAY, (const char *)&one, sizeof(one));
  63.346 +	fprintf(stderr, "# RFB: accepted client connection.\n");
  63.347 +	sprintf(pv, rfbProtocolVersionFormat, rfbProtocolMajorVersion, rfbProtocolMinorVersion);
  63.348 +
  63.349 +	if(WriteExact(sClient, pv, sz_rfbProtocolVersionMsg) < 0) {
  63.350 +		fprintf(stderr, "# ERROR: RFB: could not send protocol version.\n");
  63.351 +		return;
  63.352 +	}
  63.353 +	if(ReadExact(sClient, pv, sz_rfbProtocolVersionMsg) < 0) {
  63.354 +		fprintf(stderr, "# ERROR: RFB: could not recieve client protocol version.\n");
  63.355 +		return;
  63.356 +	}
  63.357 +
  63.358 +	auth = Swap32IfLE(rfbNoAuth);
  63.359 +	if(WriteExact(sClient, (char *)&auth, sizeof(auth)) < 0) {
  63.360 +		fprintf(stderr, "# ERROR: RFB: could not send authorization method.\n");
  63.361 +		return;
  63.362 +	}
  63.363 +
  63.364 +	if(ReadExact(sClient, (char *)&cim, sz_rfbClientInitMsg) < 0) {
  63.365 +		fprintf(stderr, "# ERROR: RFB: could not recieve client initialization message.\n");
  63.366 +		return;
  63.367 +	}
  63.368 +
  63.369 +	sim.framebufferWidth  = Swap16IfLE((short)rfbDimensionX);
  63.370 +	sim.framebufferHeight = Swap16IfLE((short)rfbDimensionY);
  63.371 +	sim.format            = BGR233Format;
  63.372 +	sim.format.redMax     = Swap16IfLE(sim.format.redMax);
  63.373 +	sim.format.greenMax   = Swap16IfLE(sim.format.greenMax);
  63.374 +	sim.format.blueMax    = Swap16IfLE(sim.format.blueMax);
  63.375 +	sim.nameLength = strlen(rfbName);
  63.376 +	sim.nameLength = Swap32IfLE(sim.nameLength);
  63.377 +	if(WriteExact(sClient, (char *)&sim, sz_rfbServerInitMsg) < 0) {
  63.378 +		fprintf(stderr, "# ERROR: RFB: could send server initialization message.\n");
  63.379 +		return;
  63.380 +	}
  63.381 +	if(WriteExact(sClient, rfbName, strlen(rfbName)) < 0) {
  63.382 +		fprintf(stderr, "# ERROR: RFB: could not send server name.\n");
  63.383 +		return;
  63.384 +	}
  63.385 +
  63.386 +	sGlobal = sClient;
  63.387 +	while(keep_alive) {
  63.388 +		CARD8 msgType;
  63.389 +		int n;
  63.390 +
  63.391 +		if((n = recv(sClient, (char *)&msgType, 1, MSG_PEEK)) <= 0) {
  63.392 +			if(n == 0) {
  63.393 +				fprintf(stderr, "# RFB: client closed connection.\n");
  63.394 +			} else {
  63.395 +				fprintf(stderr, "# RFB: error recieving data.\n");
  63.396 +			}
  63.397 +			return;
  63.398 +		}
  63.399 +		
  63.400 +		switch(msgType) {
  63.401 +		case rfbSetPixelFormat:
  63.402 +			{
  63.403 +				rfbSetPixelFormatMsg spf;
  63.404 +				ReadExact(sClient, (char *)&spf, sizeof(rfbSetPixelFormatMsg));
  63.405 +
  63.406 +				spf.format.bitsPerPixel = spf.format.bitsPerPixel;
  63.407 +				spf.format.depth = spf.format.depth;
  63.408 +				spf.format.trueColour = (spf.format.trueColour ? 1 : 0);
  63.409 +				spf.format.bigEndian = (spf.format.bigEndian ? 1 : 0);
  63.410 +				spf.format.redMax = Swap16IfLE(spf.format.redMax);
  63.411 +				spf.format.greenMax = Swap16IfLE(spf.format.greenMax);
  63.412 +				spf.format.blueMax = Swap16IfLE(spf.format.blueMax);
  63.413 +				spf.format.redShift = spf.format.redShift;
  63.414 +				spf.format.greenShift = spf.format.greenShift;
  63.415 +				spf.format.blueShift = spf.format.blueShift;
  63.416 +				
  63.417 +				if (!PF_EQ(spf.format, BGR233Format)) {
  63.418 +					fprintf(stderr,"# ERROR: RFB: client has wrong pixel format\n");
  63.419 +					//return;
  63.420 +				}
  63.421 +				break;
  63.422 +			}
  63.423 +		case rfbFixColourMapEntries:
  63.424 +			{
  63.425 +				rfbFixColourMapEntriesMsg fcme;
  63.426 +				ReadExact(sClient, (char *)&fcme, sizeof(rfbFixColourMapEntriesMsg));
  63.427 +				break;
  63.428 +			}
  63.429 +		case rfbSetEncodings:
  63.430 +			{
  63.431 +				rfbSetEncodingsMsg se;
  63.432 +				int                i;
  63.433 +				CARD32             enc;
  63.434 +				ReadExact(sClient, (char *)&se, sizeof(rfbSetEncodingsMsg));
  63.435 +				se.nEncodings = Swap16IfLE(se.nEncodings);
  63.436 +				for(i = 0; i < se.nEncodings; i++) {
  63.437 +					if((n = ReadExact(sClient, (char *)&enc, sizeof(CARD32))) <= 0) {
  63.438 +						if(n == 0) {
  63.439 +							fprintf(stderr, "# RFB: client closed connection.\n");
  63.440 +						} else {
  63.441 +							fprintf(stderr, "# RFB: error recieving data.\n");
  63.442 +						}
  63.443 +						return;
  63.444 +					}
  63.445 +				}
  63.446 +				break;
  63.447 +			}
  63.448 +		case rfbFramebufferUpdateRequest:
  63.449 +			{
  63.450 +				rfbFramebufferUpdateRequestMsg fur;
  63.451 +
  63.452 +				ReadExact(sClient, (char *)&fur, sizeof(rfbFramebufferUpdateRequestMsg));
  63.453 +				if(!fur.incremental) {
  63.454 +					rfbUpdateRegion.x = 0;
  63.455 +					rfbUpdateRegion.y = 0;
  63.456 +					rfbUpdateRegion.width  = rfbDimensionX;
  63.457 +					rfbUpdateRegion.height = rfbDimensionY;
  63.458 +					rfbUpdateRegion.updated = true;
  63.459 +				} //else {
  63.460 +				//	if(fur.x < rfbUpdateRegion.x) rfbUpdateRegion.x = fur.x;
  63.461 +				//	if(fur.y < rfbUpdateRegion.x) rfbUpdateRegion.y = fur.y;
  63.462 +				//	if(((fur.x + fur.w) - rfbUpdateRegion.x) > rfbUpdateRegion.width) rfbUpdateRegion.width = ((fur.x + fur.w) - rfbUpdateRegion.x);
  63.463 +				//	if(((fur.y + fur.h) - rfbUpdateRegion.y) > rfbUpdateRegion.height) rfbUpdateRegion.height = ((fur.y + fur.h) - rfbUpdateRegion.y);
  63.464 +				//}
  63.465 +				//rfbUpdateRegion.updated = true;
  63.466 +				break;
  63.467 +			}
  63.468 +		case rfbKeyEvent:
  63.469 +			{
  63.470 +				rfbKeyEventMsg ke;
  63.471 +				ReadExact(sClient, (char *)&ke, sizeof(rfbKeyEventMsg));
  63.472 +				ke.key = Swap32IfLE(ke.key);
  63.473 +				while(bKeyboardInUse);
  63.474 +				bKeyboardInUse = true;
  63.475 +				if (rfbKeyboardEvents >= MAX_KEY_EVENTS) break;
  63.476 +				rfbKeyboardEvent[rfbKeyboardEvents].type = KEYBOARD;
  63.477 +				rfbKeyboardEvent[rfbKeyboardEvents].key  = ke.key;
  63.478 +				rfbKeyboardEvent[rfbKeyboardEvents].down = ke.down;
  63.479 +				rfbKeyboardEvents++;
  63.480 +				bKeyboardInUse = false;
  63.481 +				break;
  63.482 +			}
  63.483 +		case rfbPointerEvent:
  63.484 +			{	
  63.485 +				rfbPointerEventMsg pe;
  63.486 +				ReadExact(sClient, (char *)&pe, sizeof(rfbPointerEventMsg));
  63.487 +				while(bKeyboardInUse);
  63.488 +				bKeyboardInUse = true;
  63.489 +				if (rfbKeyboardEvents >= MAX_KEY_EVENTS) break;
  63.490 +				rfbKeyboardEvent[rfbKeyboardEvents].type = MOUSE;
  63.491 +				rfbKeyboardEvent[rfbKeyboardEvents].x    = Swap16IfLE(pe.x);
  63.492 +				rfbKeyboardEvent[rfbKeyboardEvents].y    = Swap16IfLE(pe.y);
  63.493 +				rfbKeyboardEvent[rfbKeyboardEvents].down = pe.buttonMask;
  63.494 +				rfbKeyboardEvents++;
  63.495 +				bKeyboardInUse = false;
  63.496 +				break;
  63.497 +			}
  63.498 +		case rfbClientCutText:
  63.499 +			{
  63.500 +				rfbClientCutTextMsg cct;
  63.501 +				ReadExact(sClient, (char *)&cct, sizeof(rfbClientCutTextMsg));
  63.502 +				break;
  63.503 +			}
  63.504 +		}
  63.505 +	}
  63.506 +}
  63.507 +// ::HANDLE_EVENTS()
  63.508 +//
  63.509 +// Called periodically (vga_update_interval in .bochsrc) so the
  63.510 +// the gui code can poll for keyboard, mouse, and other
  63.511 +// relevant events.
  63.512 +
  63.513 +void bx_rfb_gui_c::handle_events(void)
  63.514 +{
  63.515 +	unsigned int i = 0;
  63.516 +	while(bKeyboardInUse);
  63.517 +	bKeyboardInUse = true;
  63.518 +	if(rfbKeyboardEvents > 0) {
  63.519 +		for(i = 0; i < rfbKeyboardEvents; i++) {
  63.520 +			if(rfbKeyboardEvent[i].type == KEYBOARD) {
  63.521 +				rfbKeyPressed(rfbKeyboardEvent[i].key, rfbKeyboardEvent[i].down);
  63.522 +			} else { //type == MOUSE;
  63.523 +				rfbMouseMove(rfbKeyboardEvent[i].x, rfbKeyboardEvent[i].y, rfbKeyboardEvent[i].down);
  63.524 +			}
  63.525 +		}
  63.526 +		rfbKeyboardEvents = 0;
  63.527 +	}
  63.528 +	bKeyboardInUse = false;
  63.529 +
  63.530 +	if(rfbUpdateRegion.updated) {
  63.531 +		SendUpdate(rfbUpdateRegion.x, rfbUpdateRegion.y, rfbUpdateRegion.width, rfbUpdateRegion.height);
  63.532 +		rfbUpdateRegion.x = rfbDimensionX;
  63.533 +		rfbUpdateRegion.y = rfbDimensionY;
  63.534 +		rfbUpdateRegion.width  = 0;
  63.535 +		rfbUpdateRegion.height = 0;
  63.536 +	}
  63.537 +	rfbUpdateRegion.updated = false;
  63.538 +}
  63.539 +
  63.540 +
  63.541 +// ::FLUSH()
  63.542 +//
  63.543 +// Called periodically, requesting that the gui code flush all pending
  63.544 +// screen update requests.
  63.545 +
  63.546 +void bx_rfb_gui_c::flush(void)
  63.547 +{
  63.548 +}
  63.549 +
  63.550 +
  63.551 +// ::CLEAR_SCREEN()
  63.552 +//
  63.553 +// Called to request that the VGA region is cleared.  Don't
  63.554 +// clear the area that defines the headerbar.
  63.555 +void bx_rfb_gui_c::clear_screen(void)
  63.556 +{
  63.557 +	memset(&rfbScreen[rfbDimensionX * rfbHeaderbarY], 0, rfbDimensionX * (rfbDimensionY - rfbHeaderbarY));
  63.558 +}
  63.559 +
  63.560 +
  63.561 +
  63.562 +// ::TEXT_UPDATE()
  63.563 +//
  63.564 +// Called in a VGA text mode, to update the screen with
  63.565 +// new content.
  63.566 +//
  63.567 +// old_text: array of character/attributes making up the contents
  63.568 +//           of the screen from the last call.  See below
  63.569 +// new_text: array of character/attributes making up the current
  63.570 +//           contents, which should now be displayed.  See below
  63.571 +//
  63.572 +// format of old_text & new_text: each is 4000 bytes long.
  63.573 +//     This represents 80 characters wide by 25 high, with
  63.574 +//     each character being 2 bytes.  The first by is the
  63.575 +//     character value, the second is the attribute byte.
  63.576 +//     I currently don't handle the attribute byte.
  63.577 +//
  63.578 +// cursor_x: new x location of cursor
  63.579 +// cursor_y: new y location of cursor
  63.580 +
  63.581 +void bx_rfb_gui_c::text_update(Bit8u *old_text, Bit8u *new_text, unsigned long cursor_x, unsigned long cursor_y, bx_vga_tminfo_t tm_info, unsigned nrows)
  63.582 +{
  63.583 +  unsigned char *old_line, *new_line;
  63.584 +  unsigned char cAttr, cChar;
  63.585 +  unsigned int  curs, hchars, offset, rows, x, y, xc, yc;
  63.586 +  bx_bool force_update=0;
  63.587 +
  63.588 +  UNUSED(nrows);
  63.589 +
  63.590 +  if(charmap_updated) {
  63.591 +    force_update = 1;
  63.592 +    charmap_updated = 0;
  63.593 +  }
  63.594 +
  63.595 +  // first invalidate character at previous and new cursor location
  63.596 +  if ( (rfbCursorY < text_rows) && (rfbCursorX < text_cols) ) {
  63.597 +    curs = rfbCursorY * tm_info.line_offset + rfbCursorX * 2;
  63.598 +    old_text[curs] = ~new_text[curs];
  63.599 +  }
  63.600 +  if((tm_info.cs_start <= tm_info.cs_end) && (tm_info.cs_start < font_height) &&
  63.601 +     (cursor_y < text_rows) && (cursor_x < text_cols)) {
  63.602 +    curs = cursor_y * tm_info.line_offset + cursor_x * 2;
  63.603 +    old_text[curs] = ~new_text[curs];
  63.604 +  } else {
  63.605 +    curs = 0xffff;
  63.606 +  }
  63.607 +
  63.608 +  rows = text_rows;
  63.609 +  y = 0;
  63.610 +  do {
  63.611 +    hchars = text_cols;
  63.612 +    new_line = new_text;
  63.613 +    old_line = old_text;
  63.614 +    offset = y * tm_info.line_offset;
  63.615 +    yc = y * font_height + rfbHeaderbarY;
  63.616 +    x = 0;
  63.617 +    do {
  63.618 +      if (force_update || (old_text[0] != new_text[0])
  63.619 +          || (old_text[1] != new_text[1])) {
  63.620 +        cChar = new_text[0];
  63.621 +        cAttr = new_text[1];
  63.622 +        xc = x * 8;
  63.623 +        DrawChar(xc, yc, 8, font_height, 0, (char *)&vga_charmap[cChar<<5], cAttr);
  63.624 +        if(yc < rfbUpdateRegion.y) rfbUpdateRegion.y = yc;
  63.625 +        if((yc + font_height - rfbUpdateRegion.y) > rfbUpdateRegion.height) rfbUpdateRegion.height = (yc + font_height - rfbUpdateRegion.y);
  63.626 +        if(xc < rfbUpdateRegion.x) rfbUpdateRegion.x = xc;
  63.627 +        if((xc + 8 - rfbUpdateRegion.x) > rfbUpdateRegion.width) rfbUpdateRegion.width = (xc + 8 - rfbUpdateRegion.x);
  63.628 +        rfbUpdateRegion.updated = true;
  63.629 +	if (offset == curs) {
  63.630 +          cAttr = ((cAttr >> 4) & 0xF) + ((cAttr & 0xF) << 4);
  63.631 +          DrawChar(xc, yc + tm_info.cs_start, 8, tm_info.cs_end - tm_info.cs_start + 1,
  63.632 +                   tm_info.cs_start, (char *)&vga_charmap[cChar<<5], cAttr);
  63.633 +        }
  63.634 +      }
  63.635 +      x++;
  63.636 +      new_text+=2;
  63.637 +      old_text+=2;
  63.638 +      offset+=2;
  63.639 +    } while (--hchars);
  63.640 +    y++;
  63.641 +    new_text = new_line + tm_info.line_offset;
  63.642 +    old_text = old_line + tm_info.line_offset;
  63.643 +  } while (--rows);
  63.644 +
  63.645 +  rfbCursorX = cursor_x;
  63.646 +  rfbCursorY = cursor_y;
  63.647 +}
  63.648 +
  63.649 +  int
  63.650 +bx_rfb_gui_c::get_clipboard_text(Bit8u **bytes, Bit32s *nbytes)
  63.651 +{
  63.652 +  return 0;
  63.653 +}
  63.654 +
  63.655 +  int
  63.656 +bx_rfb_gui_c::set_clipboard_text(char *text_snapshot, Bit32u len)
  63.657 +{
  63.658 +  return 0;
  63.659 +}
  63.660 +
  63.661 +
  63.662 +// ::PALETTE_CHANGE()
  63.663 +//
  63.664 +// Allocate a color in the native GUI, for this color, and put
  63.665 +// it in the colormap location 'index'.
  63.666 +// returns: 0=no screen update needed (color map change has direct effect)
  63.667 +//          1=screen updated needed (redraw using current colormap)
  63.668 +
  63.669 +bx_bool bx_rfb_gui_c::palette_change(unsigned index, unsigned red, unsigned green, unsigned blue)
  63.670 +{
  63.671 +	rfbPallet[index] = (((red * 7 + 127) / 255) << 0) | (((green * 7 + 127) / 255) << 3) | (((blue * 3 + 127) / 255) << 6);
  63.672 +	return(1);
  63.673 +}
  63.674 +
  63.675 +
  63.676 +// ::GRAPHICS_TILE_UPDATE()
  63.677 +//
  63.678 +// Called to request that a tile of graphics be drawn to the
  63.679 +// screen, since info in this region has changed.
  63.680 +//
  63.681 +// tile: array of 8bit values representing a block of pixels with
  63.682 +//       dimension equal to the 'tilewidth' & 'tileheight' parameters to
  63.683 +//       ::specific_init().  Each value specifies an index into the
  63.684 +//       array of colors you allocated for ::palette_change()
  63.685 +// x0: x origin of tile
  63.686 +// y0: y origin of tile
  63.687 +//
  63.688 +// note: origin of tile and of window based on (0,0) being in the upper
  63.689 +//       left of the window.
  63.690 +void bx_rfb_gui_c::graphics_tile_update(Bit8u *tile, unsigned x0, unsigned y0)
  63.691 +{
  63.692 +	UpdateScreen(tile, x0, y0 + rfbHeaderbarY, rfbTileX, rfbTileY, false);
  63.693 +	if(x0 < rfbUpdateRegion.x) rfbUpdateRegion.x = x0;
  63.694 +	if((y0 + rfbHeaderbarY) < rfbUpdateRegion.y) rfbUpdateRegion.y = y0 + rfbHeaderbarY;
  63.695 +	if(((y0 + rfbHeaderbarY + rfbTileY) - rfbUpdateRegion.y) > rfbUpdateRegion.height) rfbUpdateRegion.height =  ((y0 + rfbHeaderbarY + rfbTileY) - rfbUpdateRegion.y);
  63.696 +	if(((x0 + rfbTileX) - rfbUpdateRegion.x) > rfbUpdateRegion.width) rfbUpdateRegion.width = ((x0 + rfbTileX) - rfbUpdateRegion.x);
  63.697 +	rfbUpdateRegion.updated = true;
  63.698 +}
  63.699 +
  63.700 +
  63.701 +
  63.702 +// ::DIMENSION_UPDATE()
  63.703 +//
  63.704 +// Called when the VGA mode changes it's X,Y dimensions.
  63.705 +// Resize the window to this size, but you need to add on
  63.706 +// the height of the headerbar to the Y value.
  63.707 +//
  63.708 +// x: new VGA x size
  63.709 +// y: new VGA y size (add headerbar_y parameter from ::specific_init().
  63.710 +// fheight: new VGA character height in text mode
  63.711 +// fwidth : new VGA character width in text mode
  63.712 +// bpp : bits per pixel in graphics mode
  63.713 +
  63.714 +  void
  63.715 +bx_rfb_gui_c::dimension_update(unsigned x, unsigned y, unsigned fheight, unsigned fwidth, unsigned bpp)
  63.716 +{
  63.717 +  if (bpp > 8) {
  63.718 +    BX_PANIC(("%d bpp graphics mode not supported yet", bpp));
  63.719 +  }
  63.720 +  if (fheight > 0) {
  63.721 +    font_height = fheight;
  63.722 +    font_width = fwidth;
  63.723 +    text_cols = x / fwidth;
  63.724 +    text_rows = y / fheight;
  63.725 +  } else {
  63.726 +    if ((x > 640) || (y > 480)) {
  63.727 +      BX_PANIC(("dimension_update(): RFB doesn't support graphics modes > 640x480 (%dx%d)", x, y));
  63.728 +    }
  63.729 +  }
  63.730 +}
  63.731 +
  63.732 +
  63.733 +// ::CREATE_BITMAP()
  63.734 +//
  63.735 +// Create a monochrome bitmap of size 'xdim' by 'ydim', which will
  63.736 +// be drawn in the headerbar.  Return an integer ID to the bitmap,
  63.737 +// with which the bitmap can be referenced later.
  63.738 +//
  63.739 +// bmap: packed 8 pixels-per-byte bitmap.  The pixel order is:
  63.740 +//       bit0 is the left most pixel, bit7 is the right most pixel.
  63.741 +// xdim: x dimension of bitmap
  63.742 +// ydim: y dimension of bitmap
  63.743 +
  63.744 +unsigned bx_rfb_gui_c::create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim)
  63.745 +{
  63.746 +	if(rfbBitmapCount >= BX_MAX_PIXMAPS) {
  63.747 +		fprintf(stderr, "# RFB: too many pixmaps.\n");
  63.748 +		return 0;
  63.749 +	}
  63.750 +	rfbBitmaps[rfbBitmapCount].bmap = (char *)malloc((xdim * ydim) / 8);
  63.751 +	rfbBitmaps[rfbBitmapCount].xdim = xdim;
  63.752 +	rfbBitmaps[rfbBitmapCount].ydim = ydim;
  63.753 +	memcpy(rfbBitmaps[rfbBitmapCount].bmap, bmap, (xdim * ydim) / 8);
  63.754 +	
  63.755 +	rfbBitmapCount++;
  63.756 +	return(rfbBitmapCount - 1);
  63.757 +}
  63.758 +
  63.759 +
  63.760 +// ::HEADERBAR_BITMAP()
  63.761 +//
  63.762 +// Called to install a bitmap in the bochs headerbar (toolbar).
  63.763 +//
  63.764 +// bmap_id: will correspond to an ID returned from
  63.765 +//     ::create_bitmap().  'alignment' is either BX_GRAVITY_LEFT
  63.766 +//     or BX_GRAVITY_RIGHT, meaning install the bitmap in the next
  63.767 +//     available leftmost or rightmost space.
  63.768 +// alignment: is either BX_GRAVITY_LEFT or BX_GRAVITY_RIGHT,
  63.769 +//     meaning install the bitmap in the next
  63.770 +//     available leftmost or rightmost space.
  63.771 +// f: a 'C' function pointer to callback when the mouse is clicked in
  63.772 +//     the boundaries of this bitmap.
  63.773 +
  63.774 +unsigned bx_rfb_gui_c::headerbar_bitmap(unsigned bmap_id, unsigned alignment, void (*f)(void))
  63.775 +{
  63.776 +	int hb_index;
  63.777 +
  63.778 +	if((rfbHeaderbarBitmapCount + 1) > BX_MAX_HEADERBAR_ENTRIES) {
  63.779 +		return 0;
  63.780 +	}
  63.781 +
  63.782 +	rfbHeaderbarBitmapCount++;
  63.783 +	hb_index = rfbHeaderbarBitmapCount - 1;
  63.784 +	rfbHeaderbarBitmaps[hb_index].index     = bmap_id;
  63.785 +	rfbHeaderbarBitmaps[hb_index].alignment = alignment;
  63.786 +	rfbHeaderbarBitmaps[hb_index].f = f;
  63.787 +	if (alignment == BX_GRAVITY_LEFT) {
  63.788 +		rfbHeaderbarBitmaps[hb_index].xorigin = rfbOriginLeft;
  63.789 +		rfbHeaderbarBitmaps[hb_index].yorigin = 0;
  63.790 +		rfbOriginLeft += rfbBitmaps[bmap_id].xdim;
  63.791 +	} else { // BX_GRAVITY_RIGHT
  63.792 +		rfbOriginRight += rfbBitmaps[bmap_id].xdim;
  63.793 +		rfbHeaderbarBitmaps[hb_index].xorigin = rfbOriginRight;
  63.794 +		rfbHeaderbarBitmaps[hb_index].yorigin = 0;
  63.795 +	}
  63.796 +	return hb_index;
  63.797 +}
  63.798 +
  63.799 +
  63.800 +// ::SHOW_HEADERBAR()
  63.801 +//
  63.802 +// Show (redraw) the current headerbar, which is composed of
  63.803 +// currently installed bitmaps.
  63.804 +
  63.805 +void bx_rfb_gui_c::show_headerbar(void)
  63.806 +{
  63.807 +  char *newBits;
  63.808 +  unsigned int i, xorigin;
  63.809 +
  63.810 +  newBits = (char *)malloc(rfbDimensionX * rfbHeaderbarY);
  63.811 +  memset(newBits, 0, (rfbDimensionX * rfbHeaderbarY));
  63.812 +  DrawBitmap(0, 0, rfbDimensionX, rfbHeaderbarY, newBits, (char)0xf0, false);
  63.813 +  for(i = 0; i < rfbHeaderbarBitmapCount; i++) {
  63.814 +    if(rfbHeaderbarBitmaps[i].alignment == BX_GRAVITY_LEFT) {
  63.815 +      xorigin = rfbHeaderbarBitmaps[i].xorigin;
  63.816 +    } else {
  63.817 +      xorigin = rfbDimensionX - rfbHeaderbarBitmaps[i].xorigin;
  63.818 +    }
  63.819 +    DrawBitmap(xorigin, 0, rfbBitmaps[rfbHeaderbarBitmaps[i].index].xdim, rfbBitmaps[rfbHeaderbarBitmaps[i].index].ydim, rfbBitmaps[rfbHeaderbarBitmaps[i].index].bmap, (char)0xf0, false);
  63.820 +  }
  63.821 +  free(newBits);
  63.822 +}
  63.823 +
  63.824 +
  63.825 +// ::REPLACE_BITMAP()
  63.826 +//
  63.827 +// Replace the bitmap installed in the headerbar ID slot 'hbar_id',
  63.828 +// with the one specified by 'bmap_id'.  'bmap_id' will have
  63.829 +// been generated by ::create_bitmap().  The old and new bitmap
  63.830 +// must be of the same size.  This allows the bitmap the user
  63.831 +// sees to change, when some action occurs.  For example when
  63.832 +// the user presses on the floppy icon, it then displays
  63.833 +// the ejected status.
  63.834 +//
  63.835 +// hbar_id: headerbar slot ID
  63.836 +// bmap_id: bitmap ID
  63.837 +
  63.838 +void bx_rfb_gui_c::replace_bitmap(unsigned hbar_id, unsigned bmap_id)
  63.839 +{
  63.840 +	rfbHeaderbarBitmaps[hbar_id].index = bmap_id;
  63.841 +}
  63.842 +
  63.843 +
  63.844 +// ::EXIT()
  63.845 +//
  63.846 +// Called before bochs terminates, to allow for a graceful
  63.847 +// exit from the native GUI mechanism.
  63.848 +void bx_rfb_gui_c::exit(void)
  63.849 +{
  63.850 +	unsigned int i;
  63.851 +	keep_alive = false;
  63.852 +	StopWinsock();
  63.853 +	free(rfbScreen);
  63.854 +	for(i = 0; i < rfbBitmapCount; i++) {
  63.855 +		free(rfbBitmaps[i].bmap);
  63.856 +	}
  63.857 +	fprintf(stderr, "# RFB: bx_rfb_gui_c::exit()\n");
  63.858 +}
  63.859 +
  63.860 +/*
  63.861 +* ReadExact reads an exact number of bytes on a TCP socket.  Returns 1 if
  63.862 +* those bytes have been read, 0 if the other end has closed, or -1 if an error
  63.863 +* occurred (errno is set to ETIMEDOUT if it timed out).
  63.864 +*/
  63.865 +
  63.866 +int ReadExact(int sock, char *buf, int len)
  63.867 +{
  63.868 +    int n;
  63.869 + 
  63.870 +    while (len > 0) {
  63.871 +	n = recv(sock, buf, len, 0);
  63.872 +	if (n > 0) {
  63.873 +	    buf += n;
  63.874 +	    len -= n;
  63.875 +        } else {
  63.876 +            return n;
  63.877 +	}
  63.878 +    }
  63.879 +    return 1;
  63.880 +}
  63.881</