Followed a tip from http://forum.osdev.org/viewtopic.php?f=1&t=20150 about moving the location of labels around, that made the linker error go away and it looks like that fixed the restarting problem. This commit also adds debugging flags to the build, and adds a debug make target with the right commands to run gdb under qemu, which I'll probably want to do in the future.
42 lines
551 B
NASM
42 lines
551 B
NASM
%include "x86_vram.asm"
|
|
|
|
extern rust_entry
|
|
|
|
section .bss
|
|
|
|
stack resb 0x1000
|
|
|
|
section .data
|
|
|
|
[bits 32]
|
|
section .text
|
|
global boot
|
|
|
|
%include "multiboot_header.asm"
|
|
%include "x86_vram_functions.asm"
|
|
|
|
boot:
|
|
mov esp, stack + 0x100
|
|
xor ebp, ebp
|
|
mov eax, 0x55
|
|
jmp main
|
|
|
|
main:
|
|
push word BG.CYAN | ' '
|
|
call clear
|
|
add esp, 2
|
|
call rust_entry
|
|
|
|
push dword BG.BLACK | FG.YELLOW | FG.BRIGHT | 'A'
|
|
push dword 0
|
|
push dword 0
|
|
call write_to_coord
|
|
add esp, 12
|
|
|
|
loop_label:
|
|
jmp loop_label
|
|
|
|
halt:
|
|
hlt
|
|
jmp halt
|