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

       

Точки


Обратимся, как и прежде, к огромному вместилищу различных процедур в машинных кодах, к ПЗУ компьютера. Оператор Бейсика PLOT реализует подпрограмма, имеющая адрес 8933. Понятно, что для получения точки на экране необходимо указать, как минимум, ее координаты. Поэтому перед обращением к процедуре рисования точек следует занести в регистр C смещение по горизонтали, а в B- по вертикали, отсчитывая пиксели, как и Бейсике, от левого нижнего угла экрана. Например, для получения результата, аналогичного выполнению оператора PLOT 45,110 нужно вызвать такую последовательность команд микропроцессора:

LD C,45 LD B,110 CALL 8933

Так как регистры C и B относятся к одной паре, то часто можно сокращать запись, загружая их не последовательно, а одновременно. При этом удобнее воспользоваться шестнадцатеричной системой счисления:

LD BC,#6E2D ;45 = #2D, 110 = #6E CALL 8933

Чтобы нарисовать точку с определенными атрибутами так же, как и при выводе символов, можно воспользоваться подпрограммой , описанной в разделе , или установить временные цвета, изменив системную переменную ATTR_T (23695). Сразу заметим, что это в равной степени относится и к подпрограммам рисования линий и окружностей.

Для примера поставим точку красного цвета на желтом фоне. (Задавая атрибуты при выводе графики, помните, что в Speccy цвета определяются для целого знакоместа.) Рассчитав значения байта атрибутов для заданной комбинации цветов, получим число 50 (2+6ґ8). Перед выводом точки занесем это число в ячейку 23695, предварительно подготовив экран подпрограммой из раздела :

ORG 60000 ENT $ CALL SETSCR LD A,50 LD (23695),A LD BC,#6E2D CALL 8933 RET



Содержание раздела