Q44273: Facts About MSHERC.COM; Why Hercules Support Must Be TSR
Article: Q44273
Product(s): See article
Version(s): 1.00 1.01 2.00
Operating System(s): MS-DOS
Keyword(s): ENDUSER | s_c | mspl13_c
Last Modified: 31-MAY-1989
MSHERC.COM is a TSR (Terminate and Stay Resident) graphics driver that
is supplied with Microsoft QuickC, QuickBASIC, and the C Compiler. It
provides high-resolution graphics capability (720 x 348, 2 colors) for
the popular Hercules graphics adapter. MSHERC.COM was written in-house
at Microsoft, and first shipped as QBHERC.COM with QuickBASIC. It is
provided, in compiled form, with the above-mentioned packages, and may
be distributed by programmers writing market applications with one of
these languages.
Four of the most common questions regarding MSHERC are as follows
(this question is usually generated by one of the following three):
1. Is the source code available? Under no circumstances. Releasing the
source code for MSHERC would limit the development team's ability
to change the application for increased efficiency at some time in
the future (implementation change, with the user interface kept as
it is).
2. Why can't Hercules support be done with a BIOS call, like any other
video support?
The Hercules card is not part of the IBM standard. There is no BIOS
support. The card is easily programmable, and the manuals that
ship with a TRUE Hercules card explain in detail how to program for
the card. Clone cards frequently do not provide this information.
The MSHERC driver does the translation for the card, in a fashion
that is transparent to the user.
3. Can I build MSHERC into my program, so that I don't have to ship
the driver with my program?
No. The reason that this is a common question is that most
individuals don't realize that the driver is an active TSR, and not
just a sequence of initialization code for the Hercules Card. It
would be possible to build this support into each of the routines
in the graphics library, but it would involve quite an increase in
the size of each routine, since every time that a routine did a
BIOS call for graphic output, an alternate jump would have to be
added to a routine that performed the same operation via the
Hercules card. To build in this functionality would require the
rewriting of many graphics functions. Although the run-time source
to C 5.10 is available, this does not include any of the graphics
routines.
4. Can I use the System or spawn commands to call MSHERC from within
my program, so that I don't have to load it independently?
No. The C and QuickC compilers do memory initialization at start-up
time. At this time, memory that has been allocated through DOS
(such as a device driver or TSR program) is passed to the compiler.
Going back to DOS via a System call and loading a TSR is a very
risky proposition, because the compiler will have no knowledge of
this operation. Possible consequences include memory fragmentation,
memory overwrites, and hanging. Also, the hardware configuration
is checked during start-up initialization. Therefore, after
start-up has confirmed that no Hercules card is present, loading
MSHERC.COM would not do any good.
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.
Copyright Microsoft Corporation 1986-2002.