MatrixDisplay 16×16
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| DevAddr | bus8 | Адрес устройства (0x1C = X, 0x1D = Y, 0x1F = Pixel) |
| DataIn | bus8 | Данные (координата или значение пикселя) |
| WE | bit | Сигнал записи (1 = запись) |
| IO_SEL | bit | Выбор I/O (1 = устройство активно) |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Нет выходных пинов | ||
Логика работы
MatrixDisplay управляется по трёхэтапному протоколу через порты ввода-вывода. Для включения или выключения пикселя по координатам (X, Y) необходимо последовательно записать три значения:
- Порт 0xFC (DevAddr = 0x1C): записать координату X (0–15) в DataIn при IO_SEL = 1, WE = 1.
- Порт 0xFD (DevAddr = 0x1D): записать координату Y (0–15) в DataIn при IO_SEL = 1, WE = 1.
- Порт 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 — включить пиксель