Page 2 of 2

Re: what is your interface?

Posted: Tue Dec 16, 2008 10:42 pm
by Troy Martin
Love4: Duly noted, will be changed for next version. Thanks, quite helpful :P I was going by some DS/ES setups to be == 07C0h but I guess that's a no-no! [-X [-X

Re: what is your interface?

Posted: Wed Dec 17, 2008 9:08 am
by JAAman
actually, its not correct...

any bootsector that wont run if run at 07C0:0000 is flawed -- because many BIOSs actually do load it there -- some load it to 0000:7C00, others load it to 07C0:0000, and still others may load it to 50:07700...

basically, the only thing you can be assured is that whatever address it is, it will resolve to physical address 7C00


all properly written bootsectors will do one of 2 things:
1) will force CS to a specific, known value, with a FAR jump
or (my personal preference)
2) use only short branching (as long as you dont use any near instructions, there is no problem) and use a FAR to jump to the 2nd/1.5 stage

therefore, for chainloading other bootsectors, jumping to either 0000:7C00 or 07C0:0000 should work equally well (any bootsector that would have a problem with this is not properly written, and will fail on a large number of computers anyway)

Re: what is your interface?

Posted: Wed Jan 21, 2009 10:12 pm
by Love4Boobies
Nope, sorry. Not according to the BBS (BIOS Boot Specification)... I'm not saying that there aren't BIOSes that use other addresses to load the boot sectors in, but the flaw is in the BIOS, not the boot sector itself. Your solutions are for bogus BIOSes which do not follow the accepted standard.

Re: what is your interface?

Posted: Wed Jan 21, 2009 10:50 pm
by 01000101
I have a feeling you are refering to Phoenix's BBS... and that should explain the flaw in your statement.

It's A: Phoenix's and thus not universal.
and B: it was made in like '92.

A simple "JMP 0x0000:SYNC; SYNC: " should be all that's necessary.

back on topic:

My OS has a menu-based UI and you can find screenshots in the "Post a screenshot..." topic.

Re: what is your interface?

Posted: Wed Jan 21, 2009 11:10 pm
by Love4Boobies
01000101 wrote:It's A: Phoenix's and thus not universal.
Compaq, Phoenix and Intel. I can't see why they'd all work together just in order to define Phoenix's interface. It's just like saying the VGA is not standard because it was IBM's way of doing things. Well, clearly; but it has become de facto.
and B: it was made in like '92.
1996. There are even older standards that are still in use.
A simple "JMP 0x0000:SYNC; SYNC: " should be all that's necessary.


Agreed (well, ALMOST all that's necessary).
back on topic:

My OS has a menu-based UI and you can find screenshots in the "Post a screenshot..." topic.
Can't wait for you to have a working website :) I'm curious how the only commercial OS around here is doing. My alpha-stage interface can also be seen in that section. Pending: icon support, lol (but I think otherwise, I'm pleased with how things are going).

Re: what is your interface?

Posted: Wed Jan 21, 2009 11:18 pm
by 01000101
Love4Boobies wrote:
01000101 wrote:It's A: Phoenix's and thus not universal.
Compaq, Phoenix and Intel. I can't see why they'd all work together just in order to define Phoenix's interface. It's just like saying the VGA is not standard because it was IBM's way of doing things. Well, clearly; but it has become de facto.
[/quote]

ah, I skimped on some of the research, not sure how I missed Compaq and Intel.
Love4Boobies wrote: Can't wait for you to have a working website :) I'm curious how the only commercial OS around here is doing.
lol I'm not the only one developing a commercial OS here. I'll leave it at that though, I'm not sure if I'd be making a first announcement for someone.
TroyMartin is working on a website for me. Hope it turns out good. =)

Re: what is your interface?

Posted: Wed Jan 21, 2009 11:22 pm
by Brendan
Hi,
JAAman wrote:any bootsector that wont run if run at 07C0:0000 is flawed -- because many BIOSs actually do load it there -- some load it to 0000:7C00, others load it to 07C0:0000, and still others may load it to 50:07700...
Yes. Also, some BIOSs (in some old Compaq machines IIRC) think the boot loader isn't bootable if the first instruction isn't a JMP.
JAAman wrote:basically, the only thing you can be assured is that whatever address it is, it will resolve to physical address 7C00
Hmm, worst case would be something like 0xF7C1:0xFFF0.... :lol:


Cheers,

Brendan

Re: what is your interface?

Posted: Wed Jan 21, 2009 11:54 pm
by Love4Boobies
All these things make chainloading a lot harder (and loading a 2nd stage altogether, since you don't want to read over the current executing code). Perhaps the only way of doing it right is using the BIOS stack to push the current address (using a CALL) and reading CS and EIP manually (using SP); only then set up a stack and chain copy the boot code.