Шахматный эндшпиль: человек, играя белыми королём, конём и слоном, пытается поставить мат чёрному королю под управлением ПМК — за ограниченное число ходов.
Примечание: в файле .pmk для эмулятора регистры #9, #a…e уже заполнены.
Переключатель Р–ГРД–Г должен находиться в положении Г.
Каждая партия начинается со следующих действий:
ПМК выдаёт начальные координаты чёрного короля. Игрок набирает номер своей фигуры ( — король, — конь, — слон) координаты клетки, куда ею ходит . ПМК отвечает новыми координатами чёрного короля и так далее.
Правильность ввода человека не проверяется, поэтому он должен следить за ней сам.
Партия заканчивается появлением одного из сообщений:
Более сложные нюансы (вроде троекратного повторения одной и той же позиции) программа не учитывает, но человек может при желании контролировать их сам.
По вполне очевидным причинам калькулятор победить не может, однако оказывает человеку упорное сопротивление и зачастую тем или иным способом добивается ничьей.
Предварительные действия: ;
Белые:
Кр c1 — ;
К e1 — ;
С g1 — .
Чёрные:
Кр e8 — .
На партию отводится 50 ходов —
— 58
| № | Нажимаемые клавиши | Ход ПМК | Объяснение |
|---|---|---|---|
| 1 | 47 | С с5 — Кр d7 | |
| 2 | 36 | К d3 — Кр c6 | |
| 3 | 25 | Кр с2 — Кр b5 |
Из двух опубликованных в источнике вариантов взят более совершенный — от администрации «Клуба электронных игр», в него внесены предложенные авторами усовершенствования для МК-61/МК-52 и добавлены косметические изменения (регистры #0 и #3 обменялись функциями; микрооптимизации в отдельных местах).
00. FL0 01. 03 02. К− 03. П→X5 04. П→X1 05. − 06. П→X3 07. FВx 08. − 09. × 10. ÷ 11. . 12. X→П3 13. С/П 14. X→П7 15. КX→П7 16. КП→X1 17. КППb 18. КППa 19. КППb 20. 1 21. КППc 22. П→X8 23. В↑ 24. + 25. /−/ 26. КППc 27. 1 28. КППc 29. КППb 30. КППb 31. КП→X1 32. КППa 33. П→X9 34. П→X8 35. /−/ 36. X→П8 37. П→X8 38. П→X1 39. + 40. В↑ 41. X→П1 42. ВП 43. X→П2 44. Кx≠09 45. 9 46. − 47. Kx≠09 48. П→X1 49. Кx≠09 50. Fcos 51. Kx≥09 52. П→X4 53. КППd 54. + 55. ÷ 56. FВx 57. 3 58. − 59. Kx≥09 60. П→X5 61. КППd 62. + 63. 5 64. − 65. Кx≠09 66. П→X6 67. КППd 68. F√ 69. X→П2 70. . 71. − 72. Кx=0e 73. П→X7 74. + 75. X→П7 76. П→X4 77. − 78. Кx≠0e 79. П→X7 80. П→X5 81. − 82. Кx≠0e 83. П→X1 84. П→X7 85. − 86. П→X2 87. ÷ 88. FL2 89. 73 90. В/О 91. X→П7 92. ВП 93. П→X2 94. − 95. Fx² 96. FВx 97. П→X7 98. − 99. П→X1 A0. + A1. П→X8 A2. ÷ A3. Fx² A4. В/О
Пояснения:
К− вызовет ЕГГОГ.П→X3) совпадает с «новой» (П→X1) — пат.÷ вызовет ЕГГОГ.. (точка), дублируется в #3 и выводится игроку.678 876 594 495 123 321которые меняются ход от хода. Последним проверяется текущее поле короля (на случай пата); если и оно под боем, команда
33. П→X9 извлекает в #X ЗГОГГ, вызывающий немедленный останов (даже без команды ).КППa), 37 (КППb) и 38 (КППc); тот или иной используется в зависимости от ситуации. Рассмотрим её работу на примере первого обращения (шаги 16…17):
16. КП→X1 уменьшает на 1 содержимое #1 — позицию короля, тем самым перенося его на одну горизонталь вниз. 17. КППb передаёт управление в основную подпрограмму на шаг 37. Первая команда подпрограммы вызывает содержимое #8, знак которого меняется ход от хода. Допустим, там −10; это число складывается с новым содержимым #1 — король пошёл вниз-влево. Блок 40…43 «срезает» первую цифру этого числа (побочный эффект сочетания команд X→П# ВП), а вторую заносит в #2. Равенство последнего значения 0 соответствует выходу короля за нижнюю либо левую границы доски (кроме поля 00, которое приходится проверять особо). Если такое случилось, команда перехода 44. Кx≠09 передаёт управление на 90. В/О, происходит возврат из подпрограммы к адресу 18, и начинается проверка очередного хода. Если же всё в порядке, фрагмент 45…47 проверяет выход за верхнюю границу доски, 48…49 — на «фиктивное» поле 00, 45…46 — за правую границу. Если всё в порядке, наступает очередь проверок битых полей.
Первой вызывается координата белого короля — 52. П→X4. Тут же следует обращение к подпрограмме КППd (см. ниже), которая возвращает квадраты разностей вертикальных (в #Y) и горизонтальных (в #X) координат. Если сумма этих величин (шаг 54) оказывается равной 0 (человек на своём ходу по ошибке вплотную придвинул белого короля к чёрному), то следующая команда деления вызывает аварийный останов с сообщением ЕГГОГ.
56…59: если же предыдущая проверка прошла успешно, из суммы квадратов вычитается тройка. Если разность отрицательна, такой ход поставил бы чёрного короля вплотную с белым, а значит недопустим.
60…65: теперь проверяются координаты коня. Если сумма квадратов разностей координат равна 5, значит проверяемое поле находится у коня под боем.
66…89: проверка координат слона начинается по той же схеме (66…67). Команды 68…69 заносят в #2 модуль разности горизонтальных координат слона и чёрного короля, затем команда 70. . (точка) восстанавливает стек. Далее проверяется, стои́т ли король на одной из простреливаемых слоном диагоналей (71…72). Если нет, то ход возможен, и управление передаётся в начало программы для вывода новых координат чёрного короля. Если да, то циклом 73…89 проверяются все поля, разделяющие чёрного короля и слона — нет на них белого короля или коня? Если есть, значит слон «заэкранирован», и ход опять-таки допустим — управление передаётся в начало программы. При совпадении координат чёрного короля и слона содержимое #2 ещё до вход в цикл равно 0, и команды 86…87 вызывают ЕГГОГ (слон «съеден»). Если же диагональ полностью свободна, цикл заканчивается и команда 90. В/О выходит из подпрограммы: этот ход невозможен и ПМК начинает обдумывать следующий. И всё повторяется.
КППd, находящая квадраты разностей вертикальных и горизонтальных координат для сравнения позиций в основной подпрограмме.Источник: журнал «Техника — молодёжи», № 12 / 1986, стр. 48…51.
Авторы: редакция «Клуба электронных игр».
Немного доработал, перевёл в формат эмулятора и составил эту инструкцию: Адам Лаврик — 2026-04-22.