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.
35 lines
1.2 KiB
Plaintext
35 lines
1.2 KiB
Plaintext
# 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/.
|
|
#
|
|
# VGA renkleri: metin kipinde her hücre iki bayttır (karakter + renk).
|
|
# Renk baytının üst 4 biti zemin, alt 4 biti yazı rengidir.
|
|
|
|
VGA = 0xB8000
|
|
|
|
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 onaltilik(n, satir, sutun, renk):
|
|
RAKAM = "0123456789ABCDEF"
|
|
hucre(satir, sutun, bayt(RAKAM, saga_kaydir(n, 4)), renk)
|
|
hucre(satir, sutun + 1, bayt(RAKAM, bit_ve(n, 15)), renk)
|
|
|
|
dongu i icinde 0..80 * 25 - 1:
|
|
bellek_yaz16(VGA + i * 2, 0x0720)
|
|
yaz("VGA renk tablosu: satir = zemin, sutun = yazi rengi", 0, 2, 0x0F)
|
|
|
|
dongu zemin icinde 0..7:
|
|
dongu yazi icinde 0..15:
|
|
renk = zemin * 16 + yazi
|
|
onaltilik(renk, 2 + zemin * 2, 2 + yazi * 4, renk)
|
|
|
|
yaz("Kendi renginizi deneyin: renk baytini degistirip yeniden calistirin.", 19, 2, 0x0B)
|
|
dur()
|