commit 521fd1be2b182c4cfa555c989b00f0f6e1cb377d Author: Juhani Krekelä Date: Mon Jun 28 21:33:23 2021 +0300 First commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7cf5001 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.bin +*.img diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cd02a38 --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +.SUFFIXES: +.SUFFIXES: .bin .asm + +all: bootsector.bin + +.asm.bin: + nasm -fbin -o $@ $< + +clean: + rm -f *.bin *.img + +run: bootsector.bin + qemu-system-i386 -fda $< + +.PHONY: all clean run diff --git a/bootsector.asm b/bootsector.asm new file mode 100644 index 0000000..5a7e102 --- /dev/null +++ b/bootsector.asm @@ -0,0 +1,43 @@ +cpu 8086 +org 0x7c00 + +jmp short _code +nop + +; 1440K floppy +; BPB +oemidentifier db "nor86 " +byterpersector dw 512 +sectorspercluster db 1 +reservedsectors dw 1 +fats db 2 +rootdirentries dw 224 +totalsectors dw 2880 +mediadescription db 0xf0 +sectorsperfat dw 9 +sectorspertrack dw 18 +heads dw 2 +hiddensectors dd 0 +totalsectorslarge dd 0 + +; EBPB +drivenumber db 0 ; useless +reserved db 0 ; winnt flags +signature db 0x29 ; mkdosfs uses this, dunno how 0x28 differs +serial dd 0 +volumelabel db "nor86 boot " +fstype db "FAT12 " + +_code: + jmp 0:_start + +_start: + mov ax, 0x0e40 + int 0x10 + +hang: + hlt + jmp hang + +times 510-($-$$) db 0 +db 0x55, 0xaa