(*#######################################################################
                             M A G I C A L E R T S
  #######################################################################
  V2.01 13.12.90  Jens Pirnay           Korrektur von doAlert
  V2.0  17.10.90  Peter Hellinger       Anpassung an neues MagicSys
  V1.0  29.07.90  Peter Hellinger       TDI-Modula-2
  #######################################################################*)

IMPLEMENTATION MODULE mtAlerts;

(*------------------------------*)
(*       COMPILERSWITCHES       *)
(*------------------------------*)
(*  TDI-Version:   DEAKTIVIERT  *)
(*------------------------------*)
(* V-  Overflow-Checks          *)
(* R-  Range-Checks             *)
(* S-  Stack-Check              *)
(* N-  NIL-Checks               *)
(* T-  TDI-Compiler vor 3.01    *)
(* Q+  Branch statt Jumps       *)
(*                              *)
(*------------------------------*)
(*  MM2-Version:     AKTIVIERT  *)
(*------------------------------*)
(*$R-   Range-Checks            *)
(*$S-   Stack-Check             *)
(*                              *)
(*------------------------------*)


FROM SYSTEM     IMPORT  ADDRESS, ADR;
FROM MagicAES   IMPORT  GBOX, GIMAGE, GIBOX, GBUTTON, GSTRING, SELECTABLE, 
                        DEFAULT, Exit, LASTOB, OUTLINED, OBJECT, GrafMkstate;
FROM MagicSys   IMPORT  Nil, Null,
                        Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
                        Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
                        LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL, sBITSET,
                        lWORD, lINTEGER, lCARDINAL, lBITSET,
                        CastToChar, CastToByte, CastToByteset, CastToInt,
                        CastToCard, CastToBitset, CastToWord, CastToLInt,
                        CastToLCard, CastToLBitset, CastToLWord, CastToAddr;
FROM mtDials    IMPORT  DIALOG, NewDial, CSCREEN, CMOUSE, CPOS, DialCenter, 
                        DSTART, DFINISH, DialForm, DialDraw, DialDo;
FROM MagicStrings  IMPORT  Assign, Length;
IMPORT  MagicAES;


CONST   cMax =          39;

CONST   Box =           0;
        Mover =         1;
        
CONST   Note =          0;
        Wait =          1;
        Stop =          2;
        User =          3;

TYPE    tString =       ARRAY [0..cMax] OF CHAR;
        tImage =        ARRAY [0..31] OF lCARDINAL;

VAR     Tree:           ARRAY [0..11] OF OBJECT;
        Image:          ARRAY [Note..User] OF tImage;
        AlertText:      ARRAY [0..7] OF tString;
        Icon:           MagicAES.BITBLK;
        Dialog:         DIALOG;
        ChWidth:        sINTEGER;
        ChHeight:       sINTEGER;
        IconColor:      sINTEGER;


PROCEDURE PrepareAlert;
VAR i: sINTEGER;
BEGIN
 MagicAES.GrafHandle (i, ChWidth, ChHeight, i, i);
 Tree[Box].obNext:= -1;
 Tree[Box].obHead:= 1;
 Tree[Box].obTail:= 0;
 Tree[Box].obType:= GBOX;
 Tree[Box].obFlags:= {};
 Tree[Box].obState:= {OUTLINED};
 Tree[Box].Box.char:= 0C;
 Tree[Box].Box.frame:= 2C;
 Tree[Box].Box.flags:= {Bit15, Bit11};
 Tree[Box].obX:= 0;
 Tree[Box].obY:= 0;
 Tree[Box].obWidth:= 16;
 Tree[Box].obHeight:= 0;
 
 Tree[Mover].obNext:= -1;
 Tree[Mover].obHead:= -1;
 Tree[Mover].obTail:= -1;
 Tree[Mover].obType:= 1119H;
 Tree[Mover].obFlags:= {};
 Tree[Mover].obState:= {OUTLINED};
 Tree[Mover].Box.char:= 0C;
 Tree[Mover].Box.frame:= 1C;
 Tree[Mover].Box.flags:= {Bit15, Bit11};
 Tree[Mover].obX:= 0;
 Tree[Mover].obY:= 0;
 Tree[Mover].obWidth:= 16;
 Tree[Mover].obHeight:= ChHeight;
 MagicAES.ObjcAdd (ADR(Tree), Box, Mover);
END PrepareAlert;


PROCEDURE doAlert (xp, yp, mode, def: sINTEGER; VAR str: ARRAY OF CHAR): sINTEGER;
VAR i, j, h, c: sINTEGER;
    text, butt: sINTEGER;
    ioff, off:  sINTEGER;
    w, hi, objc:  sINTEGER;
    icon: BOOLEAN;
    b: sBITSET;
BEGIN
 PrepareAlert;
 FOR i:= 0 TO 7 DO  AlertText[i, 0]:= 0C;  END;
 i:= 0;  h:= Length (str);  objc:= 2;  icon:= TRUE;  ioff:= ChWidth * 4;
 IF (i >= h) OR (str[0] # '[') THEN  RETURN -1;  END;
 CASE str[1] OF
  '1': Icon.biData:= ADR (Image[Note]);|
  '2': Icon.biData:= ADR (Image[Wait]);|
  '3': Icon.biData:= ADR (Image[Stop]);|
  '4': Icon.biData:= ADR (Image[User]);|
  ELSE icon:= FALSE;
 END;
 IF icon THEN
  ioff:= (ChWidth * 2) + 32;
  Icon.biWb:= 4; 
  Icon.biHl:= 32;
  Icon.biX:= 0;
  Icon.biY:= 0;
  Icon.biColor:= IconColor; 
  Tree[objc].obNext:= -1;
  Tree[objc].obHead:= -1;
  Tree[objc].obTail:= -1;
  Tree[objc].obType:= GIMAGE;
  Tree[objc].obFlags:= {};
  Tree[objc].obState:= {};
  Tree[objc].ImagePtr:= ADR (Icon);
  Tree[objc].obX:= ChWidth;
  Tree[objc].obY:= ChHeight;
  Tree[objc].obWidth:= 32;
  Tree[objc].obHeight:= 32;
  MagicAES.ObjcAdd (ADR(Tree), Box, objc);
  INC (objc);
 END;
 i:= 2;
 WHILE (str[i] # '[')  DO
  IF i > h THEN  RETURN -1;  END;  INC (i);
 END;
 (* Textzeilen auslesen *)
 text:= 0;  c:= 0;
 LOOP
  j:= 0;  INC (i);
  IF i > h THEN  RETURN -1;  END;
  WHILE (str[i] # '|') AND (str[i] # ']') AND (i <= h) AND (j < cMax) DO
   AlertText[text, j]:= str[i];  INC (i);  INC (j);
  END;
  AlertText [text, j]:= 0C;
  Tree[objc].obNext:= -1;
  Tree[objc].obHead:= -1;
  Tree[objc].obTail:= -1;
  Tree[objc].obType:= GSTRING;
  Tree[objc].obFlags:= {};
  Tree[objc].obState:= {};
  Tree[objc].StringPtr:= ADR (AlertText[text]);
  Tree[objc].obX:= ioff;
  Tree[objc].obY:= ChHeight + (text * ChHeight);
  Tree[objc].obWidth:= ChWidth * j;
  Tree[objc].obHeight:= ChHeight;
  MagicAES.ObjcAdd (ADR(Tree), Box, objc);
  IF Tree[Box].obWidth <= Tree[objc].obWidth THEN
   Tree[Box].obWidth:= ioff + Tree[objc].obWidth + 32;
  END;
  INC (objc);
  INC (text);
  IF (str[i] = ']') OR (text > 4) THEN  EXIT;  END;
 END;
 c:= objc - 1; 
 WHILE (str[i] # '[')  DO
  IF i > h THEN  RETURN -1;  END;  INC (i);
 END;
 (* Buttons auslesen *)
 butt:= 0;  w:= ioff;
 LOOP
  AlertText[butt + text, 0]:= ' ';  j:= 1;  INC (i);
  IF i > h THEN  RETURN -1;  END;
  WHILE (str[i] # '|') AND (str[i] # ']') AND (i <= h) AND (j < cMax) DO
   AlertText[butt + text, j]:= str[i];  INC (i);  INC (j);
  END;
  AlertText [butt + text, j]:= ' ';  INC (j);
  AlertText [butt + text, j]:= 0C;
  Tree[objc].obNext:= -1;
  Tree[objc].obHead:= -1;
  Tree[objc].obTail:= -1;
  Tree[objc].obType:= 0121AH;
  IF butt = def - 1  THEN  Tree[objc].obFlags:= {DEFAULT, SELECTABLE, Exit};
                     ELSE  Tree[objc].obFlags:= {Exit, SELECTABLE};
  END;
  Tree[objc].obState:= {};
  Tree[objc].StringPtr:= ADR (AlertText[butt + text]);
  IF  (Tree[c].obY + (2 * ChHeight)) < (40 + ChHeight)  THEN
   Tree[objc].obY:= 40 + ChHeight;
  ELSE
   Tree[objc].obY:= Tree[c].obY + (2 * ChHeight);
  END;
  Tree[objc].obWidth:= ChWidth * (j - 1);
  (* Buttons auf gleiche Gre bringen *)
  IF butt > 0 THEN
   IF Tree[objc].obWidth < Tree[objc - 1].obWidth THEN
    Tree[objc].obWidth:= Tree[objc - 1].obWidth;
   ELSIF Tree[objc].obWidth > Tree[objc - 1].obWidth THEN
    Tree[objc - 1].obWidth:= Tree[objc].obWidth;
   END;
  END;
  Tree[objc].obHeight:= ChHeight;
  MagicAES.ObjcAdd (ADR(Tree), Box, objc);
  INC (w, Tree[objc].obWidth + (ChWidth * 2));
  INC (objc);
  INC (butt);
  IF (str[i] = ']') OR (butt > 2) THEN  EXIT;  END;
 END;
 IF Tree[Box].obWidth < w THEN
  Tree[Box].obWidth:= w + 48;
 END;
 Tree[Box].obHeight:= Tree[objc - 1].obY + (2 * ChHeight);
 Tree[Mover].obX:= Tree[Box].obWidth - Tree[Mover].obWidth;
 (* Buttons zentrieren *)
 DEC (objc);
 CASE butt OF
  1: Tree[objc].obX:= (Tree[Box].obWidth - Tree[objc].obWidth) DIV 2;
     |
  2: w:= Tree[objc - 1].obWidth + Tree[objc].obWidth;
     w:= ((Tree[Box].obWidth - w) DIV 2) - ChWidth;
     Tree[objc - 1].obX:= w;
     Tree[objc].obX:= w + (ChWidth * 2) + Tree[objc - 1].obWidth;
     |
  3: w:= Tree[objc - 2].obWidth + Tree[objc - 1].obWidth + Tree[objc].obWidth;
     w:= ((Tree[Box].obWidth - w) DIV 2) - (ChWidth * 2);
     Tree[objc - 2].obX:= w;
     Tree[objc - 1].obX:= w + (ChWidth * 2) + Tree[objc - 2].obWidth;
     Tree[objc].obX:= w + (ChWidth * 4) + Tree[objc - 1].obWidth + 
                                    Tree[objc - 2].obWidth;
     |
  ELSE ;
 END;
 CASE mode OF
  0:    DialCenter (Dialog, CSCREEN, 0, 0);|
  1:    DialCenter (Dialog, CMOUSE, xp, yp);|
  2:    DialCenter (Dialog, CPOS, xp, xp);|
  ELSE  ;
 END;
 DialForm (Dialog, DSTART);
 DialDraw (Dialog, 0, objc);
 i:= DialDo (Dialog, -1);
 DialForm (Dialog, DFINISH);
 b:= CastToBitset (i);
 EXCL (b, Bit15);
 i:= CastToInt (b);
(*
 Dies stand ursprnglich hier, ist aber falsch! (JP 13-12-90)
 RETURN i - (text + butt) + 1;
*)
 RETURN i - (text + butt);
END doAlert;


PROCEDURE Alert (def: sINTEGER; str: ARRAY OF CHAR): sINTEGER;
BEGIN
 RETURN doAlert (0, 0, 0, def, str);
END Alert;


PROCEDURE MouseAlert (def: sINTEGER; str: ARRAY OF CHAR): sINTEGER;
BEGIN
 RETURN doAlert (0, 0, 1, def, str);
END MouseAlert;


PROCEDURE PosAlert (x, y, def: sINTEGER; str: ARRAY OF CHAR): sINTEGER;
BEGIN
 RETURN doAlert (x, y, 2, def, str);
END PosAlert;


PROCEDURE UserIcon (icon: IconPtr);
VAR i: sINTEGER;
BEGIN
 FOR i:= 0 TO 31 DO  Image[User, i]:= icon^[i];  END;
END UserIcon;


PROCEDURE SetIconColor (color: sINTEGER);
BEGIN
 IconColor:= color;
END SetIconColor;


PROCEDURE SetIcon (icon: Icons);
VAR i: sINTEGER;
BEGIN
 CASE icon OF
  Atari:        Image[User,  0]:= 000000000H;  Image[User,  1]:= 0001BB000H; 
                Image[User,  2]:= 0001BB000H;  Image[User,  3]:= 0001BB000H;
                Image[User,  4]:= 0001BB000H;  Image[User,  5]:= 0001BB000H; 
                Image[User,  6]:= 0001BB000H;  Image[User,  7]:= 0003BB800H;
                Image[User,  8]:= 0003BB800H;  Image[User,  9]:= 0003BB800H; 
                Image[User, 10]:= 0003BB800H;  Image[User, 11]:= 0007BBC00H;
                Image[User, 12]:= 0007BBC00H;  Image[User, 13]:= 000FBBE00H; 
                Image[User, 14]:= 001F39F00H;  Image[User, 15]:= 003F39F80H;
                Image[User, 16]:= 00FE38FE0H;  Image[User, 17]:= 07FC387FCH; 
                Image[User, 18]:= 07F8383FCH;  Image[User, 19]:= 07E0380FCH;
                Image[User, 20]:= 07803803CH;  Image[User, 21]:= 000000000H; 
                Image[User, 22]:= 009F90F8CH;  Image[User, 23]:= 01DFB8FCCH;
                Image[User, 24]:= 01C638CECH;  Image[User, 25]:= 03666CCECH; 
                Image[User, 26]:= 03666CDCCH;  Image[User, 27]:= 07F6FED8CH;
                Image[User, 28]:= 07F6FEDCCH;  Image[User, 29]:= 0636C6CECH; 
                Image[User, 30]:= 0636C6C6CH;  Image[User, 31]:= 000000000H;
                |
  Book:         Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
                Image[User,  2]:= 01FFFFFE0H;  Image[User,  3]:= 020000030H;
                Image[User,  4]:= 020000028H;  Image[User,  5]:= 020000028H;
                Image[User,  6]:= 038000028H;  Image[User,  7]:= 064000028H;
                Image[User,  8]:= 060000028H;  Image[User,  9]:= 060000028H;
                Image[User, 10]:= 020000028H;  Image[User, 11]:= 020000028H;
                Image[User, 12]:= 020000028H;  Image[User, 13]:= 020000028H;
                Image[User, 14]:= 038000028H;  Image[User, 15]:= 064000028H;
                Image[User, 16]:= 060000028H;  Image[User, 17]:= 060000028H;
                Image[User, 18]:= 020000028H;  Image[User, 19]:= 020000028H;
                Image[User, 20]:= 020000028H;  Image[User, 21]:= 020000028H;
                Image[User, 22]:= 038000028H;  Image[User, 23]:= 064000028H;
                Image[User, 24]:= 060000028H;  Image[User, 25]:= 060000028H;
                Image[User, 26]:= 020000028H;  Image[User, 27]:= 03FFFFFE8H;
                Image[User, 28]:= 02AAAAAA8H;  Image[User, 29]:= 015555558H;
                Image[User, 30]:= 00FFFFFF8H;  Image[User, 31]:= 000000000H;
                |
  Bomb:         Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
                Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
                Image[User,  4]:= 000000000H;  Image[User,  5]:= 000000000H;
                Image[User,  6]:= 00000C790H;  Image[User,  7]:= 00000F844H;
                Image[User,  8]:= 0003DF830H;  Image[User,  9]:= 001FFFCB2H;
                Image[User, 10]:= 007FFFC00H;  Image[User, 11]:= 00FFFF848H;
                Image[User, 12]:= 01F3FF800H;  Image[User, 13]:= 01E67F800H;
                Image[User, 14]:= 03FCFFC00H;  Image[User, 15]:= 03CFFFC00H;
                Image[User, 16]:= 03C9FFC00H;  Image[User, 17]:= 07F9FFE00H;
                Image[User, 18]:= 07FFFFE00H;  Image[User, 19]:= 07FFFFE00H;
                Image[User, 20]:= 07FFFFE00H;  Image[User, 21]:= 03FFFFC00H;
                Image[User, 22]:= 03FFFFC00H;  Image[User, 23]:= 03FFFFC00H;
                Image[User, 24]:= 01FFFF800H;  Image[User, 25]:= 01FFFF800H;
                Image[User, 26]:= 00FFFF000H;  Image[User, 27]:= 007FFE000H;
                Image[User, 28]:= 001FF8000H;  Image[User, 29]:= 0003C0000H;
                Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
                |
  CDDisk:       Image[User,  0]:= 000000000H;  Image[User,  1]:= 0001FF000H;
                Image[User,  2]:= 000600C00H;  Image[User,  3]:= 001800300H;
                Image[User,  4]:= 002000880H;  Image[User,  5]:= 004000640H;
                Image[User,  6]:= 008000920H;  Image[User,  7]:= 010000690H;
                Image[User,  8]:= 010000950H;  Image[User,  9]:= 020000548H;
                Image[User, 10]:= 0200002A8H;  Image[User, 11]:= 03007CAA8H;
                Image[User, 12]:= 0440FEAA4H;  Image[User, 13]:= 051183004H;
                Image[User, 14]:= 054583004H;  Image[User, 15]:= 055101004H;
                Image[User, 16]:= 055501004H;  Image[User, 17]:= 055101004H;
                Image[User, 18]:= 054082004H;  Image[User, 19]:= 07007C00CH;
                Image[User, 20]:= 020000008H;  Image[User, 21]:= 020028008H;
                Image[User, 22]:= 030000018H;  Image[User, 23]:= 01005C010H;
                Image[User, 24]:= 018000030H;  Image[User, 25]:= 00C0BE060H;
                Image[User, 26]:= 0060000C0H;  Image[User, 27]:= 00397F380H;
                Image[User, 28]:= 001E00F00H;  Image[User, 29]:= 0007FFC00H;
                Image[User, 30]:= 0001FF000H;  Image[User, 31]:= 000000000H;
                |
  Clipboard:    Image[User,  0]:= 00007E000H;  Image[User,  1]:= 0000C3000H; 
                Image[User,  2]:= 003F99FC0H;  Image[User,  3]:= 0FE00007FH;
                Image[User,  4]:= 086000061H;  Image[User,  5]:= 08C000031H; 
                Image[User,  6]:= 08FFFFFF1H;  
                FOR i:= 7 TO 30 DO  Image[User, i]:= 080000001H;  END;
                Image[User, 31]:= 0FFFFFFFFH;
                |
  Data:         Image[User,  0]:= 000000000H;  Image[User,  1]:= 07FFFFFFEH;
                FOR i:= 2 TO 23 DO  Image[User, i]:= 040000002H; END;
                Image[User, 24]:= 04000007EH;  Image[User, 25]:= 040000044H; 
                Image[User, 26]:= 040000048H;  Image[User, 27]:= 040000050H;
                Image[User, 28]:= 040000060H;  Image[User, 29]:= 07FFFFFC0H; 
                Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;                             
                |
  Disk:         Image[User,  0]:= 07FFFFFFCH;  Image[User,  1]:= 0887FFF82H; 
                Image[User,  2]:= 0887FC381H;  Image[User,  3]:= 0887FC381H;
                Image[User,  4]:= 0887FC381H;  Image[User,  5]:= 0887FC381H; 
                Image[User,  6]:= 0887FC381H;  Image[User,  7]:= 0887FC381H;
                Image[User,  8]:= 0887FC381H;  Image[User,  9]:= 0887FC381H; 
                Image[User, 10]:= 0887FC381H;  Image[User, 11]:= 087FFFF01H;
                Image[User, 12]:= 080000001H;  Image[User, 13]:= 080000001H; 
                Image[User, 14]:= 087FFFFE1H;  
                FOR i:= 15 TO 30 DO  Image[User, i]:= 088000011H; END;
                Image[User, 31]:= 07FFFFFFEH;
                |
  File:         Image[User,  0]:= 01FFFFF80H;  Image[User,  1]:= 010000080H;
                Image[User,  2]:= 0100000E0H;  Image[User,  3]:= 0100000A0H;
                Image[User,  4]:= 0100000B8H;  
                FOR i:= 5 TO 19 DO  Image[User, i]:= 0100000A8H; END;
                Image[User, 20]:= 010003FA8H;  Image[User, 21]:= 0100021A8H;
                Image[User, 22]:= 010002328H;  Image[User, 23]:= 010002628H;
                Image[User, 24]:= 010002C28H;  Image[User, 25]:= 010003828H;
                Image[User, 26]:= 01FFFF028H;  Image[User, 27]:= 004000028H;
                Image[User, 28]:= 007FFFFE8H;  Image[User, 29]:= 001000008H;
                Image[User, 30]:= 001FFFFF8H;  Image[User, 31]:= 000000000H;
                |
  Folder:       Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H; 
                Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
                Image[User,  4]:= 000000FFCH;  Image[User,  5]:= 000001806H; 
                Image[User,  6]:= 01FFFF002H;  Image[User,  7]:= 020000002H;
                Image[User,  8]:= 03FFFFFF2H;  Image[User,  9]:= 02000000AH; 
                FOR i:= 10 TO 27 DO  Image[User, i]:= 040000006H; END;
                Image[User, 28]:= 060000006H;  Image[User, 29]:= 03FFFFFFCH; 
                Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
                |
  Graphic:      Image[User,  0]:= 03FFFFFFEH;  Image[User,  1]:= 020000003H;
                Image[User,  2]:= 0A0000003H;  Image[User,  3]:= 0F0000183H;
                Image[User,  4]:= 08C000243H;  Image[User,  5]:= 042000523H;
                Image[User,  6]:= 067000A53H;  Image[User,  7]:= 03C801493H;
                Image[User,  8]:= 022402933H;  Image[User,  9]:= 021E05263H;
                Image[User, 10]:= 0A0F0A4C3H;  Image[User, 11]:= 0E0794983H;
                Image[User, 12]:= 0A03E9303H;  Image[User, 13]:= 0901D2603H;
                Image[User, 14]:= 0880A4C03H;  Image[User, 15]:= 084149803H;
                Image[User, 16]:= 0822D3003H;  Image[User, 17]:= 081226003H;
                Image[User, 18]:= 090A2F003H;  Image[User, 19]:= 09879B803H;
                Image[User, 20]:= 09C391C03H;  Image[User, 21]:= 09A3E0603H;
                Image[User, 22]:= 099080303H;  Image[User, 23]:= 098840183H;
                Image[User, 24]:= 09FC200C3H;  Image[User, 25]:= 080010003H;
                Image[User, 26]:= 080008003H;  Image[User, 27]:= 0FFFFC003H;
                Image[User, 28]:= 020000003H;  Image[User, 29]:= 020000003H;
                Image[User, 30]:= 03FFFFFFFH;  Image[User, 31]:= 01FFFFFFFH;
                |
  Harddisk:     Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
                Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
                Image[User,  4]:= 000000000H;  Image[User,  5]:= 000000000H;
                Image[User,  6]:= 000000000H;  Image[User,  7]:= 000FFFF00H;
                Image[User,  8]:= 001000080H;  Image[User,  9]:= 002000040H;
                Image[User, 10]:= 004E00720H;  Image[User, 11]:= 009C00390H;
                Image[User, 12]:= 0138001C8H;  Image[User, 13]:= 020000004H;
                Image[User, 14]:= 040000002H;  Image[User, 15]:= 080000001H;
                Image[User, 16]:= 0FFFFFFFFH;  Image[User, 17]:= 080000001H;
                Image[User, 18]:= 080000001H;  Image[User, 19]:= 080000001H;
                Image[User, 20]:= 080000001H;  Image[User, 21]:= 080000001H;
                Image[User, 22]:= 080000029H;  Image[User, 23]:= 0BE000001H;
                Image[User, 24]:= 080000001H;  Image[User, 25]:= 0FFFFFFFFH;
                Image[User, 26]:= 040000002H;  Image[User, 27]:= 03FFFFFFCH;
                Image[User, 28]:= 01FFFFFF8H;  Image[User, 29]:= 000000000H;
                Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
                |
  Info:         Image[User,  0]:= 0AAAAAAAAH;  Image[User,  1]:= 055555555H; 
                Image[User,  2]:= 0AAA82AAAH;  Image[User,  3]:= 055501555H;
                Image[User,  4]:= 0AAA00AAAH;  Image[User,  5]:= 055500555H; 
                Image[User,  6]:= 0AAA00AAAH;  Image[User,  7]:= 055501555H;
                Image[User,  8]:= 0AAA82AAAH;  Image[User,  9]:= 055555555H; 
                Image[User, 10]:= 0AAAAAAAAH;  Image[User, 11]:= 055555555H;
                Image[User, 12]:= 0AA800AAAH;  Image[User, 13]:= 055000555H; 
                Image[User, 14]:= 0AAA00AAAH;  Image[User, 15]:= 055500555H;
                Image[User, 16]:= 0AAA00AAAH;  Image[User, 17]:= 055500555H; 
                Image[User, 18]:= 0AAA00AAAH;  Image[User, 19]:= 055500555H;
                Image[User, 20]:= 0AAA00AAAH;  Image[User, 21]:= 055500555H; 
                Image[User, 22]:= 0AAA00AAAH;  Image[User, 23]:= 055500555H;
                Image[User, 24]:= 0AAA00AAAH;  Image[User, 25]:= 055500555H; 
                Image[User, 26]:= 0AAA00AAAH;  Image[User, 27]:= 055000155H;
                Image[User, 28]:= 0AA8000AAH;  Image[User, 29]:= 055555555H; 
                Image[User, 30]:= 0AAAAAAAAH;  Image[User, 31]:= 055555555H;
                |
  Laser:        Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
                Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
                Image[User,  4]:= 000000000H;  Image[User,  5]:= 001FFFF80H;
                Image[User,  6]:= 001000080H;  Image[User,  7]:= 0011FFE80H;
                Image[User,  8]:= 0031FFEC0H;  Image[User,  9]:= 004100120H;
                Image[User, 10]:= 0080FFF90H;  Image[User, 11]:= 010000008H;
                Image[User, 12]:= 020000004H;  Image[User, 13]:= 03FFFFFFCH;
                Image[User, 14]:= 040155542H;  Image[User, 15]:= 0402AAAA2H;
                Image[User, 16]:= 0FFFFFFFFH;  Image[User, 17]:= 080000001H;
                Image[User, 18]:= 080000001H;  Image[User, 19]:= 08000FFF1H;
                Image[User, 20]:= 08000AAB1H;  Image[User, 21]:= 08000D551H;
                Image[User, 22]:= 080000001H;  Image[User, 23]:= 08003FFFDH;
                Image[User, 24]:= 08000FFF1H;  Image[User, 25]:= 08000FFF1H;
                Image[User, 26]:= 0FFFFD55FH;  Image[User, 27]:= 0AAAAAAABH;
                Image[User, 28]:= 0D5555557H;  Image[User, 29]:= 07FFFFFFEH;
                Image[User, 30]:= 03FFFFFFCH;  Image[User, 31]:= 000000000H;
                |
  Printer:      Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
                Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
                Image[User,  4]:= 000000000H;  Image[User,  5]:= 0007FF800H;
                Image[User,  6]:= 000FFFC00H;  Image[User,  7]:= 007FFFFC0H;
                Image[User,  8]:= 004AAAC40H;  Image[User,  9]:= 009555620H;
                Image[User, 10]:= 009AAAA20H;  Image[User, 11]:= 013FFFF70H;
                Image[User, 12]:= 013FFFF77H;  Image[User, 13]:= 027FFFFBDH;
                Image[User, 14]:= 027FFFFBFH;  Image[User, 15]:= 04FFFFFDFH;
                Image[User, 16]:= 04FFFFFDFH;  Image[User, 17]:= 080000003H;
                Image[User, 18]:= 0BFFF02A2H;  Image[User, 19]:= 080000002H;
                Image[User, 20]:= 080000002H;  Image[User, 21]:= 080000002H;
                Image[User, 22]:= 080000002H;  Image[User, 23]:= 080000002H;
                Image[User, 24]:= 0FFFFFFFEH;  Image[User, 25]:= 0FFFFFFFEH;
                Image[User, 26]:= 000000000H;  Image[User, 27]:= 000000000H;
                Image[User, 28]:= 000000000H;  Image[User, 29]:= 000000000H;
                Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
                |
  Tools:        Image[User,  0]:= 03FFFFFFEH;  Image[User,  1]:= 020000002H;
                Image[User,  2]:= 020000003H;  Image[User,  3]:= 020000003H;
                Image[User,  4]:= 02E01F803H;  Image[User,  5]:= 02907FE03H;
                Image[User,  6]:= 0290FFF03H;  Image[User,  7]:= 026807F83H;
                Image[User,  8]:= 021403FC3H;  Image[User,  9]:= 020A01FC3H;
                Image[User, 10]:= 020502FFBH;  Image[User, 11]:= 0202847FBH;
                Image[User, 12]:= 02014887BH;  Image[User, 13]:= 0200B1073H;
                Image[User, 14]:= 020062063H;  Image[User, 15]:= 020042003H;
                Image[User, 16]:= 020087803H;  Image[User, 17]:= 02010CC03H;
                Image[User, 18]:= 020219603H;  Image[User, 19]:= 02043A303H;
                Image[User, 20]:= 02086C583H;  Image[User, 21]:= 0210C62C3H;
                Image[User, 22]:= 022183163H;  Image[User, 23]:= 0243018B3H;
                Image[User, 24]:= 028600C5BH;  Image[User, 25]:= 028C0061BH;
                Image[User, 26]:= 02580033BH;  Image[User, 27]:= 0230001FBH;
                Image[User, 28]:= 0200000F3H;  Image[User, 29]:= 020000003H;
                Image[User, 30]:= 03FFFFFFFH;  Image[User, 31]:= 00FFFFFFFH;
                |
  Trash:        Image[User,  0]:= 000000000H;  Image[User,  1]:= 00003E000H; 
                Image[User,  2]:= 0007E3F00H;  Image[User,  3]:= 001C631C0H;
                Image[User,  4]:= 002000020H;  Image[User,  5]:= 003C001E0H; 
                Image[User,  6]:= 0017FFF40H;  Image[User,  7]:= 001000040H;
                Image[User,  8]:= 001442240H;  Image[User,  9]:= 001442240H; 
                Image[User, 10]:= 001442240H;  Image[User, 11]:= 001442240H;
                Image[User, 12]:= 001442240H;  Image[User, 13]:= 001448A40H; 
                Image[User, 14]:= 00144DA40H;  Image[User, 15]:= 001447240H;
                Image[User, 16]:= 001442240H;  Image[User, 17]:= 001442240H; 
                Image[User, 18]:= 001442240H;  Image[User, 19]:= 001442240H;
                Image[User, 20]:= 001442240H;  Image[User, 21]:= 001442240H; 
                Image[User, 22]:= 001442240H;  Image[User, 23]:= 001442240H;
                Image[User, 24]:= 001442240H;  Image[User, 25]:= 001442240H; 
                Image[User, 26]:= 001642640H;  Image[User, 27]:= 0018660C0H;
                Image[User, 28]:= 000E00380H;  Image[User, 29]:= 0003FFE00H; 
                Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
                |
  ELSE ;
 END;
END SetIcon;


VAR i: sINTEGER;

BEGIN

 (* Initialisierung der Alertroutinen *)
 IconColor:= 1;

 Image[Note,  0]:= 00003C000H;  Image[Note,  1]:= 000066000H;
 Image[Note,  2]:= 0000DB000H;  Image[Note,  3]:= 0001BD800H;
 Image[Note,  4]:= 00037EC00H;  Image[Note,  5]:= 0006FF600H;
 Image[Note,  6]:= 000DC3B00H;  Image[Note,  7]:= 001BC3D80H;
 Image[Note,  8]:= 0037C3EC0H;  Image[Note,  9]:= 006FC3F60H;
 Image[Note, 10]:= 00DFC3FB0H;  Image[Note, 11]:= 01BFC3FD8H;
 Image[Note, 12]:= 037FC3FECH;  Image[Note, 13]:= 06FFC3FF6H;
 Image[Note, 14]:= 0DFFC3FFBH;  Image[Note, 15]:= 0BFFC3FFDH;
 Image[Note, 16]:= 0BFFC3FFDH;  Image[Note, 17]:= 0DFFC3FFBH;
 Image[Note, 18]:= 06FFC3FF6H;  Image[Note, 19]:= 037FC3FECH;
 Image[Note, 20]:= 01BFFFFD8H;  Image[Note, 21]:= 00DFFFFB0H;
 Image[Note, 22]:= 006FC3F60H;  Image[Note, 23]:= 0037C3EC0H;
 Image[Note, 24]:= 001BC3D80H;  Image[Note, 25]:= 000DC3B00H;
 Image[Note, 26]:= 0006FF600H;  Image[Note, 27]:= 00037EC00H;
 Image[Note, 28]:= 0001BD800H;  Image[Note, 29]:= 0000DB000H;
 Image[Note, 30]:= 000066000H;  Image[Note, 31]:= 00003C000H;

 Image[Wait,  0]:= 03FFFFFFCH;  Image[Wait,  1]:= 0C0000003H;
 Image[Wait,  2]:= 09FFFFFF9H;  Image[Wait,  3]:= 0BFFFFFFDH;
 Image[Wait,  4]:= 0DFF83FFBH;  Image[Wait,  5]:= 05FE00FFAH;
 Image[Wait,  6]:= 06FC007F6H;  Image[Wait,  7]:= 02F8383F4H;
 Image[Wait,  8]:= 03787C3ECH;  Image[Wait,  9]:= 01787C3E8H;
 Image[Wait, 10]:= 01BFF83D8H;  Image[Wait, 11]:= 00BFF07D0H;
 Image[Wait, 12]:= 00DFE0FB0H;  Image[Wait, 13]:= 005FC1FA0H;
 Image[Wait, 14]:= 006FC3F60H;  Image[Wait, 15]:= 002FC3F40H;
 Image[Wait, 16]:= 0037C3EC0H;  Image[Wait, 17]:= 0017C3E80H;
 Image[Wait, 18]:= 001BFFD80H;  Image[Wait, 19]:= 000BFFD00H;
 Image[Wait, 20]:= 000DC3B00H;  Image[Wait, 21]:= 0005C3A00H;
 Image[Wait, 22]:= 0006C3600H;  Image[Wait, 23]:= 0002FF400H;
 Image[Wait, 24]:= 00037EC00H;  Image[Wait, 25]:= 00017E800H;
 Image[Wait, 26]:= 0001BD800H;  Image[Wait, 27]:= 0000BD000H;
 Image[Wait, 28]:= 0000DB000H;  Image[Wait, 29]:= 00005A000H;
 Image[Wait, 30]:= 000066000H;  Image[Wait, 31]:= 00003C000H;
 
 Image[Stop,  0]:= 0007FFE00H;  Image[Stop,  1]:= 000C00300H;
 Image[Stop,  2]:= 001BFFD80H;  Image[Stop,  3]:= 0037FFEC0H;
 Image[Stop,  4]:= 006FFFF60H;  Image[Stop,  5]:= 00DFFFFB0H;
 Image[Stop,  6]:= 01BFFFFD8H;  Image[Stop,  7]:= 037FFFFECH;
 Image[Stop,  8]:= 06FFFFFF6H;  Image[Stop,  9]:= 0DFFFFFFBH;
 Image[Stop, 10]:= 0B181860DH;  Image[Stop, 11]:= 0A0810205H;
 Image[Stop, 12]:= 0A4E73265H;  Image[Stop, 13]:= 0A7E73265H;
 Image[Stop, 14]:= 0A3E73265H;  Image[Stop, 15]:= 0B1E73205H;
 Image[Stop, 16]:= 0B8E7320DH;  Image[Stop, 17]:= 0BCE7327DH;
 Image[Stop, 18]:= 0A4E7327DH;  Image[Stop, 19]:= 0A0E7027DH;
 Image[Stop, 20]:= 0B1E7867DH;  Image[Stop, 21]:= 0BFFFFFFDH;
 Image[Stop, 22]:= 0DFFFFFFBH;  Image[Stop, 23]:= 06FFFFFF6H;
 Image[Stop, 24]:= 037FFFFECH;  Image[Stop, 25]:= 01BFFFFD8H;
 Image[Stop, 26]:= 00DFFFFB0H;  Image[Stop, 27]:= 006FFFF60H;
 Image[Stop, 28]:= 0037FFEC0H;  Image[Stop, 29]:= 001BFFD80H;
 Image[Stop, 30]:= 000C00300H;  Image[Stop, 31]:= 0007FFE00H;

 FOR i:= 0 TO 31 DO  Image[User,  i]:= 0;  END;
 
 IF NOT NewDial (ADR(Tree), Dialog) THEN  HALT;  END;

END mtAlerts.

