public Fixup doSectionEntry(boolean bootable, int bootMediaType, int loadSegment, int systemType, int sectorCount,
boolean entryExtFollows, boolean containsATAPIDriver, boolean containsSCSIDriver,
int selectionCriteriaType) throws HandlerException {
// Boot Indicator
if (bootable) {
streamHandler.data(new ByteDataReference(0x88));
} else {
streamHandler.data(new ByteDataReference(0));
}
// Boot media type
streamHandler.data(getExtendedBootMediaType(bootMediaType, entryExtFollows, containsATAPIDriver,
containsSCSIDriver));
// Load Segment: (0: use traditional segment of 0x7C0)
streamHandler.data(new LSBFShortDataReference(loadSegment));
// System Type
streamHandler.data(new ByteDataReference(systemType));
// Unused byte
streamHandler.data(new ByteDataReference(0));
// Sector Count
streamHandler.data(new LSBFShortDataReference(sectorCount));
// Load RBA
Fixup loadRBA = streamHandler.fixup(new LSBFWordDataReference(0));
// Selection criteria type
streamHandler.data(new ByteDataReference(selectionCriteriaType));
// Vendor unique selection criteria (18 bytes): handle externally
return loadRBA;
}