home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* MINIMAL.PAS *)
- (* Demonstration einiger Funktionen des Maus-Interrupts *)
- (* (c) 1989 TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM MiniMal;
-
- TYPE
- MausTyp = RECORD
- Screen, Maske : ARRAY[0..15] OF INTEGER;
- END;
- Registers = RECORD
- ax,bx,cx,dx,bp,si,di,ds,es,flags : INTEGER;
- END;
-
- CONST
- Stift : MausTyp =
- (Screen : ($ffff, $ffff, $ffff, $ffff,
- $ffff, $ffff, $ffff, $ffff,
- $ffff, $ffff, $ffff, $ffff,
- $ffff, $ffff, $ffff, $ffff);
- Maske : ($2000, $7000, $B800, $A800,
- $a800, $a800, $a800, $a800,
- $a800, $a800, $a800, $a800,
- $a800, $a800, $a800, $f800));
- Hand : MausTyp =
- (Screen : ($ffff, $ffff, $ffff, $ffff,
- $ffff, $ffff, $ffff, $ffff,
- $ffff, $ffff, $ffff, $ffff,
- $ffff, $ffff, $ffff, $ffff);
- Maske : ($0c00, $1e00, $1e00, $1200,
- $1200, $13fe, $1249, $1249,
- $7249, $9001, $9001, $9001,
- $8001, $8001, $8001, $ffff));
-
- LButton = 1;
- RButton = 2;
-
- VAR
- Regs : Registers;
- taste, posx, posy : INTEGER;
-
- PROCEDURE MouseCursor(HotSpotX, HotSpotY : INTEGER;
- Form : MausTyp);
- BEGIN
- Regs.ax := 9; Regs.bx := HotSpotX; Regs.cx := HotSpotY;
- Regs.dx := Ofs(Form); Regs.es := Seg(Form);
- Intr($33, Regs);
- END;
-
- Procedure ShowMouse;
- BEGIN
- Regs.ax := 1; Intr($33, Regs);
- END;
-
- PROCEDURE GetMouse(VAR MouseX, MouseY, Button: INTEGER);
- BEGIN
- Regs.ax := 3; Intr($33, Regs); MouseX := Regs.cx;
- MouseY := Regs.dx; Button := Regs.bx;
- END;
-
- BEGIN
- ClrScr; HiRes; posx := 1; posy := 1; taste := 0;
- MouseCursor(3, 1, Stift); ShowMouse;
- REPEAT
- GetMouse(posx, posy, taste);
- IF Taste = LButton THEN BEGIN
- MouseCursor(3, 3, Stift); ShowMouse;
- Plot(posx, posy, 1);
- END;
- IF Taste = RButton THEN BEGIN
- MouseCursor(5, 5, Hand); ShowMouse;
- Plot(posx+3, posy, 14);
- END;
- UNTIL KeyPressed;
- TextMode;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von MINIMAL.PAS *)