After several months of slow going, I've managed to make enough changes to justify an update of the LoIS preview web page. While no new code has been added, I have filled in many (but certainly not all) of missing sections. I've also added new ones, including what is probably an overly long introduction :\ and sections covering getting and using the tools mentioned in the document (NASM, FunnelWeb, and for Windows users, partcopy). I've even managed to find a way to include the resulting assembly code back into the document without it getting mangled, though it does come out rather odd looking because of the peculiar way Funnelweb spaces lines of code.
I would deeply appreciate any (useful) comments on this, no matter how harsh. TIA.
New LoIS update
RE:New LoIS update
Would you mind posting the URL for the LoIS preview web page? I can't seem to find a link in the Links or OSDev Ring pages on this site, or in the most recent 10 pages of the message board.
Thanks in advance.
Thanks in advance.
RE:New LoIS update
OK, that was a mistake; I meant to include it originally, but must have forgotten somehow. The link is
http://www.mindspring.com/~scholr/tech/LoIS/
Thank you for pointing this out.
http://www.mindspring.com/~scholr/tech/LoIS/
Thank you for pointing this out.
RE:New LoIS update
Okay, your feedback (mostly grammar and spelling nits):
The link to the 'LoThere! system is dead.
Section 2.1: The CPU actually starts executing at a higher address than the one given. The segment:offset address varies by CPU type, and the CPU is allowed to hack the segment cache to provide an address not normally available in Real Mode. This is a moot point by the time the bootsector gets control, of course.
Section 3.2.1: 'those being' should probably be 'these being'.
Section 3.2.2: 'could be otherwise lost' should probably be 'could otherwise be lost' or 'otherwise could be lost'.
Section 3.3: 'weaved' might want to be 'woven', but I'm willing to concede the point. 'have' should probably be 'has'. 'variances in different' might want to be 'differences between'.
Section 5.1.3.1: I was under the impression that some systems started at 07C0:0000. I will freely admit to possibly being wrong here, but many boot sectors spend the 5 bytes needed to force the issue. You mention this in Section 6.1, but it might be a good idea to mention it here as well.
Section 5.3.1: 'develop you software' should be 'develop your software'. 'what will be done' should probably be 'what we will do'.
Section 6.3.1: The ASCII character EOL is -not- 0x00. 0x00 is ASCII NUL. This will almost certainly engender confusion once people actually start dealing with ASCII control codes. I would simply use ', 0' instead of ', EOL' or ', NUL' at the end of such a text string. 'interpret you data' should be 'interpret your data'.
Section 6.3.2.1: 'To call the BIOS function' should be 'To call a BIOS function'. The Real Mode interrupt table is 1024 bytes long, not 256 bytes long. The real reason we use interrupts is that they're a lot more compact on the calling side than a far call to the BIOS (there's no reason the BIOS couldn't start with a set of 3-byte jumps to various points internal, which obviates the argument that no program could be written to work on every BIOS). BIOS function 10/0E takes a value in BX as well for text page and character attributes (I typically use 7, which is low-intensity white on page 0).
Section 6.3.2.2: Why not use LODSB? This is the bootsector, space is more important than speed. Why not use 'or al, al' instead of a compare, since it's 1 byte shorter?
Section 6.5: 'prinst' should be 'prints'. It is also quite possible to write a bootsector that doesn't print any strings at all, and sometimes this is necessary (lack of space).
Other than that, it looks good.
The link to the 'LoThere! system is dead.
Section 2.1: The CPU actually starts executing at a higher address than the one given. The segment:offset address varies by CPU type, and the CPU is allowed to hack the segment cache to provide an address not normally available in Real Mode. This is a moot point by the time the bootsector gets control, of course.
Section 3.2.1: 'those being' should probably be 'these being'.
Section 3.2.2: 'could be otherwise lost' should probably be 'could otherwise be lost' or 'otherwise could be lost'.
Section 3.3: 'weaved' might want to be 'woven', but I'm willing to concede the point. 'have' should probably be 'has'. 'variances in different' might want to be 'differences between'.
Section 5.1.3.1: I was under the impression that some systems started at 07C0:0000. I will freely admit to possibly being wrong here, but many boot sectors spend the 5 bytes needed to force the issue. You mention this in Section 6.1, but it might be a good idea to mention it here as well.
Section 5.3.1: 'develop you software' should be 'develop your software'. 'what will be done' should probably be 'what we will do'.
Section 6.3.1: The ASCII character EOL is -not- 0x00. 0x00 is ASCII NUL. This will almost certainly engender confusion once people actually start dealing with ASCII control codes. I would simply use ', 0' instead of ', EOL' or ', NUL' at the end of such a text string. 'interpret you data' should be 'interpret your data'.
Section 6.3.2.1: 'To call the BIOS function' should be 'To call a BIOS function'. The Real Mode interrupt table is 1024 bytes long, not 256 bytes long. The real reason we use interrupts is that they're a lot more compact on the calling side than a far call to the BIOS (there's no reason the BIOS couldn't start with a set of 3-byte jumps to various points internal, which obviates the argument that no program could be written to work on every BIOS). BIOS function 10/0E takes a value in BX as well for text page and character attributes (I typically use 7, which is low-intensity white on page 0).
Section 6.3.2.2: Why not use LODSB? This is the bootsector, space is more important than speed. Why not use 'or al, al' instead of a compare, since it's 1 byte shorter?
Section 6.5: 'prinst' should be 'prints'. It is also quite possible to write a bootsector that doesn't print any strings at all, and sometimes this is necessary (lack of space).
Other than that, it looks good.
RE:New LoIS update
Thank you very much, Jamthiel. You have given me a lot to work with, and your critques all look to be spot on. I will try to get these corrections and suggestions incoroprated into LoIS in the next few days, as time permits.
Sorry for the delay in responding.
Sorry for the delay in responding.