Разработка шахматной программы — задача достаточно сложная (см. книгу: Адельсон-Вельский Г. М., Аргалазов В. Л., Битман А. Р., Донской М. В. «Машина играет в шахматы». М., «Наука», 1983 г.). Поэтому воспользуемся готовой программой вычисления хода (ПВХ) в заданной позиции. ПВХ не содержит средств диалога с игроком и потому должна обслуживаться сервисной программой (СП), которую и предстоит нам подготовить. Возможно, кому-то захочется написать такую программу самостоятельно, но для этого надо знать правила взаимодействия ПВХ и СП (рис. 1).

ПВХ занимает ячейки 2000 — 2ECF (см. таблицу 1) и использует еще область 3000 — 32FF. Следует учесть, что во время работы программы она перемещается в начало ОЗУ, а после вычисления очередного хода содержимое этой части памяти восстанавливается. Передача параметров ПВХ и обратно осуществляется через ОЗУ.
Параметры, передаваемые от СП к ПВХ
1. Позиция кодируется таблицей 12288 [3000] из 64 байт (рис. 2).

Коды фигур
Фигуры компьютера
02 — пешка
04 — конь
06 — слон
08 — ладья
0А — ферзь
0С — король
Фигуры игрока
82 — пешка
84 — конь
86 — слон
88 — ладья
8А — ферзь
8С — король
00 — пустое поле
2. При вызове ПВХ с адреса 11852 [2Е4С] в ячейки 11910 [2Е86] — 11913 [2Е89] надо записать ход игрока. Ходу Е2Е4 соответствует:
3. Содержимое ячейки 12748 [31СС] определяет уровень игры и соответственно время, необходимое компьютеру на вычисление обратного хода. Значения этого параметра могут быть 0, 1, 2.
Рокировку должна выполнять СП. Это можно сделать следующим способом. Записать в таблицу (рис. 2) позицию, из которой нужная позиция получается после какого-либо хода короля или ладьи, и этот ход передается ПВХ.
Параметры, передаваемые от ПВХ к СП
1. Позиция на доске (см. рис. 2).
2. Ответный ход компьютера в ячейках 12744 [31С8] — 12747 [31СВ]. На ход Е2Е4 компьютер ответит Е7Е5:
Кроме того, возможны следующие ответы:
00 00 00 00 — ошибочный ход, 09 09 00 00 — рокировка, 09 09 09 00 — рокировка.
3. Ячейка 11917 [2E8D] дает дополнительную информацию: (11917) = 2 — шах.
Убедиться в работе ПВХ можно с помощью Монитора:
Предлагаемая СП написана на расширенном БЕЙСИКе (см. «М-К» № 6 за 1988 г.). Чтобы освободить место в ОЗУ для ПВХ, надо изменить содержимое ячеек:
0243 = 01
0244 = 39
1744 = 00
1745 = 39.
Изображения шахматных фигур, изготовленных с помощью «графического редактора» (см. «М-К» № 8 за 1988 г.), надо теперь разместить в свободной части ОЗУ. Присвоим фрагментам номера в соответствии с рисунком 3.
Следующая программа (таблица 2) устанавливает параметры соответствующих фрагментов (их размер 24×24 и расположение в ОЗУ).
После выполнения программы содержимое таблицы атрибутов графических фрагментов будет таким (таблица 3).
Далее с помощью новой программы (таблица 4) прочитаем с магнитофона изображения фигур и поместим их в соответствующее место ОЗУ.
В строке 50 задается размер фрагмента (24X24) для программы чтения с магнитофона. В строке 60 читается очередной фрагмент (появляется в левом верхнем углу экрана). Далее вводится номер фрагмента (рис. 3), и все повторяется для всех фигур. Операторы 20 и 40 подготавливают белые и черные поля.
В дальнейшем эти две программы не понадобятся.
Результат можно проверить с помощью оператора PLOT X, Y, N, где N — номер соответствующего фрагмента.
Читатели, которых больше интересует конечный результат, чем сам процесс создания программы, могут ввести коды фигур с помощью Монитора (таблица 5).
Если ПВХ и изображения фигур размещены в ОЗУ, можно набрать сервисную программу (таблица 6).
После ввода сервисной программы места в младшем блоке ОЗУ практически не остается, поэтому пользоваться оператором REM не рекомендуется.
После запуска программы инициализируется ПВХ (строка 15), рисуется шахматная доска, и программа ожидает ввода уровня игры.
Введите число 1, 2 или 3. Ход игрока объявляется нажатием клавиши «пробел» после установки курсора в нужном месте. Отменить неправильно указанный ход можно клавишей <2>. Клавиша <1> запускает программу с начала. Для выполнения рокировок служат клавиши <3> и <4>.
Готовую гибридную программу надо записать на ленту с помощью Монитора:
Дополнительные изменения в БЕЙСИКе упростят пользование программой:
0004 = 54—10
0054 = 21—89—05—Е3—С3—АВ—06
Автоматический запуск программы.
0589=AF—00—00
05E5=AF—00—00
Блокировка клавиатуры.
А. ВОЛКОВ, г. Днепродзержинск, Днепропетровская обл.