TempleOS and HolyC Comprehensive Guide

TempleOS and HolyC Comprehensive Guide

İçindekiler

  1. TempleOS Nedir?
  2. Kurulum
  3. Temel Kavramlar
  4. HolyC Programlama Dili
  5. Sistem Komutları
  6. Dosya Sistemi
  7. Grafik ve Sprite İşlemleri
  8. İlk Programınız
  9. Oyunlar ve Demolar
  10. İ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

  1. ISO İndirme

    • TempleOS ISO dosyasını resmi siteden veya archive.org'dan indirin
    • En son kararlı sürüm önerilir
  2. Sanal Makine Oluşturma

    Tip: Other/Unknown (64-bit)
    RAM: 2048 MB
    Disk: 2 GB (VDI, dinamik)
    Video Memory: 16 MB
    
  3. Ayarlar

    • System → Processor → 2 CPU önerilir
    • Display → Graphics Controller → VBoxVGA
    • Storage → ISO dosyasını IDE Controller'a ekleyin
  4. İ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+FDosya bul/aç
CTRL+ALT+AAdam yardımı
CTRL+ALT+CKelime tamamlama
CTRL+ALT+TGörev listesi
SHIFT+ESCTerminal kapat
F5Derleme ve çalıştırma
F1Adam 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

  1. U0 void yerine kullanılır
  2. True/FALSE büyük harfle yazılır
  3. Sınıflar (classes) desteklenir
  4. 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

  1. Editörü açın: Ed("oyunum.HC");
  2. Kodunuzu yazın
  3. F5 tuşuna basarak derleyin ve çalıştırın
  4. 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ı

  1. Adam Yardım Sistemi: Yerleşik dokümantasyon

    Adam("Print");  // Print fonksiyonu hakkında
    
  2. Kaynak Kodu Okuyun: Tüm sistem açık kaynak

    Ed("::/Kernel/KMain.HC");  // Kernel'i incele
    
  3. Demo Kodlarını İnceleyin

    Cd("::/Demo");
    Dir;
    

Sık Karşılaşılan Hatalar

  1. Derleme Hatası: Sözdizimi kontrolü yapın

    • Noktalı virgül eksik olabilir
    • Değişken tipleri yanlış olabilir
  2. Bellek Hatası: Tahsis edilen belleği Free() ile serbest bırakın

  3. 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:

  1. Kararlılık: TempleOS deneysel bir projedir, çökmeler olabilir
  2. Yedekleme: Önemli çalışmalarınızı düzenli yedekleyin
  3. Ağ Desteği: TempleOS'ta ağ desteği yoktur
  4. Güvenlik: Ring-0'da çalıştığı için güvenlik katmanı yoktur
  5. 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)
Top commentsNewest first

0/3000 • Press Ctrl + Enter to submit

Loading comments...