User Tag List

Показано с 1 по 10 из 17

Тема: Работа с HDD!!!

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #17

    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    804
    Спасибо Благодарностей отдано 
    43
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Немного про LBA режим

    Может кому пригодится, в доках по Спектруму найти этого не удалось, может плохо искал, а может этого и нету.

    Полностью описывать регистры HDD не вижу смысла, предполагаю что люди, кто пытается освоить HDD, уже разобрались с инициализацией HDD и с адресацией к дисковому пространству по CHS, опишу лишь различия, необходимые для адресации по LBA, все номера портов буду приводить в соответствии с NemoIDE:

    1) После успешной инициализации винчестера, сначала необходимо получить инфу о размере дискового пространства винчестера, подав команду "Identify Drive":

    В результате из буфера секторов мы получим 512 байт данных, в которых среди кучи информации (в том числе и название фирмы, модели и прошивки HDD, а так же кроме кол-ва цилиндров, головок и секторов на дорожке по стандарту CHS) будет ещё 32-битное число - количество доступных блоков, т.е. секторов по 512 байт, при объеме HDD до 120 Гб, это число занимает до 28 бит. Грубо говоря, нас интересуют эти 4 байта, и находятся они по смещению #0078, #0079, #007A и #007B от начала блока данных, (если принять во внимание, что данные представлены в виде 2-байтовых слов, то это слово №60 и 61.

    Далее, для того чтобы использовать режим LBA, необходимо при выборе привода включить бит LBA в регистре "Привод / Поверхность":

    Регистр "Привод / Поверхность" (порт #D0):

    Код:
              7     6     5     4     3     2     1     0
           ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
           │  1  │ LBA │  1  │ DRV │ HS3 │ HS2 │ HS1 │ HS0 │
           └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
    - LBA - бит режима LBA. Если LBA=0, то выбран режим CHS,
    если LBA=1, то выбран режим LBA.


    - DRV - бит выбора накопителя. Если DRV=0, то выбран накопитель
    0, если DRV=1, то выбран накопитель 1.

    - HS3...HS0, в режиме CHS содержат двоичный код номера головки (начиная с ну-
    ля), которая будет выбрана. Hапример, если HS3...HS0=0011b,
    то будет выбрана головка 3. HS3 - старший бит. После заверше-
    ния команды, этот регистр модифицируется и всегда содержит
    текущий номер выбранной головки.
    - HS3...HS0, в режиме LBA содержат первые 4 бита
    самого старшего байта № 3 номера блока LBA, т.е. биты 24-27 указателя
    блока LBA.

    Байт №2 указателя блока LBA, т.е. биты 16-23, нужно отправлять в регистр "Цилиндр, старшая часть" (порт #B0)

    Байт №1 указателя блока LBA, т.е. биты 8-15, нужно отправлять в регистр "Цилиндр, младшая часть" (порт #90)

    Самый младший байт №0 указателя блока LBA, т.е. биты 0-7, нужно отправлять в регистр "Номер сектора" (порт #70).

    Во всём остальном (коды команд чтения и записи, ожидание готовности, обработка ошибок) не отличается от чтения и записи в режиме CHS.
    Последний раз редактировалось Northwood; 02.05.2013 в 13:02.
    С уважением, Александр

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Работа с винтом...
    от Roger Wilco в разделе Amiga
    Ответов: 84
    Последнее: 09.09.2009, 13:25
  2. Работа с НМЛ из эмулятора
    от Error404 в разделе Эмуляторы
    Ответов: 6
    Последнее: 28.11.2007, 23:29
  3. Работа с архивами .lzx
    от crushers[4ePT] в разделе Утилиты
    Ответов: 2
    Последнее: 01.10.2007, 17:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •