Bu sayfadaki yazılar
Sayfanın metni
Sayfa 91
Programın sonucu Atari'de bu şekilde görünecektir.
Şekil 8.
Atari Assembler Editor Kartuşu Hata Kodu Listesi
Programlarınızı derlerken alabileceğiniz hata kodlarının anlamları aşağıdaki listede orijinal dokümanından alındığı şekliyle verilmiştir.
1 : Insufficient memory for
2 : The number xx cannot be found for the "DEL xx,yy" command
3 : Error in specifying an address in mini-assembler 4 : File cannot be loaded 5 : Undefined reference label 6 : Syntax error in a statement 7 : Label defined more than once 8 : Buffer overflow
9 : No label given before
10 : Byte expression is greater than 255
11 : Null string used where invalid 12 : Address or address type specified is incorrect 13 : Phase error: inconsistent result found from pass 1 to pass 2 14 : Undefined forward reference 15 : Line too large
16 : Source statement not recognized by assembler
17 : Line number too large
18 : LOMEM command attempted after other instructions
19 : No starting address given
Atari Assembler Editor İle İlgili Detaylı Bilgiler
Program yazmayı, çalıştırmayı öğrendik. Ancak Atari Assembler Editor'ün yetenekleri çok fazla. Eğer gerçekten bu kartuş hoşunuza gider ve kullanmak isterseniz daha fazla detay için "www.atariarchives.org" sitesini gezmenizi öneririm. Özellikle aşağıdaki adreste ihtiyacınız olan diğer komutların bir kısmını bulabilirsiniz.
http://www.atariarchives.org/roots/chapter 5.php
Biz şimdi bu kartuşu kullanmak yerine farklı bir yol çizeceğiz.
Atari İçin Çapraz Geliştirme
Atari Assembler Editor'ün nasıl kullanıldığını gördük. Ancak günümüzde Atari üzerinde çalışmak o kadar da pratik bir yol değil. Birçoğumuzun elinde çalışır halde bir Atari bile yok (ben de dahil olmak üzere). Olanların da çalışmalarını kaset ya da 5.25 disketlere emanet etmek isteyeceklerinden şüpheliyim. Dolayısıyla nostaljik sebepleri bir kenara bırakacak olursak PC ve emülatör kullanarak Atari için program yazmak en güvenilir ve rahat çözüm olacaktır.
Atari için uzun süre çapraz geliştirme ortamımı hazırlamak için araştırmalar yaptım. Bazı açık kaynak kodlu amatörce geliştirilen projelerde kullanılan çapraz geliştirme araçlarını gördüm, inceledim. Ancak dönüp dolaşıp eski bir dost olan ACME Crossassembler'da karar kıldım. Aslında ACME genellikle Commodore 64'e yönelik olarak hazırlanmış bir derleyici. Ancak sonuç olarak 6502 her halükarda 6502'dir. Yani ACME'nin üreteceği binary kodlar Atari'de çalışabilecek durumda olacaklar. Peki bu durumda her şey çözülmüş oluyor mu? Ne yazık ki hayır, biraz daha çaba sarf edeceğiz.
Problemlerimiz neler? ACME'nin üreteceği binary dosyaları Atari'nin hafızasına istediğimiz adresten yükletmek ve çalıştırmak zahmetli bir iş olacaktır. Commodore 64'ün *.prg dosya formatında dosyanın ilk iki byte'ı 16 bitlik bir hafıza adresi içerir ve bu sayede Commodore 64 dosyayı hafızaya nereden yükleyeceğini bilir. Ancak Atari'de durumlar biraz farklı.
Araştırmalarım sonunda Atari'nin otomatik olarak program yüklendiği gibi çalışabilen bir EXE formatını buldum. PC EXE'leriyle karıştırılmaması için genellikle XEX şeklinde uzantı kullanıyorlar. Bu dosyalar kolaylıkla yüklenebiliyor ve çalıştırılabiliyorlar.
XEX Dosya Formatı
Bu dosya formatı programın başlangıç ve bitiş adreslerine ihtiyaç duyar. En temel haliyle format şu şekilde verilebilir.
Kullanacağımız kısaltmalar:
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 90
Komutların çıktısı bu şekilde olacaktır.
Şekil 7.
Atari'de Makine Dilinden Program Yazmak
Atari BASIC'i ne kadar gelişmiş olursa olsun, 2 MHz'in altındaki bir bilgisayar söz konusu olduğunda makine dili kullanımı kaçınılmaz bir hal alıyor. Atari'de makine dilinden program yazabilmek için sahip olunması gereken temel bilgi, 6502 assembler programlama bilgisidir. Bu temele sahip olunması durumunda aşılması gereken iki engel daha vardır.
1. Assembler programı yazabilecek rahat bir ortam oluşturmak.
2. Atari'nin hafıza yapısı ve donanımsal özelliklerini öğrenmek.
İlk madde için ihtiyacımız olan şey assembler'dan programlarımızı yazabileceğimiz bir editör/derleyici. Atari üzerinde bu güne kadar bu amaçla en sık kullanılmış derleyici "Atari Assembler Editor" ya da kısaltılmış ismiyle "Atari ASM Edit" kartuşudur. 8 KB'lık bir ROM'a sahip olan kartuş, zamanına göre çok üstün özelliklere sahiptir. Özellikle program içerisinde hata yakalamak için (debugging) çok kullanışlı fonksiyonları vardır. Tek eksiği 8 KB'lık hafızaya sığdıramadıkları için hata mesajlarının yalnızca sayısal kodlardan ibaret olmasıdır. Kısacası bir hata aldığınızda ekranda hatanın tanımını değil yalnızca kodunu görürsünüz ve kartuşun dokümanından bu hata kodunun ne anlama geldiğini araştırmanız gerekir. Bu kartuşu kullanmak isterseniz temel kullanım bilgileri aşağıda örneklerle verilmiştir.
Atari Assembler Editor Kartuşu Kullanım Örneği
Kartuşu taktığınızda "EDIT" yazan bir ekran karşınıza gelecek. Bu ekranda BASIC'ten program yazar gibi satır numaralarıyla program yazabilirsiniz. Dikkat etmeniz gereken husus, satır numarasından sonra 1 değil en az 2 boşluk bırakmanız gerektiğidir. Örnek program:
10 *— $0600 20 LDA #$C4 30 STA $02C6 40 RTS
Programımızı yazdıktan sonra "LIST" komutuyla programın listesini alabilir ve istediğiniz takdirde "NEW" komutuyla listeyi temizleyebilirsiniz. Programı yazdık ancak program henüz derlenmedi. Programı derlemek için "ASM" komutunu kullanmamız gerekiyor. ASM komutunu yazıp "Return" tuşuna bastığımızda aşağıdaki gibi bir çıktı almamız lazım.
ASM 0000 10 $0600 0600 A9CA 20 LDA #$CA4A 0602 8DC602 30 STA $02C6 0605 60 40 RTS
Eğer aşağıdaki çıktıyı aldıysak programı düzgün bir biçimde derlemeyi becermişiz demektir. Daha sonra programı çalıştırmak ve olası hataları takip etmek için "Edit" bölümünden "Debug" bölümüne geçiş yapmamız gerekiyor. Bunun için kullanacağımız komut "BUG" komutu. Programı çalıştırmak için ise go (git) anlamına gelen "G" harfini kullanacağız. Bu harfin yanına programın başlangıç adresini hexadecimal olarak yazmamız gerekiyor. Kısacası bundan sonra yazmamız gereken komutlar ve ekranda göreceğimiz çıktılar şu şekilde olmalı;
BUG
DEBUG G 0600
0003 X-00 Y-00 P-BO S-12
Bu çıktının yanısıra ekran renginin yeşile döndüğünü herhalde fark etmiş olmanız lazım. İşte minik programımızın yaptığı iş de aynen bu. $02C6 hafıza adresi arkaplan renginin tutulduğu adres. $C4 yerine farklı değerler yazarak Atari'nin güzel renk paletini incelemeniz mümkündür.
Son olarak "Debug" moddan çıkıp "Edit" moduna geri dönmek için "X" komutunu kullanıyoruz. Örnek:
EDIT
Bundan sonra programı değiştirmeye devam edebilir ya da yeni bir program yazmaya girişebilirsiniz. BASIC dilinde olduğu gibi aynı satır numarasını tekrar yazıp "Return" tuşuna basarsanız, önceki satır yenisiyle değiştirilecek, yeni satır eskisinin üzerine yazılacaktır.