TempleOS and HolyC Comprehensive Guide
İçindekiler
- TempleOS Nedir?
- Kurulum
- Temel Kavramlar
- HolyC Programlama Dili
- Sistem Komutları
- Dosya Sistemi
- Grafik ve Sprite İşlemleri
- İlk Programınız
- Oyunlar ve Demolar
- İpuçları ve Püf Noktaları
TempleOS Nedir?
TempleOS, Terry A. Davis tarafından tek başına geliştirilen 64-bit, çoklu görev destekli bir işletim sistemidir. 2003-2013 yılları arasında geliştirilmiş olan bu sistem, benzersiz özellikleriyle dikkat çeker:
Temel Özellikler
- 640x480, 16 renkli VGA grafik modunda çalışır
- HolyC adında özel bir programlama dili kullanır (C/C++'a benzer)
- Ring-0 seviyesinde çalışır (kernel-user ayrımı yoktur)
- Tamamen açık kaynaklıdır - tüm kaynak kodu dahildir
- ~100,000 satır kod içerir
- JIT (Just-In-Time) derleyici ile çalışır
- Bellek yönetimi basittir - çöp toplayıcı yoktur
Felsefesi
Terry Davis, TempleOS'u "Tanrı'nın Tapınağı" olarak tasarlamıştır. Sistem, ibadet ve programlama için bir araç olarak düşünülmüştür. Bu yüzden bazı sıra dışı özellikler içerir:
- Oracle (Kehanet) sistemi
- Biblical metinlere atıflar
- Rastgele kelime/sayı üretici
Kurulum
Gereksinimler
- Sanal Makine (önerilir): VMware, VirtualBox, QEMU
- Fiziksel Makine: x86-64 işlemci
- RAM: Minimum 512 MB (2 GB önerilir)
- Disk: 500 MB
VirtualBox ile Kurulum
-
ISO İndirme
- TempleOS ISO dosyasını resmi siteden veya archive.org'dan indirin
- En son kararlı sürüm önerilir
-
Sanal Makine Oluşturma
Tip: Other/Unknown (64-bit) RAM: 2048 MB Disk: 2 GB (VDI, dinamik) Video Memory: 16 MB -
Ayarlar
- System → Processor → 2 CPU önerilir
- Display → Graphics Controller → VBoxVGA
- Storage → ISO dosyasını IDE Controller'a ekleyin
-
İlk Başlatma
- VM'i başlatın
- ISO'dan boot olacaktır
- Otomatik kurulum başlayacaktır
Diske Kurulum
BootHDIns; // Sabit diske kurulum yapar
// Onay verdiğinizde sistem kurulur
⚠️ Uyarı: Bu komut sanal diski formatlar. Fiziksel makinede kullanırken dikkatli olun!
Temel Kavramlar
Kullanıcı Arayüzü
TempleOS'un arayüzü sıra dışıdır:
- Grafik ve metin karışık bir ortam
- Her şey düzenlenebilir - ekran bir "belge"dir
- Fare ile sprite'lar ve nesneler yerleştirilebilir
- Komut satırı her yerdedir
Terminal Kullanımı
// Komutlar doğrudan yazılır
Dir; // Dizin listesi
Cd("dizin"); // Dizin değiştir
Type("dosya"); // Dosya içeriğini göster
Kısayollar
| Tuş Kombinasyonu | İşlev |
|---|---|
| CTRL+ALT+F | Dosya bul/aç |
| CTRL+ALT+A | Adam yardımı |
| CTRL+ALT+C | Kelime tamamlama |
| CTRL+ALT+T | Görev listesi |
| SHIFT+ESC | Terminal kapat |
| F5 | Derleme ve çalıştırma |
| F1 | Adam yardımı (kelime altında) |
Pencere Sistemi
TempleOS'ta her görev kendi penceresidir:
PopUp("Mesaj buraya"); // Popup pencere açar
WinMax; // Pencereyi maksimize et
WinToTop; // Pencereyi öne getirir
HolyC Programlama Dili
HolyC, C dilinin bir varyasyonudur ancak bazı farklılıkları vardır.
Temel Sözdizimi
// Değişkenler
U8 sayi = 10; // 8-bit unsigned integer
I64 buyukSayi = 100; // 64-bit signed integer
F64 ondalik = 3.14; // 64-bit float
U8 *metin = "Merhaba"; // String (char pointer)
// Fonksiyonlar
U0 MerhabaDunya() {
Print("Merhaba Dünya!\n");
}
// Döngüler
I64 i;
for (i = 0; i < 10; i++)
Print("%d\n", i);
// Koşullar
if (sayi > 5)
Print("Büyük\n");
else
Print("Küçük\n");
Veri Tipleri
I8 // 8-bit signed integer
U8 // 8-bit unsigned integer
I16 // 16-bit signed integer
U16 // 16-bit unsigned integer
I32 // 32-bit signed integer
U32 // 32-bit unsigned integer
I64 // 64-bit signed integer
U64 // 64-bit unsigned integer
F64 // 64-bit floating point
U0 // Void (fonksiyon dönüş tipi)
Farklılıklar C'den
- U0 void yerine kullanılır
- True/FALSE büyük harfle yazılır
- Sınıflar (classes) desteklenir
- Makrolar farklı çalışır
Girdi/Çıktı
// Ekrana yazdırma
Print("Sayı: %d\n", 42);
"%d sayı\n", 42; // Kısayol
// Kullanıcı girdisi
I64 sayi = GetI64("Bir sayı girin: ");
U8 *metin = GetStr("Bir metin girin: ");
// Dosyaya yazma
U8 *icerik = "Merhaba dosya!";
FileWrite("C:/Temp/test.txt", icerik, StrLen(icerik));
Sistem Komutları
Dosya Yönetimi
Dir; // Mevcut dizindeki dosyaları listele
Dir("C:/"); // Belirli dizini listele
Cd("dizin_adi"); // Dizin değiştir
Cd(".."); // Üst dizine çık
Copy("kaynak", "hedef"); // Dosya kopyala
Del("dosya"); // Dosya sil
Move("eski", "yeni"); // Dosya taşı/yeniden adlandır
MkDir("yeni_dizin"); // Klasör oluştur
Sistem Bilgisi
Dave; // Sistemi yeniden başlat
Exit; // Pencereyi kapat
Help; // Yardım göster
Adam; // Adam yardım sistemi
MemReport; // Bellek raporu
Derleyici ve Editör
Ed("dosya.HC"); // Dosyayı editörde aç
Type("dosya.HC"); // Dosya içeriğini göster
#include "dosya.HC" // Dosya dahil et (compile time)
Dosya Sistemi
Dosya Yapısı
TempleOS RedSea dosya sistemini kullanır:
- FAT32 benzeri yapı
- Maksimum dosya boyutu: 4 GB
- Disk bölümü: ISO9660 ile uyumlu
- Yol ayırıcı: Forward slash
/veya backslash\
Dosya İşlemleri
// Dosya okuma
U8 *icerik = FileRead("C:/Temp/test.txt");
Print("%s", icerik);
Free(icerik); // Belleği serbest bırak
// Dosya yazma
U8 *metin = "Test verisi";
FileWrite("C:/Temp/output.txt", metin, StrLen(metin));
// Dosya varlığını kontrol
if (FileFind("C:/Temp/test.txt"))
Print("Dosya bulundu\n");
else
Print("Dosya yok\n");
// Dosya bilgisi
CDirEntry de;
if (FileFind("C:/Temp/test.txt", &de))
Print("Boyut: %d bytes\n", de.size);
Dizin Yapısı
C:/
├── Home/ // Kullanıcı dosyaları
├── Temp/ // Geçici dosyalar
├── Demo/ // Demo programları
├── Apps/ // Uygulamalar
└── Kernel/ // Sistem dosyaları
Grafik ve Sprite İşlemleri
Temel Grafik Fonksiyonları
// Pixel çizme
GrPlot(gr, x, y, color);
// Çizgi çizme
GrLine(gr, x1, y1, x2, y2, color);
// Dikdörtgen
GrRect(gr, x1, y1, x2, y2, color);
// Daire
GrCircle(gr, x, y, radius, color);
// Metin yazdırma
GrText(gr, x, y, "Merhaba");
Renkler
TempleOS 16 renk kullanır:
BLACK = 0
BLUE = 1
GREEN = 2
CYAN = 3
RED = 4
PURPLE = 5
BROWN = 6
LTGRAY = 7
DKGRAY = 8
LTBLUE = 9
LTGREEN = 10
LTCYAN = 11
LTRED = 12
LTPURPLE = 13
YELLOW = 14
WHITE = 15
Sprite Oluşturma
// Sprite editörü açma
Sprite; // Görsel sprite editörü
// Programatik sprite
U8 sprite_data[8][8] = {
{0,0,1,1,1,1,0,0},
{0,1,1,1,1,1,1,0},
{1,1,0,1,1,0,1,1},
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
{0,1,1,0,0,1,1,0},
{0,0,1,1,1,1,0,0},
{0,0,0,0,0,0,0,0}
};
Animasyon
U0 AnimasyonOrnek() {
I64 x = 0, y = 240;
while (!CharScan) { // Tuşa basılana kadar
GrClear; // Ekranı temizle
GrCircle(gr, x, y, 10, RED);
x = (x + 2) % 640;
Sleep(20); // 20 ms bekle
}
}
İlk Programınız
Merhaba Dünya
U0 MerhabaDunya() {
"Merhaba, TempleOS Dünyası!\n";
}
MerhabaDunya;
Basit Hesap Makinesi
U0 HesapMakinesi() {
F64 sayi1, sayi2, sonuc;
U8 islem;
sayi1 = GetF64("Birinci sayı: ");
sayi2 = GetF64("İkinci sayı: ");
islem = GetChar("İşlem (+, -, *, /): ");
switch (islem) {
case '+': sonuc = sayi1 + sayi2; break;
case '-': sonuc = sayi1 - sayi2; break;
case '*': sonuc = sayi1 * sayi2; break;
case '/':
if (sayi2 != 0)
sonuc = sayi1 / sayi2;
else {
"Hata: Sıfıra bölme!\n";
return;
}
break;
default:
"Geçersiz işlem!\n";
return;
}
"Sonuç: %f\n", sonuc;
}
HesapMakinesi;
Tahmin Oyunu
U0 TahminOyunu() {
I64 sayi, tahmin, deneme = 0;
sayi = RandU16 % 100 + 1; // 1-100 arası rastgele sayı
"1 ile 100 arasında bir sayı tuttum!\n";
do {
tahmin = GetI64("Tahmininiz: ");
deneme++;
if (tahmin < sayi)
"Daha büyük bir sayı dene!\n";
else if (tahmin > sayi)
"Daha küçük bir sayı dene!\n";
else
"Tebrikler! %d denemede bildiniz!\n", deneme;
} while (tahmin != sayi);
}
TahminOyunu;
Dosyaya Kaydetme ve Çalıştırma
- Editörü açın:
Ed("oyunum.HC"); - Kodunuzu yazın
- F5 tuşuna basarak derleyin ve çalıştırın
- Veya komut satırından:
#include "oyunum.HC"
Oyunlar ve Demolar
TempleOS birçok yerleşik demo ve oyun içerir:
Popüler Oyunlar
// Aftershock - Platform oyunu
#include "::/Apps/AfterShock/AfterShock.HC"
// BomberGolf - Golf oyunu
#include "::/Apps/BomberGolf/BomberGolf.HC"
// Talons - Uzay savaş oyunu
#include "::/Apps/Talons/Talons.HC"
Demolar
// 3D mesh demo
#include "::/Demo/Graphics/MeshDemo.HC"
// Sprite demo
#include "::/Demo/Graphics/SpriteDemo.HC"
// Ses demo
#include "::/Demo/Sound/SndDemo.HC"
Kendiniz Keşfedin
Cd("::/Apps");
Dir; // Tüm uygulamaları göster
Cd("::/Demo");
Dir; // Tüm demoları göster
İpuçları ve Püf Noktaları
Performans
// Hızlı grafik için frame buffer kullanın
CDC *dc = DCNew(640, 480);
// Grafik çizimleri...
DCDel(dc);
// Gereksiz bellek tahsisinden kaçının
// TempleOS'ta çöp toplayıcı yok!
Free(ptr); // Her tahsisten sonra
Debugging
// Debug çıktısı
Print("Değişken: %d\n", x);
// Adam yardım sistemi
Adam("fonksiyon_adi"); // Fonksiyon hakkında bilgi
// Breakpoint (basit)
GetChar; // Tuşa basılmasını bekle
Yararlı Komutlar
Man; // Manuel sayfaları
Plain; // Düz metin modu
DocEd; // Belge editörü
AutoComplete; // Otomatik tamamlama
TreeMake; // Proje ağacı oluştur
Klavye Kısayolları
- CTRL+ALT+X: Görevi sonlandır
- CTRL+ALT+D: Belge modu
- CTRL+ALT+G: Grafik sprite ekle
- CTRL+ALT+S: Ses ekle
- CTRL+ALT+N: Yeni pencere
Öğrenme Kaynakları
-
Adam Yardım Sistemi: Yerleşik dokümantasyon
Adam("Print"); // Print fonksiyonu hakkında -
Kaynak Kodu Okuyun: Tüm sistem açık kaynak
Ed("::/Kernel/KMain.HC"); // Kernel'i incele -
Demo Kodlarını İnceleyin
Cd("::/Demo"); Dir;
Sık Karşılaşılan Hatalar
-
Derleme Hatası: Sözdizimi kontrolü yapın
- Noktalı virgül eksik olabilir
- Değişken tipleri yanlış olabilir
-
Bellek Hatası: Tahsis edilen belleği Free() ile serbest bırakın
-
Dosya Bulunamadı: Yol ayırıcılarını kontrol edin (
/veya\)
İleri Seviye Konular
// Multi-threading
U0 GorevFonksiyonu() {
// Görev kodu
}
Spawn(&GorevFonksiyonu); // Yeni thread
// Sınıf tanımlama
class MyClass {
I64 sayi;
U8 *metin;
};
// Inline assembly
asm {
MOV RAX, 42
PUSH RAX
}
Önemli Notlar
⚠️ Dikkat Edilmesi Gerekenler:
- Kararlılık: TempleOS deneysel bir projedir, çökmeler olabilir
- Yedekleme: Önemli çalışmalarınızı düzenli yedekleyin
- Ağ Desteği: TempleOS'ta ağ desteği yoktur
- Güvenlik: Ring-0'da çalıştığı için güvenlik katmanı yoktur
- Bellek: Manuel bellek yönetimi gereklidir
Sonuç
TempleOS benzersiz bir öğrenme deneyimi sunar. Terry Davis'in vizyonu, modern işletim sistemlerinden farklı bir bakış açısı sağlar. Basit tasarımı sayesinde, işletim sistemi çekirdeği nasıl çalışır, grafik nasıl işlenir ve programlama dilleri nasıl tasarlanır gibi konuları öğrenmek için harika bir platformdur.
İyi kodlamalar!
Ek Kaynaklar
- Resmi Site: templeos.org (arşivlenmiş)
- GitHub Arşiv: github.com/cia-foundation/TempleOS
- Reddit Topluluğu: r/TempleOS_Official
- Video Eğitimler: YouTube'da "TempleOS tutorial"
Sürüm Notları
Bu rehber TempleOS'un son kararlı sürümü (V5.03) baz alınarak hazırlanmıştır.
Son Güncelleme: 2026 Yazar: TempleOS Topluluğu Lisans: Kamu Malı (Public Domain)
Comments
(0)Loading comments...