Home  Articles  Programs 

GEOS Kursu - 2

GEOS Kernal Bellek haritası, GEOS Kernal tarafından kullanılan ve program uygulamaları için serbest bırakılan bellek alanlarını gösterir.

Burada GEOS Kernal rutinlerinin programcı tarafından nasıl kullanıldığını kısaca anlatacağız. Bu konuda yapılan bir uygulama da bazı değişkenleri zpage (sıfırıncı) sayfada depolamaktır. Çünkü bu sayfada 6502 direktifleri daha az yer kaplar ve daha hızlı çalışır.

Bu amaçla sıfırıncı sayfada, yer 2'den başlamak üzere 30 bayt pseudo (sahte) kütükler olarak kullanılmak üzere ayrılır. Bu bellek yerleri 15 kelime uzunluğundaki değişkenlere ayrılırlar.

GEOS Kernal rutinlerine bu sahte kütüklerle mesajlar iletilir. Bu kütükler GEOS Kernal rutinlerine parametre geçirmenin tek yolu değildir. Bazen a,x,y ve carry flag bile bu amaçla kullanılabilir.


Bir GEOS programı hazırlamakta aşamalar

Bu aşamaları üç evreye ayırabiliriz:


Şimdi de GEOS'un yapısal bir betimlemesine girişeceğiz. Yani programlandığı grafik moduna, bellekteki yerine, Kernal'in hangi versiyonu çalıştırdığını anlamaya, donanım kontrol kütüğünün neye ayarlı olduğuna ve bellek haritasının Kernal ya da Basic ROM rutinlerini kullanmak üzere nasıl değiştirileceğini incelemeye.


Yüksek Çözünürlük Bit-Mapped Mod

GEOS C-64'ün bit-mapped grafik modunu, 320x200 piksellik bir çözünürlükte kullanır. Bu mod ekranı göstermek için 8000 bayt kullanılır.

GEOS Kernal ile programlama uygulamalarını daha kolaylaştırmak için, genellikle ekran datasının bir yedek kopyasını tutmak üzere kullanılan 8000 baytlık bir buffer vardır. Arka plan buffer'ında depolanmış olan görüntüleri ekrana kopyalayan rutinleri kullanılır. Bu özellikle program penceresinin önüne bir menü indirildiğinde ya da bir diyalog kutusu belirdiğinde yararlıdır. Ekranda daha önce bulunanları kurtarmak için, menüler ve diyalog kutuları arkaplan ekranını ön ekrana kopyalar ve programı ekranı yeniden yaratmaya çalışmak zahmetinden kurtarır.


GEOS BELLEK HARİTASI

Bayt no.  Adres Alanı                                           
 Desimal Heksadesimal TANIM                                     
       1         0000 6510 Data Yön Kütüğü                      
       2         0001 6510 I/O Kütüğü                           
     110    0002-006F GEOS ve program tarafından kullanılan 0. sayfa                                     
      16    0070-007F Programda kullanılan 0. sayfa (küt. a2-a9 
     123    0080-00FA C-64 Kernal ve Basic tarafından kul. 0    
       4    00FC-00FE prog. kullanılan 0. sayfa (küt. a0-a1     
       1         00FF Kernal ROM ve Basic rutinler              
     256    0100-01FF 6510 stack                                
     512    0200-03FF Kernal ROM rutinleri için ROM             
   23552    0400-5FFF Uygulama programı ve data                 
    8000    6000-7F3F Arkaplan ekran RAM                        
     192    7F40-7FFF Uygulama RAM                              
    2560    8000-89FF GEOS disk buffer ve değişken RAM          
     512    8A00-8BFF Sprayt resim datası                       
    1000    8C00-8FD7 Video renk matrisi                        
      16    8FD8-8FF7 GEOS RAM                                  
       8    8FF8-8FFF Sprayt pointer'ları                       
    4096    9000-9FFF GEOS kodu                                 
    8000    AOOO-BF3F Ekran RAM ya da BASIC ROM                 
     192    BF40-BFFF GEOS Tabloları                            
    4288  C000---CFFF 4k GEOS Kernal kodu                       
    4096    D000-DFFF 4k GEOS Kernal ya da 4k 1/0 alanı         
    7808    EOOO-FE74 8k GEOS Kernal ya da C-64 Kernal ROM                                       
     370    FE80-FFF9 Input Sürücüsü                            
       6    FFFA-FFFF 6510 NMI, IRQ ve reset vektörleri         


Bellek Haritası

GEOS Kernal Bellek Haritası tablosu, GEOS Kernal tarafından kullanılan ve program uygulamaları için serbest bırakılan bellek alanlarını gösterir. Uygulamalar $0400'den $5FFFF'e kadar 22K'ya sahiptir. Bazı durumlarda 8k ilave ile 30k'ya ulaşırlar. Bu ilk bakışta sınırlı bir bellek gibi görünebilir ama menü, ikon, diyalog kutuları, disk, dosya sistemi ve değişik buffer desteklerinin GEOS Kernal'e dahil olduğunu unutmamak gerek. Bu programcıya bırakılan 22 ile 30K'lık alanın artması ve programcı için daha az iş demektir.

Uygulama kodunun yeri ve RAM programcıların GEOS Kernal Bellek Haritası hakkında bilmeleri gerekenleri oluşturuyor. RAM üç ayrı yerde ve programcının onu kullanmak istediği yerde bulunabiliyor.

Tüm I/O, ekran çizimleri ve interrupt kontrolleri GEOS Kernal tarafından yürütülebilir. Kernal rutinlerini kullanmak son derece kolaydır ve program uygulaması onları kullansa da kullanmasa da bellekte yer işgal ederler.


Bank Değiştirme ve Konfigürasyon

GEOS Kernal'in en önemli kısmı $BF40 ve daha yukarısında bellek işgal eder. Bu da GEOS Kernal aslında başka amaçlar için kullanılan adres alanlarındaki RAM'i kullanıyor demektir. Buna benzer bir şekilde C-64 Kernal ROM ve BASIC ROM kapatılıp, onlar yerin 8K'lık RAM açılabilir. Normal işletim sırasında, BASIC, C-64 Kernal ROM ve I/O alanı çıkartılır ve GEOS Kernal bankları devreye girer. Tüm I/O işlemciliği interrupt düzeyinde GEOS Kernal tarafından halledilir.

Seçilen bank $0001 sayılı yerin içerikleri ve kartuşla dış ROM portlarından gelen iki hat tarafından belirlenir. Ekran RAM ve ROM karakter setinin yeri adresi $D018'in içerikleri tarafından belirlenir.

Aşağıda GEOS Kernal'in kullandığı default yerlerini gösteren bir tablo görüyorsunuz.

Gelecek ay Assembler direktifleri, ikonlar ve menüler ile devam edeceğiz.


GEOS KONTROL REGİSTER YERLERİ

Kontrol        Bellek Yeri  Depolanmış Tanım                 
Fonksiyonu                  Değer                            
Bank Seçimi    0001         xxxx00x    Hangi ROM             
                                       banklarının adres     
                                       alanında görüneceğini 
                                       belirler              
VIC Çip        DD00         xxxx010x   VIC çipinin hitap     
Yerinin Seçimi                         edeceği 16K'lık adres 
                                       alanını seçer. GEOS   
                                       $8000-$BFFF adresinde 
                                       bank 2'yi seçer.      
Ekran Belleği  D018'de      1000xxxx   Video RAM'in yerini   
               üst dört bit            belirler. GEOS A000-  
                                       BF3F arasını kullan.  
Karakter Belleği D018                                        
               1.2.3.       xxxx010x   Seçilen bankta hangi  
               bitler                  yerde C-64 karakter   
                                       ROM'unun              
                                       görüneceğini seçer.   
                                       GEOS onu $9000-$97FF  
                                       arasına koyar.        

kaynak: Teleteknik Commodore Dergisi, Sayı 50, Nisan 1990, Sayfa 48-49

Teleteknik
01.04.1990

Keywords: C64, Commodore, GEOS, Programlama, Yazılım, İşletim Sistemleri


C64 Projects Twitter Page

İlker Fıçıcılar's CBM Page