GRAPHİC+TEXT
Retro bilgisayarBazı macera oyunlarında (adventure games) veya grafik kullanım programlarında (graphic utilities) ekranın bir kısmının high-resolution grafik ekranı, diğer kısmının normal yazı ekranı olarak kullanıldığını görmüşsünüzdür.
Bunun nasıl gerçekleştiğini hiç merak ettiniz mi? Daha da ötesi, bu özelliği kendi programlarınızda kullanmak ister miydiniz? Yukarıdaki soruların en az birine evet cevabı vermiş iseniz bu program tam size göre...
Programı yazmak için yine MDE'ye ihtiyacınız olacak. Sorulacak sorulara (program adı: GRF+TEXT, başlama adresi:$0801, bitiş adresi:$0901) cevaplarını verin. Programı yazıp, kaydettikten sonra tekrar yükleyin ve RUN komutunu verin. Ekran çerçeve renginin (border) bir an için yanıp sönerek size işaret verdiğini göreceksiniz. Artık programımız kullanıma hazırdır.
SYS 40784 komutu verdiğinizde ekranın üst yarısının hi-res grafik ekranı, alt yarısının ise normal yazı ekranı olduğunu göreceksiniz. Eğer bu komutu ekranın üst yarısında yazmış iseniz şu anda cursör'ü göremiyor olabilirsiniz. Ama merak etmayın CRSR aşağı tuşuna bir süre basarak tekrar görebilirsiniz onu.
Grafik ekranını silmek için SYS 40914 komutunu, renklendirmek için ise POKE 780, sayı:SYS 40936 komutunu kullanabilirsiniz. Burada sayı: zeminin rengi + 16×çizgi rengi'dir.
Ekrandaki grafik sayısını kapatmak ve tamamen yazı ekranına dönmek için ise SYS 40861 komutunu kullanabilirsiniz. Eğer ekranınızın tamamen grafik ekranı olmasını istiyorsanız SYS 40882 komutu, bu durumdan tekrar yazı ekranına dönmek için ise SYS 40898 Komutu emrinizdedir. Ekrandaki grafik sayfasının sınırlarını değiştirmek isterseniz POKE 1021,grf. başl. satırı ve POKE 1022, grf. bitiş satırı komutları ile başarabilirsiniz. Bu registerlerin ilk değerleri sırasıyla 1,161'dir. Birkaç deneme ile amacınıza uygun satır numaralarını bulabilirsiniz.
Son olarak grafik hafızası olarak Bank2'nin ikinci yarısını ($A000-BF3F), video ram olarak da $8400-$8800 arasını kullandığımızı söyleyerek programla birlikte kullanacağınız utility programlarında veya kendi rutinlerinizde bu hususlara dikkat etmeniz gerektiğini vurguluyorum. Ayrıca programımızın PLASTİK GRAFİK (COMMODORE Dergisi, 4. sayı) programı ile tam uyumlu çalıştığını söylemek istiyorum. Birlikte çalıştırmak için önce PLASTİK GRAFİK programını çalıştırın. Daha sonra GRF+TXT programını yükleyin. Her iki programın komutları da aynen hizmetinizde.
Geldik programımızın açıklanmasına;
Programımız tarama interrupt tekniği (Raster interrupt technique) ile gerçekleştirilmiştir. Bildiğimiz gibi C-64 saniyede 60 kere işlettiği programı bırakarak başka bir programı işletir. Bu işletilen programın bir kısmı ekranın taranarak görüntünün yinelenmesi görevini yerine getirir. Eğer tarama satırı (raster line) belli bir satıra geldiğinde grafik ekranı açıp, diğer bir satıra ulaşınca da kapatırsak bu işlem saniyede 60 kez tekrarlandığı için gözümüz bundan rahatsız olmaz. Böylece amacımıza ulaşmış oluruz.
Tarama satırının bulunduğu adres $D012'dir. Grafik başlama ve bitiş satırlarını bu adrese yerleştiriyoruz. C-64'e tarama satırı interrupt gerçekleştirmek istediğimizi bildirmek için VIC'in 26 numaralı yazmacına (interrupt mask register, IMR) # % 10000001 değerini atamamız gerekiyor. Ayrıca IRQ vektörleri $314/$315'i bizim programımızı işaretleyecek şekilde değiştiriyoruz.
Grafik ekranının açılması, kapatılması, temizlenmesi, renklendirilmesi rutinlerini açıklamaya gerek görmüyorum. Bu konuda bilgiye ihtiyaç duyan arkadaşlar için en yakın ve açık kaynağın sayın Tuna Ertemalp'in Commodore 64 ile Grafik yazı dizisi olduğunu belirtmeme gerek yok sanırım.
Şimdiden iyi kullanımlar dilerim...