|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Насколько полно и подробно нужно реверсить биос? Т.е. просто обозначить процедуры и основные куски или же с указанием всех локаций в CMOS/BDA/etc? Или нужно найти конкретный участок?
Если нужно макс. полно - нужна схема, иначе, например, непонятно что такое порт 3DF (в смысле - где он в железе и что происходит при записи в него).
|
18 May 2016 02:12 |
|
|
palsw
Novelist
Joined: 16 Dec 2014 13:52 Posts: 45 Location: Украина-Измаил
|
если бы я понимал хоть половину что тут написано -мне нужно после сброса процессора проследить что он выдает на шину адресса и данных и управление,что он читает из ПЗУ при старте - там в пзу идет инициальизация устройств и проверка озу. http://zx-pk.ru/threads/24663-pomogite- ... post829507эта вся информация что есть, вроде как обычна XT машина
|
18 May 2016 02:22 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
После "длинного цикла" там идет обмен со CMOS (порты 70h, 71h). Она есть? Жива? Батарея в норме? Если "длинный цикл" выполняется, значит с процом/биосом и шинами между ними все в порядке. В процессе обмена со CMOS есть одно чтение ОЗУ (физ. адрес 00472h), читает слово. Происходит это чтение в реале или нет? После теста CMOS сразу идут обращения к DMA:
|
18 May 2016 02:31 |
|
|
palsw
Novelist
Joined: 16 Dec 2014 13:52 Posts: 45 Location: Украина-Измаил
|
на сколько помню - сам удивлялся почему на вт37,вн59,вв55,ви53 - везде cs- в 1 ,а кмос по схеме сидит идет через инвертор на PG бп . PG -проверял сразу +5в - и через инвертор 0. Проверю еще раз обвязку CMOS и гляну осцилом что твориться . физическое ОЗУ на ру7 ??? или ОЗУ в CMOSe ? до проверки озу и инициальзации ВИ53 и вт37 не будет регенарации РУ7 и врядли они смогут что то хранить.
|
18 May 2016 02:49 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Не понял нифига PowerGood что ли? Ну вполне, это девайс мамки, имеет право. ОЗУ - оно одно. Разумеется на РУ7 или на чем оно там. Что касается регена - это не мешает его читать. В данном случае читается флаг warm boot. Т.е. некая софтина пишет туда 1234h, после чего выполняет jmp far 0FFFFh:0FFF0h, т.е. имитирует ребут. При этом DMA продолжает регенерацию (т.к. ее никто не отменял). Обычно используется при обработке ctrl+alt+del, т.е. биос знает, что его ребутнули клавой, а не питанием.
|
18 May 2016 02:59 |
|
|
palsw
Novelist
Joined: 16 Dec 2014 13:52 Posts: 45 Location: Украина-Измаил
|
dma и не начинало регенарацию так как CS устройства не выбран! в z состоянии выходы dma. на озу есть активность -чтение-запись. по поводу ВИ1 часов -у нее cs -после включения всегда выбран.Сейчас проверю что там с чтение записью.
|
18 May 2016 03:10 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Так в вашем случае и не должно быть, холодный ребут ведь! Я ж про флаг warm boot, т.е. когда dma УЖЕ проинициализировано при холодной загрузке. Но так или иначе читать память это все не мешает - другое дело, что прочитается мусор.
Last edited by Vic3Dexe on 18 May 2016 03:57, edited 1 time in total.
|
18 May 2016 03:28 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну там идея какая - смотря где хочешь затормозиться. По ссылке человеку надо было затормозиться на обращение к ПЗУ. А тебе может удобней тормозиться на порты а не на каждый такт 3. Вобщем - каким-то сигналом выставить RDY, а кнопкой его отпустить.
_________________ iLavr
|
18 May 2016 03:57 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Вот совсем не понял, это как? Вот участок кода сразу после jmp far, стрелками показал обращения к портам | | | | Code: seg000:E05B cli seg000:E05C mov bx, 0C800h seg000:E05F mov ds, bx seg000:E061 assume ds:nothing seg000:E061 xor bx, bx seg000:E063 mov bx, [bx] seg000:E065 cmp bx, 4321h seg000:E069 jnz short @1 seg000:E06B jmp far ptr 0C800h:2 ; init addon card seg000:E070 ; --------------------------------------------------------------------------- seg000:E070 seg000:E070 @1: ; CODE XREF: start+Ej seg000:E070 mov dx, 3DFh seg000:E073 xor al, al seg000:E075 out dx, al ; <==================== seg000:E076 mov dx, 3D8h seg000:E079 out dx, al ; <==================== CGA seg000:E07A mov dl, 0FFh seg000:E07C mov cx, 100h seg000:E07F <=============================================== здесь начинается "длинный цикл" seg000:E07F @2: ; CODE XREF: start+2Ej seg000:E07F out 0E0h, al seg000:E081 xchg al, dl seg000:E083 out 0F0h, al ; AT 80287 latch clear. seg000:E083 ; 'Busy' gets latched upon an unmasked 287 error. seg000:E085 xchg al, dl seg000:E087 inc al seg000:E089 loop @2
| | | | |
То есть либо обращения к портам таки идут, но вы их смотрите не там, либо "длинный цикл" не там и проц выполняет вообще непонятно что...
|
18 May 2016 04:05 |
|
|
palsw
Novelist
Joined: 16 Dec 2014 13:52 Posts: 45 Location: Украина-Измаил
|
эти 2 цитаты я взял с другого форума - сам еще только подключаю шаговый режим и смотрю осцилографом на ви1
|
18 May 2016 04:14 |
|
|
palsw
Novelist
Joined: 16 Dec 2014 13:52 Posts: 45 Location: Украина-Измаил
|
вот написал,что аж смешно. 1.На моей плате есть обращение к ПЗУ .на процессоре есть сигнал чтения и записи памяти. к внешним устройствам и портам нет обращения .
|
18 May 2016 07:12 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну из этих соображений ясно только одно: либо неисправен процессор, либо он не делает то, что написано в ПЗУ. Поэтому я и дал ссылку, где в пошаговом режиме выполняется код NOP - выставленный на шине данных резисторами безо всякой ПЗУ. Я и предложил начать с этого теста: вынимаем из панельки ПЗУ, резисторам по ШД в панельке выставляем код NOP. И в пошаговом режиме смотрим: проц обратился к "ПЗУ" и завис по RDY. Тыкаем по всем шинам данных и адреса - правильно ли проходит адрес и код NOP. Отпускаем RDY - смотрим всё на следующем шаге - адрес на 1 больше и т.д. А дизассемблировать БИОС - на мой взгляд так с ходу не поможет, я считаю. Процесор явно делает что-то не то, что записано в БИОС, если, конечно, там записано то, что надо...
_________________ iLavr
|
18 May 2016 12:55 |
|
|
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Реверсить биос вообще бессмысленно. Ибо абсолютно непонятно что работает, а что "с другого форума". Топикстартер, без обид, но как-то... поответственней что ли к вопросу подходи. Люди на тебя свое личное время тратят как бы... jmp far по FFFF0h выполняется? Если нет, то: - перешить биос на что-то типа набора nop-ов (как уже советовали, но я бы рекомедовал jmp $, т.е. EB FE) и посмотреть на результат. Если без изменений (т.е. нопы/джампы не выполняются) - заменить проц/биос/искать проблемы в дорогах на матери. Если да (и если приложеный бинарник верный, и биос не битый), то я бы искал того, кто сидит по C8000h. Ибо это единственное, что стоит между jmp far и обращением к портам. Хосспади, я бы не додумался (я в хорошем смысле)
|
18 May 2016 14:44 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да это трюк довольно известый... вот пример для 6502: Не очень аккуратно... но тем не менее: Да и на нашем форуме это всё разжевали давно уже... http://www.nedopc.org/forum/viewtopic.php?p=116673#p116673В пошаговом режиме, когда проц завис по RDY, ему можно резисторами в панельке практически любой подходящий код задать... Но лучше начать всё же с NOP, я думаю, некоторая определенность теста есть... P.S. Хотя сам я делаю этот трюк не так: в каждую нужную дырку ШД - втыкаю резистор, а торчащие вверх выводы - одним проводочком - к +5В панельки, другие - проводком к 0.
_________________ iLavr
|
18 May 2016 16:27 |
|
|
VGrad
Maniac
Joined: 18 Nov 2013 15:15 Posts: 209 Location: все оттуда ;)
|
| | | | Vic3Dexe wrote: Вот совсем не понял, это как? Вот участок кода сразу после jmp far, стрелками показал обращения к портам | | | | Code: seg000:E05B cli seg000:E05C mov bx, 0C800h seg000:E05F mov ds, bx seg000:E061 assume ds:nothing seg000:E061 xor bx, bx seg000:E063 mov bx, [bx] seg000:E065 cmp bx, 4321h seg000:E069 jnz short @1 seg000:E06B jmp far ptr 0C800h:2 ; init addon card seg000:E070 ; --------------------------------------------------------------------------- seg000:E070 seg000:E070 @1: ; CODE XREF: start+Ej seg000:E070 mov dx, 3DFh seg000:E073 xor al, al seg000:E075 out dx, al ; <==================== seg000:E076 mov dx, 3D8h seg000:E079 out dx, al ; <==================== CGA seg000:E07A mov dl, 0FFh seg000:E07C mov cx, 100h seg000:E07F <=============================================== здесь начинается "длинный цикл" seg000:E07F @2: ; CODE XREF: start+2Ej seg000:E07F out 0E0h, al seg000:E081 xchg al, dl seg000:E083 out 0F0h, al ; AT 80287 latch clear. seg000:E083 ; 'Busy' gets latched upon an unmasked 287 error. seg000:E085 xchg al, dl seg000:E087 inc al seg000:E089 loop @2
| | | | |
То есть либо обращения к портам таки идут, но вы их смотрите не там, либо "длинный цикл" не там и проц выполняет вообще непонятно что... | | | | |
В исходниках BIOS написано: А далее идёт страшная вещь , которую сделали для обращения к 2 MB RAM и хитрой к ней адресации
|
18 May 2016 17:42 |
|
|
Who is online |
Users browsing this forum: No registered users and 7 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|