2012-05-04 7 views
1

Я отслеживаю учебное заведение по операционной системе на http://www.brokenthorn.com. Сейчас я пытаюсь настроить блок параметров BIOS с этим кодом:FAT 12 Внедрение

jmp loader 
bpbName db "NubOS",0,0,0 
bpbBytesPerSector:  DW 512 
bpbSectorsPerCluster: DB 1 
bpbReservedSectors:  DW 1 
bpbNumberOfFATs:  DB 2 
bpbRootEntries:   DW 224 
bpbTotalSectors:  DW 2880 
bpbMedia:    DB 0xF0 
bpbSectorsPerFAT:  DW 9 
bpbSectorsPerTrack:  DW 18 
bpbHeadsPerCylinder: DW 2 
bpbHiddenSectors:  DD 0 
bpbTotalSectorsBig:  DD 0 
bsDriveNumber:   DB 0 
bsUnused:    DB 0 
bsExtBootSignature:  DB 0x29 
bsSerialNumber:   DD 0xa0a1a2a3 
bsVolumeLabel:   DB "MOS FLOPPY " 
bsFileSystem:   DB "FAT12 " 

Однако, когда я пытаюсь открыть диск с помощью ImDisk driver для виртуальных дискетах, это говорит о том, что диск должен быть отформатирован. Является ли код, который я использую правильно?

+1

Вам просто не хватает 3 байтов прямо перед тем, как сказал @hobbs. Это, кстати, описано в [официальном документе от Microsoft - fatgen103.doc] (http://msdn.microsoft.com/en-us/library/windows/hardware/gg463084.aspx). –

+0

У меня есть три байта, возможно, я должен поставить вопрос. –

+1

Как насчет остального? Вы действительно писали секторы FAT? –

ответ

2

Попробуйте короткий прыжок: сектор начинается с jmp short loader, а затем nop, затем bpbName через bsFileSystem, затем loader: и весь код, а затем последние 2 байта 512 байт сектора является 0x55 и 0xAA. Эти два должны быть в смещениях 510 и 511 соответственно.

2

Вам не хватает команды 3-байтового перехода перед BPB. Слово байты на сектор должно быть смещено на 0x0b относительно начала диска, а не на 0x08. Скачок перейдет к коду загрузчика, который после BPB (и если скачок достаточно короткий, для которого требуется только два байта, за ним следует nop).

Если машина никогда не будет загружена с диска, вы можете поместить любые произвольные значения в эти первые три байта, но традиционно иметь прыжок в любом случае, это идет к фрагменту кода, который печатает что-то вроде This disk is not bootable, а затем останавливает машину.

+0

У меня есть прыжок в начале, и я поставлю это в вопросе. –

 Смежные вопросы

  • Нет связанных вопросов^_^