Расширитель ROM-Bios для Ориона-128

Платы Орион-128 и наборы микросхем, куплю микросхемы z80       Как купить платы на ПК Орион-128

 

Расширитель ROM-Bios для Ориона-128

К сожалению, базовый 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 - адрес. Управление: <LEFT>, <DEL> и <ВК>
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 (при этом внешняя функция заменяет встроенную).

EXTENDED ROM-BIOS в ROM-диске ОРИОНА-128

 

Купить платы, наборы микросхем на Орион-128, Орион ПРО, Орион Восточный Экспресс 512, Куплю z80а 80аММЕ к1818вг93 Au в позолоте, куплю микросхемы, микросхемы серии к1533, кр1533, кр1531

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу