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


         

Один из способов проверки данного


Таблица 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


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