TS-Conf F.A.Q.

Документация, FAQ-и
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

Если у нас колво линий заливки больше 255, то: выполняем заливку 255раз, и потом:
Не меняем значения источников и приёмников, там уже лежат финальные значения после передачи - мы Уже в нужном месте и нужной паге
Апдейтим колво линий и опять запуск передачи.
Заливка стартует ровно с того места где закончилась.
Это же юзаем для любых передач больших обьёмов, когда колво транзакций больше 255
Аватара пользователя
AndyD
Сообщения: 280
Зарегистрирован: Чт, 21.05.2015 21:32:38

Re: TS-Conf F.A.Q.

Сообщение AndyD »

VBI писал(а):сколько длина одной линии заливки

То есть,если установлен этот бит D_ALGN,то в DMALen будет длинна строки(например320),так?
И заливаться будет 320+ пропуск до новой строки и так весь блок 512,если в DMANum=0.Вот этот момент не понятен,как произвольное кол-во лить.
Спасибо.
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

AndyD, давай с самого начала
дма у нас представляет такой лдир, который выполняется железом
для того что бы запустить любую передачу, нам нужно указать - откуда мы будем слать, страница
куда мы будем слать, страница
сколько байт за одну пересылку, и тут учтём что сразу передаётся по 2 байта, поэтому даже значение 0 будет передавать 2 байта.
соответственно - значение 255 - передаст за раз 512 байт
кроме того, этих пересылок у нас есть пачка. конкретно их число мы задаём в порте - сколько раз пересылок сделать.

и есть порт управления. который говорит о том, КАК слать.
т.е. - стоит ли после каждой пересылки переходить на начальный адрес, увеличивая старший байт? это D_ALGN или S_ALGN.
тут мы получаем возможность пересылать данные формируя из проследовательного набора данных, например, изображение на экране
как это происходит?
мы указываем длинну одной пересылки равной ширине экрана, устанавливаем бит D_ALGN - который говорит о том, что нужно увеличить старший байт приёмника после каждой пересылки на 1.
а если юзается бит A_SZ, который управляет собсно этим ххх_ALGN - то мы указываем КАК именно увеличивать - на 1 или на 2, в зависимости от того что хотим получить
дело в том, что это создано для пересылки не только данных, но и графики. для режима 16ц нам нужно увеличивать следующий адрес получателя на 1, а для 256 - на 2.
т.е. таким макаром мы сразу отлично отображаем в память правильно созданную картину из последовательных бинарных данных
это нужно: для тайлов/спрайтов/граф.изображений

как только мы отправили этот набор битов A_SZ,ххх_ALGN и прочие режимы типа DMA_RAM - в порт, железо уже отправляет первые 2 байта. и проц свободен


ЗЫ: если установлен этот бит D_ALGN,то в DMALen будет длинна строки(например320). И заливаться будет 320+ пропуск до новой строки и так весь блок 512,если в DMANum=0
D_ALGN нужен для обновления старшего байта адреса ПРИЁМНИКА на 1/2 в зависимости от состояния A_SZ. и как только пройдёт очередная отсылка, старший адрес будет увеличен.
например: #C000 > #C100 >#C200 ... #fe00 > #ff00> #c000 >#c100 и дальше, уже в новой странице, по количеству в порте DMANUM
а длинна передачи задаём в порте DMALEN, и не забываем что за раз передаётся 2 байта. т.ё. 320 точек - это DMALEN = 320/2 в режиме 256ц, и DMALEN= 320/4 в режиме 16ц , так как один байт в этом режиме - 2 точки сразу

спрашивай, буду рад таки пояснить
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

смотри.
нужно нарисовать квадрат, залитый цветом 1. с позиции #c020, ширина 64, высота 200, какой-то номер паги типа #40, 16 цветов
мы берём DMA_FILL + DMA_DALGN
в позицию #c020 паги #40 засылаем #1111
в источник и приёмник шлём #c020 и пагу #40
в DMALEN шлём длину строки - 64/4 - это у нас 64 строки делённое на 2 байта одной засылки и делим на 2 потому что одна точка - пол байта. /4 в результате
в DMANUM шлём сколько будет таких строк - 200
и потом - DMA_FILL + DMA_DALGN.
DMA_FILL говорит о том что будут копироваться одни и те-же данные
DMA_DALGN говорит о том, что после каждой пересылки железке НУЖНО ВОСТТАНОВИТЬ СТАРЫЙ АДРЕС, но к старшему байту добавить 1, что даст нам переход на новую строку в режиме 16ц
если бы мы юзали 256ц, то нужно включить бит DMA_ASZ , который укажет что НОВАЯ СТРОКА НА 2 НИЖЕ. ибо экран так устроен

и как только ты отправил в DMACTR значения битов DMA_FILL + DMA_DALGN, начинается пересылка, сразу
железо отправляет, проц свободен, генери что нужно, открывай любые паги, делай что угодно кроме новой пересылки.
нужна пересылка - ожидай обновление DMASTATUS
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

так как обычно мы сразу имеем бинарные данные графы, то они расположены последовательно, а не так как они юзаются при выводе
из-за этого юзаем DMA_DALGN дабы правильно выровнять их передачу в память
но если ты сразу юзаешь картинку в 512 по ширине, то слать можно просто так, прямо DMA_RAM и всё, чётко всё передалось. прям как лдир ;)
для простой передачи блоков данных - просто DMA_RAM и всё.
и не забывай, что:
1. паги переключатся автоматически
2. последние, уже обновленные железом после передачи, номера адреса и паги остаются в портах, можно просто продолжать пересылку буквально отправляя новое количество "строк" и способ передачи в DMANUM и DMACTR
DMALEN не поменяется
Аватара пользователя
AndyD
Сообщения: 280
Зарегистрирован: Чт, 21.05.2015 21:32:38

Re: TS-Conf F.A.Q.

Сообщение AndyD »

VBI писал(а):DMALEN = 320/2 в режиме 256ц, и DMALEN= 320/4 в режиме 16ц

То есть мы просто шлем одну строку в порте DMALEN= 320/2(/4) или 360/2(/4) за транзакцию и указываем количество транзакций в DMANum,а за один цикл дма максимум 256 строк,288 за 2 подхода дма ,правильно понял?.
Cпасибо, надо на 1ю страничку закрепить.
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

AndyD, именно.
именно так

288 = 1 отправка 255 раз (строк), вторая - 288-255
Аватара пользователя
AndyD
Сообщения: 280
Зарегистрирован: Чт, 21.05.2015 21:32:38

Re: TS-Conf F.A.Q.

Сообщение AndyD »

:beer:
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

супер :agree:
Аватара пользователя
TS-Labs
Сообщения: 5396
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: TS-Conf F.A.Q.

Сообщение TS-Labs »

VBI писал(а):поэтому наша длина /2

...минус 1. Т.е. для экранки 320х240 256с задать 320/2-1=159.
Аватара пользователя
TS-Labs
Сообщения: 5396
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: TS-Conf F.A.Q.

Сообщение TS-Labs »

VBI писал(а):Если у нас колво линий заливки больше 255, то: выполняем заливку 255раз, и потом:

Вылетаем на православный инт (который мы предварительно включили) и запускаем новую транзакцию. А не пинаем хуи в цикле ожидания, как сделали бы жители Вилабаджо.
AndyD писал(а):То есть,если установлен этот бит D_ALGN,то в DMALen будет длинна строки(например320),так?

D_ALGN - режим выравнивания адреса приемника. После каждого бурста адрес увеличивается на 256 (A_SZ = 0) или на 512 (A_SZ = 1) байт, от того значения, которое было в нем до бурста.
DMALen - размер бурста в словах 16-бит, задавать на 1 меньше, чем нужное количество, т.е. 0=2 байта.
Аватара пользователя
g0blinish
Упырь говнофорума
Сообщения: 3641
Зарегистрирован: Вт, 18.06.2013 10:59:01

Re: TS-Conf F.A.Q.

Сообщение g0blinish »

Использую вот это:

Код: Выделить всё

 ld bc,SysConfig
 ld a,6
 out (c),a
 inc b
 ld a,%00001110
 out (c),a

чтобы подключать странички с Page0. Это безопасно вообще?
понятно, что im2 и вектор $0038 неуместен.
[x] No Screenshot
Аватара пользователя
TS-Labs
Сообщения: 5396
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: TS-Conf F.A.Q.

Сообщение TS-Labs »

Небезопасно ходить в центре Рязани с ЛГБТ-флагом. А все остальное безопасно.
Аватара пользователя
g0blinish
Упырь говнофорума
Сообщения: 3641
Зарегистрирован: Вт, 18.06.2013 10:59:01

Re: TS-Conf F.A.Q.

Сообщение g0blinish »

т.е. Page0 всегда можно заюзать? как хорошо!
[x] No Screenshot
Аватара пользователя
TS-Labs
Сообщения: 5396
Зарегистрирован: Чт, 26.07.2012 01:29:56

Re: TS-Conf F.A.Q.

Сообщение TS-Labs »

Ежли с умом.
Аватара пользователя
g0blinish
Упырь говнофорума
Сообщения: 3641
Зарегистрирован: Вт, 18.06.2013 10:59:01

Re: TS-Conf F.A.Q.

Сообщение g0blinish »

Зайди в чятик штоле, я тебе применение ума покажю.
[x] No Screenshot
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

pal - в текстовом формате поллитрушечка
https://infinit.io/_/39CRJ7B
Аватара пользователя
g0blinish
Упырь говнофорума
Сообщения: 3641
Зарегистрирован: Вт, 18.06.2013 10:59:01

Re: TS-Conf F.A.Q.

Сообщение g0blinish »

кстати, вскочил вопрос: а при строчных прерываниях переключение VPage будет работать?
[x] No Screenshot
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

будет. на следующей строке
Аватара пользователя
g0blinish
Упырь говнофорума
Сообщения: 3641
Зарегистрирован: Вт, 18.06.2013 10:59:01

Re: TS-Conf F.A.Q.

Сообщение g0blinish »

а в палитру можно писать?
[x] No Screenshot
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

а что помешает?
Аватара пользователя
g0blinish
Упырь говнофорума
Сообщения: 3641
Зарегистрирован: Вт, 18.06.2013 10:59:01

Re: TS-Conf F.A.Q.

Сообщение g0blinish »

VBI писал(а):а что помешает?

отвечать ответом на ответ?
бля, пропустил кратность 16ти для паг :facepalm:
[x] No Screenshot
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

короч главное успеть. по ходу на следующей линии появится в твоей палитре ужо
Аватара пользователя
g0blinish
Упырь говнофорума
Сообщения: 3641
Зарегистрирован: Вт, 18.06.2013 10:59:01

Re: TS-Conf F.A.Q.

Сообщение g0blinish »

т.е. можно открыть CRAM и писать в него данные?
[x] No Screenshot
Аватара пользователя
VBI
Сообщения: 1965
Зарегистрирован: Пн, 03.06.2013 09:20:29

Re: TS-Conf F.A.Q.

Сообщение VBI »

g0blinish, смотри, упрощённо:
тсу работает в одной строке. оно парсит и строит следующую линию экрана.
всё что ты сделаешь - повлияет со следующей строки. предыдущие не обновятся новой палитрой, мы будем видеть старые цвета в тот момент

правка - всё что ты сделаешь с палитрой - повлияет на этой и последующих строках. thanks to Buyan! :agree:
Ответить