Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Как открыть лоток CD-ROM через INT 2f ?


Автор: Spirtoza 5.10.2002, 08:07
Как открыть лоток CD-ROM через INT 2f?

Автор: Chingachguk 6.10.2002, 06:42
Попробуй посмотреть interrupt list Ральфа Брауна.
Если не найдешь, пиши - я сам могу посмотреть ;)

Автор: Spirtoza 8.10.2002, 01:53
Цитата(Chingachguk @ 05.10.2002, 23:42)
Попробуй посмотреть interrupt list Ральфа Брауна.
Если не найдешь, пиши - я сам могу посмотреть ;)

Спасибо, я уже нашел API mscdex и все получилось. И я пришел к выводу, что такие вещи лучше делать непосредственно через порты. Но вот какой возник вопрос: как послать ATAPI пакет в порт? С жесткими дисками все и так ясно - там пишется байт. А с CD как же? Только не отсылайте меня к докам, лучше приведите конкретный пример типа:
mov dx,170
mov al,a0
out dx,al

[ ... ] чтобы лоток открывался. Комментировать необязательно.

Буду очень признателен за ответ.

Автор: Chingachguk 8.10.2002, 03:17
Смотри, ситуация такая: ни я, ни ты не знаем, какие команды подавать в порт. Более того, ты гораздо лучше разобрался, нашел апи и т.д. С другой стороны, мы знаем, что если вызвать ту апи, то где-то в недрах ДОС? WIN? - не важно, выполниться ПРАВИЛЬНЫЙ КОД. И надо его найти.
Как бы я поступил ? Трассировать тучи команд (даже в досе их дофига) - не катит. Нет, это тоже способ. Но я бы поставил бряк в СофтАйсе на доступ к порту и запустил бы эту апи:

bpio 170(десятичный, надо в хексе) ; Этот порт ?

И отладчик бы всплыл там, где произойдет обращение к этим портам. Более того, можно поставить несколько бряков на порты 170...170+??? - сколько там ? - и просто сидеть и записывать, что пишется/читается в порты эти.

Так я определял, кто и где лезет в порты из драйверов win, обращается ли винда к cmos  и т.п. Если хочешь, могу посмотреть твои порты, только апи мне скажи ;)

Автор: Spirtoza 9.10.2002, 08:52
Я только начинаю осваивать ASM и многих приемов не знаю. В частности,  про ваш метод я услышал впервые... Но ведь это то что мне нужно!!! Это ж клево, перехватывать обращение к портам! Про  СофтАйс я тоже ничего не знал, но как я понял, это крайне полезный инструмент... Мне еще много раз придется столкнуться с подобными задачами, и я научусь им пользоваться. Но... где его взять? Не могли ли вы прислать его на мыло [email protected] ? Буду очень благодарен!

170h - это командный порт secondary-IDE контроллера. Порты 171h-177h - порты обмена. В порт пишется ATA команда, взятая из спецификации ATA (www.t13.org). Например прога
mov dx,170h
mov al, e2h
out dx,al
останавливает шпиндель харда :-)

Код A0h как раз включает режим ATAPI - подготовка к приему пакета. Другие порты не используются.
А вот как сформировать этот самый пакет? У меня ничего не получается... (с хардами работает, а с сидюками - нет) - значит я что-то делаю не так.

Есть прога управления CD-ROM без драйверов, с исходником, написаная на СИ, но в ней ничего не понятно. Дизассемблирование еще больше запутывает... Есть описание API с использованием INT2f - могу прислать :-)
И еще много документации, если, что надо - подарю :)

Спасибо за помощь!

Автор: Chingachguk 9.10.2002, 20:37
Значит, так.

> Где скачать СофтАйс ?

Зайди на wasm.ru, посмотри раздел "Инструменты". Лично я работаю под 98-ой, и к ней есть нормальная версия. Под NT,Xp... я слышал, версии что-то не могут и что-то нужно доустанавливать. Есть также версия фюр дос, Но вот поддерживает ли она аппаратные точки останова (те бряки по доступу к портам) - я не знаю. В принципе, ты их сам можешь сделать - для этого нужно работать с регистрами DRx (386+) - и это совсем просто.

> Где получить инфу по обучению ?

Там же. Вроде бы есть уже статьи по изучению айса для начинающих. Плюс в этом форуме я уже с кем-то на эту тему говорил. Можно взять почти любую статью по исследованию защит программ - в них есть примеры работы с ним.

> Работа с дос-задачами.

Под виндами айс прекрасно видит код дос-задач, позволяет все то же самое, показывает символьные имена int'ов типа int 21h ...

Короче, пробуй ;)))

Твою апи, если сам к тому времени не разберешься, я, возможно, гляну на выходных. Достаточно поставить бряк на те порты и, к примеру, в любом виндовом прогрывателе выполнить команду "открыть лоток".

Автор: wawan 2.6.2008, 23:39
Spirtoza,  у тебя чтонибудь получилось с работой с CD-rom через порты ? 

я пытаюсь тоже прочитать диск посекторно, но чтото не выходит у меня каменный цветок пока...

поделись плз исходничком на любом языке
 smile 

Автор: MAKCim 3.6.2008, 08:57
жесть  smile 

Автор: W4FhLF 3.6.2008, 09:30
6 лет... кажется, это рекорд smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)