home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Tex / td187src.lzh / MTALERTS.I < prev    next >
Text File  |  1991-06-08  |  30KB  |  604 lines

  1. (*#######################################################################
  2.                              M A G I C A L E R T S
  3.   #######################################################################
  4.   V2.01 13.12.90  Jens Pirnay           Korrektur von doAlert
  5.   V2.0  17.10.90  Peter Hellinger       Anpassung an neues MagicSys
  6.   V1.0  29.07.90  Peter Hellinger       TDI-Modula-2
  7.   #######################################################################*)
  8.  
  9. IMPLEMENTATION MODULE mtAlerts;
  10.  
  11. (*------------------------------*)
  12. (*       COMPILERSWITCHES       *)
  13. (*------------------------------*)
  14. (*  TDI-Version:   DEAKTIVIERT  *)
  15. (*------------------------------*)
  16. (* V-  Overflow-Checks          *)
  17. (* R-  Range-Checks             *)
  18. (* S-  Stack-Check              *)
  19. (* N-  NIL-Checks               *)
  20. (* T-  TDI-Compiler vor 3.01    *)
  21. (* Q+  Branch statt Jumps       *)
  22. (*                              *)
  23. (*------------------------------*)
  24. (*  MM2-Version:     AKTIVIERT  *)
  25. (*------------------------------*)
  26. (*$R-   Range-Checks            *)
  27. (*$S-   Stack-Check             *)
  28. (*                              *)
  29. (*------------------------------*)
  30.  
  31.  
  32. FROM SYSTEM     IMPORT  ADDRESS, ADR;
  33. FROM MagicAES   IMPORT  GBOX, GIMAGE, GIBOX, GBUTTON, GSTRING, SELECTABLE, 
  34.                         DEFAULT, Exit, LASTOB, OUTLINED, OBJECT, GrafMkstate;
  35. FROM MagicSys   IMPORT  Nil, Null,
  36.                         Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
  37.                         Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
  38.                         LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL, sBITSET,
  39.                         lWORD, lINTEGER, lCARDINAL, lBITSET,
  40.                         CastToChar, CastToByte, CastToByteset, CastToInt,
  41.                         CastToCard, CastToBitset, CastToWord, CastToLInt,
  42.                         CastToLCard, CastToLBitset, CastToLWord, CastToAddr;
  43. FROM mtDials    IMPORT  DIALOG, NewDial, CSCREEN, CMOUSE, CPOS, DialCenter, 
  44.                         DSTART, DFINISH, DialForm, DialDraw, DialDo;
  45. FROM MagicStrings  IMPORT  Assign, Length;
  46. IMPORT  MagicAES;
  47.  
  48.  
  49. CONST   cMax =          39;
  50.  
  51. CONST   Box =           0;
  52.         Mover =         1;
  53.         
  54. CONST   Note =          0;
  55.         Wait =          1;
  56.         Stop =          2;
  57.         User =          3;
  58.  
  59. TYPE    tString =       ARRAY [0..cMax] OF CHAR;
  60.         tImage =        ARRAY [0..31] OF lCARDINAL;
  61.  
  62. VAR     Tree:           ARRAY [0..11] OF OBJECT;
  63.         Image:          ARRAY [Note..User] OF tImage;
  64.         AlertText:      ARRAY [0..7] OF tString;
  65.         Icon:           MagicAES.BITBLK;
  66.         Dialog:         DIALOG;
  67.         ChWidth:        sINTEGER;
  68.         ChHeight:       sINTEGER;
  69.         IconColor:      sINTEGER;
  70.  
  71.  
  72. PROCEDURE PrepareAlert;
  73. VAR i: sINTEGER;
  74. BEGIN
  75.  MagicAES.GrafHandle (i, ChWidth, ChHeight, i, i);
  76.  Tree[Box].obNext:= -1;
  77.  Tree[Box].obHead:= 1;
  78.  Tree[Box].obTail:= 0;
  79.  Tree[Box].obType:= GBOX;
  80.  Tree[Box].obFlags:= {};
  81.  Tree[Box].obState:= {OUTLINED};
  82.  Tree[Box].Box.char:= 0C;
  83.  Tree[Box].Box.frame:= 2C;
  84.  Tree[Box].Box.flags:= {Bit15, Bit11};
  85.  Tree[Box].obX:= 0;
  86.  Tree[Box].obY:= 0;
  87.  Tree[Box].obWidth:= 16;
  88.  Tree[Box].obHeight:= 0;
  89.  
  90.  Tree[Mover].obNext:= -1;
  91.  Tree[Mover].obHead:= -1;
  92.  Tree[Mover].obTail:= -1;
  93.  Tree[Mover].obType:= 1119H;
  94.  Tree[Mover].obFlags:= {};
  95.  Tree[Mover].obState:= {OUTLINED};
  96.  Tree[Mover].Box.char:= 0C;
  97.  Tree[Mover].Box.frame:= 1C;
  98.  Tree[Mover].Box.flags:= {Bit15, Bit11};
  99.  Tree[Mover].obX:= 0;
  100.  Tree[Mover].obY:= 0;
  101.  Tree[Mover].obWidth:= 16;
  102.  Tree[Mover].obHeight:= ChHeight;
  103.  MagicAES.ObjcAdd (ADR(Tree), Box, Mover);
  104. END PrepareAlert;
  105.  
  106.  
  107. PROCEDURE doAlert (xp, yp, mode, def: sINTEGER; VAR str: ARRAY OF CHAR): sINTEGER;
  108. VAR i, j, h, c: sINTEGER;
  109.     text, butt: sINTEGER;
  110.     ioff, off:  sINTEGER;
  111.     w, hi, objc:  sINTEGER;
  112.     icon: BOOLEAN;
  113.     b: sBITSET;
  114. BEGIN
  115.  PrepareAlert;
  116.  FOR i:= 0 TO 7 DO  AlertText[i, 0]:= 0C;  END;
  117.  i:= 0;  h:= Length (str);  objc:= 2;  icon:= TRUE;  ioff:= ChWidth * 4;
  118.  IF (i >= h) OR (str[0] # '[') THEN  RETURN -1;  END;
  119.  CASE str[1] OF
  120.   '1': Icon.biData:= ADR (Image[Note]);|
  121.   '2': Icon.biData:= ADR (Image[Wait]);|
  122.   '3': Icon.biData:= ADR (Image[Stop]);|
  123.   '4': Icon.biData:= ADR (Image[User]);|
  124.   ELSE icon:= FALSE;
  125.  END;
  126.  IF icon THEN
  127.   ioff:= (ChWidth * 2) + 32;
  128.   Icon.biWb:= 4; 
  129.   Icon.biHl:= 32;
  130.   Icon.biX:= 0;
  131.   Icon.biY:= 0;
  132.   Icon.biColor:= IconColor; 
  133.   Tree[objc].obNext:= -1;
  134.   Tree[objc].obHead:= -1;
  135.   Tree[objc].obTail:= -1;
  136.   Tree[objc].obType:= GIMAGE;
  137.   Tree[objc].obFlags:= {};
  138.   Tree[objc].obState:= {};
  139.   Tree[objc].ImagePtr:= ADR (Icon);
  140.   Tree[objc].obX:= ChWidth;
  141.   Tree[objc].obY:= ChHeight;
  142.   Tree[objc].obWidth:= 32;
  143.   Tree[objc].obHeight:= 32;
  144.   MagicAES.ObjcAdd (ADR(Tree), Box, objc);
  145.   INC (objc);
  146.  END;
  147.  i:= 2;
  148.  WHILE (str[i] # '[')  DO
  149.   IF i > h THEN  RETURN -1;  END;  INC (i);
  150.  END;
  151.  (* Textzeilen auslesen *)
  152.  text:= 0;  c:= 0;
  153.  LOOP
  154.   j:= 0;  INC (i);
  155.   IF i > h THEN  RETURN -1;  END;
  156.   WHILE (str[i] # '|') AND (str[i] # ']') AND (i <= h) AND (j < cMax) DO
  157.    AlertText[text, j]:= str[i];  INC (i);  INC (j);
  158.   END;
  159.   AlertText [text, j]:= 0C;
  160.   Tree[objc].obNext:= -1;
  161.   Tree[objc].obHead:= -1;
  162.   Tree[objc].obTail:= -1;
  163.   Tree[objc].obType:= GSTRING;
  164.   Tree[objc].obFlags:= {};
  165.   Tree[objc].obState:= {};
  166.   Tree[objc].StringPtr:= ADR (AlertText[text]);
  167.   Tree[objc].obX:= ioff;
  168.   Tree[objc].obY:= ChHeight + (text * ChHeight);
  169.   Tree[objc].obWidth:= ChWidth * j;
  170.   Tree[objc].obHeight:= ChHeight;
  171.   MagicAES.ObjcAdd (ADR(Tree), Box, objc);
  172.   IF Tree[Box].obWidth <= Tree[objc].obWidth THEN
  173.    Tree[Box].obWidth:= ioff + Tree[objc].obWidth + 32;
  174.   END;
  175.   INC (objc);
  176.   INC (text);
  177.   IF (str[i] = ']') OR (text > 4) THEN  EXIT;  END;
  178.  END;
  179.  c:= objc - 1; 
  180.  WHILE (str[i] # '[')  DO
  181.   IF i > h THEN  RETURN -1;  END;  INC (i);
  182.  END;
  183.  (* Buttons auslesen *)
  184.  butt:= 0;  w:= ioff;
  185.  LOOP
  186.   AlertText[butt + text, 0]:= ' ';  j:= 1;  INC (i);
  187.   IF i > h THEN  RETURN -1;  END;
  188.   WHILE (str[i] # '|') AND (str[i] # ']') AND (i <= h) AND (j < cMax) DO
  189.    AlertText[butt + text, j]:= str[i];  INC (i);  INC (j);
  190.   END;
  191.   AlertText [butt + text, j]:= ' ';  INC (j);
  192.   AlertText [butt + text, j]:= 0C;
  193.   Tree[objc].obNext:= -1;
  194.   Tree[objc].obHead:= -1;
  195.   Tree[objc].obTail:= -1;
  196.   Tree[objc].obType:= 0121AH;
  197.   IF butt = def - 1  THEN  Tree[objc].obFlags:= {DEFAULT, SELECTABLE, Exit};
  198.                      ELSE  Tree[objc].obFlags:= {Exit, SELECTABLE};
  199.   END;
  200.   Tree[objc].obState:= {};
  201.   Tree[objc].StringPtr:= ADR (AlertText[butt + text]);
  202.   IF  (Tree[c].obY + (2 * ChHeight)) < (40 + ChHeight)  THEN
  203.    Tree[objc].obY:= 40 + ChHeight;
  204.   ELSE
  205.    Tree[objc].obY:= Tree[c].obY + (2 * ChHeight);
  206.   END;
  207.   Tree[objc].obWidth:= ChWidth * (j - 1);
  208.   (* Buttons auf gleiche Grö₧e bringen *)
  209.   IF butt > 0 THEN
  210.    IF Tree[objc].obWidth < Tree[objc - 1].obWidth THEN
  211.     Tree[objc].obWidth:= Tree[objc - 1].obWidth;
  212.    ELSIF Tree[objc].obWidth > Tree[objc - 1].obWidth THEN
  213.     Tree[objc - 1].obWidth:= Tree[objc].obWidth;
  214.    END;
  215.   END;
  216.   Tree[objc].obHeight:= ChHeight;
  217.   MagicAES.ObjcAdd (ADR(Tree), Box, objc);
  218.   INC (w, Tree[objc].obWidth + (ChWidth * 2));
  219.   INC (objc);
  220.   INC (butt);
  221.   IF (str[i] = ']') OR (butt > 2) THEN  EXIT;  END;
  222.  END;
  223.  IF Tree[Box].obWidth < w THEN
  224.   Tree[Box].obWidth:= w + 48;
  225.  END;
  226.  Tree[Box].obHeight:= Tree[objc - 1].obY + (2 * ChHeight);
  227.  Tree[Mover].obX:= Tree[Box].obWidth - Tree[Mover].obWidth;
  228.  (* Buttons zentrieren *)
  229.  DEC (objc);
  230.  CASE butt OF
  231.   1: Tree[objc].obX:= (Tree[Box].obWidth - Tree[objc].obWidth) DIV 2;
  232.      |
  233.   2: w:= Tree[objc - 1].obWidth + Tree[objc].obWidth;
  234.      w:= ((Tree[Box].obWidth - w) DIV 2) - ChWidth;
  235.      Tree[objc - 1].obX:= w;
  236.      Tree[objc].obX:= w + (ChWidth * 2) + Tree[objc - 1].obWidth;
  237.      |
  238.   3: w:= Tree[objc - 2].obWidth + Tree[objc - 1].obWidth + Tree[objc].obWidth;
  239.      w:= ((Tree[Box].obWidth - w) DIV 2) - (ChWidth * 2);
  240.      Tree[objc - 2].obX:= w;
  241.      Tree[objc - 1].obX:= w + (ChWidth * 2) + Tree[objc - 2].obWidth;
  242.      Tree[objc].obX:= w + (ChWidth * 4) + Tree[objc - 1].obWidth + 
  243.                                     Tree[objc - 2].obWidth;
  244.      |
  245.   ELSE ;
  246.  END;
  247.  CASE mode OF
  248.   0:    DialCenter (Dialog, CSCREEN, 0, 0);|
  249.   1:    DialCenter (Dialog, CMOUSE, xp, yp);|
  250.   2:    DialCenter (Dialog, CPOS, xp, xp);|
  251.   ELSE  ;
  252.  END;
  253.  DialForm (Dialog, DSTART);
  254.  DialDraw (Dialog, 0, objc);
  255.  i:= DialDo (Dialog, -1);
  256.  DialForm (Dialog, DFINISH);
  257.  b:= CastToBitset (i);
  258.  EXCL (b, Bit15);
  259.  i:= CastToInt (b);
  260. (*
  261.  Dies stand ursprünglich hier, ist aber falsch! (JP 13-12-90)
  262.  RETURN i - (text + butt) + 1;
  263. *)
  264.  RETURN i - (text + butt);
  265. END doAlert;
  266.  
  267.  
  268. PROCEDURE Alert (def: sINTEGER; str: ARRAY OF CHAR): sINTEGER;
  269. BEGIN
  270.  RETURN doAlert (0, 0, 0, def, str);
  271. END Alert;
  272.  
  273.  
  274. PROCEDURE MouseAlert (def: sINTEGER; str: ARRAY OF CHAR): sINTEGER;
  275. BEGIN
  276.  RETURN doAlert (0, 0, 1, def, str);
  277. END MouseAlert;
  278.  
  279.  
  280. PROCEDURE PosAlert (x, y, def: sINTEGER; str: ARRAY OF CHAR): sINTEGER;
  281. BEGIN
  282.  RETURN doAlert (x, y, 2, def, str);
  283. END PosAlert;
  284.  
  285.  
  286. PROCEDURE UserIcon (icon: IconPtr);
  287. VAR i: sINTEGER;
  288. BEGIN
  289.  FOR i:= 0 TO 31 DO  Image[User, i]:= icon^[i];  END;
  290. END UserIcon;
  291.  
  292.  
  293. PROCEDURE SetIconColor (color: sINTEGER);
  294. BEGIN
  295.  IconColor:= color;
  296. END SetIconColor;
  297.  
  298.  
  299. PROCEDURE SetIcon (icon: Icons);
  300. VAR i: sINTEGER;
  301. BEGIN
  302.  CASE icon OF
  303.   Atari:        Image[User,  0]:= 000000000H;  Image[User,  1]:= 0001BB000H; 
  304.                 Image[User,  2]:= 0001BB000H;  Image[User,  3]:= 0001BB000H;
  305.                 Image[User,  4]:= 0001BB000H;  Image[User,  5]:= 0001BB000H; 
  306.                 Image[User,  6]:= 0001BB000H;  Image[User,  7]:= 0003BB800H;
  307.                 Image[User,  8]:= 0003BB800H;  Image[User,  9]:= 0003BB800H; 
  308.                 Image[User, 10]:= 0003BB800H;  Image[User, 11]:= 0007BBC00H;
  309.                 Image[User, 12]:= 0007BBC00H;  Image[User, 13]:= 000FBBE00H; 
  310.                 Image[User, 14]:= 001F39F00H;  Image[User, 15]:= 003F39F80H;
  311.                 Image[User, 16]:= 00FE38FE0H;  Image[User, 17]:= 07FC387FCH; 
  312.                 Image[User, 18]:= 07F8383FCH;  Image[User, 19]:= 07E0380FCH;
  313.                 Image[User, 20]:= 07803803CH;  Image[User, 21]:= 000000000H; 
  314.                 Image[User, 22]:= 009F90F8CH;  Image[User, 23]:= 01DFB8FCCH;
  315.                 Image[User, 24]:= 01C638CECH;  Image[User, 25]:= 03666CCECH; 
  316.                 Image[User, 26]:= 03666CDCCH;  Image[User, 27]:= 07F6FED8CH;
  317.                 Image[User, 28]:= 07F6FEDCCH;  Image[User, 29]:= 0636C6CECH; 
  318.                 Image[User, 30]:= 0636C6C6CH;  Image[User, 31]:= 000000000H;
  319.                 |
  320.   Book:         Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
  321.                 Image[User,  2]:= 01FFFFFE0H;  Image[User,  3]:= 020000030H;
  322.                 Image[User,  4]:= 020000028H;  Image[User,  5]:= 020000028H;
  323.                 Image[User,  6]:= 038000028H;  Image[User,  7]:= 064000028H;
  324.                 Image[User,  8]:= 060000028H;  Image[User,  9]:= 060000028H;
  325.                 Image[User, 10]:= 020000028H;  Image[User, 11]:= 020000028H;
  326.                 Image[User, 12]:= 020000028H;  Image[User, 13]:= 020000028H;
  327.                 Image[User, 14]:= 038000028H;  Image[User, 15]:= 064000028H;
  328.                 Image[User, 16]:= 060000028H;  Image[User, 17]:= 060000028H;
  329.                 Image[User, 18]:= 020000028H;  Image[User, 19]:= 020000028H;
  330.                 Image[User, 20]:= 020000028H;  Image[User, 21]:= 020000028H;
  331.                 Image[User, 22]:= 038000028H;  Image[User, 23]:= 064000028H;
  332.                 Image[User, 24]:= 060000028H;  Image[User, 25]:= 060000028H;
  333.                 Image[User, 26]:= 020000028H;  Image[User, 27]:= 03FFFFFE8H;
  334.                 Image[User, 28]:= 02AAAAAA8H;  Image[User, 29]:= 015555558H;
  335.                 Image[User, 30]:= 00FFFFFF8H;  Image[User, 31]:= 000000000H;
  336.                 |
  337.   Bomb:         Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
  338.                 Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
  339.                 Image[User,  4]:= 000000000H;  Image[User,  5]:= 000000000H;
  340.                 Image[User,  6]:= 00000C790H;  Image[User,  7]:= 00000F844H;
  341.                 Image[User,  8]:= 0003DF830H;  Image[User,  9]:= 001FFFCB2H;
  342.                 Image[User, 10]:= 007FFFC00H;  Image[User, 11]:= 00FFFF848H;
  343.                 Image[User, 12]:= 01F3FF800H;  Image[User, 13]:= 01E67F800H;
  344.                 Image[User, 14]:= 03FCFFC00H;  Image[User, 15]:= 03CFFFC00H;
  345.                 Image[User, 16]:= 03C9FFC00H;  Image[User, 17]:= 07F9FFE00H;
  346.                 Image[User, 18]:= 07FFFFE00H;  Image[User, 19]:= 07FFFFE00H;
  347.                 Image[User, 20]:= 07FFFFE00H;  Image[User, 21]:= 03FFFFC00H;
  348.                 Image[User, 22]:= 03FFFFC00H;  Image[User, 23]:= 03FFFFC00H;
  349.                 Image[User, 24]:= 01FFFF800H;  Image[User, 25]:= 01FFFF800H;
  350.                 Image[User, 26]:= 00FFFF000H;  Image[User, 27]:= 007FFE000H;
  351.                 Image[User, 28]:= 001FF8000H;  Image[User, 29]:= 0003C0000H;
  352.                 Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
  353.                 |
  354.   CDDisk:       Image[User,  0]:= 000000000H;  Image[User,  1]:= 0001FF000H;
  355.                 Image[User,  2]:= 000600C00H;  Image[User,  3]:= 001800300H;
  356.                 Image[User,  4]:= 002000880H;  Image[User,  5]:= 004000640H;
  357.                 Image[User,  6]:= 008000920H;  Image[User,  7]:= 010000690H;
  358.                 Image[User,  8]:= 010000950H;  Image[User,  9]:= 020000548H;
  359.                 Image[User, 10]:= 0200002A8H;  Image[User, 11]:= 03007CAA8H;
  360.                 Image[User, 12]:= 0440FEAA4H;  Image[User, 13]:= 051183004H;
  361.                 Image[User, 14]:= 054583004H;  Image[User, 15]:= 055101004H;
  362.                 Image[User, 16]:= 055501004H;  Image[User, 17]:= 055101004H;
  363.                 Image[User, 18]:= 054082004H;  Image[User, 19]:= 07007C00CH;
  364.                 Image[User, 20]:= 020000008H;  Image[User, 21]:= 020028008H;
  365.                 Image[User, 22]:= 030000018H;  Image[User, 23]:= 01005C010H;
  366.                 Image[User, 24]:= 018000030H;  Image[User, 25]:= 00C0BE060H;
  367.                 Image[User, 26]:= 0060000C0H;  Image[User, 27]:= 00397F380H;
  368.                 Image[User, 28]:= 001E00F00H;  Image[User, 29]:= 0007FFC00H;
  369.                 Image[User, 30]:= 0001FF000H;  Image[User, 31]:= 000000000H;
  370.                 |
  371.   Clipboard:    Image[User,  0]:= 00007E000H;  Image[User,  1]:= 0000C3000H; 
  372.                 Image[User,  2]:= 003F99FC0H;  Image[User,  3]:= 0FE00007FH;
  373.                 Image[User,  4]:= 086000061H;  Image[User,  5]:= 08C000031H; 
  374.                 Image[User,  6]:= 08FFFFFF1H;  
  375.                 FOR i:= 7 TO 30 DO  Image[User, i]:= 080000001H;  END;
  376.                 Image[User, 31]:= 0FFFFFFFFH;
  377.                 |
  378.   Data:         Image[User,  0]:= 000000000H;  Image[User,  1]:= 07FFFFFFEH;
  379.                 FOR i:= 2 TO 23 DO  Image[User, i]:= 040000002H; END;
  380.                 Image[User, 24]:= 04000007EH;  Image[User, 25]:= 040000044H; 
  381.                 Image[User, 26]:= 040000048H;  Image[User, 27]:= 040000050H;
  382.                 Image[User, 28]:= 040000060H;  Image[User, 29]:= 07FFFFFC0H; 
  383.                 Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;                             
  384.                 |
  385.   Disk:         Image[User,  0]:= 07FFFFFFCH;  Image[User,  1]:= 0887FFF82H; 
  386.                 Image[User,  2]:= 0887FC381H;  Image[User,  3]:= 0887FC381H;
  387.                 Image[User,  4]:= 0887FC381H;  Image[User,  5]:= 0887FC381H; 
  388.                 Image[User,  6]:= 0887FC381H;  Image[User,  7]:= 0887FC381H;
  389.                 Image[User,  8]:= 0887FC381H;  Image[User,  9]:= 0887FC381H; 
  390.                 Image[User, 10]:= 0887FC381H;  Image[User, 11]:= 087FFFF01H;
  391.                 Image[User, 12]:= 080000001H;  Image[User, 13]:= 080000001H; 
  392.                 Image[User, 14]:= 087FFFFE1H;  
  393.                 FOR i:= 15 TO 30 DO  Image[User, i]:= 088000011H; END;
  394.                 Image[User, 31]:= 07FFFFFFEH;
  395.                 |
  396.   File:         Image[User,  0]:= 01FFFFF80H;  Image[User,  1]:= 010000080H;
  397.                 Image[User,  2]:= 0100000E0H;  Image[User,  3]:= 0100000A0H;
  398.                 Image[User,  4]:= 0100000B8H;  
  399.                 FOR i:= 5 TO 19 DO  Image[User, i]:= 0100000A8H; END;
  400.                 Image[User, 20]:= 010003FA8H;  Image[User, 21]:= 0100021A8H;
  401.                 Image[User, 22]:= 010002328H;  Image[User, 23]:= 010002628H;
  402.                 Image[User, 24]:= 010002C28H;  Image[User, 25]:= 010003828H;
  403.                 Image[User, 26]:= 01FFFF028H;  Image[User, 27]:= 004000028H;
  404.                 Image[User, 28]:= 007FFFFE8H;  Image[User, 29]:= 001000008H;
  405.                 Image[User, 30]:= 001FFFFF8H;  Image[User, 31]:= 000000000H;
  406.                 |
  407.   Folder:       Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H; 
  408.                 Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
  409.                 Image[User,  4]:= 000000FFCH;  Image[User,  5]:= 000001806H; 
  410.                 Image[User,  6]:= 01FFFF002H;  Image[User,  7]:= 020000002H;
  411.                 Image[User,  8]:= 03FFFFFF2H;  Image[User,  9]:= 02000000AH; 
  412.                 FOR i:= 10 TO 27 DO  Image[User, i]:= 040000006H; END;
  413.                 Image[User, 28]:= 060000006H;  Image[User, 29]:= 03FFFFFFCH; 
  414.                 Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
  415.                 |
  416.   Graphic:      Image[User,  0]:= 03FFFFFFEH;  Image[User,  1]:= 020000003H;
  417.                 Image[User,  2]:= 0A0000003H;  Image[User,  3]:= 0F0000183H;
  418.                 Image[User,  4]:= 08C000243H;  Image[User,  5]:= 042000523H;
  419.                 Image[User,  6]:= 067000A53H;  Image[User,  7]:= 03C801493H;
  420.                 Image[User,  8]:= 022402933H;  Image[User,  9]:= 021E05263H;
  421.                 Image[User, 10]:= 0A0F0A4C3H;  Image[User, 11]:= 0E0794983H;
  422.                 Image[User, 12]:= 0A03E9303H;  Image[User, 13]:= 0901D2603H;
  423.                 Image[User, 14]:= 0880A4C03H;  Image[User, 15]:= 084149803H;
  424.                 Image[User, 16]:= 0822D3003H;  Image[User, 17]:= 081226003H;
  425.                 Image[User, 18]:= 090A2F003H;  Image[User, 19]:= 09879B803H;
  426.                 Image[User, 20]:= 09C391C03H;  Image[User, 21]:= 09A3E0603H;
  427.                 Image[User, 22]:= 099080303H;  Image[User, 23]:= 098840183H;
  428.                 Image[User, 24]:= 09FC200C3H;  Image[User, 25]:= 080010003H;
  429.                 Image[User, 26]:= 080008003H;  Image[User, 27]:= 0FFFFC003H;
  430.                 Image[User, 28]:= 020000003H;  Image[User, 29]:= 020000003H;
  431.                 Image[User, 30]:= 03FFFFFFFH;  Image[User, 31]:= 01FFFFFFFH;
  432.                 |
  433.   Harddisk:     Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
  434.                 Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
  435.                 Image[User,  4]:= 000000000H;  Image[User,  5]:= 000000000H;
  436.                 Image[User,  6]:= 000000000H;  Image[User,  7]:= 000FFFF00H;
  437.                 Image[User,  8]:= 001000080H;  Image[User,  9]:= 002000040H;
  438.                 Image[User, 10]:= 004E00720H;  Image[User, 11]:= 009C00390H;
  439.                 Image[User, 12]:= 0138001C8H;  Image[User, 13]:= 020000004H;
  440.                 Image[User, 14]:= 040000002H;  Image[User, 15]:= 080000001H;
  441.                 Image[User, 16]:= 0FFFFFFFFH;  Image[User, 17]:= 080000001H;
  442.                 Image[User, 18]:= 080000001H;  Image[User, 19]:= 080000001H;
  443.                 Image[User, 20]:= 080000001H;  Image[User, 21]:= 080000001H;
  444.                 Image[User, 22]:= 080000029H;  Image[User, 23]:= 0BE000001H;
  445.                 Image[User, 24]:= 080000001H;  Image[User, 25]:= 0FFFFFFFFH;
  446.                 Image[User, 26]:= 040000002H;  Image[User, 27]:= 03FFFFFFCH;
  447.                 Image[User, 28]:= 01FFFFFF8H;  Image[User, 29]:= 000000000H;
  448.                 Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
  449.                 |
  450.   Info:         Image[User,  0]:= 0AAAAAAAAH;  Image[User,  1]:= 055555555H; 
  451.                 Image[User,  2]:= 0AAA82AAAH;  Image[User,  3]:= 055501555H;
  452.                 Image[User,  4]:= 0AAA00AAAH;  Image[User,  5]:= 055500555H; 
  453.                 Image[User,  6]:= 0AAA00AAAH;  Image[User,  7]:= 055501555H;
  454.                 Image[User,  8]:= 0AAA82AAAH;  Image[User,  9]:= 055555555H; 
  455.                 Image[User, 10]:= 0AAAAAAAAH;  Image[User, 11]:= 055555555H;
  456.                 Image[User, 12]:= 0AA800AAAH;  Image[User, 13]:= 055000555H; 
  457.                 Image[User, 14]:= 0AAA00AAAH;  Image[User, 15]:= 055500555H;
  458.                 Image[User, 16]:= 0AAA00AAAH;  Image[User, 17]:= 055500555H; 
  459.                 Image[User, 18]:= 0AAA00AAAH;  Image[User, 19]:= 055500555H;
  460.                 Image[User, 20]:= 0AAA00AAAH;  Image[User, 21]:= 055500555H; 
  461.                 Image[User, 22]:= 0AAA00AAAH;  Image[User, 23]:= 055500555H;
  462.                 Image[User, 24]:= 0AAA00AAAH;  Image[User, 25]:= 055500555H; 
  463.                 Image[User, 26]:= 0AAA00AAAH;  Image[User, 27]:= 055000155H;
  464.                 Image[User, 28]:= 0AA8000AAH;  Image[User, 29]:= 055555555H; 
  465.                 Image[User, 30]:= 0AAAAAAAAH;  Image[User, 31]:= 055555555H;
  466.                 |
  467.   Laser:        Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
  468.                 Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
  469.                 Image[User,  4]:= 000000000H;  Image[User,  5]:= 001FFFF80H;
  470.                 Image[User,  6]:= 001000080H;  Image[User,  7]:= 0011FFE80H;
  471.                 Image[User,  8]:= 0031FFEC0H;  Image[User,  9]:= 004100120H;
  472.                 Image[User, 10]:= 0080FFF90H;  Image[User, 11]:= 010000008H;
  473.                 Image[User, 12]:= 020000004H;  Image[User, 13]:= 03FFFFFFCH;
  474.                 Image[User, 14]:= 040155542H;  Image[User, 15]:= 0402AAAA2H;
  475.                 Image[User, 16]:= 0FFFFFFFFH;  Image[User, 17]:= 080000001H;
  476.                 Image[User, 18]:= 080000001H;  Image[User, 19]:= 08000FFF1H;
  477.                 Image[User, 20]:= 08000AAB1H;  Image[User, 21]:= 08000D551H;
  478.                 Image[User, 22]:= 080000001H;  Image[User, 23]:= 08003FFFDH;
  479.                 Image[User, 24]:= 08000FFF1H;  Image[User, 25]:= 08000FFF1H;
  480.                 Image[User, 26]:= 0FFFFD55FH;  Image[User, 27]:= 0AAAAAAABH;
  481.                 Image[User, 28]:= 0D5555557H;  Image[User, 29]:= 07FFFFFFEH;
  482.                 Image[User, 30]:= 03FFFFFFCH;  Image[User, 31]:= 000000000H;
  483.                 |
  484.   Printer:      Image[User,  0]:= 000000000H;  Image[User,  1]:= 000000000H;
  485.                 Image[User,  2]:= 000000000H;  Image[User,  3]:= 000000000H;
  486.                 Image[User,  4]:= 000000000H;  Image[User,  5]:= 0007FF800H;
  487.                 Image[User,  6]:= 000FFFC00H;  Image[User,  7]:= 007FFFFC0H;
  488.                 Image[User,  8]:= 004AAAC40H;  Image[User,  9]:= 009555620H;
  489.                 Image[User, 10]:= 009AAAA20H;  Image[User, 11]:= 013FFFF70H;
  490.                 Image[User, 12]:= 013FFFF77H;  Image[User, 13]:= 027FFFFBDH;
  491.                 Image[User, 14]:= 027FFFFBFH;  Image[User, 15]:= 04FFFFFDFH;
  492.                 Image[User, 16]:= 04FFFFFDFH;  Image[User, 17]:= 080000003H;
  493.                 Image[User, 18]:= 0BFFF02A2H;  Image[User, 19]:= 080000002H;
  494.                 Image[User, 20]:= 080000002H;  Image[User, 21]:= 080000002H;
  495.                 Image[User, 22]:= 080000002H;  Image[User, 23]:= 080000002H;
  496.                 Image[User, 24]:= 0FFFFFFFEH;  Image[User, 25]:= 0FFFFFFFEH;
  497.                 Image[User, 26]:= 000000000H;  Image[User, 27]:= 000000000H;
  498.                 Image[User, 28]:= 000000000H;  Image[User, 29]:= 000000000H;
  499.                 Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
  500.                 |
  501.   Tools:        Image[User,  0]:= 03FFFFFFEH;  Image[User,  1]:= 020000002H;
  502.                 Image[User,  2]:= 020000003H;  Image[User,  3]:= 020000003H;
  503.                 Image[User,  4]:= 02E01F803H;  Image[User,  5]:= 02907FE03H;
  504.                 Image[User,  6]:= 0290FFF03H;  Image[User,  7]:= 026807F83H;
  505.                 Image[User,  8]:= 021403FC3H;  Image[User,  9]:= 020A01FC3H;
  506.                 Image[User, 10]:= 020502FFBH;  Image[User, 11]:= 0202847FBH;
  507.                 Image[User, 12]:= 02014887BH;  Image[User, 13]:= 0200B1073H;
  508.                 Image[User, 14]:= 020062063H;  Image[User, 15]:= 020042003H;
  509.                 Image[User, 16]:= 020087803H;  Image[User, 17]:= 02010CC03H;
  510.                 Image[User, 18]:= 020219603H;  Image[User, 19]:= 02043A303H;
  511.                 Image[User, 20]:= 02086C583H;  Image[User, 21]:= 0210C62C3H;
  512.                 Image[User, 22]:= 022183163H;  Image[User, 23]:= 0243018B3H;
  513.                 Image[User, 24]:= 028600C5BH;  Image[User, 25]:= 028C0061BH;
  514.                 Image[User, 26]:= 02580033BH;  Image[User, 27]:= 0230001FBH;
  515.                 Image[User, 28]:= 0200000F3H;  Image[User, 29]:= 020000003H;
  516.                 Image[User, 30]:= 03FFFFFFFH;  Image[User, 31]:= 00FFFFFFFH;
  517.                 |
  518.   Trash:        Image[User,  0]:= 000000000H;  Image[User,  1]:= 00003E000H; 
  519.                 Image[User,  2]:= 0007E3F00H;  Image[User,  3]:= 001C631C0H;
  520.                 Image[User,  4]:= 002000020H;  Image[User,  5]:= 003C001E0H; 
  521.                 Image[User,  6]:= 0017FFF40H;  Image[User,  7]:= 001000040H;
  522.                 Image[User,  8]:= 001442240H;  Image[User,  9]:= 001442240H; 
  523.                 Image[User, 10]:= 001442240H;  Image[User, 11]:= 001442240H;
  524.                 Image[User, 12]:= 001442240H;  Image[User, 13]:= 001448A40H; 
  525.                 Image[User, 14]:= 00144DA40H;  Image[User, 15]:= 001447240H;
  526.                 Image[User, 16]:= 001442240H;  Image[User, 17]:= 001442240H; 
  527.                 Image[User, 18]:= 001442240H;  Image[User, 19]:= 001442240H;
  528.                 Image[User, 20]:= 001442240H;  Image[User, 21]:= 001442240H; 
  529.                 Image[User, 22]:= 001442240H;  Image[User, 23]:= 001442240H;
  530.                 Image[User, 24]:= 001442240H;  Image[User, 25]:= 001442240H; 
  531.                 Image[User, 26]:= 001642640H;  Image[User, 27]:= 0018660C0H;
  532.                 Image[User, 28]:= 000E00380H;  Image[User, 29]:= 0003FFE00H; 
  533.                 Image[User, 30]:= 000000000H;  Image[User, 31]:= 000000000H;
  534.                 |
  535.   ELSE ;
  536.  END;
  537. END SetIcon;
  538.  
  539.  
  540. VAR i: sINTEGER;
  541.  
  542. BEGIN
  543.  
  544.  (* Initialisierung der Alertroutinen *)
  545.  IconColor:= 1;
  546.  
  547.  Image[Note,  0]:= 00003C000H;  Image[Note,  1]:= 000066000H;
  548.  Image[Note,  2]:= 0000DB000H;  Image[Note,  3]:= 0001BD800H;
  549.  Image[Note,  4]:= 00037EC00H;  Image[Note,  5]:= 0006FF600H;
  550.  Image[Note,  6]:= 000DC3B00H;  Image[Note,  7]:= 001BC3D80H;
  551.  Image[Note,  8]:= 0037C3EC0H;  Image[Note,  9]:= 006FC3F60H;
  552.  Image[Note, 10]:= 00DFC3FB0H;  Image[Note, 11]:= 01BFC3FD8H;
  553.  Image[Note, 12]:= 037FC3FECH;  Image[Note, 13]:= 06FFC3FF6H;
  554.  Image[Note, 14]:= 0DFFC3FFBH;  Image[Note, 15]:= 0BFFC3FFDH;
  555.  Image[Note, 16]:= 0BFFC3FFDH;  Image[Note, 17]:= 0DFFC3FFBH;
  556.  Image[Note, 18]:= 06FFC3FF6H;  Image[Note, 19]:= 037FC3FECH;
  557.  Image[Note, 20]:= 01BFFFFD8H;  Image[Note, 21]:= 00DFFFFB0H;
  558.  Image[Note, 22]:= 006FC3F60H;  Image[Note, 23]:= 0037C3EC0H;
  559.  Image[Note, 24]:= 001BC3D80H;  Image[Note, 25]:= 000DC3B00H;
  560.  Image[Note, 26]:= 0006FF600H;  Image[Note, 27]:= 00037EC00H;
  561.  Image[Note, 28]:= 0001BD800H;  Image[Note, 29]:= 0000DB000H;
  562.  Image[Note, 30]:= 000066000H;  Image[Note, 31]:= 00003C000H;
  563.  
  564.  Image[Wait,  0]:= 03FFFFFFCH;  Image[Wait,  1]:= 0C0000003H;
  565.  Image[Wait,  2]:= 09FFFFFF9H;  Image[Wait,  3]:= 0BFFFFFFDH;
  566.  Image[Wait,  4]:= 0DFF83FFBH;  Image[Wait,  5]:= 05FE00FFAH;
  567.  Image[Wait,  6]:= 06FC007F6H;  Image[Wait,  7]:= 02F8383F4H;
  568.  Image[Wait,  8]:= 03787C3ECH;  Image[Wait,  9]:= 01787C3E8H;
  569.  Image[Wait, 10]:= 01BFF83D8H;  Image[Wait, 11]:= 00BFF07D0H;
  570.  Image[Wait, 12]:= 00DFE0FB0H;  Image[Wait, 13]:= 005FC1FA0H;
  571.  Image[Wait, 14]:= 006FC3F60H;  Image[Wait, 15]:= 002FC3F40H;
  572.  Image[Wait, 16]:= 0037C3EC0H;  Image[Wait, 17]:= 0017C3E80H;
  573.  Image[Wait, 18]:= 001BFFD80H;  Image[Wait, 19]:= 000BFFD00H;
  574.  Image[Wait, 20]:= 000DC3B00H;  Image[Wait, 21]:= 0005C3A00H;
  575.  Image[Wait, 22]:= 0006C3600H;  Image[Wait, 23]:= 0002FF400H;
  576.  Image[Wait, 24]:= 00037EC00H;  Image[Wait, 25]:= 00017E800H;
  577.  Image[Wait, 26]:= 0001BD800H;  Image[Wait, 27]:= 0000BD000H;
  578.  Image[Wait, 28]:= 0000DB000H;  Image[Wait, 29]:= 00005A000H;
  579.  Image[Wait, 30]:= 000066000H;  Image[Wait, 31]:= 00003C000H;
  580.  
  581.  Image[Stop,  0]:= 0007FFE00H;  Image[Stop,  1]:= 000C00300H;
  582.  Image[Stop,  2]:= 001BFFD80H;  Image[Stop,  3]:= 0037FFEC0H;
  583.  Image[Stop,  4]:= 006FFFF60H;  Image[Stop,  5]:= 00DFFFFB0H;
  584.  Image[Stop,  6]:= 01BFFFFD8H;  Image[Stop,  7]:= 037FFFFECH;
  585.  Image[Stop,  8]:= 06FFFFFF6H;  Image[Stop,  9]:= 0DFFFFFFBH;
  586.  Image[Stop, 10]:= 0B181860DH;  Image[Stop, 11]:= 0A0810205H;
  587.  Image[Stop, 12]:= 0A4E73265H;  Image[Stop, 13]:= 0A7E73265H;
  588.  Image[Stop, 14]:= 0A3E73265H;  Image[Stop, 15]:= 0B1E73205H;
  589.  Image[Stop, 16]:= 0B8E7320DH;  Image[Stop, 17]:= 0BCE7327DH;
  590.  Image[Stop, 18]:= 0A4E7327DH;  Image[Stop, 19]:= 0A0E7027DH;
  591.  Image[Stop, 20]:= 0B1E7867DH;  Image[Stop, 21]:= 0BFFFFFFDH;
  592.  Image[Stop, 22]:= 0DFFFFFFBH;  Image[Stop, 23]:= 06FFFFFF6H;
  593.  Image[Stop, 24]:= 037FFFFECH;  Image[Stop, 25]:= 01BFFFFD8H;
  594.  Image[Stop, 26]:= 00DFFFFB0H;  Image[Stop, 27]:= 006FFFF60H;
  595.  Image[Stop, 28]:= 0037FFEC0H;  Image[Stop, 29]:= 001BFFD80H;
  596.  Image[Stop, 30]:= 000C00300H;  Image[Stop, 31]:= 0007FFE00H;
  597.  
  598.  FOR i:= 0 TO 31 DO  Image[User,  i]:= 0;  END;
  599.  
  600.  IF NOT NewDial (ADR(Tree), Dialog) THEN  HALT;  END;
  601.  
  602. END mtAlerts.
  603.  
  604.