MatrixDisplay 16×16

Входы (Inputs)

ПинТипОписание
DevAddrbus8Адрес устройства (0x1C = X, 0x1D = Y, 0x1F = Pixel)
DataInbus8Данные (координата или значение пикселя)
WEbitСигнал записи (1 = запись)
IO_SELbitВыбор I/O (1 = устройство активно)

Выходы (Outputs)

ПинТипОписание
Нет выходных пинов

Логика работы

MatrixDisplay управляется по трёхэтапному протоколу через порты ввода-вывода. Для включения или выключения пикселя по координатам (X, Y) необходимо последовательно записать три значения:

  1. Порт 0xFC (DevAddr = 0x1C): записать координату X (0–15) в DataIn при IO_SEL = 1, WE = 1.
  2. Порт 0xFD (DevAddr = 0x1D): записать координату Y (0–15) в DataIn при IO_SEL = 1, WE = 1.
  3. Порт 0xFF (DevAddr = 0x1F): записать значение пикселя: 1 = включить, 0 = выключить. Пиксель зажигается или гаснет только при WE = 1.

Координаты отсчитываются от 0 до 15. Пиксель (0, 0) находится в левом верхнем углу матрицы. Каждый пиксель отображается как отдельный квадрат на визуальной панели MatrixDisplay.

Применение

Используется на уровнях 24, 27–29. Служит основным устройством графического вывода: рисование пикселей, вывод текста (посимвольно), отрисовка точек. В игре «Змейка» (уровень 29) MatrixDisplay используется как игровое поле — змейка и еда отрисовываются попиксельно.

Типичная ассемблерная последовательность для включения пикселя (X=7, Y=3):

; Установить пиксель (7, 3)
LDA x_coord   ; загрузить X = 7
STA 0xFC       ; порт X
LDA y_coord   ; загрузить Y = 3
STA 0xFD       ; порт Y
LDA one        ; загрузить 1
STA 0xFF       ; порт Pixel — включить пиксель