Орион-128/Техническая информация

Материал из Emuverse
Версия от 16:01, 25 января 2008; Panther (обсуждение | вклад) (Новая: {{ДИ|Источник=Компиляция из публикаций в журнале Радио}} <small>{{TOCright}}</small> == Распределение памяти == [[Изо...)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Источник: Компиляция из публикаций в журнале Радио

Распределение памяти


  • 0F3C0 — 0F3FFH — служебные ячейки и рабочий стек МОНИТОРА
  • 0F000H — 0F2FFH — знакогенератор, распаковывающийся при инициализации МОНИТОРа
  • 0С000 — 0EFFFH — ОЗУ дисплея, 12 Кбайт или 384X256 точек
  • 0F000 — 0FFFFH — при переключении страниц эта область памяти не переключается, что позволяет иметь доступ к МОНИТОРу и служебной области ОЗУ из любой страницы.

В дополнительной странице памяти — 1 находится область ОЗУ, содержащая информацию о цвете эк-рана дисплея. Она занимает, как и ОЗУ экрана, тоже 12 Кбайт. Если цветной режим дисплея отключен, то в дополнительной странице пользователю отводятся все 60 Кбайт памяти.

Системные порты

Порты отображаются на память.

  • 0F400H — порт клавиатуры
  • 0F500H — порт пользователя № 1
  • 0F600H — порт пользователя № 2
  • 0F700H — порт платы расширения
  • 0F800H — системный порт № 1 (только для записи)
  • 0F900H — " № 2 (")
  • 0FA00H — " № 3 (")
  • 0FB00H — " № 4 («)

При „холодном“ запуске МОНИТОРа или нажатии на кнопку „Сброс“ в системные порты записывается значение — 00Н, таким образом устанавливается следующий режим: монохромное отображение информа-ции, включена нулевая (основная) страница памяти и инициализирован экран 1.

Системный порт 1 (адрес 0F800H) — управление цветным режимом

  • 00 — монохромный режим, палитра 1 (зеленый/черный)
  • 01 — ---------------//----------- палитра 2 (желтый/голубой)
  • 02 — гашение изображения
  • 03 — ----------------//-------------------
  • 04 — 4-цветный режим, палитра 1
  • 05 — -----------//----------- палитра 2
  • 06 — 16-цветный режим
  • 07 — ----------------//----------------

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-цветном режиме).

Системный порт 2 (адрес 0F900H) — переключение страниц памяти

D1 D0 
 0  0 — основная страница “0” 
 0  1 — дополнительная страница “1”
 1  0 — дополнительная страница “2”
 1  1 — дополнительная страница “3”

Системный порт 3 (адрес 0FA00H) — переключение экранов

D1 D0
 0  0 — экран № 1 (0С000—0EFFFH)
 0  1 — экран № 2 (8000—0AFFFH)
 1  0 — экран № 3 (4000—6FFFH)
 1  1 — экран № 4 (0000—2FFFH)

Системный порт 4 (адрес 0НВ00Н)

Переключение типов дисплея — графический или символьный (аппаратного исполнения) — в базовом варианте РК „Орион-128“ — не используется.

Организация экранной памяти

Область видеоОЗУ „Ориона-128“ занимает в основной странице памяти адресное пространство разме-ром 12К, начиная с адреса 0C000H (по адрес 0EFFFH включительно). Кроме того, если включен цветной режим, в формировании изображения участвует соответствующая ей область дополнительной страницы, расположенная в тех же адресах, и общий объем используемой под видеоОЗУ памяти становится равным 24К. Каждая ячейка ОЗУ экранной области соответствует восьми расположенным в горизонтальный ряд точкам одной строки растра ЭЛТ. На рис.1 в качестве примера показано увеличенное схематическое изо-бражение левого верхнего угла экрана.

Если компьютер работает в монохромном режиме, ячейки дополнительной страницы в формировании изображения не участвуют и изображение целиком зависит от того, какая информация в данный момент записана в ячейках видео области основной страницы. Бит, установленный в 1, дает на экране одну светя-щуюся точку. Если бит равен 0 — точка погашена.

Как уже было сказано выше, в режиме 0 ячейки дополнительной страницы не принимают участие в фор-мировании изображения. Получение 4-цветного изображения иллюстрируется рис.4. В этом режиме цвет каждой точки растра определяется значениями двух битов, один из которых берется из ячейки в основной области, другой из ячейки с тем же адресом дополнительной страницы, получившееся двоичное число (от 0 до 3), и дает цвет, в который окрашена точка: 00 — черный, 01 — красный, 10 — зеленый, 11 — синий.

В режиме 2 окраска точек происходит совершенно по-другому (рис.5). В этом режиме 8 точек каждой ячейки могут быть окрашены в одно из 256 сочетаний 16 цветов фона и 16 цветов переднего плана. Точка-ми фона считаются точки, значения соответствующих битов которых в байте основной области равны 0. В режиме 2 каждый бит тетрады отвечает за один из основных цветов, а старший (биты 7 и 3- соответственно для старшей и младшей тетрады) — за яркость цвета (1 — полная яркость, 0 — несколько пониженная): D7 (D3) — яркость, D6 (D2) — красный, D5 (D1) — зеленый, D4 (D0) — синий.

Коды цветов в 16-цветном режиме

  • 0 — черный
  • 1 — синий
  • 2 — зеленый
  • 3 — бирюзовый
  • 4 — красный
  • 5 — пурпурный
  • 6 — коричневый
  • 7 — светло-серый
  • 8 — черный
  • 9 — голубой
  • А — светло-зеленый
  • В — светло-бирюзовый
  • С — розовый
  • D — светло-пурпурный
  • Е — желтый
  • F — белый

Коды цветов в 4-цветном режиме, палитра 1

Коды цветов в 4-цветном режиме, палитра 2

Монитор

В МОНИТОРе находится упакованный знакогенератор, который при пуске МОНИТОРа распаковывается и размещается в области служебного ОЗУ по адресам 0F000 — 0F2FFH. Наличие загружаемого знакогене-ратора позволяет производить его замену, в том числе и национальные наборы символов, а также одно-временно работать с несколькими знакогенераторами.

Директивы Монитора-1

  • D(НАЧ.АДР.), (НОМЕР СТР.)(ВК) — ВЫВОД ДАМПА ПАМЯТИ
  • М(АДРЕС)(ВК) — МОДИФИКАЦИЯ ЯЧЕЕК ОЗУ
  • G(АДРЕС)(ВК) — ПЕРЕДАЧА УПРАВЛЕНИЯ ПО АДРЕСУ
  • Z(BK) — ПЕРЕДАЧА УПРАВЛЕ НИЯ ПО АДРЕСУ 0BFFDH
  • О(НАЧ.АДРЕС), (КОНЕЧ. АДР.)(ВК) — ВЫВОД НА МАГНИТОФОН
  • I(ВК) — ВВОД С МАГНИТОФОНА
  • С(БАЙТ ЦВЕТА)(ВК) — ВКЛЮЧЕНИЕ ЦВЕТНОГО РЕЖИМА ДИСПЛЕЯ.

Таблица подпрограмм

Служебные ячейки

  • 0F3D1H — Начальный адрес знакогенератора. При инициализации МОНИТОР записывает в эту ячейку значение — 0F000H. Драйвер дисплея символы с кодом 00—1FH на экран не выводит и в знакогенераторе для них место не выделяется. Таким образом, знакогенератор всегда начинается с кода 20Н, то есть „пробела“.
  • 0F3D3H — ячейка, хранящая признак прямого (00Н) вывода (светлые символы на темном фоне) или ин-версного (0FFH) вывода (темные символы на светлом фоне). В цветном режиме цвета изображения и фона меняются местами.
  • 0F3D8H — ячейка, содержащая адрес возврата из подпрограммы чтения байта (OF806H) при „зависа-нии“ или выпадании сигнала. МОНИТОР заносит в эту ячейку адрес „теплого старта“. Программа пользова-теля должна заносить в эту ячейку свой адрес возврата, в противном случае при невозможности чтения байта программа осуществит возврат в МОНИТОР.
  • 0F3DAH — ячейка, в которой хранится константа записи на магнитную ленту. Для скорости 1200 бод. Она имеет значение 40Н.
  • 0F3DBH — ячейка, хранящая константу чтения с магнитной ленты. Для стандартной скорости — 60Н.
  • 0F3E7H (М2) — „высота“ звука подпрограммы 0F83FH
  • 0F3C7-0F3C8H (М2) — адрес драйвера клавиатуры (замена OF803H)
  • 0F3CD-0F3CEH (М2) — адрес драйвера дисплея (замена OF809H)
  • 0F3C4-0F3C5H (М2) — адрес подпрограммы звукового сигнала (замена 0F83FH)
  • 0F3CA-0F3CBH (М2) — адрес для вызова по 0F821H
  • 0F3CFH (М2) — старший байт адреса начала строки. При инициализации МОНИТОР заносит значение 0С0Н (0С000Н — начальный адрес области ОЗУ экрана № 1). Если записывать промежуточные значения (0С0-0Е0Н), то будет происходить смещение начала строки вправо. Для включения экранов № 2, № 3 и № 4 заносят (помимо соответствующего кода в системный порт № 3) соответственно коды 80Н, 40Н, 00Н. Дан-ная константа влияет на начальную позицию первого символа в строке.
  • 0F3D0H (М2) — ширина поля, в котором производятся операции „Скроллинг“ и гашение экрана. Ис-ходное значение З0Н, то есть 48 байт в строке (не символов). Программно сдвигая экран вправо, необходимо пропорционально укорачивать эту константу, в противном случае функции гашение экрана и „Скроллинг“ будут „влезать“ в служебную область МОНИТОРА (для экрана № 1) — поле знакогенератора. На длину сим-вольной строки данная константа не влияет.
  • 0F3D4H (М2) — номер строки, с которой действуют функции стирания экрана, а также „Скроллинг“. Отсчет ведется от верхней строки. Если в ячейку занести код 05Н, к примеру, то верхние пять строк не бу-дут стираться по коду 1FH (или 1ВН+45Н) и не попадут под действие режима „Скроллинг“. Для возврата в исходное состояние, необходимо восстановить начальное значение констант.

Оперируя этими константами, можно оперативно защитить часть экрана от стирания и „Скроллинга“, то есть без дополнительных программных средств имитировать „окно“.

Особенности Монитора-2

МОНИТОР-2 занимает в ПЗУ 2 Кбайта и устанавливается в ПРК вместо МОНИТОРА-1. При включении компьютера или нажатии кнопки „СБРОС“ МОНИТОР-2 производит инициализацию портов, служебных яче-ек, распаковку знакогенератора и другие служебные операции, а затем проверяет, подключен ли ROM-диск к порту 0F500H (ХЗ). Если он не подключен, то экран дисплея очищается и в его верхнем левом углу выво-дится сообщение — „ввод?“, свидетельствующее о том, что МОНИТОР-2 готов к вводу программы с магнитной ленты.

Так как загрузчики ОС содержат свои необходимые драйверы для записи файлов на магнитную ленту, из таблицы исключена функция по адресу 0F827H — „запись файла (массива) на магнитофон“ и вход заблоки-рован командой RET.

Вход 0F821H определен как универсальный, программно переключаемый вход в программы-драйверы пользователя. В исходном состоянии заблокирован командой RET.

Дополнительно появился новый вход: 0F83FH — подпрограмма генерирования звукового сигнала. Эта подпрограмма не имеет входных параметров и формирует звуковой сигнал постоянной длительности. „Высоту“ сигнала можно изменять, если его значение записывать в служебную ячейку по адресу 0F3E7H.

Управляющие коды дисплея

Стандартные

  • 08Н — перемещение курсора на одну позицию влево.
  • 09Н — горизонтальная табуляция. Установка курсора в ближайшую позицию в строке, кратную четырем.
  • 0АН — перемещение курсора вниз на одну строку в той же позиции. Если такой переход происходит в самой нижней строке, то включается режим „Скроллинг“ (смещение всего изображения экрана на одну строку вверх).
  • 0СН — установка курсора в левый верхний угол экрана.
  • 0DH — установка курсора в первую позицию строки.
  • 18Н-перемещение курсора на одну позицию вправо.
  • 19Н — перемещение курсора на одну позицию вверх.
  • 1АН — перемещение курсора на одну позицию вниз.
  • 1FH — стирание экрана, курсор установить в верхний левый угол.
  • 7FH — переключение вывода символов на экран дисплея в инверсном виде (белый фон, черные символы). Выключение — повторный ввод кода 7FH.

Расширенные (М2)

  • 1ВН+41Н — сместить курсор на одну позицию вверх.
  • 1ВН+42Н — сместить курсор на одну позицию вниз.
  • 1ВН+43Н — сместить курсор на одну позицию вправо.
  • 1ВН+44Н — сместить курсор на одну позицию влево.
  • 1ВН+45Н — стирание экрана.
  • 1ВН+48Н — установить курсор в верхний левый угол.
  • 1BH+4AH — стирание экрана нг, с курсора.
  • 1ВН+4ВН — стирание строки правее курсора.
  • 1BH+59H+(X+20H)+(Y+20H) — установить курсор в позицию Х (номер строки — 0-19Н), Y (номер позиции — 0-3FH).

ORDOS

В опубликованной прежде программе МОНИТОР необходимо исправить два байта. По адресу 0FB95H необходимо записать код 0В8Н, а по адресу 0FBA8H — 08Н. Эти изменения относятся к директиве „R“. Связано это с тем, что за время, прошедшее с момента публикации МОНИТОРа, авторы значительно усовершенствовали операционную систему и поэтому параметры загрузки изменились.

Структура ОС

ССР (процессор консольных команд — по аналогии с СР/М) поддерживает диалог с пользователем, организовывает выполнение встроенных команд.

BDOS (базовая дисковая операционная система). После запуска ОС переустанавливает верхнюю границу ОЗУ пользователя на уровне BDOS, то есть блокирует себя от несанкционированного размещения в этой области ОЗУ каких-либо программ или данных.

BIOS (базовая система ввода-вывода). Это набор программ, обслуживающих периферийные устройства, то есть „железо“. В качестве BIOS используется набор стандартных подпрограмм МОНИТОРа. В программе МОНИТОР введена специальная директива „R“, которая запускает загрузчик первоначальной („холодной“) загрузки ОС. Порядок ее ввода следующий:

=>R[BK]

Загрузчик переносит коды ОС из ROM-диска в ОЗУ пользователя по адресам 0В800Н— 0BFFFH и передает ей управление. После запуска ОС производит первоначальную установку своих служебных ячеек и флагов.

Если Промпт с мигающим курсором все же не появился; несмотря на то, что на экран выведено наименование ОС, нажмите кнопку „СБРОС“ и повторите директиву R», но клавишу ВК отпускать не спешите, задержите ее нажатой на 1—2 секунды. Необходимость перезапуска может возникать в некоторых экземплярах компьютеров при первом запуске ОС, когда еще не проведена операция форматирования (инициализации) диска (второй страницы памяти) или нарушена файловая структура при сбое в квазидиске. Предложенный прием блокирует защитные механизмы ОС. Подобным образом можно запустить ОС и при отсутствии второй страницы памяти.

ОС ORDOS содержит внутри себя два загрузчика: «холодный» и «теплый». «Холодный» загрузчик (назван условно) проводит первичную инициализацию операционной системы ORDOS после загрузки и формирует каналы управления. До следующего перезапуска нажатия клавиши «Сброс», операционная система к «холодному» загрузчику больше не обращается.

Второй загрузчик — «теплый» используется постоянно. Его назначение обновлять (реинициализировать) командную часть ORDOS — ССР (процессор команд) при каждом возврате из прикладной программы или внешней команды в операционную систему. При этом «теплый» загрузчик считывает с ROM-диска только ССР и размещает его на «своем» месте. Необходимо это на тот случай, если прикладная программа уничтожила процессор команд.

Оба загрузчика по окончании работы передают управление процессору команд, который начинает свою работу с поиска на диске В файла с именем ЕХТ (от слова EXTENTION — расширение). Если поиск происходит с разу после включения компьютера и диск В еще не форматирован или вовсе отсутствует, в некоторых случаях возможно «зависание» системы. Чтобы блокировать эту ситуацию или же просто не допустить поиск файла ЕХТ при запуске 0RDOS, следует удерживать любую символьную клавишу перед отпусканием клавиши «Сброс».

Команды

  • F(ORMAT) — ПОДГОТОВКА («ФОРМАТИРОВАНИЕ») «КВАЗИДИСКА»
  • D(IR) — ВЫВОД КАТАЛОГА ДИСКА НА ЭКРАН ДИСПЛЕЯ
  • L(OAD) — ЧТЕНИЕ ФАЙЛА ИЗ ДИСКА В ПАМЯТЬ КОМПЬЮТЕРА
  • S(AVE> — ЗАПИСЬ УЧАСТКА ПАМЯТИ В КАЧЕСТВЕ ФАЙЛА НА ДИСК
  • R(EN) — ПЕРЕИМЕНОВАНИЕ ФАЙЛА
  • E(RA) — УДАЛЕНИЕ ФАЙЛА, ХРАНЯЩЕГОСЯ НА ДИСКЕ
  • Т(УРЕ) — ПРОСМОТР ТЕКСТОВЫХ ФАЙЛОВ

Стандартные программы

  • СH$ (CHANGER) — ввод пакета программ с магнитофона, когда они за зашиты в ROM-диск
  • M128$ (МОНИТОР-128) — инструментальный монитор
  • CHR$ (CHANGER — RK86) загрузчик данных с магнитофона в формате RK86

Внутренние подпрограммы

  • RFILE: 0BFFAH Чтение файла из диска в ОЗУ: функция 1
  • WFILK: 0BFF7H Запись файла на диск В: функция 2
  • CFILE: 0BFF4H Закрыть последовательный файл: функция 3
  • OFILE: 0BFF1H Открытие последовательного файла на диске В и его заполнение: функция 4.
  • ERAS: 0BFEEH Уничтожение файла на диске 'В': функция 5
  • RENUM: 0BFEBH Переименование файла на диске 'В': функция 6
  • DIRM: 0BFE8H Вывод оглавлений файлов в буфер: функция 7
  • PSCF: 0BFE5H Поиск файла на диске: функция 8
  • STOP: 0BFF2H Запись стоп-байта (0FFH)HB диск: функция 9
  • WDISK: 0BFDFH Запись байта на диск (В): функция 10
  • RDISK: 0BFDCH Чтение байта из диска: функция 11.
  • RND: 0BFD4H Чтение имени текущего диска: функция 12.
  • LDMA: 0BFD3H Чтение адреса указателя имени файла: функция 14.
  • ATF: 0BFCDH Чтение адресов размещения файла на диске: функция 16.
  • WATF: 0BFCAH Запись адресов блока ОЗУ: функция 17
  • ATFM: 0BFC7H Чтение атрибутов файла: функция 18.
  • WMAX: 0BFC4H Установка максимального адреса диска В: функция 19.
  • RMAX: 0BFC1H Чтение максимального адреса диска: функция 20.
  • ADRP: 0BFBEH Изменение адреса «посадки» программы: функция 21.
  • VER: 0BFBBH Чтение номера версии ORDOS: функция 22.
  • MXDSK: 0BFB8H Конечный адрес программ на диске: функция 23.
  • WND: 0BFD6H Установка текущего диска:
  • SDMA: 0BFD0H Установка начального адреса

ROM-DISK

На этом диске хранится сама операционная система и часто используемые инструментальные (Бейсик, АССЕМБЛЕР, РЕДАКТОР и др.) средства, а также служебные (загрузчики, дополнительные знакогенераторы, эмуляторы, сменные драйверы дисплея и т. д.) программы. Для ОС ROM-диск является диском «А». С диска «А» можно файлы только считывать. Вторая страница памяти компьютера интерпретируется как диск «В», откуда файлы можно не только считывать, но и записывать. На плате ROM-диска ОС занимает объем в 2К байта

Формат данных

Первые два килобайта — код ORDOS без заголовков, далее — цепочка файлов с заголовками согласно формату ОС.