Главная Дока Микро-80 Радио-86РК ЮТ-88 Орион-128 Ссылки Новости Письмо

Описание компьютера Радио-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 = Курсор вверх,

<ESC>/B = Курсор вниз,
<ESC>/C =
Курсор вправо,
<ESC>/D = Курсор влево,
<ESC>/<ESC> = выход в монитор РК,
<ESC>/L = Выход в подключаемый дополнительно дизассемблер
Д. ЛУКЬЯНОВ

г. Москва

От редакции. Исходный текст перемещающего загрузчика был подготовлен на другом компьютере. Чтобы воспользоваться им для “Радио-86РК”, необходимо операторы SET заменить операторами EQU, а после их имен поставить двоеточие.

Описание компьютера Радио-86РК
Журнал РАДИО



(C) 2003-2010 www.danbigras.ru Наш адрес: info@danbigras.ru
Всё о старых компьютерах