Hallo. Hat jemand von euch ein Multiboot-kompatibles Betriebssystem geschrieben? Ich hab versucht, Delta Multiboot-konform zu machen, ich kriege die GRUB-Meldung: 13: Unsupported executable format. Ich habs mit ELF, A.OUT, COFF, PE und sonstwas probiert. Müsste mit bin eigentlich gehen! Hier mal der Code von nc_init.asm:
;=======================================\
; Delta Nanocore Project |
; |
; Nanocore Main Core |
;=======================================/
%define dnc_version 'Delta Nanocore v0.0.0-14012005-deca1',dnc_arch,dnc_tag,' compiled with nasm-',__NASM_VER__ ;Nanocore version information
%define dnc_arch '-x86-32-grub'
%define dnc_tag '-epsilon15' ;Place your name here if you edited the file
;Functions in this file:
;IM, BF nanocore_entry:
;Start of Nanocore. Gets memory size and initializes the core
;IM, BF nanocore_hangup:
;Used to kill the computer by infinite loop
;IM, BF debug_print:
;Clears the first line of the screen and prints a 0-terminated String at DS:ESI
;IM, BF nanocore_getmemsize:
;BUG: This doesn't work uin VMware
;Counts the amount of memory installed in the computer
bits 32
org 0x100000
jmp nanocore_entry
;Multiboot Header
nmh_magic dd 0x1BADB002
nmh_flags dd 0x00000000
nmh_checksum dd 0xE4524FFE
nmh_header_addr dd nmh_magic
nmh_load_addr dd 0x100000
nmh_load_end_addr dd nanocore_end_kernel
nmh_bss_end_addr dd 0
entry_addr dd nanocore_entry
;Nanocore's Entry Point
nanocore_entry:
mov esp,0x200000
call nanocore_getmemsize
cmp ax,0x10
jl nanocore_entry.toolessmem ;comment this out if you build for VMWare
jmp nanocore_entry.enoughmem ;enough...
nanocore_entry.toolessmem:
mov esi, msg_memtooless
call debug_print ; And tell the user
jmp nanocore_hangup ; And hang up ;)
;Here we go:
nanocore_entry.enoughmem:
mov esi, msg_memenough
call debug_print
mov esi, msg_version
call debug_print
;call nanocore_init_mods
nanocore_hangup:
jmp nanocore_hangup
debug_print:
mov edi, 0xB8000
mov ecx, 80*2*25
xor eax, eax
rep stosb
mov edi, 0xB8000
debug_print.1:
lodsb
or al, al
jz debug_print.2
stosb
mov al, 12
stosb
jmp debug_print.1
debug_print.2:
ret
nanocore_getmemsize:
push ebp
mov ebp, esp
push edx
mov eax, 0
mov edx, 0x1EFFFC
nanocore_getmemsize.1:
inc eax
mov DWORD [edx], 0xAAAAAAAA
mov ebx, [edx]
add edx, 0x100000
cmp ebx, 0xAAAAAAAA
je nanocore_getmemsize.1
pop edx
mov esp, ebp
pop ebp
ret
nanocore_data:
msg_version db dnc_version,0
msg_memenough db 'nanocore:You have enough RAM',0
msg_memtooless db "nanocore:FATAL:You don't have enough RAM! Note: if you have more than 16 MB RAM, you are possibly running Delta Nanocore on VMWare. Either get the VMWare-compatible kernel or use Bochs as a virtual machine or use it on a real computer. If you still get this message, something is terribly wrong i.e., Nanocore doesn't fit your system.",0
nanocore_end_kernel: