From 96f53922c999be471b6f216cbe886d96c4e090e6 Mon Sep 17 00:00:00 2001 From: apio Date: Sat, 1 Oct 2022 15:54:42 +0200 Subject: [PATCH] Write a (kindof) proper init, at least with the capabilities we have right now --- apps/init.asm | 73 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 57 insertions(+), 16 deletions(-) diff --git a/apps/init.asm b/apps/init.asm index b670baea..67d4feb3 100644 --- a/apps/init.asm +++ b/apps/init.asm @@ -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 \ No newline at end of file +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 \ No newline at end of file