Babystep1: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content deleted Content added
Js (talk | contribs)
m Minor improvements and added Tone banner
Line 1:
__NOTOC__
 
{{Tone}}
{{Rating|1}}
 
Line 20 ⟶ 21:
times 512-($-$$) db 0
</source>
The CPU starts in real mode and the [[BIOS]] loads this code at address 0000:7c00. The "times 512..."-($-$$) stuffdb 0" is NASM's way of saying fill up 512 bytes with zeros. And partcopy is going to expect that (200 in Hex = 512 in Decimal). Change it and you'll see Partcopypartcopy choke.
 
Often, you will see a so-called boot signature (0xAA55) at the end. Older versions of [[BIOS|BIOSes]] looked for this in order to identify a boot sector on a disk. It is evidently unnecessary nowadays. If it's needed, the last line would be replaced with (or some version of it):
<source lang="asm">
; boot.asm
Line 33 ⟶ 34:
</source>
 
But the thing I'd really like to point out is how onceOnce you've booted, and the cursor is happily blinking on a blank screen, you might notice two things. One is that the floppy motor will turn off and the other is that you can press Ctrl-Alt-Del to reboot. The point is that [[interrupts (such as INT 0x09)]] as still being generated.
 
For kicks tryTry clearing the interrupts flag:
<source lang="asm">
;boot.asm
Line 53 ⟶ 54:
 
==Creating disk image==
The code is assembled in [[NASM]] and copied to floppy using partcopy, dd, or debug. Then you simply boot from the floppy.
 
===Windows===