56 lines
2.1 KiB
Plaintext
56 lines
2.1 KiB
Plaintext
|
|
||
|
|
||
|
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.
|