Add currently non-functional Limine HDD 'install' test file in /Home.

This commit is contained in:
TomAwezome 2022-09-21 17:32:41 -04:00
parent 027116f596
commit 1a130d39ec

60
src/Home/LimineHDD.ZC Executable file
View 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";