Commodore sayı 78, sayfa 35

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 35

Her ay Atölye'ye konu bulmak daha zor oluyor. Ne olur biraz yardım edin. Yaptığınız programları ve açıklamalarını, ya da yapamadığınız programların fikirlerini memnuniyetle kabul ederim. Eğer bu da işe yaramazsa her ay bu sayıda olduğu gibi komik komik programlarla idare etmek zorunda kalırsınız. Uyarması benden. Yukarıdaki kötümser uyarıya pek kulak asmayın. Bu ayki program o kadar da kötü değil. BASIC kullanıcılarının çerçevenin üst kısmına ait alt kısmına 24'er karakterlik mesajlar yazmalarını sağlayan bir rutin tanıtacağım bu ay. Bu mesajlar normal karakter setinde olacaklar ve istediğiniz renkte görünebilecekler. Ama sistemi biraz zorladığımız için diskten yükleme yapılırken bilgisayarınızı kilitliyor ve BASIC'i oldukça yavaşlatıyor. Bunun yanında iyi yanları da var programın, Mesela üst ve altta 8'er sprite kullanılmasına rağmen ekran sınırları içinde kullanılan SPRITE'ları hiç etkilemiyor. Yani toplam 24 sprite'ı bir anda ekranda tutuyor. Tabii ki sprite'ları gerekli şekilde MULTIPLEX etmiyor. Yani SPRITE'ınızı BORDER sınırlarının altına ya da üstüne çıkarmaya çalışırsanız ortalığı karıştırırsınız. Bu yazıda ilk olarak BASIC'cilerin programı nasıl kullanabileceklerini anlatacağım. Eğer yeterince yerim kalırsa bir de makine dili kullanıcıları için rutinleri açıklamak niyetindeyim. Eğer bu sayıda yerim kalmazsa bile gelecek sayıda mutlaka rutinleri açıklayacağım (çok değerli oldukları için değil, makine dili meraklılarını üzmemek için). Programın yapabildikleri o kadar fazla değil. İsterseniz SYS ile çağırabileceğiniz adreslerin ve yaptıkları işlerin listesini vereyim önce: $C000 — 49152: Border'ları açan ve sprite'ları...

Vedat Hallaç, interrupt'larla başa çıkan interrupt'ları çalıştırır. Bu arada görüntüde arızalar yaratacak olan $3FFF ve $FFFF adreslerini temizler. $C180 - 49536: Yazı alanında yer alan 24 karakteri üst çerçevede yer alan bölgeye yerleştirir. $C18C - 49548: Yazı alanında yer alan 24 karakteri alt çerçevede yer alan bölgeye yerleştirir. $C100 - 49408: Sprite'ların grafik datasını temizler. Yazıları silmek istediğinizde ya da programı ilk yüklediğinizde kullanmalısınız. $C200 - 49664: Interrupt'ları kapatarak kontrolü ROM'lara devreder. Hıza ihtiyacınız olduğu zamanlarda, ya da yükleme yapmadan hemen önce bu adrese sıçramalısınız. Demin de söylediğim gibi, interrupt'lar açıkken diskten yükleme yapmaya kalkarsanız bilgisayar kilitleniyor. Interrupt'ları geri açmak için $C000'a sıçradığınızda yazılar hiç değişmeden geri dönecektir. Bir de POKE'larla erişebileceğiniz adreslerin kısa bir listesini vereyim isterseniz: $C1B0 - 49632: Üstteki yazının hangi renkte yazılacağını belirler. $C1B1 - 49633: Alttaki yazının hangi renkte yazılacağını belirler. $C1B8 - 49592: Yazı alanının başlangıcı. Bu alan 24 bayttan oluşur ve yazılacak yazının ekran kodlarını tutar. Yani “A” harfini yazdırmak için ASCII kodu olan $41 (65)'i değil $01 (1)'i kullanmalısınız. Programın tam olarak nasıl kullanılacağını belirtemem. Bunun için en iyi yöntem kullana kullana bu işi sizin öğrenmeniz olacaktır. Burada size sadece benim aklıma gelen incelikleri belirteceğim. Kısa bir liste halinde vereceğim bu püf noktalarına çok güvenmeyin. Hatta kendi püf noktalarınızı oluşturmaya çalışın. İşte benim fark edebildiklerim:

Rutinin Bellek Haritası 1. SYS ile Çağrılan Adresler:

der, yazıları siler. Sprite'lara yazar. Sprite'lara yazar.

BASIC'e bırakır.

belirler.

belirler.

Diğer adıyla: Yazı alanı.

$C000-49152: Boörder'ı açacak interrupt rutinini aktive e- $C100—49408: Sprite grafik alanını (dolayısıyla borderdaki $C180-—49536: Yazı alanındaki karakterleri üst borderdaki $C18C-49548: Yazı alanındaki karakterleri alt borderdaki

$C200—49664: Interrupt'ı (ve border'ı) kapatır, kontrolü

2. POKE ile Kontrol Edilen Adresler: Üst borderda yer alan yazıların rengini

$C1EB1-49633: Alt borderda yer alan yazıların rengini

$C1B8-$C1CF - 49592-49615: $C180 veya $C18C ile çağrılarak, sprite'lara yerleştirilecek yazının yazılacağı yer. Vereceğim önemli noktalar: 1) Programınızın en başında SYS 49408 komutunu verin ve sprite alanlarını temizleyin. Sprite alanı olarak $E000 civarı kullanıldığı için BASIC programlarınıza bu şekilde zarar veremezsiniz. 2) Eğer uzun süre aynı yazı ekranda duracaksa bu yazıyı sprite'lara interrupt'lar kapalıyken yazdırın. Bu sayede işlem çok daha kısa sürecektir. 3) Yazıları ekrana yazdırmak için örnek programdaki metodu kullanmayın. Bunun yerine gerekli sayıda DATA satırlarına yerleştirin ya da doğrudan belleğe POKE edin. Bu sayede işiniz daha hızlı görülür. 4) Yazı alanına hiçbir zaman 24 karakterden az değer yazmayın. Daha önceden yazılmış olan karakterlerin artıkları sizin yazılarınızı bozabilir. 5) Altta ve üstte aynı mesajı yazmak istiyorsanız SYS 49536 ve SYS 49548 komutlarını ardışık olarak verin. 6) Yazı yazmadan önce interrupt'ı kapatın (SYS 49664). Her şey hazır olduktan sonra interrupt'ı tekrar açabilirsiniz (SYS 49152). 7) Eğer karmaşık hesaplara girişecekseniz, interrupt'ı kapatın. Çünkü interrupt'lar açık olduğu zaman bütün hesaplar yüzde otuz ile elli arasında yavaşlıyor. 8) Programlarınız sprite kullanıyorsa hiçbir şey değiştirmeye çalışmayın. Sadece sprite'ların görülebilir ekran sınırları içinde kalmasına dikkat edin. Eğer siz sprite'ınızı benimkilerin yanına getirirseniz hiç de hoş olmayan görüntülerle karşılaşırsınız. 9) $3FFF (16383) ve $FFFF (65535) adreslerini elinizden geldiğince koruyun. Bu bölgelere bir değer yazarsanız border'da garip siyah çizgilerle karşılaşırsınız. Aslında isterseniz çerçevede yana kayan çizgiler yaratabilirsiniz. Şu programı bir deneyin isterseniz:

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