diff --git a/00-environment/README.md b/00-environment/README.md index 08cf531..fd85aaa 100644 --- a/00-environment/README.md +++ b/00-environment/README.md @@ -3,4 +3,7 @@ available for you. On a mac, [install Homebrew](http://brew.sh) and then `brew install qemu nasm` -Don't use the Xcode developer tools `nasm` if you have them installed, they won't work for the most cases. +Don't use the Xcode developer tools `nasm` if you have them installed, they won't work for the most cases. Always use `/usr/local/bin/nasm` + +Furthermore, on a mac, qemu is split into multiple binaries. You will want +to call `qemu-system-x86_84 *binfile*` diff --git a/01-boot-sector/.README.md.swp b/01-boot-sector/.README.md.swp deleted file mode 100644 index dc243f9..0000000 Binary files a/01-boot-sector/.README.md.swp and /dev/null differ diff --git a/01-boot-sector/README.md b/01-boot-sector/README.md index 8b75e10..f641e35 100644 --- a/01-boot-sector/README.md +++ b/01-boot-sector/README.md @@ -1,5 +1,8 @@ This is very exciting, we're going to create our own boot sector! +Theory +------ + When the computer boots, the BIOS doesn't know how to load the OS, so it delegates that task to the boot sector. Thus, the boot sector must be placed in a known, standard location. That location is the first sector @@ -15,3 +18,37 @@ e9 fd ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa ``` + +It is basically all zeros, ending with the 16-bit value +`0xAA55` (beware of indianness, x86 is little-endian). +The first three bytes perform an infinite jump + +Simplest boot sector ever +------------------------- + +You can either write this with a binary editor, or just write a very +simple assembler code: + +``` +; Infinite loop (e9 fd ff) +loop: + jmp loop + +; Fill with 510 zeros minus the size of the previous code +times 510-($-$$) db 0 +; Magic number +dw 0xaa55 +``` + +To compile: +`nasm -f bin boot_sect_simple.asm -o boot_sect_simple.bin` + +> OSX warning: if this drops an error, read chapter 00 again + +I know you're anxious to try it out (I am!), so let's do it: + +`qemu boot_sect_simple.bin` + +You will see a window open which says "Booting from Hard Disk..." and +nothing else. When was the last time you were so excited to see an infinite +loop? ;-)