diff --git a/src/Home/LimineHDD2.ZC b/src/Home/LimineHDD2.ZC new file mode 100755 index 00000000..134dc329 --- /dev/null +++ b/src/Home/LimineHDD2.ZC @@ -0,0 +1,40 @@ + +#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_bytes = sizeof(binary_limine_hdd_bin_data) - BLK_SIZE; +U16 limine_stage2_size_remainder = (BLK_SIZE - (limine_stage2_size_bytes % BLK_SIZE)); +U16 limine_stage2_size_aligned = limine_stage2_size_bytes + limine_stage2_size_remainder; + +U16 limine_stage2_size_a = (limine_stage2_size_aligned / 2) + (BLK_SIZE - ((limine_stage2_size_aligned / 2) % BLK_SIZE)); + +limine_stage2->location_a = 512; +limine_stage2->size_a = limine_stage2_size_a; +limine_stage2->location_b = limine_stage2->location_a + limine_stage2->size_a; +limine_stage2->size_b = limine_stage2_size_bytes - limine_stage2->location_b; + +Dump(binary_limine_hdd_bin_data + 0x1A4); +ClassRep(limine_stage2); + +//CBlkDev *bd = Letter2BlkDev('c'); + +U8 buffer[2000*16]; +MemSet(buffer, 0, 2000*16); +MemCopy(buffer, binary_limine_hdd_bin_data, sizeof(binary_limine_hdd_bin_data)); + +AHCIAtaBlksWrite(bd, buffer, 0, limine_stage2_size_aligned / BLK_SIZE); \ No newline at end of file