forked from KolibriOS/kolibrios
grub4kos: print panic messages
git-svn-id: svn://kolibrios.org@4441 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
98dad9f109
commit
75ff73eb60
@ -56,7 +56,7 @@ end virtual
|
||||
cld
|
||||
mov esi, mboot
|
||||
mov edi, 0x80000
|
||||
mov ecx, 600/4 ;magic value
|
||||
mov ecx, 624/4 ;magic value
|
||||
rep movsd
|
||||
jmp .check_mbi
|
||||
|
||||
@ -64,24 +64,26 @@ org $-0x80000
|
||||
align 4
|
||||
.check_mbi:
|
||||
cmp eax, 0x2BADB002
|
||||
mov ecx, sz_invboot
|
||||
jne .fault
|
||||
mov esi, sz_invboot
|
||||
jne .panic
|
||||
|
||||
bt dword [ebx], 3
|
||||
mov ecx, sz_nomods
|
||||
jnc .fault
|
||||
mov esi, sz_nomods
|
||||
jnc .panic
|
||||
|
||||
mov edx, [ebx+20] ;mods_count
|
||||
mov esi, [ebx+24] ;mods_addr
|
||||
mov edx, [ebx+20] ;mods_count
|
||||
mov edi, [ebx+24] ;mods_addr
|
||||
cmp edx, 1
|
||||
jne .fault
|
||||
mov esi, sz_nomods
|
||||
jne .panic
|
||||
|
||||
.scan_mod:
|
||||
mov ebp, [esi] ;image start
|
||||
mov ecx, [esi+4] ;image end
|
||||
sub ecx, ebp ;image size
|
||||
cmp ecx, 512*18*80*2 ;1.44 floppy
|
||||
jne .fault
|
||||
mov ebp, [edi] ;image start
|
||||
mov ecx, [edi+4] ;image end
|
||||
sub ecx, ebp ;image size
|
||||
cmp ecx, 512*18*80*2 ;1.44 floppy
|
||||
mov esi, sz_image
|
||||
jne .panic
|
||||
|
||||
mov [_image_start], ebp
|
||||
mov [_image_size], ecx
|
||||
@ -133,8 +135,8 @@ align 4
|
||||
cmp esi, eax ; end of directory
|
||||
jb .loop_find_dir_entry
|
||||
|
||||
mov ecx, sz_kernel
|
||||
jmp .fault
|
||||
mov esi, sz_kernel
|
||||
jmp .panic
|
||||
|
||||
; === KERNEL FOUND. LOADING... ===
|
||||
|
||||
@ -218,10 +220,28 @@ align 4
|
||||
lgdt [.tmp_gdt]
|
||||
jmp far 0x08:.mode_16 and 0xFFFF
|
||||
|
||||
.fault:
|
||||
; push ecx
|
||||
; call _lcls
|
||||
; call __bprintf
|
||||
.panic:
|
||||
mov ebx, sz_halt
|
||||
mov edx, 0xb8000+160*10+2
|
||||
mov ah, 0x07
|
||||
.line:
|
||||
mov edi, edx
|
||||
.print:
|
||||
lodsb
|
||||
test al, al
|
||||
jz .print_next
|
||||
stosw
|
||||
jmp .print
|
||||
|
||||
.print_next:
|
||||
test ebx, ebx
|
||||
jz ._hlt
|
||||
|
||||
mov esi, ebx
|
||||
xor ebx, ebx
|
||||
add edx, 160
|
||||
jmp .line
|
||||
|
||||
._hlt:
|
||||
hlt
|
||||
jmp ._hlt
|
||||
@ -253,14 +273,14 @@ use16
|
||||
mov fs, ax
|
||||
jmp far 0x1000:0000
|
||||
|
||||
sz_invboot db 'Invalid multiboot loader magic value',cr,lf
|
||||
db 'Halted',0
|
||||
|
||||
sz_nomods db 'No modules loaded',cr,lf
|
||||
db 'Halted',0
|
||||
sz_invboot db 'Invalid multiboot loader magic value',0
|
||||
sz_nomods db 'No image loaded',0
|
||||
sz_image db 'Image size invalid',0
|
||||
sz_halt db 'Halted',0
|
||||
|
||||
sz_kernel db cr,lf
|
||||
kernel_name db 'KERNEL MNT ?',cr,lf,0
|
||||
sz_kernel db cr
|
||||
kernel_name db 'KERNEL MNT ?',0
|
||||
|
||||
org $+0x80000
|
||||
__edata:
|
||||
|
Loading…
Reference in New Issue
Block a user