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
|
section .text
|
||||||
global _start
|
global _start
|
||||||
_start:
|
_start:
|
||||||
mov rax, 1
|
mov rdi, welcome_label
|
||||||
int 42h ; sys_yield
|
call print
|
||||||
mov rdi, HelloLabel
|
call next_line
|
||||||
mov rsi, 17
|
mov rdi, 1000
|
||||||
mov rax, 3
|
call sleep
|
||||||
int 42h ; sys_write
|
mov rdi, version_label
|
||||||
mov rdi, 4000
|
call print
|
||||||
|
call next_line
|
||||||
|
mov rdi, 2000
|
||||||
|
call sleep
|
||||||
|
mov rdi, end_label
|
||||||
|
call print
|
||||||
|
call exit
|
||||||
|
|
||||||
|
sleep:
|
||||||
mov rax, 2
|
mov rax, 2
|
||||||
int 42h ; sys_sleep
|
int 42h
|
||||||
mov rdi, ExitLabel
|
ret
|
||||||
mov rsi, 26
|
|
||||||
|
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
|
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
|
mov rax, 0
|
||||||
int 42h ; sys_exit
|
int 42h
|
||||||
|
|
||||||
section .rodata
|
section .rodata
|
||||||
HelloLabel:
|
version_label:
|
||||||
db "Hello from init!", 0xA
|
db "You are running Luna version v0.7-beta", 0xA, 0
|
||||||
ExitLabel:
|
welcome_label:
|
||||||
db "Well, bye. (init exiting)", 0xA
|
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