home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 03 / grdlagen / minimal.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-12-19  |  2.5 KB  |  80 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   MINIMAL.PAS                          *)
  3. (*  Demonstration einiger Funktionen des Maus-Interrupts  *)
  4. (*                (c) 1989 TOOLBOX                        *)
  5. (* ------------------------------------------------------ *)
  6. PROGRAM MiniMal;
  7.  
  8. TYPE
  9.   MausTyp   = RECORD
  10.                 Screen, Maske : ARRAY[0..15] OF INTEGER;
  11.               END;
  12.   Registers = RECORD
  13.                 ax,bx,cx,dx,bp,si,di,ds,es,flags : INTEGER;
  14.               END;
  15.  
  16. CONST
  17.   Stift : MausTyp =
  18.             (Screen : ($ffff, $ffff, $ffff, $ffff,
  19.                        $ffff, $ffff, $ffff, $ffff,
  20.                        $ffff, $ffff, $ffff, $ffff,
  21.                        $ffff, $ffff, $ffff, $ffff);
  22.              Maske  : ($2000, $7000, $B800, $A800,
  23.                        $a800, $a800, $a800, $a800,
  24.                        $a800, $a800, $a800, $a800,
  25.                        $a800, $a800, $a800, $f800));
  26.   Hand  : MausTyp =
  27.             (Screen : ($ffff, $ffff, $ffff, $ffff,
  28.                        $ffff, $ffff, $ffff, $ffff,
  29.                        $ffff, $ffff, $ffff, $ffff,
  30.                        $ffff, $ffff, $ffff, $ffff);
  31.              Maske  : ($0c00, $1e00, $1e00, $1200,
  32.                        $1200, $13fe, $1249, $1249,
  33.                        $7249, $9001, $9001, $9001,
  34.                        $8001, $8001, $8001, $ffff));
  35.  
  36.   LButton = 1;
  37.   RButton = 2;
  38.  
  39. VAR
  40.   Regs              : Registers;
  41.   taste, posx, posy : INTEGER;
  42.  
  43. PROCEDURE MouseCursor(HotSpotX, HotSpotY : INTEGER;
  44.                                     Form : MausTyp);
  45. BEGIN
  46.   Regs.ax := 9;  Regs.bx := HotSpotX;  Regs.cx := HotSpotY;
  47.   Regs.dx := Ofs(Form);  Regs.es := Seg(Form);
  48.   Intr($33, Regs);
  49. END;
  50.  
  51. Procedure ShowMouse;
  52. BEGIN
  53.   Regs.ax := 1;  Intr($33, Regs);
  54. END;
  55.  
  56. PROCEDURE GetMouse(VAR MouseX, MouseY, Button: INTEGER);
  57. BEGIN
  58.   Regs.ax := 3;  Intr($33, Regs);  MouseX := Regs.cx;
  59.   MouseY := Regs.dx;  Button := Regs.bx;
  60. END;
  61.  
  62. BEGIN
  63.   ClrScr;  HiRes;  posx := 1;  posy := 1;  taste := 0;
  64.   MouseCursor(3, 1, Stift);  ShowMouse;
  65.   REPEAT
  66.     GetMouse(posx, posy, taste);
  67.     IF Taste = LButton THEN BEGIN
  68.       MouseCursor(3, 3, Stift);  ShowMouse;
  69.       Plot(posx, posy, 1);
  70.     END;
  71.     IF Taste = RButton THEN BEGIN
  72.       MouseCursor(5, 5, Hand);  ShowMouse;
  73.       Plot(posx+3, posy, 14);
  74.     END;
  75.   UNTIL KeyPressed;
  76.   TextMode;
  77. END.
  78. (* ------------------------------------------------------ *)
  79. (*                 Ende von MINIMAL.PAS                   *)
  80.