                      монитор-3  для  "орион-128"
                      ---------------------------
полностью совместим с монитором-2.  за счет более рационального программирования системных
подпрограмм, удалось встроить несколько доп.  подпрограмм, например подпрограмму ввода
командной строки (до 32 символов).  введена новая входная точка:  вход в интерпретатор команд
(т.наз - ccp, console command processor).  монитор содержит минимальный резидентный набор
директив:  1.  директива g[адрес] <вк>.  запуск программы с указанного адреса 2.  директива i.
может использоваться в 2-х вариантах:  1 - без параметров - ввод блока с мг с автозапуском (при
совпадении кс), и 2-й вариант i с параметром (любая цифра или буква) - ввод блока без
автоматического запуска на исполнение.  однако главным преимуществом является то, что это
кол-во директив (или команд ccp) можно расширять или заменять другими.  достигается это за счет
того, что пользователь может подгружать свой командный процессор (содержащий дополнительный
набор команд).  с целью расширения возможностей монитора-3 был разработан загружаемый (с мг
или пзу) "monitor-ext" (версия 1.2).  этот монитор кроме всех директив для работы с памятью в
hex-кодах (d,m,x,k,c,t,f) во всех страницах озу, команд позволяющих работать с магнитофоном в
различных форматах записи (имеются форматы рк-86,changer) содержит директивы для работы с
файлами ordos (форматирование,загрузка,запуск,удаление файлов) причем в отличие от ordos
поддерживает работу во всех доп.страницах озу (ordos работает только в 1-й).  таким образом
monitor-ext обьемом 2k заменяет ordos,changer,chr$ и m128$ обьемом 7k.  но самым важным
является то, что monitor-ext (в отличие от ordos) для работы не требует наличия rom-диска, что
многим упростит жизнь на начальном этапе сборки компьютера.  с использованием этого монитора
значительно облегчается работа по отладке программ, в то время как монитор m128$ расчитаный на
непрограммирующих пользователей, работает только с ordos, не имеет необходимого набора команд и
не обеспечивает необходимой оперативности в работе.  в мониторе-3 изменена процедура обработки
сброса:  после сброса (cold start) осущ-ся инициализация портов, устанавливаются стандартные
значения системных переменных (см.далее) и управление передается на теплый старт (f86c).  при
теплом старте (warm start) выполняются по порядку:  1.  проверяется нажатие <сс> или <ус>
(только одной из них!) и если нажата, то управление передается резидентному ccp.  (это
позволяет блокировать автоматическую загрузку ordos из rom-диска в мониторе-2 для этого
приходилось отключать rom-диск).  2.  подсчитывается байт паритета (xor) области b800...bfff.
если он равен 0e6h (а это сигнализирует о наличии <и исправности> ранее загруженной системной
программы - напр:  cp/m boot или загружаемого монитора), то управление передается на 0bffdh.
3.если байт паритета не равен 0e6h, анализируется наличие rom-диска или хотя бы 2k пзу по адре-
су интерфейса rom-диска -0f500h.  если пзу есть, то его коды (первые 2к) загружаются в озу b800
- bfff и управление передается на bffd.  4.  если и rom-диска нет, то осуществляется выход в
резидентный командный процессор - ccp с двумя доступными командами (g, i).  кроме перечисленных
возможностей монитор расширен за счет организации доп.векторов системных подпрограмм - так
теперь наряду с п/п ввода/вывода символов сделаны програмно-определяемыми и подпрограммы
ldbyte и svbyte - п/п ввода/вывода байтов с магнитофона, что позволяет без переделки прикладных
программ (напр.  редактора) применять другой (более надежный) формат записи данных на мг.
ленту.  но наверное самым интересным расширением монитора является введение так.наз.
системных програмных прерываний.  теперь не имея в самом компьютере аппаратных прерываний,
можно прервать исполнение прикладной программы, исполнить другую программу и вернуться в пер-
вую программу (в том же состоянии, что было на момент прерывания).  теперь монитор перед
выполнением сист.  функций (rdkey,cout,inkey, beep) осуществляет проверку на програмное
прерывание - осуществляется проверка на одновременное нажатие клавиш <сс> и <ус>.  если эти
клавиши не нажаты, то все как и ранее - выполняется сист.  функция.  если-же эти клавиши нажаты
то выполняется проверка на наличие прерывания.  в самом мониторе зашиты всего 3 прогр.
прерывания, однако как и для директив монитора кол-во програмных прерываний может быть
значительно расширено путем подключения доп.таблицы прерываний.  резидентны же в мониторе - три
програмных прерывания:  <ус/сс> + <с> - break, горячий старт системы (яч.f86c) <ус/сс> + <s> -
pause, пауза до нажатия клавиши <вк> <ус/сс> + <space> - выход в монитор из любой программы
резидентные прерывания нельзя програмно блокировать, что дает возможность вскрытия защит
коммерческих программ (использующих системные функции пзу f800).  теперь немного
дополнительной информации для программистов, желающих использовать новые возможности
ленинградского монитора.  для расширения директив монитора необходимо знать следующее:  если
введенная директива не совпадает ни с одной из вышеперечисленных команд резидентного ccp, то
управление передается по адресу, находящемуся в ячейках 0f3e3/e4.  при этом информация о
введенной директиве передается в регистрах:  рег.a - код символа директивы, hl - 1-й параметр
директивы, de - 2-й, bc - третий параметр эта же информация дублируется в рабочих ячейках ccp:
f320/21 - 1-й пар-р, f322/23 - 2-й, f324/25 - 3-й, а в ячейке f326/27 - 4-й пар-р директивы (он
передается только в озу).  в адресах f300...f31f хранится полная символьная строка введенной
директивы.  f300 - код символа директивы.  если какой-либо параметр не может быть интерпрети-
рован как hex-число, то в соответствующий старший регистр рег.пары (h,d или b) заносится код
0ffh.  разделителем в директивах кроме запятой <,> может быть символ пробела <space>.
используя эту информацию можно расширить набор директив.  это в частности используется в
загружаемом расширении монитора-3 - "ext" и др.дополнит.утилитах.  для желающих расширить
количество програмных прерываний надо знать, что после обнаружения одновременного нажатия
клавиш <ус> и <сс> (при выполнении п/п-м f800) проверяется нажатие клавиш <с>, <s> и пробела.
если ни одна из этих клавиш не нажата то управление передается по адресу из ячеек f3df/e0.
это позволяет вам расширять систему програмных прерываний.  но !!!  если вы хотите чтобы был
возврат в точку прерывания - сохранять регистры !!!  это далеко не полный перечень возможностей
нового монитора-3, полностью все его возможности вы сможете оценить только при его совмест- ной
работе с утилитами (раширениями, драйверами) а также при работе в дисковой операционной системе
cp/m.  по всем вопросам обращаться к чистякову владимиру по тел:  106-35-24, санкт-петербург с
21.00 до 22.30, или письменно:  192238 санкт-петербург а/я 175.

            делайте ваш выбор монитора и помните :
    "правильный выбор монитора - залог успешной работы программиста !"
                           билл гейтс  /основатель фирмы microsoft

                                  - 1 -

		 расширение монитора-3 : "monitor-ext"
                ---------------------------------------
для расширения резидентного набора команд монитора-3 был разработан работающий из озу модуль
расширения - "monitor-ext".  операционная система ordos предназначена для работы на прк
"орион-128" на уровне файлов и, по сути дела отгораживает пользователя от машинных ресурсов.
у програмистов довольно часто возникает необходимость доступа непосредственно к ячейкам памяти.
имеется разработанная авторами "ориона" программа "м128$", но для оперативной работы она
неудобна, т.к всякий раз, когда нужно просмотреть или изменить участок памяти, приходится
производить много действий.  а если у пользователя нет программ "м128$" и "changer" в rom-диске
то ему остается только посочувствовать ...  кроме того у многих пользователей вообще нет
rom-диска - для них и ordos остается недоступной ...  но - не растраивайтесь !  специально
для вас, а также для облегчения труда программистов на "орионе", был разработан "monitor-ext"
версии 1.2.  (версия 1.0 не поддерживала квазидиски, версия 1.1 неправильно определяла
конст.чтения).  программа monitor-ext является системным расширением ленинградского мони-
тора-3 и располагается в озу по адресам b800-bfff, т.е вместо ordos.  что дает пользователю
monitor-ext ?  судите сами:  1.  имеется набор привычных директив работы с памятью:
d,m,f,t,k,c,x которые более совершенны, чем аналогичные директивы других мониторов (директивы
"к" вообще нет в м128$) 2.  все эти директивы работают с любой страницей памяти 3.  имеются
директивы работы с магнитофоном, осуществляющие запись и чтение с магнитофона в формате рк-86 и
в формате changer, причем файл загружается сразу в свои рабочие адреса и, если это программа ее
можно запустить на исполнение.  при чтении с магнитофона автоматически определяется константа
ввода.  4.  monitor-ext предоставляет также возможность работать с rom- и ram-дисками.  причем,
если ваш компьютер имеет 4 страницы озу (полный вариант), то вы можете организовать 3 ram-диска
- в ordos этого нет !  важно, что форматы файлов monitora-ext идентичны формату файлов ordos.
как видите, если у вас есть monitor-ext то вам не нужны m128$, ch$, chr$ (рк86) и !!!
становится в общем-то ненужной сама ordos.  выбирайте 2 к/байта monitora-ext или 7 к/байт в пзу
для ordos, ch$, chr$ и m128$.  в то время как для ordos необходим rom-диск, с monitorom-ext вы
обойдетесь и без него, причем и в озу у вас останется больше свободного места для программ.
но это не призыв отказаться от ordos, т.к.  это "нерушимый стандарт" для "ориона" (по крайней
мере для читателей журнала "радио").  кроме того уже существуют две прикладные программы ис-
пользующие ordos (через входные точки) - пакет сафронова редактор, ассемблер и дизассемблер и
его же бэйсик (в 1.1).  ordos нужно будет загружать только для работы с этими программами.  что
касается редактора, ассемблера и дизассемблера то пакет screen, работающий с мон-ром-3,
гораздо удобнее и лучше сафроновского (и не "лезет" в ordos, а сам работает с ram-диском,
причем со всеми 3-мя доп.  страницами), бэйсик же - пока сырая версия (хорошая графика, но
дохлая математика).  а теперь более подробно о загрузке и работе monitora-ext.  monitor-ext
работает только с монитором-3.  монитор "ext" может загружаться с ленты (командой i),
автоматически грузиться при включении компьютера из rom-диска (когда он установлен на место
1-го пзу рф2, вместо ordos) а также грузиться как файл из ordos.  однако такая загрузка
монитора "ext" необходима только один раз, т.к.  далее по нажатию на сброс осуществляется авто-
матическое определение наличия в озу модуля "ext" и передача ему управления независимо от
наличия rom-диска и ordos.  чтобы все же иметь возможность перезагрузить ordos (не выключая
питание) в monitore-ext предусмотрена команда q, которая передает управление на горячий старт
(f86c) предварительно изменив озу по адресам b800-bfff, после чего байт паритета этой области
не равен 0e6h и выход в монитор "ext" не происходит.

              директивы монитора "ext" (версии 1.2):
              --------------------------------------
после запуска монитора экран очищается и выводится сообщение:
               * monitor-ext v1.2 *
               * peterburg - 1991 *
после чего кроме двух резидентных команд становятся доступны следующие директивы:

                 директивы для работы с озу:

d<нач.адр>,[<кон.адр>],[<n стр.озу>] - дамп озу указанной страницы памяти (по умолчанию
    основной). если кон.адрес не указан, то выводятся 128 байт. дамп содержит ascii- и hex -
    представления байтов
f<нач.адр>,<кон.адр>,<байт>,[<n стр>] - заполнение области памяти указанной страницы одним кодом.
     дир-ва f имеет еще одно назначение (см.ниже)
m<адрес>,[<n стр>] - модификация ячеек памяти озу указанной страницы. в отличие от "убогих"
     аналогичных директив рк-86 и монитора-1 осуществляется ввод и переход на след.адрес по
     набору 2-х цифр, без нажатия <вк>. кроме этого с помощью курс.клавиш "вверх"/"вниз" можно
     переходить к след-й и предыдущей ячейкам. кроме этого директива позволяет вводить текст -
     для ввода ascii-кода клавиши надо нажать сначала <ар2>, затем клавишу
t<нач.адр.ист>,<кон.адр.ист>,<адр.пр-ка>,[<n стр>] - копирование блока данных в озу (в пределах
     страницы). в отличие от "убогих" аналогичных директив рк-86, м-1,специалиста и m128$ воз-
     можно копирование в любую сторону и с любым перекрытием
k<нач.адр>,<кон.адр> - подсчет контр.суммы блока. ! только в основной странице памяти.
p<нач.адр>,<кон.адр>,<n стр.ист.>,<n стр.пр-к> - копирование блоков данных из страницы в страницу.
c<нач.адр>,<кон.адр>,<обл.срвн>,[<n стр>] - сравнение областей озу
x<нач.адр>,<кон.адр>,<байт>,[<n стр>] - поиск заданного байта

                                - 2 -

                    директивы для работы с мг:

y[<смещ-е>],[<к.чт>] - диретива чтения блока с мг в формате рк-86. выводит адреса загрузки
     (в отличие от аналогичной резидентной команды i). директива подобна директиве  "i" рк-86,
     но имеет весьма важное преимущество - перед вводом блока, по пилот тону осуществлятся
     автоматическое определение и установка константы чтения (совместно с директивой "o" поз-
     воляет копировать программы, использующие защиту за счет разных скоростей ввода блоков -
     кнст. чт. в ячейке - f3db)  - выше надежность. кроме этого не требуется ждать появления
     пилот-тона, чтобы запустить эту директиву (что, крайне неудобно в мониторе-1); директиву
     "y" можно запускать до появления сигнала с мг - директива сама определяет начало записи
     в отличие от м-1 можно прервать ввод - клавиша <ус>. в случае несовпадения контр.сумм -
     сообщение "error"
o<нач.адр>,<кон.адр>,[<кнст.зап>] - вывод блока данных на мг в формате рк-86. (256 байт пилот-
     тон,синхро-байт 0e6h,адреса загрузки, блок, три нулевых байта, 0e6h, к.с.)
r[<нач.адр>],[<к.чт>] - чтение файла с мг в формате "orion-changer". автоматическая настройка
     на скорость, выводит имя, нач. и конечный адреса загрузки. загрузка осуществляется сразу
     по рабочим адресам (указанным в файле). при необходимости можно указать другой адрес заг-
     рузки (в отличие от директивы y - адрес, а не смещение). загруженную программу можно за-
     пустить по директиве g (необходимо помнить, что ordos-программы без ordos не работают).
     файлы загружаются в основную страницу и при необходимости вы сами должны записать его в
     ram-диск. остановка ввода <ус>.
w<имя>,<нач.адр>,<кон.адр>[,<кнст.зап>] - запись блока на мг в формате "orion-changer". имя
     до 8 символов.

                 директивы работы с квазидисками:

a (без пар-в) - сделать rom-диск текущим и распечатать его каталог
b[<n стр>] - сделать ram-диск текущим и распечатать его каталог. если n стр (1,2,3) не указан,
     то по умолчанию - 1. таким образом, при наличии 4-х страниц озу вы можете иметь 3 незави-
     симых ram-диска, которые обозначаются b/01 - b/03. если у вас только одна доп.страница -
     b/02 и b/03 всегда будут пустыми
l<имя файла> - считать файл из текущего диска в озу. печатаются адреса файла в озу. можно счи-
     тывать и $-файлы без запуска <пробел><имя файла> - запуск $-файла на исполнение
s<имя.файла>,<нач.адр>,<кон.адр> - записать файл на текущий диск
f[<n стр>] - форматирование ram-диска, по умолчанию b/01. выводится запрос - отвечать y,
     а не <вк> как в ordos (это страховка против дребезга контактов клавиши)
e<имя файла> - удаление файла из текущего каталога, выводит запрос. если имя файла не указано
     удаляется первый по каталогу файл
нажатие <вк> на пустой строке дает информацию о текущем квазидиске.

q (без пар-в) - удаление из озу "monitor-ext" и выход на 0f86сh.
h (без пар-в) - help. если загружен модуль помощи, то осущ-ся вывод на экран справки по коман-
     дам монитора. пользователь может сам набрать себе текст (например перечень сист.ф-й). по
     запуску директивы осуществляется вызов п/п, адрес которой хранится в ячейках b7fc/fd, пред-
     варительно определяется факт наличия модуля help в озу: для этого считается байт паритета
     области, нач.адрес которой содержится в ячейках b7fc/fd, а кон.адрес в ячейках b7fe/b7ff;
     если он не равен 0e6h, то осуществляется возврат из директивы.

               дополнительная информация о файлах для "асов":
               ----------------------------------------------
при необходимости испорченные каким либо образом файлы можно восстановить, используя
директивы d,m,t с указанием соотв.страницы.  для этого нужно знать структуру файлов.  в rom- и
ram-дисках файлы располагаются последовательно, один за другим.  каждый файл в начале имеет
заголовок из 16 байт.  назначение байтов в заголовке:  8 байт - имя, пустые символы содержат
код 20h (пробел) 2 байта - адрес загрузки файла в озу 2 байта - длина файла в байтах с
округлением до 16 в большую сторону 4 байта - резерв атрибутов файлов, для прикладных программ
далее идут коды самого файла в количестве, указанном в заголовке как длина.  сразу за последним
байтом файла идет заголовок следующего файла и т.д.  признаком конца списка является байт с
единичным старшим битом в первом символе имени очередного файла (в ordos - обязательно - 0ffh).
таким образом файлы организованы в виде связанного списка, структура которого одинакова для
rom-диска и всех трех ram-дисков.

          монитор-3 для "ориона-128". руководство программиста.
          -----------------------------------------------------
монитор-2 (радио/01.91) содержит хороший набор драйверов ввода/вывода, обслуживающих
клавиатуру, дисплей, магнитофон.  подпрограмма консольного вывода (на экран) обрабатывает, как
esc-y последовательность для прямой адресации курсора так и обрабатывает управляющие коды
терминала vt52, что позволяет использовать ее при установке оп.системы cp/m.  однако автор
монитора-2 в.сугоняко, разрабатывая его, не оставил никаких "шансов на выживание"
пользователям, не имеющим rom-диска.  с учетом этого, а также для обеспечения возможности
расширения был разработан монитор-3 (т.н.  "ленинградский вариант").  он полностью совместим
с монитором-2, выполняет все его функции, но кроме этого обеспечивает ряд дополнительных
возможностей.  следует отметить, что почти все системные подпрограммы были переписаны
заново, что позволило как увеличить их быстродействие, так и сократить в обьеме, за счет чего и
стало возможным добавление новых п/п-м и функций.  автором монитора-3 является известный
(для работавших на рк-86 и "специалисте) программист из ленинграда - ивинских в.р., который
выражает благодарность за предоставленные материалы и помощь в работе над монитором
в.сафронову (г.электросталь).
                                          - 3 -

         системные ячейки монитора-3 (иниц-ся по сбросу)
         -----------------------------------------------
     адрес      нач.зн.      назначение
     f3c3      - c3 (jmp)
     f3c4/c5   - --        - адрес п/п beep
     f3c6      - c3 (jmp)
     f3c7/c8   - --        - адрес п/п ввода символа с клавиатуры
     f3c9      - c3 (jmp)
     f3ca/cb   - --        - адрес п/п ввода строки символов
     f3cc      - c3 (jmp)
     f3cd/ce   - --        - адрес п/п вывода символа на экран
     f3cf      - c0        - старший байт адреса начала экрана
     f3d0      - 30        - ширина экрана, байт
     f3d1/d2   - f000      - адрес знакогенератора
     f3d3      - 00        - признак инверсии печатаемых символов
     f3d4      - 00        - номер первой строки экрана
     f3d5      - 19        - кол-во строк в окне экрана
     f3d6      - 00        - вертикальная координата курсора
     f3d7      - 00        - горизонтальная координата курсора
     f3d8/d9   - --        - адрес перехода при выпадении сигнала мг
     f3da      - 40        - константа записи на мг
     f3db      - 60        - константа чтения с мг
     f3dc      - 00        - признак инверсного сигнала с мг
     f3dd      - 00        - раб.ячейка п/п-мы вывода символа
     f3de      - 00        - раб.ячейка для обр-ки esc-кодов
     f3df/e0   - --        - адрес п/п доп. обработки сист. прер-й
     f3e1/e2   - --        - адрес внутр. п/п-мы вывода символа
     f3e3/e4   - --        - адрес п/п-мы обр-ки директив монитора
     f3e5      - 00        - признак рус (0ffh)/лат (00)
     f3e6      - 00        - раб.ячейка для автоповтора
     f3e7      - 48        - константа п/п-мы beep
     f3e8/e9   - --        - адрес п/п-мы чтения байта с мг
     f3ea/eb   - --        - адрес п/п-мы записи байта на мг

         рабочие ячейки монитора-3 (не иниц-ся по сбросу)
         ------------------------------------------------
     f300...f31f  - буфер ввода директив
     f320/21      - 1-й параметр директивы
     f322/23      - 2-й параметр директивы
     f324/25      - 3-й параметр директивы
     f326/27      - 4-й параметр директивы
     f3c1/c2      - врем.хранение sp при работе п/п scroll
     f3ec/ed      - ramtop, знач-е макс.доступной памяти

             стандартные подпрограммы монитора-3
             -----------------------------------
монитор-3 содержит подпрограммы, которые пользователь может вызывать, соблюдая определенные
соглашения.  эти п/п-мы являются стандартными и совместимыми с монитором-1 и монитором-2.
f803 - rd-key, ввод символа с клав-ры.  выход:  a - введенный символ.  все регистры (кроме
     a) сохраняются.  проверяется нажатие клавиш <ус>/<сс> и вып-ся обработка прогр.преры-
     вания.  выполняется переход по адресу в ячейках f3c7/c8.  в п/п реализован автоповтор.
     в мониторе-2 используется простейший и крайне неудобный алгоритм автоповтора.  этот
     недостаток был устранен в мониторе-3.  в отличие от аналогичной п/п м-2, звуковой
     сигнал подается и код символа возвращается при нажатии, а не при отпускании клавиши, что
     очень существенно, например при быстром наборе текста.
f806 - ldbyte, ввод байта с мг.  вход:  a=0ffh - с поиском синхро-байта 0e6h; a=08 - без
     поиска.  выход:  a - введенный байт.  все регистры (кроме a) сохраняются.
     осуществляется переход по адресу, содержащемуся в яч.  f3e8/e9.  п/п должна вызываться
     только при наличии сигнала на магн.  входе.  при "выпадении" сигнала осуществляется
     переход по адресу, содержащемуся в яч.  f3d8/d9, причем стек остается "засоренным" на 6
     байт !
f809 - cout, вывод символа на экран.  вход:  c - код символа.  все регистры сохраняются.
     проверяется нажатие <ус>/<сс>.  осуществляется переход по адресу содержащемуся в яч.
     f3cd/ce.  обрабатываются все управл.коды и esc-последовательности м-2 описанные в
     "радио" (01.1991).  может быть определено окно, внутри которого действуют операции
     очистки и роллинга.  в отличие от м-2 матрица символов 6*8, а не 6*7,что позволяет
     использовать более красивый шрифт и главное буквы кои-8; а также очищается (цветом фона)
     пространство между строками.
f80c - svbyte, запись байта на мг.  вход:  c - записываемый байт.  все регистры
     сохраняются.  переход по адресу в яч.  f3ea/eb.
f80f - вывод символа на экран.  вход:  a - код символа.  все регистры сохраняются.
     переход на стандартную п/п вывода символа (т.е вектора перехода на имеет).
     проверяется наличие вызова прогр.прерывания с клав-ры - <ус> или <сс>.
f812 - status, опрос состояния клавиатуры.  все регистры (кроме a) сохраняются.  выход:
     a=00 - никакая клавиша не нажата, a=0ffh - нажата какая-то клавиша.  к сожалению не
     имеет вектора, что "блокирует" применение аппар.  клав-ры.
f815 - pr_hex, печать на экране байта в шестнадцатеричном виде.  вход:  a - байт.  все
     регистры, кроме регистра a !  сохраняются.
                                            - 4 -

f818 - pr_msg, вывод на экран сообщения.  вход:  hl - адрес первого байта сообщения,
     последний байт - 00h.  все регистры, кроме hl, сохраняются.  hl указывает по выходе на
     следующий за сообщением байт.
f81b - inkey, ввод кода нажатой клавиши (чтение на лету).  проверяется нажатие
     <ус>/<сс>.  выход:  a=0ffh - клавиша не нажата, a=0feh - нажата рус/лат; иначе код
     клавиши, сформированный с учетом состояния клавиатуры (рус/лат), нажатия <сс>/<ус>
f81e - запрос положения курсора.  выход:  рег.h - номер строки, рег.l - номер позиции
     (столбца).  остальные регистры сохр-ся
f821 - п/п пользователя.  по сбросу (мон-3) п/п ввода строки символов.  вход:
     hl-начало буфера, de - конец.  возврат по <вк> или концу буфера.  строку можно
     редактировать с пом.  клавиши "<-"; при загрузке cp/m подменяется п/п print
     (эхо-печать в cp/m вкл-ся ctrl/p).
f824 - ld_mas, чтение массива с мг. адреса считываются с ленты
f827 - стандартная п/п sv_mas, запись массива на мг. заглушена.
f82a - ch_sum, подсчет контр.суммы блока.  вход:  hl - нач.адрес, de -кон.адрес.
     выход: de -кон.адрес, hl=de, bc=контр.сумма
f82d - распаковка внутреннего знакогенератора.  распаковка осуществляется по более
     быстрому и короткому алгоритму.
f830 - запрос верхней границы озу пользователя. выход hl=ramtop
f833 - установка верхней границы озу пользователя.  вход:  hl=адрес верхней границы озу.
f836 - чтение байта из доп.  страниц озу.  вход:  hl - адрес, a - номер доп.  страницы
     (1-3).  выход:  c - считанный байт
f839 - запись байта в доп.страницу озу.  вход:  hl - адрес, a - номер доп.  страницы
     (1-3).  c - записываемый байт.
f83c - установка курсора.  вход:  h - номер строки (y), l - номер позиции (x).
f83f - beep, вывод звука с частотой опред.  константой (f3e7).  имеет вектор перехода f3с4/c5.
f842 - четыре ячейки содержат номер версии монитора-3 (v3.1).

для проверки исправности монитора-3 используйте контр.сумму - 7e00.  кроме этой версии монитора
существовала более ранняя версия монитора-3:  с контр.суммой 24a3/29а7 (02.1991) - п/п вывода
символов выводит символы в матрице 6*7 /при этом невозможно применение драйвера вывода символов
кои-8, маленькие буквы с "хвостиками" напр:p,ё,q при этом получаются на высоте заглавных.
  монитор-3 расчитан на работу с клавиатурой рк-86.  к сожалению в.сугоняко опубликовал драйвер
мс7007, считая, что орион не должен иметь стандартной клавиатуры, а все программы должны
работать через bios-f800.  однако для игр п/п-мы f800 работают слишком медленно (особенно
м-2),и п/п в играх обращаются непосредственно к	порту клавиатуры.  т.о 3/4 существующих	игр
работают только с клавиатурой-рк.  (драйвер клавиатуры мс7007 сделан неправильно т.к
программирует порты а и b отлично от драйвера рк, что приводит к полной несовместимости, если
этот драйвер переделать возможно использование на мс7007 программ стандартного ориона).  исходя
из вышеизложенного все наши программы ориентированы на рк-клавиатуру (в т.ч.  и драйвер кои7).
независимо от автора монитора-3 сделана его версия для клавиатуры мс7007 (владимир иванов и
андрей мостовой), которая позволяет использовать c мс7007 все игры для рк-клавиатуры.  для
работы с монитором-3 (годится и для м-2) целесообразно применение загружаемого оконного
драйвера.  данный драйвер загружается по адресам a800-afff и обеспечивает следующие функции:
измение размера выводимых на экран символов - большие буквы (формат 8*8, вмес- то 5*7 -
красивый ibm-шрифт кои-7, значительно меньше утомляется зрение), загрузка полного оконного
драйвера п/п вывода на экран.  в мониторе-2 (и мониторе-3) сделаны попытки введения оконных
функций, здесь они реализованы полностью.  пользователь имеет возможность определить на экране
окно для вывода (в т.числе и в центре экрана) - в пределах этого окна будет осуществляться
вывод символов и обрабатываться упр.коды и подпрограммы (роллинга, очистки, адресации).  кроме
этого драйвера, для пользователей имеющих принтер целесообразноно применение драйвера
"основной" кодировки кои-8 для персональных компьютеров (см.  мпсс 1986 n4).  этот драйвер
обеспечивает вывод символов кои-8 (заглавные и строчные русские и латинские буквы) и символов
псевдографики ibm-pc (дает возможность украшать тексты и программы красивыми рамками).  данные
драйверы могут использоваться с редактором "screen" (версий 2.0 - 2.4).

                                  санкт-петербург, апрель 1991




