Short Q&A:

What - Windows CE.NET 4.20 on the Microsoft Xbox (Proof of concept)

Who - Artifex & Phoenix, with the assistance and support of OzXodus

Why - Because we can, and it's cool

How - Modified XbeBoot, custom BSP, and lots of luck

Usage - Throw default.xbe and NK.nb0 in a directory on your xbox.  Plug in a
usb mouse, prefferably not through a controller's hub.  Launch via your
preferred method. Unplug the gamepad as soon as it starts running, otherwise
the usb init may hang.  Some text should appear briefly, then the screen will
go black for a moment.  Give it 3-5 seconds, and the desktop should appear.  
You will most likely not have a mouse cursor, but the mouse should be
functional.  Keyboard will not yet work. (see below for details.)
YMMV!!!

Long Q&A:

-Wait wait wait.... Windows?  On the Xbox?
-BULLSHIT!  Everyone said it cant be done!  Is this for real?
  Yes, this is for real.  It's a VERY early work in progress... but it DOES
work.  Windows CE.NET is a full, "Win32" Windows kernel, designed for embedded
platforms.  It can run windows applications compiled for CE, CE.NET, PocketPC,
and Windows Mobile.  It can also run .NET CLR apps, and (with a VM installed)
Java. CE versions of Windows Media Player, Flash players, IE, MS Office, etc
etc....  This is the real deal.

-Ok, so, what can we do with it NOW?
  Not much.  This is just a proof of concept.  The kernel starts, SOME drivers
load, the GUI comes up, you can run applications.  There is a LOT still to be
done before it's very impressive

-What works?
  The basic kernel subsystem is in place.  The IoCtl is about 90% done.  ISR/IST
is up and working.  PCI enumeration happens properly.  USB initializes and 
enumerates devices (but hangs if there's a gamepad connected).  Mouse driver
loads.  Keyboard driver loads but is missing a layout, so it's not quite
functional yet. A VERY simple video driver is in place (Software mouse cursor
seems to be failing, so you won't see a pointer, yet).

-What still needs done?
  LOTS.  Most importantly, the existing 'bugs' need fixed.  Keyboard layouts
need put in place.   The software cursor needs fixed.  The date and time is not
being retrieved properly...  Secondly, drivers need written, ported, or simply
put in place.  It should be easy to work the NVNET driver in, as it's designed
to be easily dropped into an NDIS/RNDIS environment.  FATX should just be a
matter of adapting the FAT filesystem driver.  Gamepad drivers can be ported
from the existing windows versions.  It MAY (very speculative!) be possible to
work in a 3d-accelerated nvidia gpu driver, as CE.NET includes a complete
DirectX implementation.

  Also, Focus support is not currently in place (lacking in xbeboot)

-Why Release now, then?  Why not finish these tasks first, and then release?
  I started this project on my own, and got it to this point several months ago
 Then a LOT of other things started to come up, both with the Xbox, and IRL.  I
tried to get some other Phoenix members interested, but they were also either
too busy with other projects, or IRL.  Since then, I've been pondering what to
DO with the existing codebase.  I finally made the decision to release what I
have so far to the public, and see if there were interest.  If there  is, I'm
making an open call for developers, and taking this the way of the xbox-linux
project.

-Can I help?
  YES!  Especially helpfull would be people with embedded RTOS experience, and
people with experience in writing windows drivers or with the windows driver
architechture itself.  Just contact me (see below) and we'll discuss what can be
done.  I may go so far as to set up a sourceforge project to collaborate our
efforts.

-Is this legal to use?  Is this legal to distribtue?  Am I violating copyright
if I host this?
  The stage1 bootloader (XbeBoot) was taken from the Xbox-Linux project, and was
written without the use of the XDK.  Everything AFTER the stage1 bootloader is
either my code (BSP) or CE itself.  I submit my code to the world under the GPL.
 As far as CE itself, here is what Microsoft has to say on the subject:

(Taken from "Understanding Additional Licensing Rights", Posted: September 18,
2003
http://www.microsoft.com/Windows/Embedded/ce.NET/howtobuy/licensing/addlicright
.asp)

	"Non-commercial distribution rights grant developers the ability to
install a runtime on an unlimited number of devices and distribute those devices
to third parties for non-commercial purposes. These rights are applicable to
both Evaluation Edition and Full Version licensees."

Further:

	"A developer may create and deploy runtimes on an unlimited number of
devices to share with friends as long as neither person is receiving any
financial gain from the transaction."

In other words, we can all share this great peice of work freely and openly, so
long as noone tries to sell it.  Thanks muchly, Microsoft!  :-)
 
-Ok, so, CE.NET is a nifty toy, and all... but can we put REAL Windows on the
xbox?  Like Windows XP?
   Well, yes and no.
   This topic has been beaten to death over time, but... I'll add a little to
the discussion.
   There is an embeddable version of Windows XP called "XP eMbedded" or XPe.  It
has been said time and time again that the Windows kernel will not boot without
a BIOS.  This is true of MOST Windows kernels, but only because their lower
level functions are coded against a standard PC, and we don't have the source,
obviously.  With XPe, WE can provide the lower level functions ourselves, in a
custom BSP, and build a custom bootloader.  Preliminary experimentation shows
that this WILL work, it will just take a lot of effort.  Better to get the "Toy"
OS up and running first, and then apply what we learn along the way to the big
bad.

-How can I contact you?
  Well, if you dont already know my usual haunts...
  You can email me at artifex@hush.ai but there's no assurance i'll ever
read/respond.  ;-)
  Or, even better, catch me on irc.oftc.net in either #xbox-linux or, now,
#xbox-windows




