Получится, но нужно в коренном смысле изменить архитектуру спека, уж больно Зетник ревностно относится к памяти.
Еще, у ВТ37 есть режим совместимости, при котором она тратит 4 такта на выборку 1 байта, 2 такта из них тратится на wait, с целью, чтоб устройства, не совместимые по временным характеристикам успели переключиться, именно в этом режиме все расчеты и проводились - если твоя память и зетник успеет отработать в режиме с отключенной совместимостью - впередСкорость работы ДМА будет 2 раза быстрее, и торможение Зетника будет еще 2 раза меньше
Опять же без паяльника и скальпеля тут не обойтись.
Что касается подключения ДМА к компу, если ты пошел на то чтоб порезать один проводник - недалек от того, чтоб порезать еще 3-4. Если нет на то смелости и умений, то опять же, Пентагоны частенько вылетали из-за плохого питания, или еще чего-то, куда ты понесешь его ремонтровать? Правильно, к дяде, а ему пофиг сколько проводков перерезать и ДМА он подключит без проблем. Опять же, в начале темы обсуждалось внедрение ДМА или ГС в новый комп, на ПЛИС и прочих матрицах. Что проще и дешевле реализовать в этом случае? Однозначно ДМА, т.к. эмулить зетника с ПЗУ никто не будет, а если наворачивать схему, то уже намного дороже будет, на что не каждый пользователь согласится - неоправданная для него стоимость, если к звуку у него рвения нет.
Про паяльник и скальпель еще, а как ты сделаешь расширенный экран без скальпеля? Однако он есть у многих
В частности у каждого клона свой разъем, в большинстве случаев не совместимый с другими, хотя бы по распиновке, от паяльника ты уже не избавишься.
Знаешь, ты меня убедилЯ подавлен и огорчен, что же делать? Но... Но... Но...
Забыл, а что мы слушаем? Ах-да, мы с винта читаем и воспроизводим оцифровочку... напомню ГС-у это вообще не по зубамДаже с таким бешеным джитером, коего даже самый ушастый не услышит.
Ладно, твой приведенный код можно несколько оптимизировать, причем имеется на вскидку 2 варианта, но подробности особо приводить не буду, только идею, т.к. эта тема уже превращается в мастерство программирования ДМА, а не см. сабжект.
Не будем говорить про то, что команды, не обращающиеся к памяти и выполняемые не в ПЗУ TR-DOS, на проце Z80 с 7МГц выполняются в 1.8-1.9 раза быстрее. Про то, что турба есть у большинства населения планеты Спектрум, мы тоже говорить не станем, это факт.
1. Это не совсем "правильный" со стороны ушей вариант, но не дает того джитера о коротом ты вел речь, однако появляется другой побочный эффект хоть и тоже не очень заметный, но скажи, что это не вариантВо время считывания с винта проц не будет заниматься графикой, правильно? Да. Во время проигрывания оцифровки мы не будем играть мод, правильно? Да. Значит у нас задействован только один канал, остальные простаивают (ну если успеем считать достаточно инфы, то 2 задействованы, 2 стоят). вариант заключается в том, что мы запускаем проигрывание звука на канале А, инициализируем канал В, и в это время читаем в буфер, на который настроили канал В, с винта оцифровку. По приходу прерывания нам надо всего лишь забросить в регистр масок новое значение, т.е. что-то типа:
int ;17 - вызов прерывания
ld b,#ac ;7 - по-любому надо
out(c),a ;12 - запуск проигрывания
Сколько тактов?
Начинается воспроизведение второго буфера на канале В и мы неспеша инициализируем канал А и заполняем его буфер.
2. Идея только что, по дороге на работу явилась. Но для ее реализации необходимо 64кб памяти, но опять же, при считывании с винта звуковых данных мы больше ничем другим, как-то графикой, генерированием сверхсложных сцен и пением, заниматься не будем - все равно не успеем, поэтому этот вариант тоже имеет право на существование. ДМА не обнуляет регистры по окончанию передачи, счетчик устанавливается на следующий байт, когда проигрывается блок 64кб, хочешь, не хочешь, а при переполнении 16битного регистра он обнулится, на этом и сыграем. Делим эту область на 4 буфера, по 16кб, пока играется первый буфер - читаем во второй следующую порцию данных, потом по приходу прерывания - не загружая адрес начала сэмпла, только его длину, загружаем регистр масок - играем второй буфер, читаем в третий... и так далее по кольцу.
psb, я спрашивал у тебя на счет проигрывателя на ГС, как он умудряется воспроизводить звук интерполируя его на лету (хотя эта операция не очень быстро выполняется), обрабатывать паттерны мода, отыскивая новую ноту, и как кто-то упоминал, при этом получая команду на проигрывание эффекта во время игры, которую он самостоятельно обрабатывает, запихивая этот звук в нужный канал.
И это с учетом того, что ты вчера доказал, что между тиками при проигрывании не особо с вычислениями-то и разгонишься, пусть даже при частоте дискретизации 37.5кГц период будет и по-более, частота проца у ГС выше, но все же, надо обработать все 4 канала одновременно.
Ты утверждаешь, что в прошивке ГСа нет ошибок? Ты просчитал все тайминги его проигрывателя и утверждаешь что он не воспроизводит звук с джитером?





Скорость работы ДМА будет 2 раза быстрее, и торможение Зетника будет еще 2 раза меньше
Я подавлен и огорчен, что же делать? Но... Но... Но...
Ответить с цитированием