Кто знает, есть ли в Векторе скрытые регистры, которые можно использовать как ячейки памяти?
В которые можно было-бы записать произвольные значения.
Например можно-ли остановить ВИ53 и использовать регистры каналов как 6 Байт памяти?
Вид для печати
Кто знает, есть ли в Векторе скрытые регистры, которые можно использовать как ячейки памяти?
В которые можно было-бы записать произвольные значения.
Например можно-ли остановить ВИ53 и использовать регистры каналов как 6 Байт памяти?
KTSerg, часы реального времени, например, на КР512ВИ1 имеют 50байт памяти, но вот только эти сами часы на Векторе практически не встречаются.
Вроде бы в эту тему.
Допустим, я хочу написать жутко динамическую игру.
Для этого я собираюсь использовать под игровое поле поочерёдно то план 0 то план 1, план 2 скажем будет под индикаторы, план 3 не показывается.
Включать/выключать планы 0/1 я собираюсь конечно палитрой.
Вопрос - как это правильно организовать?
Правильно ли я понимаю, что цикл игры должен завершаться hlt и затем сразу установка палитры - переключение планов.
Или же лучше поместить включение нужной палитры прямо в прерывание, сразу после установки режимов дисплея?
Или можно и так и так?
Можно и так и так. Немного капитанства - если программирование палитры в основном обработчике прерываний, но реально все время программировать палитру 50 раз в секунду не нужно, организуем флаг необходимости программирования палитры и проверяем его в обработчике (или jmp с модифицируемым адресом).
Спасибо.
Процессор работает на частоте 3 МГц, получается на один фрейм 60000 циклов процессора - или меньше?
Где можно посмотреть табличку циклов процессора по операциям?
По поим наблюдениям, очистка одного плана экрана через push занимает больше одного фрейма - это норм или я накосячил?
В заводском мануале Вектора по Ассемблеру. Почему именно там, а не, скажем, в интеловском даташите по i8080 - в Векторе процессор работает не на полной скорости из-за особенностей доступа к шине видеоконтроллера, и поэтому длительность исполнения команд на Векторе считается именно в циклах (каждый из который равен какому-то количеству тактов).
312 строк*192 такта=59904 такта/фрейм.
Например здесь в вектор-user 15, правда там есть пара-тройка опечаток. Где-то был исправленный вариант, кажется svofski выкладывал (не в картотеке).
Если полностью развернуть цикл очистки (что конечно не стоит делать), получится 16 тактов*4096 команд=65536 тактов, т.е. немного больше длительности фрейма.
Речь вот об этой табличке: https://github.com/svofski/vector06c...uction_Timings
Пытаюсь сократить свою демку (для ДЕМОДУЛЯЦИЯ 2021 - нужно не больше 256 байт) и вот дошёл до программирования палитры цветов.
Вот установка палитры из программы прерываний (взято у Лебедева из "Секреты Вектора")
Что можно в ней сократить ?
В основном я имею ввиду команду OUT 0CH
поскольку у Лебедева 8 раз прописана OUT 0CH (для надёжности т.к. некоторые Векторы имели плохую запись в ОЗУ цветогенератора)
в тоже время у Черезова всего лишь 3 раза OUT 0CH
а просматривая исходники других авторов я видел даже 2 раза OUT 0CH
Эмулятор и с одного раза OUT 0CH пишет как надо. Но не знаю на ДЕМОДУЛЯЦИИ на чём будут запускать - на реальном Векторе или на эмуляторе.
Где золотая середина ? :)
;========================
MVI A,88H
OUT 00H
LXI H,COLR15 ; ЗАПИСЬ ПАЛИТРЫ.
LXI D,100FH ; d=16 e=15
INIT1: MOV A,E
OUT 02
MOV A,M
OUT 0CH
OUT 0CH
OUT 0CH
OUT 0CH
OUT 0CH
DCX H
OUT 0CH
DCR E
OUT 0CH
DCR D
OUT 0CH
JNZ INIT1
mvi a,15 ; УСТАНОВКА ЦВЕТА БОРДЮРА
OUT 02
;========================
Ещё вопрос, что будет если квазидиск подключен, а в коде вот этих начальных настроек нету, будет ли это мешать исполнению программы ?
XRA A ;ВЫКЛ. ОЗУ КВАЗИДИСКА.
OUT 10H
Если глянуть исходники МДОС Т-72, то там палитру тоже устанавливали за два раза, но между ними была небольшая задержка:
Думаю, такой вариант можно считать оптимальным и по скорости, и по объёму.Код:...
L_F613: OUT 00Ch ; палитра -- установка физического цвета
PUSH PSW
POP PSW
PUSH PSW
POP PSW
DCR E
DCR D ; (счётчик -1)
OUT 00Ch ; палитра -- установка физического цвета, ещё раз
...
Все ПЗУ на Векторах, как правило, имели при запуске команду отключения КД. Кроме того, квази-диск отключает БЛК-СБР -- там это сделано аппаратно, таким образом, если демку будут запускать, например, загрузкой "с ленты", или из загрузочной записи дискеты, то можно этот момент пропустить, а если из под МДОСа -- то эти команды обязательны.