Page 1 of 1

Why can't my OS run off of my computer?

Posted: Thu Jun 27, 2002 4:22 am
by Garfield
I really hope this is the right spot to ask this question...

I'm writing my own operating system. And, I use a BIOS interrupt (0x13) that reads a sector off of a disk (in my case, a floppy) and loads that sector at a given address. Anyway, this works on all computers, except my one computer. And what I'm thinking is that this BIOS interrupt (0x13) isn't "known" or something to my BIOS. So, the computer just doesn't continue with execution on the code. I don't understand what is wrong. What is the problem? How can I fix it?

Thanks!

Posted: Thu Jun 27, 2002 5:05 pm
by NickS
If the BIOS does not support Int 13h at all, it should not boot a floppy disk. Take a look at the sample (hard drive) MBR code at this location for an example; the MBR requires the Int 13h code to exist. There must be some other factor involved.

Posted: Thu Jun 27, 2002 8:32 pm
by Garfield
So what do you think could be causing my problem?

Thanks!

Posted: Thu Jun 27, 2002 9:03 pm
by Rainbow
Look for bugs in your code.

Posted: Fri Jun 28, 2002 3:58 am
by Garfield
If it was my code, then it wouldn't work on ANY computer. It just doesn't work on my one computer...

Posted: Fri Jun 28, 2002 10:51 am
by NickS
Garfield wrote:If it was my code, then it wouldn't work on ANY computer. It just doesn't work on my one computer...
I would write some code specifically to check Int 13h operation on that computer. Do all subfunctions fail ? Take a look at the sample at the link I posted. If the machine can boot a diskette, I would boot a DOS diskette with debug and hand-assemble some code into RAM to do this.

(It was so much easier on the PDP-11/05. Well, OK, it wasn't. but at least you had flashing lights and the switches were such pretty colours.)

Posted: Fri Jun 28, 2002 3:48 pm
by Garfield
I just pin-pointed what exactly is causing the problem, and it's not INT 13h. It's a simple divide! The line of code is:

div WORD [SectorsPerTrack]

Anyways, I don't know how much that means to you (I don't know if you know Assembly). I don't know why my one computer can't handle this divide...

Posted: Fri Jun 28, 2002 4:08 pm
by NickS
Garfield wrote:I just pin-pointed what exactly is causing the problem, and it's not INT 13h. It's a simple divide! The line of code is:

div WORD [SectorsPerTrack]

Anyways, I don't know how much that means to you (I don't know if you know Assembly). I don't know why my one computer can't handle this divide...
Pants-ium CPU on this one ? :wink:

Posted: Fri Jun 28, 2002 7:42 pm
by Rainbow
Early Pentium had bug in FDIV. I think that there's a divide overflow - just like in Award BIOSes - 32GB and 64GB bugs.

Posted: Sat Jun 29, 2002 3:26 am
by Garfield
Nope, AMD...