972
edits
[unchecked revision] | [unchecked revision] |
No edit summary |
mNo edit summary |
||
(15 intermediate revisions by 12 users not shown) | |||
Line 1:
__NOTOC__
{{Tone}}
{{Rating|1}}
Line 7 ⟶ 8:
| next=[[Babystep2]]
}}
=== Your first boot sector. ===
==Code==
The following code is the smallest possible example of booting code from a
<
; boot.asm
hang:
Line 16 ⟶ 20:
times 512-($-$$) db 0
</syntaxhighlight>
The CPU starts in real mode and the [[BIOS]] loads this code at address 0000:7c00.
<
; boot.asm
hang:
Line 28 ⟶ 32:
db 0x55
db 0xAA
</syntaxhighlight>
<
;boot.asm
cli
Line 42 ⟶ 46:
db 0x55
db 0xAA
</syntaxhighlight>
You may notice that the
==Creating disk image==
The code is assembled in [[NASM]] and copied to floppy (outdated), disk or USB-sticks using partcopy, dd, or debug. Then you simply boot from
For a more detailed description, see the [[Bootable Disk]] page.
===Windows===
<
nasmw boot.asm -f bin -o boot.bin
partcopy boot.bin 0 200 -f0
OR
debug boot.bin
-W 100 0 0 1
-Q</
===Unix===
<
nasm boot.asm -f bin -o boot.bin
dd if=boot.bin of=/dev/fd0
</syntaxhighlight>
To write to a hard drive or USB-stick, use
<syntaxhighlight lang="bash">
nasm boot.asm -f bin -o boot.bin
dd if=boot.bin of=/dev/sda
</syntaxhighlight>
where replace "sda" with sdb, sdc etc. according to your configuration.
==Running the binary in QEMU==
If you don't have an old machine with floppy drive you can emulate one using QEMU (note "'''f'''da").
<syntaxhighlight lang="bash">
qemu-system-i386 -fda boot.bin
</syntaxhighlight>
But it is advisable to forget about floppies altogether, and focus on USB-sticks instead. Also if you're afraid to test your code on your development machine (that would be wise), you can use QEMU (note "'''h'''da").
<syntaxhighlight lang="bash">
qemu-system-i386 -hda boot.bin
</syntaxhighlight>
Use the QEMU monitor command to send Ctrl-Alt-Del to the VM:
<syntaxhighlight lang="bash">
sendkey ctrl-alt-delete
</syntaxhighlight>
Because of how fast emulation has become, you might need to slow down emulation speed to 1% to notice the reboots.
== References ==
Line 72 ⟶ 103:
* Interrupts by number: [http://www.osdever.net/downloads.php]
* Randall Hyde's look into the bowels of the PC: [http://webster.cs.ucr.edu/]
* QEMU [https://www.qemu.org]
[[Category:Babystep]]
|