x86 Emulation makes it to the H/PC - BOCHS 2.1.1
The Pocket PC (PPC) I will admit - through circumstance and not for any prevailing
feature of its own - does have one advantage. Developer focus.
Of particular note in this category are the exploits of a number of overly
excited Axim (Dell PPC) users who have been swapping images of the Windows 98
desktop in their QVGA and VGA displays since the middle of last year. Nothing
spectacular in that one would think. Anyone with a network connection and a
VNC client can achieve that in a relatively short space of time. Here though
this wasn't an experiment in remote connectivity, this was a far more highbrow
Windows 98 was actually running on the Axim in front of Windows Mobile.
Background on emulation
The art of running any operating system is one that requires a fundamental understanding of the makeup of the hardware it will run on. Just as with how a H/PC user will appreciate that a MIPS application cannot run on a StrongARM backed device, and a Windows CE application cannot run on your Windows or Linux desktop PC. An operating system designed for a specific CPU architecture; say the x86 architecture on your desktop PC, simply could not contemplate running under another processor type (for instance the XScale on your Handheld PC).
So, is this an elaborate trick designed to fool those users of less experience?
The process of running an operating system literally on top of another one
is not a new one. Using a method known as virtualisation back in the heady days
of large symmetric mainframe systems, it was common for resources to be better
optimised by taking the multiprocessor system and through virtualisation dedicating
different installations of the operating systems to run against one of the available
processors. Over the years as accessible computing has made vast inroads into
our every day lives, and inexorably the cogitative abilities of the humble home
or office PC have increased. The idea of spreading the disparate abilities of
the hardware behind this revolution has become more of a reality, and will become
something everyone will invisibly benefit from in the coming years.
The most wide spread use of Emulation in the consumer market comes from the games console and legacy platform sector. Remember those classic arcade games from your childhood? Or perhaps you have a portable games device and are tired of carrying around both your H/PC and console?
The chances are that an emulator already exists to allow you to run those games
directly onto your Handheld PC. Admittedly the usefulness of this is trivial
and you will find, depending on your targeted console that emulators operate
with varying degrees of success.
Enter the rather unfortunately named BOCHS. BOCHS is an open source development
project dating back to 1998. Its aim and purpose was to emulate the IA32 (and
later the EM64T and AMD64) processor architecture on a diverse number of other
platforms, including Mac OS and indeed the IBM PC itself.
In the spirit of open source, early last year, a melancholy Pocket PC developer decided to have a crack at porting it, and in 2004 a conceptual build of BOCHS for the StrongARM / XScale processor (or if you're revelling in the terminology the SA11xx / PXA25x architecture) complete with source code hit the web.
The release failed to make much of an impression, on any side of the Windows
CE community, with little to no commentary subsequently. With what little discussion
on the BOCHS port exists. There is one common fact that time and time again
prevails in all the discussion on the Pocket PC port, and is undoubtedly its
Achilles heel. You need a keyboard to even begin to make use of it; and keyboards
are something the H/PC community has in abundance.
Let the games begin
Armed with a Jornada 720, a half a gigabyte CF card and a clear file system
on both the H/PC and CF card. The 1.42MB BOCHS single file executive sits comfortably
in faster main RAM, a delight because there are performance benefits to be gained
from keeping it on the fastest medium possible. Considering all of highly advanced
abilities which BOCHS contains, 1.42MB is exceptionally lean, and something
which in all certainty is attributable to its open source roots.
With no online help available with the application - though the documentation on the BOCHS sourceforge website remains largely applicable - and little to no prompting on what additional options are valid for multi choice selections (aside from the default; usually [none]). Wading through the configuration menus to build you initial emulator profile is somewhat time consuming, but there are no shortcuts in this, you simply have to spend the time doing it and be prepared to undertake the research on any terminology you're not up to speed with.
Unlike most emulators, which are preconfigured and come with predefined layers of core system functionality, BOCHS, even with a fully configured configuration file is still an unusable blank canvas. Attempt to initialise the emulator and BOCHS will drop you back to the command prompt with advice completely at odds with that afforded to us by the author Douglas Adams.
[MEMO ] >>PANIC<<
Buried within that revelation, is BOCHS's way of telling you that you're missing
two vital pieces of software. Namely a computer BIOS and Video firmware.
The BOCHS BIOS provides virtual access to Floppy disk, Hard disk and CD/DVD-ROM drives for installation and storage purposes. This access is completely virtualised, and provides no path into the Windows CE file system, or mounting capabilities for using attached storage devices as additional drives. You are also unable to switch mounted volumes ad-hoc; meaning virtually ejecting a CD to insert another one is not an option. BOCHS attempts to make up for this by providing four emulated IDE channels and two floppy drives, each IDE channel supporting master and slave capabilities - allowing for a possible 8 hard drive / CD/DVD combinations. Only one of the 10 possible devices can be set as the boot device, and must be manually specified in the configuration file.
Additional reprieve comes in the form of the format understood by BOCHS for
floppy disk images. BOCHS reads standard .IMA images, the same found on bootdisk.com,
used against Microsoft Virtual PC 2004 and created by WinImage.
The hard drive images themselves are more complicated. They need to be written
as a binary image format that is understood by BOCHS, and contain the structure
needed to virtually emulate a hard drive.
If you have gotten your own BOCHS installation up to this point, then one thing certainly wont have escaped your attention. It's slow. In fact it's more than slow; it's painfully slow.
If you have ever used VNC with a Handheld PC, you will be pretty confident
in the idea that you know what underperformance is. Let me assure you that you
and nearly 17 hours later, I felt vindicated in not expecting too much from BOCHS as it slowly slid onto the Windows 95 desktop for the first time.
Both the Hard disk, floppy disk and CD ISO images were located on the 512MB CF card by this time, which admittedly is less than ideal, and certainly not friendly on the limited read/write operational life of a CF card. Worth noting here is that you can host the images on a network share if you wish to save your CF card the stress and strains involved in the emulation process.
There is something to be said for only having provided the emulator with 12MB
of addressable RAM, and for running screen capture sessions throughout the installation.
BOCHS's continued existence on the Windows Mobile platform is not simply dependent
on the optimisation of its base code, but on the restoration and modification
of features available to the desktop version.
The final issue requiring urgent attention is the one of mouse support. For an unfathomable reason, when porting the Win32 version over to WinCE, the original programmer left the mouse activation key stroke on F12, a key that doesn't exist on a H/PC - or on Pocket PC for that matter. The only way to activate the rather clumsy stylus to mouse mapping is to connect your device up to ActiveSync and using a remote display program use the F12 key on your PC's keyboard to activate the mouse - yet another performance hit.
If you have muddled through to this point with your own installation, you will undoubtedly have flushed the novelty clean through your system, and having done that myself, I am forced to conclude that while the era of this technology is dawning on the mainstream hardware market, it is still a long way off being an acceptable technology on the PDA.
Inexorably there will be a time in the not to distant future where the exponential
increases in processing power, and demand spurred on from the benefits found
in the desktop market will deliver this sort of technology onto the PDA.
Whether it was worth the time invested into coming to this conclusion. That
is down to you
Source Code for BOSCH 2.1.1 for Windows CE can be found at the following URL.
Want to have You say about BOCHS 2.1.1?