Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   ZX Spectrum: аппаратная реализация на восьми микросхемах (http://zx-pk.ru/showthread.php?t=13747)

BYTEMAN 23rd March 2011 21:45

Lisitsin, я думаю, говорить об изготовлении плат пока что рано... Думаю, там ещё будет не одно изменение.

Lisitsin 23rd March 2011 22:08

Quote:

Originally Posted by BYTEMAN (Post 369258)
Lisitsin, я думаю, говорить об изготовлении плат пока что рано... Думаю, там ещё будет не одно изменение.

Так это процесс очень долгий, практически бесконечный ...

---------- Post added at 21:08 ---------- Previous post was at 20:50 ----------

Вот тут ещё есть вторая часть ROBOCOPa:
http://www.youtube.com/watch?v=68EqwRTNVWs

zorel 24th March 2011 13:18

Lisitsin, я думаю сейчас, не помешало бы убрать помехи видеопроцессора :)

balu_dark 24th March 2011 14:36

насчет шрифта в робокопе - а гляньте где он вообще лежит. ощущение что проблема доступа к памяти в определенных адресах.

im2 24th March 2011 17:39

Quote:

Originally Posted by balu_dark (Post 369385)
насчет шрифта в робокопе - а гляньте где он вообще лежит. ощущение что проблема доступа к памяти в определенных адресах.

Шрифт похоже начинается с 5B00, конкретно буква N по адресу 5C00.

Lisitsin 24th March 2011 18:20

Quote:

Originally Posted by balu_dark (Post 369385)
насчет шрифта в робокопе - а гляньте где он вообще лежит. ощущение что проблема доступа к памяти в определенных адресах.

Аппаратно память доступна и чтение / запись корректны. При старте бейсика даже есть коротенький тест всего ОЗУ. Дело в эмуляции.

---------- Post added at 17:20 ---------- Previous post was at 17:18 ----------

Quote:

Originally Posted by im2 (Post 369419)
Шрифт похоже начинается с 5B00, конкретно буква N по адресу 5C00.

Для выявления глюка нужна программка по-проще.

osa 24th March 2011 18:29

пошло дело:) я не могу просмотреть, все ли инструкции проходят? или творческий перерыв?:)

Higgins 24th March 2011 21:02

Quote:

Originally Posted by Lisitsin (Post 368174)
10 POKE 65349,0
20 PRINT PEEK (65349)

Сейчас эти строки работают как следуют? Если нет, изменилось ли печатаемое значение?

Quote:

Originally Posted by Lisitsin (Post 368959)
Дело в том, что в AVR не хватает регистрового файла (32 РОН)

Альтернативный набор регистров BC', DE', HL' и AF' тоже в регистрах храните?

Quote:

Originally Posted by osa (Post 369427)
я не могу просмотреть, все ли инструкции проходят? или творческий перерыв?

Нужно собраться с мыслями.

Вопрос к Lisitsin: насколько сложно убрать помехи при построении изображения? Я вижу, что помехи есть только если процессор нагружен. И, к слову, почему на разных видео разная контрасность? На скриншотах ROBOCOP, которые я выкладывал разница в контрастности очень заметная.

Lisitsin 24th March 2011 21:33

Quote:

Originally Posted by Higgins (Post 369468)
Сейчас эти строки работают как следуют? Если нет, изменилось ли печатаемое значение?


Альтернативный набор регистров BC', DE', HL' и AF' тоже в регистрах храните?


Вопрос к Lisitsin: насколько сложно убрать помехи при построении изображения? Я вижу, что помехи есть только если процессор нагружен. И, к слову, почему на разных видео разная контрасность? На скриншотах ROBOCOP, которые я выкладывал разница в контрастности очень заметная.

PRINT PEEK (65349) как давал так и даёт 255. Альтернативный набор регистров храню в регистрах общего назначения. Помехи убрать реально, но прийдётся повозиться. Контрастность изменилась чисто из-за устранения аппаратного дефекта - просто появился красный цвет (припаял резистор). Помехи действительно зависят от частоты обращения центрального процессора к памяти (на данный момент).

Higgins 24th March 2011 22:28

1 Attachment(s)
Quote:

Originally Posted by Lisitsin (Post 369474)
PRINT PEEK (65349) как давал так и даёт 255

Давайте разберемся с zexfix. Не помню, давал ли я пофикшенную версию или исходную, поэтому на всякий случай прилагаю архив.

Посмотрите, проходит ли управление через PC=#9BEF. Если проходит, нужно сделать трейсинг начиная с этого момента и далее со всеми регистрами. Хотя бы пару тысяч строк.

Lisitsin 25th March 2011 00:38

Ой. У меня .z80 не конвертируется в аудиоформат. Есть у меня в .tap формате, это он или нет?

balu_dark 25th March 2011 00:50

Quote:

Originally Posted by Lisitsin (Post 369424)
Аппаратно память доступна и чтение / запись корректны. При старте бейсика даже есть коротенький тест всего ОЗУ. Дело в эмуляции.

Я просто помню что был прикол с половинками адресов. типа при некоторых операциях один регистр не прогружался. вот и предположил что тут какаято похожая бяка.

Higgins 25th March 2011 01:19

1 Attachment(s)
Quote:

Originally Posted by Lisitsin (Post 369545)
У меня .z80 не конвертируется в аудиоформат

Прилагаю в .tzx.

Lisitsin 25th March 2011 01:21

Адрес 9BEF вижу, код в приложении:

Lisitsin 25th March 2011 01:23

Quote:

Originally Posted by Higgins (Post 369566)
Прилагаю в .tzx.

Сверил. Это он.

Higgins 25th March 2011 12:12

Quote:

Originally Posted by Lisitsin (Post 369568)
TRACE_ZEXALL.zip

Здесь прошли все.

Quote:

Originally Posted by Lisitsin (Post 368939)
Zexall грузится, но виснет в самом начале тестов.

Первая строка тестируется аж 12 минут. Может, вы просто не дождались?

Lisitsin 25th March 2011 18:19

Запустил ZEXALL заново. Доходит до пятого теста и виснет (по крайней мере часа пол на нём стоит). Первые 4 теста - OK:

Lisitsin 25th March 2011 20:01

Появилось одно странное явление: при старте бейсика вертикальные полоски (тест RAM) появляются дважды, а раньше - только один раз:

Higgins 25th March 2011 22:46

Quote:

Originally Posted by Lisitsin (Post 369706)
Доходит до пятого теста и виснет (по крайней мере часа пол на нём стоит).

Судя по видео, он доходит до шестого теста. Шестой тест идет очень долго. Запускайте на ночь. :)

UPDATE: У меня получилось, что шестой тест идет около ста минут.

Lisitsin 27th March 2011 09:21

Quote:

Originally Posted by Higgins (Post 369778)
Шестой тест идет очень долго. Запускайте на ночь. :)

Частов за десять доходт сюда: (может по-дольше подождать?)

Но бейсик реально тест памяти два раза делает. Не спроста это. Может трейсинг сделать ему? Интересно, что там после первого теста происходит ...

Higgins 27th March 2011 13:14

Quote:

Originally Posted by Lisitsin (Post 370093)
Частов за десять доходт сюда: (может по-дольше подождать?)

За десять часов он должен был подальше уйти. Но уже сейчас видно, что есть над чем работать.

Zexall отличается от z80tests тем, что в первом тестируются инструкции с разными операндами, а во втором с одними и теми же. Тесты на "alu #nn" у вас проходят, а те же alu с регистрами уже не работают, хотя результат и флаги у них вычисляются совершенно одинаково. Значит, прежде всего нужно найти различия в реализациях этих инструкций и устранить их.

Lisitsin 27th March 2011 13:41

Quote:

Originally Posted by Higgins (Post 370138)
За десять часов он должен был подальше уйти. Но уже сейчас видно, что есть над чем работать.

Тесты на "alu #nn" у вас проходят, а те же alu с регистрами уже не работают, хотя результат и флаги у них вычисляются совершенно одинаково. Значит, прежде всего нужно найти различия в реализациях этих инструкций и устранить их.

Не понял, а что это за alu #nn? (простите мне мою неграмотность)

Higgins 27th March 2011 14:05

Quote:

Originally Posted by Lisitsin (Post 370145)
Не понял, а что это за alu #nn?

Речь идет об операциях ALU с ргеистром A: ADD, ADC, SUB, SBC, AND, XOR, OR и CP. Судя по видео, варианты с непосредственным операндом у вас работают как положено, а с операндами-регистрами и (HL) -- нет.

Lisitsin 27th March 2011 17:46

Да ... Так просто к этому делу не подлезть ...:v2_conf2:
А со стартом вы мне можете помочь? Может там глюк и сдастся?

Higgins 27th March 2011 18:00

Quote:

Originally Posted by Lisitsin (Post 370185)
Да ... Так просто к этому делу не подлезть ...

Большая проблема с ZEXALL в том, что после каждой правки он потребует уйму времени для проверки.

OK, подумаем, что еще можно сделать.

Quote:

Originally Posted by Lisitsin (Post 370185)
А со стартом вы мне можете помочь? Может там глюк и сдастся?

Давайте попробуем. Начиная с PC=#11EF со всеми регистрами. Много строк, наверное, не понадобится.

Lisitsin 27th March 2011 19:42

Вот здесь он снова в RAM-FILL сваливается:

Higgins 27th March 2011 20:53

Quote:

Originally Posted by Lisitsin (Post 370199)
TRACE_RAM-DONE.zip

По первой же строки видно, что тест памяти проходит только от #FFFF до #5C01. Аппаратные проблемы?

Lisitsin 27th March 2011 21:31

Quote:

Originally Posted by Higgins (Post 370214)
#FFFF до #5C01

Странное дело ... если проблемы были бы аппаратные то он и во второй раз бы этот тест не проходил. А он со второго раза стартует и нормально ... Мне кажется это опять что-то внутри AVR.

Higgins 27th March 2011 22:53

Quote:

Originally Posted by Lisitsin (Post 370224)
Мне кажется это опять что-то внутри AVR.

Это возможно. Тогда такой вопрос: он при каждом сбросе ведет себя совершенно одинаково? И при каждом сбросе первая строка в трейсинге с HL=#5C00?

Lisitsin 27th March 2011 23:10

Вот я сделал ещё один проход, но немного раньше RAM-DONE. Получается так, что вдруг перестаёт выполняться команда JR Z и при Z=1 перехода не происходит:
Ведёт себя каждый раз одинаково при каждом сбросе - вертикальные полоски появляются дважды, потом стартует BASIC.

Higgins 28th March 2011 00:42

Quote:

Originally Posted by Lisitsin (Post 370249)
Вот я сделал ещё один проход, но немного раньше RAM-DONE. Получается так, что вдруг перестаёт выполняться команда JR Z и при Z=1 перехода не происходит:

Отличная идея. Но взведенного ZF я в трейсинге не увидел. :)

Смотрите, вот пара строк для ячейки #5BFF, для которой тест проходит:

Quote:

11ea 3f68 ffff 5bff 3f03 0000 0000 4002
11ed 3f68 ffff 5bff 3f43 0000 0000 4002
Это состояния после первого и второго "DEC (HL)". После первого ZF не должен быть взведен, а после второго -- должен быть взведен. Для этой и всех предыдущих ячеек так и есть.

А для следующей ячейки мы получаем не только неверный ZF, но и вообще странные значения регистра F:

Quote:

11ea 3f68 ffff 5c00 3fab 0000 0000 4002
11ed 3f68 ffff 5c00 3fab 0000 0000 4002
Что если добавить к регистрам в трейсинге значение ячейки (HL)?

Lisitsin 28th March 2011 19:24

Quote:

Originally Posted by Higgins (Post 370260)
Что если добавить к регистрам в трейсинге значение ячейки (HL)?

Легко !

Lisitsin 28th March 2011 20:06

Готово. (HL) шлю в последнюю очередь.

Higgins 28th March 2011 21:26

Quote:

Originally Posted by Lisitsin (Post 370423)
TRACE_RAM-DONE_3.zip

Что-то совсем не похоже на правду. :) Как минимум, значение ячеек не уменьшается.

Lisitsin 28th March 2011 22:04

Прошу прощения:). Что-то у меня тактовая частота нейроимпульсов сегодня понижена.

Higgins 29th March 2011 00:06

Quote:

Originally Posted by Lisitsin (Post 370460)
TRACE_RAM-DONE_4.zip

Вот что происходит для ячейки #5BFF:

Quote:

11e9 3f59 ffff 5bff 3f19 0000 0000 4002 02
11ea 3f59 ffff 5bff 3f03 0000 0000 4002 01
11ed 3f59 ffff 5bff 3f43 0000 0000 4002 00
А вот что происходит для ячейки #5C00:

Quote:

11e9 3f59 ffff 5c00 3f19 0000 0000 4002 ff
11ea 3f59 ffff 5c00 3fab 0000 0000 4002 fe
11ed 3f59 ffff 5c00 3fab 0000 0000 4002 fd
Во втором случае исходное значение ячейки не #02, а #FF, чего не должно быть, если все работает как положено. Значит, дело не в эмуляции "DEC (HL)", а в том, что ячейка #5C00 не уберегла свое значение.

Очень хорошо было бы вывести все случаи модификации этой ячейки в формате PC:старое_значение:новое_значение. Если это сложно, то можно вместо ячейки (HL) в трейсинге вывести ячейку (#5C00) и посмотреть в каком месте она сбрасывается в #FF.

Lisitsin 29th March 2011 18:46

Разница где-то в софте. Шью старую версию - там всё нормально. Сейчас буду подбрасывать поочерёдно все страницы кода и смотреть в какой из них глюк.

Lisitsin 30th March 2011 00:57

Короче разобрался. Сам виноват. Гонял тест и забыл вернуть начальную инициализацию PC в ноль. Стартовал с адреса 0x04, отсюда и эффект. Сейчас исправил, но проблемы как были так и остаются. Попробую снова запустить zexall.

Lisitsin 31st March 2011 19:23

А проблеммка с видео оказалась по-сложнее, чем я думал. Картинку засинхронизировать удалось, но грязи ужасно много. прийдётся вводить в схему дополнительный провод от центрального процессора к видеопроцессору и дёргать за него, когда центральный обращается к памяти.
Вот как сейчас выглядит картинка:
http://www.youtube.com/watch?v=m1Wujk6t4QY

Higgins 31st March 2011 21:16

Quote:

Originally Posted by Lisitsin (Post 370904)
Попробую снова запустить zexall.

Есть какие-нибудь результаты?


All times are GMT +4. The time now is 16:59.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.