Ситуация следующая: Используется ОС Windiws XP, на ней стоит DosBox 0.73, который используется для эммулирования режима DOS. ТЗ: Написать программу под DOS(увы в режиме эмуляции под виндой) которая смогла бы посчитать размер жесткого диска. Используется(.286) 1. Как я понимаю можно использовать прерывания ms-dos для того чтобы узнать размер жесткого диска, но сейчас жесткие диски под несколько сотен ГБ и как я понимаю результат будет неверным. 2. Можно использовать прерывание 13h, но его не пропускает то ли сама ОС, то ли DosBox чтобы не было возможности испортить диски. Кто может подсказать как можно решить данную проблему?
Прерывания ДОС расчитаны на диски не более 8 Гбайт, т.е. средствами ДОС твою проблему не решить. Эмулятор DosBox вряд ли эмулирует железо, т.ч. этот способ отпадает. Остаются всякие прерывания БИОС, но тоже сомнительно чтобы они работали с большими дисками именно в DosBox. Только я не понимаю: зачем тебе большие диски. Или ты пишешь прогу под эмулятором, а работать она должна везде ?
1) В ТЗ вроде четко сказано ДОС. Если у вас диск больше то это уже не корректно. Так что смело используй прерывания дос. 2) Не верю. Если нужна поддержка больших дисков используй обращение через порты ввода вывода.
ну например есть hddspeed с исходниками на паскале с асм вставками - там загружаешься с дискеты и она тебе показывает размер физического диска чтоб узнать сколько чего в разделах - анализируй таблицу разделов - вопрос только даст ли тебе это сделать винда с эмулятором варинт когда эмулятор по обращению к портам будет выдавать тебе параметры виртуального диска не исключен
Так может определишься со средой программирования. DosBox не эмулирует не только порты дисков, но и сами диски эмулирует довольно своеобразно. Сам DOS там тоже свой, т.ч. прерывания есть только те, которые есть.