Важная информация

User Tag List

Страница 4 из 4 ПерваяПервая 1234
Показано с 31 по 38 из 38

Тема: Перемещение головки дисковода

  1. #31
    Activist
    Регистрация
    20.02.2008
    Адрес
    Siauliai, Lithuania
    Сообщений
    367
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Про те конкретные процедуры не смотрел, но скажу общий принцип. Код TR-DOS работает с контроллером относительно медленно, поэтому почти любая замена ему, написанная не криво, работает быстрее. Отсюда и "турбо". У меня есть свой драйвер диска "radisk" с процедурами чтения, записи и форматирования, который я изначально разработал для программы восстановления дисков "RAWR Restore", а потом использовал в других своих прогах. Могу выложить исходник, если кому-нибудь интересно.
    Да интересно!

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,057
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот драйвер. Последняя версия.

    Ассемблирование: ассемблер M80 под CP/M

    Использование:

    Константы:

    FORTABL - адрес размещения таблицы форматирования. Таблица занимает около 6400 байт (уточняйте по исходнику). Необходима для форматирования дорожек, содержит образ дорожки со всеми служебными полями и пропусками.

    CP_M - доступ к портам контроллера напрямую (когда CP_M=1) или через точки входа TR-DOS (CP_M=0). Для отладки я использовал значение 1, при выпуске программ - значение 0.

    Точки входа:
    INIALL - инициализация дисковода. Вызывать один раз при первом использовании данного дисковода. Выполняет сброс контроллера ВГ93, запускает мотор дисковода и переводит головку на дорожку 0. Только что посмотрел: данная функция выполняет сброс контроллера дважды (баг), так что рекомендуется исправить.

    DRIVE - выбор дисковода. Вход: регистр A - номер дисковода (0-3).

    READGR - чтение группы секторов. Вход: HL - адрес в памяти, куда читать; D - номер дорожки начала чтения (0-159), E - номер сектора начала чтения (00-FF); B - количество секторов (00-FF); при B=0 читается 256 секторов.

    Выход: переменная ERR_CO содержит код ошибки. 0 - нет ошибки, 1 - no disk, 2 - Write protect, 3 - Break key pressed, 4 - Data error (SNF/CRC)

    READGR корректно обрабатывает ситуацию нестандартной длины секторов. При заданном количестве секторов =1 может быть прочитан сектор любого размера с дорожки нестандартного формата, при этом в HL будет адрес, следующий за последним считанным байтом. Если количество секторов (B) больше одного, то программа считает, что на одной дорожке 16 секторов. Поэтому множественное считывание дорожек с нестандартным форматом в некоторой степени неполноценно.

    WRITGR - запись группы секторов. Входы и выходы аналогичны READGR.

    BUILD - подготовка таблицы форматирования. Вход: IX - адрес таблицы требуемого формата (номера и размеры секторов - забыл точно, надо смотреть исходники RRESTORE);

    FORM_TRK - форматирование дорожки. A - номер дорожки (0-159).

    Подход, который я реализовал в FORM_TRK и BUILD, позволяет форматировать диск с повышенной скоростью. Большинство программ (таких как ADS) при форматировании каждой дорожки строят в памяти образ дорожки, которая имеет размер более 6кБ. На это уходит процессорное время, за которое диск проходит индексную метку. Приходится ждать еще один оборот диска, прежде чем начнется форматирование. Мой же драйвер сначала, перед форматированием всего диска, подготавливает образ дорожки (BUILD), а потом, для каждой дорожки, лишь модифицирует его (FORM_TRK). Подготовка образа дорожки таким образом завершается до прохода индексного отверстия диска, что сберегает один оборот диска при форматировании и повышает скорость форматирования/восстановления.

    RETRY и IGNORE - подпрограммы, которые вызываются в случае завершения READGR или WRITGR с ошибками. Изначально предполагалось, что вызов этих подпрограмм продолжит прерванную процедуру чтения/записи (RETRY) или пропустит сектор и потом продолжит (IGNORE). На практике я никогда не пользовался этими функциями; возможно, они содержат баги. Тем, кто будет творчески перерабатывать мой драйвер, рекомендую выкинуть оттуда процедуры RETRY, IGNORE и логику, связанную с их поддержкой. Это оказалось некрасивым архитектурным решением.

    Вот такие дела.
    Вложения Вложения

  4. #33
    Member
    Регистрация
    21.03.2005
    Адрес
    Старый Оскол
    Сообщений
    194
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    под CP/M Profi обходился без библиотек, напрямую. ничего сложного там нет!
    WBR, Doctor Max^GLOBAL Corp.
    [www.globalcorp.org.ru]

  5. #34
    Veteran Аватар для John North
    Регистрация
    22.09.2006
    Адрес
    Ижевск
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Doctor Max, ну покажи какой нить готовый продукт..
    Хороший.. Плохой.. Главное - у кого ружьё !!

  6. #35
    Member
    Регистрация
    21.03.2005
    Адрес
    Старый Оскол
    Сообщений
    194
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    John North, их много есть.. ищите и обрящете... спросите у Syaman к примеру
    WBR, Doctor Max^GLOBAL Corp.
    [www.globalcorp.org.ru]

  7. #36
    Veteran Аватар для John North
    Регистрация
    22.09.2006
    Адрес
    Ижевск
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Doctor Max, а у самого нет что ли под рукой?
    Хороший.. Плохой.. Главное - у кого ружьё !!

  8. #37
    Member
    Регистрация
    21.03.2005
    Адрес
    Старый Оскол
    Сообщений
    194
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    нет, нету... к сожалению. а ёрничание про готовый продукт не к месту совершенно!
    WBR, Doctor Max^GLOBAL Corp.
    [www.globalcorp.org.ru]

  9. #38
    Veteran Аватар для John North
    Регистрация
    22.09.2006
    Адрес
    Ижевск
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Doctor Max, это не «ёрничание» вообще то.. А просьба)
    Хороший.. Плохой.. Главное - у кого ружьё !!

Страница 4 из 4 ПерваяПервая 1234

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

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

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

Похожие темы

  1. Контроллер дисковода
    от andrew76 в разделе Внешние накопители
    Ответов: 55
    Последнее: 12.04.2024, 16:33
  2. Эмулятор дисковода - ?
    от Sonic в разделе Внешние накопители
    Ответов: 32
    Последнее: 17.11.2006, 15:16
  3. Распиновка дисковода
    от Dut_Norshi в разделе Разный софт
    Ответов: 4
    Последнее: 07.06.2006, 03:38

Ваши права

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