PDA

Просмотр полной версии : Вектор-06Ц: тесты эмуляции и сравнения с реалом



svofski
13.04.2016, 19:41
Не нашел лучшей темы, а собрать все бесценные тесты вместе давно хотелось.

Для затравки новый тест. Слегка расширенный тест бордюра http://asdasd.rpg.fi/scalar/ware/861/

Он выявляет вот такую занятную дискрепанцию между b2m и VV:
http://i.imgur.com/iK8YhJ8.png

Серое: out 02, фуксия: out 0c.

Вот бы на реале увидеть.

Дмитрий2012
13.04.2016, 21:23
На Вектор-06Ц: 2014 показывает так

http://i80.fastpic.ru/thumb/2016/0413/2d/932e9b351234628cbf48e54e0766542d.jpeg (http://fastpic.ru/view/80/2016/0413/932e9b351234628cbf48e54e0766542d.jpg.html)

b2m
13.04.2016, 21:40
Чё за прикол? У меня неправильно :(

ivagor
13.04.2016, 21:49
Когда я пытался выявить в v06cc неточности, бордюр проверял по bord, а палитру по соответствующей части black ice. Но такой вариант, когда все и сразу несомненно удобнее.

KTSerg
13.04.2016, 21:49
На Вектор-06Ц.02 аналогично как на фото у Дмитрий2012.

vazman
14.04.2016, 08:33
Вектор 06Ц.01

Saar
14.04.2016, 09:10
Я так и не понял как должно быть правильно.

В моем эмуляторе так:
56810

vazman
14.04.2016, 09:50
в "железном" эмуляторе на девборде де2 - так же, как на реале

ivagor
14.04.2016, 09:51
Saar, у тебя на 2 точки (насколько могу судить по фото) лишняя задержка записи в палитру

Saar
14.04.2016, 13:31
ivagor,
там несколько странно получается. Задержка только у красных линий, когда как у белых положение правильное.
Я не знаю что случилось с картинкой Дмитрий2012, но ее просто нет.
Хотелось бы всё таки увидеть фотку с реального Вектора.

svofski
14.04.2016, 14:46
На всех фотках, насколько я могу видеть, красная полоса кончается на один пиксель позже за риской 5.

Они не совпадают потому, что это разные процессы. Серая: выбор индекса цвета бордюра, он же адрес записи в ОЗУ палитры. Розовая: это код, записанный в ОЗУ палитры по этому адресу процессором и считанный видеоадаптером. Как это все разруливается в реале я не знаю, это самое неудачное место в схеме Вектора. Из-за отсуствия арбитража при записи приходилось делать несколько out ₱0c на некоторых моделях.

- - - Добавлено - - -

На всех фотках, насколько я могу видеть, красная полоса кончается на один пиксель позже за риской 5.

Они не совпадают потому, что это разные процессы. Серая: выбор индекса цвета бордюра, он же адрес записи в ОЗУ палитры. Розовая: это код, записанный в ОЗУ палитры по этому адресу процессором, и считанный видеоадаптером. Как это все разруливается в реале я не знаю, это самое неудачное место в схеме Вектора. Из-за отсуствия арбитража при записи приходилось делать несколько out ₱0c на некоторых моделях.

Saar
14.04.2016, 16:07
svofski,
я не могу понять как записывается серый цвет. Вижу запись индекса бордюра 1 и 0. Вижу запись фиолетового цвета C7h. А где запись серого?

- - - Добавлено - - -

Поправьте меня если ошибаюсь, но судя по схеме записанный индекс бордюра появляется на экране лишь через 8 точек, поскольку индекс записывается в в сдвиговые регистры и двигается так же как информационная часть экрана.
Именно так у меня реализовано.

svofski
14.04.2016, 16:45
Saar, серый цвет это и есть бордюр. 1 серый, 0 черный.

Saar
14.04.2016, 17:40
svofski,
а фиолетовый - это какой индекс тогда?

svofski
14.04.2016, 18:03
Нулевой.


...серость...
xra a ;4
out 2 ;12 бордюр = 0
ora c ;4
nop nop nop
mvi a,$c7 ;8
out $0c ;12 палитра[бордюр] = ¤c7
...фиолетовость...

Saar
14.04.2016, 18:06
я пытаюсь проанализировать ситуацию и понять где может скрываться проблема. Раз общий цикл строки сохраняется, то процессор тут не причем.

svofski, ответь, плиз, конкретно на 2 вопроса:
1) переход с черного на фиолетовый и обратно - это запись куда?
2) переход с черного на серый и обратно - это запись куда?
А то в коде много мусорных команд - смысл теряется.

svofski
14.04.2016, 18:32
С черного на фиолетовый и с фиолетового на черный -- это запись только в 0x0c. $c7 == фиолетовый, $00 == черный.
С черного на серый и с серого на черный -- это запись только в 0x02. 1 == серый, 0 == черный.

Я все-таки приведу код в более полном виде:


globalloop:
ei
hlt
lxi b, 40
wait1:
;;;; ------ здесь начинается серая линия -----
; вывод 1 в регистр индекса бордюра
mvi a,1 ;8 <---- если здесь заменить 1 на 0, серых полос не будет вообще
out 2 ;12
[... команды задержки ...]
; вывод 0 в регистр индекса бордюра
xra a ;4 (ivagor, кстати, тут всегда 0 и так ;) )
out 2 ;12

[... команды задержки ...]
; вывод $c7 в ОЗУ палитры
mvi a,$c7 ;8 <---- если здесь заменить $c7 на 0, фиолетовых полос не будет вообще
out $0c ;12
[... команды задержки ...]
xra a ;4
out $0c ;12

; повторить
ora c ;4
jnz wait1 ;12

jmp globalloop

Saar
14.04.2016, 19:42
svofski,
bord.rom у меня четко выглядит как на оригинале. Там только индекс переключается.
А вот bord2.rom на фиолетовых полосках косячит - что означает что проблема в записи в регистр палитры.
Тут я немного озадачен. Понятно, если бы у меня фиолетовые полосы были сдвинуты влево - я бы добавил задержку (ну там, тормознутость РУ2 и т.д.). Но у меня они смещены вправо. Каких либо задержек на регистре палитры у меня нет... и черт его знает что делать, как исправлять..

ivagor
14.04.2016, 19:54
Читер вроде меня сдвинул бы момент прихода прерывания пораньше, а потом бы добавил задержку на запись в бордюр

svofski
14.04.2016, 20:13
Я согласен с Арамисом. Бессмыслено состязаться кто кого переглючит, когда твой соперник -- построенная на гонках в пышащей канифолью TTL-логике схема из восьмидесятых, а у тебя только чахленькая ПЛИСина с ядром на 1.2в.

Saar
14.04.2016, 20:29
Сейчас у меня всё честно. Прерывание приходит в один момент с VSync. Никаких специальных задержек в графики нет.
Боюсь, что если добавлю задержки, то это может выйти боком в других тестах.
Надо попробовать.

ivagor
14.04.2016, 20:34
Если править момент прихода прерывания, то еще (кроме вышеозвученного) нужно подкорректировать как минимум и момент записи в регистр скролла

Saar
14.04.2016, 21:41
ладно, спишу на адресацию DRAM. Там же не с первого тика выбираются видео данные.
Можно, сказать, нашел пропавшие такты ;)

- - - Добавлено - - -

Сделал задержки. Даже код не сильно испоганился. Момент скролла не стал менять, поскольку сдвиг всего на 2 точки. Скролл тест проверил - не сбился (13/14 и 17/18).

Вроде теперь правильно, так?
56823

ivagor
14.04.2016, 21:56
Один в один, не отличишь

svofski
17.01.2018, 04:07
Не могу найти скринов с реала от "CPU SPEED": http://sensi.org/scalar/ware/652/
Буду признателен за любого качества фотки с экрана реала. Там два файла, выдают разную цифирь.

KTSerg
17.01.2018, 06:15
Не могу найти скринов с реала от "CPU SPEED": ... Там два файла, выдают разную цифирь.
На 02-ом, один тест показывает:
00000370
00000370
00000370
00000BA6

Другой:
00000749
00000749
00000749
00000BA6