-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: reorganize bootloader source code
- Loading branch information
Showing
23 changed files
with
253 additions
and
203 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,11 @@ | ||
SUBDIRS = cmd | ||
|
||
TOPGOALS = all clean install | ||
|
||
SUBDIRS = cmd | ||
|
||
.PHONY: $(SUBDIRS) | ||
$(SUBDIRS): | ||
@echo "📁 bin/$@" | ||
DESTDIR=$(DESTDIR)/bin $(MAKE) -C $@ $(MAKECMDGOALS) | ||
@DESTDIR=$(DESTDIR)/bin $(MAKE) -C $@ $(MAKECMDGOALS) | ||
|
||
.PHONY: $(TOPGOALS) | ||
$(TOPGOALS): $(SUBDIRS) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,13 @@ | ||
format COFF | ||
|
||
section '.text' code | ||
|
||
public main | ||
main: | ||
int 0x2A | ||
|
||
section '.data' data | ||
|
||
INCLUDE 'builtins.inc' | ||
format COFF | ||
|
||
section '.text' code | ||
|
||
public main | ||
public _start | ||
_start: | ||
main: | ||
int 0x2A | ||
|
||
section '.data' data | ||
|
||
INCLUDE 'builtins.inc' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,11 @@ | ||
AS = fasm | ||
RM = rm | ||
TOPGOALS = all clean install | ||
|
||
TARGET = bootsector.bin stpdboot.sys bootia32.efi | ||
SUBDIRS = bootsect loader efi | ||
|
||
STAGE0_SRCS = boot0.asm \ | ||
const.inc \ | ||
fat12.inc | ||
.PHONY: $(SUBDIRS) | ||
$(SUBDIRS): | ||
@echo "📁 boot/$@" | ||
@DESTDIR=$(DESTDIR) $(MAKE) -C $@ $(MAKECMDGOALS) | ||
|
||
STAGE1_SRCS = boot1.asm \ | ||
const.inc \ | ||
a20.inc \ | ||
multiboot.inc | ||
|
||
BOOTIA32_EFI_SRCS = bootia32.asm \ | ||
uefi.inc | ||
|
||
.PHONY: all | ||
all: $(TARGET) | ||
|
||
bootsector.bin: $(STAGE0_SRCS) | ||
$(AS) boot0.asm $@ | ||
|
||
stpdboot.sys: $(STAGE1_SRCS) | ||
$(AS) boot1.asm $@ | ||
|
||
bootia32.efi: $(BOOTIA32_EFI_SRCS) | ||
$(AS) bootia32.asm $@ | ||
|
||
.PHONY: clean | ||
clean: | ||
$(RM) $(TARGET) | ||
|
||
.PHONY: install | ||
install: $(TARGET) | ||
@ mkdir -p $(DESTDIR) | ||
install stpdboot.sys $(DESTDIR) | ||
@ mkdir -p $(DESTDIR)/EFI/BOOT | ||
install bootia32.efi $(DESTDIR)/EFI/BOOT | ||
.PHONY: $(TOPGOALS) | ||
$(TOPGOALS): $(SUBDIRS) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
TARGET = bootsector.bin | ||
|
||
FLOPPY_SRCS = floppy.asm \ | ||
../common/const.inc \ | ||
../common/fat12.inc | ||
|
||
.PHONY: all | ||
all: $(TARGET) | ||
|
||
bootsector.bin: $(FLOPPY_SRCS) | ||
$(AS) floppy.asm $@ | ||
|
||
.PHONY: clean | ||
clean: | ||
$(RM) $(TARGET) | ||
|
||
.PHONY: install | ||
install: $(TARGET) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
format binary | ||
use16 | ||
|
||
include '../common/const.inc' | ||
|
||
org BOOTSECT_BASE | ||
|
||
jmp short _start | ||
nop | ||
|
||
; Boot Record | ||
OEM_identifier db 'STUPID ' | ||
bytes_per_sector dw 512 | ||
sectors_per_cluster db 1 | ||
reserved_sectors dw 1 | ||
FAT_count db 2 | ||
root_dir_entries dw 224 | ||
total_sectors dw 2880 | ||
media_desc_type db 0xF0 | ||
sectors_per_FAT dw 9 | ||
sectors_per_track dw 18 | ||
heads_per_cylinder dw 2 | ||
hidden_sectors dd 0 | ||
large_sector_count dd 0 | ||
|
||
; Extended Boot Record | ||
drive_number db 0x0 | ||
reserved db 0x0 | ||
signature db 0x29 ; 0x28 or 0x29 | ||
volume_id dd 0xB00B135 ; hope mine will grow :'( | ||
volume_label db 'Stupid Boot' | ||
system_id db 'FAT12 ' | ||
|
||
|
||
_start: | ||
cli | ||
cld | ||
jmp 0x0:.canonicalize_cs | ||
|
||
.canonicalize_cs: | ||
xor ax, ax | ||
mov ds, ax | ||
mov ss, ax | ||
mov es, ax | ||
mov sp, 0x7c00 | ||
|
||
mov [drive_number], dl | ||
|
||
; reset floppy disk | ||
@@: | ||
mov dl, [drive_number] | ||
xor ah, ah | ||
int 0x13 | ||
jc @b | ||
|
||
call fat_load_root | ||
|
||
; search in root directory | ||
|
||
mov si, kernel_file | ||
call fat_search_root | ||
jc .error_not_found | ||
mov [kernel_start], ax | ||
|
||
mov si, stage1_file | ||
call fat_search_root | ||
jc .error_not_found | ||
mov [stage1_start], ax | ||
|
||
; load fat | ||
xor ax, ax | ||
mov al, [FAT_count] | ||
mul word [sectors_per_FAT] | ||
mov cx, ax | ||
mov ax, [reserved_sectors] | ||
|
||
xor bx, bx | ||
|
||
call disk_read_sectors | ||
|
||
; preload kernel | ||
mov ax, KERNEL_PRELOAD/0x10 | ||
mov es, ax | ||
mov ax, [kernel_start] | ||
xor bx, bx | ||
call fat_load_binary | ||
|
||
; load stage 2 | ||
mov ax, LOADER_BASE/0x10 | ||
mov es, ax | ||
mov ax, [stage1_start] | ||
xor bx, bx | ||
call fat_load_binary | ||
|
||
jmp 0x0:LOADER_BASE | ||
|
||
.error_not_found: | ||
push si | ||
mov si, msg_error | ||
call bios_print | ||
pop si | ||
call bios_print | ||
mov si, msg_not_found | ||
call bios_print | ||
hlt | ||
jmp $ | ||
|
||
include '../common/bios.inc' | ||
include '../common/fat12.inc' | ||
|
||
msg_error db "ERROR: ", 0 | ||
msg_not_found db " not found", CR, LF, 0 | ||
|
||
kernel_file db "VMSTUPIDSYS", 0 | ||
stage1_file db "STPDLDR SYS", 0 | ||
|
||
kernel_start dw 0x0 | ||
stage1_start dw 0x0 | ||
|
||
|
||
rb 0x7C00+512-2-$ | ||
db 0x55, 0xAA |
File renamed without changes.
Oops, something went wrong.