Вот его ответ:
"он хочет сказать, что программно экран обновляется при каждом изменении изображения? экран тупо кусок памяти. соответственно все изменения делаются на нем в нужном месте путем занесения, стирания, ксоренья данных. синхронизацию с таймером можно зафигачить, но я не помню как это делается. а команда HALT на бк это остановка программы."
ZX Evolution
видимо действительно написание программ для БК настолько радикально отличается
да экран является просто куском памяти
да графика на экран наносится путем арифметических операций
вопрос был в чем:
как на БК решали проблему изменения скорости при изменении количества подвижных обьектов(стабилизация скорости в играх)
из того что посмотрел и из того что почерпнул из различных описаний
понимаю что НИКАК... работает и ладно ппц
С уважением,
Jerri / Red Triangle.
На десятке - только при помощи таймера (который был недокументирован), к тому же там есть такое понятие, как "сломанный таймер". Что это означает не знаю даже я, хотя в моём эмуляторе тесты пишут, что "таймер - сломан". А что же означало "не сломанный таймер"?
была игра для Бк-0010, называлась King Valley вроде как от Shishkin Software и она юзала таймер для проигрывания музона, но из трех виденных мною бках она работала на одной только, пришлось писать утилиту которая заменяла адрес с которым пытается работать прога как с таймерным на вроде 177716 и в процессе игры шел шум и скрежет но она начинала играть, как мне сказали на некоторых бкашках таймер был, на некоторых не был.. так что для эмулей можно в качестве теста юзать кинг валлей игруху
На моём работает, с музыкой и скрежетом
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Подразобрался немного. Таймер 50 Гц там есть, даёт прерывания по вектору 100, маскируется битом 14 порта 177662. Не знаю только как в точности оно расположено по времени относительно кадра. Весь кадр -- 312 строк, по 64 мкс на строку, итого 20 мс = 50 Гц.
Кроме того есть программируемый таймер на портах 177706, 177710, 177712. Наступление события проверяется чтением портов, прерывания нет.
Похоже, я нашёл этому подтверждение.
Цитата из Донского:
Считаем.Г. Работа с таймером
Подробное описние таймера (счетчика времени) БК с интересными
примерами приводится в [6] и [12]. Здесь лишь приведем простейший
пример работы с ним и порекомендуем читателю поэкспериментировать, так
как в БК разных заводов таймер может работать по-разному. Посмотрите,
что получится, если вместо &O160 записать 0, &O20, &O60, &O120 и как
зависит период Т от начального значения S0 (рис.10):
10 POKE &O177706,32767% 'установка длительности периода S0
20 POKE &O177712,&O160 'запуск таймера
30 ? AT(0,0)PEEK(&O177710) 'смотрим, как он работает
40 GOTO 30
Рис.10. Иллюстрация работы таймера.
Таймер работает независимо от работы программы. Содержимое счетчика
времени определяется как результат функции PEEK(&O177710) и
периодически уменьшается от S0 до 0 (рис.10).
В приведенном примере при S0=32767 период счетчика Т=89,657 с [6].
89,657 сек / 32767 = 2,7362 мс на тик таймера, с учётом делителей на 16 и 4 получаем 2736,2 / 16 / 4 = 42,75 мкс на наименьший тик таймера.
Частота процессора 3 МГц, это 0,333 мкс на такт, умножаем на 128, получаем 42,67 мкс -- довольно близко, можем считать что сходится.
Теперь смотрим тут: http://pdp-11.ru/mybk/textbk/FL11M.TXT
5. СИСТЕМНЫЙ ТАЙМЕР
ТАЙМЕР СОСТОИТ:
A. генератор с периодом 32 мкс (т.к. тактовая частота процессора
В. делители на 4 и 16 БК-11 и БК-11М составляет 4 MHz, а
C. реверсивный счетчик (177710) не 5 MHz, kak написано в литературе)
D. регистр установки (177706)
E. регистр команд и состояний (177712)
* ДЛЯ СПРАВКИ: тактовая частота, поступающая на процессор, делится на
128. , а потом поступает на таймер
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)