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