summaryrefslogtreecommitdiff
path: root/boot/acer/mbr.asm
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-08-31 15:04:44 +0200
committerMichal Idziorek <m.i@gmx.at>2014-08-31 15:04:44 +0200
commit3fa203061bdae80c75c5f08afa1a607b1c62c075 (patch)
tree6bd278bc41d741531ce61438bca5d2b180c4ab64 /boot/acer/mbr.asm
parentcd7312578948b7aee6bba8e91fbbc84b06f2f586 (diff)
updated boot loader supports for LBA mode
Now booting from usb stick on my Acer Aspire works fine too :)
Diffstat (limited to 'boot/acer/mbr.asm')
-rw-r--r--boot/acer/mbr.asm167
1 files changed, 0 insertions, 167 deletions
diff --git a/boot/acer/mbr.asm b/boot/acer/mbr.asm
deleted file mode 100644
index b3ae034..0000000
--- a/boot/acer/mbr.asm
+++ /dev/null
@@ -1,167 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;
-; THE FOOL-BOOT-LOADER
-;
-; So we have just been loaded by the BIOS and are in 16-bits real mode!
-; Now the following work will bee accomplished (chronologically):
-;
-; * BOOT_DRIVE set
-;
-; * 50 sectors of our kernel loaded at KERNEL_OFFSET from floppy
-;
-; * memory map made available at MEMMAP_OFFSET
-; (check at MEMMEP_SIZE_OFFSET for number of entries)
-;
-; * the VESA mode specified by VESA_MODE_SELECT will be set up
-; (check at VESA_MODES, and VESA_MODE_INFO
-; for additional information)
-;
-; * interrupts disabled
-;
-; * 32-bit protected mode set up.
-;
-; * esp set to 0x90000 (Todo: take care of it!?)
-;
-; * A20 gate opened (Todo: really necessary?)
-;
-; * PICs configured
-;
-; * and finally we will jump into the C world to kernel_main() !
-;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;we want 16-bit instructions, before we switch to 32-bit protected mode.
-[bits 16]
-
-;define origin of boot record in memory: 0x7c00
-;this is where the BIOS per definition will put the first
-;512 bytes of data from the boot device
-;The Boot record is identified by the last 2 magic bytes: 0xaa55 (?)
-[org 0x7c00]
-
-;;define some constants
-;;where we will load our kernel into memory and some
-;;other memory locations
-;
-KERNEL_OFFSET equ 0x1000
-MEMMAP_SIZE_OFFSET equ 0x7c00+0x600
-MEMMAP_OFFSET equ 0x7c00+0x400
-VESA_MODES equ 0x8300
-VESA_MODE_INFO equ 0x8400
-VESA_MODE_SELECT equ 0x4114
-;VESA_MODE_SELECT equ 0x0
-;
-jmp boot_16 ;start boot process
-;
-;;SOME Global Data, mainly info/error strings
-BOOT_DRIVE:
- db 0xff
-STR_VERSION:
- db "v0.3.1~",0
-VESA_CHECK1:
- db " V1.",0
-VESA_CHECK2:
- db " V2",0
-VESA_CHECK3:
- db " V3",0
-CHECK_A20:
- db " A20",0
-;
-;;lets put our temporary GDT (Global Descriptor Table) here
-;;kernel should move this away
-%include "boot/GDT.asm"
-;
-;;include 16-bit real mode routines (print_string, disk_load, vesa_setup,check_a20)
-%include "boot/disk_load_16.asm"
-;%include "boot/check_a20_16.asm"
-%include "boot/print_string_16.asm"
-%include "boot/vesa_setup_16.asm"
-;
-;;include our routines for switching to 32-bit protected mode
-%include "boot/pm.asm"
-;
-;;pic_setup mapping routing
-%include "boot/pic.asm"
-;
-;;get memory map routine
-%include "boot/memmap.asm"
-;
-;;;;;;;;; BOOT 16-bit real ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;
-;;lets start
-[bits 16]
-;
-boot_16:
-;
-;
- mov bx, STR_VERSION
- call print_string
-;
-;
-; ;setup the stack
- mov bp,0x8000
- mov sp,bp
-;
-; ;remember BOOT_DRIVE (as was set by BIOS)
- mov [BOOT_DRIVE],dl
-;
-; ;Load the KERNEL (52 sectors starting at sector 2)
- mov bx,KERNEL_OFFSET
- mov dh, 52
- mov dl, [BOOT_DRIVE]
- call disk_load
-
- mov bx, KERNEL_OFFSET
- call print_string
-
-;
-; ;get memory map from bios before we enter 32 bit protected mode
- mov ax,0 ; set target address in es:di (0:offset)
- mov es,ax
- mov di,MEMMAP_OFFSET
- call BiosGetMemoryMap ; this will also put the number of entries
-; ; of the memory map at MEMMAP_SIZE_OFFSET
-;
-;a20check:
-;
-; mov bx, CHECK_A20
-; call print_string
-;
-; call check_a20
-; cmp ax,0
-; je a20check ;hang if a20 is disabled!
-;
-; ;VESA: also setup vesa stuff before entering 32 bit protected mode
- call VesaSetup
-;
-; ;finally lets enter Protected mode!!!
- call switch_to_pm
-;
-;;;;;;;;; BOOT 32-bit protected mode;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-[bits 32]
-boot_32_pm:
-;
-;; we could do ALL This inside the kernel!!!!!! TODO
-;
-; ;enable A20
-; ;http://www.brokenthorn.com/Resources/OSDev9.html
-; ;Method 3.1: Enables A20 through keyboard controller
-; ;Not all keyboard controllers support this
-; ;todo: check if this has any effect at all !?!?
- mov al, 0xdd ; command 0xdd: enable a20
-; ;mov al, 0xdf ; command 0xdf: disable a20
- out 0x64, al ; send command to controller
-
-;
-; ;pic setup
- call pic_setup
-
-;
- call KERNEL_OFFSET ;jump into our Kernel!
-;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;
-;so we get identified as MBR
-times 510-($-$$) db 0x0
-dw 0xaa55
-