diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-09-04 23:38:33 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-09-04 23:38:33 +0200 |
| commit | 467e19b262d435f1820539bc0c85ed4fa31b9687 (patch) | |
| tree | c3ee7690b089713614309857ecfc046d6a13d160 /boot0/mbr.asm | |
| parent | 487ecc1615ccc0368f1520c1146b2b43cdab6577 (diff) | |
Finally we have a 2 stage bootloader !
This one can load the ramdis up to 0xfffff :)
Diffstat (limited to 'boot0/mbr.asm')
| -rw-r--r-- | boot0/mbr.asm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/boot0/mbr.asm b/boot0/mbr.asm new file mode 100644 index 0000000..d24bbfe --- /dev/null +++ b/boot0/mbr.asm @@ -0,0 +1,54 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; stage 1 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +[bits 16] + +[org 0x7c00] + +jmp stage1 + +STR_1: + db "Starting Fool Loader Stage 1. v0.1",0 + +STR_2: + db "Starting Stage 2",0 + +BOOT_DRIVE: + db 0xff ; remember the bootdrive here + +%include "boot/print_string_16.asm" +%include "boot0/disk_load_16.asm" + +stage1: + + ;first of allsetup the stack (Right under mbr) + ;guaranteed ~30KB space + mov bp,0x07bff + mov sp,bp + + ;remember BOOT_DRIVE (as was set by BIOS) + mov [BOOT_DRIVE],dl + + mov bx, STR_1 + call print_string + call print_nextline + + call disk_load_16 ; loads stage 2 + + mov bx, STR_2 + call print_string + call print_nextline + jmp 0x7e00 ; jump to next sector where we put stage 2 + +;fill partition table (4x16byte) with zeroes. +;(otherwise my Acer Aspire will not boot) +times 64 db 0x0 + +;so we get identified as MBR +times 510-($-$$) db 0x0 +;dw 0x0 +dw 0xaa55 + |
