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 7th May 2011 18:14

Quote:

Originally Posted by Lisitsin (Post 382115)
Трейсинг во вложении - для десятого теста.

Не похоже. Значение BC для каждого следующего теста увеличивается на #5F. В начале седьмого он равен #82B8. Для десятого он должен быть #82B8 + #5F * 3 = #83D5, т.е. первая строка должна начинаться так:

Quote:

9a0b 83d5 ...
А в целом замечательные результаты. Еще чуть, и дожмем.

Насчет запустить исполнение с заданного теста -- попробую покопать.

Lisitsin 7th May 2011 22:41

1 Attachment(s)
Есть несколько тысячных контрольных сумм десятого теста (вложение)

Lisitsin 8th May 2011 20:41

1 Attachment(s)
Трейсинг десятого теста:

Higgins 10th May 2011 22:01

Quote:

Originally Posted by Lisitsin (Post 382852)
TRACE_TST10_3.zip

Это трейсинг для 11-го теста. В начале 10-го BC должен быть #83d5.

Ниже следует табличка со значениями BC при прохождении управления через PC=#9a0b для всех тестов, начиная с второго.

Quote:

2 80dd
3 813c
4 819b
5 81fa
6 8259
7 82b8
8 8317
9 8376
10 83d5
11 8434
12 8493
13 84f2
14 8551
15 85b0
16 860f
17 866e
18 86cd
19 872c
20 878b
21 87ea
22 8849
23 88a8
24 8907
25 8966
26 89c5
27 8a24
28 8a83
29 8ae2
30 8b41
31 8ba0
32 8bff
33 8c5e
34 8cbd
35 8d1c
36 8d7b
37 8dda
38 8e39
39 8e98
40 8ef7
41 8f56
42 8fb5
43 9014
44 9073
45 90d2
46 9131
47 9190
48 91ef
49 924e
50 92ad
51 930c
52 936b
53 93ca
54 9429
55 9488
56 94e7
57 9546
58 95a5
59 9604
60 9663
61 96c2
62 9721
63 9780
64 97df
65 983e
66 989d
67 98fc
68 995b

Kakos_nonos 11th May 2011 16:47

Предлагаю добавить в проект эмулятор AY на Атмега8. На форуме где-то есть схемка.

Lisitsin 12th May 2011 08:37

1 Attachment(s)
Готово.

Higgins 12th May 2011 15:03

1 Attachment(s)
Quote:

Originally Posted by Lisitsin (Post 384166)
TRACE_TST10_4.zip

В строке 28435 после BIT 0, (HL) получаем:

Quote:

9c0b 7a86 be61 8003 245c 7acc 9dfc 1998
Должно быть:

Quote:

9c0b 7a86 be61 8003 2454 7acc 9dfc 1998
* * *

UPDATE: в приложении архив с версией Zexfix с опросом клавиатуры. При нажатии на любую кнопочку текущий цикл тестирования прерывается и управление уходит на следующий цикл. Надеюсь, это будет полезно для тех, кто мучает Zexfix. :)

BYTEMAN 12th May 2011 16:39

Kakos_nonos, смысла нет, так как АУгрик можно преспокойно купить у CHRV.

Black_Cat 12th May 2011 17:12

Quote:

Originally Posted by BYTEMAN (Post 384341)
Kakos_nonos, смысла нет, так как АУгрик можно преспокойно купить у CHRV.

BYTEMAN, ты типо специалист?
Смысл есть:
1) MSC51 дешевле AY
2) один MSC51 потянет эмуляцию 2х AY, т.е. TuboSound или даже TSFM, если разберутся с его устройством, или аналогично SAA.
3) этот же MSC51 может выполнять роль загрузчиа с SD карты и клавиатурного и мышиного контроллера.

Итого в принципе, в одной микросхеме можно получить функциональный аналог divIDE + TSFM или ZMSound + ZXMC! При том себестоимость железа в сумме будет меньше цены одного AY!

---------- Post added at 16:12 ---------- Previous post was at 16:09 ----------

И я бы как раз рекомендовал товарищу Lisitsin'у, подумать над над такой добавкой к своему компьютеру.

fifan 12th May 2011 17:55

У Lisitsinа девайс уже разведён и сделан. Вряд ли у него найдутся пины для подключения ещё одной Атмеги для эмулляции AY.

Black_Cat 12th May 2011 18:16

Quote:

Originally Posted by fifan (Post 384364)
Вряд ли у него найдутся пины для подключения ещё одной Атмеги для эмулляции AY.

fifan, вот не понимаю, зачем тут нужны домыслы человека не видевшего схему, если можно просто взять и посмотреть её

Kakos_nonos 12th May 2011 18:31

Эмулятор АУ на атмеге можно подключить по последовательному интерфейсу. Потребуется всего две ножки.

Lisitsin 12th May 2011 19:41

Quote:

Originally Posted by Higgins (Post 384314)
UPDATE: в приложении архив с версией Zexfix с опросом клавиатуры.

А вот за это С П А С И Б О. Ато я уже замучился в конец.

---------- Post added at 18:41 ---------- Previous post was at 18:31 ----------

Quote:

Originally Posted by Higgins (Post 384314)
В строке 28435 после BIT 0, (HL) получаем:

Как я понимаю, ошибочно взведён третий бит, а берётся он из старшего байта MEMPTR. Эх, не до конца он у меня прописан ... Может пришло время ко второй части Z80TESTS вернуься?

BYTEMAN 12th May 2011 20:54

Ладно эмулять проц, это полностью цифровая штука. Но эмулить звуковые чипы - это, IMXO, просто издевательство.
Quote:

Originally Posted by БК-0010 (Post 384352)
BYTEMAN, ты типо специалист?

А что, не похож? ;)

Higgins 12th May 2011 21:10

Quote:

Originally Posted by Lisitsin (Post 384392)
Как я понимаю, ошибочно взведён третий бит, а берётся он из старшего байта MEMPTR. Эх, не до конца он у меня прописан ...

В данном случае MEMPTR выставляется инструкцией LD SP, (nn). Она идет непосредственно перед BIT 0, (HL).

Titus 13th May 2011 02:00

Quote:

Originally Posted by BYTEMAN (Post 384420)
Ладно эмулять проц, это полностью цифровая штука. Но эмулить звуковые чипы - это, IMXO, просто издевательство.

Звуковые чипы - это тоже цифровые чипы с ЦАП в той или иной форме.

alone 13th May 2011 17:40

Следующее откровение от БК-0010 мы выслушаем после того, как он реализует эмуляцию AY на MSC51 (очевидно, имеется в виду MCS-51).

Black_Cat 13th May 2011 17:45

:) Дима, эмуляция AY на MSC51 уже давно реализована, года уж два или три :)

alone 13th May 2011 19:45

Ссылку в студию.

Black_Cat 13th May 2011 19:55

да, я ошибся :) , реализовано это не два или три, а четыре года назад :)
http://www.zx.pk.ru/showthread.php?t=5440

Что Дим, в SpeccyWiki и этого нет? :)

Lisitsin 13th May 2011 20:41

1 Attachment(s)
Исправил, не проходит. Сделал тысячные контрольные суммы десятого теста (приложение). Делаю более длинный подробный трейсинг.

alone 13th May 2011 20:59

Quote:

Originally Posted by БК-0010 (Post 384721)
да, я ошибся :) , реализовано это не два или три, а четыре года назад :)
http://www.zx.pk.ru/showthread.php?t=5440

Там нет кода эмуляции.

Higgins 13th May 2011 21:05

Quote:

Originally Posted by Lisitsin (Post 384730)
TRACE_TST10_CRC1000_3.zip

Это не похоже на контрольные суммы. Старшие половины ячеек в каждой строке совпадают. :)

У меня получилось такое начало:

Quote:

9c41 580a541f
9c41 414cdd66
9c41 74384859

Lisitsin 14th May 2011 09:58

1 Attachment(s)
Ой !
Исправляюсь ...
Ошибку вижу уже в первой контрольной сумме. Подробный трейсинг начала десятого теста во вложении.

Higgins 14th May 2011 21:25

Quote:

Originally Posted by Lisitsin (Post 384859)
TRACE_TST10_5.zip

Здесь все проходим. Давайте для этого теста выведем только строки для #9C09 <= PC <= #9C0D.

Lisitsin 15th May 2011 10:43

1 Attachment(s)
Готово:

Higgins 15th May 2011 11:30

Quote:

Originally Posted by Lisitsin (Post 385049)
TRACE_TST10_6.zip

После BIT 7, C получаем:

Quote:

9c0b 7a86 be61 8003 2438 7acc 9dfc 1998
Должно быть:

Quote:

9c0b 7a86 be61 8003 2490 7acc 9dfc 1998

Lisitsin 15th May 2011 12:09

1 Attachment(s)
Нашли !!!
Во всех тестах седьмого бита тестировался везде регистр В.
Десятый пошёл. Zexall проходит полностью. Пробую игруки ...

Lisitsin 15th May 2011 12:26

2 Attachment(s)
ROBOCOP без изменений (бува "n"), ELITE тоже:

Higgins 15th May 2011 13:16

Quote:

Originally Posted by Lisitsin (Post 385056)
Zexall проходит полностью.

Может быть стоит еще раз прогнать полностью версию без опроса клавиатуры. На всякий случай.

Quote:

Originally Posted by Lisitsin (Post 385060)
ELITE тоже

А что не так с ELITE?

Lisitsin 15th May 2011 13:24

Elite доходит до этого места и больше не реагирует на клавиатуру. Zexall запускаю.

Higgins 15th May 2011 13:35

Quote:

Originally Posted by Lisitsin (Post 385085)
Elite доходит до этого места и больше не реагирует на клавиатуру.

1) Разряды 7, 6 и 5 портов клавиатуры (те, что не соответствуют никаким клавишам) у вас возвращаются взведенными или сброшенными?

2) Все ли инструкции ввода поддержаны? IN A, (n), IN r, (C)/IN (C) -- все они должны уметь опрашивать клавиатуру.

Lisitsin 15th May 2011 14:15

Quote:

Originally Posted by Higgins (Post 385090)
1) Разряды 7, 6 и 5 портов клавиатуры (те, что не соответствуют никаким клавишам) у вас возвращаются взведенными или сброшенными?

2) Все ли инструкции ввода поддержаны? IN A, (n), IN r, (C)/IN (C) -- все они должны уметь опрашивать клавиатуру.

Разряды 7 и 5 взведены постоянно, а шестой соответствует сигналу магнитофона, но за полярность я не отвечаю. Так что может читаться и как ноль. Я в него копирую старший разряд десятиразрядного аналого - цифрового преобразователя микропроцессора, который подключен к шестому порту. Так что если сигнал на этой ноге ниже 2,5 В - там ноль, в противном случае единица.

Все команды IN опрашивают клавиатуру в том случае, если младший разряд адреса порта равен нулю. Иначе возвращается #FF.

Black_Cat 15th May 2011 14:22

Quote:

Originally Posted by Lisitsin (Post 385112)
Разряды 7 и 5 взведены постоянно

а должен быть D5 в нуле. Кроме того D6 на ZX48 и ZX128 (не +2, +3) - это функция того, что записано в порт бордюра #FE. На ZX48 начиная с Issue3, если в D4=1 #FE, то из D6 читается единица всегда, вместо сигнала магнитофона. На этом построена защита некоторых программ, которые вешаются, если не так.

Lisitsin 15th May 2011 14:27

Quote:

Originally Posted by БК-0010 (Post 385119)
Кроме того D6 на ZX48 и ZX128 (не +2, +3) - это функция того, что записано в порт бордюра #FE.

А что именно за функция? Какой-то разряд цвета бордюра? А что тогда отведено магнитофону, если шестой разряд отражает состояние бордюра?

Black_Cat 15th May 2011 14:40

Quote:

Originally Posted by Lisitsin (Post 385112)
Так что если сигнал на этой ноге ниже 2,5 В - там ноль, в противном случае единица.

не так, для TTL логики единица - это от 2V и выше, а 0 - от 0,8V и ниже.

---------- Post added at 13:29 ---------- Previous post was at 13:28 ----------

Quote:

Originally Posted by Lisitsin (Post 385120)
А что именно за функция? Какой-то разряд цвета бордюра?

я ж написал:

Quote:

Originally Posted by БК-0010 (Post 385119)
если записано в D4=1 #FE, то из D6 читается единица всегда, вместо сигнала магнитофона. На этом построена защита некоторых программ, которые вешаются, если не так.



---------- Post added at 13:40 ---------- Previous post was at 13:29 ----------

Кроме того, D3 #FE управляет чувствительностью читалки магнитофона:
D3=0 - низкая чувствительность
D3=1 - высокая чувствительность
Кроме того оба эти разряда образуют нелинейный 2х битный ЦАП, и сигнал на спикере насамделе имеет 3 уровня амплитуды, но цена разряда D3 очень маленькая, поэтому это на слух без нелинейного усилителя не различить. Но на отечественных клонах это уже более заметно, а в Фениксе цена разряда D3=0,5 D4. Советую сделать так же если есть возможность. На совместимости это не скажется.
Кроме того, если есть возможность - желательно вывести эти разряды на отдельные ноги, как в большинстве рассыпушных отечественных клонов, чтоб можно было получать биперное стерео.

Lisitsin 15th May 2011 14:45

Quote:

Originally Posted by БК-0010 (Post 385121)
не так, для TTL логики единица - это от 2V и выше, а 0 - от 0,8V и ниже.[COLOR="Silver"]

Спасибо за консультацию !

Про ТТЛ я пока ещё не забыл. Просто у меня сделано так:
На ножке микросхемы, которая отведена магнитофону, у меня пол питания (2,5 В). К этой ножке подводится через разделителбную ёмкость сигнал магнитофона (уровень линейного выхода). внутри AVR к этому выводу подключен 10-разрядный АЦП таким образом, что 5 В соответствует цифра 1023. Таким образом, копируя старший разряд АЦП в шестой разряд порта, я получаю ноль для низкого уровня сигнала магнитофона (отрицательная полуволна), а единицу для высокого (положительная полуволна).

Higgins 15th May 2011 14:51

Quote:

Originally Posted by Lisitsin (Post 385112)
Разряды 7 и 5 взведены постоянно, а шестой соответствует сигналу магнитофона, но за полярность я не отвечаю. Так что может читаться и как ноль. Я в него копирую старший разряд десятиразрядного аналого - цифрового преобразователя микропроцессора, который подключен к шестому порту. Так что если сигнал на этой ноге ниже 2,5 В - там ноль, в противном случае единица.

Все команды IN опрашивают клавиатуру в том случае, если младший разряд адреса порта равен нулю. Иначе возвращается #FF.

Пусть будет так.

Еще вопрос: случаи, когда сразу несколько разрядов в старшей половине адреса клавиатурного порта сброшены обрабатываются правильно?

Black_Cat 15th May 2011 14:53

терь понятно, это вход АЦП. Вот кстати D3 как раз смещает среднюю точку в АЦП, правда я не слышал, чтоб это где-то использовалось, а можно было-бы сделать простейший программный 2х битный АЦП последовательного приближения :)

Lisitsin 15th May 2011 15:05

Quote:

Originally Posted by Higgins (Post 385132)
Еще вопрос: случаи, когда сразу несколько разрядов в старшей половине адреса клавиатурного порта сброшены обрабатываются правильно?

Я надеюсь, правильно: уж много я на это сил и времени потратил. За это у меня отвечает клавиатурный контроллер.
Но подробного теста не делал. Правда тут уменя ещё одна проблемка всплыта: дочка залила тут клаву компотом, ту, на которой я отрабатывался. Она работала как часы и не сбоила ...
А у других клав что-то сбои частенько бывают: при отпускании клавиши может не заметить префикс f0 и думает, что клавиша ещё нажата - включается автоповтор. Прийдётся ещё потрудиться ...


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

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