Add first attempt of a MBR
This commit is contained in:
parent
da03aa1481
commit
7c4a618385
77
boot/mbr.asm
Normal file
77
boot/mbr.asm
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
; Memory layout:
|
||||||
|
%define self 0x00600 ; 1 sector
|
||||||
|
%define prog 0x07C00 ; 1 sector
|
||||||
|
|
||||||
|
org self
|
||||||
|
cpu 8086
|
||||||
|
|
||||||
|
init:
|
||||||
|
cli
|
||||||
|
|
||||||
|
; Stack grows down from PSP + 64k
|
||||||
|
xor ax, ax
|
||||||
|
mov ss, ax
|
||||||
|
mov sp, ax
|
||||||
|
|
||||||
|
push dx
|
||||||
|
|
||||||
|
; Relocate from [prog] to [self]
|
||||||
|
mov ds, ax
|
||||||
|
mov es, ax
|
||||||
|
mov si, prog
|
||||||
|
mov di, self
|
||||||
|
mov cx, 0x100
|
||||||
|
rep movsw
|
||||||
|
|
||||||
|
jmp 0:main
|
||||||
|
|
||||||
|
main:
|
||||||
|
mov bp, 0x0035
|
||||||
|
mov WORD [dap.blocknum], 1
|
||||||
|
mov si, dap
|
||||||
|
mov ah, 0x42
|
||||||
|
stc
|
||||||
|
int 0x13
|
||||||
|
jc error
|
||||||
|
mov cx, [dap.blocknum]
|
||||||
|
int3
|
||||||
|
|
||||||
|
error:
|
||||||
|
mov ax, bp
|
||||||
|
mov ah, 0x0e
|
||||||
|
mov bx, 7
|
||||||
|
int 0x10
|
||||||
|
mov al, 0x21
|
||||||
|
int 0x10
|
||||||
|
xor ax, ax
|
||||||
|
int 0x16
|
||||||
|
int 0x19
|
||||||
|
|
||||||
|
dap:
|
||||||
|
.size:
|
||||||
|
db 0
|
||||||
|
db 0
|
||||||
|
.count:
|
||||||
|
dw 1
|
||||||
|
.buffer:
|
||||||
|
dw prog
|
||||||
|
dw 0
|
||||||
|
.blocknum:
|
||||||
|
dq 0
|
||||||
|
|
||||||
|
times (0x1BE - ($-$$)) db 0
|
||||||
|
part1:
|
||||||
|
db 0x80
|
||||||
|
.chs_start:
|
||||||
|
db 0xFF, 0xFF, 0xFF
|
||||||
|
.type:
|
||||||
|
db 0x01
|
||||||
|
.chs_end:
|
||||||
|
db 0xFF, 0xFF, 0xFF
|
||||||
|
.begin:
|
||||||
|
dd 1
|
||||||
|
.end:
|
||||||
|
dd (FLOPPY * 2)
|
||||||
|
|
||||||
|
times (0x1FE - ($-$$)) db 0
|
||||||
|
dw 0xAA55
|
Loading…
Reference in New Issue
Block a user