C 128 İçin Püf Noktaları

40/80 Kolon Çevrimi

Bilgisayarı açtıktan sonra klavyenin üst kısmında yeralan 40/80 kolon gösterim düğmesi çalışmaz. Fakat bilgisayar açıldıktan sonra görüntü değiştirmenin üç yolu vardır:

ESC4X Etkileşimli tarzda kullanılırken
PRINTCHR$
(27)4 Program içerisinde
SYS 49194 Program içinde veya makine
dilinde kullanırken
SYS 52526 40 kolon'a dönüş

40-Kolon Ekranı

40-kolon ekranı C-64'ün VIC 6564 çipine benzer VIC 8564 çipi tarafından kontrol edilmektedir. Görüntü RAM'ı ve renk hafızası aynı miktarda yer kaplamaktadır. EKRAN RAM'ı RENK RAM'ı

$0400-$07FF (1024-2023) $D800-$DBFF (55296-56295)

Aşağıdaki komut ile 40-kolon ekranın istediğiniz bir yerine istediğiniz bir karakter koyabilirsiniz (Bu komutu C-64 ile de kullanarak aynı sonucu elde edebilirsiniz).

POKE 1024 4 kolon *
(40*satır),0-255

Bundan başka ekranın is tediğiniz bir yerine istediğiniz rengi verebilmenizi sağlayan komut ise şudur (C- 64 için de geçerlidir).

POKE 552964 kolon *
(d0*satır),0-15

Her iki komutta da kolon 0-39 satır 0-24 arası değerler alabilirler. 0-255 olan değerde kullanabileceğiniz karakter kodlarını göstermektedir.

C-64'te olduğu gibi ekran hafızasını 1K'lık aralık-larla taşıyabilirsiniz, fakat renk hafızasını başka bir yere taşımanız mümkün değildir.

Çeşitli Ekranlarla Çalışma

Başlangıçta da anlaya bileceğiniz gibi, 40-kolonda aynı anda birkâç ekranı birden kullanabilme imkânı

- vardır. Bunu üç ekranlı bir örnek ile açıklayacağız. Bu ekranlar normal durumdaki hafızasının bir kısmını kullanacağı için BASIC hafızasını biraz kaydırmamız gerekmektedir, aksi takdirde BASIC programlarınız yeni ekran hafızalarına yazılabilirler. Etkileşimli tarzda şu komutları giriniz.

POKE 46,40: POKE10240,0: NEW

Aşağıdaki BASIC program ile “FI F3 F5” tuşlarını kullanarak ekranları değiştirebilirsiniz.

“EKİ 11 satır: buraya eklenecek”” 42-53

Programı çalıştırdıktan sonra FI F3 F5 tuşlarından birine basarak elde edebileceğiniz üç ayrı ekranınız olacaktır. Bu ekranlarda ilk olarak tamamı ile çeşitli karakterlerin oluşturduğu bir çöplük görüntüsündedir. Ekranları PRINT CHR$(147) veya PRINT (CLR/ HOME) ile temizleyin. Bir ekrana geçtiğiniz anda ilk başta imleci göremeyeceksiniz. İmleci görebilmek için herhangi bir tuşa-basmanız gerekmektedir. Ekranlarınız arasında değişimi program içinden de yapabilirsiniz. Bunun için şu komutları programınızda kullanmalısınız. -

-POKE 213,4
Birinci ekran
POKE 213,5 İkinci ekran
POKE 213,6 Üçüncü ekran

Aşağıda programımız tarafından kullanılan hafıza bölümleri yer almaktadır:

Ekranlar EKRAN 1 EKRAN 2 EKRAN 3 Ekran hafıza başlangıcı $0400 $23FF $27FF Renk REM -başlangıç $D800 $D800 $D800 Renk RAM -bitimi $DBEFF — $DBFF Basılacak tuş FI F3 FS CIRCLE Komutu

BASIC 7.0'daki en yararlı komutlardan birisidir. İsminden de anlayacağınız gibi bu komutla daireler çizebilirsiniz. Fakat bu komut sadece daire çizmeye yaramıyor, onunla çizgiler, üçgenler, dörtgenler, elipsler ve diğer geometrik şekiller çizmeniz mümkündür. Bu komut aşağıda verilen yapıya sahiptir.

CIRCLE renk renk hafıza kodu (0-3) X,)y : merkez noktanın koordinatları xr : x-yönünde yarıçap yr. : Jy-yönünde yarıçap Sa : dairenin başlama açısı ea : dairenin bitim açısı r : dönme için açı 1 : dairenin çizilen bölgeleri için açı

Bir daire çizmek istiyorsanız sadece ilk dört parametreyi (renk, x, y, xr) kullanmalısınız, diğer parametreler daha ince detaylar içindir. Bir elips çizmek için yr parametresine xr parametresinden farklı bir değer vermelisiniz. Örnek:

CIRCLE 0,160,100,10,30 Yarım daire elde etmek için şunu yazın

CIRCLE

En son parametreye aşağıda verilen değerleri girerseniz daire yerine çeşitli geometrik şekiller elde edersiniz.

1 geometrik şekil 0-44 Daire (sayı büyüdükçe daire yuvarlaşacak) 45 Oktagon 60 Hexagon 75 Pentagon 90 Kare ve dikdörtgen 91-119 Çeşitkenar üçgen 120 İkizkenar üçgen 121-179 Eşkenar üçgen

180-255 Çizgiler

- Window (Pencereler)

WINDOW'lar yeni çıkan bütün bilgisayarlarda olan bir özelliktir. C-128 de bu özelliğe sahip olarak doğmuş olan bir bilgisayardır. Ne yazık ki, mevcut komutlarla bir kerede sadece bir window açabilirsiniz, fakat biraz gayretle birden fazla window elde etmemiz mümkündür. Aslında bütün bir ekran bir window, bir window da bir ekrandır. WINDOW 0,0,39,24 komutu ile 40-kolon gösterimde bütün ekranı kaplayacak bir window tanımlamış oluruz. WINDOW'la tanımlanmış alanın koordinatlarını şu şekilde elde edebiliriz:

10 WINDOW 1,11,20,22
20 PRINT “ALT
30 PRINT “ÜST SINIR:”;PEEK (229)
40 PRINT “SOL
50 PRINT “SAĞ

Üstteki programda verilen adresler tanımladığınız window'un koordinatlarını taşımaktadır. Bu adresleri kullanarak makine dilinde de window'ları tanımlayabileceksiniz. Bu adreslerin açılış durumları şöyledir:

228 ($E4) : 24 229 ($E5) : 0 230 ($E6) : 0 231 ($E7) : 79 (80-kolon) : 38

Eğer ekrandan büyük window alanı tanımlarsanız sorunlarla karşılaşırsınız. INPUT komutuna yardımcı olması için window tanımlayabilirsiniz, böylece kullanıcı imleç kullanarak dışarı çıkamaz. Aşağıda buna örnek bir program bulacaksınız.

EK-2 9 satır 146-155

Window Komutunu Kullanarak PRINT AT

C128'de PRINT AT komutunun işlevini CHAR komutu yapmaktadır, fakat bu her zaman en iyi yöntem değildir -mesela çıktınızın uzunluğunu kontrol edemezsiniz. Bundan başka basılacak yazıda kontrol karakterleri olabilir. Eğer WINDOW komutunu kullanırsak bu zorlukları yenebiliriz. Bu tür kullanıma bir örnek programı aşağıda bulabilirsiniz.

EK-3 10 satır 163-173

Ekranın Bir Kısmını Silme

Window komutunu kullanarak ekranın sadece bir kısmını silebilme imkânınız bulunmaktadır. Bunu yapmak için iki yol uygulayabilirsiniz:

WINDOW 10,10,20,20:PRINT"CLR/HOME" veya WINDOW 10,10,20,10,1

Ekranın alt yarısını silmek için şu kısa programı girmeniz yeterli olacaktır.

10 WINDOW 0,12,39,24,1
20 WINDOW 0,0,39,24

Window ile Tanımlanmış Bölgenin İçeriklerini Saklama

Mesela bir programınızda WINDOW komutu ile oluşan ufak bir ekranda çeşitli seçenekleri kullanıcıya sunuyorsunuz. Bu ekranın görevi bittiğinde, altında bulunan orijinal yazının ortaya çıkması gerekir. Fakat C128'deki WINDOW komutu bunu yapmamaktadır. Bir kere window kapatıldığında içeriği de tamamen kaybolmaktadır. Aşağıda içeriği kaybolmayacak window ile çalışan bir program sunuyoruz.

EK-4 41 satır 192-233

Programımızın enteresan kısmı 60000'inci satırda başlamaktadır. 60010'uncu satırda X() dizisi tanımlanmaktadır. Bu dizinin boyutları tanımladığınız window'un boyutlarına bağlıdır. Eğer bu programcığı kendi programlarınızda kullanacak olursanız, kendi programınızda X() adlı bir değişken veya dizi olmamasına dikkat edin. Üstteki programımızın tek kötü yanı, bütün BASIC programlarda olduğu gibi ağır olmasıdır. Aşağıda aynı işi yapan makine dilinde yazılmış programı bulacaksınız.

EK-5 242-285 43 satır

Programın 0 ile 170'inci satırları size programın işleyişine örnek olarak verilmiştir. Programın asıl önemli kısmı 180-420'nci satırlar arasıdır. Programı yazıp sakladıktan sonra çalıştırın.

Burak KİPER