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


         

Окружности


В Бейсике имеется еще один графический оператор - CIRCLE, предназначенный для рисования окружностей. Значит, можно без особых хлопот, прибегнув к помощи ПЗУ, реализовать в программах на ассемблере и его. Сразу же сообщим, что соответствующая процедура находится по адресу 9005, а параметры ей передаются так же, как и при рисовании дуг, через стек калькулятора. Перед вызовом CALL 9005 нужно последовательно занести в стек три числа: координаты центра окружности по горизонтали и вертикали, а также ее радиус в пикселях.

Для примера напишем программку, выполняющую то же самое, что и оператор

CIRCLE 120,80,60

Внешне она очень напоминает программку, рисующую на экране фрагменты дуг:

ORG 60000 ENT $ CALL SETSCR ;Установка атрибутов экрана LD A,120 ;Заносим в стек калькулятора CALL 11560 ; X-координату центра окружности LD A,80 ;Y-координата центра окружности CALL 11560 LD A,60 ;Радиус CALL 11560 CALL 9005 ;CIRCLE 120,80,60 LD HL,10072 EXX RET

Процедура 9005 также «портит» регистровую пару HL', то есть при необходимости возврата в Бейсик ее обязательно нужно восстановить.

Еще раз повторим, что при желании вы можете рисовать все графические примитивы, описанные в этом разделе, заданным цветом, для чего нужно воспользоваться одним из способов, перечисленных в разделе .



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