# 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/. # # KabaLang mini çekirdek — giriş noktası. # # Derle: kabalang derle --yalin ana.kbl -o cekirdek.elf # Çalıştır: qemu-system-x86_64 -kernel cekirdek.elf -serial stdio kullan "durum.kbl" kullan "seri.kbl" kullan "ekran.kbl" kullan "kesme.kbl" kullan "klavye.kbl" kullan "bellek.kbl" kullan "kabuk.kbl" kullan "arayuz.kbl" KESME_ZAMANLAYICI = 32 KESME_KLAVYE = 33 TUS_F1 = 0x3B TUS_F2 = 0x3C TUS_F3 = 0x3D TUS_F4 = 0x3E TUS_F5 = 0x3F TUS_F10 = 0x44 fonksiyon kesme(vektor, kod): eger vektor < 32: ekran.renk(0x4F) ekran.yaz(" ISTISNA ") ekran.sayi(vektor) ekran.yaz(" hata kodu ") ekran.sayi(kod) seri.satir("cekirdek: islemci istisnasi") dur() eger vektor == KESME_ZAMANLAYICI: bellek_yaz64(durum.TIK, bellek_oku64(durum.TIK) + 1) eger vektor == KESME_KLAVYE: klavye.kesmede_al() kesme.bitti(vektor) # ── Kurulum ────────────────────────────────────────────────────────────── bellek_yaz64(durum.TIK, 0) bellek_yaz64(durum.KB_YAZ, 0) bellek_yaz64(durum.KB_OKU, 0) bellek_yaz64(durum.KB_SHIFT, 0) bellek_yaz64(durum.KB_DUZEN, 0) seri.hazirla() seri.satir("KabaLang mini cekirdek basliyor") # Donanımsal Türkçe Yazı Tipi Kurulumu (VGA Plane 2) ekran.turkce_font_kur() seri.satir("turkce font kuruldu") bellek.hazirla() seri.satir("bellek haritasi okundu") # Yığın: 256 sayfa (1 MB); metin işlemleri (birleştirme, f-string…) buradan ayırır. YIGIN_SAYFA = 256 calisma_zamani.yigin_kur(bellek.bolge_ayir(YIGIN_SAYFA), YIGIN_SAYFA * bellek.SAYFA) # Ön arayüz: bellek haritası ve yığın hazır olduktan sonra (f-string yığından ayırır). arayuz.panel_ciz() seri.satir("on arayuz cizildi") kesme.tabloyu_kur() kesme.pic_hazirla() kesme.zamanlayici_hazirla(100) kesmeleri_ac() seri.satir("kesmeler acik") kabuk.istem() # ── Ana döngü: kesme gelene dek uyu, gelen tuşları kabuğa ver ───────────── iken dogru: kesme_bekle() iken klavye.bekleyen_var_mi(): ham = klavye.kod_al() # bit 7 = shift kod = klavye.tarama_kodu(ham) eger kod == TUS_F1: arayuz.panel_ciz() kabuk.istem() degilse eger kod == TUS_F2: t = bellek_oku64(durum.TIK) ekran.yaz("Acilistan beri: ") ekran.sayi(t // 100) ekran.yaz(".") ekran.sayi((t % 100) // 10) ekran.satir(" sn") kabuk.istem() degilse eger kod == TUS_F3: bellek.haritayi_yaz() kabuk.istem() degilse eger kod == TUS_F4: arayuz.turkce_vitrin() kabuk.istem() degilse eger kod == TUS_F5: arayuz.panel_ciz() kabuk.istem() degilse eger kod == TUS_F10: ekran.satir("Kapatılıyor...") seri.satir("kabuk: kapat") port_yaz16(0x604, 0x2000) degilse: c = klavye.karakter(ham) eger c != 0: kabuk.tus(c)