Commodore sayı 78, sayfa 19

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 19

Tabii ki ekranın sol-üst köşesinin koordinatının 0,0 olduğunu kabul etmelisiniz bu formülü kullanmak için. $07E8-$07F7 arasında geçerli bir veri yoktur. İsterseniz üç-dört baytlık bir data alanı olarak burayı kullanabilirsiniz. $07F8-$07FF arasında, 0. Sprite'tan başlamak üzere 8 SPrite'ın grafik datalarının adresini belirleyen bayt yer alır. Bu baytı 64'le çarparsanız Sprite'ın grafik datalarının bellekteki adresini hesaplayabilirsiniz. Şu anda sprite konusunun detaylarına girmeyeceğim. Kursumuzun ilerleyen bölümlerinde bu konular da yer alacak. $0800-$9FFF arasında BASIC programı ve değişkenler yer alır. bu bölgenin ayrıntılı bir açıklamasını “ROM'unuzu kullanın” yazı dizisinde yapmıştım. İhtiyacı olanlar o yazıya bakabilirler. $A000-$BFFF arasında BASIC yorumlayıcısının ihtiyacı olan makine dili rutinler yer alır. Bu bölgeye kısaca BASIC ROM adı verilir. Burada yer alan rutinlerden kullanılabilecek olanlarını da kursumuzun ilerleyen bölümlerinde vereceğim. $C000-$CFFF arası tamamen kullanıcıya ayrılmış boş alandır. Ama VIC'in özel (ve garip) tasarımından dolayı bu bölgeyi grafik için kullanmak oldukça zordur. Bu yüzden genelde program kodu ve datası için ideal bölge olarak görülür. Biz de hemen hemen tüm programlarımızı bu bölgeye yazacağız. BASIC, POKE komutu dışında hiçbir yolla bu bölgeye erişmez. Yani buradaki datalarınızın yanlışlıkla silinmesi diye bir şey söz konusu bile değildir. Şu anda bu alan size küçük görünebilir. Ama hiç tasalanmayın, bu bölgeyi dolduracak kadar büyük bir program tasarlamak için kursumuz bittikten sonra bile oldukça çok çalışmanız gerekecek.

adresleri VIC yardımcı çipine ayrılmıştır. Ama VIC'in sadece 46 re: gister'ı olduğu için $DO40 adresine eriştiğinizde (bu adrese yazdığınızda ya da bu adresi okuduğunuzda) doğrudan doğruya $2D000'a erişmişsiniz gibi işlem yapılır. Aynı şekilde $DO80, $DOCO, $D100, ... adresleri de aynıdır. Kısca VİC kullanılırken IK gibi görünen bellek alanı aslında 64 baytlık 16 bölge olarak çalışır (Uuups. Kafanızı karıştırdım galiba). En iyisi $DI160 gibi adreslere değerler yazın ve çerçeve renginin değiştiğini gözleyin. Bu sayede $DO00-$DO3F bölgesinin kopyalarının $DO40-$D3FF arasını nasıl doldurduğunu gözünüzle görebilirsiniz.

$D400-$D7FF adresleri de SID çipine aittir. SID'in de sadece 28 registeri olması (ve 28 adrese ihtiyacı olması) sebebiyle renk RAM'i bulunur. Bu adreslerin en başında yer alan $D800, yani 55296, sol üst köşede yer alan harfin (karakterin) rengini belirler. Bu bölge de aynı karakter ekranı gibi düzenlenmiştir. İstediğiniz X, Y koordinatlarında yer alan karakterin rengini belirlemek için kullanacağınız adresi de deminki formüle benzer bir formülle hesaplayabilirsiniz:

ADRES=

$DC00-$DCFF arasındaki bölge de CIA çiplerinin ilkine ayrılmıştır. Bu alanda yer alan adresler yardımıyla klavyeyi ve joystick portlarını okuyabilirsiniz. Bu çip register yönünden en fakir olanıdır. Sadece 16 registere sahip olduğu için bol bol adres tekrarı yapar.

$DD00-$DDFF adresleri de CIA çipinin ikincisine aittir. Bu çip de 16 registerlidir ve kaset ile disk iletişimi konusunda uzmandır.

$DE00-$DFFF arası ne size ayrılmıştır, ne de bilgisayar tarafından kullanılır. Eğer bir tasarımcının kendi çipleri için adres alanına ihtiyacı olursa burayı kullansın diye ayrılmış bellek alanıdır burası. Bazı kartuşlar programlarını burada saklar. Şu anda hiçbir işinize yaramaz.

$E000-$FFFF adresleri de BASIC ROM'a sığmayan yorumlayıcı rutinlerinin birazının ve giriş çıkış rutinlerinin tamamının saklandığı bellek alanıdır. KERNAL ROM olarak bilinir. Kullanıcıdan bilgi girmek istediğiniz zaman, ya da program yüklemeniz gerektiğinde bu adreslerde yer alan rutinlerin kapısını aşındırmanız gerekecek. Yeri geldikçe KERNAL ROM'dan bilgiler de vermek niyetindeyim. Tablo 2'yi kullanarak adreslerin tam olarak belleği nasıl parçalara ayırdığını görebilirsiniz. Bu yazıda verdiğim bu bellek haritasının tek amacı sizin programlarınız için kullanılabilecek seviyeye geldikçe detaylı bellek haritaları da yazımızda yer alacak. Gelecek ay makine dili komutlarının en basitleriyle kursumuzun en eğlenceli kısmına girişeceğiz. Umarım sizin de hoşunuza gider. Bu aylık hoşçakalın.

Hatasız Kul Olmaz:

Bu dergide yazı yazdığım iki sene boyunca hatasız yayınlanan bir yazım neredeyse hiç olmadığı için, bu yazının sonuna bir hata köşesi açmaya karar verdim. Bulduğunuz her türlü hatayı bana bildirmeniz sizin ve arkadaşlarınızın yararına olacaktır. Gelelim geçen sayının (77) hatalarına: 1) 17. sayfada yer alan tabloda yazılmış. Bu “53901” olacaktı. 2) 18. sayfadaki tabloda yer alan “250 — $FA”'nın ne olduğunu anlamak için çok uğraşmayın. Doğrusu “$FA” olacaktı. 3) 19. sayfanın başındaki formüle fazladan bir “2” girmiş. Siz onun üstünü karalarsınız. 4) Aynı kolonun en altındaki formülde de “B” ile “2” arasına “4” girmiş. Doğrusu olacaktı. 5) Geçen sayının yıldızı burada işte: Makine dili yazısında tablo unutulmuş. BASIC ile Makine dilinin hızlarını karşılaştıran tablo bu sayfalarda yer alacak (inşallah). 6) 26. sayfada yer alan resimlerin ilkinin ELECTRIC'e ait olduğu söylenmiş. Aslında bu grafiği ben çizmiştim... Şaka, şaka! 7) Program Döküm Eki'nin 23. sayfasında bulunan INVERT/H/K programının benle ve yazılarımla hiçbir alakası yoktur. Sanırım bir arkadaşın programı benimkiler arasına karışmış. Kendisinden dergimiz adına özür diliyorum. Geçen sayıda bulabildiğim hatalar sadece bu kadar. Umarım hata sayısı gelecek dergilerde daha az olur.

Klavyeyle gezinmek için ← ve → tuşları.