Get It Running Efficiently!
Posted 12 December 2004 - 11:29 PM
but finding those skilled in programming and setting up embedded installations and also knowledge of xbox's can create a bit of a challenge.
i think i might give my buddy a ring on the phone in a little bit, see if he is up for the challenge.
Posted 13 December 2004 - 03:38 AM
I would rather see Win ME running on my xbox, then XPe.
Posted 13 December 2004 - 06:00 PM
Posted 13 December 2004 - 08:28 PM
Posted 13 December 2004 - 11:46 PM
Posted 14 December 2004 - 01:08 AM
From reading the thread, I've been unable to determine what your target is, Win9x or WinNT/2000/XP. If the target is Win9x (or Embedded), I can't give you any advice, I know next to nothing about those. The following is specific for the NT family (which includes NT4, 2000, XP and 2k3).
There's basically two sets of problems to solve: how to get Windows loaded and how to run it. The sequence of events on a normal PC is: the BIOS loads the Master Boot Record. The MBR determines which partition is active and loads the boot sector for that partition. The boot sector then loads NTLDR which will do the bulk of getting Windows loaded. It does so with the help of the BIOS. For example, to read a sector from the harddisk it will generate a (real mode!) INT13. It will also call upon a lot of other services of the BIOS, most of which are invoked by issuing a real mode INT. Note that a normal PC BIOS is very different from a Xbox BIOS, about the only thing which is the same is the name BIOS. The Xbox BIOS mostly runs in protected mode and is incapable of providing the real mode services which NTLDR needs. So, if you want to use NTLDR you have no choice but to develop a PC BIOS implementation for the Xbox. This is a pretty huge undertaking.
NTLDR will load NTOSKRNL.EXE (the Windows kernel), HAL.DLL (Hardware Abstraction Layer), SYSTEM registry hive, boot device drivers indicated in the system registry hive and some NLS files. It has built-in filesystem support for FAT and NTFS and those will be the only filesystems it will understand. Furthermore, NTLDR will do device detection and build a basic list of devices present in the system. Oh, and by the way, NTLDR expects to be started in real mode. It will switch the CPU to protected mode. Finally NTLDR will transfer control to the kernel.
For ReactOS we developed our own bootloader named FreeLdr. Most of the initial work was done by Brian Palmer. Our FreeLdr handles the same tasks as NTLDR. FreeLdr already runs on the Xbox. Unfortunately, I don't think it can be used to launch Windows. When passing control to the kernel, the boot loader passes a block of parameters. The NTLDR parameter block is not compatible with the FreeLdr parameter block.
When the Windows kernel starts, it will not call the BIOS anymore (with small exceptions, see later). It will enumerate the PCI bus itself, using INP and OUTP instructions. As you know, this process will freeze the Xbox.
Another problem is the video driver. I don't have to tell you that the GPU is very much like the Geforce 3. However, it does have a different PCI id. This means that the standard Nvidia driver will not recognize it. So, Windows will fall back on its default drivers. For older Windows versions, that's a VGA driver. Alas, that driver expects a standard VGA card to be present, with video memory at 0xa0000 and I/O ports. It simply will not work on the Xbox. Newer Windows versions can use VBE based drivers, which depend on the presence of a VGA BIOS (this is the exception I was talking about earlier). So that's another BIOS to write....
For ReactOS, we circumvented the PCI enumeration by writing a customized HAL (Hardware Abstraction Layer), which is the component which actually issues the INP and OUTP instructions. The customized HAL simply refuses to do I/O to some "blacklisted" PCI slot numbers (0:0:1 and 0:0:2 to be exact). The rest of the OS interprets the results as "nothing to see there, let's move on". The video driver issue was solved by writing a video driver for the Xbox.
The biggest challenge for me when porting ReactOS to the Xbox was the boot loader. The OS itself was actually pretty easy. I think the same is true for getting Windows to run: if you get NTLDR to do it's job you're almost there.
I've probably left out lots of details, if you have questions please feel free to ask, I'll drop by every now and then (or you can email me: firstname.lastname@example.org). The source code for ReactOS is freely available, just remember that it's under the GPL, which means that if you use any part of it you must also publish your source code.
Posted 14 December 2004 - 03:24 AM
Posted 14 December 2004 - 06:33 AM
Posted 14 December 2004 - 11:54 AM
or get ReactOS running really really good. i wouldn't mind using ReactOS, it looks good and will have an easy interface.
Posted 14 December 2004 - 07:04 PM
h8raid: Sorry, didn't want to imply that this wasn't known, at least by the "inner crowd". It's just that I hadn't seen a list of items to be done.
total_ass: You guys have a nice challenging project going here. I love a good challenge but ReactOS is already providing that for me.
Posted 14 December 2004 - 07:58 PM
I would really love to be able to use it on my xbox.
Posted 15 December 2004 - 06:05 AM
I hope that finally people will be able to run windows 98 especially on the xbox gaming console
Posted 15 December 2004 - 05:23 PM
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users