Plazma sayı 5, sayfa 93

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 93

Merhaba Dünya Örneği

Elbette ki bu örneği unutmuş değiliz. Atari'de ekrana yazı yazdırmanın birkaç farklı yolu var. Şimdilik diğer hafıza adreslerine çok bulaşmadan yalnızca ekran adreslerine kopyalama yaparak nasıl ekrana yazı yazdırıldığını görelim.

merhaba dunya.ata

BASLANGIC ADRESI - $0600 EKRAN - $9c40

!to "merhabadunya.xex",plain

* — BASLANGIC ADRESI-6

lword BASLANGIC ADRESI, BITIS ADRESI

* — BASLANGIC ADRESI ldx #$00 dongu lda YAZI,x sta EKRAN14182,x inx cpx #YAZI SONU-YAZI bne dongu jmp Ş$a000

YAZI !text "merhaba",0,"dunya" YAZI SONU - *

BITIS ADRESI — *

lword $02e0, $02e1l, BASLANGIC ADRESI

Atari'nin text ekranının başlangıç adresi $9c40'dır. Programın başında EKRAN sabitine bu değeri veriyoruz. Daha sonra bir döngü ile YAZI'da tanımladığımız karakterleri ekrana basıyoruz. Toplamda kaç karakterin kopyalanacağını YAZI'nın bitimine koyduğumuz YAZI SONU adresiyle YAZI'nın farkını alarak bulabiliyoruz.

EKRAN'ın başlangıcı BASIC'de imlecin dolaşabildiği alanın biraz dışında kalıyor. EKRAN'a 82 ekleyerek BASIC'de "READY" yazan satırın tam altına yazıyı yazdırmış oluyoruz.

Şekil 9.

Son olarak dikkat edilmesi gereken nokta Atari'nin karakter kodlarına uygun sonuç üretmediğidir. Küçük harfler söz konusu olduğunda bir problem yaşamazsak da diğer birçok karakter (boşluk karakteri de dahil olmak üzere) farklı sonuçlar verecektir. Bu yüzden, gerektiği yerde, karakter kodlarının kullanılması gerekiyor. Örneğin boşluk karakteri !text ile yazdırıldığında $20 (32) karakter kodunu oluşturur. Bu Commodore 64'de boşluğa denk gelirken Atari'de 9 karakterine denk gelir. Atari'de boşluk karakteri 0 kodundadır. Bunun için "merhaba dunya" yerine "merhaba",0,"dunya" yazmamız gerekiyor.

Assembler'dan Grafik Tabanlı Programlar Yazmak

Atari'de Assembler'dan grafik ekranı açmak oldukça kısa bir program parçasıyla yapılabiliyor. Örnek vermek gerekirse;

LDA #$00 STA $022f LDA #<GORUNTU STA $0230 LDA #>GORUNTU LISTESIİ STA $0231 LDA #$22 STA $022f

bu program parçası istenilen grafik modunu açabilir. $022f adresiyle Antic çipini yönetebiliyoruz. Bu adrese 0 değeri verdiğimizde Antic çipi kapanıyor. Böylece Antic çipinin okuduğu görüntü listesini (display list) değiştirme imkanı elde ediyoruz. $0230 ve $0231 adresleri bu listenin işaretçisi. $0230'a listenin yer aldığı hafıza adresinin alt byte'ını, $0231'e ise üst byte'ını koyuyoruz. Örneğin görüntü listemiz $2560 adresinde yer alıyor ise $0230'a $60, $0231'e $25 değeri vermemiz gerekiyor. Son olarak $022f adresine $22 değerini yazarak yeniden Antic çipini aktif ediyoruz ve yeni ekran görüntümüzle karşılaşıyoruz.

Buradaki soru işaretleri şunlar: $00, $22 gibi değerler nereden geliyor? Görüntü listesi tam olarak nasıl bir şey?

$022f adresi tanımlamalarda genellikle SDMCTL şeklinde kısaltılmıştır. Anlamı DMA kontrol register'ını kaydet demektir. Bu adrese yazılan değerler birer komut olarak algılanır. Yani $00 - Antic çipini kapat anlamına gelirken $22 - Antic çipini aktive et anlamına gelir.

Görüntü Listesi (Display List)

Görüntü listesi komutlar ve bu komutların parametrelerinden oluşan bir listedir. Bu yönüyle Amiga'nın Copper'ına benzetilebilir. Yukarıdaki program parçasında hangi grafik modunun açılacağı belirtilmemiştir. Bu tamamen görüntü listesinde yer alan değerlerle belirlenir.

Görüntü listelerinde kullanılabilecek komutlar aşağıdaki gibidir. Boş Tarama Satırı Kodları:

$00 : 1 boş satır

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