PDA

Просмотр полной версии : Регистры ВТ57



Saar
24.03.2016, 17:09
Не могу разобраться с тем, что происходит при записи в регистры адреса и счетчика ВТ57.
Адрес и счетчик сразу записываются в текущие значения? То есть если постоянно записывать новое значение в счетчик, то DMA цикл будет бесконечным? Или записывая новое значение в регистр адреса - DMA будет прыгать по разным адресам в пределах одного цикла?
В доках по ВТ57 ничего по данному вопросу нет.

Можно было бы предположить, что обновление внутренних регистров текущего цикла DMA не происходит до его завершения, а после чего берутся записанные значения. Но это по сути получается режим autoload, который почему-то использует регистры канала 3 для автообновления регистров канала 2.
Непонятки, в общем.

b2m
24.03.2016, 17:34
Можно предположить, что пока счёт не окончен, запись в регистры игнорируется. Режим автозагрузки, это фича только канала 2, при этом берутся значения регистров канала 3, который в этот момент не должен считать.

Saar
24.03.2016, 18:53
b2m,
в вашем emu как это реализовано?

b2m
24.03.2016, 23:22
Тупо пишется в регистры. Но ни одна программа этим не пользуется :)

Saar
25.03.2016, 13:43
b2m,
в Микроше наблюдается странное программирование ПДП.
Обычно, прежде чем запрограммировать 2 канал, тушится ВГ, программируется ПДП и в конце включается ВГ и активируется 2 канал ПДП в ВТ.
А в Микроше нет тушения ВГ. Процедуры обмена с магнитофоном в любой момент времени останавливают ПДП, а потом инициализируют ПДП заново. При этом ВГ не ставится в известность никак. После инициализации ПДП в ВГ выдается код старта, но это уже поздно, поскольку до этого ВГ продолжает запрашивать данные ПДП.
Так же процедура вывода байта на магнитофон используется при старте в качестве стартового звука "бздыщь".
Ну и как результат экран получается сдвинутым в произвольную позицию уже при старте Микроши.

Что с этим делать?

Pyk
31.03.2016, 15:14
Saar, как раз недавно переписывал у себя эмуляцию ВТ57 и разбирался с тем, как оно работает в железе.
При записи в регистр просто меняется младший либо старший байт адреса/счетчика и продолжается работа как ни в чем не бывало. То есть адрес будет увеличиваться уже относительно нового значения, а счетчик - уменьшаться. Никаких защелок для одновременного изменений обоих байтов, похоже, не предусмотрено.

Насчет Микроши - не совсем понял, оно так в железе работает?