Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Переключение регистров в AY (выбор несуществующих регистров) (http://zx-pk.ru/showthread.php?t=16667)

ARTi 25th August 2011 04:25

Переключение регистров в AY (выбор несуществующих регистров)
 
Всем здравия!

Стал тут зырить навороты поверх и рядом с AY. Посмотрел схему Turbo Sound по NedoPC. Возникли вопросы:
1) Насколько я понял, AY создавался исходя из функциональности и простоты, из-за чего, в частности, используется неполная дешифрация номера регистра по первым 4-м битам. Так ли это?
2) По схеме NedoPC Turbo Sound не увидел блокировки выбора регистра AY в момент выбора одной из AY путем выбора несуществующего регистра. Если по 1-му вопросу ответ - да, то, получается, что одновременно с выбором одной из AY происходит выбор регистра 0x0E или 0x0F для одной из или даже обеих AY! Так ли это?
3) Если по 2-му вопросу ответ - да, то успевает ли произойти выбор регистра в той AY, с которой производится переключение?
Посмотрел в unreal - сделано по следующей схеме: 1) да, 2) да, 3) нет.

А как на самом деле (в реальных AY, а кстати есть же еще и YM, и другие...)?

Спасибо.

Black_Cat 27th August 2011 00:19

Quote:

Originally Posted by ARTi (Post 410651)
1) Насколько я понял, AY создавался исходя из функциональности и простоты, из-за чего, в частности, используется неполная дешифрация номера регистра по первым 4-м битам. Так ли это?

Нет, все внутренние регистры адресуются по 8 битам

Quote:

Originally Posted by ARTi (Post 410651)
2) По схеме NedoPC Turbo Sound не увидел блокировки выбора регистра AY в момент выбора одной из AY путем выбора несуществующего регистра. Если по 1-му вопросу ответ - да, то, получается, что одновременно с выбором одной из AY происходит выбор регистра 0x0E или 0x0F для одной из или даже обеих AY! Так ли это?

нет, ты чёто не то понял, по умолчанию выбран AY0($FE), больше никаких умолчаний нет

ARTi 27th August 2011 00:57

Quote:

Originally Posted by Black_Cat
Нет, все внутренние регистры адресуются по 8 битам

Почему тогда в популярном эмуле сделан выбор регистра лишь на основании младших 4-х бит? (у меня тоже пока так сделано, и думаю в других эмулях тоже).
И если регистры адресуются по 8 битам, то что тогда читается из несуществующих? Или попытка выбора несуществующего регистра просто ничего не выбирает?

Quote:

Originally Posted by Black_Cat
нет, ты чёто не то понял, по умолчанию выбран AY0($FE), больше никаких умолчаний нет

Я не об умолчаниях говорил. А о том, что значение, предназначенное для селекции AY (0xFE или 0xFF), не блокируется и беспрепятственно проходит в AY, где влияет на ее состояние (т.е. одновременно выбирается хз какой регистр в хз каком AY).

Собственно вопросы мои как раз по этим особенностям.

P.S. А по-моему, хотя мой склероз может и ошибаться, когда у меня был реал, я проверял на нем чтение/запись регистров AY во всем диапазоне 0-255, и вроде получалось, что дешифрация по младшим 4-м битам, а старшие на выбор регистра не влияют...

Black_Cat 28th August 2011 23:47

Quote:

Originally Posted by ARTi (Post 411041)
P.S. А по-моему, хотя мой склероз может и ошибаться, когда у меня был реал, я проверял на нем чтение/запись регистров AY во всем диапазоне 0-255, и вроде получалось, что дешифрация по младшим 4-м битам, а старшие на выбор регистра не влияют...

о каких 4х битах речь? Я о внутренних регистрах, а ты?
Quote:

Originally Posted by ARTi (Post 411041)
Я не об умолчаниях говорил. А о том, что значение, предназначенное для селекции AY (0xFE или 0xFF), не блокируется и беспрепятственно проходит в AY, где влияет на ее состояние (т.е. одновременно выбирается хз какой регистр в хз каком AY).

почему х.з. какой, именно $FE и $FF

ARTi 29th August 2011 11:15

Quote:

о каких 4х битах речь? Я о внутренних регистрах, а ты?
Я о том, что регистры AY выбираются значениями от 0 до 15, это 4 бита. Я про разрядность и дешифрацию выбора регистров, а не про них самих.

Quote:

почему х.з. какой, именно $FE и $FF
Что это за регистры? Я знаю только про регистры $00...$0F.

Black_Cat 29th August 2011 22:18

Quote:

Originally Posted by ARTi (Post 411511)
Что это за регистры?

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

---------- Post added at 21:18 ---------- Previous post was at 21:09 ----------

Quote:

Originally Posted by ARTi (Post 411511)
Я о том, что регистры AY выбираются значениями от 0 до 15, это 4 бита. Я про разрядность и дешифрацию выбора регистров, а не про них самих.

под рукой pdf нет, но насколько помню внутри AY дешифрируются все 8 бит. Если в эмулях токо 4 - они кривые

psb 30th August 2011 02:59

в эмулях попробуйте поменять AY/YM.

---------- Post added at 03:59 ---------- Previous post was at 03:57 ----------

да! и даташиты читать первым делом!

а собственно, что за интерес-то, успевает или нет включиться какой-то левый регистр? на звук это не влияет, а учитывать это и писать говнокод не нужно!

ARTi 30th August 2011 06:35

Quote:

Originally Posted by psb
в эмулях попробуйте поменять AY/YM.

При чем здесь это? Я смотрел исходный код, так что настройки тут не при чем.

Quote:

Originally Posted by psb
даташиты читать первым делом!

В документации утверждается (насколько я понял), что выбор в старших 4-х битах значения, отличного от 0, переводит внутреннюю шину в высокоимпедансное состояние и, т.о., выбор регистра не производится. Т.е. регистр выбирается лишь при значениях 0x00-0x0F. Это, тащемта, отвечает на мои вопросы, но есть нюанс. Например, в той же документации сказано, что частота каждого из меандров, генерируемых тремя генераторами тонов, получается делением входной частоты на 16 и дальнейшим уменьшением заданного в 12-битовом регистре периода значения до нуля. Что, строго говоря, не соответствует действительности - ссылку сейчас предоставить не могу, но вроде где-то на форуме обсуждалось.
Вообще даташиты на девайсы нередко пестрят упрощениями и/или ошибками, иногда даже грубыми в масштабах целого раздела (взять хотя бы NXP2214, раздел про АЦП). Конечно, это понятно тем, у кого достаточно опыта в этом вопросе. Остальным необходимо принять, что документации можно верить для понимания общей картины, а конкретные моменты необходимо проверять экспериментально.
Взять оф. документацию на Z80. Есть там ошибки/недочеты/недоговорки? Конечно есть. Аналогично с AY.
Потому и задаю здесь вопросы.

Quote:

Originally Posted by Black_Cat
насколько помню внутри AY дешифрируются все 8 бит. Если в эмулях токо 4 - они кривые

Может и так, а может - в соответствии с вышесказанным - и нет. Отсюда и мои вопросы.

Quote:

Originally Posted by psb
а собственно, что за интерес-то, успевает или нет включиться какой-то левый регистр?

Именно.

Quote:

Originally Posted by psb
на звук это не влияет, а учитывать это и писать говнокод не нужно!

У Вас неверные понятия о том, что такое "говнокод". Говнокод - это говенный код, а не код для обеспечения лишних или ненужных возможностей, что, скорее всего, Вы и имели в виду. Две большие разницы. Хотя, Вы и сами должны это знать не хуже меня, указанная в Вашем профиле профессия говорит сама за себя.
С другой стороны, Ваше мнение на этот счет меня не волнует - ничего личного. Для эмуляции Z80 исследовали все, что только можно и даже то, что вроде как и не нужно (флаг p/v в блочных операциях в/в, например). Мне недостает инфы такого же рода относительно AY, вот и все. Для полноты картины, так сказать.

psb 30th August 2011 09:22

давайте тогда по-порядку.
Quote:

Originally Posted by ARTi (Post 411730)
Я смотрел исходный код, так что настройки тут не при чем.

какой такой исходный код вы смотрели? вы меня заставили усомниться в своих знаниях и проверить свои слова;) итого, я вместо вас сделал этот опыт:
если в эмуле стоит модель AY, то 4 старших бита регистра отбрасываются, и записывая в регистр 17, мы реально пишем в рег. 1. и читаем из регистра 1 то, что записали (на самом деле именно из рег.1 мы прочитаем только 4 мл. бита).
если поставить модель YM2149, то регистров выше 16 нет вообще и читается из них FF. на этой методике еще в 90х были разработаны детекторы типа муз.проца.

ну и не забывайте еще о TSFM, там регистров больше 16.

Quote:

Originally Posted by ARTi (Post 411730)
Например, в той же документации сказано, что частота каждого из меандров, генерируемых тремя генераторами тонов, получается делением входной частоты на 16 и дальнейшим уменьшением заданного в 12-битовом регистре периода значения до нуля. Что, строго говоря, не соответствует действительности - ссылку сейчас предоставить не могу, но вроде где-то на форуме обсуждалось.

ну вы ссылку, все же, поищите;) что-то не верится. как еще-то? можно увеличивать и сравнивать;)

Quote:

Originally Posted by ARTi (Post 411730)
У Вас неверные понятия о том, что такое "говнокод". Говнокод - это говенный код, а не код для обеспечения лишних или ненужных возможностей, что, скорее всего, Вы и имели в виду.

у меня простые понятия говнокода: должен работать, а не работает - говнокод.
вот скажите, вам кто-то гарантировал (в доке по TS), какой будет включен регистр после смены чипа? или вы так уверены, что не будет никакой иной схемы включения нескольких муз.процов? завтра выйдет новый клон с интегрированным TS и другой схемой. сэкономите 1 копейку, потом у кого-то ваш ГОВНОКОД не заработает. вот и весь расклад;)

я бы понял эти вопросы в контексте создания эмуля, а с т.з. обычного программинга AY - это не нужно использовать.

ARTi 30th August 2011 11:45

Quote:

Originally Posted by psb
давайте тогда по-порядку

Давайте, только читать тему надо повнимательнее.
Quote:

Originally Posted by psb
если в эмуле стоит модель AY, то 4 старших бита регистра отбрасываются, и записывая в регистр 17, мы реально пишем в рег. 1. и читаем из регистра 1 то, что записали (на самом деле именно из рег.1 мы прочитаем только 4 мл. бита)

Так об AY и речь! У меня где-то про YM написано? Где??
Quote:

Originally Posted by psb
ну вы ссылку, все же, поищите что-то не верится. как еще-то? можно увеличивать и сравнивать

Увеличивать и сравнивать, да, так и сделано. Ссылку-то я найду, почему сразу и не привел, что нашел ее поиском совсем другой темы, а теперь вот... Но может, Вы раньше меня найдете - ведь ищущий истину сам найдет, не дожидаясь, когда на блюдечке с голубой каемочкой подадут...
Quote:

Originally Posted by psb
у меня простые понятия говнокода: должен работать, а не работает - говнокод.

Это самая большая ошибка, затрудняющая любые исправления. Никакой код Вам лично ничего не должен. И мне он тоже ничего не должен. Он просто не работает, но что хуже, он не работает иногда.
Quote:

вот скажите, вам кто-то гарантировал (в доке по TS), какой будет включен регистр после смены чипа?
Мне этот TS нафиг не сдался, я его проэмулирую и все, когда это будет я не знаю, а привел его лишь в качестве наглядного примера.
Quote:

Originally Posted by psb
или вы так уверены, что не будет никакой иной схемы включения нескольких муз.процов?

Я ни в чем не уверен, потому и вопросы задаю - может порой они кажутся глупыми (потому и раздел соответствующий выбрал для темы), но некоторые вместо того чтобы по делу ответить, просто находят повод для глумления.
Quote:

Originally Posted by psb
я бы понял эти вопросы в контексте создания эмуля, а с т.з. обычного программинга AY - это не нужно использовать

Дело в том, что как раз таки и не поняли.
Я настоятельно рекомендую вернуться к теме. Ваша невнимательность и резкость уже привели как минимум к 2-м постам не по теме: один - Ваш; другой - мой, потому что я не сдержался. Со своей стороны я постараюсь больше не допускать такого неуважения к форумчанам.

Тем не менее, свои вопросы я не отменял. Кстати, после прочтения расширенной версии даташита, возникли еще вопросы - по поводу регистров 0x0E и 0x0F. Но об этом чуть позже, возможно я сам разберусь и тут изложу.

Прошу прощения за досадное отклонение от темы. У кого есть соображения, пожалуйста, выкладывайте.


All times are GMT +4. The time now is 00:40.

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