-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkernel.asm
More file actions
131 lines (120 loc) · 1.44 KB
/
kernel.asm
File metadata and controls
131 lines (120 loc) · 1.44 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
use16
org 0x0000
main:
mov ax, 0x07e0
mov ds, ax
mov es, ax
call cls
call beep
mov si, welcome
call print
shell_loop:
call prompt
call read_input
mov si, input_buffer
call check_command
jmp shell_loop
print:
lodsb
cmp al, 0
je done
mov ah, 0x0E
int 0x10
jmp print
done:
ret
cls:
mov ah, 0x00
mov al, 0x03
int 0x10
ret
prompt:
mov si, prompt_msg
call print
ret
read_input:
mov di, input_buffer
.read_char:
mov ah, 0
int 0x16
cmp al, 0x0D
je .done
cmp al, 0x08
je .backspace
stosb
mov ah, 0x0E
int 0x10
jmp .read_char
.backspace:
cmp di, input_buffer
je .read_char
dec di
mov ah, 0x0E
mov al, 0x08
int 0x10
mov al, ' '
int 0x10
mov al, 0x08
int 0x10
jmp .read_char
.done:
mov al, 0
stosb
mov ah, 0x0E
mov al, 0x0A
int 0x10
mov al, 0x0D
int 0x10
ret
check_command:
mov si, input_buffer
mov di, info_cmd
call str_eq
cmp al, 1
je do_info
mov si, unknown_msg
call print
ret
do_info:
mov si, info_msg
call print
ret
str_eq:
.next_char:
lodsb
cmp al, [di]
jne .not_equal
cmp al, 0
je .equal
inc di
jmp .next_char
.not_equal:
mov al, 0
ret
.equal:
mov al, 1
ret
beep:
mov al, 0b10110110
out 0x43, al
mov ax, 1193
out 0x42, al
mov al, ah
out 0x42, al
in al, 0x61
mov bl, al
or al, 11b
out 0x61, al
mov cx, 0FFFFh
.b1:
nop
loop .b1
mov al, bl
out 0x61, al
ret
welcome: db "GSSLOS v1.0",0x0A,0
prompt_msg: db "[#] ",0
input_buffer: times 32 db 0
info_cmd: db "info",0
info_msg: db "GotSSLOS written in pure ASM by @gotssl. 2025",0x0A,0
unknown_msg: db "Unknown command",0x0A,0