Bu sayfadaki yazılar
Sayfanın metni
Sayfa 20
Assemblerin biri bitiyor diğeri başlıyor değil mi? 12 sayfalık bir bölümden sonra bilmem kaç sayfalık C64ASM bölümüne başlıyoruz. Korkmanıza gerek yok, sayı sistemlerini komutları vs. yeniden anlatmayacağım. C64ASM PC’de 6510 assembler komutlarını kullanarak program yazmamıza yarayan yardımcı programlardan biri. Eğer PC’nizde VICE gibi bir emülatör programınız varsa C64ASM ile elde ettiğiniz .PRG uzantılı dosyayı hemen çalıştırabilirsiniz. C64ASM programı gerçekten çok kullanışlı bir programdır. Ben artık bu programı kullanıyorum. En güzel tarafı C64’ün hafızası tamamen kullanıma açık olmasıdır. Yani emülatör ile mesela TURBOASSEMBLER kullanınca karşınıza çıkan hafıza sınırlaması –TASM ile $C000’dan başlayan bir program yazamazsınız- C64ASM’de yoktur. Bu programın gerçekten güzel özellikleri vardır ama her güzelin bir kusuru bulunur dedikleri gibi bu programın kusuru da MS-DOS KOMUT İSTEMİ’nden çalıştırılıyor olmasıdır. İnternette o kadar aradığım halde Windows altında çalışan bir C64ASSEMBLER EDİTOR programı bulamadım. Bir program yazmak için size gerekli olan WORDPAD programıdır. WORDPAD ile yazdığınız programı .asm uzantılı olarak mutlaka C64ASM programının olduğu klasöre kaydedin. Bu klasörün masaüstünde olmasını tavsiye ederim. Sonra ise BAŞLAT Æ PROGRAMLAR Æ MSDOS KOMUT İSTEMİ’ni çalıştırın. Daha sonra komut satırından CD DESKTOP Æ CD klasörünadı ÆC64ASM programınadı yazarak programınız derlenir ve size default olarak programadı.PRG olarak bir c64 file üretilir. DİKKAT : programın adı en fazla 8 karakter olabilir. (MS DOS zamanlarından kalma bir sınrlama // )
Programın 1.1 versiyonunu www.students.itu.edu.tr/~celikdeni/c64asm.zip adresinde bulabilirsiniz. Programın yazarı Balint Toth isimli bir Macar’dır. Lafı fazla uzatmadan C64ASM1.1 klasöründe bulunan C64ASM.EXE programının özelliklerini ve kullanılışını anlatmaya başlayabiliriz. Program SHAREWARE’dir.
C64ASM’ün kendisi DOS’ta çalışır ve COMMODORE 64’ün makine dilinde dosyalar oluşturur. C64ASM, program içinde kullanılan etiketleri, sembolik sabitleri, matematiksel ifadeleri, dosya eklemeyi destekler ve gerekirse ayrıntılı rapor yaratabilir. PRG, T64 ve P00 uzantılı dosya tiplerini C64ASM ile kullanbilirsiniz. Komutun kullanım şekli aşağıdaki gibidir. Köşeli parantezlerin içindekilerinin kullanılması zorunlu değildir.
C64ASM kaynakdosyaadı[.asm] [çıkışdosyaadı[.prg]] [opsiyonlar] Kaynakdosyaadı : WORD ile yazmış olduğunuz ve .ASM uzantılı olarak kaydettiğiniz dosyanın adı. Çıkışdosyaadı : C64ASM ile oluşan dosyanın adını ve dosya tipini burada tanımlayabilirsiniz. Default olarak tanımlanan çıkış dosya tipi .PRG’dir ve bunu .T64 veya .P00 olarak değiştirebilirsiniz. Opsiyonlar : /S : Rapor dosyasına sembol tablosu yazılır. /L : Rapor dosyasına derleme tablosu yazılır. /T : Rapor dosyasına özet yazılır. /R = Rapordosyasıadı [.rep] : Rapor dosyası adı için başka bir isim verilebilir. /6 : Çıkış dosyası tipi olarak her zaman T64 kullanmak için kullanılır. /0 : Çıkış dosyası tipi olarak her zaman P00 kullanmak için kullanılır.
ÖRNEK : C64ASM main /SLT komutuyla main.asm isimli programınız main.prg olarak derlenir ve maksimum ayrıntılı olarak main.rep dosyası oluşturulur. Eğer ayrıntılarla ilgilenmiyorsanız sadece C64ASM programadı komutu işinizi görür. Program 6510’un standart komutlarını ve adresleme modlarını desteklemektedir. Derleyici küçük / büyük harf ayrımına duyarsızdır. Yani programda küçük ve büyük harfleri karışık kullanabilirsiniz. Program yazarken her satırda mutlaka komut olacak diye bir kural yoktur. “ ; “ (noktalı virgül) ile başlayan satırlar ve açıklamalar derleyici tarafından dikkate alınmaz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 21
Temel yazım şekli aşağıdaki gibidir. Köşeli parantezlerin içindekilerinin kullanılması zorunlu değildir.
[ETİKET] KOMUT [PARAMETRE] [; AÇIKLAMA] Parametrenin olup olmaması komuta bağlıdır. Şimdi bunları sırayla açıklayalım. ETİKET : Etiket bir bellek adresinin sembolik adıdır. Ayrıca global ve local değişkenler de etiket kullanarak tanımlanabilir. Eğer isterseniz “_” (altçizgi) karakterini de kullanabilirsiniz.
ÖRNEKLER -1- -2- -3- -4- ........... ............ ............. lda #<_yazı tekrar inc $fb inc renk lda sayı ldy #>_yazı bne tekrar ............ ............. jsr print ........... renk =$d020 sayı .byte $30 _yazı .text “c64 türkiye” print =$ab1e 1. örnekte “tekrar” etiketi programda döngü amacıyla kullanılmıştır. Derleme sonunda bulunan değer BNE komutunun parametresi olur. 2. örnekte ise “renk” etiketi $d020 adresinin yerine kullanılmıştır ve global bir değişken olarak tanımlanmıştır. Derleme sırasında program içinde yer alan ve “renk” ifadesinin kullanıldığı her komuttan sonra $20 ve $d0 değerleri yerleştirilir. 3. örnekte “sayı” etiketi programda bulunduğu adreste default olarak $30 değerine sahip bir değişken olarak tanımlanmıştır. 4. örnekte ise altçizgili bir kullanıma örnek olarak verilmiştir. “c64 türkiye” yazısının hafızadaki adresini göstermektedir.
Etiket kullanmanın faydası şudur. Program içinde bir kez tanımladıktan sonra, programda herhangi bir ekleme veya çıkarma yapsanız bile programın çalışması değişmeyecektir. Ayrıca isimleri hatırlamak sayıları hatırlamaktan daha kolaydır. KOMUT : Yazdığınız programda kullanacağınız makine dili komutları “LDA”, “NOP” gibi 6510 komutları veya C64ASM’ye ait olan ve “.” (nokta) ile başlayan özel komutlar olabilir. PARAMETRE : Parametre olarak komuta ait herhangi bir adresleme modu olabilir. LDA adres,X gibi. Veya daha sonra bahsedeceğimiz çeşitli aritmetiksel ifadeler olabilir. Sayı kullanılacaksa bu sayı Binary, Hexadecimal veya Decimal olabilir. AÇIKLAMA: Açıklama olarak programın o kısmında ne yaptığınızı veya o komutu niçin kullandığınızı yazabilirsiniz. Daha sonra programda düzenlemeler yapmak istediğinizde ben bu komutu niye kullanmışım veya burada ne yapmışım gibi sorulara cevap olarak açıklamaları okuyabilirsiniz.
MATEMATİKSEL İFADELER C64ASM derleyicisi için aşağıdaki matematiksel işlemleri yazacağınız programlarda kullanabilirsiniz. İSİM : Sembolik bir sabitin, değişkenin veya etiketin değeri programda kullanılır. SAYI : 0 ila 65535 arasında bir onlu sayı (0 ve 65535 dahildir) $SAYI : 0 ila $FFFF arasında bir Hex sayı %SAYI : İkili sistemde bir sayı (max. %11111111) “CHAR” : Herhangi bir ASCII karakter ‘CHAR’ : Karakter COMMODORE PETSCII olarak çevrilir.