DIVEFIX V2.0 is Copy(c)right 1989,1993 by Gary M. Raymond, New Orleans, La.
PROVIDE a FIX for DOS's annoying DIVIDE overflow system abort!
Another powerful utility from the DiskSave Series by
Gary M. Raymond
New Orleans, La. 70182
DIVEFIX.COM DIVEFIX TSR Utility.
DIVEFIX.DOV This document.
DIVFAULT.COM Simulates a divide error overflow.
System requirements: PC/XT/AT, DOS, any, 128k+ ram, floppy
with hard drive, mono or color, any type graphic adapter.
For technical information about this utility see end of doc.
Q What is DIVEFIX?
A DIVEFIX is a very small, powerful TSR utility, written in assembler,
whose purpose is to prevent the fatal DOS DIVIDE overflow error from
stopping some games, utilities and applications from continuing to
operate. This bothersome error condition operates through Interrupt
Zero. It is triggered anytime One: a division occurs (for whatever
reason or circumstance) where the divisor is zero. Two: whenever
the results are too large for the eight bit destination register.
(as in mov ax,0100; mov bl,1; div bl - 0100=256, 1 over 255). This
is sometimes a nuisance to program around and frequently overlooked
in many programs particularly if it was not a real program concern.
Q How does DIVEFIX work?
A DIVEFIX first attempts to determine what platform you have (8086/88,
80286/80386,486). This is important because PC's and AT handle the
divide error situation differently. Once this is known, DIVEFIX
takes over the original "Interrupt zero" ISR (interrupt service
routine) and replaces it with one of its own. (the choice of which
is determined before hand by detecting your processor type. Now, if a
divide fault occurs, DIVEFIX's own IRS handles the problem. Rather
than crashing the program and returning you to DOS, DIVEFIX's ISR
returns control back to the application at the appropriate location,
past the error causing code, and things continue to proceed as
Q How do I load or run DIVEFIX?
A Type its name at the command prompt. You will see a message appear
that it is loaded and functioning. You could also run it from your
autoexec batch or within any other batch that you normally load
any application that experiences the divide error problem. By
entering DIVEFIX twice you can load and unload automatically.
Q Can I disengage or unhook DIVEFIX after it is loaded?
A EASY! Just retype DIVEFIX anytime at the dos prompt and DIVEFIX
unhooks cleanly and quickly.
Q How can I test DIVEFIX to see if it's working?
A Use the test utility, DIVFAULT.COM supplied with this package.
First, run DIVFAULT without DIVEFIX loaded and you will notice the
DOS Divide error message appearing immediately after running
DIVFAULT. Now load DIVEFIX then run FIVFAULT again. This time
the DOS prompts returns, but WITHOUT indicating a DIVIDE error
V2.0 12/20/93 First public release
³ MEMBER ³ Society of
³ ÚÄÄÄÄÄÄÁÄÄ¿ Independent
³ ³ ³ Shareware
ÀÄÄ´ þ ³ Authors
³ º ³
This program is produced by a member of the Society of Independent
Shareware Authors (SISA). The Society wants to ensure that all
valid shareware principles actually work for you and SISA members.
The principle behind shareware distribution is simple: try before
you buy. Society members agree to license all shareware for a
minimum of 10 days, free of charge, to first-time users as an
evaluation period. After 10 days, users are then obligated to
license their copy with the Society member. Society members are
obligated to provide high quality, useful shareware, but are free to
choose whatever marketing methods suit their specific needs. SISA-
sanctioned marketing methods include: demonstration versions;
providing printed documentation after purchase; registration keys
that unlock additional features not necessary to determine basic
usefulness; and providing bug fixes free of charge. Any Shareware
author may become a member of SISA without cost by simply agreeing
to the above conditions and displaying, at their option, this logo
in their documentation.
Gary Raymond warrants that the software contained herein will
perform in substantial compliance with the documentation
accompanying the software. If you report, in writing, a significant
defect to us, and we are unable to correct it within 90 days of the
date you report the defect, you may return the software and
accompanying materials, and we will refund the purchase price.
Diskettes and Documentation:
Gary Raymond warrants all diskettes and documentation to be free
of defects in materials for a period of 30 days from the date of
purchase. In the event of notification within the warranty period
of defects in any materials, Gary Raymond will replace the
defective diskette or documentation.
The remedy for breach of the warranty shall be limited to
replacement and shall not encompass any other damages, including but
not limited to loss of profit, special, incidental, consequential,
or similar damages, losses, or claims.
Gary Raymond specifically disclaims all other warranties, expressed
or implied, including but not limited to, implied warranties of
merchantability and fitness for a particular purpose with respect to
defects in the diskette and documentation, and the program license
granted herein, in particular, and without limiting operation of the
program license with respect to any particular application, use, or
purpose. In no event shall Gary Raymond be liable for any loss of
profit or any other commercial damage, including but not limited to
special, incidental, consequential or other damages.
This statement shall be construed, interpreted, and governed by the
laws of the State of Louisiana.
Registering your copy will help continue the competitive advantages
of providing economical shareware. Upon receipt of your payment I
will provide you with a copy of the latest version and notify you of
all future upgrades. Your patronage is appreciated.
My no-nonsense license:
Your one-time registration fee will license you to use DIVEFIX on
any number of personal computers owned directly and personally by you
in any non-commercial environment.
Re-distribution via electronic transmission, or down loading, is
allowed without further permission. Re-distribution of the Shareware
version of DIVEFIX, for a fee, is also allowed without further
permission as long as that cost is limited to no more than two
dollars per copy, if supplied on any physical disk media.
The assembler source code for DIVEFIX.COM is available for sale at
$50 per copy. The source is based on the A86 assembler / compiler
but is generic enough to be compatible with most all assemblers
with very minor changes.
Yes Gary, I can really make use of your program and would like to
register and obtain the latest version as well as get on your mailing
list for future upgrades and new releases!
DIVEFIX V2.0 Private User License ........(USA only)........ $5.00
Registered users will be disked the latest version, will be entitled
to any bug fixes free of charge, and receive a free disk containing
all of my other nifty shareware programs and utilities.
For information about commercial and/or multiple site licensing,
contact the undersigned.
City & State ___________________________________________________
ZIP _____________________________ Phone _________________________
Send registration check or money order to:
Gary M. Raymond
New Orleans, La. 70182
DIVEFIX is a sophisticated TSR utility written entirely in
assembler. The fix involved is to reset the divisors quotient to
zero, a logical maneuver if not exactly mathematically proper, to
handle the error. Since the quotient destination of an assembler DIV
mnemonic is always AX, our ISR for Int 0 need only contain an xor
ax,ax followed by an IRET. Within the realm of the 8088, this places
the IP at the next instruction after the DIV. Assuming the running
application can handle or is aware of the possibility of the new
zero quotient, everything is now in harmony. Unfortunately, the AT
class CPU's (80286 etc) do things differently. They return the IP
BACK to the cause of the troublesome DIV instruction again. Thus
causing lockups, crashes or otherwise weird system behavior. In the
case of the AT class processors, a slightly fancier ISR must be used
to account for the need to step two or possible four bytes past the
faulty DIV instruction. This will take into account the fact that
the divisor may be either a register or a memory variable (this must
be tested for) and will therefore produce either a two or four byte
instruction. This testing involves looking at the zero and one bits
of the second byte of the opcode. So, there it is!
To one of my best friends and machine code instructor, the Padre,
alias, Machine Man, whose many patient hours of coaching and prodding
over the years helped me learn assembler so that I could create this
and many other useful DOS utility. Also, to a small handful of other
generous "Elmer's of Assembler" whose contributions over the years
have helped make my hack more efficient and elegant. Five years ago
I could not even spell Assnembler, now I are one. Thanks guys!