CD ROM через порты
Для работы с HDD я использовал проты 1F0-1F7, 170-177, все было хорошо пока не встал вопрос о работе с CD ROM. Через эти порты даже не определяются параметры cd-rom (функция 0EC) - просто возвращает ошибку (ABRT - аварийное прекращение выполнения команды).
Может с сидюком как то по особому надо работать? Подскажите пожалуйста!
P.S. Может подскажете какую нибудь литературу на эту тему?
http://t13.org/ Там искать документацию по ATAPI.
Кое-что на русском есть здесь http://www.bookcase.ru/p1/0197.html
Кое-что на русском есть здесь http://www.bookcase.ru/p1/0197.html
И работа с ними осуществляется иначе чем с HDD.
Можно почитать у Кулакова, у него неплохо работа с дисками описанна.
А вот выдвинуть лоток не могу почему то... Может перед началом работы с cd rom нужно какую-то инициализацию сделать?
- Вызываю команду ATAPI с номером 0 (иначе пишет что произведена смена носителя)
- вызываю команду 1b, подфункцию 2. Более подробно:
3.1) выбираю устройство master/slave
3.2) посылаю AT команду A0. (начало передачи ATAPI команды)
3.3) жду готовности устройства
3.4) отправляю ATAPI пакет 16 байт (именно 16, а не 12 как на старых сидюках)
3.5) ждём пока не сброситься флаг bsy
3.6) проверяем флаг - нужно ли передвавть данные: младшие 2 бита в порту 172h = 01
3.7) если там 00 - передаём данные в сидюк (в данном случае не надо)
3.8) если там 2 - принимаем данные из сиюдка (в данном случае тоже не нужно)
3.9) всё
Вроде все понятно кроме пункта 3.6: что это за состояние такое "01"? Почему не выдвигается лоток?
Народ! Может есть у кого ASM'овский исходник процедуры посылания команды в ATAPI CD ROM?