Орион-128/Техническая информация: различия между версиями
Panther (обсуждение | вклад) (Новая: {{ДИ|Источник=Компиляция из публикаций в журнале Радио}} <small>{{TOCright}}</small> == Распределение памяти == [[Изо...) |
Panther (обсуждение | вклад) |
||
Строка 29: | Строка 29: | ||
=== Системный порт 1 (адрес 0F800H) — управление цветным режимом === | === Системный порт 1 (адрес 0F800H) — управление цветным режимом === | ||
Все возможные режимы: | |||
* 00 — монохромный режим, палитра 1 (зеленый/черный) | * 00 — монохромный режим, палитра 1 (зеленый/черный) | ||
* 01 — | * 01 — монохромный режим, палитра 2 (желтый/голубой) | ||
* 02 — гашение изображения | * 02 — гашение изображения | ||
* 03 — | * 03 — гашение изображения | ||
* 04 — 4-цветный режим, палитра 1 | * 04 — 4-цветный режим, палитра 1 | ||
* 05 — - | * 05 — 4-цветный режим, палитра 2 | ||
* 06 — 16-цветный режим | * 06 — 16-цветный режим | ||
* 07 — - | * 07 — 16-цветный режим | ||
Побитная расшифровка | |||
76543210 | |||
-------0 палитра № 1 | |||
-------1 палитра № 2 | |||
------0- режим 1 — 16 цветов | |||
------1- режим 2 — 4 цвета | |||
-----0-- монохромный режим | |||
-----1-- цветной режим | |||
Бит D2 — монохромный режим На цветном мониторе информация отображается зеленым цветом на черном фоне, если включена палитра № 1, и желтым на голубом фоне — палитра № 2. | Бит D2 — монохромный режим На цветном мониторе информация отображается зеленым цветом на черном фоне, если включена палитра № 1, и желтым на голубом фоне — палитра № 2. |
Версия от 13:52, 19 ноября 2008
Распределение памяти
- 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 — 4-цветный режим, палитра 2
- 06 — 16-цветный режим
- 07 — 16-цветный режим
Побитная расшифровка
76543210 -------0 палитра № 1 -------1 палитра № 2 ------0- режим 1 — 16 цветов ------1- режим 2 — 4 цвета -----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 без заголовков, далее — цепочка файлов с заголовками согласно формату ОС.