Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #35, ОКТЯБРЬ 2003 г.

Игры настоящих кодеров

Shen (_shen_@mail.ru)

Спецвыпуск Xakep, номер #035, стр. 035-054-1


CoreWar aka Бой в памяти

Через год игре CoreWar исполнится двадцать лет. Тем не менее, мало кто знает о ней, даже в программерской среде. Причем здесь программеры? А при том, что CoreWar можно назвать игрой весьма условно. Я надеюсь, прочитав эту статью, ты поймешь, почему она напечатана в номере, посвященном вирусам.

В 1984 году, в журнале «Наука Америки», профессор A.K.Dewdney (до сих пор не знаю, как произносится его фамилия :)) опубликовал статью о придуманной им игре, которую он назвал CoreWar. Смысл заключался в следующем: участники писали программы на языке, похожем на ассемблер, и этим программам предстояло сражаться за свободное место в выделенном куске памяти. В статье Dewdney составил четкие правила, по которым программа признавалась побежденной, предусмотрел возможность ничьей, представил публике несколько различных программ-бойцов. Игра пришлась по вкусу и за короткое время нашла столько поклонников, что вскоре ими было создано Международное Общество Любителей CoreWar (ICWS - InternationalCoreWarSociety). Общество занималось распространением игры, проведением чемпионатов и, конечно, разработкой стандартов. Было предпринято много попыток улучшить и дополнить язык Redcode, предложенный Dewdney для CoreWar, и в результате, на сегодняшний день существуют три основных стандарта: ICWS’86, ICWS’88 и ICWS’94. Первый из них, от 1986 года, давно устарел и не используется. Де-факто на сегодня – версия ICWS’94, в которой язык Redcode был дополнен некоторыми принципиально новыми возможностями (например, была введена поддержка многозадачности). Однако по ICWS’88 все еще проводятся бои, поэтому в комментариях к программе-бойцу необходимо указывать, для какого стандарта предназначен воин.

Для того чтобы войти в мир CoreWar, надо совсем немного: программа-симулятор и эта статья. Самый распространенный симулятор CoreWar называется pMARS (portable Memory Array Redcode Simulator). Взять его, вместе с кучей другой информации по CoreWar, можно на www.koth.org. В этой статье я буду ориентироваться на pMARS 0.8.0, и первое, что нам предстоит сделать – разобраться, как работать с этим симулятором.

pMARS 0.8.0

У меня были проблемы с запуском pMARS под XP, поэтому, если у тебя NT-based Виндовс, можешь использовать альтернативный пакет: ftp.uniyar.ac.ru/home/libra/core_war.zip.

Итак, с koth.org ты должен взять сам симулятор (pmars08.zip) и пакет инструментов к нему (ptools11.zip). Оба архива нужно распаковать в одну папку. Создаешь в этом же каталоге файл imp.red, и пишешь в нем следующее:

MOV 0, 1

Ты только что создал собственного CoreWar-бойца! Как это работает, я объясню чуть позже, а сейчас запускай pshell.exe - оболочку для pMARS. Во-первых, установи опцию Options->Coreviewer в значение text. Теперь бой программ будет изображаться ASCII-символами, а не графикой. Почему? Так проще разбираться на первых порах, когда не понимаешь значения различных изображений. Во-вторых, иди в Options->Values и ставь цифру 7 в окошке Display Speed. Так ты сможешь наблюдать за ходом битвы в неспешном темпе. Теперь мы готовы к первой битве! File->Load, выбираешь два раза один и тот же файл – imp.red, и жмешь на Run. Тебе, наверное, еще многое непонятно, но пользоваться pMARS’ом ты уже умеешь. Переходим к тому, из-за чего все и затевалось – учимся программить на Redcode!

Содержание  Вперед на стр. 035-054-2