Contents of the GRMOUSE.TXT file
GraphMouse for FoxPro
Sensation! Some of you might think this program is impossible. It is a must for all FoxPro users that have a mouse and a VGA graphics card.
From now on you will no longer see a square box as a mouse pointer which is ugly and hard to position. You will have a real graphic arrow that can be moved pixel by pixel, giving you the same feeling as popular programs operating in graphic mode. It will totally renew the way you interact with the best database program on the market.
Developers of FoxPro applications will be the first database programmers having a graphic mouse pointer in Text modes, combining the speed of a text mode interface with the ease of use of a graphical one for their own applications.
This version here is Demo-Freeware. It has limited features. See the registration section to get information on how to get a full featured End-User or Developer version.
To put your mouse in graphics mode you simply type:
in the command window, or you choose 'Do... ^D' from the Program menu popup and select 'GRMOUSE.APP'.
You need to have a VGA Graphics Card installed in your system.
You need to have a Mouse device connected and the mouse driver loaded.
You need to have the line 'EMS64=OFF' in your FoxPro configuration file. (mostly CONFIG.FP).
If one of the above does not meet the conditions you will get a warning, or it may not be possible to install GrMouse.
Once loaded you can use your mouse like you are used to, but now your mouse will be more easy to position and look like a real graphic arrow.
To disable the graphic mouse pointer simlply 'DO' the .APP again and choose < Remove >.
Graphic Mouse will automatically be removed if one of the following situations occur:
- SET MOUSE ON/OFF statement is executed
- External programs are executed with the !/RUN command.
- Options like FoxDoc/FoxGraph are selected, which will invoke FoxSwap.
- QUIT is selected to leave FoxPro.
This is for safety reasons, because some Interrupts have to be restored to their previous state, before one of the above actions can be performed without crashing the system.
In the registered version you can decide yourself, whether you want auto shut off, or not.
Allthough not necessary, it is a good idea to remove GraphMouse via the Install application (GrMouse.APP), before QUITting FoxPro.
There are some limitations which are caused be the VGA Hardware and can not be overcome:
1. To display a graphic mouse pointer 4 ASCII characters in the range from C0h to DFh (192-223 Decimal) can not be used by the application. These characters are permanently redifined if you move the mouse. To watch the redifinement activate 'Special Characters' from menu pad 'System'.
Currently the following Characters, which are not used by FoxPro are used as default:
- CHR(204) CCh
- CHR(206) CEh
- CHR(213) D5h
- CHR(215) D7h
if GrMouse is currently installed, you will see the redifinement now.
With the registered version of GrMouse you can select yourself which 4 Characters should be used for redefinition. However this Chars need to be in range from C0h to DFh.
2. The VGA Characters are displayed using a 9x16 matrix. That means Characters are 9 dots wide and 16 dots high. The font used in Text mode 3h (80x25 Chars) is only 8 dots wide. The 8th. line from graphic characters in range C0h-DFh is doubled to enable contiguous boxes.
Since Characters in this range have to be used to display a contiguos mouse pointer you will see some 'dirt' when moving the mouse over characters that are 8 pixel wide like 'W' or 'M'. The 8th. line of this chars will be doubled automatically making them a little thicker.
This flaw will only be seen in Text modes with 9 dots wide Chars. Most extended text modes (132x25, 100x40 etc.) use characters which are only 8 pixels wide, so this 'dirt' will disappear.
3. Color: Since characters in text mode can only have 2 color attributes (Foreground/Background) your mouse pointer will allways have the foreground color of the character it is moved over.
4. This DEMO version will permanently redisplay the mouse pointer if it has been overprinted by FoxPro. In the registered version you can decide, whether the mouse pointer shall allways be displayed, or only when FoxPro attempts to redisplay it.
5. This DEMO version only supports the 80x25 Char Mode with 9x16 char cell. The registered version will automatically sense the character size and install an appropriate sized mouse pointer. However, you can try the extended Video modes of your VGA Card. They will work, but the mouse pointer will be distorted.
Registered copys of GrMouse for FoxPro are available in 2 forms:
1. User package:
- Registered version of GrMouse
- Supports all extended VGA-Text modes
- Choice of 3 different mouse-pointer styles available
- Choice of permanent mouse display, or FoxPro triggered
- Utility to set mouse movement increment (mouse speed)
- Works with FoxPro 1.02 and FoxPro 2.0
- free program updates
registration fee for the user package is US$25 plus US$3 shipping and handling if mailed to location outside europe. Please tell Disk size (3 1/2" or 5 1/4").
2. Developer package:
- all of the user package
- fully (english) documented assembler source code
- All FoxPro program source codes
- Directly CALLable .BIN module (no (c) message)
- Enhanced .BIN for displaying self defined mouse pointers
- A FoxPro utility to design and store your own mouse pointers
- Enhanced .BIN to manipulate any of the 256 Characters of the VGA Char Set.
- no license fee to pay if GrMouse is integral part of your application.
registration fee for the developer package is US$50 plus US$3 shipping and handling if mailed to location outside europe. Please tell Disk size (3 1/2" or 5 1/4").
GraphMouse for FoxPro was made by:
D-6073 Egelsbach / Frankfurt
Germany (theres only one left)
To get a full featured registration version do the following:
Send me a check drawn on a german bank with the amount in US$ above, or make a T/T or Swift payment to following account:
Konto-Nr. 154 210
Bank: Volksbank Egelsbach eG, BLZ 500 691 87
: D -6073 Egelsbach, Germany
Please leave your full adress when ordering. If you are a compuserve member tell me your ID for faster correspondence.
You will receive future update and upgrade information.
How does it work?
The functional part of GraphMouse is written in assembly language. After activation it is triggered by any mouse movement. It installs interrupt handlers for INT 33h (Mouse Interrupt) and INT 1Ch (Ticker Interrupt) and therefore should not be RELEASED while activated (only if you want to crash your system).
To display a graphic arrow 4 characters of the extended Char-Set are permanently redifined to give a graphic image of the mouse pointer and the text it is moved over. Theses characters are then swaped with the original screen contents. The Mouse position then gets adjusted and the original Mouse handler is called.
The ticker handler (in this demo version) looks if any part of the mouse pointer has been overprinted by FoxPro. If so, the Mouse pointer will be redisplayed. The ticker Int is called about 18 times a second, so you might notice a short delay before the mouse pointer appears again.
To insure a safe shutdown, GrMouse watches for a mouse reset request (INT33h Function0) and disables itself.
The length of the compiled binary file is less then 3KB.
It works with VGA/Mono and VGA/Color, FoxPro 1.2 and 2.0 (Demo will only work with 2.0 because of .APP)
This program has been thoroughly tested in following environments. Shure, I can not test every graphic card and mouse driver, so it would be nice if you send a note if the program works or not on your system with different configuration.
Microsoft Mouse Driver Vrs. 6.24
Microsoft Mouse Driver Vrs. 7.03
Microsoft Mouse Driver Vrs. 7.04
VGA Graphic Cards:
Orchid Prodesigner VGA 512K (Tseng ET3000)
Trident Super TVGA (Trident)
Oak VGA 256K (Oak)
Optima Mega VGA 1024 (Tseng ET3000)
IBM PS/2 Model 55 (IBM)
FoxPro 1.0 was the first text mode program I used with added functionality thru mouse usage. However, I allways was disappointed by the way the mouse pointer appeared on the screen. Too often I clicked the wrong menu option or button because mouse movement was limited to the text mode (char-cell) resolution. After a while I found that mouse usage slowed down my work, since I was very careful to correctly position the mouse pointer.
Early this year I read about character redefinition while involved in another program that called the mouse driver. This was the birthday of the idea to permanently redifine some characters of the VGA-Pattern generator while the mouse cursor is moved. However I did not start any trials, since I had no knowledge about graphic cards and more important: no time.
But then later this year, shortly after I received FP 2.0 (still with old style mouse pointer) I was confronted with a Turbo Pascal program which should do for TP exactly what I planed to do for FoxPro earlyier. The Pascal program did not work at all on all VGA cards I tested (see compatiblity list) it distorted the screen and crashed, but it was the starting point for me to get deeper into the VGA material and finally, because I had some more time, lead to this program here.
The functional part of it has been written in assembly language. It was implemented with the old style LOAD/CALL interface (I'm still waiting for the API Lib, don't even have the german FP 2.0 version).
For those of you who want to know it works in detail, see the 'How does it work' section of this document.
Thanks to Hank Fay of Compuserve Forum for the EMS64 tip.
Thats all folks, have fun with it. If you like it, tell your friends. If you dont like it tell me.