by VBI » Thu, 10.12.2015 10:23:02
давай с начала.
INTMASK разрешает обработку прерывания - кадрового, строчного, дма.
т.е. если мы хотим обрабатывать строчные - ложим адрес обработчика, включаем бит в INTMASK
если не хотим - выключаем.
щас продолжу, жена стонет)))
фреймовые прерывания могут приходить в месте экрана, установленном в портах вертикальных и строчных интов.
так вот. первое фреймовое прерывание пришло в начале экрана - порты вертикальных и строчных интов - 0/0.
устанавливаем следующее фреймовое прерывание на приход по вертикали - с начала экрана, например 31 позиция, задаём адрес обработчика в памяти выборки инта.
... луч рисует, такты идут...
приходит это фреймовое прерывание. включаем бит разрешения обработки строчных прерываний (не выключая бит фреймовых), устанавливаем приход следующего фреймового прерывания на конец экрана - 31+240, задаём новый адрес обработчика в памяти выборки инта. как только мы вышли из этого прерывания каждую строку будет вызываться обработчик строчных прерываний.
... луч рисует, такты идут, каждую строку вызывается строчник...
на строке 31+240 приходит фреймовое прерывание. в нём мы вырубаем бит разрешения обработки строчных прерываний, устанавливаем приход следующего фреймового прерывания на 0/0 - начало экрана, задаём адрес обработчика в памяти выборки инта.
Last edited by
VBI on Thu, 10.12.2015 11:03:24, edited 2 times in total.