internal static unsafe void Setup(uint xSig, uint Address) { if (xSig != 0x2BADB002) { aIsValid = false; Debug.Write("Invalid Multiboot Signature\n"); return; } aIsValid = true; Address += 0xC0000000;// We are in higher half =D Mb_Info = (Multiboot_Info *)Address; Debug.Write("Multiboot Found!!\n"); Debug.Write(" Address ::%d\n", Address); Debug.Write(" VBEModeInfo ::%d\n", Mb_Info->vbeModeInfo); Debug.Write(" VBEControlInfo::%d\n", Mb_Info->vbeControlInfo); Initrd = 0; InitrdSize = 0; var modules = (UInt32 *)(Mb_Info->mods_addr + 0xC0000000); Debug.Write(" Modules Count:%d\n", Mb_Info->mods_count); if (Mb_Info->mods_count > 0) { Initrd = modules[0]; InitrdSize = modules[1] - Initrd; Initrd += 0xC0000000; Debug.Write(" RamDisk:%d\n", Initrd); Debug.Write(" RamDisk-Size:%d\n", InitrdSize); } if (Mb_Info->mods_count == 0) { Debug.Write(" No Initial RAM Disk Found!!\n"); } Debug.Write(" Flags:%d\n", Mb_Info->Flags); }
public static void Setup(uint magic, uint address) { if (magic != MULTIBOOT_BOOTLOADER_MAGIC) { Console.WriteLine("No VALID MULTIBOOT"); while (true) { ; } } MultibootHeader = address; Mb_Info = (Multiboot_Info *)MultibootHeader; }