Gamepad (Геймпад)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| DevAddr | bus8 | Адрес устройства: 0x1E = порт 0xFE |
| IO_SEL | bit | Выбор I/O (1 = устройство активно) |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Data | bus8 | Битовая маска нажатых кнопок: Up = 1, Down = 2, Left = 4, Right = 8 |
Логика работы
Геймпад возвращает 8-битную маску нажатых кнопок, когда IO_SEL = 1 и DevAddr = 0x1E (порт 0xFE). Каждая из четырёх кнопок соответствует одному биту:
| Кнопка | Бит | Значение |
|---|---|---|
| Up (Вверх) | 0 | 1 |
| Down (Вниз) | 1 | 2 |
| Left (Влево) | 2 | 4 |
| Right (Вправо) | 3 | 8 |
Если ни одна кнопка не нажата, Data = 0x00. При одновременном нажатии нескольких кнопок их биты суммируются (например, Up + Right = 1 + 8 = 9). Кнопки нажимаются мышью прямо на элементе Gamepad в редакторе — при запуске тактирования подведите курсор к геймпаду и кликайте по кнопкам.
Применение
Используется на уровнях 23, 28–29. Основное устройство ввода для интерактивных программ. Чтение геймпада в ассемблере:
; Прочитать геймпад в аккумулятор
LDA 254 ; LDA с адресом 0xFE → читает порт геймпада
Типичный паттерн опроса геймпада: чтение каждые несколько тактов в цикле, проверка конкретных битов через AND и условные переходы (JZ). На уровне 29 (Змейка) геймпад используется для управления направлением движения.