Коллеги, подскажите, как быстро и эффективно в РК-86 (точнее Апогей БК01)
поменять вывод экрана с другой области памяти, условно с e1d0 на d1d0
что бы обеспечить что-то вроде двойной буферизации? =)
спс
Коллеги, подскажите, как быстро и эффективно в РК-86 (точнее Апогей БК01)
поменять вывод экрана с другой области памяти, условно с e1d0 на d1d0
что бы обеспечить что-то вроде двойной буферизации? =)
спс
Последний раз редактировалось Pyhesty; 17.05.2020 в 18:37.
Pyhesty(17.05.2020)
Скопировать п/п настройки ВГ75,ВТ57 и изменить в ней адрес.
Pyhesty(17.05.2020)
Да, этого вполне достаточно.
Можно в любой момент - ждать кадровый импульс в данном случае вообще не нужно.
Вот можете попробовать пример:
Нажатие кнопок УС и СС переключает экраны.Код:begin: lxi h, $eaf3 lxi d, $d1d0 lxi b, 2340 copy: mov a, m dcx h ani 01111111b stax d inx d dcx b mov a, c ora b jnz copy check: lda $ed02 rlc rlc jc key mvi a, $d0 sta $f006 mvi a, $d1 sta $f006 jmp check key: rlc jc check mvi a, $d0 sta $f006 mvi a, $e1 sta $f006 jmp check
- - - Добавлено - - -
Если нужно создать два-три или более одинаковых по параметрам экранов, но находящихся по разным адресам в памяти, а потом быстро переключаться между ними, то менять настройки ВГ75 и ВТ57 целиком не выгодно. Проще и быстрее посылать в третий порт ПДП адрес нового экрана.
Последний раз редактировалось SegaBoy; 17.05.2020 в 20:39.
Pyhesty(18.05.2020)
Только надо «ногами вперёд», точнее младшим байтом
- - - Добавлено - - -
Регистры канала 3 контроллера ПДП хранят значения для канала 2. Обновление данных в канале 2 значениями из канала 3 происходит уже после окончания текущего цикла ПДП, в момент получения нового запроса от ВГ75.
Можно рассмотреть такой сценарий - пока происходит отображение буфера 1, можно сколь угодно долго вычислять и заполнять буфер 2. Когда все манипуляции закончены, то устанавливаем в канал 3 контроллера ПДП адрес буфера 2. После этого можем подождать кадровый синхроимпульс и начать заполнять буфер 1.
Последний раз редактировалось SegaBoy; 18.05.2020 в 03:53.
Pyhesty(18.05.2020)
чувак, ты крут! спасибо за пример! работает =)))
ps: пример прикольный =)
- - - Добавлено - - -
может кому-то будет интересно, пробовал быстро что-то вывести на экран,
уперся в "простую" проблему - не могу быстро очистить экран, в итоге перебрал разные
вариант, нашел не самый очевидный (хотя может быть это с моей точки зрения самоучки, он не очевидный)
этот метод раз в пять быстрее, чем очистка путем прямой записи в память
собственно, в чем вопрос, может быть есть более простые способы быстрой очистки экрана?
спс
Код:clear_screen: lxi h, 0 dad sp shld sp_temp ; сохраняем позицию sp lhld vid_end_addr ; грузим позицию конца кадра в адрес sp sphl lxi h, $2020 ; грузим пробелы в hl mvi b, 15 ; количество строк 30/2 = 15 clr_scr0 mvi c, 9 ; элементов в строке 72/8=9 clr_scr1 push h ; зачищаем одной командой два байта... push h ; зачищаем одной командой два байта... push h ; зачищаем одной командой два байта... push h ; зачищаем одной командой два байта... push h ; зачищаем одной командой два байта... push h ; зачищаем одной командой два байта... push h ; зачищаем одной командой два байта... push h ; зачищаем одной командой два байта... dcr c jnz clr_scr1 ; вот этот прыжек съедает кучу тактов почему-то, приходится "расширять" тело цикла, что реже приходилось прыгать dcr b jnz clr_scr0 lhld sp_temp ; восстанавливаем sp sphl ret
Pyhesty, в Специалисте это было испокон изначально:
![]()
Pyhesty(18.05.2020)
нормально =))) очередное изобретательство велосипедов =)
спс, ну значит у меня норм вариант =)
ps: я не знаю как раньше что-то разрабатывали без эмуляторов ) это же просто ужас,
так ты что ли на листочке считать...
pss: кстати, а где можно почитать про сколько тактов частоты процессора (я так понимаю 1.7МГц) на команду?
и сколько времени идёт чтение одного байта команды? я так понимаю, он вычитывает один байт команды, смотрит
однобайтовая или нет, читает следующий байт (и так до трех), потом выполняет? сколько читается один байт по адресу PC?
если это команда между регистрами, то все одинаково выполняются? а если с записью/чтением в память?
я понимаю, что это азы ) но букваря под рукой нет )
Ну посчитаешь. И? Из подсчитанного плюс процентов 30? на пдп докидывать надо, елси экран не погашен. Так что неблагодарное это дело. А растактОвка в известных цветных таблицах должна быть.
Например
Последний раз редактировалось zebest; 18.05.2020 в 13:22.
Profi v3.2 -=- Speccy2010,r2
Pyhesty(18.05.2020)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)