Partition table как правильно написать CHS ?

Тема в разделе "WASM.OS.DEVEL", создана пользователем abcd008, 8 янв 2011.

  1. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я те их и скинул выше
     
  2. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    или у тебя младшая часть ax
    старшая cx?

    я наверно местами перепутал
     
  3. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Да. Эта подпрограмма работает правильно. Она используется уже несколько лет в софте реального режима, включая загрузчики - меняются только некоторые регистры.

    Я допустил неточность выше. Получается, что "короткое" деление нельзя использовать из-за того, что для максимально возможного остатка 255 делитель не уместится в 8-разрядном регистре.
     
  4. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я уже разобрался, просто в описании надо писать не ax:cx а cx:ax. так как сначало пишут старшую часть, а потом младшую.
    все работает спасибо. но вот только int 13h (8) то работает то нет. а так разобрался.
    написал перевод всего с двумя вызовами деления.
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Я обычно пишу младшую часть первой, уточняя это при необходимости. Просто забыл уточнить.

    При использовании 32-разрядных регистров этого вполне достаточно.
     
  6. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    выяснил еще одну интересную вещь. винда сохраняет mbr в 4 и 5 сектор.
    так что пользоваться можно только первыми двумя, и то у меня во втором секторе храниться название диска.
     
  7. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Да ладно. У меня дома две поставленные винды (экспи и сэвэн) на диске, а сектора практически чистые (только в 10 секторе одно двойное слово по смещению 0х190). Кстати, у меня есть МБР для опроса функции 8. Если нужно, могу поделиться.
     
  8. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    спасибо я уже разобрался. но глянуть не откажусь, может что новое увижу.
    я только думаю. а сейчас вообще пользуются этой функцией(винда например), или тупо считают что 255 головок и 63 сектора.

    а про сектора 4 и 5 я проверял. я только меняю адрес в PT, как при следующей загрузке(если нет ошибок) в 4 и 5 секторе те же значения появляются.

    да и про писать для совместимости с x86, зачем. я же свой mbr и систему буду ставить только если проц поддерживает x64(я такую пишу). а 86 не как не поддерживает.
     
  9. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    кстати твой алгоритм деления неправильный!
    возьми калькулятор и проверь.
    пример lba=0xfa800 при делении на 63 остаток должен быть 30, а у твоей процедуры он 42 получается.
    недочет. исправляй у себя:) я наверно 32 бита буду использовать, проще будет.
     
  10. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я ошибся
     
  11. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Это врядли. Там просто вызов функции 8 и вывод значений dh, cl, ch или сообщения об ошибке в случае неудачного завершения функции. Я это к тому, что ты сказал, что у тебя функция 8 возвращает ошибку. Я эту MBR как раз использовал для проверки работоспособности функции 8 для дисков на разных компьютерах. Что-то не помню, чтобы хоть раз было выдано сообщение об ошибке.

    В загрузчиках, думаю, использует. Я когда писал свои загрузчики, много чего изучал, в том числе и виндовые загрузчики.

    Какой адрес?

    Это твое дело. Так многие делают. Просто MBR-загрузчик мягко говоря слабо привязан к какой-либо ОС. А первичные загрузчики я часто использую для загрузки софта, который по составу загрузочных файлов повторяет системные загрузочные файлы, хотя фактически может быть софтом реального режима, работающим даже на i8086. Короче, пока не проверю наличие 32-разрядного процессора, не использую соответствующие инструкции.
     
  12. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    какой адрес? - chs в таблице разделов.

    а edd он же не работает в pm.
    как тогда в колибри идет поддержка дисков видимых только через биос (scsi и тп). или они через vm86 работают с биос
     
  13. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Все равно не понял. Ты хочешь сказать, что Windows фиксирует факт изменения трехмерных координат и прописывает правильные координаты (вместе с MBR-кодом и PT?) в других секторах?

    Скорее всего через vm86. Но лично я считаю, что это большой костыль. Пусть лучше у меня вообще пока не будет поддержки определенных устройств, чем делать это через... таким образом. У меня сейчас такая ситуация с устройствами хранения, подключаемыми через USB.
     
  14. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    нет виндовс не правит chs в 1 секторе. он только фиксирует факт изменения, и делает копию mbr. у меня покрайне мере на ноуте так. хотя во времена дос, mbr копировали в 12 сектор. как резервную копию.
     
  15. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Корректируя CHS в сделанной копии?

    Короче я с таким не сталкивался. В любом случае если на нулевой дорожке присутствуют дополнительные для MBR-кода данные, то их корректность должна как-либо проверяться, например, через контрольную сумму. Я поэтому и отхожу от использования бутменеджера, "зашитого" на нулевой дорожке, в сторону чистых MBR-загрузчиков с расширенными возможностями.
     
  16. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    ну все не запихаешь в 440 байт. я думаю явно указывать адрес сектора дополнительного кода.
    а проще запихать все расширения в BR. там точно места хватит.
     
  17. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Для обработки первичных разделов мне хватает MBR, а для обработки дополнительных разделов я использую код, размещаемый в EPR - первом секторе расширенного раздела.
     
  18. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    я тоже так сделал. запихал в расширенный раздел, что то типа mbr.
     
  19. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Раз про EPR зашла речь, хочу спросить, кто-нибудь обрабатывает в загрузочном коде дополнительные разделы более чем одного расширенного раздела? И как вы вообще обрабатываете более одного расширенного раздела, в частности как нумеруете вложенные в них разделы?
     
  20. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    в смысле более одного?
    в каждой расширенной таблице по стандарту только две записи.
    1 сам раздел
    2 ссылка на следующий. а остальные пустые.
    я точно не помню.
    но теоретически можно вместо одного описать три раздела. но другие системы не поймут.
    а нумерация как и везде попорядку, как в дереве.