stage1: Improve compatibility of HDD bootsector
diff --git a/stage1/hdd/bootsect.asm b/stage1/hdd/bootsect.asm
index de49c283..6c58e526 100644
--- a/stage1/hdd/bootsect.asm
+++ b/stage1/hdd/bootsect.asm
@@ -8,8 +8,31 @@ start:
; Some BIOSes will do a funny and decide to overwrite bytes of code in
; the section where a FAT BPB would be, potentially overwriting
; bootsector code.
- ; Avoid that by filling the BPB area with 0s
- times 87 db 0
+ ; Avoid that by filling the BPB area with dummy values.
+ ; Some of the values have to be set to certain values in order
+ ; to boot on even quirkier machines.
+ ; Source: https://github.com/freebsd/freebsd-src/blob/82a21151cf1d7a3e9e95b9edbbf74ac10f386d6a/stand/i386/boot2/boot1.S
+ .bpb:
+ times 3-($-$$) db 0
+ .bpb_oem_id: db "LIMINE "
+ .bpb_sector_size: dw 512
+ .bpb_sects_per_cluster: db 0
+ .bpb_reserved_sects: dw 0
+ .bpb_fat_count: db 0
+ .bpb_root_dir_entries: dw 0
+ .bpb_sector_count: dw 0
+ .bpb_media_type: db 0
+ .bpb_sects_per_fat: dw 0
+ .bpb_sects_per_track: dw 18
+ .bpb_heads_count: dw 2
+ .bpb_hidden_sects: dd 0
+ .bpb_sector_count_big: dd 0
+ .bpb_drive_num: db 0
+ .bpb_reserved: db 0
+ .bpb_signature: db 0
+ .bpb_volume_id: dd 0
+ .bpb_volume_label: db "LIMINE "
+ .bpb_filesystem_type: times 8 db 0
.skip_bpb:
cli
