Согласен, выигрыш непонятен - алгоритм конвертации LBA в CHS занимает сотню байт вместе с процедурами деления (которые наверняка и в других местах задействованы, т.е. их можно не считать).
Информация о партициях в "стандарте FDisk-а Винды" лежит в последних 66 байтах 512-байтного сектора с LBA_addr=0 (таблица из 4х16=64 байт для 4-х примари партиций +2 байта 55AA). Начальные 446 байтов - область кода BootSector-а и DPB. Т.е. это практически то, что нужно Максагору.
ИМХО делать разбивку партиций нужно ТОЛЬКО в формате FDisk-а винды. Чтобы я потом эту CF-ку мог нормально прочитать как на PC, так и на Z80-based). На ней можно будет держать и FAT32 (который прочитается и там и там) и DNA-OS, которая под виндой будет выглядеть просто неизвестным разделом. Идеально для переноса файлов, работы на обеих платформах и т.д.
Именно поэтому не нужно придумывать велосипеды, а брать формат FDisk-a винды.
Про остальное - мне пофиг. С удовольствием портирую такой fdisk к себе на Орион (софт работающий с FAT12/16/32 в среде партиций стандарта FDisk-а у меня на Орионе уже есть). Поэтому идеал - блочное строение, где весь ввод/вывод с клавиатуры/на экран вынесен в один блок, низкоуровневая запись 512-байтных блоков на хард - в другой блок, а вся логика fdisk-а (самое интересное) - в третий блок.






Ответить с цитированием