Write a (kindof) proper init, at least with the capabilities we have right now
This commit is contained in:
parent
ba4806f9d3
commit
96f53922c9
@ -1,24 +1,65 @@
|
||||
section .text
|
||||
global _start
|
||||
_start:
|
||||
mov rax, 1
|
||||
int 42h ; sys_yield
|
||||
mov rdi, HelloLabel
|
||||
mov rsi, 17
|
||||
mov rax, 3
|
||||
int 42h ; sys_write
|
||||
mov rdi, 4000
|
||||
mov rdi, welcome_label
|
||||
call print
|
||||
call next_line
|
||||
mov rdi, 1000
|
||||
call sleep
|
||||
mov rdi, version_label
|
||||
call print
|
||||
call next_line
|
||||
mov rdi, 2000
|
||||
call sleep
|
||||
mov rdi, end_label
|
||||
call print
|
||||
call exit
|
||||
|
||||
sleep:
|
||||
mov rax, 2
|
||||
int 42h ; sys_sleep
|
||||
mov rdi, ExitLabel
|
||||
mov rsi, 26
|
||||
int 42h
|
||||
ret
|
||||
|
||||
strlen:
|
||||
push rbx
|
||||
push rcx
|
||||
mov rbx, rdi
|
||||
xor al, al
|
||||
mov rcx, 0xffffffff
|
||||
repne scasb
|
||||
sub rdi, rbx
|
||||
mov rax, rdi
|
||||
pop rcx
|
||||
pop rbx
|
||||
dec rax
|
||||
ret
|
||||
|
||||
print: ; string: rdi
|
||||
push rdi
|
||||
call strlen
|
||||
mov rsi, rax
|
||||
mov rax, 3
|
||||
int 42h ; sys_write
|
||||
pop rdi
|
||||
int 42h
|
||||
ret
|
||||
|
||||
next_line:
|
||||
mov rdi, newline
|
||||
mov rsi, 1
|
||||
mov rax, 3
|
||||
int 42h
|
||||
ret
|
||||
|
||||
exit:
|
||||
mov rax, 0
|
||||
int 42h ; sys_exit
|
||||
int 42h
|
||||
|
||||
section .rodata
|
||||
HelloLabel:
|
||||
db "Hello from init!", 0xA
|
||||
ExitLabel:
|
||||
db "Well, bye. (init exiting)", 0xA
|
||||
version_label:
|
||||
db "You are running Luna version v0.7-beta", 0xA, 0
|
||||
welcome_label:
|
||||
db "Welcome to Luna!", 0xA, 0
|
||||
end_label:
|
||||
db "Press any key to restart.", 0xA, 0
|
||||
newline:
|
||||
db 0xA
|
Loading…
Reference in New Issue
Block a user