решил попробовать написать загрузчик,
пока получается выдать корневую папку,
а вот куда и как это дело грузить пока не разобрался.
кстати по поводу вычисления корневой папки,
я не уверен что правильно её вычислил.
Код:
jmp start
nop
BS_OEMName db 'Ranish ' ; Название и версия Windows
BPB_BytsPerSec dw 512 ; Количество байтов на сектор
BPB_SecPerClus db 1 ; Количество секторов на кластер (всегда кратно двум в степени п)
BPB_RsvdSecCnt dw 1 ; Количество зарезервированных секторов перед первой FAT
BPB_NumFATs db 2 ; Количество таблиц FAT
BPB_RootEntCnt dw 224 ; Количество элементов в корневом каталоге (максимальный предел)
BPB_TotSec16 dw 2880 ; Общее число секторов (00 00 - если размер диска больше 32 Мб)
BPB_Media db 0f0h ; Дескриптор среды; в данном случае F8, что идентифицирует диск как жесткий с любой емкостью
BPB_FATSz16 dw 9 ; Количество секторов на элемент таблицы FAT
BPB_SecPerTrk dw 18 ; Количество секторов на дорожку
BPB_NumHeads dw 2 ; Число головок
BPB_HiddSec dd 0 ; Количество скрытых секторов
BPB_TotSec32 dd 0 ; Общее число секторов, если размер диска больше 32 Мб
BS_DrvNum db 0 ; Номер диска; в данном случае 80, что идентифицирует основной раздел
BS_Reserved db 0 ; Зарезервирован
BS_BootSig db 29h ; Расширенная сигнатура (всегда 29h)
BS_VolID dd 0 ; Серийный номер тома
BS_VolLab db 'NO NAME ' ; Метка тома
BS_FilSysType db 'FAT12 ' ; Тип файловой системы (12- или 16-разрядная)
start:
mov ax,[BPB_SecPerTrk]
add ax,[BPB_RsvdSecCnt]
mov [dir_root],ax