CHIP-8 (CHIP-8)
Эту статью необходимо исправить в соответствии с правилом Википедии об оформлении статей. |
CHIP-8 — интерпретируемый язык программирования, который был разработан Джозефом Вейзбекером в семидесятых для использования в RCA COSMAC VIP. В дальнейшем был использован в COSMAC ELF[1], Telmac 1800[2], ETI 660, DREAM 6800. Сегодня CHIP-8 часто используется для обучения базовым навыкам эмуляции в связи со своей простотой и схожестью с реальными платформами.
Память
[править | править код]Язык CHIP-8 позволяет адресовать до 4096 байт памяти в адресном пространстве от 016 до FFF16 с ячейками по 8 бит в формате Big-Endian. При этом первые 512 байт памяти (с 016 до 1FF16) зарезервированы интерпретатором CHIP-8 для программы интерпретатора и хранения спрайтов, поэтому использование этого диапазона ячеек памяти пользовательскими программами нежелательны. Пользовательские программы могут быть загружены в любой участок памяти, но наиболее распространенным вариантом является расположение программы с 20016 по FFF16 адрес.
Регистры и таймеры
[править | править код]Название | Разрядность | Описание |
---|---|---|
V0-VE | 8 бит | 15 регистров общего назначения |
VF | 8 бит | Флаг переноса. Может быть использован пользовательской программой как регистр общего назначения |
DT | 8 бит | Таймер задержки. При ненулевом значении декрементируется с частотой 60 Гц |
ST | 8 бит | Таймер звука. При ненулевом значении декрементируется с частотой 60 Гц и проигрывает характерный звук «BEEP» с постоянной тональностью, зависящей от реализации интерпретатора |
PC | 16 бит | Указатель на текущую исполняемую инструкцию |
SP | 8 бит | Указатель на вершину стека |
Ввод
[править | править код]Язык CHIP-8 имеет поддержку ввода с шестнадцатиклавишной клавиатуры следующей компоновки:
1 | 2 | 3 | C |
4 | 5 | 6 | D |
7 | 8 | 9 | E |
A | 0 | B | F |
Экранный вывод
[править | править код]Для экранного вывода в языке CHIP-8 используется монохромный дисплей с разрешением 64 на 32 пикселя. Отрисовка на экране происходит спрайтами. Спрайт в CHIP-8 представляет собой массив размером до 15 байт хранящийся в области памяти интерпретатора, где каждый бит с состоянием '0' или '1' обозначает черный и белый цвет пикселя в строке длиной 8 пикселя соответственно, при этом, при наложении двух спрайтов друг на друга накладывающиеся пиксели инвертируется. Одновременно интерпретатор может хранить до 16 спрайтов.