Çekirdek örnekleri: KabaLang Minimal Kernel (MPL-2.0) ve üç küçük çekirdek
KabaLang'ın --yalin kipiyle yazılmış, işletim sistemi olmadan açılan x86-64 çekirdeği: kesmeler, 100 Hz zamanlayıcı, Türkçe Q klavye, Türkçe karakterli VGA ekranı, bellek haritası, sayfa ayırıcı, kabuk. Ek örnekler: merhaba, asal sayılar, VGA renkleri.
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# Asal sayılar: çekirdek 2..1000 arasındaki asalları bulur, ekrana bir
|
||||
# tablo olarak, seri porta da toplam olarak yazar.
|
||||
|
||||
VGA = 0xB8000
|
||||
SERI = 0x3F8
|
||||
|
||||
fonksiyon seri_bayt(b):
|
||||
iken bit_ve(port_oku8(SERI + 5), 0x20) == 0:
|
||||
devam
|
||||
port_yaz8(SERI, b)
|
||||
|
||||
fonksiyon seri_yaz(m):
|
||||
i = 0
|
||||
iken bayt(m, i) != 0:
|
||||
seri_bayt(bayt(m, i))
|
||||
i = i + 1
|
||||
|
||||
fonksiyon hucre(satir, sutun, karakter, renk):
|
||||
bellek_yaz16(VGA + (satir * 80 + sutun) * 2, renk * 256 + karakter)
|
||||
|
||||
fonksiyon yaz(m, satir, sutun, renk):
|
||||
i = 0
|
||||
iken bayt(m, i) != 0:
|
||||
hucre(satir, sutun + i, bayt(m, i), renk)
|
||||
i = i + 1
|
||||
|
||||
fonksiyon basamak_sayisi(n):
|
||||
b = 1
|
||||
iken n >= 10:
|
||||
n = n // 10
|
||||
b = b + 1
|
||||
don b
|
||||
|
||||
fonksiyon sayi(n, satir, sutun, renk):
|
||||
# Sağa yaslı değil, soldan yazar; kaç basamak yazıldığını döner.
|
||||
b = basamak_sayisi(n)
|
||||
k = b - 1
|
||||
iken k >= 0:
|
||||
hucre(satir, sutun + k, 0x30 + n % 10, renk)
|
||||
n = n // 10
|
||||
k = k - 1
|
||||
don b
|
||||
|
||||
fonksiyon seri_sayi(n):
|
||||
eger n >= 10:
|
||||
seri_sayi(n // 10)
|
||||
seri_bayt(0x30 + n % 10)
|
||||
|
||||
fonksiyon asal_mi(n):
|
||||
eger n < 2:
|
||||
don yanlis
|
||||
d = 2
|
||||
iken d * d <= n:
|
||||
eger n % d == 0:
|
||||
don yanlis
|
||||
d = d + 1
|
||||
don dogru
|
||||
|
||||
dongu i icinde 0..80 * 25 - 1:
|
||||
bellek_yaz16(VGA + i * 2, 0x0F20)
|
||||
yaz("Asal sayilar (2..1000) -- KabaLang cekirdegi", 0, 2, 0x0E)
|
||||
|
||||
satir = 2
|
||||
sutun = 2
|
||||
adet = 0
|
||||
dongu n icinde 2..1000:
|
||||
eger asal_mi(n):
|
||||
adet = adet + 1
|
||||
sayi(n, satir, sutun, 0x0A)
|
||||
sutun = sutun + 5
|
||||
eger sutun > 74:
|
||||
sutun = 2
|
||||
satir = satir + 1
|
||||
|
||||
yaz("Toplam:", satir + 2, 2, 0x0F)
|
||||
sayi(adet, satir + 2, 10, 0x0E)
|
||||
seri_yaz("2..1000 arasinda asal sayi adedi: ")
|
||||
seri_sayi(adet)
|
||||
seri_bayt(10)
|
||||
dur()
|
||||
Reference in New Issue
Block a user