Bu sayfadaki yazılar
Sayfanın metni
Sayfa 46
Application kodunun yeri ve RAM GEOS bellek haritası hakkında çoğu programlayıcıya yeterlidir. RAM dört ayrı bölgede bulunmaktadır. Buna applicatin bölgesinden ayıracağınız yerleri de ekleyebilirsiniz tabii. 1. rO-r15 pseudo registerleri. 2. arası. Bu bölge ne C64 ne de GEOS KERNAL'ı tarafından kullanılır ve application'larınız için ideal bölgelerdir. Bundan sonra bunlara a0 ve al pseudo registerleri diyeceğiz. 3. $0070-$007F arası. Bu bilgilere de a2-a9 pseudo registerleri adını vereceğiz. 4. $7F40-$7FFF arası. Her ne kadar zero-pageide değilse de programlarınız için uygun bir değişken saklama alanıdır. Bellek hakkında daha ayrıntılı bilgi istiyorsanız bellek haritasını inceleyin. Bütün giriş/çıkışlar ve interrupt kontrolu GEOS tarafından yapılmaktadır. Kernal rutinleri kullanım açısından çok daha kolaydır ve programınız onları kullansa da kullanmasa da bellekte yer kaplarlar.
GEOS KERNAL VERİSYON BYTE'LARI:
Elinizde GEOS'un hangi verisyonunu buludurduğunuzu anlamanızı sağlayacak birçok byte bulunar GEOS KERNAL 'ında. $c006 adresinde “GEOS BOOT” yazısını görürüz. Bu yazı sayesinde programınızın GEOS tarafından çağırılıp çağırılmadığını öğrenebilirsiniz. Rutinlerinde GEOS KERNAL rutinlerini kullanmayacak olanlar $C000-$CO7F arası dışındaki tüm kernal'ı kullanabilirler. Fakat bu bellek alanı tekrar GE- 49 OS KERNAL'ı yüklemenizi sağlayacağı için buraya dokunmamalısınız. “GEOS BOOT” yazısını verisyon numarasını içeren iki rakam takip eder. GEOS V1.3'den sonra bu byte'- ların arkasına ek olarak yeni bilgiler içeren byte'lar konmuştur. İlk olarak bir dil byte'ı bulunur. Bunun hemen arkasında daha ileride eklemek üzere üç byte'lik boşluk bulunur. Bunların şu anki değeri $00'dır. GEOS verisyon byte'ları hakkında daha ayrıntılı bilgiyi ilgili tabloyu inceleyerek elde edebilirsiniz. Bu verisyon byte'larından programınızın hangi GEÖS verisyonu tarafından yüklendiği öğrenebilir ve bu verisyonla uyumlu olup, olmadığına karar verebilirsiniz.
KERNAL VERİSYON BYTE'LARI:
.psect $c000; kernal programı $c000'dan başlar BootGEOS: jmp GEOS'u yeniden yükler ilerde çıkacak yeni GEOS verisyonlarında 0-BootGEOS değişse bile BootGEOS'un yeri değiş- meyecektir ve c000-c02f arası korunduğu süre- ce jmp BootGEOS'- la GEOS'u boot edebilirsiniz. ResetHandle: vektör; GEOS Ker- nal'ı tarafın- dan kulla- nılan bir vektördür.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 47
BootFilename: .byte “GEOS BOOT”; $006'da bulunur. Bu yazı sayesinde programınızın GEOS'tan yüklendiğini anlarsınız. VERSİYON: byte $13; GEOS verisyonunu gösteren byte. Örnekte verisyon — 1.3. YABANCI DİL BYTE'I: > DİLBYTE'I; İNGİLİZCE ; ALMANCA ; FRANSIZCA ; HOLLANDACA ; İTALYANCA ; İSVEÇÇE ; İSPANYOLCA ; PORTEKİZCE
GEOS KERNAL'ı $Bf40 ve yukarısına yerleşmiştir. Bu sayede altında kalan RAM bölgesini kendi amaçları için kullanılmıştır. GEOS'un normal çalışması sırasına tüm ROM'lar ve $DO00-$DFFF kaldırılmış durumdadır. Seçilen bank $0001 adresi tarafından ve kartuş çıkışında bulunan iki pin tarafından kontrol edilir. Bu iki pin'in değerini değiştiremeyeceğinize göre bank değiştirmek için yalnızca $0001 adresini kullanacağız. Eğer programınızda giriş/çıkış bölgesine veya BASIC ve KERNAL ROM'larına GEOS kernal rutinlerinde ayrılarak ulaşmak istiyorsanız. İki GEOS KERNAL rutinini kullanmanız gerekir: InitForlO ve DoneWithlO. GE-OS'a, birinci rutinle giriş/giriş bölgesine ulaşmak istediğinizi. İkincisiyle de giriş/çıkış'la işinizin bittiğini iletirseniz. Bu rutinler ayrıca bellek haritasını değiştirme ve interruptlar ile (gerektiğinde) sprite'lerin yok edilmesi işleriyle de Bank değiştirme ile daha ayrıntılı bilgiyi de PROG-RAMCININ EL KİTABI'nda KERNAL rutinlerini anlatan bölümün hemen öncesinde bulabilirsiniz.
ASSEMBLER KOMUTLARI:
Bundan sonra kullanacağımız assembler'in SUPE-RASS'le uyumlu olmadığını söylemiştim. Ancak burada verilen yerine değerlerini koyarsanız GE-OS rutinleri için SUPER-ASS'i de kullanabilirsiniz. Fakat size tavsiyem daha iyi bir assembler bulmanız. Kullanacağımız assembler'da şu şekilde sınıflandırılacak: *NEWPATTERN” gibi tüm harfler büyük harf olursa bahsedilen tek byte'lık bir GEOS sabitidir. Bunların yerine — $NN kullanabilirsiniz. *mobprior” şeklinde tüm harfler küçük olarak yazılmışsa LABEL iki byte'lık bir c64 sstem vektörüdür ve yerine SNNNN kulanılabilir. *windowTop” gibi ilk kelime küçük, ikinci kelime büyük harfle başlarsa bu bir GEOS sistem vektörüdür ve yerine yine $NNNN kulanılabilir. *BootGeos' gibi bütün kelimeler büyük harfle başlarsa bahsedilen label bir GEOS KERNAL rutindir ve yerine $NNNN kulanılabilir. Yukarıdaki NN'ler bir byte yerine geçmektedir. Assembler'ımızın özel komutları şöyle sıralanabilir: 1) *-$NNNN: Programın başlangıç adresi. 2) .byte $NN, $MM,... : $SNN, SMM değerlerini sırayla belleğe yazar. 3) $NNMM,$KKLL.,,... : SMM, $NN, $LL, $KK değerlerini belleğe yazar.
4) .block $NNNN : $NNNN kadar boş byte bırakır. 5) .if koşul : Koşul doğruysa, .ELSE veya .ENDIF'e kadar olan bölgeyi assemble eder. 6) .else : Belirtilen koşul yanlışsa .ENDIF'e kadar olan bölgeyi assemble eder. 7) .endif : .if ve .else komutlarının sonunu belirtir. Artık bir program yazabilecek tüm temele sahipsiniz. Bu ay Program Doküman Eki'nde yayınlanan ilgili programları yazmanız, daha sonra yayınlayacağımız örnek programları GEOS'ta çalıştırabilmeniz için gereklidir. Bu yüzden programın uzunluğu sizi yıldırmasın. Haydi GEOS'çular, klavye başına. Gelecek ay, programların temelini oluşturan ikon ve menülerin kullanımını öğrenerek devam edeceğiz yazımıza. Şimdilik hoşçakalın.
mam mr