4. Работа с графической подсистемой (вывод на экран)
Программа может создавать и использовать несколько окон для отображения в них текста или спрайтов.
Перед началом работы с графической подсистемой программа должна выполнить вызов определенной функции ядра системы,
в процессе выполнения которой ядро даст запрос графической подсистеме и она зарегистирирует эту программу в списке программ,сообщения от которых ею (графсистемой)обрабатывают ся.
Функции.
newin - создать новое окно (in: NN- адрес заголовка окна(в нём координаты, размеры, цвет)out: ID - нового окна)
viewin ID- показать на экране окно с номером ID
minwin ID - убрать с экрана окно с номером ID
killwin ID - уничтожить окно с номером
clswin ID - очистить окно с номером ID
txtwin ID - напечать текст в окне по текущим координатам
koorwin ID - координаты печати в окне
printwin ID - напечатать заголовок окна
sprwin ID - напечатать спрайт в окне по указанным координатам
attrdwin ID - изменить различные аттрибуты окна (размеры, координаты, цвет окна и заголовка)
Также есть возможность захватывать устройство типа основной экран и дополнительный экран в монопольное использование программой,в этом случае программа может напрямую работать с байтами на экранах
Функции:
getscr - занять основной экран
getscr2 - занять дополнительный экран
freescr - освободить
freescr2 - освободить
pagescr2 - Отобразить в адресное пространство в адрес #C000 страницу с экраном 2
pagescr - Отобразить в адресное пространство в адрес #C000 страницу с экраном 1
onscr,onscr2 - сделать видимым экран 1 или экран 2 (после вызова этой функции переключение экранов будет выполнено
после прихода прерывания).
Если с экраном работает какая-нибудь программа, то другой программе будет отказано в захвате экрана при вызове её функции getscr(getscr2)
Вышеуказанные функции являются сообщениями от программы для графической подсистемы, а сама графическая подсистема посылает программе сообщения в том случае если на окно произодиться воздействие устройством управления (клавиатурой и мышью,джойстиком) - в виде -координаты воздействия от левого верхнего угла окна в знакоместах, тип воздействия (левая, правая, средняя кнопка мыши или клавиша (в этом случае дополнительно передается код клавиши) и способ (нажата или отжата)).
Программа периодически просматривает почтовый ящик на предмет сообщений от графической подсистемы и САМА реагирует на них - т.е. сама определяет куда попало нажатие внутри окна - на какие пункты меню, кнопки или иконки и выполняет какое либо действие - например нажатие на правом верхнем углу окна может трактоваться программой как команда от пользователя - завершить работу программы (при условии, что программа вывела туда крестик),а нажатие на правый нижний угол окна программы она воспримет как команды к изменению размеров окна и т.д.
Такое упрощение процесса работы графсистемы необходимо, чтобы минимизировать затраты памяти и процессорного времени на обработку команд от устройств управления.
5. Работа с периферийными устройствами
Под периферийными устройствами понимается музыкальные устройства типа муз.процессора,TS,TSFM,GS а также принтер,модем.
Для них необходимы функции, аналогичные функциям работы с экраном, т.е. программа дает вызов на захват устройства (getay) и в случае согласия системы работает с ним, а по завершении работы освобождает устройство (freeay).
6.Заключение.
Данная система не позволяет выполнение программ,которым единолично требуются все ресурсы компьютера (например "тяжелым" играм с динамической графикой или программам для обслуживания дисков(форматирование, восстановление данных)),но она на
это и не претендует, так как для таких программ и игр необходима другая система (проект SHMATRIX - система с переключением задач),разработка программ под SHMATRIX почти аналогична разработке под систему TR-DOS, за исключением того, что в программу добавляются драйвера не только дисководов, но и драйвера других дисковых накопителей(hdd,cd/dvd/sd/ram) и сама программа оформляется в виде кодового блокас набором дополнительных файлов,который можно запускать с любых дисковых накопителей.
///////////////////////////////////////////
ОЧЕНЬ интересует мнение КОДЕРОВ с точки зрения удобства разработки программ для системы MATRIX.




Ответить с цитированием