-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathkernel.asm
More file actions
352 lines (259 loc) · 5.06 KB
/
kernel.asm
File metadata and controls
352 lines (259 loc) · 5.06 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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
;-----------------------------------------------------
; WaaS Kernel v1.0
; ====Written By=====
; # Shahab Khalid #
; # Abdul Wakeel #
; ===================
;-----------------------------------------------------
;------------------------------------------------------
[bits 16]
[org 0x1000]
;------------------------------------------------------
mov [BOOT_DRIVE],dl ;Saving Boot Drive
mov si,scrMsg
call PrintString
mov cx,5000
mov ax,4000
delay:
push cx
mov cx,ax
delay1:
dec ax
loop delay1
pop cx
loop delay
mov al,0xbb ;BGcolor
call ClearScreen
mov dl,20
mov dh,8
mov cx,35
mov bh,10
mov bl,0x33
call OS_DBox
mov dh,8
mov dl,20
mov bl,0x03
mov si,_Welcome
call cPrintString
mov dh,10
mov dl,20
mov bl,0x3f
mov si,_wcMsg1
call cPrintString
mov dh,11
mov dl,20
mov bl,0x3f
mov si,_wcMsg2
call cPrintString
mov dh,13
mov dl,24
mov bl,0x30
mov si,_wcMsg3
call cPrintString
mov dh,14
mov dl,28
mov bl,0x34
mov si,_wcMsg4
call cPrintString
mov dh,15
mov dl,28
mov si,_wcMsg5
call cPrintString
jmp Part2
;-----------------------INCLUDES------------------------
%include "Modules/Drive.asm"
%include "Modules/cPrintString.asm"
%include "Modules/PrintString.asm"
%include "Modules/OS_DBox.asm"
%include "Modules/ClearScreen.asm"
;-------------------------------------------------------
;----------------------Declaring Vars----------------
_Welcome db "Welcome to WaaS-OS vI!",0
_wcMsg1 db "Thank you User for Switching to",0
_wcMsg2 db "WaaS-OS vI!",0
_wcMsg3 db "Writters:",0
_wcMsg4 db "Shahab Khalid",0
_wcMsg5 db "Abdul Wakeel",0
scrMsg db " x x ,XXX, ",0x0d,0x0a
db "XXX XXX XX XX ",0x0d,0x0a
db "XXX XXX XXX X X XXX ",0x0d,0x0a
db "XXX XX XX XXX X X X X XXX ",0x0d,0x0a
db "XXX XX XX XXX XX XX XX XX XX ",0x0d,0x0a
db "XXX X X XXX XXXXXXX XXXXXXX XX XX ",0x0d,0x0a
db "XXX XXX XX XX XX XX 'XXX' ",0x0d,0x0a
db " ",0
BOOT_DRIVE db 0
;----------------------------------------------------
Part2:
mov dh,17
mov dl,32
mov bl,0x0f
mov si,_b_Cont
call cPrintString
;Wait For Enter To Continue
PressEnter:
mov ah,00h
int 16h
cmp ah,28
jne PressEnter
times 1024 - ($ - $$) db 0
mov al,0xbb ;BGcolor
call ClearScreen
mov dl,20
mov dh,2
mov cx,35
mov bh,20
mov bl,0x33
call OS_DBox
mov dh,2
mov dl,20
mov bl,0x03
mov si,_Menu
call cPrintString
mov ah,0ch
int 10h
;%ifdef COMMENT
call WriteMenu
KeyEvent:
mov ah,00h
int 16h
cmp ah,50h
je dRWM
cmp ah,48h
je uRWM
cmp ah,0x1c
je InitLoadApp
jmp None
dRWM:
mov al,[_mSelected]
cmp al,4
jb movD
jmp None
movD:
inc al
mov [_mSelected],al
call WriteMenu
jmp None
uRWM:
mov al,[_mSelected]
cmp al,1
ja movU
jmp None
movU:
dec al
mov [_mSelected],al
call WriteMenu
None:
jmp KeyEvent
InitLoadApp:
mov al,[_mSelected]
cmp al,0x01 ;TextEditor
je InitTE
cmp al,0x02 ;BAC
je InitBAC
cmp al,0x03 ;TS
je InitTS
cmp al,0x04 ;HM
je InitHM
jmp KeyEvent
InitTE:
mov dh,[_TextEditor_TotSecs]
mov [_SectorsToRead],dh ;Sectors To Read
mov dh,[_TextEditor_Sec]
mov [_Sectors],dh ;Sector
jmp LoadApp
InitBAC:
mov dh,[_Calculator_TotSecs]
mov [_SectorsToRead],dh ;Sectors To Read
mov dh,[_Calculator_Sec]
mov [_Sectors],dh ;Sector
jmp LoadApp
InitTS:
mov dh,[_TS_TotSecs]
mov [_SectorsToRead],dh ;Sectors To Read
mov dh,[_TS_Sec]
mov [_Sectors],dh ;Sector
jmp LoadApp
InitHM:
mov dh,[_HM_TotSecs]
mov [_SectorsToRead],dh ;Sectors To Read
mov dh,[_HM_Sec]
mov [_Sectors],dh ;Sector
LoadApp:
mov dl,[BOOT_DRIVE]
mov bx,0x5000 ;Memory Addr to Tmp load App Sector
call ReadSector
jmp 0x5000
;%endif
cli
hlt
WriteMenu:
pusha
mov bl,0x3f
mov al,[_mSelected]
cmp al,0x01
je s1
jmp _s1
s1:
mov bl,0x0f
_s1:
mov dh,4
mov dl,30
mov si,_TextEditor
call cPrintString
mov bl,0x3f
mov al,[_mSelected]
cmp al,0x02
je s2
jmp _s2
s2:
mov bl,0x0f
_s2:
mov dh,5
mov dl,30
mov si,_Calculator
call cPrintString
mov bl,0x3f
mov al,[_mSelected]
cmp al,0x03
je s3
jmp _s3
s3:
mov bl,0x0f
_s3:
mov dh,6
mov dl,30
mov si,_TS
call cPrintString
mov bl,0x3f
mov al,[_mSelected]
cmp al,0x04
je s4
jmp _s4
s4:
mov bl,0x0f
_s4:
mov dh,7
mov dl,30
mov si,_HM
call cPrintString
popa
ret
;----------------------------------------------------
_b_Cont db "Continue",0
_Menu db "Desktop",0
_mSelected db 0x01
_TextEditor db " Text Editor ",0
_TextEditor_Sec db 0x06
_TextEditor_TotSecs db 0x01
_Calculator db " BAC ",0
_Calculator_Sec db 0x07
_Calculator_TotSecs db 0x02
_TS db " Typing Game ",0
_TS_Sec db 0x09
_TS_TotSecs db 0x02
_HM db " Hangman ",0
_HM_Sec db 0x0b
_HM_TotSecs db 0x03
;----------------------------------------------------
times 1536 - ($ - $$) db 0