mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-26 07:20:32 +00:00
Add currently non-functional Limine HDD 'install' test file in /Home.
This commit is contained in:
parent
027116f596
commit
1a130d39ec
1 changed files with 60 additions and 0 deletions
60
src/Home/LimineHDD.ZC
Executable file
60
src/Home/LimineHDD.ZC
Executable file
|
@ -0,0 +1,60 @@
|
|||
|
||||
#include "/Boot/Limine-HDD.HH"
|
||||
|
||||
class CLimineStage2Header
|
||||
{
|
||||
U16 size_a;
|
||||
U16 size_b;
|
||||
U32 location_a;
|
||||
U32 location_b;
|
||||
}
|
||||
|
||||
DocMax;
|
||||
|
||||
Dump(binary_limine_hdd_bin_data + 0x1A4);
|
||||
|
||||
CLimineStage2Header *limine_stage2 = binary_limine_hdd_bin_data + 0x1A4;
|
||||
|
||||
ClassRep(limine_stage2);
|
||||
|
||||
U16 limine_stage2_size = sizeof(binary_limine_hdd_bin_data) - 512;
|
||||
U16 limine_stage2_sectors = (limine_stage2_size + (512 - 1)) / 512;
|
||||
U16 limine_stage2_sectors_size = (limine_stage2_sectors / 2) * 512;
|
||||
|
||||
limine_stage2->size_a = limine_stage2_sectors_size + (512 * (limine_stage2->size_a % 2));
|
||||
limine_stage2->size_b = limine_stage2_sectors_size;
|
||||
limine_stage2->location_a = 512;
|
||||
limine_stage2->location_b = 512 + limine_stage2->size_a;
|
||||
|
||||
limine_stage2->size_a = EndianU16(limine_stage2->size_a);
|
||||
limine_stage2->size_b = EndianU16(limine_stage2->size_b);
|
||||
limine_stage2->location_a = EndianU32(limine_stage2->location_a);
|
||||
limine_stage2->location_b = EndianU32(limine_stage2->location_b);
|
||||
|
||||
ClassRep(limine_stage2);
|
||||
Dump(binary_limine_hdd_bin_data + 0x1A4);
|
||||
|
||||
CBlkDev *bd = Letter2BlkDev('c');
|
||||
|
||||
U8 buffer[2000*16];
|
||||
MemSet(buffer, 0, BLK_SIZE);
|
||||
AHCIAtaBlksRead(bd, buffer, 0, 1);
|
||||
"\n\n\n\n";
|
||||
Dump(buffer, BLK_SIZE);
|
||||
"\n\n\n\n";
|
||||
|
||||
MemSet(buffer, 0, BLK_SIZE);
|
||||
MemCopy(buffer, binary_limine_hdd_bin_data, 512);
|
||||
MemCopy(buffer + 512, binary_limine_hdd_bin_data + 512, limine_stage2_sectors_size);
|
||||
MemCopy(buffer + 512 + limine_stage2_sectors_size, binary_limine_hdd_bin_data + 512 + limine_stage2_sectors_size, limine_stage2_sectors_size);
|
||||
Dump(buffer, 2000*16);
|
||||
"\n\n\n\n";
|
||||
AHCIAtaBlksWrite(bd, buffer, 0, (sizeof(binary_limine_hdd_bin_data)/512) + 4);
|
||||
MemSet(buffer, 0, BLK_SIZE);
|
||||
AHCIAtaBlksRead(bd, buffer, 0, 1);
|
||||
"\n\n\n\n";
|
||||
Dump(buffer, BLK_SIZE);
|
||||
"\n\n\n\n";
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue