delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/04/20/10:58:28

From: "Edison M. Castro" <edison_castro AT ml DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Problem with biosdisk
Date: Mon, 20 Apr 1998 10:02:32 -0400
Organization: Merrill Lynch
Lines: 43
Message-ID: <6hfksc$rov$1@news.ml.com>
NNTP-Posting-Host: 165.177.116.209
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

I have written an fdisk replacement program to manage disk partitions. This
program works without problem when compiled with djgcc v1.x.

I decided to migrate it to version 2.x, I compile it , put it in a dos
floppy, boot up the machine and when my code executed in some machines, it
frozed.

I can not, for the life of me, discern the possible causes for this problem.
It is not tie up to any special type of hardware or processor.

I have replaced the call to biosdisk with __int86x, __dpmi_int, __go32_int,
etc with the same results. I think I have found some type of problem with
the dpmi host or something like that.

Here is the code

int getGeometry(int dev, unsigned *c, unsigned *h,unsigned *s)
{
  int i;
  unsigned char buf[4];

  if (dev < 0 || dev > 9)
    {
      fprintf(stderr,"%s: Incorrect device number\n", dev);
      return(1);
    }

    i=biosdisk(8,dev | 0x80,0,0,0,0,buf);   <<===========>> Machine freeze
right here

   if (i!=0)

     /* fprintf(stderr,"%s: can't get disk parameters\n", dev); */
     return (1);
   }

  *c = ((buf[0] & 0xc0 ) << 2) + buf[1] + 1;
  *h = buf[3] + 1;
  *s = buf[0] & 0x3f;
  return (0);
}


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019