Как написать игру для ZX Spectrum на ассемблере


         

УПРАВЛЕНИЕ СПОМОЩЬЮ КЛАВИАТУРЫ - часть 3


Таблица 8.1. Адреса портов для опроса клавиатуры

ПолурядDECHEXBIN
Space...B327667FFE01111111 11111110
Enter...H49150BFFE10111111 11111110
P...V57342DFFE11011111 11111110
0...661438EFFE11101111 11111110
1...563486F7FE11110111 11111110
Q...T64510FBFE11111011 11111110
A...G65022FDFE11111101 11111110
CS...V65278FEFE11111110 11111110

; Адрес 32766=127ґ256+254, в B заносится адрес полуряда, ; а в C - адрес порта (254). KEY LD BC,32766 IN A,(C) ; Один из способов проверки данного бита - у отпущенной клавиши ; бит установлен (1), у нажатой сбрасывается в 0 BIT 2,A JR NZ,KEY RET

Второй способ принципиально не отличается от первого. Перед чтением в аккумулятор помещается старший байт адреса соответствующего порта, а младший байт задается в явном виде в команде IN:

KEY LD A,#7E ;в аккумулятор заносится старший байт ; адреса порта #7EFE IN A,(254) ;считывание из порта (254 или #FE - ; младший байт адреса) BIT 2,A ;проверка нажатия третьей от края ; клавиши (M) JR NZ,KEY RET

Рассмотрим программу, в которой при нажатии клавиш Q, A, O и P изменяются координаты точки на экране. Сами точки будем ставить в бейсик-программе, которую напишем позже, но подразумевая использование процедуры из Бейсика, воспользуемся для передачи координат точки, как и раньше, областью буфера принтера, определив адрес передаваемых параметров константой XY.

ORG 60000 XY EQU 23296 KEY LD HL,(XY) ;запись координат точки в HL ; В регистр A заносится старший байт полуряда, ; в котором располагается клавиша Q

LD A,251 IN A,(254) ;читаем из порта значения для полуряда ; Проверка бита 0 (команду RRCA вместо BIT здесь удобнее применять ; потому, что клавиша Q в полуряду занимает крайнее положение) RRCA ; Если клавиша не нажата (на что указывает установленный бит), ; то следующую команду пропускаем JR C,KEY1 ; Увеличиваем значение вертикальной координаты, которое находится в регистре H INC H KEY1 LD A,253 IN A,(254) RRCA ;клавиша A

JR C,KEY2 DEC H ;уменьшаем вертикальную координату KEY2 LD A,223 IN A,(254) RRCA ;клавиша P




Содержание  Назад  Вперед