; Р А С Ш И Р И Т Е Л Ь R O M - B I O S Д Л Я О Р И О Н А ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ К сожалению, базовый ROM-BIOS ОРИОНА весьма слаб по возможностям, отчего с использованием его п/п-грамм невозможно создавать нормальные программы. Выхо- дом в такой ситуации является апп.доработка для увеличения обьема ПЗУ и соз- дание более совершенной версии ROM-BIOS. Однако автор ОРИОНА этого не сделал т.к он теперь занимается только ОРИОН-ПРО, которому обеспечил и качественный ROM-BIOS. Иметь загружаемый в ОЗУ ROM-BIOS при старой концепции ДОС ОРИОНА было нельзя. Только после появления ORION-DOS V3.0 работающей в банке номер 2 появилась возможность исправить ситуацию. Расширитель ROM-BIOS загружается в банки 0 и 1, но в ORION-DOS это не мешает ДОС и экрану. Расширитель, исполь- зуя вектора стандартных п/п ПЗУ изменяет и кардинально улучшает возможности ROM-BIOS, - от самого ПЗУ F800 используется только одна п/п-ма (F81B) и стан- дартные входы с векторами. Расширитель использует факт наличия на ОРИОНЕ-128 ROM-диска, что эквивалентно нормальному ПЗУ, если при старте перегружать коды в ОЗУ ЭВМ. Расширитель может также загружаться и как обычный дисковый файл с дискеты или даже быть файлом 'замаскированным' под ORDOS-файл (тогда ROM-BIOS прошивается с офсетом в 810h). ОРИОН-ДОС, обнаружив отсутствие в ОЗУ такого XBIOS проверяет ROM-диск и автоматически загружает его. XBIOS состоит из обы- чного драйвера консоли и командного модуля, имеющего нестандартный вход. Эму- лируются упр.коды терминала VT52, однако драйвер обслуживает эти коды в пре- делах установленного окна, которое может быть равно или меньше полного экрана Т.е, ROM-BIOS является и цветным и оконным и позволяет выводить символы КОИ8 с псевдографикой (и фонт загружается). Однако этот XBIOS еще графический, звуковой и дисковый и ориентирован на MAC-подобный интерфейс и главное, рас- считан для его использования из ЯВУ, а не из ассемблерных программ. Это дос- тигается особым 'протоколом связи', когда п/п-мме передается не сам параметр а лишь ссылка на адрес его хранения, как это используют в маш.процедурах ЯВУ. Для ускорения графики есть спец.язык графических команд. Звуки выводятся про- граммно и через ВИ53. XBIOS работает с любым ПЗУ F800, но требуется наличие Z80 (по любой схеме). Текущая версия занимает 16К. XBIOS исключительно 'демо- кратичен' по аппаратуре - требуется только 'базовое железо' (даже часы сдела- ны программно, но наличие тиккера делает ход часов кварцованым). ОРИОН без такого ROM-BIOS остается по существу обычной текстовой ЭВМ, с крайне сложным и неудобным программированием графики (от этого мало красивых программ). А ОРИОН, имеющий такой XBIOS, превращается в мощную графическую ЭВМ с очень легким программированием даже языками выс.уровня. Это на 2 порядка облегчает создание программ в современном графич.интерфейсе (цвет, окна) и разработку графических игр. Если бы ОРИОН имел в 1990 году такой ROM-BIOS, то сейчас он имел бы 10000 игр уровня СИНКЛЕРА - при наличии программы ГЕНЕРАТОР СПРАЙТОВ, этого XBIOS и компиллятора BASIC MICROSOFT игра создается за несколько часов. Использованы идеи ROM-BIOS японских компьютеров семейства MSX (Nippon,Sanyo), а также идеи ROM-BIOS (QUICK DRAW) и интерфейса (MAC SYSTEM) Apple Macintosh. ; ------------------ УПРАВЛЯЮЩИЕ КОДЫ ДРАЙВЕРА CONOUT (F809) ------------------ 07 и 09 - 07 BELL (звонок). 09 - горизонтальная табуляция через 4/8 позиций 0A и 0D - 0A курсор вниз на 1 строку. 0D - курсор в начало строки окна (!) 0C - CLS + HOME (старый код 1F, пережиток от РК86 - также сохранен !) ESC,07,K,N - установить константу и число периодов (деленное на 8) для BELL ESC,09,4 - установить горизонт.табуляцию через 4 позиции (ESC,09,<>4 возврат) ESC,36/ESC,37 - включить/выключить инверсный вывод символов (INVERSE) ESC,38/ESC,39 - перевод клавиатуры в русский/латинский регистр ESC,41 - курсор вверх на 1 строку (коды РК86 сохранены, тоже 19) ESC,42 - курсор вниз на 1 строку (тоже 1A) ESC,43 - курсор вправо на 1 позицию (тоже 18) ESC,44 - курсор влево на 1 позицию (тоже 08) ESC,45 - инициализация драйвера (по умолчанию), сброс OPEN-буферов и CLS ESC,48 - курсор HOME без очистки экрана (верхний левый угол ОКНА !!!) ESC,4B - стирание до конца строки окна (включая позицию курсора) ESC,50,COLOR - установить цвет. В старшем ниббле код фона, в младшем символов 0 - черный 4 - красный 8 - серый C - розовый 1 - синий 5 - пурпурный 9 - голубой D - малиновый 2 - зеленый 6 - коричневый A - бледно-зеленый E - желтый 3 - бирюзовый 7 - грязно-белый B - бледно-синий F - ярко-белый ESC,55,MODE,COLOR - режим работы, есть 2 режима: 0 - MONO, 6 - 16 цветный ESC,59,LN+20,COL+20 - позиционирование курсора. Нельзя задавать параметры по- зиционирования меньше 20H и вне экрана, т.к не контроллируется 'попадание' в физический экран ОРИОНА. Поэтому при задании неверных параметров и пози- ционировании в физически невозможную позицию будет испорчено ОЗУ вне преде- лов экранной области (размером в 16 Кб) и Ваша программа может зависнуть... ESC,LN+B0,COL+B0 - позиционирование курсора. Более простой аналог кода ESC,59 ESC,6A - запомнить позицию курсора для возврата в эту позицию кодом ESC,6B ESC,6B - возврат курсора в позицию запомненную последний раз кодом ESC,6A ---------------- ГРАФ.ПРОЦЕДУРЫ ДОСТУПНЫЕ КОМАНДАМИ КОНСОЛИ ----------------- ESC,80,V,H0,H1 - позиционирование графич.пера (в координатах: 0-255,0-511) Текущая на момент (старая) позиция запоминается (координата FROM) ESC,81,REP0,REP1,80+RRR - число повторов (0-255) и направление шага команд При REP=0 выполняется 256 шагов. Для шага =0 - 4-й код ставится менее 80 ESC,84 - PRESET0. Очистить бит в плоск.0. Шаг. Уменьш.REP, если не 0 повтор ESC,85 - PSET0. Установить бит в плоск.0. Шаг. Уменьш.REP, если не 0 повтор ESC,86 - PRESET1. Очистить бит в плоск.1. Шаг. Уменьш.REP, если не 0 повтор ESC,87 - PSET1. Установить бит в плоск.1. Шаг. Уменьш.REP, если не 0 повтор ESC,88,C0+2*C1 - задать цвет для команд DRAW, CIRCLE и PEN ESC,89 - графич.команда DRAW0. Рисует в плоскости 0 'цветом' C0 (из ESC,88) ESC,8C,RAD - CIRCLE0. Начертить окружность в плоск.0. RAD - радиус в точках ESC,90,SV,SH0,SH1 - DRAWBOX0. Прямоугольник. Левый верхн.угол - текущая коорд ESC,91 - начертить (граф) рамку по краю текстового окна. Сократить окно на 1 ESC,92 - начертить (симв) рамку по краю текстового окна. Сократить окно на 1 ESC,9A,Y,X,dY,dX - WINDOW. X,Y - абсолютные координаты левого верхнего угла окна в символьных позициях (в режиме полного экрана 64*25). А dx,dY - размеры задаваемого окна по X и Y соответственно. Если X+dX больше 64 или Y+dY больше 25, то ничего не меняется (сохраняются прежние параметры окна) ; -------------- ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ EXTENDED ROM-BIOS ----------------- Языки высокого уровня (ЯВУ) поддерживают только устройства CONIN и CONOUT и 'диалог' между прикладным ПО и ROM-BIOS возможен только стандартным образом. Функция CONOUT может использоваться для вывода на экран любых данных, в т.чи- сле и графических, и для вывода графич.данных особых проблем нет. Но как по- лучать данные из ROM-BIOS в программу ? Остается только прием кодов за счет прямых ассемблерных вызовов и считывания ячеек ОЗУ. Но разные ЯВУ и компилля- торы разных фирм передают параметры п/программе в м.кодах по разному, отчего невозможно получить универсальную версию такого ASM-входа. Все языки высоко- го уровня имеют доступ к ячейкам памяти ЭВМ и возможность вызова п/п в машин- ных кодах. Обмен через 'ячейки связи' для ассемблерных программ обычное явле- ние, но в ЯВУ параметры ASM-подпрограмме передают иначе (стеком и регистрами) Чтобы получить универсальность по отношению ко всем языкам ВУ для обмена ко- дами в данном ROM-BIOS используются ячейки ОЗУ (для удобства терминологии они далее именуются регистрами R1,R2...R6,R7). Благодаря этому возможно использо- вание этих процедур из всех языков ВУ (и главное и из БЭЙСИКА-компиллляра и БЭЙСИКА-интерпретатора а также ФОРТРАНА и ПАСКАЛЯ). Данный ROM-BIOS устранят главное неудобство использования маш.п/программ при разработке ПО на БЭЙСИКЕ компилляторе, а именно несовместимость по подключению в программы ассемблера. Можно отлаживать программы предназначенные для компилляции в интерпретаторе. А это на порядок повышает эффективность разработки ПО на БЭЙСИКЕ - при этом при том-же (!!!) конечном результате, ПО на БЭЙСИКЕ разрабатывается в 100 раз быстрее, чем на ПАСКАЛЕ или СИ, не говоря уже об ассемблере. Для вызова ROM- BIOS используется организованый специально для интерфейса с ЯВУ вход, - по адресу F000 (имеется и вход для PEN-команд F00F). Параметром из ЯВУ передает- ся номер функции XBIOS. Если-же подряд надо выполнить много графич.команд, то выгоднее организовать их в виде МАКРОКОМАНДЫ. В ОЗУ подготавливается цепо- чка команд (и параметров) и ROM-BIOS, не ожидая вывода команд на CONOUT (что тормозит) сам будет их считывать из памяти, интерпретировать и выполнять, по- ка не встретится STOP-байт. МАКРОКОМАНДА выполняется за время значительно ме- ньшее, чем при работе по одной команде. Это позволяет существенно увеличить скорость - графич.процедура, состоящая из десятков и сотен отдельных команд выполняется всего за один вызов ROM-BIOS (при этом дополнительно можно иметь библиотеку МАКРОКОМАНД и программно только подставлять в них параметры. Все вышеперечисленное делает графические построения доступными даже для таких, традиционно неграфических приложений, как программы на интерпретирующем БЭЙ- СИКЕ, т.к при этом графич.построения выполняются со скоростью ассемблерной, а не бэйсиковой программы. А наличие удобных оконных, цветных и мышиных функций позволяет делать при минимальных затратах времени, красивые и эффективные программы, в десятки-сотни раз сокращая время на их разработку (по сравнению с ассемблером без XBIOS). Для ассемблера вход F000 недоступен, - поэтому для него есть вход F006. Номер функции загруж-тся в рег A. Первые версии ROM-BIOS это первая попытка реализации этой идеи (в основноя для нужд БЭЙСИКА). Перво- начально разработан СТАНДАРТ КОМАНД и на сегодняшний день реализовано 80% из них (наиболее полезных в сис.ПО). Это дает графич.возможности ROM-BIOS, пото- чечную и побайтовую работу с экраном из ЯВУ, ф-ции гр.интерфейса и дополнит. внешние устройства отсутствующие в CP/M. Под регистры, т.е ячейки ОЗУ, испо- льзуемые для обмена данными, использованы ненужные служебн.ячейки МОНИТОРА-2 ОРИОНА-128 (ПЗУ F800 не менятся). Адреса регистров: R1-R5 - ячейки F3D8-F3DC, R6,R7 - F3E8,F3E9. Далее описан набор КОМАНД. Но это не конечный стандарт, - он еще развивается. В версиях возможно будут уточнения. Коды - десятичные. ; ---------------- КОМАНДЫ ДЛЯ ПОДДЕРЖКИ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА -------------- 01 - QINFO. Выход: R1,R2-версия. R3,R4 - адрес блока параметров для др-веров 02 - XPULT. (!) Функция есть только в версии для теневого ПЗУ на 27256 03 - CONSOF. Отключает консоль полностью (CONIN и CONOUT) для ускорения BASIC 04 - CONSON. Подключить консоль назад (т.е убрать заглушки из входов) 05 - QMODE. Выход: R1-CMOD. R2-число откр.окон. R3-остаток буфера. R4-GRI 06 - QKURS. Выход: R1,R2-POSX,POSY. R3,R4,R5 - координаты ГРК в точках ! 07 - QWINDO. Выход: R1-R4 - Y,X,dY,dX, параметры текущего окна. R5 - цвет 08 - QREADY. Выход: R1-Ready I/O. Биты: 0-KEY/JOY, 2-DELAY, 3-LST: 09 - QKEY. Выход: R1 - код полученный с п/п F81Bh ПЗУ F800 10 - QGRI. Выход: R1 - 0/1/2. R2-RRR. Опрос устройства GRAF INPUT 12 - QSTR$. R1-макс.длина. R2,R3 - адрес. Управление: , и <ВК> 13 - QRAM. Вход: R1-банка ОЗУ. R3-мл.адрес, R4-ст.адрес. Выход: R2-байт 14 - QTIME. Выход: R1-R3 - время, R4=0/1 (флаг разрешения вывода часов) 15 - QDATE. Выход: R1-R3 - дата, R4=0/1 (флаг ввода даты с запроса) 16 - QWATCH. Выход: R1-R3 - текущая установка. R4-0/1 (1 если включено) 17 - QPOINT. R1,R2,R3-V,H0,H1. Выход: R4-0/1. Считывание плоскости 0. 18 - XCOUT. R1 - символ. Передает символ на стандартный вход CONOUT 19 - XCHAR. R1-символ. В отличие от CONOUT выводит коды от 0 (!) до 255 20 - XSTR$. R1,R2 - адрес строки (в банке 2). Строка не длиннее 64 символов 21 - XMSSG. R1-номер. Вывод ранее загруженного мессиджа 22 - XHEX$. R1 - байт для вывода как HEX (аналог п/п F815) 23 - XDES$. R1 - байт (0-99 дес). Если число более 99, то выводится 99 24 - XSOUND. R1,R2 - константа звука. R3,R4 - число периодов 25 - XPIANO. R1,R2-канал 0, R3,R4-канал 1, R5,R6-канал 2, R7-время в 0.1 СЕК 27 - XMPLAY. R1,R2 - адрес кодов (как в SOUND). 0FFh,0FFh - стоп-код. 29 - XERSND. 'Омерзительный' звук выводимый при ошибочном вводе пользователя 30 - XRAM. R1-банка. R2-байт, R3-младш.байт адреса, R4-старший байт адреса 33 - XPSET0. R1,R2,R3-V,H0,H1. Установить бит в плоскости экрана 0 34 - XPSET1. R1,R2,R3-V,H0,H1. Установить бит в плоскости экрана 1 35 - XPRST0. R1,R2,R3-V,H0,H1. Сбросить бит в плоскости экрана 0 36 - XPRST1. R1,R2,R3-V,H0,H1. Сбросить бит в плоскости экрана 1 37 - XDRAW0. R1-R3-V,H0,H1 source point. R5-V, R6,R7-H0,H1 target. В плоск.0 41 - XPXOR0. R1,R2,R3-V,H0,H1. Инвертировать бит в плоскости экрана 0 43 - STMOD. R1=0/1/2. 0-КО7, 1-КОИ8, 2- МИКРОШРИФТ 4*6 КОИ7 (не оконн.др-р) 44 - SLDFNT. R1 код первого символа (0-31), R2 - число символов. R3,R4-адрес 45 - SLDGRK. R1-R2 - адрес в ОЗУ (б.2) 24 байта. Загрузка образа гр.курсора 46 - SSLGRK. R1-0...7. Выбор одного из 8 стандартных образов граф.курсора 47 - SLDGRI. R1,R2-адрес в банке 2 драйвера GRI (до 256 байт, только JR ком) 48 - SLDMSG. R1-номер. R2-длина (<64). R4,R5-адрес строки. Загрузка мессиджа 49 - STIME. R1-R3 - время Ч-М-С. R4 - ключ TIME OUT (0/1). Установка часов. 50 - SDATE. R1-R3 - дата Г-М-Д. Установка текущей даты 52 - SWATCH. R1-R3 - время срабатывания будильника. 53 - SSCSAV. R1-0/1. R2,R3 - число секунд (!) до гашения экрана. SCREEN SAVER 54 - GRKOFF. Выключить отображение ГРАФ.УКАЗАТЕЛЯ (ГРК) и стереть его с экр. 55 - GRKBAK. Включить режим отображения граф.курсора ГРК (на старом месте) 56 - GRKNEW. R1,R2,R3-V,H0,H1. Позиционирование граф.курсора (одноврем.включ) 57 - KURNEW. R1,R2-POSX,POSY. Установить текст.курс. (в нормал.реж. и МИКРО) 58 - SBREAK. R1-0/1 R2,R3-адрес доп.процедуры SOFT INT 59 - WINDOW. R1 - Y, R2 - X, R3 - dY, R4 - dX, R5 - COLOR (похоже на ESC,9A) 60-63 - RAMKA1-4. Четыре разных разновидности рамок по краю текстового окна. 64 - BUTTON. R1-R4-Y,X,dY,dX. Рисуется прямоугольник с закругленными краями 65 - SHADOW. Одинарная линия снизу и справа окна, изображающая тень от окна 67 - XORBOX. R1,R2,R3-V,H0,H1. R4-SV, R6,R7-H0,H1. Пунктирный прямоугольник. 68 - DRWBOX. ---"----. Прямоугольник (ф.66 и ф.67 рисуются по XOR с экраном) 69 - OPEN0. R1-R5 как у WINDOW. Окно сохраняется в буфере и очищается. R6=ERC 70-72 OPEN1-OPEN3. Как в OPEN0. Еще чертится рамка окна (1-3). Выход: R6=ERC 73 - CLOSE. Окно восстанавливается. Восст-ся цвет. Выход: POSX=POSY=0. R6=ERC 74 - FOLDER. Как в OPEN1. R6,R7-ук.NAME. Рисует открытый FOLDER на полн.окно 78 - RESBUF. Освобождение всех графических буферов, удаление всех 'откр.окон' 79 - LIGHT. R1-COLOR. Инверсия текущего окна (в ч/б режиме) или смена цветов 80 - LTBALK. R1-длина. R2-цвет. Балка подкрашивается (или инв-ся в монохроме) 81 - PAINT1. Вход: R1,R2-коды закраски. Закрасить окно (в цвете, если цв.реж) 82 - PAINT2. Закраска образцом 8*10 битов (стековая процедура, как и PAINT1) 83 - BTMCLS. CLS куска экрана 6*480 внизу экрана (для очистки нижних байтов) 84 - MVGRK1. Вых: R1-0..2 Передвигает ГРК,счит.кнопки. Если R1=1/2, R6,R7-X,Y 85 - MVOBJ. Передвигает ГРК при нажатой кнопке, вместе с контуром обькта... 86 - CLCSND. Звуковой эффект (нажатия клавиши) 87 - PDMENU. R1,R2,R3,R4-Y,X,dY,dX, R5-STEP. R6,R7-спис.блок. Вых: R1-N функц 92 - TSTOBJ. R1,R2,R3,R4-Y,X,dY,dX. R6,R7-POSX,POSY. Тест на обьект: R1=0/1 93 - CLICK1. Вых: R1-0 - ESC. R1-1/2 нажатие на лев. и пр.кнопки (двойн.клик) 94 - CLICK2. Все как в CLICK1, но ГРК мигает 95 - CLICK3. Как и CLICK1. Без выхода по АР2, вначале до перемещ-я ГРК мигает 97 - OFWAIT. R1-0/1 (образ ГРК). Ожидание отпускания кнопки или сдвига GRI 98 - PUT0. Вход: R1,R2 - относит.адрес в экране, R3 - высота 'прямоугольника' в байтах, R4-ширина 'прямоугольника' в байтах, R5,R6 - адрес кодов (б.2) 99 - GET0. Вход: R1,R2 - относ.адрес в экране, R3 - высота в байтах, R4 - ши- рина в байтах. R5,R6 - адрес (в банке 2), куда сгружаются считанные коды 127 - MACPEN. R1,R2,R3-V,H0,H1. R3,R4 - адрес блока кодов в банке 2. R5-1/0 ------------------- СПРАЙТОВЫЕ КОМАНДЫ МУЛЬТИПЛИКАЦИИ ----------------------- 110 - SPRMODE. Eсли R1=0 то спрайты MONO. если R1=1, то реж 4C. Сброс буферов Задание двухплоскостного режима только при работе в ДОС. Это дисковая процедура! Полностью очищает весь эл.диск и изменяет его размер. До задания режима SPRMODE все остальные спрайтовые команды игнорируются. 111 - CLEAR. Возвращает стандартный размер электронному диску. Сброс SPRMODE. 112 - SPRITE. Определить спрайт. Вход: R1 - номер спрайта (0..31). R2-высота, R3 - ширина спрайта в байтах, R3,R4 - адрес кодов (банк 2). За каждым графич.байтом следует байт маски вывода. В маске выводимый бит 0, если соотв.бит графики выводится. Если включен двухплоскостный SPRMODE, то идет два байта графики и маска (число байтов x2 или x3). Выход: R6-ERRC 113 - SPRDEL. R1 - номер спрайта. Освобождает ГРАФИЧ.БУФЕР для новых спрайтов 114 - SPRPUT. Вход: R1 - номер спрайта. R2,R3 - относ.экранный адрес (0-3FFF) 115 - REMOVE. R1 - номер спрайта. 'Стереть' спрайт с экрана восстановив экран Но экран восстанавливается правильно только после команды BACKGET. 116 - BACKGET. R1,R2 - адрес в экране. R3,R4 - высота, ширина. Указанный ку- сок экрана или даже весь экран в 2*15К запоминается в BACKGET буфере 117 - BYTETST. Вход: R1,R2 - экранн.адрес байта. Выход: R3 - FF или N спрайта 118 - OVERTST. Вход: R1 - номер спрайта. Выход: R2 - FF или номер спрайта 119 - SCREEN ROLL. R1 - dY (-128...127), R2 - dX/8 (-59..59). Сдвижка экрана. --------------- ДИСКОВЫЕ И ОВЕРЛЕЙНЫЕ КОМАНДЫ РАСШИРЕНИЯ XBIOS ------------- 120 - TEST. R1,R2-указатель на FCB. Проверка на наличие файла. Выход: R6=0/1 121 - LOAD. R1,R2 - указатель FCB. R3,R4 - адрес буфера. R5,R6 - длина буфера в блоках по 128 байт. Выход: R1,R2 - число считанных из файла блоков 122 - SAVE. R1,R2-указатель FCB. R3,R4-адрес буфера. R5,R6-длина файла в бл. 123 - DISK NAME. Выход: R1,R2 - указатель на имя диска (полные 15 символов) 124 - USER NAME. Вход: R1 - номер юзера. Выход: R1,R2 - указатель на имя (8) 125 - FILDATA. R1,R2-FOLDER.R3,R4-NAME.R6,R7-адр. Счит паспорт файла 64 байта 126 - OVERLAY. R1-номер оверлея. Грузит оверлей из ROM-диска и запускает его ---------------- КОМАНДЫ ГРАФИЧЕСКОГО ПЕРА (кодируются по битам) ------------ Эти команды передаются на спец.входы F00F/F01E и могут исполняться в МАКРО. При покомандном исполнении рисование осуществляется только по XOR. Использую- тся для 'перемещения' по экрану контуров обьектов и вывода готовых картинок. Битовая кодировка команды PEN: F R R R F R R R . RRR - задают направле- ние перемещения: 0-вправо, 1-вправо и вверх, 2-вверх, 3-влево и вверх, 4-вле- во, 5-влево и вниз, 6-вниз, 7-вправо и вниз. Каждая команда описывает два ша- га пера. Первым выполняется 'младший' ниббл команды. Стоп байт в макро - 40h. F - флаг, определяет ставить точку или нет (можно перемещаться без рисования) Входы F00F/F01E имеют и ассемблерные аналоги - входы F015/F024 (команда в А). ; MOVGRK является важной функцией графического интерфейса. Она обеспечивает вы- вод и перемещения графич-го указателя (ГРК). При старте включается эмулятор джойстика на клавиатуре. Этот эмулятор, чтобы он работал на любой клавиатуре, использует ф.F81B. Поэтому он перемещает ГРК только по 'вертикали и горизон- тали'. Джойстик - более удобен (6 проводов и 7-штырьковый разьем). Он подк- лючается параллельно клавиатуре (биты как ZX, см.файл JOYSTIK.TXT) и позволя- ет перемещать ГРК по диагонали. Джойстик стоит дешевле мыши и у всех есть, но главное не требует доп.железа для подключения. MVGRK1 возвращает в R1 резуль- таты так: 0 - ничего, 1 - лев.кнопка, 2 - правая кнопка. Если обнаруживается перемещение GRI то ГРК перерисовывается на новую позицию (на какую не важно). На EMJOY кнопки имитируют кл.<ПРОБЕЛ> и <ВК>. На джойстике вторую кнопку ими- тирует 'двойной клик'. Кроме того, если функция возвращает коды 1 или 2 (при нажатии кнопки), тогда в R6,R7 содержится позиция ГРК на экране. Причем не в графических, а в симв.координатах (0-59,0-24) ! Курсор мыши перемещается и выводится сам и программисту не требуется никаких усилий на это. Но еще более удобны функции CLICK1. Они в цикле вызывают MOVGRK (отчего GRI перемещает на экране ГРК), но выходят из ф-ции только получив нажатие кнопок, а также допо- лнительно контроллируют клав.АР2. Т.е весь граф.интерфейс реализован в одном операторе БЭЙСИКА USR. Функция PDMENU обслуживает PULL DOWN меню. Допустимо иметь заблокированные функции и шаг через строку. Для этого задается таблицей список заблокир.строк. Эти функции предельно удобны для организации MAC-инте- рфейса. Команды PUT/GET позволяют считать и записать прямоугольн.кусок экрана OPEN/CLOSE тоже для обмена с экраном 'прямоугольниками',но осуществляют обмен не с программой, а с БУФЕРОМ. Кроме того команды OPEN и CLOSE работают в коо- рдинатах текстовых позиций, а PUT/GET работают с фрагментами экрана не 'при- вязанным' к символьным позициям текстового экрана. SPRITE перегружает коды спрайта из банки 2 в буфер. При цветных спрайтах расход обьема БУФЕРА такой- же, как и при монохромных. Наличие в спрайтовых командах 'маски' вывода поз- воляет накладывать спрайт на 'задний фон'. BACKGET сохраняет фрагмент экрана в пределах которого при удалении спрайта экран восстанавливается правильно. Очередная команда BACKGET удаляет из буфера BACKGET старое содержимое. Буфер BACKGET располагается в банке 3, поэтому электронный диск сокращается. PEN- команды позволяют перемещать графич.перо без рисования и с рисованием в одной или 2-х плоскостях (mono/4C). Eсли не достаточно памяти, то программе возвра- щается ненулевой ERRCODE. Под ГРАФИЧ.БУФЕР пригодно только ОЗУ в банках 0 и 1 поэтому расширение ОЗУ не позволяет увеличить размер граф.буфера и увеличива- ет только размер внутреннего эл.диска ORION-DOS. Размер графич.буфера можно увеличить только используя версию XBIOS для 'теневого ПЗУ' (апп.доработка !). В ROM-BIOS для клав-туры РК86 встроена программа обслуживания пульта ROM-BIOS (не путать с пультом ДОС). В режим пульта можно выйти из любой программы для целей отладки или устранения программной аварии. Пульт удобен для управления ресурсами ЭВМ из любой программы, установки даты, управления режимом принтера и фоновой печати, вывода экрана на принтер, изменения яч.ОЗУ... Пультовый ре- жим ДОС обеспечивает то-же самое, если при загрузке ДОС инсталлирован специа- льный сист.оверлей ДОС. ROM-BIOS 'построен' так, что позволяет грузить расши- рения при работе в ORION-DOS (при этом внешняя функция заменяет встроенную). режим отображения граф.курсора Г