Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Непонятки с флоппиком

491
24 февраля 2004 года
SerGo
30 / / 20.12.1999
Пытаюсь из защищенного режима включить мотор мастера, засылаю в DOR (порт 0x3fd) код 0x1c, мотор не включается, но генерируется прерывание от флоппика, в котором я читаю его статус MSR = 0x80.

Что я не так делаю? Или дело в VMWare?
1.9K
24 февраля 2004 года
DRVTiny
115 / / 13.12.2003
Цитата:
Originally posted by SerGo
Пытаюсь из защищенного режима включить мотор мастера, засылаю в DOR (порт 0x3fd) код 0x1c, мотор не включается, но генерируется прерывание от флоппика, в котором я читаю его статус MSR = 0x80.

Что я не так делаю? Или дело в VMWare?


В реальном режиме нормально работает? У меня из-под RM проблем с флоппиком не было (я пока ещё не переписал дрова флопика для Protect'а), хотя я тоже написание и отладку веду под VMWare

1.8K
06 марта 2004 года
Sanya DLR
123 / / 03.03.2004
Цитата:
Originally posted by SerGo
Пытаюсь из защищенного режима включить мотор мастера, засылаю в DOR (порт 0x3fd) код 0x1c, мотор не включается, но генерируется прерывание от флоппика, в котором я читаю его статус MSR = 0x80.

Что я не так делаю? Или дело в VMWare?


Может надо 3F2h? Я слышал только про такой DOR. А 3FDh - это вроде про последовательный порт.
mov dx,3f2h
mov al,1ch
out dx,al
И мотор включается. В защищенном режиме. IRQ6 вроде не сгенерировался.
mov dx,3f2h
mov al,0ch
out dx,al
И мотор выключается. IRQ6 вроде опять нет.

Main Status Register:
Бит 7(старший): если=1 - контроллер готов к обмену (приему/передаче следующего байта команды/данных/результата)
Бит 6: направление обмена - из контроллера (если 0, то в контроллер)
Бит 5: режим без использования прямого доступа к памяти (0 - использовать DMA)
Бит 4: контроллер занят (пишет/читает)
Бит 3: накопитель 4 в режиме поиска (это вроде для XT)
Бит 2: накопитель 3 в режиме поиска (это вроде для XT)
Бит 1: накопитель 2 в режиме поиска
Бит 0: накопитель 1 в режиме поиска

P.S. А что такое VMWare?

Нашел кое какие описания на http://www.bbs.motion-bg.com/index.php?dir=37
В том числе и про порты.
Правда там могут возникнуть некоторые языковые барьеры при чтении...

1.8K
07 марта 2004 года
Sanya DLR
123 / / 03.03.2004
Помогите разобраться!
Ситуация такая:
Хочу прочитать сектор с дискеты. Запрещаю прерывания. Говорю контроллеру дисковода, чтобы DMA не использовал. Включаю мотор дисковода. Посылаю команду чтения данных (E6h) с нужными параметрами.
Вопрос: когда начинать чтение данных? Как контроллер скажет, что данные пошли? И как скажет, что операция выполнена?
Я в цикле проверяю состояние контроллера MSR (in al,3f4h). Состояние меняется так: сразу после окончания ввода команды MSR=10h, потом 50h, потом 70h. Если дискета не вставлена, то контроллер остается в таком состоянии пока я сам его не прерву. Если дискета вставлена, то MSR продолжает изменяться: -> F0h ->90h ->C0h. И опять ждет, пока я не отреагирую. А как его понять - то ли он данные предлагает взять, то ли уже ошибка из-за того, что я их своевременно не считал.
А если я ему говорю использовать DMA (но DMA не настраиваю, потому что еше не умею), то в аналогичной ситуации MSR меняется так: после команды чтения MSR=10h, через некоторое время 50h, потом (если дискета вставлена) C0h, 90h, C0h.
Я так понимаю, что если ошибок у меня в команде нет, то читать данные можно после какого-то из перечисленных состояний MSR.
Может кто-нибудь прокомментирует, что в данном случае означает каждое из них?

P.S. И можно ли судить о том, что дискета не вставлена в дисковод (или что ее достали во время чтения/записи), как нибудь иначе, нежели по слишком длительному ожиданию данных?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог