СОДЕРЖАНИЕ:
1. Введение
2. Как цвет и символы хранятся в памяти.
3. Цвета и символы
4. Как настроить цвет
1. Введение
Это туториал попробует довести до вас информацию о том, как цвета и текст работают на дисплее ascii dcpu.
Если Вы хотите пропустить весь "действительно" интересный материал по
видеопамяти и узнать только о том как заставить выводить текст в разных
цветах, то вы можете пропустить все и сразу перейти к секции 3.
2. Как и где они хранятся(символы и их оформление)
Каждый элемент на экране сохранен как единственное 16-разрядное слово в памяти dcpu.
Видеопамять - это набор ячеек 0x8000 - 0x8200, общее кол-во которых
составляет 512. Не пугайтесь - да, вы будете правы, если вы скажете, что
их 200, но в языке используется 16-ная система исчисления! А для нас
это все равно, что 512!
Чтобы понять, что слово, я собираюсь рассказать вам о одном интересном объекте:
Биты, полубайты(nibble), байты и слова
Вы должны знать, что компьютер работает в бинарном(двоичном режиме). То
есть в его работе используется вид информации в виде 0 и 1!!!
Бит имеет единственное значение - 1 или 0.
Полубайт равен 4 бита
Байт составляет 8 битов или 2 полубайта
Слово (для dcpu) составляет 2 байта или 4 полубайта или 16 битов. (Следовательно система является 16-разрядной),
Теперь я не собираюсь объяснять, как читать двоичную систему исчисления
или шестнадцатеричную - ибо для этого и придумали Google. Но я думаю,
что вам бы следовало бы узнать об них по подробнее!
Слова могут быть более длинными и короткими, поскольку "слово" в нашем
языке программирования - это просто термин, использованный для
обозначения объема данных, который центральный процессор может
обработать как 1 элемент.
Но для DCPU - это 16 битов. Таким образом, каждый экземпляр "слова" с этого времени устанавливается как ряд из 16 битов.
Есть 3 основных способа, которыми Вы могли бы увидеть слово.
Таким образом, вот пример:
В двоичном файле:
1111 1111 1111 1111
В десятичном числе (наш нормальный подсчет):
65535
В Шестнадцатеричном:
FFFF
См., как двоичный и шестнадцатеричный, кажется, совмещаются лучше чем десятичное число?
1111 = F
Так 4 набора 1111 = FFFF
Теперь смотрим, как DCPU сможет использовать это, чтобы вывести на экран цвета и символы
1111 1111 11111111
F F FF
Там я разделил слово на его составные части с целью отражения. Раз в двоичном файле и второй раз в шестнадцатеричном.
Первый полубит (4 бита) обозначает Цвет переднего плана, а точнее цвет символа, который Вы будете видеть.
Второе откусывание обозначает цвет фона символа.
Последний байт (8 битов) обозначает, какой символ выводится на экран.
Надеюсь вы все поняли - перейдём к шагу 3.
3. Цвета и Символы.
Существует 16 цветов, которые вы можете выбрать
Следовательно 1 цвет хранится как первый полубит(4 бита), у которого
есть 16 значений(от 0 до 16) - 0 1 2 3 4 5 6 7 8 9 A B C D E F - и F как
16, то есть последнее
Таким образом, вот цветная диаграмма.
И символьная диаграмма.
Отметьте, что этот список символов только идет в 7f
Символы повторяют их сам еще раз полностью к FF Однако, они высветятся (я сделаю второе изображение для того набора позже),
4. Подбор символов и цветов
Это код одного из самых простых примеров в практике любых языков. Он называется "Hello World" - приветствие новичков. Код: SET I, 0 ;используется для определения в какую ячейку видеопамяти будет записан символ
:loop ;циклическая конструкция с IFE SET A, [hello_world + I] ;загружаем в А адрес I буквы IFE A, 0 ;логическая конструкция if - если значения равны, то конструкция переводит
;цикл во внутреннюю программу SET PC, end ;сама программа BOR A, 0xF100 ;побитовое "или" - используем так, чтобы добавить к символу оформление SET [0x8000 + i] ,a ;запишем символ в видеопамять ADD I, 1 SET PC, loop ;вернемся к началу
:end SUB PC, 1
:hello_world DAT "Hello World!", 0 ;текст
F устанавливает цвет символов белыми.
Число 1 делает фон символов синим.