Вопросик к знатокам ISA PNP

Уважаемые господа!

У меня непонятки с таким вот кодом работы с механизмом PNP (получен из бут-блока AMI BIOS-а мат. платы Zida TX100 в процессе дизассемблирования и изучения этого биоса):

:0001.F5B8 DW 03F0, 03F1
:0001.F5BC DB 86, 61, 55, 55
:0001.F5C0 DB 86, 61, 55, AA
:0001.F5C4 DB 86, 61, AA, 55

; *** ISA PNP initiation key ***

:0001.F5C8 DB 6A, B5, DA, ED, F6, FB, 7D, BE, DF, 6F, 37, 1B, 0D, 86, C3, 61
:0001.F5D8 DB B0, 58, 2C, 16, 8B, 45, A2, D1, E8, 74, 3A, 9D, CE, E7, 73, 39

; *** подпрограмма настройки ISA PNP ***

:0001:F5E8 8BCA                   mov cx, dx		;
:0001.F5EA 66C1E110               shl ecx, 10		; "прячем"
:0001.F5EE 66C1E010               shl eax, 10		; ax, bx и сх
:0001.F5F2 66C1E310               shl ebx, 10		; в верхних "половинах"
:0001.F5F6 33DB                   xor bx, bx		; соотв. 32-разрядных р-в

:0001.F5F8 2E813EB8F5F003         cmp word ptr cs:[F5B8], 03F0	;
:0001.F5FF 740F                   je F610			;
:0001.F601 83C304                 add bx, 0004			;
:0001.F604 2E813EB8F5BD03         cmp word ptr cs:[F5B8], 03BD	;
:0001.F60B 7403                   je F610			;
:0001.F60D 83C304                 add bx, 0004		;
:0001.F610 BA7902                 mov dx, 0279		;
:0001.F613 B90400                 mov cx, 0004		;

:0001.F616 2E8A87BCF5             mov al , cs:[bx+F5BC]	;
:0001.F61B EE                     out dx, al			;
:0001.F61C 43                     inc bx			;
:0001.F61D E2F7                   loop F616			;

:0001.F61F 2E8B16B8F5             mov dx, cs:[F5B8]	; активация режима
:0001.F624 33DB                   xor bx, bx		; настройки ISA PNP
:0001.F626 B92000                 mov cx, 0020	;
:0001.F629 2E8A87C8F5             mov al , cs:[bx+F5C8]; (загрузка ISA PNP
:0001.F62E EE                     out dx, al		; initiation key).
:0001.F62F 43                     inc bx		;
:0001.F630 E2F7                   loop F629		;

:0001.F632 66C1EB10               shr ebx, 10		; 
:0001.F636 B007                   mov al, 07		;
:0001.F638 EE                     out dx, al		; записываем 7 в [F5B8]
:0001.F639 42                     inc dx		; 
:0001.F63A 8AC3                   mov al , bl 		; записываем bl в [F5B8]+1
:0001.F63C EE                     out dx, al		;
:0001.F63D 4A                     dec dx		;
:0001.F63E 66C1E810               shr eax, 10		; записываем al в [F5B8]
:0001.F642 EE                     out dx, al		;
:0001.F643 42                     inc dx		; записываем ah в [F5B8]+1
:0001.F644 86E0                   xchg al , ah		;
:0001.F646 EE                     out dx, al		;
:0001.F647 4A                     dec dx		;
:0001.F648 B002                   mov al, 02		; записываем 02 в [F5B8]
:0001.F64A EE                     out dx, al		;
:0001.F64B 42                     inc dx		;
:0001.F64C EB00                   jmp F64E		;

:0001.F64E EE                     out dx, al	;  записываем 02 в [F5B8]+1
:0001.F64F 66C1E910              shr ecx, 10	;
:0001.F653 8BD1                   mov dx, cx	; dx=cx
:0001.F655 FFE7                   jmp di	; возврат

Непонятки следующие:

1. Почему initiation key посылается не в адресный PNP-порт 279, как указано в спецификации ISA PNP, а в другой (в данном случае - порт 3F0)? И что это за порты - 3F0, 3F1?

2. Что-за 4-байтная последовательность (86, 61, 55, 55 с вариациями :) )
пишется в адресный PNP порт 279 перед загрузкой initiation key в порт 3F0)?

Заранее большое спасибо за любую помощь.

P.S. Подправил код

Аватар пользователя savely

3F0h-3F7h - порты первого флопповода. Т.е. это что-то флопу (его контроллеру) говорят, а не контроллеру ISA PnP. По смыслу похоже - бут-блоку-то надо только FDC.
Еще - стоит глянуть предысторию записи в 279. Там должна быть какая-то типа выборка конкретного ISA PNP-устройства, как мне кажется.

А спецификацию поищу, вроде была. А читал я ее ну очень давно... Может, ты ее неправильно понял?

Так, едем дальше

Цитата:
When a Plug and Play card detects this signal it enters the Wait for Key state

Т.е. ключа все же ждет карта, ага? Читаю дальше...

А кому счас легко...

3F0h - по всем статьям флопик; вот только зачем туда BIOS initialisation key грузит? А в "настоящий" PNP Address Port 279 грузит непонятно что? :)

Предыстория - запись в порты 4D0-4D1 значений 00. До этого (у меня п.1 и п.2) - начальная настройка северного и южного мостов.

; *** 3. настройка прерываний EISA ***

:0001.E752 BAD004                 mov dx, 04D0	;
:0001.E755 B000                   mov al, 00	;
:0001.E757 EE                     out dx, al	;
:0001.E758 42                     inc dx	;
:0001.E759 EE                     out dx, al	;
:0001.E75A E9AD07                 jmp EF0A	;

...

:0001.EF0A B305                   mov bl, 05	;
:0001.EF0C B86602                 mov ax, 0266	;
:0001.EF0F BF15EF                 mov di, EF15	; вызываем подпрограмму F5E8 
:0001.EF12 E9D306                 jmp F5E8	; di - адрес возврата (EF15)

:0001.EF15 B305                   mov bl, 05	;
:0001.EF17 B86798                 mov ax, 9867	;
:0001.EF1A BF20EF                 mov di, EF20	;
:0001.EF1D E9C806                 jmp F5E8	;
:0001.EF20 E93AF8                 jmp E75D	;

Если хотите, могу Вам послать весь "недоокультуренный" листинг бут-блока (правда, он еще не разобранный до конца и поэтому местами страшный - в смысле, некоторые данные представлены как код).

---
С уважением,
Андрей aka Angel07

Аватар пользователя savely

Нда, все ж выходит, что ключ пишется в ADDRESS-порт. И до записи ключа вообще там нефиг делать - пошлет...
Кстати, а там в cs:[F5B8] до этого никто ничего не писал?

Счас полезу в Романовские примеры, посмотрим.

А кому счас легко...

Цитата:
Кстати, а там в cs:[F5B8] до этого никто ничего не писал?

До этого не упоминается... К тому же, считанное оттуда значение сравнивается с 3F0 и 3BD...

(К слову - в этом биосе вообще многое "не как у людей" - при отсутствии памяти "затыкается" без единого писка, при несовпадении чексумов - тоже, но там хоть POST в порт 80 выдает... Такое впечатление, что его (этот бивис) делали по пятницам во второй половине дня :) )

---
С уважением,
Андрей aka Angel07

Аватар пользователя savely

Угу, код нашел, у Романа комментариев там нет. Кстати, учти - самый первый кусок (из первого постинга) вызывается из 10 (sic!) мест... Я бы не назвал его "инициализацией"... У Романа он скромно называется "some_ports" lol

А вот в память cs:[F5B8] не видно записи... А key - Key и есть, с мануала списан...
Кстати, вот такой вот текст

F000:F3B5 aIt8661fBblockI db 'IT8661F BBlock Index/Data Port',0
F000:F3D4                 db 0F0h ; ?
F000:F3D5                 db 0F3h ; ?
F000:F3D6                 db    3
F000:F3D7 aIndexPort      db 'Index Port',0
F000:F3E2 aDataPort       db 'Data Port',0
F000:F3EC word_0_F3EC     dw 3F0h                 
F000:F3EE                 dw   3F1h
F000:F3F0                 db 86h, 61h, 55h, 55h
F000:F3F4                 db 86h, 61h, 55h, 0AAh
F000:F3F8                 db 86h, 61h, 0AAh, 55h
и т.д.

Не наводит ли на мысли почитать даташит на IT8661F?

А кому счас легко...

Цитата:

Не наводит ли на мысли почитать даташит на IT8661F?

Наводит. Сейчас поищу даташит.

Цитата:

Кстати, учти - самый первый кусок (из первого постинга) вызывается из 10 (sic!) мест... Я бы не назвал его "инициализацией"...

Я этот кусок и не называю инициализацией. Я его (условно) пока назвал "настройкой ISA PnP". Действительно, до этого куска идет куча подпрограмм, вызывающих его с разными параметрами. Инициализацией я называю кусок из второго поста, вызывающий кусок из первого :)

Добавлено спустя 32 минуты 47 секунд:

Огромное Вам спасибо, теперь все понятно! :) :) :)

Даташит нашел:
digchip.com/datasheets/parts/datasheet/226/IT8661F.php


(нужна free registration)

Вкратце - эта микруха может работать в нескольких режимах: "стандартном" ISA PnP Mode (по этому поводу авторы даташита ссылаются как раз-таки на ISA PNP specification v 1.0a :) ) и каком-то еще MB PnP Mode - с другим "раскладом" регистров, их адресами и функциями. И это как раз-таки тот режим, который использует "мой" биос!

P.S. Как я мог проглядеть указанную Вами plaintext-овую строчку, ведь я его (этот биос) "тыкал" в hiew уже месяц или больше!?... :)

---
С уважением,
Андрей aka Angel07

Аватар пользователя savely

Цитата:
Огромное Вам спасибо

Дык, пожалуйста. И я - "ты" на будущее lol

Цитата:
ведь я его (этот биос) "тыкал" в hiew

Нехорошо, конечно, но укради (скачай в муле у китайцев) IDA. HIEW хорош, если по-быстрому глянуть, попатчить и т.п. (я им Runtime 200 тот же патчу, иногда встречается). А если надо долго копаться в коде - IDA. Правильную раскладку BIOS по сегментам у Романа личкой спроси - мне она не особо нужна, мне бывает нужна логика отдельных кусков - там до лампы сегмент, как правило.
Как пример, тут пробегали ссылочки (я их поиском "вспомнил")
rom.by/biosedit/examples/ami.rar

rom.by/biosedit/examples/7VAX12_E.rar
Нужна IDA, ессно.

А кому счас легко...

Попробую найти IDA в е-муле :) Спасибо за наводку. Тем более, что без него
я не могу открыть первую приведенную Вами ссылку (там, как я понял,
дизассемблированный Романом биос - тот самый, с которым
я сейчас мучаюсь, усердно и настойчиво изобретая велосипед).
У нас по фирмам IDA Pro спрашивал - нет. В такие дебри ребята не лезут. :)
К слову - на всех фирмах города ни одной POST-карты.

В настоящее время я пользуюсь
6-й HIEW, когда надо что-то просто глянуть и по мелочи исправить,
или W32DASM, если нужно сохранить и обработать код (он нормально
берет и "не exe-шные" модули, позволяет дизассемблировать
как 32-, так и 16-разрядные команды). НО: сгенерированный
им листинг приходится обрабатывать в обычном текстовом
редакторе, что очень неудобно (нельзя, скажем, перейти по ссылке),
отнимает время и силы, которых и так мало. К тому же, не понимает ряд команд,
такие как mov cr0, eax.

---
С уважением,
Андрей aka Angel07

Аватар пользователя Семен Сатановский

Господа, может это вопрос, а может и справка, я не знаю еще качество программы,
в смысле коррекности взлома.
Пару лет назад я купил на книжном рынке с лотка CD с разными языками программирования в том числе и ассемблерами, там есть IDA Pro 4.04 со взломом
от какой то группы кракеров "Shock", на днях поставил, чтобы убедиться в работоспособности (условно конечно, я не программист, и пользоваться этим
инструментом еще не умею). Поставил, работает, в папке установки присутствует
некий ключ, при запуске выводится окошко, к котором в том числе фигурирует
фраза о том, что данная копия принадлежит некому забугорному Васе Пупкину.
Файлы открывает в виде символьного кода. Дальше я увы не продвинулся, но
вроде работает, пока :D
Данный CD стоил 70 рублей. "Вес" IDA около 19Мбайт, может проще поискать
подобный компакт диск, чем тянуть эти 19 метров из интернета :|
И еще, книга К.Касперского "Образ мышления IDA" посвящена версии этой
программы 4.01, т.е близко. Книга существует и в электронной версии, ищется
в поисковике, 5 или 6 ссылка, и ключик Ваш :D , причем электронная версия
создана по "просьбе трудящихся", т.е. никакого хулиганства :)

To savely_s
Ты приводишь две ссылки rom.by/biosedit/examples/ami.rar и
rom.by/biosedit/examples/7VAX12_E.rar , а как бы посмотреть, что
там еще есть, а то посылает меня сервер, однако, типа

Цитата:
403 Forbidden

You're not allowed to access this page АбЫднА пАнЫмаешь:D

Аватар пользователя savely

Цитата:
а как бы посмотреть, что там еще есть, а то посылает меня сервер, однако

Так и меня посылает... :) Не ко мне вопрос. Эти ссылки были в форуме, я просто перепостил.

Цитата:
качество программы, в смысле коррекности взлома.

Ну, она работает. Пугают, что в базе сохраняются некие "watermark", по которым как минимум можно узнать, на кого была зарегана та копия, которой создана база. Не знаю - правда или нет. Но для этого база должна для чего-то коммерческого юзаться и попасть в соотв. руки...

Что-то мы того, не туда, кажись...

А кому счас легко...

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей