-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaurora-final.asm
More file actions
181 lines (156 loc) · 2.62 KB
/
Copy pathaurora-final.asm
File metadata and controls
181 lines (156 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
; Aurora OS - Functional Bootable System
org 0x7C00
bits 16
start:
; Set video mode
mov ax, 0x0003
int 0x10
; Clear screen
mov ax, 0x0600
mov bh, 0x1F
mov cx, 0x0000
mov dx, 0x184F
int 0x10
; Position cursor
mov ah, 0x02
mov bh, 0
mov dh, 2
mov dl, 10
int 0x10
; Aurora Banner
mov si, banner
call print_str
mov dh, 8
mov dl, 5
call set_cursor
mov si, menu
call print_str
mov dh, 10
mov dl, 5
call set_cursor
mov si, prompt
call print_str
loop:
; Get input
mov ah, 0
int 0x16
; Quit on ESC
cmp al, 0x1B
je reboot
cmp al, 'q'
je reboot
cmp al, '1'
je info
cmp al, '2'
je shell
; Echo
mov ah, 0x0E
int 0x10
jmp loop
info:
mov dh, 12
mov dl, 5
call set_cursor
mov si, info_msg
call print_str
call wait_key
jmp clear_and_restart
shell:
mov dh, 12
mov dl, 5
call set_cursor
mov si, shell_msg
call print_str
mov si, shell_prompt
call print_str
call basic_shell
jmp clear_and_restart
basic_shell:
mov ah, 0
int 0x16
cmp al, 0x1B
je .done
cmp al, 0x0D
je .newline
mov ah, 0x0E
int 0x10
jmp basic_shell
.newline:
mov si, crlf
call print_str
mov si, shell_prompt
call print_str
jmp basic_shell
.done:
ret
reboot:
mov si, reboot_msg
call print_str
int 0x19
clear_and_restart:
mov ax, 0x0600
mov bh, 0x1F
mov cx, 0x0000
mov dx, 0x184F
int 0x10
mov dh, 2
mov dl, 10
call set_cursor
mov si, banner
call print_str
mov dh, 8
mov dl, 5
call set_cursor
mov si, menu
call print_str
mov dh, 10
mov dl, 5
call set_cursor
mov si, prompt
call print_str
jmp loop
wait_key:
mov ah, 0
int 0x16
ret
set_cursor:
mov ah, 0x02
mov bh, 0
int 0x10
ret
print_str:
pusha
.ps_loop:
lodsb
cmp al, 0
je .done
mov ah, 0x0E
mov bh, 0
int 0x10
jmp .ps_loop
.done:
popa
ret
; Messages
banner:
db "🌠 Aurora OS v0.3.0", 0
menu:
db "[1] System Info", 0x0D, 0x0A
db "[2] Shell Mode", 0x0D, 0x0A, 0
prompt:
db "Choose option: ", 0
info_msg:
db "Aurora OS: Built from scratch", 0x0D, 0x0A
db "Status: Running successfully!", 0x0D, 0x0A, 0
shell_msg:
db "Welcome to Aurora Shell!", 0x0D, 0x0A
db "Type ESC to exit", 0x0D, 0x0A, 0
shell_prompt:
db "aurora$", 0
reboot_msg:
db 0x0D, 0x0A, "Rebooting...", 0
crlf:
db 0x0D, 0x0A, 0
; Boot signature
times 510 - ($ - $$) db 0
dw 0xAA55