C64 Türkiye sayı 2, sayfa 17

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 17

Şimdi gelelim önemli bir konuya.... Eğer LORAM, HIRAM ve CHAREN’in hepsini “0” yaparsanız ne olur?. Bunu yaparsanız artık $D000 - $DFFF arasındaki RAM’ı kullanabilir hale gelirsiniz. Ayrıca BASIC ve KERNAL ROM’ları devre dışı kalacağından C64’e adını veren 64 K RAM tamamen kullanıma açılmış olur. Fakat hiçbir giriş / çıkış işlemi yapılamayacağından ne işinize yarayacağını bilemem. C64 normal bellek durumundayken BASIC ve KERNAL ROM adreslerine yapılacak bir POKE işlemiyle veri ROM’a değil RAM’e yazılacaktır. Zaten isteseniz de ROM’a bir şey yazamazsınız. Çünkü ROM’un Türkçesi YALNIZ OKUNABİLİR BELLEK’tir. Eğer PEEK komutuyla bir okuma işlemi yaparsanız elde edeceğiniz değer RAM’daki değil ROM’daki değerdir. Çünkü öncelik ROM’dadır. 1 numaralı adresi istediğiniz gibi kullanabilirsiniz ama dikkatli olmak şartıyla. Dergimizin ilk sayısında yer alan MAKİNE DİLİ EDİTÖRÜ çalışırken BASIC ROM altındaki RAM’de bulunur. Eğer MDE çalışırken bilgisayarı resetlerseniz aşağıdaki 5 komutu yazarak MDE’yi tekrar kullanabilirsiniz. POKE 40956, 169 POKE 40957, 54 POKE 40958, 133 POKE 40959, 1 SYS 40956 Eğer 1 numaralı adresin içeriğinin $37 olduğundan eminseniz, POKE 40958, 198 POKE 40959, 1 SYS 40958 komutlarını yazmanız yeterlidir. İlk dört POKE komutlarının assembler karşılığı şöyledir. LDA #$36 STA $01 Son iki POKE komutunun assembler karşılığı ise DEC $01 komutudur. Bu iki adresten sonra sıra I/O bölgesi dediğimiz adreslere geldi. Genel bir ifadeyle $D000 - $DFFF adresleri arasında bulunan bu bölgede C64’ün görüntü işlemlerinden sorumlu VIC, ses işlemlerinden sorumlu SID, ekranda gördüğünüz renkler için kullanılan COLOR RAM, her türlü klavye, joystick, zamanlayıcı, kaset ve disket işlemlerinden sorumlu CIA1 ve CIA2 ile tamamen kullanıcıya ayrılmış durumda olan ve genellikle hardware için kullanılan IO1 ve IO2 bölgeleri vardır. Bazı kartuşlar bu adresleri kullanır. Eğer elektronik bilginiz varsa bu I/O1 ve I/O2 bölgelerini kullanarak bir takım devreler yapabilirsiniz. Aşağıdaki tabloda her çipin yer aldığı adresleri göreceksiniz.

İSİM GERÇEK İSMİ ADRESİ GERÇEK ADRESİ VIC Video Interface Controller $D000 - $D3FF $D000 - $D02E SID Sound Interface Device $D400 - $D7FF $D400 - $D41C COLOR RAM COLOR RAM $D800 - $DBFF $D800 - $DBE7 CIA1 Complex Interface Adapter 1 $DC00 - $DCFF $DC00 - $DC0F CIA2 Complex Interface Adapter 2 $DD00 - $DDFF $DD00 - $DD0F I / O 1 Input / Output 1 $DE00 - $DEFF $DE00 - $DEFF I / O 2 Input / Output 2 $DF00 - $DFFF $DF00 - $DFFF Tabloda iki ayrı adres görüyorsunuz I/O çiplerinin gerçek çalışma adresleri en sondaki sütundaki değerlerdir. C64’ü tasarlayanlar öyle bir iş yapmış ki mesela ekranın dış rengi için kullanılan $D020 adresi yerine $D220 yazarsanız ekran rengi yine değişecektir. Bu durumda siz SHADOW REGISTER kullanmış oluyorsunuz. Yani yazdığınız adreste gerçekte hiçbir şey yoktur. Programlarınızda ilginçlik olsun diye kullanabilirsiniz. VIC çipinin registerleri her 64 adreste bir kendini tekrarlar. Yani $D020 yerine $D020 + 64 + 64 +...... kullanabilirsiniz. $D020 için kullanabileceğiniz en son adres $D3E0 olacaktır. Aynı tekrarlama SID çipi için 32 adrestir. CIA1 ve CIA2 çiplerinin registerleri ise her 16 adreste bir tekrarlanır. Yukarıdaki gereksiz bilgilerden sonra artık gerçek adresleri incelemeye başlayabiliriz.

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