jart / jart/sectorlisp

First two bytes need to be "33 C0" (alternative encoding of "mov eax, eax") for some brain-dead BIOSes

Open
#32 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
1.5k
Forks
76
PR merge metrics
No merged PRs in 30d

Description

Some rather brain dead BIOSes use "33 C0" at the beginning of the MBR as a magic number for a "modern" MBR. This is a relic of how all Windows NT-family MBRs begin with "33 C0", while no DOS or Windows 9x MBRs do.

Without this magic value, the affected BIOSes will enable DOS/Win9x-specific workarounds, mostly in relation to drive access, which tend to break large disk access or LBA in newer MBRs.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the code that emits the beginning of the MBR and inspect its current first two bytes. Confirm that the generated boot-sector image begins with 33 C0, then verify the resulting bytes against the BIOS compatibility requirement described in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.