                  Система поддержки 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
