|
FCOS |
В этой части содержатся следующие параграфы книги: константы FCOS, имена селекторов, атрибуты дескрипторов, синонимы функций HSV.
1.4
. Константы FCOS.
1.4.1.
Общая информация.Константы FCOS находятся в файлах
"LISTFCOS\fcoscusr.inc" и "LISTFCOS\fcoscsys.inc", которые содержат, соответственно, общеиспользуемые и системные константы. Основная цель использования констант — удобство внесения исправлений. Если сменится число, описываемое константой, не будет необходимости исправлять исходные тексты FCOS и приложений. Всё, что нужно — исправить константу и перекомпилировать программы.Кроме того, константы повышают "читабельность" листингов программ, т.к. безликие числа при замене на константы обретают осмысленные имена.
Константы
FCOS разделены на несколько групп, каждая из которых будет подробно рассмотрена. Константы группируются (для удобства поиска и рассмотрения) по назначению, а не в алфавитном порядке.
1.4.2.
Имена селекторов.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам. Имена селекторов располагаются в файле "LISTFCOS\fcoscsys.inc", который приложения обычно не подключают, хотя драйверам физических устройств селекторы ядра FCOS могут понадобиться.
SEGfcGDT
EQU 008hСелектор указывает на сегмент глобальных дескрипторов. Используется для доступа к таблице глобальных дескрипторов (в том числе и самим процессором).
SEGmemAL
EQU 010h Селектор описывает всю адресуемую память (0..4294967295 байты), в том числе физически присутствующую, виртуальную и отсутствующую вообще. Используется для прямого вмешательства ядра FCOS в работу приложений (например, при отладке) и других системных целей: операций с дескрипторами, обслуживание верхней памяти и страничной адресации.SEGfcDAT EQU 018h Селектор описывает сегмент общих данных FCOS. Это один из самых важных сегментов FCOS. Там хранятся системные таблицы ядра FCOS, сообщения об ошибках, глобальные переменные и т.п.SEGtbDAT EQU 020h Селектор указывает на текстовую область видеоадаптера. Используется для непосредственного вывода текстовых сообщений при авариях FCOS, т.е. тогда, когда невозможно дальнейшее функционирования графической подсистемы.SEGfcSTK EQU 028h Селектор указывает на сегмент стека ядра FCOS. На этом стеке начинает работать FCOS после перехода в Protected Mode.SEGfcCOD EQU 030h Селектор указывает на сегмент кодов ядра FCOS. Эти коды имеют наивысший уровень привилегий процессора и содержат важнейшие системные процедуры.SEG_i740 EQU 038h Селектор указывает на область памяти, где находится окно графического буфера видеоадаптера. Через это окно ведётся вывод графики непосредственно в память адаптера.SEGalCOD EQU 040h Селектор указывает на дескриптор, аналогичный "SEGfcCOD EQU 030h", но с признаком данных, а не кодов. Через этот селектор производится модификация кодов ядра FCOS.SEGfcTBR EQU 048h Селектор указывает на сегмент данных рабочего стола. В этом сегменте хранятся данные и таблицы рабочего стола и его подобъектов.SEGfcTSA EQU 050h Селектор указывает на сегмент данных о состоянии системных задач (TSS), в т.ч. задачи V86 и Менедженера Виртуальных Машин.SEGfcMSC EQU 058hСелектор указывает на сегмент данных мыши.
SEGfcWND EQU 060hСелектор указывает на
стек открытых окон.SEGfcKBD EQU 068h
Селектор указывает на сегмент данных клавиатуры
.SEG_Tv86 EQU 1E0h
Селектор указывает на сегмент состояния задачи (TSS) V86.SEG_Iv86 EQU 1E8h Селектор указывает на сегмент таблицы дескрипторов прерываний V86.SEG_Dv86 EQU 1F0h Селектор указывает на "плавающий" сегмент для наложения "заплат" Монитором V86.SEG_Sv86 EQU 1F8hСелектор указывает на сегмент стека
V86.SEG_TSS0 EQU 200h Селектор указывает на сегмент состояния задачи (TSS) задачи №0.SEG_LDT0 EQU 208h Селектор указывает на сегмент с таблицей локальных дескрипторов (LDT) задачи №0.1.4.3.
Атрибуты дескрипторов. Дескрипторы сегментов и системные дескрипторы различаются битовыми полями атрибутов. Для наиболее употребительных атрибутов дескрипторов определены синонимы–константы.Атрибуты дескрипторов используются только ядром FCOS при инициализации дескрипторов (запуск новой задачи, операции с верхней памятью, работа V86).
Некоторы константы закомментированы, т.е. их нельзя использовать, но они могут появиться в следующих версиях FCOS.
dscrNORM EQU 00000000b
Старшие атрибуты любого сегмента (по умолчанию).
dscrCODE
EQU 10011010bСегмент кода с разрешением чтения.
dscrDATA
EQU 10010010bОбычный сегмент данных.
dscrSTCK
EQU 10010010bСегмент стека (как данных). В дальнейшем планируется перейти на сегмент стека, расширяющийся сверху–вниз (т.е.
EQU 10010110b).dscrLDTR
EQU 10000010bДескриптор таблицы локальных дескрипторов.
dscrTSKo
EQU 10001001bСвободный сегмент состояния задач.
;dscrTSKc EQU 10001011b
Занятый сегмент состояния задач.
Не используется.;dscrCALL EQU 11101100b
Шлюз вызова
i386. Не используется.dscrINTR
EQU 10001110bШлюз прерывания
i386. При входе в отработчик прерывания запрещаются (IF=0, CLI).dscrINTR
EQU 10001111bШлюз ловушки
i386. При входе в отработчик флаг прерываний (IF) не изменяется.;dsc3CODE EQU 11111010b
Сегмент кода с разрешением чтения. Низший (=3) уровень привилегий. Не используется
.;dsc3DATA EQU 11110010b
Обычный сегмент данных. Низший (=3) уровень привилегий. Не используется
.;dsc3STCK EQU 11110010b
Сегмент стека (как данных). В дальнейшем планируется перейти на сегмент стека
EQU 11110110b. Низший (=3) уровень привилегий. Не используется.dsc3TSKo
EQU 11101001bСвободный сегмент состояния задач. Низший (=3) уровень привилегий. Используется для задачи
V86.;dsc3INTR EQU 11101110b
Шлюз прерывания
i386. Низший (=3) уровень привилегий. Не используется.
1.4.4.
Синонимы функций HSV.Прерывания, доступные приложениям имеют синонимы–константы. Никогда не пользуйтесь непосредственно числами при вызове прерываний, т.к. в следующих версиях FCOS возможны изменения значений констант. Имена прерываний имеют префикс "INTfc".
Кроме имён прерываний в данной главе описываются номера процедур HSV. Имена
процедур имеют префикс "i". Для вызова нужной процедуры HSV из приложения необходимо занести в регистр AX имя процедуры (с префиксом "i"), а затем вызвать прерывание (с префиксом "INTfc").Некоторые константы закомментированы, т.к. пока не реализованны (или не отлажены) процедуры, для которых зарезервированы места в HSV. В следующих версиях FCOS эти процедуры станут работоспособны, а константы будут доступны приложениям.
INTfcTSV EQU 030h
Task Super Visor. Это прерывание переключает задачи, вызывая процедуру "TaskSwit". Для работы вытесняющей многозадачности после каждого прерывания таймера производится переключение задач. Если приложение находится в состоянии ожидания, рекомендуется добровольный вызов INTfcTSV, т.к. это ускорит работу всей системы.
INTfcDBL EQU 031h
DeBugger Listing. Прерывание вызывает встроенный во FCOS системный отладчик (см. модуль "\LISTFCOS\fcosdbgr.inc"). После работы отладчика управление передаётся в точку вызова и приложение продолжает работать.
INTfcSTA EQU 002h
Stop TAsk. Прерывание приостанавливает работу приложения (его текущий приоритет становится равным нулю). Вызов этого прерывания необходим для обслуживания интерфейса GUI. Если приложение работает (текущий приоритет не нулевой), процедура Control задачи №0 при обнаружении элементов пользовательского интерфейса только меняет указатели мыши. После вызова INTfсSTA становится возможным вызов отработчиков (системных и пользовательских), таких как: перетаскивание и растяжение окна, выбор пиктограммы, попадание в активную область и др.
INTfcBas EQU 040h
Базовые процедуры HSV. Следующий список констант — номера базовых процедур FCOS: это инициализации и начальные загрузчики Protected Mode, а так же системные процедуры, не вошедшие ни в какое другое прерывание HSV.
iInitFCOS EQU 00000h
Начальная инициализация FCOS. Используется вне HSV загрузчиком системы ещё в Real Mode. Вызов во время работы FCOS запрещён. Данная процедура помещена в HSV для единообразия списка процедур.
iDeInFCOS EQU 00001h
Деинициализация FCOS. Процедура производит следующие действия: Завершает работу всех приложений. Сохраняет изменения системы. Производит переход в Real Mode. Возвращается в MS-DOS с сообщением о нормальном завершении работы FCOS. Сообщение сопровождается табличкой с координатами Fwcs Corporation и отображается в текстовом режиме 40x25. После нажатия любой клавиши происходит переключение на текстовый режим 80x25 и появляется приглашение DOS.
iQuitErr EQU 00002h
Деинициализация FCOS с выдачей сообщения об ошибке. Выполняет те же действия, что и DeInFCOS, но после выхода в MS-DOS выдаёт сообщение об ошибке, номер которого (см. константы ErrXXXXX) передаётся в процедуру в регистре CL.
iSetTimFC EQU 00400h
Изменение счётчика "тиков" таймера FCOS. Каждое прерывание таймера (около 1/18 секунды) FCOS производит наращивание тридцатидвухбитного счётчика [TimerTik]. Данная процедура помещает в эту переменную содержимое регистра EBX.
iGetTimFC EQU 00401h
Чтение счётчика "тиков" таймера FCOS. Переменная [TimerTik] из сегмента глобальных данных FCOS (SEGfcDAT) возвращается в регистре EBX.
INTfcKrn EQU 041h
Обслуживание задач FCOS. В этом блоке HSV находятся процедуры, обслуживающие задачи (приложения или их части). С помощью этих процедур реализуется корректная работа FCOS и ресурсов системы, не допускающих одновременное пользование.
iLdRnTask EQU 00003h
Запуск задачи. Процедура загружает приложение (*.fca) FCOS, имя которого задаётся в регистрах DI:EDX. Верхняя память динамически выделяется всем сегментам приложения, указанным в заголовке файла, а так же таблицам TSS и LDT приложения. Данному приложению выделяется задача с заданным в заголовке приоритетом. После всех приготовлений эта задача начинает исполняться наряду с уже запущенными.
iTaskSwit EQU 00004h
Смена задачи. Делает то же, что и прерывание INTfcTSV.
iDostup EQU 00100h
Доступ к нереентантным объектам. FCOS — многозадачная система, но некоторые процедуры не могут быть вызваны, если они уже выполняются (по вызову другой задачи). Для сохранения целостности системы FCOS содержит флаги доступа к защищаемым компонентам. Процедура Dostup проверяет компонент с номером в регистре CL на занятость. В случае занятости производится переключение задач до освобождения компонента. После освобождения процедура возвращает управление вызвавшей её задаче.
iDostOut EQU 00101h
.
iDostup86 EQU 00102h
.
iIniV86Rn EQU 00103h
.
INTfcScr
EQU 042h ; Работа в графическом режиме..
iInitScrn
EQU 00000h ; Инициализация графического экрана..
iDeInScrn
EQU 00001h ; Инициализация текстового экрана..
iAdrPix EQU 00002h
.
iDrwGamma
EQU 00003h ; Рисует текущую цветовую палитру..
iNewScrPg EQU 00004h
.
iSetPix
EQU 00100h ; Устанавливает точку (BX,DX) цветом CH..
iSetLin
EQU 00101h ; Чертит линию (BX,DX)-(SI,DI) цветом CH..
iSetBox
EQU 00102h ; Закрашенный прямоуг. (BX,DX)-(SI,DI) цветом CH..
iSetRct
EQU 00103h ; Контур прямоуг-ка (BX,DX)-(SI,DI) цветом CH..
iSetCir
EQU 00104h ; Окружность (BX,DX),DI, цветом CH..
iWhoPix
EQU 00106h ; Определяет цвет точки : CH=WhoPix(BX,DX)..
iSetPixWn
EQU 00200h ; Устанавливает точку (BX,DX) цветом CH..
iSetLinWn
EQU 00201h ; Чертит линию (BX,DX)-(SI,DI) цветом CH..
iSetBoxWn
EQU 00202h ; Закрашенный прямоуг. (BX,DX)-(SI,DI) цветом CH..
iSetRctWn
EQU 00203h ; Контур прямоуг-ка (BX,DX)-(SI,DI) цветом CH..
iSetCirWn
EQU 00204h ; Окружность (BX,DX),DI, цветом CH..
iWhoPixWn
EQU 00206h ; Определяет цвет точки : CH=WhoPix(BX,DX)..
;iGetPix EQU 00300h
.
;iPutPix EQU 00301h
.
;iPprPix EQU 00302h
.
;iGetLin EQU 00303h
.
;iPutLin EQU 00304h
.
;iPprLin EQU 00305h
.
iGetBox EQU 00306h
.
iPutBox EQU 00307h
.
iPprBox EQU 00308h
.
iGetRct EQU 00309h
.
iPutRct EQU 0030Ah
.
;iPprRct EQU 0030Bh
.
;iGetCir EQU 0030Ch
.
;iPutCir EQU 0030Dh
.
;iPprCir EQU 0030Eh
.
iGetBoxWn EQU 00406h
.
iPutBoxWn EQU 00407h
.
INTfcMou EQU 043h ;
Работа с мышью..
iLd_Mouse EQU 00000h
.
iMVisor EQU 00002h
.
iSetCursor EQU 00003h
.
iSetMouse EQU 00100h
.
iResMouse EQU 00101h
.
iIf1Mouse EQU 00102h
.
iPU1Mouse EQU 00103h
.
iKillMous EQU 00200h
.
iDrawMous EQU 00201h
.
iBoxMouse EQU 00202h
.
iMouLf1Pr EQU 00300h
.
iMouRt1Pr EQU 00302h
.
iMouXYget EQU 00400h
.
iMouXYgWn EQU 00401h
.
INTfcDsk
EQU 044h ; Работа с диском..
iSaveFile EQU 00000h
.
iLoadFile EQU 00001h
.
iSaveScrn EQU 00003h
.
;iDelFile EQU 00002h
.
iOpenFilR EQU 00200h
.
iCreatFil EQU 00203h
.
iCloseFil EQU 00204h
.
i_LdSmlBl EQU 00300h
.
i_LdBigBl EQU 00301h
.
i_SvSmlBl EQU 00302h
.
i_SvBigBl EQU 00303h
.
INTfcMus
EQU 045h ; Функции работы с музыкой..
iInitMusc EQU 00000h
.
iDeInMusc EQU 00001h
.
iContMusc EQU 00002h
.
iRePlMusc EQU 00003h
.
iMusicVis EQU 00100h
.
iSayFones EQU 00101h
.
iWhtNoise
EQU 00200h ; Генерирует "Белый шум" продолжительностью CX..
INTfcMem
EQU 046h ; Управление памятью..
iInitMem
EQU 00000h ; Инициализация верхней памяти..
iDeInMem
EQU 00001h ; Закрытие доступа к верхней памяти..
iTestMem EQU 00002h ;
Тестирование верхней памяти..
iAlClMem
EQU 00003h ; Обнуление всей памяти..
iSizeMem
EQU 00004h ; Возвращает максимальный адрес физической памяти..
iFreeMem
EQU 00005h ; Возвращает размер свободной памяти в байтах..
iGetMemBl
EQU 00100h ; Выделение памяти. in: ECX байт; out: ES-дескр LDT..
iPutMemBl
EQU 00101h ; Возвращение памяти в кучу..
iReSzMemB
EQU 00102h ; Изменение размера памяти..
INTfcMat
EQU 047h ; Работа с математикой..
iInitMath
EQU 00000h ; Инициализация математического сопроцессора..
iDeInMath
EQU 00001h ; Деинициализация математического сопроцессора..
iVectEquv
EQU 00100h ; Векторное присваивание. BP:ECX = SI:EBX..
iVectMulV EQU 00101h
; Вект. произвед. BP:ECX = SI:EBX ^ DI:EDX..
iVectLeng
EQU 00102h ; Вычисление нормы вектора. BP:ECX = !(SI:EBX)..
iVectNorm
EQU 00103h ; Нормализация вектора. BP:ECX = Normal(SI:EBX)..
iVectMulN
EQU 00104h ; Вектор на число. BP:ECX = SI:EBX*число(DI:EDX)..
iVectMulS
EQU 00105h ; Скаляр. произв. число(BP:ECX) = SI:EBX & DI:EDX..
iVectMulK
EQU 00106h ; Покомпонентное произв. BP:ECX = SI:EBX * DI:EDX..
iVectSumK
EQU 00107h ; Покомпонентное сложение. BP:ECX=SI:EBX + DI:EDX..
iVectClip
EQU 00108h ; Ограничивает до [0,1]. BP:ECX = Clip(SI:EBX)..
iVectCmKl EQU 00109h ; CX=(boolean)(SI:EBX < DI:EDX).
.
iRandom16
EQU 0010Ah ; Генерирует псевдослучайное число. BX=RAND(BX)..
iModRnd16
EQU 0010Bh ; Огранич. случ. число. CX=(RAND(BX)[=BX])%(CX)..
INTfcWnd
EQU 048h ; Работа с окнами..
iWindow
EQU 00000h ; Открытие окна..
iWindKill EQU 00001h
.
iWindCalc EQU 00100h
.
iWindDraw EQU 00101h
.
iWindPict EQU 00102h
.
iWaitQuit EQU 00200h
.
iWaitQiNK EQU 00201h
.
iGetAdrCA EQU 00202h
.
iGtAcSize EQU 00203h
.
iSetQCtrl EQU 00204h
.
INTfcPct
EQU 049h ; Работа с пиктограммами..
iDrawPict EQU 00000h
.
iDrawOneP EQU 00001h
.
iSetAct EQU 00100h
.
iTBR_Pict EQU 00200h
.
i_DrShPic EQU 00300h
.
INTfcTxt
EQU 04Ah ; Работа с текстом..
iTextChar EQU 00000h
.
iTextStr
EQU 00001h ; Печать строки (ES:BP) в FCOS - окне..
iTextHome EQU 00100h
.
iTextLine EQU 00101h
.
iTextClr EQU 00102h
.
iTextScrl EQU 00103h
.
iTextRang EQU 00104h
.
iDrw1Symb EQU 00200h
.
iAddLnTxt EQU 00201h
.
inHexPr04 EQU 00300h
.
inHexPr08 EQU 00301h
.
inHexPr16 EQU 00302h
.
iPrn5Symb EQU 00400h
.
INTfcKey
EQU 04Bh ; Работа с клавиатурой..
iInputStr EQU 00000h
.
iKeyReadP
EQU 00100h ; Чтение кода символа (в AL) (с ожиданием)..
iKeyPress EQU 00101h
.
iKeyToggl EQU 00102h
.
iKeyModif EQU 00103h
.
iKeyReadN EQU 00104h
.
iKeyPutNw EQU 00105h
.
iKeyClear EQU 00106h
.
1.4.5.
Имена селекторов.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.; Общесистемные константы.iDOS EQU 021h ; Вызов функции MS-DOS.NoSwTask EQU 0 ; Запрет на переключение задач.GoSwTask EQU 1 ; Разрешение переключения задач.PB EQU BYTE PTR ; Аргумент - байт.
PW EQU W
ORD PTR ; Аргумент - слово.PD EQU DWORD PTR ; Аргумент - двойное слово.
PF EQU FWORD PTR ; Аргумент - полуторное слово (DD+DW).
NULL EQU 0 ; Ноль - адрес.
SC_ICW EQU 15 ; Количество интерфейсных пиктограмм.
SC_CUR EQU 20 ; Количество указателей мыши.
SC_TBR EQU 30 ; Количество пиктограмм рабочего стола.
XLW EQU 16 ; Ширина и высота
YLW EQU 16 ; интерфейсных пиктограмм.
XLC EQU 24 ; Ширина и высота
YLC EQU 24 ; указателей мыши.
SZW EQU 260 ; Размер графики интерфейсной пиктограммы.
SZC EQU 580 ; Размер графики указателя мыши в байтах.
SZ
S EQU 1028 ; Размер графики средней пиктограммы.SZB EQU 2308 ; Размер графики пиктограммы рабочего стола.
STK_SIZE EQU 6144 ; Размер стека FCOS MAIN 386 (TASK0).
STK86SZ0 EQU 2048 ; Размер стека V86 LEVEL0.
STK86SZ3 EQU 2048 ; Размер стека V86 LEVEL3.
TerminLN EQU 3072 ; Размер памяти под шрифт "Terminal".
DecoraLN EQU 192 ; Размер памяти под шрифт "Decorat".
KEYMAXSC EQU 64 ; Количество символов в буфере клавиатуры.
SC_ANG EQU 1280 ; Количество данных в таблице.
OFFSIN EQU 256*4 ; Байтовый сдвиг таблицы для SIN.
1.4.6.
Имена с.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.; Статус пиктограммы.ICO_NRM EQU 0 ; Нормальная средняя пиктограмма.ICO_ACT EQU 1 ; Активная средняя пиктограмма.ICO_KIL EQU 2 ; Заторможенная средняя пиктограмма.ICO_SMN EQU 3 ; Нормальная маленькая пиктограмма.
ICO_SMK
EQU 4 ; Заторможенная маленькая пиктогр.ICO_BIG EQU 5 ; Пиктограмма для TaskBar.
1.4.7.
Имена селекторов.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.; Коды ошибок для QuitErr.???NO_DEL EQU 8 ; Не могу удалить файл.1.4.8. Имена селекторов. Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.; Названия указателей мыши.CURarrow EQU 0 ; Указатель (пустой) области.CURkrest EQU 1 ; Ввод графических данных.CURchasi EQU 2 ; Ожидание окончания расчётов.CURnelsa EQU 3 ; Запретная область или действие.
CURpalez EQU 4 ; Пиктограмма под мышью.
CURdisk5 EQU 5 ; Ожидание окончания операции с диском.
CURa_all EQU 6 ; Перемещение окна.
CURa_up EQU 7 ; Растяжение вверх.
CURa_dn EQU 8 ; Растяжение вниз.
CURa_lf EQU 9 ; Растяжение влево.
CURa_rt EQU 10
; Растяжение вправо.CURa_ul EQU 11 ; Растяжение вверх-влево.
CURa_dr EQU 12 ; Растяжение вниз-вправо.
CURa_ur EQU 13 ; Растяжение вверх-вправо.
CURa_dl EQU 14 ; Растяжение вниз-влево.
CURa_upS EQU 15 ; Скроллинг вверх.
CURa_dnS EQU 16 ; Скроллинг вниз.
CURa_lfS EQU 17 ; Скроллинг влево.
CURa_rtS EQU 18 ; Скроллинг вправо.
CURtext EQU 19
; Ввод текстовых данных.
1.4.9.
Имена селекторов.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.; Синонимы цветов.BLACK EQU 0 ; Черный.BLUE EQU 1 ; Синий.GREEN EQU 2 ; Зеленый.CYAN EQU 3 ; Море.RED EQU 4 ; Красный.MAGENTA EQU 5 ; Фиолетовый.BROWN EQU 6 ; Коричневый.
L_GRAY EQU 7 ; Светлосерый.
DARKGRAY EQU 8 ; Темносерый.
L_BLUE EQU 9 ; Голубой.
L_GREEN EQU 10 ; Салатовый.
L_CYAN EQU 11 ; Небо.
L_RED EQU 12 ; Розовый.
L_MAGENTA EQU 13 ; Сиреневый.
YELLOW EQU 14 ; Желтый.
WHIT
E EQU 15 ; Белый.GRAY_0 EQU 16 ; Серый - самый тёмный.
GRAY_1 EQU 17 ; Серый - очень тёмный.
GRAY_2 EQU 18 ; Серый - тёмный.
GRAY_3 EQU 19 ; Серый - чуть светлее.
GRAY_4
EQU 20 ; Серый - ещё светлее.GRAY_5 EQU 21 ; Серый - -- .
GRAY_6 EQU 22 ; Серый - -- .
GRAY_7 EQU 23 ; Серый - -- .
GRAY_8 EQU 24 ; Серый - -- .
GRAY_9 EQU 25
; Серый - -- .GRAY_A EQU 26 ; Серый - -- .
GRAY_B EQU 27 ; Серый - -- .
GRAY_C EQU 28 ; Серый - -- .
GRAY_D EQU 29 ; Серый - светлый .
GRAY_E EQU 30 ; Серый - очень светлый .
GRAY_F EQU 31 ; Серый - самый светлый .
1.4.10.
Имена селекторов.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.
; Константы для видео-адаптера.VidMod EQU 00103h ; Видео-режим 800x600x256. {101,103,105}.ScanLine EQU 1024 ; Длина логической скан-линии 1024 pix.MAXSCRNX EQU 799 ; Последняя доступная координатаMAXSCRNY EQU 599 ; видимой части экрана.ENDBAR_X EQU 553 ; Конец области пиктограмм DL.
DOWNLINY
EQU 578 ; Y-координата начала DL.TIMECRDX EQU 786 ; Координаты младшего
TIMECRDY EQU 583 ; разряда секунд.
COLMENXB EQU 216 ; Оконные координаты цветовой гаммы
COLMENYB EQU 0 ; для
SetUp Window \color.
1.4.11.
Имена селекторов.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.
; Шаблоны для 'System Window'.SC_DLTp EQU 10 ; Количество пиктограмм DownLineTaskbar.SC_DLTw EQU 3 ; Количество окон DownLineTaskbar.W_FCOS EQU 0 ; Номер окна Sys.W_TASK EQU 1 ; Номер окна TASK.W_MEMO EQU 2 ; Номер окна MEMO.S_FCOS EQU 0 ; Пиктограммы окна 'System Window'.
S_TASK EQU 3
; Пиктограммы окна 'Task Manager'.S_MEMO EQU 9 ; Пиктограммы окна 'Memory Manager'.
P_TASK EQU 0 ; Номер пиктограммы TASK.
P_MEMO EQU 1 ; Номер пиктограммы MEMO.
P_QUIT EQU 2 ; Номер пиктограммы QUIT.
P_TINFO EQU 0 ; Номер пиктограммы INFO.
P_TMEMO EQU 1 ; Номер пиктограммы MEMO.
P_TKILL EQU 2 ; Номер пиктограммы KILL.
P_TREST EQU 3 ; Номер пиктограммы REST.
P_TDBUG
EQU 4 ; Номер пиктограммы DBUG.P_TQUIT EQU 5 ; Номер пиктограммы QUIT.
P_MQUIT EQU 0 ; Номер пиктограммы QUIT.
1.4.12.
Имена селекторов.Важнейшие селекторы глобальных дескрипторов имеют имена. В основном, этими именами пользуется ядро FCOS, а не приложения, т.к. глобальные дескрипторы имеют наивысший уровень привилегий процессора. Приложения могут лишь обмениваться самими селекторами, не осуществляя доступ к сегментам.
; Шаблоны для 'SetUp
Window'.SC_SUWp EQU 13 ; Количество пиктограмм SetUp Window.SC_SUWw EQU 4 ; Количество окон SetUp Window.WsSUWN EQU 0 ; Номер окна SetUp Window \main.WsCOLR EQU 1 ; Номер окна SetUp Window \color.WsFONT EQU 2 ; Номер окна SetUp Window \font.
WsINFO EQU 3 ; Номер окна SetUp Window \info.
SsSUWN EQU 0 ; Пиктограммы окна SetUp Window \main.
SsCOLR EQU 7 ; Пиктограммы окна SetUp Window \color.
SsFONT EQU 10 ; Пиктограммы окна SetUp Window \font.
;SsINFO EQU 10 ; Пиктограммы окна SetUp Window \info.
P_SCOLR EQU 0 ; Номер пиктограммы COLOR.
P_SFONT EQU 1
; Номер пиктограммы FONT.P_SINFO EQU 2 ; Номер пиктограммы INFO.
P_SQUIT EQU 6 ; Номер пиктограммы INFO.