В исходниках visopsys я обнаружил, что проверить не сменилась ли дискета можно с помощью опроса 7 бита порта 0x3F7 (бит 1 - дискета сменилась, 0 - не сменилась), что сделать намного проще чем проверить метку диска. Правда ли это? Если да, то когда сбрасывается этот бит - при перекалибровке или при сбросе контроллера дисковвода?
Правильно ли я понимаю, что лоток cdrom'a открывается только по сигналу ОС (или с согласия ОС), а не сам по себе, не уведомляя (возможно только в случае если диск остановлен) ОС о случившемся?
Не хочется допускать ситуации, когда ОС продолжает дописывать файл... уже на другую дискету...
Floppy
halyavin
Согласно Кулакову:
"Регистр цифрового ввода (Digital Input Register, сокращенно DIR), расположенный по адресу 3F7h, доступен только для считывания. Старший разряд этого регистра отображает состояние сигнала смены диска, а остальные зарезервированы".
Из этого объяснения нихрена не понятно, ведь это может означать и просто признак наличия дискеты. А вообще то проверять только лишь наличие дискеты неправильно. Так как может быть, что пользователь вынул и вставил ту же самую дискету. Тогда какой смысл обновлять все данные ФАТ, которые в кеше.
Когда изменяется этот бит тоже не понятно, так как нету подробного описания. Кулаков у себя, его не использует.
По этому же адресу располагается и регистр управления конфигурацией, который доступен только на запись. В нем задается скорость передачи данных.
Я при реализации драйвера сделал процедуру, контролирующую устаревание данных. Как только двигатель остановлен, происходит сброс флагов, которые индицируют правильность данных ФАТ в кеше.
Лоток CD открывается и закрывается в 2-х случаях:
1) Пользователь нажал кнопку.
2) Драйвер подал ATAPI команду.
Дописывать файл на другую дискету драйвер уже не будет, произойдет аварийное завершение операции. Смотри код там после каждой команды проверка стоит. А пока ты вынимаешь и вставляешь дискету, обязательно произойдет ошибка.
Согласно Кулакову:
"Регистр цифрового ввода (Digital Input Register, сокращенно DIR), расположенный по адресу 3F7h, доступен только для считывания. Старший разряд этого регистра отображает состояние сигнала смены диска, а остальные зарезервированы".
Из этого объяснения нихрена не понятно, ведь это может означать и просто признак наличия дискеты. А вообще то проверять только лишь наличие дискеты неправильно. Так как может быть, что пользователь вынул и вставил ту же самую дискету. Тогда какой смысл обновлять все данные ФАТ, которые в кеше.
Когда изменяется этот бит тоже не понятно, так как нету подробного описания. Кулаков у себя, его не использует.
По этому же адресу располагается и регистр управления конфигурацией, который доступен только на запись. В нем задается скорость передачи данных.
Я при реализации драйвера сделал процедуру, контролирующую устаревание данных. Как только двигатель остановлен, происходит сброс флагов, которые индицируют правильность данных ФАТ в кеше.
Лоток CD открывается и закрывается в 2-х случаях:
1) Пользователь нажал кнопку.
2) Драйвер подал ATAPI команду.
Дописывать файл на другую дискету драйвер уже не будет, произойдет аварийное завершение операции. Смотри код там после каждой команды проверка стоит. А пока ты вынимаешь и вставляешь дискету, обязательно произойдет ошибка.
Who is online
Users browsing this forum: No registered users and 0 guests