Robotron EC1834

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

Moderator: Shaos

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

Re: Robotron EC1834

Post by Vic3Dexe »

Я предлагаю пока до доса не доходить, скормить ему вместо бут-сектора (с дискетки или модификацией биоса) простейшую последовательность:

Code: Select all

mov ax,3
int 10h
mov ax,0B800h
mov ES,ax
out 55h,al ;это триггер анализатора, порт любой незанятый
mov word [ES:0],0741h
Т.е. триггер поставить на запись в левый порт, на видеопамять срабатывать будет от всего.
Ну и данные будут из проца лезть гарантированно "те".
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Тут небольшой облом вышел. ISA слотов то у меня только два :) В одном - XT-IDE, в другом - видюха. А карточку с CPLD уже воткнуть некуда. И самих слотов ISA больше нет, все уже распаял. Так что наверное откладываются дальнейшие эксперименты.

А насчет не доходить до доса - у меня же карточка с CPLD собирает данные во внешнюю SRAM 32Kb, а вытаскиваю я их оттуда чтением из порта. В файл. Внешних то интерфейсов больше нет, ни UART, ничего. SignalTap данное семейство (MAX3000A) не поддерживает. Только разве что сбоку лепить микроконтроллер какой-нибудь, который будет по тому же UART забирать содержимое SRAM. Но мне кажется это уже перебор для данной задачи.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Засада.
Дискет нет, я так понял? Ну т.е. чтобы освободить слот от XT-IDE.
Насчет доса - тем же тестовым кодом можно добыть результаты и сложить их на ту же дискетку в какой-нибудь ненужный сектор-два-десять (через int 13h).
Потом с дискеты доставать, написав утилитку...
Блин, да, че-то гемор получается.

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

Ну и дампить регистры VGA, раз аппаратно шину увидеть нельзя.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Vic3Dexe wrote: Может на ней тупо нога микрухи памяти отпаялась? Как-то уже очень похоже на отвал памяти...

Ну и дампить регистры VGA, раз аппаратно шину увидеть нельзя.
Нет, с памятью и картой все точно в порядке. Она отлично работает на обычном клоне XT и в Поиск-2. Да и на 386 вроде пробовал когда-то, тоже работает.
Едут ко мне ISA слоты, впаяю еще один на следующей неделе наверное.
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

На правах бреда.

Потести "in ax,dx" аналогично тесту out. На каком-нибудь читабельном порту. Подойдет, скажем, VGA CRT:

Code: Select all

mov dx,3D4h
mov al,1 ;не приципиально, можно что угодно в диапазоне CRT
out dx,al ;пишем индекс, дабы было что прочитать
in ax,dx ;вот тут в al должен быть исходный индекс (1 в данном случае), в ah - содержимое регистра CRT (HDER в данном случае)
Я к чему веду - вывод в порт работает однозначно. А ввод кто-то проверял? Он в таком виде используется крайне редко, но может именно в этом и затык?
Ну т.е. биосы карт, которые заработали, не используют in ax,dx. Те, что упрямятся - используют.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

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 с багами в символах и аттрибутах. Остальные не работают никак.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Набросал програмку, которая сохраняет BIOS и видео-память из B800 в файл. Запустил ее почти в слепую на ISA-8 PVGA1 (которая мусорит в атрибутах/символах). BIOS похож на биос здорового человека, потом сравню с программатором, но вроде бы все ок. А вот в считанной видео-памяти из B800h полная мешанина; в принципе, так же как есть и на экране:

Image

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

UPD: Хм... Если писать в видео-память побайтово, то оно работает. Писал примерно так:

Code: Select all

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.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

Значит, наваял такой великий код:

Code: Select all

        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 )
You do not have the required permissions to view the files attached to this post.
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Robotron EC1834

Post by newold86 »

Почему OSC такой странный ?

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

Ну и для сравнения стоит по этим же адресам записать то же самое, но побайтно, и сравнить картинки анализатора
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

newold86 wrote:Почему OSC такой странный ?

CLK вообще пропадает во время записи - это издержки анализатора ?
Издержки анализатора. У меня есть генератор 48MHz, по спаду его частоты граблю сигналы. Всего пишу 5 байт. Поэтому они никак не синхронизированы с OSC и CLK.

 код не для слабонервных

Code: Select all

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
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Между падениями /MEMW в случае слова промежуток буквально один такт CLK.
Есть подозрение, что этого мало, т.е. видяха не успевает прожевать предыдущий байт.

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

Пока хз, как это проверить или тем более исправить.
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

А вот такая картинка записи словами получилась с Поиск-2:

Image

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

Так же шевелится при записи линия IOReady....
newold86
Devil
Posts: 716
Joined: 30 Nov 2013 11:08
Location: WWW

Re: Robotron EC1834

Post by newold86 »

Tronix wrote:Так же шевелится при записи линия IOReady....
Что-то я не понял - это имеется ввиду I/O CH READY ?
Если да, то каким образом на предыдущих картинках он в 0 все время находится ???
Tronix
Doomed
Posts: 662
Joined: 18 Nov 2013 02:38
Location: Москва

Re: Robotron EC1834

Post by Tronix »

newold86 wrote: Что-то я не понял - это имеется ввиду I/O CH READY ?
Да, оно. Я теперь тоже не понял. Ну, не на всех, а на картинке с побайтовой записью. Может я перепутал сигналы? Буду проверять ((
Vic3Dexe
Doomed
Posts: 370
Joined: 16 Dec 2014 11:58
Location: Киев

Re: Robotron EC1834

Post by Vic3Dexe »

Почему в 0? В 1, как и должно быть.
Зеленое - это с Венеры, тьфу, "1". Красное - "0".
И еще. На картинке с записью словом не увидел ALE.

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

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