Система поддержки alertов Использует драйвер MOUSE и библиотеку Quick_Sprites. Включает в себя ассемблерную процедуру alert и форт-слово немедленного исполнения ALERT, компилирующее вызов этой процедуры. Метке alert соответствует адрес HERE на момент начала загрузки. В вызывающей программе за оным вызовом должно следовать описание alertа: CALL alert \*** Заголовок: описание расположения, атрибутов и курсора ***\ DEFB FLAG \ бит 7 -- не восстанавливать перекрытую часть экрана бит 6 -- курсор 16*16 \ DEFB INK,PAPER,HEIGHT,WIDTH,TOP,LEFT \параметры для PANEL\ DEFW A_PIC \адрес спрайта курсора\ . . . \*** Описание очередного объекта ***\ DEFB TYPEi \ бит 7 -- 1 бит 6 -- выделить как DEFAULT бит 5 -- selectable бит 1 \\ >>== 00: 8*8 01: 16*16 10: строка 11: кнопка бит 0 // \ DEFB TOPi,LEFTi \относительные (в alertе) к-ты в атр.\ DEFB ATTRi \ цветовой атрибут объекта \ DEFW ADDRi \ для спрайтов -- адрес картинки; для текста -- адрес строки со счетчиком \ . . . \*** Терминатор ***\ DEFB 0 ; Результатом работы является номер выбранного объекта (не более 255), положенный на стек данных. Объекты нумеруются с единицы. Нуль является признаком отсутствия selectable объектов. Побочные эффекты и прочие результаты: 1) Сохранение и восстановление переменных X и Y. 2) Непредсказуемое состояние бита 3,(IX+3) -- флага запрета изменения атрибутов. 3) Передача управления на адрес после терминатора. После компиляции таблица меток ассемблера состоит из следующих меток: PUT_HL, PRINT, PUT_AA, GET_AA, P_DEHL, GET_HL -- рестарты форта; alert -- основная процедура; _X0, _DX, _Y0, _DY -- адреса байтовых параметров для corcor -- очень удобной процедуры коррекции экранных координат в переменных X и Y: они приводятся в прямоугольник с к-тами нижнего левого угла _X0 и _Y0 и размерами _DX на _DY; y_pix -- процедура перевода номера строки в экранную координату (исходный параметр на рег. A, р-т там же, ничего не spoils); sc -- процедура коррекции приращения координаты в зависимости от чувствительности драйвера мыши (параметр на стеке, р-т в рег. A, spoils регистры E и оба аккумулятора); t_box -- процедура проверки вхождения в прямоугольник (регистры: BC--к-ты левого верхнего угла, HL--правого нижнего, DE-точка). В случае классовой или иной ненависти к слову ALERT его можно уничтожить по FORGET, не причинив при этом ни малейшего вреда процедуре alert. Хачатуров Василий, тел. 210-95-78 WED 03/02/93 03:12