User Tag List

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

Тема: Вектор-06Ц: Операционные системы

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

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

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    582
    Спасибо Благодарностей получено 
    471
    Поблагодарили
    253 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Решил я поизучать тему "заворота" на жёстких дисках начиная с дискеты №42 (2Bh), на примере MDOS31H. В кратце, никаких новых результатов не было найдено, всё, что обнаружил уже обсуждалось тут в форуме, поэтому прячу под спойлер:

    Ничего нового...

    1. На количество секторов и количество головок НЖМД отводится по 8 бит, но в расчётах используется формула 1 - (сектора * головки)*10h с сохранением результата в 16 бит, поэтому (сектора * головки) <= 1000h (= 4096), и, соответственно, может быть, например, не больше 16 секторов Х 256 головок, 32х128, 63х65... (По стандарту НЖМД может иметь до 256 головок и до 63 секторов, головки считаются с нулевой, а сектора с первого). По последним данным, есть ограничение (секторов*головок)<256.

    2. Количество цилиндров на НЖМД сохраняется в 16 битах (при положенных для стандарта CHS десяти битах), но оно особого значения не имеет и не учитывается, при обращении расчёты ведутся по количеству дискет, секторам и головкам.

    3. В БДОС применяется сквозная нумерация секторов (почти как LBA), для этого используется 24 бита, и это даёт максимальный размер диска 8 Гб (при размере сектора 512 байт), после этой границы будет "заворот".

    4. Размер дискеты равен 622h (= 1570) секторов, смещение первой на +2 сектора. Первые 8 дорожек дискеты НЖМД системные (8*10 секторов * 512байт = 40960 байт), эта область одна для всех дискет на НЖМД.

    5. Максимальное количество целых дискет исходя из п.3 и 4 равно 29BEh = 10686, что укладывается в отведённые 16 бит для хранения их числа, нераспределённый остаток в конце диска до границы в 8 Гб равен 57 секторов или 29184 байта.

    6. Обращение к диску в МДОС осуществляется по номеру дорожки и номеру сектора, на оба значения отводится по 8 бит, отсюда ограничение теоретического максимального размера дискеты будет 256*256*128 (размер сектора в МДОС) и равно 8Мб, практически же МДОС видит дискету 164 дорожки * 40 секторов * 128 байт = 839 680 байт.

    7. При обращении к НЖМД в БДОС читаются/пишутся по два сектора диска (2*512=1024 байта), что соответствует восьми секторам МДОС (МДОС понимает один размер сектора, 128 байт). БДОС при последовательном чтении копирует данные из буфера в 1кБайт в буфер дисковых операций. При изменении на НЖМД запись данных производится также в размере двух секторов, даже если один из секторов не изменялся.

    8. БСВВ (БДОС) выполняется перерасчёт данных полученных от МДОС: лог.номер сектора = 10 * дорожка + 2 * (сектор - 1)/8, что соответствует дискете на 820 кб. Результат сохраняется в 16 бит и потом суммируется с начальным номером сектора дискеты в 24 бит.

    9. Максимальное значение дорожки, получаемое БДОС от МикроДОС равно 164 (A4h), при большем значении БДОС возвращает ошибку. Исключение -- можно считать с НЖМД дорожку 0FFh (это нулевой цилиндр с записанной при инициализации конфигурацией).
    [свернуть]

    В общем, могу резюмировать, что никаких особых багов на эту тему в MDOS31H не выявил, диски до 8Гб включительно должны там работать без "заворотов". Есть только предположение, что глюк с "заворотом" может возникать, если прерывание прилетит точно в момент расчёта и передачи на НЖМД номера цилиндра по "OUT 055h" - "OUT 054h", из-за чего там будет большой разрыв по времени и старшие биты обнулятся. Либо, как предполагал ранее, некоторые программы обращаются к функциям БДОС напрямую, при этом сами имеют такой баг. -- Баг найден.

    Но есть и положительные моменты, в ходе разборок с НЖМД собрал версию МикроДОС Т-72 с драйвером жёсткого диска, вот архив с новой версией и исходниками, Т-72h: T72m3src.7z

    Отличия от предыдущей версии:
    - Добавлена команда "9" -- выбор дискеты жёсткого диска (работает аналогично mdos31h).
    - Из-за нехватки памяти убран драйвер для флоповодов (думаю, его следует вернуть, но для этого понадобится немного подвинуть МДОС, да и сам драйвер надо будет немного переделать). Сейчас при обращении к флопикам просто выдаётся ошибка.

    Добавленный драйвер НЖМД, по сравнению с mdos31h, существенно переработан, а именно:
    - Добавил запрет прерываний на время записи конфигурации НЖМД, посмотрим, как устранит это глюк с заворотом...
    - Размер буфера драйвера уменьшил до одного физического сектора НЖМД, т.е. до 512 Байт.
    - Исправил проблему с линией "RESET" на IDE, из-за чего приходилось отключать вывод 1 у жёсткого диска. Теперь тормозов нет, даже если он подключён.

    Погонял новую версию МДОСа на эмуляторе и на своём реальном Векторе, работает хорошо и с одним, и с двумя квази-дисками. :-) В новой версии по тестам копирование файлов с одной дискеты НЖМД на другую выполняется раза в полтора быстрее, замерял и по тактам (в эмуляторе), и по времени. Единственный ньюанс: программа FDIR не работает, подвисает до сброса. Надо будет как-нибудь сделать ей замену, уж больно глючна...
    Последний раз редактировалось Improver; 14.04.2020 в 17:09. Причина: Уточнение

    Эти 3 пользователя(ей) поблагодарили Improver за это полезное сообщение:

    electroscat(08.04.2020), ivagor(07.04.2020), Syntal(06.04.2020)

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

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

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

Похожие темы

  1. Ответов: 213
    Последнее: 13.06.2022, 14:02
  2. Ответов: 4
    Последнее: 20.08.2007, 16:14
  3. Организация plug-in'нной системы
    от CityAceE в разделе Программирование
    Ответов: 9
    Последнее: 20.09.2005, 12:45
  4. Описание системы команд - давайте централизуем ;)
    от Alex/AT в разделе Программирование
    Ответов: 42
    Последнее: 09.07.2005, 22:34
  5. Инициализация системы
    от breeze в разделе Программирование
    Ответов: 13
    Последнее: 24.03.2005, 10:03

Ваши права

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