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!
Why can't my OS run off of my computer?
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.
Tested patched BIOSes. Untested patched BIOSes.
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"
Look for bugs in your code.
Patched and tested BIOSes are at http://wims.rainbow-software.org
UniFlash - Flash anything anywhere
UniFlash - Flash anything anywhere
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.Garfield wrote:If it was my code, then it wouldn't work on ANY computer. It just doesn't work on my one computer...
(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.)
Tested patched BIOSes. Untested patched BIOSes.
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"
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...
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 ?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...

Tested patched BIOSes. Untested patched BIOSes.
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"
Emails *will* be ignored unless the subject line starts "Wim's BIOS forum"
Early Pentium had bug in FDIV. I think that there's a divide overflow - just like in Award BIOSes - 32GB and 64GB bugs.
Patched and tested BIOSes are at http://wims.rainbow-software.org
UniFlash - Flash anything anywhere
UniFlash - Flash anything anywhere