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