Поиск-2 Ремонт

16-битные ПЦ-совместимые компьютеры с процессорами 8086/8088/80286 работающие под управлением ДОС

Moderator: Shaos

Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Поиск-2 Ремонт

Post by Vic3Dexe »

Насколько полно и подробно нужно реверсить биос?
Т.е. просто обозначить процедуры и основные куски или же с указанием всех локаций в CMOS/BDA/etc?
Или нужно найти конкретный участок?

Если нужно макс. полно - нужна схема, иначе, например, непонятно что такое порт 3DF (в смысле - где он в железе и что происходит при записи в него).
palsw
Novelist
Posts: 45
Joined: 16 Dec 2014 13:52
Location: Украина-Измаил

Re: Поиск-2 Ремонт

Post by palsw »

Vic3Dexe wrote:Насколько полно и подробно нужно реверсить биос?
Т.е. просто обозначить процедуры и основные куски или же с указанием всех локаций в CMOS/BDA/etc?
Или нужно найти конкретный участок?
если бы я понимал хоть половину что тут написано -мне нужно после сброса процессора проследить что он выдает на шину адресса и данных и управление,что он читает из ПЗУ при старте - там в пзу идет инициальизация устройств и проверка озу.
Потом на процессоре проверяй, если у него есть тактирование и RESET, то проц должен после снятия RESET выдавать адрес FFFF:0h, по этому адресу должен быть низкий CS на ПЗУ. Соответственно, проверишь "базовую" работоспособность процессора и дешифратора адреса.
добились старта из ПЗУ, выбирает первый jmp по адресу 0xFFFF0, правильно переходит, дальше там стоит длинный цикл, тоже выполняется правильно. На этом все - видеокарту не инициализирует, не пищит, на тест ОЗУ не переходит.
http://zx-pk.ru/threads/24663-pomogite- ... post829507

эта вся информация что есть, вроде как обычна XT машина
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Поиск-2 Ремонт

Post by Vic3Dexe »

После "длинного цикла" там идет обмен со CMOS (порты 70h, 71h). Она есть? Жива? Батарея в норме?

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

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

После теста CMOS сразу идут обращения к DMA:

Code: Select all

sub     ax, ax
out     0A0h, al        ; <=== это вроде PIC-slave, он есть на плате? Если нет, надо понять, что это за порт
out     83h, al         ; DMA page register 74LS612:
out     0Dh, al         ; DMA controller, 8237A-5.
palsw
Novelist
Posts: 45
Joined: 16 Dec 2014 13:52
Location: Украина-Измаил

Re: Поиск-2 Ремонт

Post by palsw »

Vic3Dexe wrote:После "длинного цикла" там идет обмен со CMOS (порты 70h, 71h). Она есть? Жива? Батарея в норме?

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

В процессе обмена со CMOS есть одно чтение ОЗУ (физ. адрес 00472h), читает слово. Происходит это чтение в реале или нет?
на сколько помню - сам удивлялся почему на вт37,вн59,вв55,ви53 - везде cs- в 1 ,а кмос по схеме сидит идет через инвертор на PG бп . PG -проверял сразу +5в - и через инвертор 0.
Проверю еще раз обвязку CMOS и гляну осцилом что твориться .
есть одно чтение ОЗУ (физ. адрес 00472h),
физическое ОЗУ на ру7 ??? или ОЗУ в CMOSe ? до проверки озу и инициальзации ВИ53 и вт37 не будет регенарации РУ7 и врядли они смогут что то хранить.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Поиск-2 Ремонт

Post by Vic3Dexe »

а кмос по схеме сидит идет через инвертор на PG бп . PG -проверял сразу +5в - и через инвертор 0.
Не понял нифига :-? PowerGood что ли? Ну вполне, это девайс мамки, имеет право.
физическое ОЗУ на ру7 ??? или ОЗУ в CMOSe ? до проверки озу и инициальзации ВИ53 и вт37 не будет регенарации РУ7 и врядли они смогут что то хранить.
ОЗУ - оно одно. Разумеется на РУ7 или на чем оно там.
Что касается регена - это не мешает его читать. В данном случае читается флаг warm boot. Т.е. некая софтина пишет туда 1234h, после чего выполняет jmp far 0FFFFh:0FFF0h, т.е. имитирует ребут. При этом DMA продолжает регенерацию (т.к. ее никто не отменял).
Обычно используется при обработке ctrl+alt+del, т.е. биос знает, что его ребутнули клавой, а не питанием.
palsw
Novelist
Posts: 45
Joined: 16 Dec 2014 13:52
Location: Украина-Измаил

Re: Поиск-2 Ремонт

Post by palsw »

Vic3Dexe wrote:
а кмос по схеме сидит идет через инвертор на PG бп . PG -проверял сразу +5в - и через инвертор 0.
Не понял нифига :-? PowerGood что ли? Ну вполне, это девайс мамки, имеет право.
физическое ОЗУ на ру7 ??? или ОЗУ в CMOSe ? до проверки озу и инициальзации ВИ53 и вт37 не будет регенарации РУ7 и врядли они смогут что то хранить.
ОЗУ - оно одно. Разумеется на РУ7 или на чем оно там.
Что касается регена - это не мешает его читать. В данном случае читается флаг warm boot. Т.е. некая софтина пишет туда 1234h, после чего выполняет jmp far 0FFFFh:0FFF0h, т.е. имитирует ребут. При этом DMA продолжает регенерацию (т.к. ее никто не отменял).
Обычно используется при обработке ctrl+alt+del, т.е. биос знает, что его ребутнули клавой, а не питанием.
dma и не начинало регенарацию так как CS устройства не выбран! в z состоянии выходы dma. на озу есть активность -чтение-запись.

по поводу ВИ1 часов -у нее cs -после включения всегда выбран.Сейчас проверю что там с чтение записью.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Поиск-2 Ремонт

Post by Vic3Dexe »

palsw wrote: dma и не начинало регенарацию так как CS устройства не выбран! в z состоянии выходы dma. на озу есть активность -чтение-запись.
Так в вашем случае и не должно быть, холодный ребут ведь! Я ж про флаг warm boot, т.е. когда dma УЖЕ проинициализировано при холодной загрузке.
Но так или иначе читать память это все не мешает - другое дело, что прочитается мусор.
Last edited by Vic3Dexe on 18 May 2016 03:57, edited 1 time in total.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Поиск-2 Ремонт

Post by Lavr »

palsw wrote:а вот с сигналом /mrd не совсем понятно. то есть я смогу тормозить проц и шагать только при обрашении к ОЗУ-ПЗУ ,а когда проц дойдет по настройки внешних устройств то улетит не затормозив?
Ну там идея какая - смотря где хочешь затормозиться. По ссылке человеку надо было затормозиться на обращение к ПЗУ.
А тебе может удобней тормозиться на порты а не на каждый такт 3.
Вобщем - каким-то сигналом выставить RDY, а кнопкой его отпустить.
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Поиск-2 Ремонт

Post by Vic3Dexe »

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

Code: Select all

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

То есть либо обращения к портам таки идут, но вы их смотрите не там, либо "длинный цикл" не там и проц выполняет вообще непонятно что...
palsw
Novelist
Posts: 45
Joined: 16 Dec 2014 13:52
Location: Украина-Измаил

Re: Поиск-2 Ремонт

Post by palsw »

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

Re: Поиск-2 Ремонт

Post by palsw »

вот написал,что аж смешно.
1.На моей плате есть обращение к ПЗУ .на процессоре есть сигнал чтения и записи памяти. к внешним устройствам и портам нет обращения .
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Поиск-2 Ремонт

Post by Lavr »

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

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

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

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

Процесор явно делает что-то не то, что записано в БИОС, если, конечно, там записано то, что надо...
iLavr
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Поиск-2 Ремонт

Post by Vic3Dexe »

эти 2 цитаты я взял с другого форума - сам еще только подключаю шаговый режим и смотрю осцилографом на ви1
А дизассемблировать БИОС - на мой взгляд так с ходу не поможет, я считаю.
Реверсить биос вообще бессмысленно. Ибо абсолютно непонятно что работает, а что "с другого форума".
Топикстартер, без обид, но как-то... поответственней что ли к вопросу подходи. Люди на тебя свое личное время тратят как бы...
к внешним устройствам и портам нет обращения
jmp far по FFFF0h выполняется?
Если нет, то:
- перешить биос на что-то типа набора nop-ов (как уже советовали, но я бы рекомедовал jmp $, т.е. EB FE) и посмотреть на результат. Если без изменений (т.е. нопы/джампы не выполняются) - заменить проц/биос/искать проблемы в дорогах на матери.
Если да (и если приложеный бинарник верный, и биос не битый), то я бы искал того, кто сидит по C8000h. Ибо это единственное, что стоит между jmp far и обращением к портам.
резисторам по ШД в панельке выставляем код NOP.
Хосспади, я бы не додумался :D
(я в хорошем смысле)
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Поиск-2 Ремонт

Post by Lavr »

Vic3Dexe wrote:
Lavr wrote:резисторам по ШД в панельке выставляем код NOP.
Хосспади, я бы не додумался :D
(я в хорошем смысле)
Да это трюк довольно известый... вот пример для 6502:

Image

Не очень аккуратно... но тем не менее:
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.
Да и на нашем форуме это всё разжевали давно уже...
viewtopic.php?p=116673#p116673

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

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


P.S. Хотя сам я делаю этот трюк не так: в каждую нужную дырку ШД - втыкаю резистор,
а торчащие вверх выводы - одним проводочком - к +5В панельки, другие - проводком к 0.
iLavr
VGrad
Maniac
Posts: 208
Joined: 18 Nov 2013 15:15
Location: все оттуда ;)

Re: Поиск-2 Ремонт

Post by VGrad »

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

Code: Select all

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: Select all

;-----EGA РЕЖИМ И ГАШЕНИЕ ЭКРАНА
NOT_BIOS:
        MOV     DX,3DFH
        XOR     AL,AL
        OUT     DX,AL
        MOV     DX,3D8H
        OUT     DX,AL
А далее идёт страшная вещь ;) , которую сделали для обращения к 2 MB RAM и хитрой к ней адресации ;)

Code: Select all

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