Plazma sayı 2, sayfa 163

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 163

Daha sonra Vice ya da CCS64 gibi bir emülatör ile bu dosyayı çalıştırabilirsiniz. Vice'da prg dosyalarını kolayca çalıştırmak için sürükle&bırak yöntemini tavsiye ederim.

Şimdi gelelim programın açıklamasına. $ab1e adresi Commodore 64 Basic ROM'unda yer alan STROUT yani "Output String" ROM adresine denk gelir (bkz: Link (http://www.tkk.fi/Misc/cbm/docs/c64-rom.html)). Bu adres, ekrana basacağı yazının adresinin alt ve üst byte'larını sırasıyla A ve Y register'larından okur. Commodore 64'de bellek adresleri 16 bit, ancak register'lar 8 bittir. Bu yüzden bir bellek adresine işaret etmek için her zaman (zero page yani $0000-$00FF adres aralığı hariç) iki byte ya da iki register kullanılır. $ab1e adresi "yazi" etiketinden itibaren 0 (sıfır) byte'ını gördüğü yere kadar olan tüm karakterleri ekrana basar.

Elbette ki ekrana yazı yazdırmanın tek yolu bu değildir. Commodore'un varsayılan ekran adresleri $0400-$07e7 aralığındadır. Dolayısıyla ekranın başından itibaren sabit bir karakter sayısındaki text'i transfer rutiniyle de ekrana bastırabiliriz. Ancak bu durumda "!text" yerine "!scr" kullanmamız gerekecektir.

hello2.a

!to "hello2.prg"

* = $0801 !byte $0c, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00

* = $080d ldx #$00 loop lda yazi,x sta $0400,x inx cpx #$0d bne loop rts yazi !scr "merhaba dunya"

Bu örnek ekranın en sol üst köşesinden itibaren "merhaba dunya" yazacaktır. Buradaki "cpx #$0d" satırında yer alan $0d, desimal sayı sisteminde 13'e karşılık gelir ki bu da "merhaba dunya" yazısının toplam karakter sayısına eşittir. Farklı uzunluklardaki yazıları ekrana bastırırken $0d değerini yazının uzunluğuna göre değiştirmek gerekecektir.

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