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



         

ВЫВОД БУКВЕННЫХ И ЦИФРОВЫХ СИМВОЛОВ - часть 4


Помимо обычных «печатных» символов (так называемых, ASCII-кодов), псевдографики, UDG и токенов (ключевых слов) Бейсика существует ряд специальных кодов, которые не выводятся, а служат для управления печатью. Часто их так и называют - управляющие символы. Они имеют коды от 0 до 31, хотя при выводе на экран используются не все, а только некоторые из них.

Директиве AT соответствует управляющий символ с кодом 22. И кроме этого кода необходимо вывести еще два, указывающих номера строки и столбца на экране. То есть, команду RST 16 нужно выполнить трижды:

LD A,22 RST 16 LD A,10 RST 16 LD A,8 RST 16

После этого можно вывести и сам символ:

LD A,"X" RST 16

Управляющие коды имеются и для всех прочих директив оператора PRINT: TAB, INK, PAPER, FLASH, BRIGHT, OVER, INVERSE, а также для запятой и апострофа. В табл. 4.1 приведены значения всех управляющих кодов, а также указано, какие байты требуется передать в качестве параметров. Как видите, для кодов 6, 8 и 13 дополнительных данных не требуется, коды 16...21 нуждаются еще в одном байте, а 22 и 23 ожидают ввода двух значений. Обратите внимание, что код 23 (TAB), вопреки ожиданиям, требует не одного, а двух байт, хотя на самом деле роль играет только первый из них, а второй игнорируется и может быть каким угодно (на это в таблице указывает вопросительный знак).

Таблица 4.1. Коды управления печатью

КодБайты параметровЗначение
6-Запятая
8-Забой
13-Перевод строки (апостроф)
16colourЦвет INK
17colourЦвет PAPER
18flagFLASH
19flagBRIGHT
20flagINVERSE
21flagOVER
22Y, XПозиция AT
23X, ?Позиция TAB

Допустимые значения для параметров следующие:

colour - 0...9 flag - 0 или 1 X - 0...31 Y - 0...21

Теперь напишем на ассемблере пример, соответствующий оператору

PRINT AT 20,3; INK 1; PAPER 5, BRIGHT 1; "OK."

Для большей наглядности снабдим нашу программку комментариями. В ассемблере комментарии записываются после символа «точка с запятой» (;), который может находиться в любом месте программы. Весь текст от этого символа до конца строки при трансляции пропускается и на окончательном машинном коде никак не сказывается. Само собой, при наборе примеров вы можете пропускать все или часть комментариев, тем более, что в книге многие из них даны на русском языке, а GENS, к сожалению, с кириллицей не знаком.




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