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



         

ПОЛУЧЕНИЕ ЧИСТОГО ТОНА - часть 5


ORG 60000 ENT $ DI LD A,(23624) ;получаем в аккумуляторе цвет бордюра AND #38 ;выделяем биты 3, 4 и 5 RRA ;сдвигаем на место битов 0, 1 и 2 RRA RRA LD E,A ;запоминаем в регистре E ORGAN1 CALL 8020 ;проверка нажатия клавиши BREAK JR NC,EXIT ;если нажата, выход из программы PUSH DE LD DE,#100 ;счетчики для определения ; нажатых клавиш LD A,#F7 ;опрос полуряда 1...5 CALL KEYS LD A,#EF ;опрос полуряда 6...0 CALL KEYS LD D,0 ;выбор высоты звука из таблицы LD HL,DATNOT ADD HL,DE POP DE LD B,(HL) INC B DEC B JR Z,ORGAN1 ;если в B ноль, клавиши не нажаты, звука нет LD A,E OUT (254),A ;извлечение звука XOR 16 LD E,A ORGAN2 LD C,20 ;цикл задержки для получения звука ; определенной высоты ORGAN3 DEC C JR NZ,ORGAN3 DJNZ ORGAN2 JR ORGAN1 EXIT EI ;выход из программы RET KEYS IN A,(254) ;опрос выбранного полуряда LD B,5 ;5 клавиш в полуряду KEYS1 RRCA ;сдвигаем биты вправо JR C,KEYS2 ;если младший бит установлен, ; клавиша отпущена LD E,D ;иначе запоминаем номер нажатой клавиши KEYS2 INC D ;увеличиваем номер определяемой клавиши DJNZ KEYS1 ;переходим к следующей RET ; Данные для получения необходимой задержки для каждого звука DATNOT DEFB 0,55,49,44,41,36 DEFB 21,24,27,29,32




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