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)

Higgins 20th March 2011 12:46

Quote:

Originally Posted by Lisitsin (Post 368145)
TRACE_9426_1.zip

Мда. В строке 17131 у нас различие в регистре F. Это после исполнения "BIT 0, (HL)". Причем различие не во флагах 3 и 5, а в ZF и PF. То есть, снова что-то не то читается из памяти. В момент чтения HL равен #FF45. До строки 17131 эта ячейка ни разу не модифицируется. Значение этой ячейки до первой модификации должно быть равно #0E=%1110. Нулевой бит сброшен. У меня на эмуляторе после проверки бита ZF и PF взведены, что и должно быть, если значение ячейки равно #0E. У вас в трейсинге оба флага сброшены. При этом, судя по тесту на флаги, сама инструкция реализована верно. Остается грешить на память?

Что можно попробовать. Можно вывести тот же трейсинг, скажем, первые 18000 строк, но в каждую строку добавить текущее значение в ячейке #FF45.

Lisitsin 20th March 2011 13:10

Попробую включить ячейку памяти ff45 в трейсинг. Как я понял, IX, IY, SP сейчас особенного значения не играют. Может сделать трейсинг такого вида: PC : BC : DE : HL : [FF45] ? И если да - то с какой точки лучше начать трейсинг ?

---------- Post added at 12:10 ---------- Previous post was at 11:55 ----------

Оппа-па !
Пишу в бейсике:
10 POKE 65349,0
20 PRINT PEEK (65349)

В ответ : 255.

Работаю ...

Higgins 20th March 2011 13:20

Quote:

Originally Posted by Lisitsin (Post 368174)
Попробую включить ячейку памяти ff45 в трейсинг. Как я понял, IX, IY, SP сейчас особенного значения не играют. Может сделать трейсинг такого вида: PC : BC : DE : HL : [FF45] ? И если да - то с какой точки лучше начать трейсинг ?

Лучше с той же.

Quote:

Originally Posted by Lisitsin (Post 368174)
В ответ : 255.

Вот-вот. :)

Lisitsin 20th March 2011 14:21

Прогнал тест RAM. Всё чисто. Проблемы эмуляции (приложение: экранная область заполнялась различными значениями, читаемыми из RAM. Горизонтальная граница соответствует адресу FFFF, выше - ОЗУ).
Трейсинг готовлю.

goodboy 20th March 2011 14:37

раньше многие эмули выдавали неверное значение в HL при выполнении LD HL,(65535).

Lisitsin 20th March 2011 14:46

Quote:

Originally Posted by goodboy (Post 368214)
раньше многие эмули выдавали неверное значение в HL при выполнении LD HL,(65535).

По-моему такой же случай.

Lisitsin 20th March 2011 15:44

Уже в начале значение [ff45] равно 0x47.
Шлю PC: BC: DE: HL: AF: [ff46]:[ff45] ([ff46] корректна только младшая тетрада).
Если загрузить z80tests и нажать "3", затем из бейсика PRINT PEEK 65349 (0xff45) то тоже получаем 71 (0x47).
После старта бейсика непосредственно PRINT PEEK 65349 даёт 255 :v2_conf2:. А должно быть 0. Такое ощущение, что туда стек заползает. Может старт бейсика потрейсить?

Higgins 20th March 2011 17:12

Quote:

Originally Posted by Lisitsin (Post 368233)
После старта бейсика непосредственно PRINT PEEK 65349 даёт 255 . А должно быть 0. Такое ощущение, что туда стек заползает. Может старт бейсика потрейсить?

Сразу после старта Бейсика значение в 65349 скачет (очевидно, во время ожидания ввода стек топчется по этой ячейке).

Значение 14 в 65349 для z80tests кладет его Бейсик-загрузчик через исполнение "CLEAR 32767". Если после старта Бейсика набрать эту команду, и затем сделать "PRINT PEEK 32767", то мы должны получить именно 14. У вас это так или нет?

Lisitsin 20th March 2011 17:21

Quote:

Originally Posted by Higgins (Post 368255)
"CLEAR 32767". Если после старта Бейсика набрать эту команду, и затем сделать "PRINT PEEK 32767", то мы должны получить именно 14. У вас это так или нет?

В смысле потом набрать PRINT PEEK 65349?
Всё равно 71:
http://www.youtube.com/watch?v=hDMz6wEdJgI
А PRINT PEEK 32767 даёт 62 (0X3E)

Higgins 20th March 2011 17:54

Quote:

Originally Posted by Lisitsin (Post 368258)
В смысле потом набрать PRINT PEEK 65349?

Да, опечатка.

Quote:

Originally Posted by Lisitsin (Post 368258)
Всё равно 71.

Копания показали, что ячейка модифицируется обработкой прерывания. В нее кладется старшая половина адреса возврата.

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

Давайте вернемся к тесту на MEMPTR. Около ста тысяч строк есть. Сколько там еще до выхода в Бейсик с ошибкой? Если возможно, выкладывайте остальное.

Lisitsin 20th March 2011 17:59

Есть ещё немножко (вложение).
Может имеет смысл запуститься по-ближе к самой ошибке?

Higgins 20th March 2011 20:48

Quote:

Originally Posted by Lisitsin (Post 368270)
Может имеет смысл запуститься по-ближе к самой ошибке?

Тесты для разных инструкций копируют соответствующие фрагменты кода в одни и те же адреса, которые исполняются в цикле, поэтому поймать только по значению PC не получится. Условие получается такое: начиная с первой встретившейся инструкции "EX (SP), IX" по адресу PC=#9428 и далее все инструкции со всеми регистрами пока управление не перейдет в Бейсик.

Lisitsin 20th March 2011 22:25

Есть немножко.

Higgins 20th March 2011 22:54

Quote:

Originally Posted by Lisitsin (Post 368378)
TRACE_EX_IX_(HL)_1.zip

Имеем следующий код:

Code:

#9414 LD IX, #9439
...
#9422 PUSH IX
#9424 LD IX, #2114
#9428 EX (SP), IX  ; судя по трейсингу, получаем IX=#9439 -- OK
#942A EX (SP), IX  ; получаем IX=#2114 -- OK
#942C POP IX  ; а здесь получаем IX=#2139 вместо #9439
#942E NOP
...
#94AC JP IX  ; а здесь, естественно, вылетаем в Бейсик

То есть младшую половину POP загружает правильную, а в старшую будто ничего не загружает вообще.

Lisitsin 21st March 2011 20:48

Прийдётся немного поэксперементировать. Глюк найден серьёзный. Уверен, что это в нём всё дело.
Моя бесконечная благодарность персонально Higgins. Разбираюсь.

Lisitsin 22nd March 2011 18:57

Всех приветствую.
Есть хорошие новости. Глюк устранён, загружается корректно, ROBOCOP научился ходить, ELITE продвинулась, но пока не летает. Jumping Jack заработал. Zexall грузится, но виснет в самом начале тестов.
ROBOCOP: http://www.youtube.com/watch?v=eWriMB0FckI
ELITE: http://www.youtube.com/watch?v=3vIRnnXrpJw
Jumping Jack: http://www.youtube.com/watch?v=wMY9tkJa6RQ

BYTEMAN 22nd March 2011 19:07

Lisitsin, Dominoes заработало?

Lisitsin 22nd March 2011 19:29

Quote:

Originally Posted by BYTEMAN (Post 368941)
Lisitsin, Dominoes заработало?

Заработало.
http://www.youtube.com/watch?v=0GslAEOQjdk

Higgins 22nd March 2011 19:56

Quote:

Originally Posted by Lisitsin (Post 368939)
Глюк устранён

А в чем была проблема?

Quote:

Originally Posted by Lisitsin (Post 368939)
ROBOCOP научился ходить

Буква "N" на экранах рисуется с одним и тем же дефектом. При том, что другие буквы выводятся нормально. Значит, образ этой буквы в памяти испорчен. Вопрос в том, появился ли этот дефект в памяти в процессе загрузки или в процессе распаковки и/или перемещений правильно загруженной программы.

Если загрузить ROBOCOP еще раз, будет ли в точности тот же дефект с буквой "N"?

Lisitsin 22nd March 2011 20:38

Приветствую, Higgins. Без вас долго бы искал. Дело в том, что в AVR не хватает регистрового файла (32 РОН) для всех целей эмуляции и приходится использовать регистры пространства ввода-вывода, запись и чтение которых не влияет на общую работоспособность. Для регистровых пар IX и IY я чисто механически выбрал TCNT1H:TCNT1L и OCR1BH:OCR1BL - парные регистры блока таймера - счётчика, чтение которых в AVR имеет свои особенности и оптимизировано для обеспечения чтения обоих байт 16-битного устройства в одном такте. Вот на это я и напоролся. Переназначил IH и IXL на другие регистры ввода-вывода - и всё сразу закрутилось.
В ROBOCOP я замечал искажения текста и раньше. С чем это связано пока не знаю. Бейсик текст выводит нормально. ROBOCOP сейчас загружу ещё раз.

---------- Post added at 19:38 ---------- Previous post was at 19:21 ----------

Некоторые буквы в ROBOCOP с дефектом:
http://www.youtube.com/watch?v=GvnZxR84jrM

Higgins 22nd March 2011 22:27

5 Attachment(s)
Quote:

Originally Posted by Lisitsin (Post 368959)
Некоторые буквы в ROBOCOP с дефектом:

Дефекты при разных загрузках разные. Более того, при смене экранов буква "N" становится все хуже и хуже. Это значит, что скорее всего дело не в загрузке, а в исполнении кода.

Lisitsin 22nd March 2011 22:43

Quote:

Originally Posted by Higgins (Post 368994)
Это значит, что скорее всего дело не в загрузке, а в исполнении кода.

Может его ещё сильнее замучить?

BYTEMAN 22nd March 2011 22:45

Quote:

Originally Posted by Lisitsin (Post 368951)

Это тоже хорошо, но я скидывал ссылку на немного другую версию игры, которая полностью Бейсиковая :)
http://zx.pk.ru/showpost.php?p=367921&postcount=433

Попробуйте загрузить её (вариант 48к). Очень интересно, как заработает она :)

osa 22nd March 2011 22:53

Quote:

Может его ещё сильнее замучить?
ELITE: http://www.youtube.com/watch?v=au5I39OftIg
Это видео - точная копия уже добавленного ранее видео.
Сожалеем об этом.

Lisitsin 22nd March 2011 22:54

Грузился дважды. Загружается, играет музыка, пишет что подождите, я готовлюсь, пищит и отправляется в бейсик с нулевого адреса.
http://www.youtube.com/watch?v=C96cZWhQAcw
---------- Post added at 21:54 ---------- Previous post was at 21:53 ----------

[/COLOR]
Quote:

Originally Posted by osa (Post 369008)
Это видео - точная копия уже добавленного ранее видео.

Упс !
Прошу прощения.

goodboy 22nd March 2011 23:07

Quote:

Originally Posted by BYTEMAN (Post 369003)
я скидывал ссылку на немного другую версию игры, которая полностью Бейсиковая

а чем игра на бейсике отличается от той-же элиты ??? (в плане исполнения)

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

BYTEMAN 22nd March 2011 23:12

Quote:

Originally Posted by goodboy (Post 369017)
а чем игра на бейсике отличается от той-же элиты ??? (в плане исполнения)

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

Один раз она не загрузилась. Загрузится ли сейчас?

Lisitsin 22nd March 2011 23:21

Quote:

Originally Posted by goodboy (Post 369017)
а чем игра на бейсике отличается от той-же элиты ??? (в плане исполнения)

советую попробовать запустить игрушку mercenary

Висьнет на этом месте:

Lisitsin 22nd March 2011 23:38

Quote:

Originally Posted by BYTEMAN (Post 369021)
Один раз она не загрузилась. Загрузится ли сейчас?

Грузиться грузится. После загрузки уходит в бейсик.

BYTEMAN 23rd March 2011 00:03

Quote:

Originally Posted by Lisitsin (Post 369035)
Грузиться грузится. После загрузки уходит в бейсик.

А должна запускаться игра... Press any key должно появиться.

Lisitsin 23rd March 2011 00:35

Quote:

Originally Posted by BYTEMAN (Post 369043)
А должна запускаться игра... Press any key должно появиться.

Я там ссылочку давал на #466

BYTEMAN 23rd March 2011 00:48

Уже лучше :)

Lisitsin 23rd March 2011 20:20

Вот ещё одна игрушка - SOLDIER OF LIGHT:
http://www.youtube.com/watch?v=ZziZYG2kna8

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

А есть среди нас кто-то, планирующий собрать сей девайс? Или может кто-то уже собирает?

osa 23rd March 2011 20:48

Жду процессора:)

solegstar 23rd March 2011 21:06

тож планирую:)

---------- Post added at 19:06 ---------- Previous post was at 18:54 ----------

печатка и схема в первом сообщении последней редакции???

Lisitsin 23rd March 2011 21:27

Прошивочки для первопроходцев:
Насчёт печати и схемы уже не помню. Скорее всего нет. Кидаю текущие

zorel 23rd March 2011 21:28

Lisitsin, я тоже планирую. Только я бы хотел использовать в качестве клавиатуры обычную спековскую. Что-бы корпус спектрума использовать.

Lisitsin 23rd March 2011 21:35

Quote:

Originally Posted by zorel (Post 369251)
Lisitsin, я тоже планирую. Только я бы хотел использовать в качестве клавиатуры обычную спековскую. Что-бы корпус спектрума использовать.

Боюсь сие будет трудно. Опрос имеет свою специфику. Если только модифицировать команду IN, и испытания потребуются. Хотя невозможного ничего нет.

solegstar 23rd March 2011 21:35

Lisitsin, будет возможность заказать печатки с покрытием, если достаточное количество желающих наберется? впринципе фоторезистом сделаю, но интереснее было бы иметь печатку заводского производства...

Lisitsin 23rd March 2011 21:42

Quote:

Originally Posted by solegstar (Post 369254)
Lisitsin, будет возможность заказать печатки с покрытием, если достаточное количество желающих наберется? впринципе фоторезистом сделаю, но интереснее было бы иметь печатку заводского производства...

Сие будет трудно. Сам утюгом делаю. Но есть какая-то кантора, называется по-моему РЕЗОНИТ. Делают на заказ. Попробуйте в поисковике набрать ...


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

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