Author: hbelusca
Date: Mon Feb 20 15:45:01 2017
New Revision: 73859
URL: http://svn.reactos.org/svn/reactos?rev=73859&view=rev
Log:
[FREELDR]: Update the FreeLdr's startup notes.
Modified:
trunk/reactos/boot/freeldr/notes.txt
Modified: trunk/reactos/boot/freeldr/notes.txt
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/notes.txt?rev…
==============================================================================
--- trunk/reactos/boot/freeldr/notes.txt [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/notes.txt [iso-8859-1] Mon Feb 20 15:45:01 2017
@@ -1,6 +1,8 @@
-FreeLoader notes
+FreeLoader notes (for x86 PC architecture only!)
+================================================
-Memory layout:
+Memory layout (WARNING: may be out-of-date)
+-~-~-~-~-~-~-
0000:0000 - 0000:0FFF: Interrupt vector table & BIOS data
0000:1000 - 0000:6FFF: Real mode stack area
@@ -14,44 +16,45 @@
FreeLoader Boot Process
+-~-~-~-~-~-~-~-~-~-~-~-
FAT 12/16/32 Boot Sector
- The BIOS loads the boot sector at 0000:7C00. The FAT32 boot sector
-relocates itself higher in memory at 9000:0000 and loads it's extra sector
-at 9000:0200 and then looks for freeldr.sys on the file system. Once found
-it loads freeldr.sys to 0000:7E00 and then jumps to it's entry point at
-0000:8000. The FAT12/16 boot sector does no relocation, it just searches for
-the freeldr.sys and loads the first 512 bytes to 0000:7E00. This extra code
-enables it to fully navigate the file allocation table. Then it loads
-freeldr.sys to 0000:7E00 and jumps to it's entry point at 0000:8000. Before
-FreeLoader gets control the boot sector saves the screen contents to a buffer
-at 9000:8000 and the cursor x & y position to bytes at 9000:8FA0 & 9000:8FA1
-respectively.
+ The BIOS loads the boot sector at 0000:7C00. The FAT12/16 boot sector just
+searches for FREELDR.SYS and loads its first 512 bytes to 0000:F800. This extra
+helper code enables it to fully navigate the file allocation table. The boot
+sector then jumps to FREELDR.SYS entry point at 0000:F803 and the helper code
+takes the relay. It finishes loading the FREELDR.SYS image and finally jumps to
+its final entry point at 0000:FA00.
+ The FAT32 boot sector loads its extra sector at 0000:7E00 and looks for
+FREELDR.SYS on the file system. Once found it loads FREELDR.SYS to 0000:F800
+and jumps to its entry point at the same address. This allows it to jump over
+the FAT12/16 extra helper code situated at this address, and go to the final
+entry point at 0000:FA00.
ISO-9660 (CD-ROM) Boot Sector
- The BIOS loads the boot sector (2048 bytes) at 0000:7C00. First, the
+ The BIOS loads the boot sector (2048 bytes) at 0000:7C00. First, the
boot sector relocates itself to 0000:7000 (up to 0000:7800). Then it looks
-for the LOADER directory and makes it the current directory. Next it looks for
-FREELDR.SYS and loads it at 0000:8000. Finally it restores the boot drive
-number in the DL register and jumps to FreeLoader's entry point at 0000:8000.
+for the LOADER directory and makes it the current directory. Next it looks
+for FREELDR.SYS and loads it at 0000:F800. Finally it restores the boot drive
+number in the DL register and jumps to FreeLoader's entry point at 0000:F800.
Multiboot
- Freeldr contains a multiboot signature and can itself be loaded by a
-multiboot-compliant loader (like Grub). The multiboot header instructs the
-primary loader to load freeldr.sys at 0x200000 (needs to be above 1MB). Control
-is then transferred to the multiboot entry point. Since freeldr.sys expects to
-be loaded at a base address 0000:8000 it will start by relocating itself there
+ Freeldr contains a multiboot signature and can itself be loaded by a
+multiboot-compliant loader (like GRUB). The multiboot header instructs the
+primary loader to load FREELDR.SYS at 0x200000 (needs to be above 1MB). Control
+is then transferred to the multiboot entry point. Since FREELDR.SYS expects to
+be loaded at a base address 0000:F800 it will start by relocating itself there
and then jumping to the relocated copy.
+FreeLoader Initialization
+-~-~-~-~-~-~-~-~-~-~-~-~-
-FreeLoader Initialization
-
- When FreeLoader gets control it saves the boot drive, passed to it in
-the DL register, and sets up the stack, enables protected mode, and calls
-BootMain().
+ When FreeLoader gets control it saves the boot drive and partition, passed
+to it respectively in the DL and DH registers, and sets up the stack, enables
+protected mode, and calls BootMain().