nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 12 Dec 2018 13:24



Reply to topic  [ 83 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Robotron EC1834 
Author Message
Doomed

Joined: 16 Dec 2014 12:58
Posts: 359
Location: Киев
Reply with quote
Я предлагаю пока до доса не доходить, скормить ему вместо бут-сектора (с дискетки или модификацией биоса) простейшую последовательность:
Code:
mov ax,3
int 10h
mov ax,0B800h
mov ES,ax
out 55h,al ;это триггер анализатора, порт любой незанятый
mov word [ES:0],0741h

Т.е. триггер поставить на запись в левый порт, на видеопамять срабатывать будет от всего.
Ну и данные будут из проца лезть гарантированно "те".


07 Oct 2018 04:45
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
Тут небольшой облом вышел. ISA слотов то у меня только два :) В одном - XT-IDE, в другом - видюха. А карточку с CPLD уже воткнуть некуда. И самих слотов ISA больше нет, все уже распаял. Так что наверное откладываются дальнейшие эксперименты.

А насчет не доходить до доса - у меня же карточка с CPLD собирает данные во внешнюю SRAM 32Kb, а вытаскиваю я их оттуда чтением из порта. В файл. Внешних то интерфейсов больше нет, ни UART, ничего. SignalTap данное семейство (MAX3000A) не поддерживает. Только разве что сбоку лепить микроконтроллер какой-нибудь, который будет по тому же UART забирать содержимое SRAM. Но мне кажется это уже перебор для данной задачи.


07 Oct 2018 04:54
Profile
Doomed

Joined: 16 Dec 2014 12:58
Posts: 359
Location: Киев
Reply with quote
Засада.
Дискет нет, я так понял? Ну т.е. чтобы освободить слот от XT-IDE.
Насчет доса - тем же тестовым кодом можно добыть результаты и сложить их на ту же дискетку в какой-нибудь ненужный сектор-два-десять (через int 13h).
Потом с дискеты доставать, написав утилитку...
Блин, да, че-то гемор получается.

Ладно, а просто выполнить тестовый код на этой карте? Без слежения за шиной.
Интересует результат mov ax,3 / int 10h и собственно записи символа. Причем, желательно несколько раз, дабы понять - этот мусор случаен или есть закономерность.
Может на ней тупо нога микрухи памяти отпаялась? Как-то уже очень похоже на отвал памяти...

Ну и дампить регистры VGA, раз аппаратно шину увидеть нельзя.


07 Oct 2018 08:17
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
Vic3Dexe wrote:
Может на ней тупо нога микрухи памяти отпаялась? Как-то уже очень похоже на отвал памяти...

Ну и дампить регистры VGA, раз аппаратно шину увидеть нельзя.


Нет, с памятью и картой все точно в порядке. Она отлично работает на обычном клоне XT и в Поиск-2. Да и на 386 вроде пробовал когда-то, тоже работает.
Едут ко мне ISA слоты, впаяю еще один на следующей неделе наверное.


08 Oct 2018 23:38
Profile
Doomed

Joined: 16 Dec 2014 12:58
Posts: 359
Location: Киев
Reply with quote
На правах бреда.

Потести "in ax,dx" аналогично тесту out. На каком-нибудь читабельном порту. Подойдет, скажем, VGA CRT:
Code:
mov dx,3D4h
mov al,1 ;не приципиально, можно что угодно в диапазоне CRT
out dx,al ;пишем индекс, дабы было что прочитать
in ax,dx ;вот тут в al должен быть исходный индекс (1 в данном случае), в ah - содержимое регистра CRT (HDER в данном случае)

Я к чему веду - вывод в порт работает однозначно. А ввод кто-то проверял? Он в таком виде используется крайне редко, но может именно в этом и затык?
Ну т.е. биосы карт, которые заработали, не используют in ax,dx. Те, что упрямятся - используют.


12 Oct 2018 15:56
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
Vic3Dexe wrote:
Потести "in ax,dx" аналогично тесту out. На каком-нибудь читабельном порту. Подойдет, скажем, VGA CRT


Потестил. На ACUMOS видюхе, которая работает. Выдает в AX=4F01, то есть работает. Плюс у меня же работает XT-IDE, а он имхо очень активно in ax,dx использует. Дело не в этом.

Также протестировал недавно восстановленную ISA-8 видеокарту на чипе OTI-037C, такую:

Image

Она правда немножко глючная, но в текстовом режиме нормально на Поиск-2 работает. На роботроне так же не завелась. Итого работают: ISA-16 ACUMOS - безупречно, ISA-8 PVGA1-JK с багами в символах и аттрибутах. Остальные не работают никак.


28 Oct 2018 02:45
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
Набросал програмку, которая сохраняет BIOS и видео-память из B800 в файл. Запустил ее почти в слепую на ISA-8 PVGA1 (которая мусорит в атрибутах/символах). BIOS похож на биос здорового человека, потом сравню с программатором, но вроде бы все ок. А вот в считанной видео-памяти из B800h полная мешанина; в принципе, так же как есть и на экране:

Image

Сейчас попробуем писать что-то в видео-память напрямую. Байтово и словами.

UPD: Хм... Если писать в видео-память побайтово, то оно работает. Писал примерно так:
Code:
mov ax,0b800h
mov es,ax
xor di,di
mov al,31h
mov cx,4000
rep stosb


На экране вполне вменяемая картинка:

Image

Если писать словами (rep stosw), то на экране тот же треш, что и при загрузке. Не пишется словами.

UPD2: На 8-битной OTI-037C - биос дампится хороший, в дампе видео-памяти FF D3 , после байтовой или словами записи так же FF D3. На экране ничего.
UPD3: На 16-битной Trident - аналогично OTI-037C.


28 Oct 2018 03:24
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
Значит, наваял такой великий код:
Code:
        mov dx,3a0h
        mov ax,55aah
        out dx,ax                  ; Тригер, лог анализатор начинает писать сигналы

        mov ax,0b800h
        mov es,ax
        xor di,di
        mov cx,2000
        mov ax,0734h           ; Пишем словами начиная с B8000, записываем 0734h
        rep stosw


Вот что получилось:

Image

Вроде бы нормально все? На всякий случай прикладываю файл с логического анализатора. Посмотреть его можно в PulseView (готовый инсталлер для Windows тут https://sigrok.org/wiki/Windows )


Attachments:
memwr.rar [10.65 KiB]
Downloaded 20 times
28 Oct 2018 07:39
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 650
Location: WWW
Reply with quote
Почему OSC такой странный ?

CLK вообще пропадает во время записи - это издержки анализатора ?

Ну и для сравнения стоит по этим же адресам записать то же самое, но побайтно, и сравнить картинки анализатора


28 Oct 2018 08:59
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
newold86 wrote:
Почему OSC такой странный ?

CLK вообще пропадает во время записи - это издержки анализатора ?


Издержки анализатора. У меня есть генератор 48MHz, по спаду его частоты граблю сигналы. Всего пишу 5 байт. Поэтому они никак не синхронизированы с OSC и CLK.
 код не для слабонервных
Code:
assign SRAM_Adr = (Ext_WR) ? wr_adr : rd_adr;
assign SRAM_WR = (Ext_WR) ? 1'b0 : 1'b1;
assign SRAM_Data = (Ext_WR) ? Data : 8'hZZ;

reg       [3:0] State;

localparam    [3:0] FIRST_BYTE = 0;
localparam    [3:0] SECOND_BYTE = 1;
localparam    [3:0] THIRD_BYTE = 2;
localparam    [3:0] FOURTH_BYTE = 3;
localparam    [3:0] FIFTH_BYTE = 4;
localparam    [3:0] SIXTH_BYTE = 5;

reg [31:0] DataSt;

always @(posedge Clk_32MHz) begin
    if (Res)
      begin
         wr_adr <= 0;
         State <= FIRST_BYTE;
      end
else
   if (Begin_Capture)
      begin
                  displayed_number <= wr_adr;

                  case(State)
                  FIRST_BYTE:      //0..7 - data bus
                     begin
                        State <= SECOND_BYTE;
                        DataSt <= {OSC,Clk,2'b00,REFRESH,AEN,ALE,IOR,nRD,nWR,nMEMR,nMEMW,Adr[19:0]};
                        wr_adr <= wr_adr + 1'b1;
                        Data = Dat;
                     end
                  SECOND_BYTE:   //8..15 - Adress low
                     begin
                        wr_adr <= wr_adr + 1'b1;
                        Data = DataSt[7:0];
                        State <= THIRD_BYTE;
                     end
                  THIRD_BYTE:      //16..22 - Adress high
                     begin
                        wr_adr <= wr_adr + 1'b1;
                        Data = DataSt[15:8];
                        State <= FOURTH_BYTE;
                     end
                  FOURTH_BYTE:   //23..27 - Adress high
                              //28 - mMEMW
                              //29 - nMEMR
                              //30 - nWR
                              //31 - nRD
                     begin
                        wr_adr <= wr_adr + 1'b1;
                        Data = DataSt[23:16];
                        State <= FIFTH_BYTE;
                     end
                  FIFTH_BYTE:      //32 - IOR
                              //33 - ALE
                              //34 - AEN
                              //35..38 - reserved
                              //39 - OSC
                     begin
                        wr_adr <= wr_adr + 1'b1;
                        Data = DataSt[31:24];
                        State <= FIRST_BYTE;
                     end
                  default:
                     State <= FIRST_BYTE;
                  endcase
      end

end


newold86 wrote:
Ну и для сравнения стоит по этим же адресам записать то же самое, но побайтно, и сравнить картинки анализатора


Вот по-байтовая запись:

Image


28 Oct 2018 09:24
Profile
Doomed

Joined: 16 Dec 2014 12:58
Posts: 359
Location: Киев
Reply with quote
Между падениями /MEMW в случае слова промежуток буквально один такт CLK.
Есть подозрение, что этого мало, т.е. видяха не успевает прожевать предыдущий байт.

Блин, у меня и других-то идей нет.
Если "байтовая" картинка корректна, значит все регистры VGA в норме, да и сама карта в норме.
"Словная" картинка тоже выглядит корректно, следовательно дело в таймингах.

Пока хз, как это проверить или тем более исправить.


28 Oct 2018 15:33
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
А вот такая картинка записи словами получилась с Поиск-2:

Image

В глаза бросается почти человеческий CLK, в отличии от Robotron. Надо будет осциллографом вообще посмотреть CLK и OSC на Роботроне, но это не скоро. Или написать хотя-бы счетчик частоты на верилоге, чтобы узнать какая частота у CLK и OSC на роботроне. Ну или в самом крайнем случае посмотреть схему :mrgreen:

Так же шевелится при записи линия IOReady....


30 Oct 2018 11:20
Profile
Doomed

Joined: 30 Nov 2013 12:08
Posts: 650
Location: WWW
Reply with quote
Tronix wrote:
Так же шевелится при записи линия IOReady....

Что-то я не понял - это имеется ввиду I/O CH READY ?
Если да, то каким образом на предыдущих картинках он в 0 все время находится ???


30 Oct 2018 12:55
Profile
Doomed

Joined: 18 Nov 2013 03:38
Posts: 603
Location: Москва
Reply with quote
newold86 wrote:
Что-то я не понял - это имеется ввиду I/O CH READY ?


Да, оно. Я теперь тоже не понял. Ну, не на всех, а на картинке с побайтовой записью. Может я перепутал сигналы? Буду проверять ((


30 Oct 2018 13:00
Profile
Doomed

Joined: 16 Dec 2014 12:58
Posts: 359
Location: Киев
Reply with quote
Почему в 0? В 1, как и должно быть.
Зеленое - это с Венеры, тьфу, "1". Красное - "0".
И еще. На картинке с записью словом не увидел ALE.

А картинка на Поиске такая же, просто масштаб другой.
Отличается IOCHRDY и ALE. Т.е. в случае с Поиском карта тормозит второй обмен, пока не прожует первый.

ps Хотя у следующего обмена ALE есть, вероятно, он просто не захватился...


31 Oct 2018 00:53
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 83 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 8 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:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.