Properly set up registers when chainloading from boot sector
This commit is contained in:
parent
bc096f41d3
commit
eabb1d9fa9
@ -1,5 +1,6 @@
|
|||||||
; Bootsector for FAT32 filesystems
|
; Bootsector for FAT32 filesystems
|
||||||
org 0x0800
|
org 0x0800
|
||||||
|
cpu 8086
|
||||||
jmp short init
|
jmp short init
|
||||||
nop
|
nop
|
||||||
|
|
||||||
@ -28,12 +29,17 @@ dn: equ ( $$ + 0x040 )
|
|||||||
times (0x5A - ($-$$)) db 0
|
times (0x5A - ($-$$)) db 0
|
||||||
|
|
||||||
init: xor ax, ax
|
init: xor ax, ax
|
||||||
mov ds, ax
|
|
||||||
mov es, ax
|
|
||||||
mov ss, ax
|
mov ss, ax
|
||||||
mov sp, 0x7C00
|
mov sp, 0x7C00
|
||||||
|
|
||||||
mov si, sp
|
; save potential partition table entry
|
||||||
|
push ds
|
||||||
|
push si
|
||||||
|
|
||||||
|
mov ds, ax
|
||||||
|
mov es, ax
|
||||||
|
|
||||||
|
mov si, 0x7C00
|
||||||
mov di, 0x0800
|
mov di, 0x0800
|
||||||
mov cx, 0x0100
|
mov cx, 0x0100
|
||||||
rep movsw
|
rep movsw
|
||||||
@ -101,7 +107,7 @@ read_: ; read sector DX:AX from disk
|
|||||||
|
|
||||||
mov si, sp
|
mov si, sp
|
||||||
mov ah, 0x42
|
mov ah, 0x42
|
||||||
mov dl, 0x80
|
mov dl, [dn]
|
||||||
stc
|
stc
|
||||||
int 0x13
|
int 0x13
|
||||||
jc dskerr
|
jc dskerr
|
||||||
@ -213,7 +219,8 @@ loadf: call search
|
|||||||
mov dx, [si+0x14]
|
mov dx, [si+0x14]
|
||||||
jmp load
|
jmp load
|
||||||
|
|
||||||
main: ; load root directory
|
main: mov [dn], dl
|
||||||
|
; load root directory
|
||||||
call loadr
|
call loadr
|
||||||
; search for first system directory
|
; search for first system directory
|
||||||
mov ah, 0x14
|
mov ah, 0x14
|
||||||
@ -222,6 +229,20 @@ main: ; load root directory
|
|||||||
mov ah, 0x04
|
mov ah, 0x04
|
||||||
call loadf
|
call loadf
|
||||||
; jump
|
; jump
|
||||||
|
xor ax, ax
|
||||||
|
xor cx, cx
|
||||||
|
xor dx, dx
|
||||||
|
xor bx, bx
|
||||||
|
xor di, di
|
||||||
|
xor bp, bp
|
||||||
|
|
||||||
|
; restore drive number
|
||||||
|
mov dl, [dn]
|
||||||
|
|
||||||
|
; restore potential partition table
|
||||||
|
pop si
|
||||||
|
pop ds
|
||||||
|
|
||||||
jmp 0:0x7C00
|
jmp 0:0x7C00
|
||||||
|
|
||||||
end: call msg
|
end: call msg
|
||||||
|
Loading…
Reference in New Issue
Block a user