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.
43 lines
1.9 KiB
Markdown
43 lines
1.9 KiB
Markdown
# KabaLang Minimal Kernel
|
|
|
|
KabaLang ile yazılmış, LLVM ile derlenen küçük bir x86-64 çekirdeği.
|
|
Assembly yalnız açılış parçasındadır (`calisma/boot.S`); çekirdeğin mantığı KabaLang'dir.
|
|
|
|

|
|
|
|
## İçindekiler
|
|
|
|
| Modül | Görevi |
|
|
|---|---|
|
|
| `ana.kbl` | Giriş noktası: donanımı sırayla hazırlar, ana döngü |
|
|
| `durum.kbl` | Sabit adresli durum alanı (modüller durum tutmaz) |
|
|
| `seri.kbl` | COM1 seri port, açılış günlüğü |
|
|
| `ekran.kbl` | VGA metin ekranı, imleç, kaydırma, Türkçe yazı tipi (CP857 yerleşimi) |
|
|
| `kesme.kbl` | Kesme tablosu (IDT), PIC, 100 Hz zamanlayıcı |
|
|
| `klavye.kbl` | PS/2 klavye: Türkçe Q ve ABD düzeni, shift |
|
|
| `bellek.kbl` | Önyükleyici bellek haritası, 4 KB fiziksel sayfa ayırıcı |
|
|
| `kabuk.kbl` | Komut satırı (UTF-8 tampon), yerleşik komutlar |
|
|
| `arayuz.kbl` | Açılış paneli, Türkçe karakter vitrini |
|
|
| `calisma/` | Açılış parçası, bağlayıcı betiği ve yalın çalışma zamanı (derleyiciyle gelir; başvuru için burada) |
|
|
|
|
Kabuk komutları Türkçe ya da ASCII yazılabilir: `yardım`, `panel`, `türkçe`,
|
|
`hakkında`, `zaman`, `yaz METİN`, `uzunluk METİN`, `klavye tr|us`, `bellek`,
|
|
`ayır`, `yığın`, `temizle`, `kapat`.
|
|
|
|
## Derleyip çalıştırmak
|
|
|
|
```bash
|
|
kabalang derle --yalin ana.kbl -o cekirdek.elf
|
|
qemu-system-x86_64 -kernel cekirdek.elf -serial stdio
|
|
```
|
|
|
|
`--yalin` kipinde işletim sistemi ve libc yoktur: donanıma `port_yaz8`,
|
|
`bellek_yaz16` gibi yerleşiklerle doğrudan erişilir. Ayrıntı:
|
|
[dev.kabaforce.com/kabalang/cekirdek](https://dev.kabaforce.com/kabalang/cekirdek/)
|
|
|
|
## Lisans
|
|
|
|
[Mozilla Public License 2.0](LICENSE). Bu çekirdeği temel alıp kendi çekirdeğinizi
|
|
geliştirebilirsiniz; dağıttığınızda bu dosyalarda yaptığınız değişiklikleri
|
|
açık tutarsınız. Yeni dosyalarınız için lisansı siz seçersiniz.
|