[comp.lang.c] "Divide error" with TC 2.0 program

brent@sactoh0.UUCP (Brent K. Barrett) (12/15/89)

 I'm working on a TC 2.0 project, and something very frustrating
has come up.  I have a function, send(), that sends formatted
output to the screen via DMA or BIOS calls (internal variable).
Whenever I use a floating point format in my calls to send(), I get
a "Divide error" and a crash to the DOS prompt.
 
 Here's send():
/*
 *  send()
 */
void send(int x, int y, const char *str, ...)
{
    va_list argptr;
    char outstr[255];
 
    va_start(argptr, str);
    vsprintf(outstr, str, argptr);
    va_end(argptr);
    if (bool.bios)
        biossend(x, y, outstr);
    else
        memsend(x, y, outstr);
}
 
 I get no compiler/linker errors or warnings when compiling my
program (which I can not include for both size and security
reasons).  I'm using compact model, but have tried all other models
(that will hold the data) without change.  If I comment out the
first call to send() that uses the %f format, it will crash on the
next, and so forth.  I have linked mathc and emu, so that's not the
problem.
 
 I'm very frustrated and have lost about 4 days work over this
problem, so I really hope someone out there can at least tell me
*why* the "Divide error" happens.  Just that would probably be
enough to kick my brain into gear again and figure this thing out.
 
 Please E-mail your responses and I will post a summary.  Thank you
very much.

-- 
  ////////      Novucivitas: The Future of Citadel       //////// 
 ///    US 916 725 0674 3/12/2400 bps GEMAIL: B.K.BARRETT    /// 
////////          ..ames!pacbell!sactoh0!brent         //////// 

czmurek@drunivac.uucp (12/15/89)

In article <2244@sactoh0.UUCP>, brent@sactoh0.UUCP (Brent K. Barrett) writes:
>  I'm working on a TC 2.0 project, and something very frustrating
> has come up.  I have a function, send(), that sends formatted
> output to the screen via DMA or BIOS calls (internal variable).
> Whenever I use a floating point format in my calls to send(), I get
> a "Divide error" and a crash to the DOS prompt.
>  
>  Here's send():
>  
>  I get no compiler/linker errors or warnings when compiling my
> program (which I can not include for both size and security
> reasons).  I'm using compact model, but have tried all other models
> (that will hold the data) without change.  If I comment out the
> first call to send() that uses the %f format, it will crash on the
> next, and so forth.  I have linked mathc and emu, so that's not the
> problem.
>  
>  I'm very frustrated and have lost about 4 days work over this
> problem, so I really hope someone out there can at least tell me
> *why* the "Divide error" happens.  Just that would probably be
> enough to kick my brain into gear again and figure this thing out.
>  

Brent:
	I think it would help alot if you were to fully explain 
yourself.  I understand that there are security considerations here, 
but could you at least tell us whether you are casting this float into 
one of the int arguments or whether it is coming in via the variable 
argument list?  Please E-mail to me direct and I will help you with 
this problem.  It will be a simple modification I am sure.

-Chris