номер головки чтения/записи в int 0x13

Тема в разделе "WASM.ASSEMBLER", создана пользователем andruxa, 27 июл 2005.

  1. andruxa

    andruxa New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2005
    Сообщения:
    16
    Адрес:
    Russia
    как определить номер головки чтения/записи для использования int 0x13
     
  2. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    у дискеты их или одна (0) или 2 (0 и 1)
     
  3. andruxa

    andruxa New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2005
    Сообщения:
    16
    Адрес:
    Russia
    а если это hda(0x80), тогда как?
     
  4. andruxa

    andruxa New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2005
    Сообщения:
    16
    Адрес:
    Russia
    и когда она одна, а когда их две?
     
  5. andruxa

    andruxa New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2005
    Сообщения:
    16
    Адрес:
    Russia
    смотрел один исходник, там есть такие комментарии типа

    вычисляем номер головки
     
  6. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    >если это hda(0x80)

    чего?

    >когда она одна, а когда их две?

    зависит от типа дискеты и дисковода. Скорей всего все существующие ныне компы поддерживают две головки на дискете.

    Кстати, видел картинку где-то, там нарисовано две головки- одна с одной стороны дискеты, другая с другой. Это неверно (5" точно, 3.5" не помню, но даю 90%). Просто дорожки одной головки чередуются друг через друга с дорожками другой головки и расположены они на одной стороне дискеты. На 5" дискете например можно прорезать отверстие сбоку (симметрично существующему) и работать на двух сторонах дискеты, т.е. удвоить емкость (только доставать надо и переворачивать).



    У жесткого и у дисковода можно узнать, сколько он имеет головок; для дискеты надо еще проверить, может ли она работать с этим кол-вом головок в этом дисководе.
     
  7. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    yureckor



    А такие аббревиатуры, как SSSD или DSDD ничего не говорят? ;о)

    SSSD = Single Side Single Density

    DSDD = Double Side Double Density

    Но это практиковалось только с 8" дискетами и первыми 5". В них действительно можно было прорезать дополнительное индикаторное отверстие и использовать одностороннюю дискету с двух сторон (если, конечно, покрытие было...). У "двухсторонних" дискет это отверстие было размещено немного иначе, чем у "односторонних", поэтому "двухсторонний" дисковод мог распознать, какой тип дискеты в него засунули, а "односторонний" дисковот вообще не видел двухсторонних.

    Затем практически все дисководы стали "двухсторонними", и, соответственно, "двухголовыми" :о).



    А вот относительно того, что
    - никогда не слышал. Если дашь ссылку, с интересом почитаю.
     
  8. andruxa

    andruxa New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2005
    Сообщения:
    16
    Адрес:
    Russia
    вот фрагмент кода исходника

    Вычисляем какую головку использовать

    shr di, 1

    setc dh

    mov cx, di

    xchg cl, ch



    >как определить конкретную головку у hda?

    как узнать сколько существует головок у hda
     
  9. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    andruxa

    Для HDD используй LBA и не мучайся с головками.
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    andruxa

    В давние времена, еще лет 10-15 назад. Были винчестиры меньше 528МБ. В них использовалось такая вот адресация: Головки, Сектора, Цилиндры. Но вот терас появились винчестеры большего объема. А производители биуса просчитались в распределенние регистров для задания Головок, Секторов, Цилиндров, им пришлось делать преоброзование. Сначало в Линейный адресс из своего формата и обратно только уже в формат который принят у IDE интерфейса. Происходило перерапределение Головок, Секторов, Цилиндров. Это дало возможность роботать уже с 8ГБ винчестерами. Но и этого хватило не надолго. Дальше деваться было некуда. Решени было перейти на Линейную адресацию 32Бита(Из них 2 зарезервированны) 120ГБ. Теперь уже пришел век Линейной адресации которая использует 64Бита.
     
  11. Sergey_R

    Sergey_R Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    138
    andruxa



    "hda" = жесткий диск?



    У INT13 есть специальная подфункция для определения параметров дисководов (и жестких дисков тоже):

    Int 13/AH=08h - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)

    Вот ее описание в Interrupt List by Ralf Brown

    http://www.ctyme.com/intr/rb-0621.htm



    (Вот только как ведет себя эта подфункция с современными дисками большой емкости, не знаю.)
     
  12. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    вот список функций биос, сам сейчас делаю нестандартное чтение/запись с дискетой.



    1)

    [​IMG] _1884449140__Bios1.rar
     
  13. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia