;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; stage 1 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [bits 16] [org 0x7c00] jmp stage1 STR_1: db "Fool Loader Stage 1. v0.1",0 STR_2: db "Starting Stage 2",0 STR_BOOT: db "boot drive: ",0 BOOT_DRIVE: db 0xff ; remember the bootdrive here %include "boot/print_string_16.asm" %include "boot0/disk_load_16.asm" stage1: ;remember BOOT_DRIVE (as was set by BIOS) mov [BOOT_DRIVE],dl ;first of allsetup the stack (Right under mbr) ;guaranteed ~30KB space mov bp,0x07bff mov sp,bp call print_clear call print_nextline ;pr message mov bx, STR_1 call print_string call print_nextline ;show bootdrive mov bx, STR_BOOT call print_string mov al,[BOOT_DRIVE] call print_hex_byte call print_nextline call disk_load_16 ; loads stage 2 ;entering stage2 message mov bx, STR_2 call print_string call print_nextline call print_nextline mov dl,[BOOT_DRIVE] 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