nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 15 Apr 2024 22:05



Reply to topic  [ 143 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 10  Next
Поиск-2 Ремонт 
Author Message
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Насколько полно и подробно нужно реверсить биос?
Т.е. просто обозначить процедуры и основные куски или же с указанием всех локаций в CMOS/BDA/etc?
Или нужно найти конкретный участок?

Если нужно макс. полно - нужна схема, иначе, например, непонятно что такое порт 3DF (в смысле - где он в железе и что происходит при записи в него).


18 May 2016 02:12
Profile
Novelist

Joined: 16 Dec 2014 13:52
Posts: 45
Location: Украина-Измаил
Reply with quote
Vic3Dexe wrote:
Насколько полно и подробно нужно реверсить биос?
Т.е. просто обозначить процедуры и основные куски или же с указанием всех локаций в CMOS/BDA/etc?
Или нужно найти конкретный участок?


если бы я понимал хоть половину что тут написано -мне нужно после сброса процессора проследить что он выдает на шину адресса и данных и управление,что он читает из ПЗУ при старте - там в пзу идет инициальизация устройств и проверка озу.
Quote:
Потом на процессоре проверяй, если у него есть тактирование и RESET, то проц должен после снятия RESET выдавать адрес FFFF:0h, по этому адресу должен быть низкий CS на ПЗУ. Соответственно, проверишь "базовую" работоспособность процессора и дешифратора адреса.


Quote:
добились старта из ПЗУ, выбирает первый jmp по адресу 0xFFFF0, правильно переходит, дальше там стоит длинный цикл, тоже выполняется правильно. На этом все - видеокарту не инициализирует, не пищит, на тест ОЗУ не переходит.


http://zx-pk.ru/threads/24663-pomogite- ... post829507

эта вся информация что есть, вроде как обычна XT машина


18 May 2016 02:22
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
После "длинного цикла" там идет обмен со CMOS (порты 70h, 71h). Она есть? Жива? Батарея в норме?

Если "длинный цикл" выполняется, значит с процом/биосом и шинами между ними все в порядке.

В процессе обмена со CMOS есть одно чтение ОЗУ (физ. адрес 00472h), читает слово. Происходит это чтение в реале или нет?

После теста CMOS сразу идут обращения к DMA:
Code:
sub     ax, ax
out     0A0h, al        ; <=== это вроде PIC-slave, он есть на плате? Если нет, надо понять, что это за порт
out     83h, al         ; DMA page register 74LS612:
out     0Dh, al         ; DMA controller, 8237A-5.


18 May 2016 02:31
Profile
Novelist

Joined: 16 Dec 2014 13:52
Posts: 45
Location: Украина-Измаил
Reply with quote
Vic3Dexe wrote:
После "длинного цикла" там идет обмен со CMOS (порты 70h, 71h). Она есть? Жива? Батарея в норме?

Если "длинный цикл" выполняется, значит с процом/биосом и шинами между ними все в порядке.

В процессе обмена со CMOS есть одно чтение ОЗУ (физ. адрес 00472h), читает слово. Происходит это чтение в реале или нет?


на сколько помню - сам удивлялся почему на вт37,вн59,вв55,ви53 - везде cs- в 1 ,а кмос по схеме сидит идет через инвертор на PG бп . PG -проверял сразу +5в - и через инвертор 0.
Проверю еще раз обвязку CMOS и гляну осцилом что твориться .

Quote:
есть одно чтение ОЗУ (физ. адрес 00472h),

физическое ОЗУ на ру7 ??? или ОЗУ в CMOSe ? до проверки озу и инициальзации ВИ53 и вт37 не будет регенарации РУ7 и врядли они смогут что то хранить.


18 May 2016 02:49
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Quote:
а кмос по схеме сидит идет через инвертор на PG бп . PG -проверял сразу +5в - и через инвертор 0.

Не понял нифига :-? PowerGood что ли? Ну вполне, это девайс мамки, имеет право.
Quote:
физическое ОЗУ на ру7 ??? или ОЗУ в CMOSe ? до проверки озу и инициальзации ВИ53 и вт37 не будет регенарации РУ7 и врядли они смогут что то хранить.

ОЗУ - оно одно. Разумеется на РУ7 или на чем оно там.
Что касается регена - это не мешает его читать. В данном случае читается флаг warm boot. Т.е. некая софтина пишет туда 1234h, после чего выполняет jmp far 0FFFFh:0FFF0h, т.е. имитирует ребут. При этом DMA продолжает регенерацию (т.к. ее никто не отменял).
Обычно используется при обработке ctrl+alt+del, т.е. биос знает, что его ребутнули клавой, а не питанием.


18 May 2016 02:59
Profile
Novelist

Joined: 16 Dec 2014 13:52
Posts: 45
Location: Украина-Измаил
Reply with quote
Vic3Dexe wrote:
Quote:
а кмос по схеме сидит идет через инвертор на PG бп . PG -проверял сразу +5в - и через инвертор 0.

Не понял нифига :-? PowerGood что ли? Ну вполне, это девайс мамки, имеет право.
Quote:
физическое ОЗУ на ру7 ??? или ОЗУ в CMOSe ? до проверки озу и инициальзации ВИ53 и вт37 не будет регенарации РУ7 и врядли они смогут что то хранить.

ОЗУ - оно одно. Разумеется на РУ7 или на чем оно там.
Что касается регена - это не мешает его читать. В данном случае читается флаг warm boot. Т.е. некая софтина пишет туда 1234h, после чего выполняет jmp far 0FFFFh:0FFF0h, т.е. имитирует ребут. При этом DMA продолжает регенерацию (т.к. ее никто не отменял).
Обычно используется при обработке ctrl+alt+del, т.е. биос знает, что его ребутнули клавой, а не питанием.


dma и не начинало регенарацию так как CS устройства не выбран! в z состоянии выходы dma. на озу есть активность -чтение-запись.

по поводу ВИ1 часов -у нее cs -после включения всегда выбран.Сейчас проверю что там с чтение записью.


18 May 2016 03:10
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
palsw wrote:
dma и не начинало регенарацию так как CS устройства не выбран! в z состоянии выходы dma. на озу есть активность -чтение-запись.

Так в вашем случае и не должно быть, холодный ребут ведь! Я ж про флаг warm boot, т.е. когда dma УЖЕ проинициализировано при холодной загрузке.
Но так или иначе читать память это все не мешает - другое дело, что прочитается мусор.


Last edited by Vic3Dexe on 18 May 2016 03:57, edited 1 time in total.



18 May 2016 03:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
palsw wrote:
а вот с сигналом /mrd не совсем понятно. то есть я смогу тормозить проц и шагать только при обрашении к ОЗУ-ПЗУ ,а когда проц дойдет по настройки внешних устройств то улетит не затормозив?

Ну там идея какая - смотря где хочешь затормозиться. По ссылке человеку надо было затормозиться на обращение к ПЗУ.
А тебе может удобней тормозиться на порты а не на каждый такт 3.
Вобщем - каким-то сигналом выставить RDY, а кнопкой его отпустить.

_________________
iLavr


18 May 2016 03:57
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Quote:
что процессор после резета что то пишет и читает из озу и к портам не обращается

Quote:
выбирает первый jmp по адресу 0xFFFF0, правильно переходит, дальше там стоит длинный цикл, тоже выполняется правильно. На этом все - видеокарту не инициализирует


Вот совсем не понял, это как?
Вот участок кода сразу после 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
Profile
Novelist

Joined: 16 Dec 2014 13:52
Posts: 45
Location: Украина-Измаил
Reply with quote
эти 2 цитаты я взял с другого форума - сам еще только подключаю шаговый режим и смотрю осцилографом на ви1


18 May 2016 04:14
Profile
Novelist

Joined: 16 Dec 2014 13:52
Posts: 45
Location: Украина-Измаил
Reply with quote
вот написал,что аж смешно.
1.На моей плате есть обращение к ПЗУ .на процессоре есть сигнал чтения и записи памяти. к внешним устройствам и портам нет обращения .


18 May 2016 07:12
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
palsw wrote:
вот написал,что аж смешно.
1.На моей плате есть обращение к ПЗУ .на процессоре есть сигнал чтения и записи памяти. к внешним устройствам и портам нет обращения .

Ну из этих соображений ясно только одно: либо неисправен процессор, либо он не делает то, что написано в ПЗУ.

Поэтому я и дал ссылку, где в пошаговом режиме выполняется код NOP - выставленный на шине данных резисторами безо всякой ПЗУ.
Я и предложил начать с этого теста: вынимаем из панельки ПЗУ, резисторам по ШД в панельке выставляем код NOP.

И в пошаговом режиме смотрим: проц обратился к "ПЗУ" и завис по RDY.
Тыкаем по всем шинам данных и адреса - правильно ли проходит адрес и код NOP.
Отпускаем RDY - смотрим всё на следующем шаге - адрес на 1 больше и т.д.

А дизассемблировать БИОС - на мой взгляд так с ходу не поможет, я считаю.

Процесор явно делает что-то не то, что записано в БИОС, если, конечно, там записано то, что надо...

_________________
iLavr


18 May 2016 12:55
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Quote:
эти 2 цитаты я взял с другого форума - сам еще только подключаю шаговый режим и смотрю осцилографом на ви1

Quote:
А дизассемблировать БИОС - на мой взгляд так с ходу не поможет, я считаю.

Реверсить биос вообще бессмысленно. Ибо абсолютно непонятно что работает, а что "с другого форума".
Топикстартер, без обид, но как-то... поответственней что ли к вопросу подходи. Люди на тебя свое личное время тратят как бы...

Quote:
к внешним устройствам и портам нет обращения

jmp far по FFFF0h выполняется?
Если нет, то:
- перешить биос на что-то типа набора nop-ов (как уже советовали, но я бы рекомедовал jmp $, т.е. EB FE) и посмотреть на результат. Если без изменений (т.е. нопы/джампы не выполняются) - заменить проц/биос/искать проблемы в дорогах на матери.
Если да (и если приложеный бинарник верный, и биос не битый), то я бы искал того, кто сидит по C8000h. Ибо это единственное, что стоит между jmp far и обращением к портам.
Quote:
резисторам по ШД в панельке выставляем код NOP.

Хосспади, я бы не додумался :D
(я в хорошем смысле)


18 May 2016 14:44
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Vic3Dexe wrote:
Lavr wrote:
резисторам по ШД в панельке выставляем код NOP.

Хосспади, я бы не додумался :D
(я в хорошем смысле)

Да это трюк довольно известый... вот пример для 6502:

Image

Не очень аккуратно... но тем не менее:
Quote:
This will place the opcode EA on the 6502 data bus.
In this mode we take advantage of the fact that the NOP instruction for this CPU is 0EAH.


Да и на нашем форуме это всё разжевали давно уже...
http://www.nedopc.org/forum/viewtopic.php?p=116673#p116673

В пошаговом режиме, когда проц завис по RDY, ему можно резисторами в панельке практически любой
подходящий код задать... :wink:

Но лучше начать всё же с NOP, я думаю, некоторая определенность теста есть...


P.S. Хотя сам я делаю этот трюк не так: в каждую нужную дырку ШД - втыкаю резистор,
а торчащие вверх выводы - одним проводочком - к +5В панельки, другие - проводком к 0.

_________________
iLavr


18 May 2016 16:27
Profile
Maniac

Joined: 18 Nov 2013 15:15
Posts: 209
Location: все оттуда ;)
Reply with quote
Vic3Dexe wrote:
Quote:
что процессор после резета что то пишет и читает из озу и к портам не обращается

Quote:
выбирает первый jmp по адресу 0xFFFF0, правильно переходит, дальше там стоит длинный цикл, тоже выполняется правильно. На этом все - видеокарту не инициализирует


Вот совсем не понял, это как?
Вот участок кода сразу после 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 написано:

Code:
;-----EGA РЕЖИМ И ГАШЕНИЕ ЭКРАНА
NOT_BIOS:
        MOV     DX,3DFH
        XOR     AL,AL
        OUT     DX,AL
        MOV     DX,3D8H
        OUT     DX,AL


А далее идёт страшная вещь ;) , которую сделали для обращения к 2 MB RAM и хитрой к ней адресации ;)

Code:
;----------------------------------------------------------------------------
;       ТЕСТ РЕГИСТРОВ R0...R3 УСТРОЙСТВА EMS ОЗУ И ДЕШИФРАТОРА
;                       ФИЗИЧЕСКИХ АДРЕСОВ ОЗУ
;------------------------------------------------------------------------------


18 May 2016 17:42
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 143 posts ]  Go to page Previous  1, 2, 3, 4, 5 ... 10  Next

Who is online

Users browsing this forum: No registered users and 6 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

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.