Описание
компьютера Радио-86РК
|
Журнал
РАДИО
|
ПЕРЕМЕЩАЮШИЙ ЗАГРУЗЧИК
Опубликованный в прошлом номере РЕДАКТОР ПАМЯТИ обладает свойством загрузки в самые старшие адреса доступной пользователю памяти. Операцию перемещения и соответствующей коррекции кодов программы осуществляет модуль ПЕРЕМЕЩАЮЩЕГО ЗАГРУЗЧИКА (табл.1), представляющий и самостоятельный интерес.
Использование перемещающего режима загрузки предпочтительно для большинства разрабатываемых программ, поэтому мы и приводим исходный текст этого важного программного модуля ПОЛНОСТЬЮ.
Как видно из текста программы, при запуске с адреса 0000Н загрузчик получает у МОНИТОРА адрес верхней границы доступного ОЗУ и вычисляет смещение, которое необходимо задать от начала ОЗУ до области загружаемой программы, чтобы она смогла полностью разместиться в ОЗУ. После этого следует процедура коррекции байтов, которые в кодах программы содержат старшие части изменившихся переходов и меток внутри программы. Поскольку для такой коррекции необходима дополнительная информация о том, как необходимо трактовать байты программы, программа пользуется побитной таблицей коррекции BITMAP, полученной вместе с машинными кодами при трансляции загружаемой программы с помощью МАКРОАССЕМБЛЕРА.
Каждый байт этой таблицы описывает 8 последовательных байт машинного кода. Установленный в “1 ” бит этой таблицы помечает байт, который необходимо корректировать. Старший бит байта таблицы описывает самый первый байт кодов программы, а остальные — следующие по порядку 7 бит. Такую таблицу для небольших программ можно создать и вручную, пользуясь листингом трансляции. Эта же таблица поможет однозначно дизассемблировать программы, имеющиеся только в машинном коде.
Информация, содержащаяся в таблице BITMAP, является исчерпывающей для перемещения программ с дискретностью 256 байт и позволяет, в частности, настроить программу в кодах на конкретные адреса или переместить ее так, чтобы она была настроена на работу в одной области адресного пространства, а переместилась в другую. Это необходимо, например, для записи программ в ПЗУ. Областью перемещения тогда будет область буфера программатора, а настройка должна быть произведена на область, где будет расположено запрограммированное ПЗУ. Для такого режима перемещающий загрузчик имеет вторую точку входа (0003Н), причем перед запуском программы необходимо соответствующим образом скорректировать содержимое блока параметров загрузчика (ячейки 0006H — 0011Н).
Программа, подлежащая перемещению, должна быть оттранслирована с адреса 0000Н, а адрес массива памяти, где будут размещаться ее коды до загрузки, указывается в ячейках 000СН, 000DH области параметров загрузчика.
Квалифицированные радиолюбители могут дополнить функциональные возможности экранного РЕДАКТОРА ПАМЯТИ. Для этого в наиболее важных точках программы зарезервировано по 3 байта (заполнены командой NOP) для размещения команд перехода на внешние программы и подпрограммы. В табл.2 приведено расположение этих точек и условия, при которых происходит выход на них. Следует также учесть, для удобной мнемоники команд в РЕДАКТОРЕ введен режим префикса: сначала нажимают клавишу АР2, а затем одну из алфавитно-цифровых клавиш.
Таблица 2.
ЗАРЕЗЕРВИРОВАННЫЕ АДРЕСА ДЛЯ РАСШИРЕНИЯ ФУНКЦИИ РЕДАКТОРА
Адрес |
Имя |
функция |
Условия выхода и передаваемые параметры |
0023 |
EXT1 |
Основное меню |
Ни одна из перечисленных • меню директив не выбрана. (a)=ascii код введенной клавиши |
0466 |
ЕХТ2 |
DUMP-редактор |
Ни одна из возможных директив редактора не совпадает с введенной. (А) =код клавиши |
0549 |
EXT5 |
Тo же, peжим Letter |
Введена не команда управления курсором, (А)=АSСII -код введенного символа. |
0642 |
ЕХТ3 |
Программатор РПЗУ |
Введен тип РПЗУ, не поддерживаемый этой ' версией. (А) =код типа РПЗУ (в HEX- записи) |
07C7 |
ЕХТ4 |
Программатор ППЗУ |
Введен тип ППЗУ, не поддерживаемый этой ' версией. (А) =код типа ППЗУ (в НЕХ- записи) |
0891 |
ЕХТ7 |
DUMP-редактор |
В [Hex] или [Letter] режимах редактора набрана <ESC>-последовательность, не отрабатываемая этой версией. (А)=код второго символа в набранной последовательности |
08B0 |
ЕХТ9 |
Despatch |
В слове по этому адресу необходимо разместить адрес входа в дизассемблер. Возврат из этой подпрограммы должен быть по RET |
08B3 |
EXT8 |
Despatch |
Первый байт должен содержать символ, следующий за <ESC>, а следующее за ним слово - адрес подпрограммы, отрабатывающей эту < ESC > -последовательность |
097В |
EXT10 |
Основное меню |
Первый байт должен содержать символ меню, а следующее слово -адрес перехода по этому символу на подпрограмму пользователя (например: ED*MICRON* или Бейсик). |
Примечание:
<ESC>/A = Курсор вверх,
г. Москва
От редакции. Исходный текст перемещающего загрузчика был подготовлен на другом компьютере. Чтобы воспользоваться им для “Радио-86РК”, необходимо операторы SET заменить операторами EQU, а после их имен поставить двоеточие.
Описание
компьютера Радио-86РК
|
Журнал
РАДИО
|