|
@@ -3,8 +3,6 @@
|
|
|
This file is part of the Free Pascal run time library.
|
|
|
Copyright (c) 1993,97 by the Free Pascal development team
|
|
|
|
|
|
- Mouse unit containing allmost all interrupt 33h functions
|
|
|
-
|
|
|
See the file COPYING.FPC, included in this distribution,
|
|
|
for details about the copyright.
|
|
|
|
|
@@ -18,63 +16,95 @@ Unit Mouse;
|
|
|
Interface
|
|
|
|
|
|
{
|
|
|
- Mouse support functions and procedures,with error checking if mouse
|
|
|
- isn't present then the routine ends,if you want to remove error checking
|
|
|
+ Mouse support functions and procedures, with error checking: if mouse
|
|
|
+ isn't present then the routine ends. If you want to remove error checking,
|
|
|
remove the next define.
|
|
|
}
|
|
|
|
|
|
{$DEFINE MOUSECHECK}
|
|
|
|
|
|
-{check if mouse is present and sets the mouse variable}
|
|
|
- Function Check_Mouse:Boolean;
|
|
|
+{initializes the mouse with the default values for the current screen mode}
|
|
|
+ Function InitMouse:Boolean;
|
|
|
+
|
|
|
{shows mouse pointer,text+graphics screen support}
|
|
|
- Procedure Show_Mouse;
|
|
|
+ Procedure ShowMouse;
|
|
|
+
|
|
|
{hides mouse pointer}
|
|
|
- Procedure Hide_Mouse;
|
|
|
-{reads mouse position in pixels,divide by 8 to get text position,and reads
|
|
|
- buttons state(1-left button,2=right button,7=middle button)}
|
|
|
- Procedure read_mouse (var x,y:Longint;var buttons:Longint);
|
|
|
-{sets mouse pointer in text mode}
|
|
|
- Procedure Mouse_Cur(X,Y:Longint);
|
|
|
-{sets the mouse shape in text mode}
|
|
|
- Procedure Mouse_Shape(BackColor,ForColor,Ascii:LongInt);
|
|
|
-{sets the mouse ascii in text mode}
|
|
|
- Procedure Mouse_Ascii(Ascii:LongInt);
|
|
|
-{returns which button was pressed after last call to function}
|
|
|
- Function mouse_press(var x,y:Longint;button:Longint):Longint;
|
|
|
-{returns which button was realeased after last call to function}
|
|
|
- Function mouse_release (var x,y:Longint;button:Longint):integer;
|
|
|
-{set's mouse y range}
|
|
|
- Procedure mouse_yrange (min,max:Longint);
|
|
|
-{set's mouse y range}
|
|
|
- Procedure mouse_xrange (min,max:Longint);
|
|
|
-{set mouse speed}
|
|
|
- Procedure Micky(Horizontal ,Vertical:Longint);
|
|
|
-{set rectangle on screen that mouse will disappear if will point on it}
|
|
|
- Procedure Unseen_Mouse(x1,y1,x2,y2:Longint);
|
|
|
-{return if right button pressed}
|
|
|
- Function IsRPressed:Boolean;
|
|
|
-{return if left button pressed}
|
|
|
- Function IsLPressed:Boolean;
|
|
|
-{return if middle button pressed}
|
|
|
- Function IsMPressed:Boolean;
|
|
|
-{return mouse X coordinate in textmode}
|
|
|
- Function MouseX:longint;
|
|
|
-{return mouse Y coordinate in textmode}
|
|
|
- Function MouseY:longint;
|
|
|
-{return which mouse buttons are pressed, only in bit 0-2}
|
|
|
- Function MouseButtons:longint;
|
|
|
-{set window for mouse}
|
|
|
- Procedure MWindow(x1,y1,x2,y2:Longint);
|
|
|
+ Procedure HideMouse;
|
|
|
+
|
|
|
+{reads mouse position in pixels (divide by 8 to get text position in standard
|
|
|
+ text mode) and reads the buttons state:
|
|
|
+ bit 1 set -> left button pressed
|
|
|
+ bit 2 set -> right button pressed
|
|
|
+ bit 3 set -> middle button pressed
|
|
|
+ Have a look at the example program in the manual to see how you can use this}
|
|
|
+ Procedure GetMouseState(var x,y, buttons :Longint);
|
|
|
+
|
|
|
+{returns true if the left button is pressed}
|
|
|
+ Function LPressed:Boolean;
|
|
|
+
|
|
|
+{returns true if the right button is pressed}
|
|
|
+ Function RPressed:Boolean;
|
|
|
+
|
|
|
+{returns true if the middle button is pressed}
|
|
|
+ Function MPressed:Boolean;
|
|
|
+
|
|
|
+{positions the mouse pointer}
|
|
|
+ Procedure SetMousePos(x,y:Longint);
|
|
|
+
|
|
|
+{returns at which position "button" was last pressed in x,y and returns the
|
|
|
+ number of times this button has been pressed since the last time this
|
|
|
+ function was called with "button" as parameter. For button you can use the
|
|
|
+ LButton, RButton and MButton constants for resp. the left, right and middle
|
|
|
+ button}
|
|
|
+ Function GetLastButtonPress(button:Longint;var x,y:Longint): Longint;
|
|
|
+
|
|
|
+{returns at which position "button" was last released in x,y and returns the
|
|
|
+ number of times this button has been re since the last time. For button
|
|
|
+ you can use the LButton, RButton and MButton constants for resp. the left,
|
|
|
+ right and middle button}
|
|
|
+Function GetLastButtonRelease (button : Longint; var x,y:Longint): Longint;
|
|
|
+
|
|
|
+{sets mouse's x range, with Min and Max resp. the higest and the lowest
|
|
|
+ column (in pixels) in between which the mouse cursor can move}
|
|
|
+ Procedure SetMouseXRange (Min,Max:Longint);
|
|
|
+
|
|
|
+{sets mouse's y range, with Min and Max resp. the higest and the lowest
|
|
|
+ row (in pixels) in between which the mouse cursor can move}
|
|
|
+ Procedure SetMouseYRange (Min,Max:Longint);
|
|
|
+
|
|
|
+{set the window coordinates in which the mouse cursor can move}
|
|
|
+ Procedure SetMouseWindow(x1,y1,x2,y2:Longint);
|
|
|
+
|
|
|
+{sets the mouse shape in text mode: background and foreground color and the
|
|
|
+ Ascii value with which the character on screen is XOR'ed when the cursor
|
|
|
+ moves over it. Set to 0 for a "transparent" cursor}
|
|
|
+ Procedure SetMouseShape(ForeColor,BackColor,Ascii:Byte);
|
|
|
+
|
|
|
+{sets the mouse ascii in text mode. The difference between this one and
|
|
|
+ SetMouseShape, is that the foreground and background colors stay the same
|
|
|
+ and that the Ascii code you enter is the character that you will get on
|
|
|
+ screen; there's no XOR'ing}
|
|
|
+ Procedure SetMouseAscii(Ascii:Byte);
|
|
|
+
|
|
|
+{set mouse speed in mickey's/pixel; default: horizontal: 8; vertical: 16}
|
|
|
+ Procedure SetMouseSpeed(Horizontal ,Vertical:Longint);
|
|
|
+
|
|
|
+{set a rectangle on screen that mouse will disappear if it is moved into}
|
|
|
+ Procedure SetMouseHideWindow(x1,y1,x2,y2:Longint);
|
|
|
+
|
|
|
+Const LButton = 1; {left button}
|
|
|
+ RButton = 2; {right button}
|
|
|
+ MButton = 4; {middle button}
|
|
|
|
|
|
Var
|
|
|
- MouseFound:Boolean;
|
|
|
+ MouseFound: Boolean;
|
|
|
|
|
|
Implementation
|
|
|
|
|
|
{$I386_ATT}
|
|
|
|
|
|
-Function Check_Mouse:Boolean;
|
|
|
+Function InitMouse: Boolean;
|
|
|
begin
|
|
|
asm
|
|
|
xorl %eax,%eax
|
|
@@ -83,13 +113,12 @@ begin
|
|
|
popl %ebp
|
|
|
cmpw $0xffff,%ax
|
|
|
setz %al
|
|
|
- movb %al,MouseFound
|
|
|
movb %al,__RESULT
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
|
|
|
-procedure show_mouse;
|
|
|
+Procedure ShowMouse;
|
|
|
begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -102,7 +131,7 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-procedure hide_mouse;
|
|
|
+Procedure HideMouse;
|
|
|
begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -115,7 +144,7 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-procedure read_mouse (var x,y,buttons:Longint);
|
|
|
+Procedure GetMouseState(var x,y,buttons:Longint);
|
|
|
begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -136,28 +165,95 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-function mouse_press(var x,y:Longint;button:Longint):Longint;
|
|
|
-begin
|
|
|
+Function LPressed:Boolean;
|
|
|
+Begin
|
|
|
+{$IFDEF MOUSECHECK}
|
|
|
+ If (Not MouseFound) Then Exit;
|
|
|
+{$ENDIF}
|
|
|
+ asm
|
|
|
+ movl $3,%eax
|
|
|
+ pushl %ebp
|
|
|
+ int $0x33
|
|
|
+ popl %ebp
|
|
|
+ movl %ebx,%eax
|
|
|
+ andl $1,%eax
|
|
|
+ movb %al,__RESULT
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+Function RPressed:Boolean;
|
|
|
+Begin
|
|
|
+{$IFDEF MOUSECHECK}
|
|
|
+ If (Not MouseFound) Then Exit;
|
|
|
+{$ENDIF}
|
|
|
+ asm
|
|
|
+ movl $3,%eax
|
|
|
+ pushl %ebp
|
|
|
+ int $0x33
|
|
|
+ popl %ebp
|
|
|
+ movl %ebx,%eax
|
|
|
+ shrl $1,%eax
|
|
|
+ andl $1,%eax
|
|
|
+ movb %al,__RESULT
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+Function MPressed:Boolean;
|
|
|
+Begin
|
|
|
+{$IFDEF MOUSECHECK}
|
|
|
+ If (Not MouseFound) Then Exit;
|
|
|
+{$ENDIF}
|
|
|
+ asm
|
|
|
+ movl $3,%eax
|
|
|
+ pushl %ebp
|
|
|
+ int $0x33
|
|
|
+ popl %ebp
|
|
|
+ movl %ebx,%eax
|
|
|
+ shrl $2,%eax
|
|
|
+ andl $1,%eax
|
|
|
+ movb %al,__RESULT
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+Procedure SetMousePos(x,y:Longint);
|
|
|
+Begin
|
|
|
+{$IFDEF MOUSECHECK}
|
|
|
+ If (Not MouseFound) Then Exit;
|
|
|
+{$ENDIF}
|
|
|
+ asm
|
|
|
+ movl $4,%eax
|
|
|
+ movl x,%ecx
|
|
|
+ movl y,%edx
|
|
|
+ pushl %ebp
|
|
|
+ int $0x33
|
|
|
+ popl %ebp
|
|
|
+ End;
|
|
|
+End;
|
|
|
+
|
|
|
+Function GetLastButtonPress(Button: Longint;var x,y:Longint):Longint;
|
|
|
+Begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
|
{$ENDIF}
|
|
|
asm
|
|
|
movl $5,%eax
|
|
|
movl button,%ebx
|
|
|
+ shrl $1, %ebx {0 = left, 1 = right, 2 = middle}
|
|
|
pushl %ebp
|
|
|
int $0x33
|
|
|
popl %ebp
|
|
|
- andl $0xffff,%ecx
|
|
|
+ andl $0xffff,%ebx
|
|
|
andl $0xffff,%edx
|
|
|
- movl x,%ebx
|
|
|
- movl %ecx,(%ebx)
|
|
|
- movl y,%ebx
|
|
|
- movl %edx,(%ebx)
|
|
|
- movl %eax,__RESULT
|
|
|
+ andl $0xffff,%ecx
|
|
|
+ movl %ebx, __RESULT
|
|
|
+ movl x,%eax
|
|
|
+ movl %ecx,(%eax)
|
|
|
+ movl y,%eax
|
|
|
+ movl %edx,(%eax)
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-function mouse_release (var x,y:Longint;button : Longint):integer;
|
|
|
+Function GetLastButtonRelease (button : Longint; var x,y:Longint): Longint;
|
|
|
begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -165,26 +261,28 @@ begin
|
|
|
asm
|
|
|
movl $6,%eax
|
|
|
movl button,%ebx
|
|
|
+ shrl $1, %ebx {0 = left, 1 = right, 2 = middle}
|
|
|
pushl %ebp
|
|
|
int $0x33
|
|
|
popl %ebp
|
|
|
+ andl $0xffff,%ebx
|
|
|
andl $0xffff,%ecx
|
|
|
andl $0xffff,%edx
|
|
|
- movl x,%ebx
|
|
|
- movl %ecx,(%ebx)
|
|
|
- movl y,%ebx
|
|
|
- movl %edx,(%ebx)
|
|
|
- movl %eax,__RESULT
|
|
|
+ movl %ebx,__RESULT
|
|
|
+ movl x,%eax
|
|
|
+ movl %ecx,(%eax)
|
|
|
+ movl y,%eax
|
|
|
+ movl %edx,(%eax)
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-procedure mouse_yrange (min,max:Longint);
|
|
|
+Procedure SetMouseXRange (Min,Max:Longint);
|
|
|
begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
|
{$ENDIF}
|
|
|
asm
|
|
|
- movl $8,%eax
|
|
|
+ movl $7,%eax
|
|
|
movl min,%ecx
|
|
|
movl max,%edx
|
|
|
pushl %ebp
|
|
@@ -193,13 +291,13 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-procedure mouse_xrange (min,max:Longint);
|
|
|
+Procedure SetMouseYRange (min,max:Longint);
|
|
|
begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
|
{$ENDIF}
|
|
|
asm
|
|
|
- movl $7,%eax
|
|
|
+ movl $8,%eax
|
|
|
movl min,%ecx
|
|
|
movl max,%edx
|
|
|
pushl %ebp
|
|
@@ -208,24 +306,16 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-Procedure Mouse_Cur(X,Y:Longint);
|
|
|
+Procedure SetMouseWindow(x1,y1,x2,y2:Longint);
|
|
|
Begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
|
{$ENDIF}
|
|
|
- asm
|
|
|
- movl $4,%eax
|
|
|
- movl X,%ecx
|
|
|
- movl Y,%edx
|
|
|
- shll $3,%ecx
|
|
|
- shll $3,%edx
|
|
|
- pushl %ebp
|
|
|
- int $0x33
|
|
|
- popl %ebp
|
|
|
- End;
|
|
|
+ SetMouseXRange(x1,x2);
|
|
|
+ SetMouseYRange(y1,y2);
|
|
|
End;
|
|
|
|
|
|
-Procedure Mouse_Shape(BackColor,ForColor,Ascii:LongInt);
|
|
|
+Procedure SetMouseShape(ForeColor,BackColor,Ascii:Byte);
|
|
|
Begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -233,18 +323,19 @@ Begin
|
|
|
asm
|
|
|
xorl %ebx,%ebx
|
|
|
movl $0xa,%eax
|
|
|
- movl $0xff,%ecx
|
|
|
+ movl $0xffff,%ecx
|
|
|
xorl %edx,%edx
|
|
|
- movb 8(%ebp),%dh
|
|
|
+ movb BackColor,%dh
|
|
|
shlb $4,%dh
|
|
|
- addb ForColor,%dh
|
|
|
+ addb ForeColor,%dh
|
|
|
+ movb Ascii,%dl
|
|
|
pushl %ebp
|
|
|
int $0x33
|
|
|
popl %ebp
|
|
|
End;
|
|
|
End;
|
|
|
|
|
|
-Procedure Mouse_Ascii(Ascii:LongInt);
|
|
|
+Procedure SetMouseAscii(Ascii:byte);
|
|
|
Begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -254,14 +345,14 @@ Begin
|
|
|
movl $0xa,%eax
|
|
|
movl $0xff00,%ecx
|
|
|
xorl %edx,%edx
|
|
|
- movb 8(%ebp),%dl
|
|
|
+ movb Ascii,%dl
|
|
|
pushl %ebp
|
|
|
int $0x33
|
|
|
popl %ebp
|
|
|
End;
|
|
|
End;
|
|
|
|
|
|
-Procedure Unseen_Mouse(x1,y1,x2,y2:Longint);
|
|
|
+Procedure SetMouseHideWindow(x1,y1,x2,y2:Longint);
|
|
|
Begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -278,7 +369,7 @@ Begin
|
|
|
end;
|
|
|
End;
|
|
|
|
|
|
-Procedure Micky(Horizontal ,Vertical:Longint);
|
|
|
+Procedure SetMouseSpeed(Horizontal,Vertical:Longint);
|
|
|
Begin
|
|
|
{$IFDEF MOUSECHECK}
|
|
|
If (Not MouseFound) Then Exit;
|
|
@@ -293,123 +384,39 @@ Begin
|
|
|
end;
|
|
|
End;
|
|
|
|
|
|
-Function IsRPressed:Boolean;
|
|
|
Begin
|
|
|
-{$IFDEF MOUSECHECK}
|
|
|
- If (Not MouseFound) Then Exit;
|
|
|
-{$ENDIF}
|
|
|
- asm
|
|
|
- movl $3,%eax
|
|
|
- pushl %ebp
|
|
|
- int $0x33
|
|
|
- popl %ebp
|
|
|
- movl %ebx,%eax
|
|
|
- shrl $1,%eax
|
|
|
- andl $1,%eax
|
|
|
- movb %al,__RESULT
|
|
|
- end;
|
|
|
-end;
|
|
|
+ MouseFound := InitMouse;
|
|
|
+End.
|
|
|
+{
|
|
|
+ $Log$
|
|
|
+ Revision 1.5 1998-07-15 16:10:35 jonas
|
|
|
+ * new mouse uni
|
|
|
|
|
|
-Function IsLPressed:Boolean;
|
|
|
-Begin
|
|
|
-{$IFDEF MOUSECHECK}
|
|
|
- If (Not MouseFound) Then Exit;
|
|
|
-{$ENDIF}
|
|
|
- asm
|
|
|
- movl $3,%eax
|
|
|
- pushl %ebp
|
|
|
- int $0x33
|
|
|
- popl %ebp
|
|
|
- movl %ebx,%eax
|
|
|
- andl $1,%eax
|
|
|
- movb %al,__RESULT
|
|
|
- end;
|
|
|
-end;
|
|
|
+ Revision 1.3 1998/04/05 13:56:54 peter
|
|
|
+ - fixed mouse to compile with $i386_att
|
|
|
+ + linux crt supports redirecting (not Esc-codes anymore)
|
|
|
|
|
|
-Function IsMPressed:Boolean;
|
|
|
-Begin
|
|
|
-{$IFDEF MOUSECHECK}
|
|
|
- If (Not MouseFound) Then Exit;
|
|
|
-{$ENDIF}
|
|
|
- asm
|
|
|
- movl $3,%eax
|
|
|
- pushl %ebp
|
|
|
- int $0x33
|
|
|
- popl %ebp
|
|
|
- movl %ebx,%eax
|
|
|
- shrl $2,%eax
|
|
|
- andl $1,%eax
|
|
|
- movb %al,__RESULT
|
|
|
- end;
|
|
|
-end;
|
|
|
+ Revision 1.2 1998/03/26 12:25:22 peter
|
|
|
+ * integrated both mouse units
|
|
|
|
|
|
-function MouseX:longint;
|
|
|
-begin
|
|
|
-{$IFDEF MOUSECHECK}
|
|
|
- If (Not MouseFound) Then Exit;
|
|
|
-{$ENDIF}
|
|
|
- asm
|
|
|
- movl $3,%eax
|
|
|
- pushl %ebp
|
|
|
- int $0x33
|
|
|
- popl %ebp
|
|
|
- movzwl %cx,%eax
|
|
|
- shrl $3,%eax
|
|
|
- incl %eax
|
|
|
- movl %eax,__RESULT
|
|
|
- end;
|
|
|
-end;
|
|
|
+ Revision 1.1.1.1 1998/03/25 11:18:41 root
|
|
|
+ * Restored version
|
|
|
|
|
|
-function MouseY:longint;
|
|
|
-begin
|
|
|
-{$IFDEF MOUSECHECK}
|
|
|
- If (Not MouseFound) Then Exit;
|
|
|
-{$ENDIF}
|
|
|
- asm
|
|
|
- movl $3,%eax
|
|
|
- pushl %ebp
|
|
|
- int $0x33
|
|
|
- popl %ebp
|
|
|
- movzwl %dx,%eax
|
|
|
- shrl $3,%eax
|
|
|
- incl %eax
|
|
|
- movl %eax,__RESULT
|
|
|
- end;
|
|
|
-end;
|
|
|
+ Revision 1.4 1998/03/24 15:53:12 peter
|
|
|
+ * cleanup and doesn't give warnings when compiling
|
|
|
|
|
|
-function MouseButtons:longint;
|
|
|
-begin
|
|
|
-{$IFDEF MOUSECHECK}
|
|
|
- If (Not MouseFound) Then Exit;
|
|
|
-{$ENDIF}
|
|
|
- asm
|
|
|
- movl $3,%eax
|
|
|
- pushl %ebp
|
|
|
- int $0x33
|
|
|
- popl %ebp
|
|
|
- movl %ebx,%eax
|
|
|
- andl $7,%eax
|
|
|
- movl %eax,__RESULT
|
|
|
- end;
|
|
|
-end;
|
|
|
+ Revision 1.3 1998/01/26 11:56:24 michael
|
|
|
+ + Added log at the end
|
|
|
|
|
|
-Procedure MWindow(x1,y1,x2,y2:Longint);
|
|
|
-Begin
|
|
|
-{$IFDEF MOUSECHECK}
|
|
|
- If (Not MouseFound) Then Exit;
|
|
|
-{$ENDIF}
|
|
|
- mouse_xrange(x1,x2);
|
|
|
- mouse_yrange(y1,y2);
|
|
|
-End;
|
|
|
+ Revision 1.2
|
|
|
+ date: 1997/12/01 12:15:45; author: michael; state: Exp; lines: +14 -12
|
|
|
+ + added copyright reference in header.
|
|
|
|
|
|
-Begin
|
|
|
- Check_Mouse;
|
|
|
-End.
|
|
|
-{
|
|
|
- $Log$
|
|
|
- Revision 1.4 1998-05-22 00:39:25 peter
|
|
|
- * go32v1, go32v2 recompiles with the new objects
|
|
|
- * remake3 works again with go32v2
|
|
|
- - removed some "optimizes" from daniel which were wrong
|
|
|
+ Revision 1.1
|
|
|
+ date: 1997/11/27 08:33:49; author: michael; state: Exp;
|
|
|
+ Initial revision
|
|
|
|
|
|
+ Revision 1.1.1.1
|
|
|
+ date: 1997/11/27 08:33:49; author: michael; state: Exp; lines: +0 -0
|
|
|
+ FPC RTL CVS start
|
|
|
}
|