Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.1 KiB



Building NT fdisk's boot code
-----------------------------


The master boot code is contained in the file x86mboot.c, which is
#include'd into fd_nt.c. The boot code is in the form of an array
(named x86BootCode) of unsigned chars, which is refered to by code in
fd_nt.c when fdisk needs to lay boot code on the disk.

The x86mboot.c file is generated by different means depending on the
compilation host (ie, whether you're building on x86 or MIPS).


The following applies to x86 ONLY:
----------------------------------

The master boot code is built from the x86mboot.asm and x86mboot.msg
files in i386 by running masm386 over these files to produce x86mboot.obj.

Then link_60 is run over x86mboot.obj to produce x86mboot.com. The boot code
is at offset 1280 in this file (1280 = 600h-100h. 600h is where the boot
code is assembled, and 100h is where a .com file is loaded by DOS.) It is
of length 0x1be (512 byte sector - 64-byte partition table - signature word).

The tool bin2c.exe (in sdktoosl) is run over x86mboot.com to generate
i386\x86mboot.c.


The following applies to MIPS ONLY:
-----------------------------------

On MIPS, the best we can do is check in the 'finished' product of the
x86 process, namely x86mboot.c, into the mips directory (we cannot run
masm386 or link_60 on MIPS!). If, however, the i386\x86mboot.asm or .msg
files are newer than mips\x86mboot.c, then that means that someone changed
the boot code but did not check in the .c file to mips\x86mboot.c. So we
generate an error message.

The correct action when receiving this error message is to go to an x86
machine, bget or build the i386\x86mboot.c file, and check that file
into mips\x86mboot.c. Then sync on the MIPS machine.






Our build process generates a -I parameter to the compiler based on
the compilation environement (ie, -Imips\ or -Ii386\). This allows fdisk
to simply '#include "x86mboot.c"' and get either the generated file on x86
or the file under source control for MIPS. This way we maintain at least
a semblance of the correct dependencies should the x86mboot.msg file be
translated, etc.