Орион-128/Радио 02-90/Программное обеспечение: различия между версиями
Panther (обсуждение | вклад) |
Panther (обсуждение | вклад) мНет описания правки |
||
Строка 1: | Строка 1: | ||
{{ДИ|Автор=В. СУГОНЯКО, В. САФРОНОВ, К. КОНЕНКОВ|Источник=http://www.retro.h1.ru/Orion/Program/SoftWare.php}} | {{ДИ|Автор=В. СУГОНЯКО, В. САФРОНОВ, К. КОНЕНКОВ|Источник=http://www.retro.h1.ru/Orion/Program/SoftWare.php}} | ||
== ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПЕРСОНАЛЬНОГО РАДИОЛЮБИТЕЛЬСКОГО КОМПЬЮТЕРА | == ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПЕРСОНАЛЬНОГО РАДИОЛЮБИТЕЛЬСКОГО КОМПЬЮТЕРА «ОРИОН −128» == | ||
По структуре программное обеспечение радиолюбительского компьютера (РК) | По структуре программное обеспечение радиолюбительского компьютера (РК) «Орион-128» аналогично «Микро-80» и «Радио-86РК». Отличительная особенность компьютера — двухстраничная система построения памяти в базовом варианте и четырехстраничная — в расширенном. | ||
Рассмотрим структуру | Рассмотрим структуру основной — 0 страницы памяти. Как видно из рис. 1, в самых старших адресах памяти располагается управляющая программа МОНИТОР. Он занимает адресное пространство 0F800 — 0FFFFH и размещен в ПЗУ. | ||
Область ОЗУ с адресами | Область ОЗУ с адресами 0F400 — 0F7FFH отведена под дешифрацию портов ввода-вывода, так как микропроцессор адресуется к портам ввода-вывода как к ячейкам памяти. | ||
ТАБЛИЦА АДРЕСАЦИИ ПОРТОВ ВВОДА-ВЫВОДА | ТАБЛИЦА АДРЕСАЦИИ ПОРТОВ ВВОДА-ВЫВОДА | ||
<pre> | <pre> | ||
Строка 21: | Строка 21: | ||
[[Изображение:Orion128 memory mapping.png|right]] | [[Изображение:Orion128 memory mapping.png|right]] | ||
Область с адресами | Область с адресами 0F000 — 0F3FFH (1 Кбайт) используется как служебное ОЗУ, здесь размещаются служебные ячейки и рабочий стек МОНИТОРА (0F3C0 — 0F3FFH). Адреса 0F000H — 0F2FFH занимает знакогенератор, который разворачивается при инициализации МОНИТОРа. | ||
Далее размещается ОЗУ дисплея. Оно занимает адресное пространство | Далее размещается ОЗУ дисплея. Оно занимает адресное пространство 0С000 — 0EFFFH, то есть 12 Кбайт или 384X256 точек разложения. Остальные 48 Кбайт памяти отведены пользователю. | ||
В дополнительных страницах верхние ( | В дополнительных страницах верхние (0F000 — 0FFFFH) 4 Кбайта ОЗУ не используются и пользователю недоступны. При переключении страниц эта область памяти не переключается, что позволяет иметь доступ к МОНИТОРу и служебной области ОЗУ из любой страницы. | ||
В дополнительной странице | В дополнительной странице памяти — 1 находится область ОЗУ, содержащая информацию о цвете экрана дисплея. Она занимает, как и ОЗУ экрана, тоже 12 Кбайт. Такой принцип распределения атрибутов цвета изображения позволяет не уменьшать разрешающую способность экрана при переходе в цветной режим отображения информации, а также имитировать спрайтовую структуру. Остальные 48 Кбайт ОЗУ дополнительной страницы могут быть использованы, к примеру, как «квазидиск». Следует заметить, что если цветной режим дисплея отключен, то в дополнительной странице пользователю отводятся все 60 Кбайт памяти. | ||
По адресам | По адресам 0F800H — 0FB00H находятся системные порты. Рассмотрим их структуру более подробно. Системные порты доступны только для записи. | ||
Системный порт1 (адрес 0F800H), | Системный порт1 (адрес 0F800H), — управление цветным режимом. | ||
<pre> | <pre> | ||
Строка 39: | Строка 39: | ||
</pre> | </pre> | ||
Бит | Бит D2 — монохромный режим На цветном мониторе информация отображается зеленым цветом на черном фоне, если включена палитра № 1, и желтым на голубом фоне — палитра № 2. | ||
Бит | Бит D1 — режим 1 (D1 —0) — 16 цветов (групповое кодирование). В этом режиме на восемь смежных точек изображения выделяется общий байт управления цветом, который размещается в дополнительной странице памяти I — при этом возможно отображение 16 цветов изображения и 16 цветов фона в режиме 2 (D1=1) каждому элементу отображения (пикселю) можно присвоить 4 цвета в одной из двух палитр. | ||
Бит | Бит D0 — палитра 1 (D=0), палитра 2 (D=1) (только в 4-цветном режиме). | ||
Перечислим все возможные комбинации состояний системного порта 1. | Перечислим все возможные комбинации состояний системного порта 1. | ||
Строка 55: | Строка 55: | ||
</pre> | </pre> | ||
Следует помнить, что если в дополнительной странице по адресу | Следует помнить, что если в дополнительной странице по адресу 0С000 — 0EFFFH находится информация, то она будет потеряна при включении цветного (тем более цветного многоэкранного) режима дисплея. | ||
Системный порт 2 (адрес 0F900H) | Системный порт 2 (адрес 0F900H) — управление переключением страниц памяти. | ||
<pre> | <pre> | ||
D1 D0 | D1 D0 | ||
0 0 — основная страница “0” | 0 0 — основная страница “0” | ||
0 1 — дополнительная страница “1” | 0 1 — дополнительная страница “1” | ||
1 0 — дополнительная страница “2” | 1 0 — дополнительная страница “2” | ||
1 1 — дополнительная страница “3” | 1 1 — дополнительная страница “3” | ||
</pre> | </pre> | ||
В базовой версии компьютера страницы 2 и 3 отсутствуют, поэтому значения «10» и «11» использовать не следует. | |||
При включении компьютера программа МОНИТОР всегда инициализирует экран из страницы памяти 1, который размещается в ОЗУ по адресам | Системный порт 3 (адрес 0FA00H) — управление переключением экранов. | ||
При включении компьютера программа МОНИТОР всегда инициализирует экран из страницы памяти 1, который размещается в ОЗУ по адресам 0С000 — 0EFFFH. Однако пользователь, изменяя значение системного порта 3, а также начальный адрес экрана в служебной ячейке, может создать еще три области экрана: | |||
<pre> | <pre> | ||
8000—AFFFH — экран 2 | |||
4000—6FFFH — экран 3 | 4000—6FFFH — экран 3 | ||
0000—2FFFH — экран 4 | 0000—2FFFH — экран 4 | ||
D1 D0 | D1 D0 | ||
0 0 - экран №1 | 0 0 - экран №1 | ||
0 1 - экран №2 | 0 1 - экран №2 | ||
1 0 - экран №3 | 1 0 - экран №3 | ||
1 1 - экран №4 | 1 1 - экран №4 | ||
</pre> | </pre> | ||
Промежутки, не заполненные экранными областями | Промежутки, не заполненные экранными областями 3000 — 3FFFH, 7000 — 7FFFH, ОВООО—OBFFFH, могут быть использованы для размещения программ пользователя. Многоэкранный режим включения возможен как в монохромном, так и в любом цветном режиме. | ||
Системный порт 4 (адрес 0НВ00Н) | Системный порт 4 (адрес 0НВ00Н) — переключение типов дисплея: графический или символьный (аппаратного исполнения) — в базовом варианте РК «Орион-128» — не используется. | ||
При | При «холодном» запуске МОНИТОРа или нажатии на кнопку «Сброс» в системные порты записывается значение — ООН, таким образом устанавливается следующий режим: монохромное отображение информации, включена нулевая (основная) страница памяти и инициализирован экран 1. | ||
== МОНИТОР == | == МОНИТОР == | ||
После включения питания и нажатия кнопки | После включения питания и нажатия кнопки «Сброс» управление передается программе МОНИТОР. МОНИТОР — единственная резидентная программа, записанная в ПЗУ и занимающая 2 Кбайта. Коды программы приведены в табл.2. Она инициализирует программируемые БИС портов, обеспечивает работу клавиатуры, дисплея, контролирует ввод-вывод информации на внешний накопитель — магнитную ленту. | ||
В МОНИТОРе находится и специально упакованный знакогенератор, который при пуске МОНИТОРа распаковывается и размещается в области служебного ОЗУ по адресам | В МОНИТОРе находится и специально упакованный знакогенератор, который при пуске МОНИТОРа распаковывается и размещается в области служебного ОЗУ по адресам OFOOO — OF2FFH. Наличие загружаемого знакогенератора позволяет производить его замену, в том числе и национальные наборы символов, а также одновременно работать с несколькими знакогенераторами. | ||
=== ДИРЕКТИВЫ МОНИТОРА === | === ДИРЕКТИВЫ МОНИТОРА === | ||
Строка 100: | Строка 101: | ||
МОНИТОР поддерживает упрощенный диалог с пользователем, который вводит с клавиатуры директивы и считывает с экрана дисплея результат их выполнения. | МОНИТОР поддерживает упрощенный диалог с пользователем, который вводит с клавиатуры директивы и считывает с экрана дисплея результат их выполнения. | ||
После запуска МОНИТОРа экран телевизора очищается, в левом верхнем углу появляется надпись | После запуска МОНИТОРа экран телевизора очищается, в левом верхнем углу появляется надпись «Орион-128», а под ней — стрелка «=>», сообщающая о том, что МОНИТОР находится в управляющем режиме и готов к вводу директив. Директивы МОНИТОРа однобуквенные и состоят из латинского символа и одного-двух параметров, представляющих собой шестнадцатиричные числа. Параметры между собой разделяются запятой. Неверно набранные символы исправляются нажатием клавиши «<-” (“курсор назад”). При этом символ, под которым находится курсор, можно исправить повторным вводом. Клавишей “—>» курсор можно вернуть в прежнее положение и продолжать ввод. Выполнение директивы начинается после нажатия на клавишу (ВК). Если директива и параметры заданы правильно, то начинается ее выполнение, если нет, на экран выводится знак вопроса. Это признак ошибочного ввода директивы или некорректного ввода параметров. | ||
МОНИТОР выполняет семь | МОНИТОР выполняет семь директив — директивы просмотра и модификации ячеек памяти, передачи управления программам пользователя, записи — чтения информации на магнитную ленту, включение цветного режима дисплея. Ниже перечислены все директивы и форматы их ввода. | ||
<pre> | <pre> | ||
Строка 116: | Строка 117: | ||
Рассмотрим подробнее особенности работы директив МОНИТОРа. | Рассмотрим подробнее особенности работы директив МОНИТОРа. | ||
Директива | Директива «D» — выводит на экран дисплея содержимое памяти в шестнадцатиричном формате. Для работы директивы достаточно вводить только начальный адрес. После нажатия клавиши ВК на экран выводится блок памяти длиной в 256 байт, после чего МОНИТОР входит в режим ожидания. Повторное нажатие клавиши ВК выводит очередную «порцию дампа». Нажатие клавиши (точка) прерывает работу директивы. Если через запятую после адреса ввести номер страницы (1—3), то на экран дисплея будет выведено содержимое соответствующей страницы памяти в шестнадцатиричном виде. Нулевые значения параметров и незначащие нули можно опускать. | ||
Директива | Директива «М» — предназначена для просмотра и изменения содержимого одной или нескольких ячеек памяти. После ее ввода на экране высвечивается адрес ячейки и ее содержимое. Если необходимо изменить содержимое ячейки, набирают новое значение и нажимают клавишу ВК, если изменений не требуется, ее нажимают сразу же. При каждом нажатии на клавишу ВК значение адреса автоматически увеличивается на единицу. Нажатие клавиши «.» (точка) прерывает работу директивы. | ||
Директива | Директива «G» — передает управление программе пользователя по заданному адресу. Предварительная установка регистров процессора не производится. Так, например, директива "G(BK)>> — запускает программу по адресу ООООН. | ||
Директива | Директива «Z» — это модификация директивы «G». Однако для ее выполнения не требуется вводить адрес перехода. Управление передается всегда по одному и тому же адресу — OBFFDH. Эта директива введена для удобства работы с программами, которые размещаются под «потолком» ОЗУ пользователя, то есть в верхних адресах памяти. В таких программах (в конце) по адресу OBFFDH должна находиться команда безусловного перехода (JMP) на начало программы. При этом размер программы не будет влиять на стартовый адрес, а значит, все подобные программы можно запускать по одному стандартному адресу — OBFFDH. | ||
Директива | Директива «О» — вывод массива информации, находящейся в ОЗУ, на магнитную ленту. Формат записи полностью совместим с компьютером «Ра-дио-86РК». Скорость вывода — 1200 БОД, изменить ее можно только заменой константы в служебных ячейках МОНИТОРа директивой «М». | ||
Директива | Директива «I» — чтение информации с магнитной ленты и размещение ее в ОЗУ. После считывания массива на экран дисплея выводится начальный и конечный адреса, а также его контрольная сумма. Появление на экране рядом с контрольной суммой символа «?» (знак вопроса) говорит о том, что считывание произошло с ошибкой. Если не совпадает формат, скорость или не произошло опознание файла — выводится только «?». Досрочный вывод (то есть до окончания считывания программы) символа «?» указывает на дефекты записи (пропадание сигнала). | ||
Директива | Директива «С» — предназначена для настройки экрана дисплея на отображение информации в цвете. Директива позволяет произвести проверку вывода информации в цветном (16-цветном) режиме на цветной дисплей (телевизор). Основное назначение директивы — проверить правильность подключения цветного дисплея и его настройку. Директива, согласно кода цвета, включает цветной режим и очищает область ОЗУ цвета в дополнительной странице памяти 1. После выполнения директивы «С» МОНИТОР и все другие программы пользователя будут выводить информацию на экран дисплея в том цветовом решении (цвет фона и отображения символов), которое было задано в параметре директивы. | ||
Код цвета состоит из двух шестнадцатиричных символов от 0 до F. Первый символ указывает на цвет фона, | Код цвета состоит из двух шестнадцатиричных символов от 0 до F. Первый символ указывает на цвет фона, второй — изображения. После ввода кода директивы, двух символов цвета нажимают клавишу (ВК). Если, например, ввести «C++В1+ВК», то дальнейший вывод информации будет происходить в следующем цветовом решении: бирюзовые символы на синем фоне (см. таблицу кодов). | ||
Следует заметить, что программный драйвер обработки экрана дисплея в МОНИТОРе не поддерживает управление цветом, и это должна выполнять программа пользователя. Коды цветов | Следует заметить, что программный драйвер обработки экрана дисплея в МОНИТОРе не поддерживает управление цветом, и это должна выполнять программа пользователя. Коды цветов | ||
<pre> | <pre> | ||
Строка 155: | Строка 156: | ||
=== ТАБЛИЦА СТАНДАРТНЫХ ПОДПРОГРАММ ВВОДА-ВЫВОДА === | === ТАБЛИЦА СТАНДАРТНЫХ ПОДПРОГРАММ ВВОДА-ВЫВОДА === | ||
МОНИТОР содержит набор стандартных подпрограмм (табл. 1, 2 и 3),к которым программа пользователя может обращаться, соблюдая соглашение об обмене информацией. Набор подпрограмм в основном такой же, как в | МОНИТОР содержит набор стандартных подпрограмм (табл. 1, 2 и 3), к которым программа пользователя может обращаться, соблюдая соглашение об обмене информацией. Набор подпрограмм в основном такой же, как в «Микро-80» и «Радио-86РК», однако несколько расширен и изменен. Эти отличия связаны с архитектурными особенностями ПРК «Орион-128» и различием в организации отображения на экране дисплея. Несмотря на это большинство программ, разработанных для названных ПК, будут работоспособны и на «Орионе-128». | ||
В табл.1 символом | В табл.1 символом «*» помечены те входы подпрограмм ввода-вывода, которые имеют существенное отличие или являются совершенно новыми по отношению к «Радио-86РК». Рассмотрим их. | ||
<TABLE | <TABLE class=border> | ||
<TR> | <TR> | ||
<TD COLSPAN=2>№</TD> | <TD COLSPAN=2>№</TD> | ||
Строка 176: | Строка 177: | ||
ВВОД C СИМВОЛА С КЛАВИАТУРЫ | ВВОД C СИМВОЛА С КЛАВИАТУРЫ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F803H<br> | <TD COLSPAN=2> 0F803H<br /> | ||
−2045</TD> | |||
<TD> | <TD> | ||
ВЫХ: | ВЫХ: А — ВВЕДЕННЫЙ СИМВОЛ | ||
</TD> | </TD> | ||
</TR> | </TR> | ||
Строка 189: | Строка 190: | ||
ВВОД БАЙТА С МАГНИТОФОНА | ВВОД БАЙТА С МАГНИТОФОНА | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F806H<br> | <TD COLSPAN=2> 0F806H<br /> | ||
−2042</TD> | |||
<TD> ВХ.: А= | <TD> ВХ.: А=0FFH — С ПОИСКОМ СИНХРОБАИТА | ||
<br> | <br /> | ||
А= | А=08Н — БЕЗ ПОИСКА</TD> | ||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 202: | Строка 203: | ||
ВЫВОД СИМВОЛА НА ЭКРАН | ВЫВОД СИМВОЛА НА ЭКРАН | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F809H<br> | <TD COLSPAN=2> 0F809H<br /> | ||
−2039</TD> | |||
<TD> | <TD> | ||
ВХ.: | ВХ.: С — ВЫВОДИМЫЙ СИМВОЛ | ||
</TD> | </TD> | ||
</TR> | </TR> | ||
Строка 215: | Строка 216: | ||
ЗАПИСЬ БАЙТА НА МАГНИТОФОН | ЗАПИСЬ БАЙТА НА МАГНИТОФОН | ||
</TD> | </TD> | ||
<TD height=10 COLSPAN=2> 0F80CH<br> | <TD height=10 COLSPAN=2> 0F80CH<br /> | ||
−2036</TD> | |||
<TD height=10> | <TD height=10> | ||
ВХ.: | ВХ.: С — ЗАПИСЫВАЕМЫЙ БАЙТ | ||
</TD> | </TD> | ||
</TR> | </TR> | ||
Строка 228: | Строка 229: | ||
ВЫВОД СИМВОЛА НА ЭКРАН | ВЫВОД СИМВОЛА НА ЭКРАН | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F80FH<br> | <TD COLSPAN=2> 0F80FH<br /> | ||
−2033</TD> | |||
<TD> | <TD> | ||
ВХ.: | ВХ.: А — ВЫВОДИМЫЙ СИМВОЛ | ||
</TD> | </TD> | ||
</TR> | </TR> | ||
Строка 241: | Строка 242: | ||
ОПРОС СОСТОЯНИЯ КЛАВИАТУРЫ | ОПРОС СОСТОЯНИЯ КЛАВИАТУРЫ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F812H<br> | <TD COLSPAN=2> 0F812H<br /> | ||
−203И</TD> | |||
<TD> ВЫХ.: А= | <TD> ВЫХ.: А=00Н — НЕ НАЖАТА <br /> | ||
А= | А=0FFH — НАЖАТА</TD> | ||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 253: | Строка 254: | ||
ВЫВОД БАЙТА НА ЭКРАН В НЕХ-КОДЕ | ВЫВОД БАЙТА НА ЭКРАН В НЕХ-КОДЕ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0FS15H<br> | <TD COLSPAN=2> 0FS15H<br /> | ||
−2027</TD> | |||
<TD> | <TD> | ||
ВХ.: | ВХ.: А — ВЫВОДИМЫЙ СИМВОЛ | ||
</TD> | </TD> | ||
</TR> | </TR> | ||
Строка 266: | Строка 267: | ||
ВЫВОД НА ЭКРАН СООБЩЕНИИ | ВЫВОД НА ЭКРАН СООБЩЕНИИ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F81BH<br> | <TD COLSPAN=2> 0F81BH<br /> | ||
−2В24</TD> | |||
<TD> ВХ.: HL- | <TD> ВХ.: HL- — АДРЕС НАЧАЛА КОНЕЧНЫЙ | ||
БАЙТ — 00Н</TD> | |||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 278: | Строка 279: | ||
ВВОД КОДА НАЖАТОЙ КЛАВИШИ (INKEY) | ВВОД КОДА НАЖАТОЙ КЛАВИШИ (INKEY) | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F81BH<br> | <TD COLSPAN=2> 0F81BH<br /> | ||
−2021</TD> | |||
<TD> ВЫХ: А= | <TD> ВЫХ: А=0FFH — НЕ НАЖАТА <br /> | ||
А= | А=0FEH — РУС/ЛАТ ИНАЧЕ — КОД КЛАВИШИ</TD> | ||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 290: | Строка 291: | ||
ЗАПРОС ПОЛОЖЕНИЯ КУРСОРА | ЗАПРОС ПОЛОЖЕНИЯ КУРСОРА | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F81EH<br> | <TD COLSPAN=2> 0F81EH<br /> | ||
−2018</TD> | |||
<TD> ВЫХ: | <TD> ВЫХ: Н — НОМЕР СТРОКИ — Y a <br /> | ||
L — НОМЕР ПОЗИЦИИ — X</TD> | |||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 302: | Строка 303: | ||
НЕ ИСПОЛЬЗУЕТСЯ | НЕ ИСПОЛЬЗУЕТСЯ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F821H<br> | <TD COLSPAN=2> 0F821H<br /> | ||
−2015</TD> | |||
<TD> | <TD> | ||
| | ||
Строка 315: | Строка 316: | ||
ЧТЕНИЕ ФАЙЛА ИЗ МАГ. ЛЕНТЫ | ЧТЕНИЕ ФАЙЛА ИЗ МАГ. ЛЕНТЫ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F824H<br> | <TD COLSPAN=2> 0F824H<br /> | ||
−2012</TD> | |||
<TD> МАССИВ РАЗМЕШ.ПО АДРЕСАМ ЗАП. НА МАГНИТНОЙ | <TD> МАССИВ РАЗМЕШ.ПО АДРЕСАМ ЗАП. НА МАГНИТНОЙ | ||
ЛЕНТЕ</TD> | ЛЕНТЕ</TD> | ||
Строка 327: | Строка 328: | ||
ЗАПИСЬ ФАЙЛА НА МАГ. ЛЕНТУ | ЗАПИСЬ ФАЙЛА НА МАГ. ЛЕНТУ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F827H<br> | <TD COLSPAN=2> 0F827H<br /> | ||
−2009</TD> | |||
<TD> ВХ.: HL- НАЧ. АДРЕС МАССИВА в <br> | <TD> ВХ.: HL- НАЧ. АДРЕС МАССИВА в <br /> | ||
DE- КОНЕЧ. АДРЕС</TD> | DE- КОНЕЧ. АДРЕС</TD> | ||
</TR> | </TR> | ||
Строка 339: | Строка 340: | ||
ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ БЛОКА | ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ БЛОКА | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0FB2AH<br> | <TD COLSPAN=2> 0FB2AH<br /> | ||
−2006</TD> | |||
<TD> ВХ.: | <TD> ВХ.: HL — АДРЕС НАЧАЛА Е DE — АДРЕС КОНЦА | ||
ВЫХ: <br> | ВЫХ: <br /> | ||
ВС — КОНТРОЛЬНАЯ СУММА</TD> | |||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 352: | Строка 353: | ||
РАСПАКОВКА ВНУТРЕННЕГО ЗНАКОГЕНЕРАТОРА | РАСПАКОВКА ВНУТРЕННЕГО ЗНАКОГЕНЕРАТОРА | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F82DH<br> | <TD COLSPAN=2> 0F82DH<br /> | ||
−2003</TD> | |||
<TD> | <TD> | ||
| | ||
Строка 365: | Строка 366: | ||
ЧТЕНИЕ КОНЕЧНОГО АДРЕСА ОЗУ ПОЛЬЗОВАТ. | ЧТЕНИЕ КОНЕЧНОГО АДРЕСА ОЗУ ПОЛЬЗОВАТ. | ||
</TD> | </TD> | ||
<TD COLSPAN=2>0F830H<br> | <TD COLSPAN=2>0F830H<br /> | ||
−2000</TD> | |||
<TD COLSPAN=2> | <TD COLSPAN=2> | ||
ВЫХ: HL -КОНЕЧНЫЙ АДРЕС | ВЫХ: HL -КОНЕЧНЫЙ АДРЕС | ||
Строка 378: | Строка 379: | ||
ЗАПИСЬ КОНЕЧНОГО АДРЕСА ОЗУ ПОЛЬЗОВАТ. | ЗАПИСЬ КОНЕЧНОГО АДРЕСА ОЗУ ПОЛЬЗОВАТ. | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F833H<br> | <TD COLSPAN=2> 0F833H<br /> | ||
−1997</TD> | |||
<TD COLSPAN=2> | <TD COLSPAN=2> | ||
EX. : HL -КОНЕЧНЫЙ АДРЕС | EX. : HL -КОНЕЧНЫЙ АДРЕС | ||
Строка 391: | Строка 392: | ||
ЧТЕНИЕ БАЙТА ИЗ ДОП. СТРАН. | ЧТЕНИЕ БАЙТА ИЗ ДОП. СТРАН. | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F836H<br> | <TD COLSPAN=2> 0F836H<br /> | ||
−1994</TD> | |||
<TD COLSPAN=2> BX.: HL- | <TD COLSPAN=2> BX.: HL-АДРЕСА — N СТРАНИЦЫ (0-3) | ||
<br> | <br /> | ||
ВЫХ: | ВЫХ: С — СЧИТАННЫЙ БАЙТ</TD> | ||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 402: | Строка 403: | ||
</TD> | </TD> | ||
<TD COLSPAN=2> ЗАПИСЬ БАЙТАВ ДОП. СТРАНИЦУ</TD> | <TD COLSPAN=2> ЗАПИСЬ БАЙТАВ ДОП. СТРАНИЦУ</TD> | ||
<TD COLSPAN=2> 0F839H<br> | <TD COLSPAN=2> 0F839H<br /> | ||
−1991</TD> | |||
<TD COLSPAN=2> BX.: | <TD COLSPAN=2> BX.: HL — АДРЕСА — N | ||
СТРАНИЦЫ (0-3)<br> | СТРАНИЦЫ (0-3)<br /> | ||
C — ЗАПИСЫВАЕМЫЙ БАЙТ</TD> | |||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 415: | Строка 416: | ||
УСТАНОВКА КУРСОРА | УСТАНОВКА КУРСОРА | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F83CH<br> | <TD COLSPAN=2> 0F83CH<br /> | ||
−1988</TD> | |||
<TD COLSPAN=2> ВХ. | <TD COLSPAN=2> ВХ. Н — НОМЕР СТРОКИ — Y<br /> | ||
L — НОМЕР ПОЗИЦИИ — X</TD> | |||
</TR> | </TR> | ||
<TR> | <TR> | ||
Строка 427: | Строка 428: | ||
РЕЗЕРВ | РЕЗЕРВ | ||
</TD> | </TD> | ||
<TD COLSPAN=2> 0F83FH<br> | <TD COLSPAN=2> 0F83FH<br /> | ||
−1988</TD> | |||
<TD COLSPAN=2> | <TD COLSPAN=2> | ||
| | ||
Строка 435: | Строка 436: | ||
</TABLE> | </TABLE> | ||
080FH — вывод символа, содержащегося в аккумуляторе, на дисплей. Значение всех регистров сохраняется. | |||
0F824H — чтение файла программы с магнитной ленты. Подпрограмма должна вызываться только при наличии сигнала фонограммы с магнитофона на входе компаратора. В противном случае произойдет программное прерывание и управление будет передано по адресу, хранящемуся в ячейках OF3D6, OF3D7H, то есть на «теплый старт» МОНИТОРа. | |||
0F827H — запись файла на магнитную ленту. Перед вызовом подпрограммы необходимо в регистровую пару «HL» занести начальный адрес, а в регистры «DE» — конечный адрес того участка памяти, который необходимо сохранить на ленте. | |||
0F82DH — распаковка и размещение внутреннего знакогенератора в области служебного ОЗУ. Обращение к этой подпрограмме (без входных параметров) позволяет восстановить знакогенератор. | |||
0F836H — чтение байта из дополнительной страницы. Адрес ячейки заносится в регистры «HL». В регистр «А» — номер страницы, откуда происходит чтение. После выполнения подпрограммы в регистре «С» будет содержаться считанный байт. | |||
0F839H — запись байта в дополнительную страницу памяти. Регистры «HL» и «А» имеют такое же назначение, что и в предыдущей подпрограмме, а в регистр «С» заносится байт, который должен быть записан в дополнительную страницу памяти. | |||
0F83CH — установка курсора в заданное знакоместо на экране дисплея. В регистр «Н» заносится значение номера строки (0—18Н), регистр «L» — номер позиции (0— 3FH). | |||
Строка 467: | Строка 468: | ||
Для своей работы МОНИТОР использует незначительный объем памяти. В этой области размещаются рабочие ячейки МОНИТОРа и константы. К основным рабочим (служебным) ячейкам имеется доступ через стандартную таблицу ввода-вывода, размещенную в начальных адресах МОНИТОРа. Назначение остальных ячеек, представляющих интерес для пользователя, приведен ниже. | Для своей работы МОНИТОР использует незначительный объем памяти. В этой области размещаются рабочие ячейки МОНИТОРа и константы. К основным рабочим (служебным) ячейкам имеется доступ через стандартную таблицу ввода-вывода, размещенную в начальных адресах МОНИТОРа. Назначение остальных ячеек, представляющих интерес для пользователя, приведен ниже. | ||
0F3D1H — ячейка, в которой хранится начальный адрес знакогенератора. При инициализации МОНИТОР записывает в эту ячейку значение — 0F000H. При необходимости пользователь может указать свой адрес, по которому размещен другой знакогенератор. При этом, однако, следует помнить, что драйвер дисплея символы с кодом 00—1FH на экран не выводит и в знакогенераторе для них место не выделяется. Таким образом, знакогенератор всегда начинается с кода 20Н, то есть «пробела». | |||
0F3D3H — ячейка, хранящая признак прямого (00Н) вывода (светлые символы на темном фоне) или инверсного (0FFH) вывода (темные символы на светлом фоне). В цветном режиме цвета изображения и фона меняются местами. | |||
0F3D8H — ячейка, содержащая адрес возврата из подпрограммы чтения байта (OF806H) при «зависании» или выпадании сигнала. МОНИТОР заносит в эту ячейку адрес «теплого старта». Программа пользователя должна заносить в эту ячейку свой адрес возврата, в противном случае при невозможности чтения байта программа осуществит возврат в МОНИТОР. | |||
0F3DAH — ячейка, в которой хранится константа записи на магнитную ленту. Для скорости 1200 бод. Она имеет значение 40Н. | |||
0F3DBH — ячейка, хранящая константу чтения с магнитной ленты. Для стандартной скорости — 60Н. | |||
Следует заметить, что высокая тактовая частота процессора позволяет уменьшить значение констант и значительно повысить плотность записи на магнитной ленте. Однако увлекаться этим не стоит, | Следует заметить, что высокая тактовая частота процессора позволяет уменьшить значение констант и значительно повысить плотность записи на магнитной ленте. Однако увлекаться этим не стоит, так как качество отечественной ленты и лентопротяжных механизмов не позволяет гарантировать надежность чтения программ при более высоких плотностях записи. | ||
В. Сугоняко, В. САФРОНОВ, К. КОНЕНКОВ | В. Сугоняко, В. САФРОНОВ, К. КОНЕНКОВ | ||
Строка 483: | Строка 484: | ||
Московская обл. | Московская обл. | ||
Отсканировано с журнала Радио | Отсканировано с журнала Радио № 2 1990 г. | ||
Отредактировано Лесных. Ю. | Отредактировано Лесных. Ю. 2001 г. | ||
== ВНИМАНИЮ ЧИТАТЕЛЕЙ == | == ВНИМАНИЮ ЧИТАТЕЛЕЙ == | ||
В статье А. Долгого | В статье А. Долгого «Контроллер последовательного интерфейса» («Радио», 1989, № 6) при подготовке материала к публикации допущены следующие ошибки: | ||
* на рис. 1 неправильно обозначены номера выводов микросхемы DD1. Должно быть: OUT1-13, OUT2-17. Сигнал CS ошибочно назван SC; | * на рис. 1 неправильно обозначены номера выводов микросхемы DD1. Должно быть: OUT1-13, OUT2-17. Сигнал CS ошибочно назван SC; | ||
* перепутаны местами рис. 3 и рис. 4. | * перепутаны местами рис. 3 и рис. 4. | ||
* на рис. 5 (вид со стороны установки деталей) контактная площадка, находящаяся слева от левого * вывода резистора R2, ошибочно соединена с цепью контакта 12 разъема. Она должна быть соединена только с контактом 11 разъема платы. | * на рис. 5 (вид со стороны установки деталей) контактная площадка, находящаяся слева от левого * вывода резистора R2, ошибочно соединена с цепью контакта 12 разъема. Она должна быть соединена только с контактом 11 разъема платы. | ||
* на рис. 5 (вид со стороны пайки) отсутствует соединение вывода 10 микросхемы | * на рис. 5 (вид со стороны пайки) отсутствует соединение вывода 10 микросхемы DD1 с находящейся левее него контактной площадкой. | ||
В статье Д. Лукьянова | В статье Д. Лукьянова "RAMDOS для «Радио-86РК» («Радио», 1989, № 9) в таблице BITMAP по адресу 0262Н должен быть занесен код 01. | ||
В принципиальную схему ПРК | В принципиальную схему ПРК «Орион-128» («Радио», 1990, № 1) необходимо внести следующие изменения: | ||
* выводы 10, 12, 123 элемента DD12.1 и соединенные с ними выводы 1, 2, 4 элемента DD12.2 через резистор сопротивлением 1кОм должны быть подключены к источнику питания +5В. | * выводы 10, 12, 123 элемента DD12.1 и соединенные с ними выводы 1, 2, 4 элемента DD12.2 через резистор сопротивлением 1кОм должны быть подключены к источнику питания +5В. | ||
* выход процессора (DD19) SNY имеет порядковый номер вывода 19, а вывод 17 соответствует сигналу RD. | * выход процессора (DD19) SNY имеет порядковый номер вывода 19, а вывод 17 соответствует сигналу RD. | ||
* вход элемента DD15. | * вход элемента DD15.6 — вывод 13, выход — 12, элемента DD15.1 соответственно 1 и 2. | ||
* резистор R24 входит в жгут под номером 416, а конденсатор | * резистор R24 входит в жгут под номером 416, а конденсатор С10 — под номером 472. | ||
* вывод В9 (сигнал | * вывод В9 (сигнал «Сброс») разъема Х4 входит в жгут под номером 116. | ||
[[Категория:Орион-128/Публикации|02]] | [[Категория:Орион-128/Публикации|02]] |
Текущая версия от 21:29, 30 июля 2008
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: В. СУГОНЯКО, В. САФРОНОВ, К. КОНЕНКОВ |
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПЕРСОНАЛЬНОГО РАДИОЛЮБИТЕЛЬСКОГО КОМПЬЮТЕРА «ОРИОН −128»
По структуре программное обеспечение радиолюбительского компьютера (РК) «Орион-128» аналогично «Микро-80» и «Радио-86РК». Отличительная особенность компьютера — двухстраничная система построения памяти в базовом варианте и четырехстраничная — в расширенном.
Рассмотрим структуру основной — 0 страницы памяти. Как видно из рис. 1, в самых старших адресах памяти располагается управляющая программа МОНИТОР. Он занимает адресное пространство 0F800 — 0FFFFH и размещен в ПЗУ.
Область ОЗУ с адресами 0F400 — 0F7FFH отведена под дешифрацию портов ввода-вывода, так как микропроцессор адресуется к портам ввода-вывода как к ячейкам памяти. ТАБЛИЦА АДРЕСАЦИИ ПОРТОВ ВВОДА-ВЫВОДА
0F400H — порт клавиатуры 0F500H — порт пользователя № 1 0F600H — порт пользователя № 2 0F700H — порт платы расширения 0F800H — системный порт № 1 (только для записи) 0F900H — ” № 2 ( ” ) 0FA00H — ” № 3 ( ” ) 0FB00H — ” № 4 ( ” )
Область с адресами 0F000 — 0F3FFH (1 Кбайт) используется как служебное ОЗУ, здесь размещаются служебные ячейки и рабочий стек МОНИТОРА (0F3C0 — 0F3FFH). Адреса 0F000H — 0F2FFH занимает знакогенератор, который разворачивается при инициализации МОНИТОРа.
Далее размещается ОЗУ дисплея. Оно занимает адресное пространство 0С000 — 0EFFFH, то есть 12 Кбайт или 384X256 точек разложения. Остальные 48 Кбайт памяти отведены пользователю.
В дополнительных страницах верхние (0F000 — 0FFFFH) 4 Кбайта ОЗУ не используются и пользователю недоступны. При переключении страниц эта область памяти не переключается, что позволяет иметь доступ к МОНИТОРу и служебной области ОЗУ из любой страницы.
В дополнительной странице памяти — 1 находится область ОЗУ, содержащая информацию о цвете экрана дисплея. Она занимает, как и ОЗУ экрана, тоже 12 Кбайт. Такой принцип распределения атрибутов цвета изображения позволяет не уменьшать разрешающую способность экрана при переходе в цветной режим отображения информации, а также имитировать спрайтовую структуру. Остальные 48 Кбайт ОЗУ дополнительной страницы могут быть использованы, к примеру, как «квазидиск». Следует заметить, что если цветной режим дисплея отключен, то в дополнительной странице пользователю отводятся все 60 Кбайт памяти.
По адресам 0F800H — 0FB00H находятся системные порты. Рассмотрим их структуру более подробно. Системные порты доступны только для записи.
Системный порт1 (адрес 0F800H), — управление цветным режимом.
D0 0 — палитра №1 1 — палитра №2 D1 0 — режим 1 —16 цветов 1 — режим 2 — 4 цвета D2 0 — монохромный режим 1 — цветной режим
Бит D2 — монохромный режим На цветном мониторе информация отображается зеленым цветом на черном фоне, если включена палитра № 1, и желтым на голубом фоне — палитра № 2. Бит D1 — режим 1 (D1 —0) — 16 цветов (групповое кодирование). В этом режиме на восемь смежных точек изображения выделяется общий байт управления цветом, который размещается в дополнительной странице памяти I — при этом возможно отображение 16 цветов изображения и 16 цветов фона в режиме 2 (D1=1) каждому элементу отображения (пикселю) можно присвоить 4 цвета в одной из двух палитр. Бит D0 — палитра 1 (D=0), палитра 2 (D=1) (только в 4-цветном режиме). Перечислим все возможные комбинации состояний системного порта 1.
00 — монохромный режим, палитра 1 (зеленый/черный) 01 — ---------------//----------- палитра 2 (желтый/голубой) 02 — гашение изображения 03 — ----------------//------------------- 04 — 4-цветный режим, палитра 1 05 — -----------//----------- палитра 2 06 — 16-цветный режим 07 — ----------------//----------------
Следует помнить, что если в дополнительной странице по адресу 0С000 — 0EFFFH находится информация, то она будет потеряна при включении цветного (тем более цветного многоэкранного) режима дисплея.
Системный порт 2 (адрес 0F900H) — управление переключением страниц памяти.
D1 D0 0 0 — основная страница “0” 0 1 — дополнительная страница “1” 1 0 — дополнительная страница “2” 1 1 — дополнительная страница “3”
В базовой версии компьютера страницы 2 и 3 отсутствуют, поэтому значения «10» и «11» использовать не следует.
Системный порт 3 (адрес 0FA00H) — управление переключением экранов.
При включении компьютера программа МОНИТОР всегда инициализирует экран из страницы памяти 1, который размещается в ОЗУ по адресам 0С000 — 0EFFFH. Однако пользователь, изменяя значение системного порта 3, а также начальный адрес экрана в служебной ячейке, может создать еще три области экрана:
8000—AFFFH — экран 2 4000—6FFFH — экран 3 0000—2FFFH — экран 4 D1 D0 0 0 - экран №1 0 1 - экран №2 1 0 - экран №3 1 1 - экран №4
Промежутки, не заполненные экранными областями 3000 — 3FFFH, 7000 — 7FFFH, ОВООО—OBFFFH, могут быть использованы для размещения программ пользователя. Многоэкранный режим включения возможен как в монохромном, так и в любом цветном режиме.
Системный порт 4 (адрес 0НВ00Н) — переключение типов дисплея: графический или символьный (аппаратного исполнения) — в базовом варианте РК «Орион-128» — не используется.
При «холодном» запуске МОНИТОРа или нажатии на кнопку «Сброс» в системные порты записывается значение — ООН, таким образом устанавливается следующий режим: монохромное отображение информации, включена нулевая (основная) страница памяти и инициализирован экран 1.
МОНИТОР
После включения питания и нажатия кнопки «Сброс» управление передается программе МОНИТОР. МОНИТОР — единственная резидентная программа, записанная в ПЗУ и занимающая 2 Кбайта. Коды программы приведены в табл.2. Она инициализирует программируемые БИС портов, обеспечивает работу клавиатуры, дисплея, контролирует ввод-вывод информации на внешний накопитель — магнитную ленту.
В МОНИТОРе находится и специально упакованный знакогенератор, который при пуске МОНИТОРа распаковывается и размещается в области служебного ОЗУ по адресам OFOOO — OF2FFH. Наличие загружаемого знакогенератора позволяет производить его замену, в том числе и национальные наборы символов, а также одновременно работать с несколькими знакогенераторами.
ДИРЕКТИВЫ МОНИТОРА
МОНИТОР поддерживает упрощенный диалог с пользователем, который вводит с клавиатуры директивы и считывает с экрана дисплея результат их выполнения.
После запуска МОНИТОРа экран телевизора очищается, в левом верхнем углу появляется надпись «Орион-128», а под ней — стрелка «=>», сообщающая о том, что МОНИТОР находится в управляющем режиме и готов к вводу директив. Директивы МОНИТОРа однобуквенные и состоят из латинского символа и одного-двух параметров, представляющих собой шестнадцатиричные числа. Параметры между собой разделяются запятой. Неверно набранные символы исправляются нажатием клавиши «<-” (“курсор назад”). При этом символ, под которым находится курсор, можно исправить повторным вводом. Клавишей “—>» курсор можно вернуть в прежнее положение и продолжать ввод. Выполнение директивы начинается после нажатия на клавишу (ВК). Если директива и параметры заданы правильно, то начинается ее выполнение, если нет, на экран выводится знак вопроса. Это признак ошибочного ввода директивы или некорректного ввода параметров.
МОНИТОР выполняет семь директив — директивы просмотра и модификации ячеек памяти, передачи управления программам пользователя, записи — чтения информации на магнитную ленту, включение цветного режима дисплея. Ниже перечислены все директивы и форматы их ввода.
D(НАЧ.АДР.),(НОМЕР СТР.)(ВК) — ВЫВОД ДАМПА ПАМЯТИ М(АДРЕС)(ВК) — МОДИФИКАЦИЯ ЯЧЕЕК ОЗУ G(АДРЕС)(ВК) — ПЕРЕДАЧА УПРАВЛЕНИЯ ПО АДРЕСУ Z(BK) — ПЕРЕДАЧА УПРАВЛЕ НИЯ ПО АДРЕСУ 0BFFDH О(НАЧ.АДРЕС),(КОНЕЧ. АДР.)(ВК) — ВЫВОД НА МАГНИТОФОН I(ВК) — ВВОД С МАГНИТОФОНА С(БАЙТ ЦВЕТА)(ВК) — ВКЛЮЧЕНИЕ ЦВЕТНОГО РЕЖИМА ДИСПЛЕЯ.
Рассмотрим подробнее особенности работы директив МОНИТОРа.
Директива «D» — выводит на экран дисплея содержимое памяти в шестнадцатиричном формате. Для работы директивы достаточно вводить только начальный адрес. После нажатия клавиши ВК на экран выводится блок памяти длиной в 256 байт, после чего МОНИТОР входит в режим ожидания. Повторное нажатие клавиши ВК выводит очередную «порцию дампа». Нажатие клавиши (точка) прерывает работу директивы. Если через запятую после адреса ввести номер страницы (1—3), то на экран дисплея будет выведено содержимое соответствующей страницы памяти в шестнадцатиричном виде. Нулевые значения параметров и незначащие нули можно опускать.
Директива «М» — предназначена для просмотра и изменения содержимого одной или нескольких ячеек памяти. После ее ввода на экране высвечивается адрес ячейки и ее содержимое. Если необходимо изменить содержимое ячейки, набирают новое значение и нажимают клавишу ВК, если изменений не требуется, ее нажимают сразу же. При каждом нажатии на клавишу ВК значение адреса автоматически увеличивается на единицу. Нажатие клавиши «.» (точка) прерывает работу директивы.
Директива «G» — передает управление программе пользователя по заданному адресу. Предварительная установка регистров процессора не производится. Так, например, директива "G(BK)>> — запускает программу по адресу ООООН.
Директива «Z» — это модификация директивы «G». Однако для ее выполнения не требуется вводить адрес перехода. Управление передается всегда по одному и тому же адресу — OBFFDH. Эта директива введена для удобства работы с программами, которые размещаются под «потолком» ОЗУ пользователя, то есть в верхних адресах памяти. В таких программах (в конце) по адресу OBFFDH должна находиться команда безусловного перехода (JMP) на начало программы. При этом размер программы не будет влиять на стартовый адрес, а значит, все подобные программы можно запускать по одному стандартному адресу — OBFFDH.
Директива «О» — вывод массива информации, находящейся в ОЗУ, на магнитную ленту. Формат записи полностью совместим с компьютером «Ра-дио-86РК». Скорость вывода — 1200 БОД, изменить ее можно только заменой константы в служебных ячейках МОНИТОРа директивой «М».
Директива «I» — чтение информации с магнитной ленты и размещение ее в ОЗУ. После считывания массива на экран дисплея выводится начальный и конечный адреса, а также его контрольная сумма. Появление на экране рядом с контрольной суммой символа «?» (знак вопроса) говорит о том, что считывание произошло с ошибкой. Если не совпадает формат, скорость или не произошло опознание файла — выводится только «?». Досрочный вывод (то есть до окончания считывания программы) символа «?» указывает на дефекты записи (пропадание сигнала).
Директива «С» — предназначена для настройки экрана дисплея на отображение информации в цвете. Директива позволяет произвести проверку вывода информации в цветном (16-цветном) режиме на цветной дисплей (телевизор). Основное назначение директивы — проверить правильность подключения цветного дисплея и его настройку. Директива, согласно кода цвета, включает цветной режим и очищает область ОЗУ цвета в дополнительной странице памяти 1. После выполнения директивы «С» МОНИТОР и все другие программы пользователя будут выводить информацию на экран дисплея в том цветовом решении (цвет фона и отображения символов), которое было задано в параметре директивы.
Код цвета состоит из двух шестнадцатиричных символов от 0 до F. Первый символ указывает на цвет фона, второй — изображения. После ввода кода директивы, двух символов цвета нажимают клавишу (ВК). Если, например, ввести «C++В1+ВК», то дальнейший вывод информации будет происходить в следующем цветовом решении: бирюзовые символы на синем фоне (см. таблицу кодов).
Следует заметить, что программный драйвер обработки экрана дисплея в МОНИТОРе не поддерживает управление цветом, и это должна выполнять программа пользователя. Коды цветов
0 — черный 1 — синий 2 — зеленый 3 — бирюзовый 4 — красный 5 — пурпурный 6 — коричневый 7 — светло-серый 8 — черный 9 — голубой А — светло-зеленый В — светло-бирюзовый С — розовый D — светло-пурпурный Е — желтый F — белый
ТАБЛИЦА СТАНДАРТНЫХ ПОДПРОГРАММ ВВОДА-ВЫВОДА
МОНИТОР содержит набор стандартных подпрограмм (табл. 1, 2 и 3), к которым программа пользователя может обращаться, соблюдая соглашение об обмене информацией. Набор подпрограмм в основном такой же, как в «Микро-80» и «Радио-86РК», однако несколько расширен и изменен. Эти отличия связаны с архитектурными особенностями ПРК «Орион-128» и различием в организации отображения на экране дисплея. Несмотря на это большинство программ, разработанных для названных ПК, будут работоспособны и на «Орионе-128».
В табл.1 символом «*» помечены те входы подпрограмм ввода-вывода, которые имеют существенное отличие или являются совершенно новыми по отношению к «Радио-86РК». Рассмотрим их.
№ | НАЗНАЧЕНИЕ ПОДПРОГРАММ | АДРЕС ВЫЗОВА |
ПАРАМЕТРЫ |
||||
1 |
ВВОД C СИМВОЛА С КЛАВИАТУРЫ |
0F803H −2045 |
ВЫХ: А — ВВЕДЕННЫЙ СИМВОЛ |
||||
2 |
ВВОД БАЙТА С МАГНИТОФОНА |
0F806H −2042 |
ВХ.: А=0FFH — С ПОИСКОМ СИНХРОБАИТА
|
||||
3 |
ВЫВОД СИМВОЛА НА ЭКРАН |
0F809H −2039 |
ВХ.: С — ВЫВОДИМЫЙ СИМВОЛ |
||||
4 |
ЗАПИСЬ БАЙТА НА МАГНИТОФОН |
0F80CH −2036 |
ВХ.: С — ЗАПИСЫВАЕМЫЙ БАЙТ |
||||
5* |
ВЫВОД СИМВОЛА НА ЭКРАН |
0F80FH −2033 |
ВХ.: А — ВЫВОДИМЫЙ СИМВОЛ |
||||
6 |
ОПРОС СОСТОЯНИЯ КЛАВИАТУРЫ |
0F812H −203И |
ВЫХ.: А=00Н — НЕ НАЖАТА А=0FFH — НАЖАТА |
||||
7 |
ВЫВОД БАЙТА НА ЭКРАН В НЕХ-КОДЕ |
0FS15H −2027 |
ВХ.: А — ВЫВОДИМЫЙ СИМВОЛ |
||||
8 |
ВЫВОД НА ЭКРАН СООБЩЕНИИ |
0F81BH −2В24 |
ВХ.: HL- — АДРЕС НАЧАЛА КОНЕЧНЫЙ БАЙТ — 00Н | ||||
9 |
ВВОД КОДА НАЖАТОЙ КЛАВИШИ (INKEY) |
0F81BH −2021 |
ВЫХ: А=0FFH — НЕ НАЖАТА А=0FEH — РУС/ЛАТ ИНАЧЕ — КОД КЛАВИШИ |
||||
10 |
ЗАПРОС ПОЛОЖЕНИЯ КУРСОРА |
0F81EH −2018 |
ВЫХ: Н — НОМЕР СТРОКИ — Y a L — НОМЕР ПОЗИЦИИ — X |
||||
11 |
НЕ ИСПОЛЬЗУЕТСЯ |
0F821H −2015 |
|
||||
12* |
ЧТЕНИЕ ФАЙЛА ИЗ МАГ. ЛЕНТЫ |
0F824H −2012 |
МАССИВ РАЗМЕШ.ПО АДРЕСАМ ЗАП. НА МАГНИТНОЙ ЛЕНТЕ | ||||
13* |
ЗАПИСЬ ФАЙЛА НА МАГ. ЛЕНТУ |
0F827H −2009 |
ВХ.: HL- НАЧ. АДРЕС МАССИВА в DE- КОНЕЧ. АДРЕС |
||||
14 |
ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ БЛОКА |
0FB2AH −2006 |
ВХ.: HL — АДРЕС НАЧАЛА Е DE — АДРЕС КОНЦА
ВЫХ: |
||||
15* |
РАСПАКОВКА ВНУТРЕННЕГО ЗНАКОГЕНЕРАТОРА |
0F82DH −2003 |
|
||||
16 |
ЧТЕНИЕ КОНЕЧНОГО АДРЕСА ОЗУ ПОЛЬЗОВАТ. |
0F830H −2000 |
ВЫХ: HL -КОНЕЧНЫЙ АДРЕС |
||||
17 |
ЗАПИСЬ КОНЕЧНОГО АДРЕСА ОЗУ ПОЛЬЗОВАТ. |
0F833H −1997 |
EX. : HL -КОНЕЧНЫЙ АДРЕС |
||||
18* |
ЧТЕНИЕ БАЙТА ИЗ ДОП. СТРАН. |
0F836H −1994 |
BX.: HL-АДРЕСА — N СТРАНИЦЫ (0-3)
|
||||
19* |
ЗАПИСЬ БАЙТАВ ДОП. СТРАНИЦУ | 0F839H −1991 |
BX.: HL — АДРЕСА — N
СТРАНИЦЫ (0-3) |
||||
20* |
УСТАНОВКА КУРСОРА |
0F83CH −1988 |
ВХ. Н — НОМЕР СТРОКИ — Y L — НОМЕР ПОЗИЦИИ — X |
||||
21* |
РЕЗЕРВ |
0F83FH −1988 |
|
080FH — вывод символа, содержащегося в аккумуляторе, на дисплей. Значение всех регистров сохраняется.
0F824H — чтение файла программы с магнитной ленты. Подпрограмма должна вызываться только при наличии сигнала фонограммы с магнитофона на входе компаратора. В противном случае произойдет программное прерывание и управление будет передано по адресу, хранящемуся в ячейках OF3D6, OF3D7H, то есть на «теплый старт» МОНИТОРа.
0F827H — запись файла на магнитную ленту. Перед вызовом подпрограммы необходимо в регистровую пару «HL» занести начальный адрес, а в регистры «DE» — конечный адрес того участка памяти, который необходимо сохранить на ленте.
0F82DH — распаковка и размещение внутреннего знакогенератора в области служебного ОЗУ. Обращение к этой подпрограмме (без входных параметров) позволяет восстановить знакогенератор.
0F836H — чтение байта из дополнительной страницы. Адрес ячейки заносится в регистры «HL». В регистр «А» — номер страницы, откуда происходит чтение. После выполнения подпрограммы в регистре «С» будет содержаться считанный байт.
0F839H — запись байта в дополнительную страницу памяти. Регистры «HL» и «А» имеют такое же назначение, что и в предыдущей подпрограмме, а в регистр «С» заносится байт, который должен быть записан в дополнительную страницу памяти.
0F83CH — установка курсора в заданное знакоместо на экране дисплея. В регистр «Н» заносится значение номера строки (0—18Н), регистр «L» — номер позиции (0— 3FH).
Таблица 3. F800 - F8FF 48А8 F900 - F9FF 0В2В FA00 - FAFF С5ЕЗ FB00 - FBFF 91СЗ FC00 - FCFF 92В2 FD00 - FDFF 0243 FE00 - FEFF 8575 FFB0 - FFFF С680 F800 - FFFF 5В63
СЛУЖЕБНЫЕ ЯЧЕЙКИ МОНИТОРА
Для своей работы МОНИТОР использует незначительный объем памяти. В этой области размещаются рабочие ячейки МОНИТОРа и константы. К основным рабочим (служебным) ячейкам имеется доступ через стандартную таблицу ввода-вывода, размещенную в начальных адресах МОНИТОРа. Назначение остальных ячеек, представляющих интерес для пользователя, приведен ниже.
0F3D1H — ячейка, в которой хранится начальный адрес знакогенератора. При инициализации МОНИТОР записывает в эту ячейку значение — 0F000H. При необходимости пользователь может указать свой адрес, по которому размещен другой знакогенератор. При этом, однако, следует помнить, что драйвер дисплея символы с кодом 00—1FH на экран не выводит и в знакогенераторе для них место не выделяется. Таким образом, знакогенератор всегда начинается с кода 20Н, то есть «пробела».
0F3D3H — ячейка, хранящая признак прямого (00Н) вывода (светлые символы на темном фоне) или инверсного (0FFH) вывода (темные символы на светлом фоне). В цветном режиме цвета изображения и фона меняются местами.
0F3D8H — ячейка, содержащая адрес возврата из подпрограммы чтения байта (OF806H) при «зависании» или выпадании сигнала. МОНИТОР заносит в эту ячейку адрес «теплого старта». Программа пользователя должна заносить в эту ячейку свой адрес возврата, в противном случае при невозможности чтения байта программа осуществит возврат в МОНИТОР.
0F3DAH — ячейка, в которой хранится константа записи на магнитную ленту. Для скорости 1200 бод. Она имеет значение 40Н.
0F3DBH — ячейка, хранящая константу чтения с магнитной ленты. Для стандартной скорости — 60Н.
Следует заметить, что высокая тактовая частота процессора позволяет уменьшить значение констант и значительно повысить плотность записи на магнитной ленте. Однако увлекаться этим не стоит, так как качество отечественной ленты и лентопротяжных механизмов не позволяет гарантировать надежность чтения программ при более высоких плотностях записи.
В. Сугоняко, В. САФРОНОВ, К. КОНЕНКОВ
Московская обл.
Отсканировано с журнала Радио № 2 1990 г. Отредактировано Лесных. Ю. 2001 г.
ВНИМАНИЮ ЧИТАТЕЛЕЙ
В статье А. Долгого «Контроллер последовательного интерфейса» («Радио», 1989, № 6) при подготовке материала к публикации допущены следующие ошибки:
- на рис. 1 неправильно обозначены номера выводов микросхемы DD1. Должно быть: OUT1-13, OUT2-17. Сигнал CS ошибочно назван SC;
- перепутаны местами рис. 3 и рис. 4.
- на рис. 5 (вид со стороны установки деталей) контактная площадка, находящаяся слева от левого * вывода резистора R2, ошибочно соединена с цепью контакта 12 разъема. Она должна быть соединена только с контактом 11 разъема платы.
- на рис. 5 (вид со стороны пайки) отсутствует соединение вывода 10 микросхемы DD1 с находящейся левее него контактной площадкой.
В статье Д. Лукьянова "RAMDOS для «Радио-86РК» («Радио», 1989, № 9) в таблице BITMAP по адресу 0262Н должен быть занесен код 01.
В принципиальную схему ПРК «Орион-128» («Радио», 1990, № 1) необходимо внести следующие изменения:
- выводы 10, 12, 123 элемента DD12.1 и соединенные с ними выводы 1, 2, 4 элемента DD12.2 через резистор сопротивлением 1кОм должны быть подключены к источнику питания +5В.
- выход процессора (DD19) SNY имеет порядковый номер вывода 19, а вывод 17 соответствует сигналу RD.
- вход элемента DD15.6 — вывод 13, выход — 12, элемента DD15.1 соответственно 1 и 2.
- резистор R24 входит в жгут под номером 416, а конденсатор С10 — под номером 472.
- вывод В9 (сигнал «Сброс») разъема Х4 входит в жгут под номером 116.