Название класса программ, к которому принадлежит Моп2, —
мониторы-отладчики — говорит о многом. Слово «монитор» свиде-
тельствует о возможности просмотреть что-либо: вывести на экран
содержимое ячеек памяти, дизассемблировать (представить в виде
программы на языке ассемблер) программу в машинных кодах и
пр. Слово «отладчик» говорит о возможности отладить программу
(в данном случае программу в кодах). Кроме того, монитор-отлад-
чик должен позволять редактировать содержимое регистров и ячеек
памяти, копировать блоки, искать в памяти последовательность
кодов и пр.
Требования к мониторам-отладчикам для ZX Spectrum довольно
противоречивы: с одной стороны, они должны иметь достаточный
для нормальной работы набор команд, с другой — занимать мини-
мум памяти. В результате неизбежно страдает «дружественность»
этих программ. В них вы не встретите ни привычных меню и
Не1р'ов (страниц помощи), ни прочих «предметов роскоши», и уж
тем более, перед выполнением команды у вас не спросят: «А
уверены ли вы?», даже в том случае, если результат может быть
фатален для отлаживаемой программы и монитора.
Моп2 — один из достойнейших представителей семейства мони-
торов-отладчиков для ZX Spectrum. Многие программисты предпо-
читают работать именно с ним, а не с другими программами этого
класса.
Название «Моп2» фигурирует только в имени файла програм-
мы, нигде в теле монитора оно не встречается. Мало того, отсутст-
вует также информация о фирме-изготовителе, авторе, дате созда-
ния и т. д. Очевидно, причиной тому была чрезмерная скромность
хакера, писавшего Моп2. Хотя для хакеров это не типично.
Во избежание курьезов отметим, что из-за созвучности в назва-
ниях Моп2 довольно часто путают с другим монитором-отладчц-
ком — MONS2, предшественником широко распространенного
Достоинства:
• относительно небольшой объем занимаемой памяти (менее 6
килобайт);
• быстрота вывода на экран (за счет использования собственной
подпрограммы вывода);
• полная независимость монитора от системных переменных
интерпретатора Бейсика;
• независимость от режима прерываний (используется собст-
венная подпрограмма опроса клавиатуры);
• большой набор команд (20);
• распознавание команд калькулятора, встроенного в интерпре-
татор Бейсика;
• возможность ограничения размеров окна, в которое Моп2
выводит информацию;
• возможность работать как в шестнадцатеричной, так и в деся-
тичной системе счисления.
Недостатки:
• нет возможности задать точки останова и выполнить фрагмент
программы без «опеки» Моп2;
• не отображается содержимое регистров I и R, а также состоя-
ние триггера разрешения прерываний;
• не индицируется, в какой системе счисления происходит ввод-
вывод данных;
• не предусмотрена возможность записи дизассемблированного
текста программы на внешний носитель, а также вывода его
на принтер;
• нет версии программы, адаптированной к системе TR-DOS.
Подобно другим мониторам-отладчикам, Моп2 можно разме-
щать в памяти с произвольного адреса (в пределах разумного,
конечно; в частности, не рекомендуется загружать его в экранную
область и, само собой, в ПЗУ). Длина загружаемого файла — 7046
байт, однако, при первом запуске монитор самонастраивается,
после чего высвобождает еще 1092 байта.
Для загрузки Моп2 с магнитофона и запуска, например, с
адреса 25000 нужно ввести:
CLEAR 24999: LOAD "mon2"CODE 25000: RANDOMIZE USR 25000
MONS4 (его описание приведено в [1]). Но сходство Моп2 и
MONS2 на созвучности названий и заканчивается — различия
мониторов очевидны даже непосвященным.
Для загрузки с дисковода:
CLEAR 24999
RANDOMIZE USR 15619: REM: LOAD "mon2"CODE 25000
RANDOMIZE USR 25000
Перезапускается Mon2 с адреса загрузки.
Допустим, требуется «взглянуть» на некую программу в кодах,
которая записана на ленту под именем prog (тип CODE) и имеет
адрес запуска 50000 и длину 1000 байт. Выполним следующие
операторы:
CLEAR 30000
LOAD "mon2"CODE 40000: REM: загрузим Mon2
LOAD "prog"CODE 50000: REM: загрузим программу
RANDOMIZE USR 40000: REM: запустим Mon2
После запуска Mon2 на экране появляется значок > и мигающий
курсор [С] (или [L] — в зависимости от режима Caps Lock). Это
свидетельствует о том, что монитор находится в режиме ввода
команд.
Каждой команде Моп2, так же как и операторам Бейсика, соот-
ветствует определенная клавиша. При нажатии ее на экране появ-
ляется название команды. Например, после нажатия клавиши Е,
появится EDIT from.
Почти все команды требуют указания параметров. Первый па-
раметр вводится после подсказки from. Если требуется задать более
одного параметра, то при вводе они разделяются нажатием клави-
ши Space. При этом на экран выводится предлог to. Например:
MOVE from 40000 to 40100 to 50000
Отметим, что поскольку параметры команд могут вводиться как
в десятичной, так и в шестнадцатеричной форме, традиционной
ошибкой при работе с Моп2 является ввод параметров не в теку-
щей системе счисления. В результате этого команда выполняется
неправильно, либо не выполняется вовсе.
После ввода всех параметров команды для ее выполнения нужно
нажать клавишу Enter. Выполнение набранной команды можно
отменить клавишами CS/1 (Edit). Клавиша Edit также позволяет
прервать выполнение любой операции и выйти в режим ввода
команд.
При описании каждой команды мы будем приводить: клавишу,
при нажатии на которую вызывается команда, формат команды
(последовательность ввода), список параметров и пределы их из-
менения.