Plazma sayı 4, sayfa 64

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 64

exg d0,d1 ;D0 <-> D1 (değerleri değiştirir) exg a0,d2 ;A0 <-> D2 (değerleri değiştirir)

NOT: exg (exchange) komutu sadece 32 bit destekler, bu durumda exg veya exg.l yazabilirsiniz. Ancak exg.w ve exg.b kullanamazsınız.

swap d0 ;D0'ın alt 16 bit ile üst 16 bitinin yerini değiştirir

NOT: swap komutu sadece data register'ları ile çalışır. Adres register'ları ile kullanamazsınız.

Yazımı bitirmeden önce değinmek istediğim son bir konu daha var.

Amiga'nın Hafıza Yapısı

Standart bir Amiga 500'de 512 KB RAM vardır. Bu alan $000000 - $7FFFFF arasındadır. Amiga'nın işletim sistemi tümüyle multitasking olduğundan diskten yüklenen bir program hafızanın (Chip RAM veya varsa Fast RAM) herhangi bir yerine otomatik olarak yerleştirilir ve orada çalıştırılır. Bu nedenle, pek çok eski Amiga programcısının yaptığı gibi, mutlak adres (absolute memory) kullanımından kaçınmak gerekir. Kaldı ki AmigaDOS programınızın yüklenmesi sırasında tüm relocate işlemlerini sizin yerinize otomatik olarak yapacaktır.

Hafızanın genel görünümü aşağıdaki gibidir:

1. $000000-$07FFFF Chip RAM 2. $080000-$1FFFFF Rezerve 3. $200000-$9FFFFF Fast RAM (eğer varsa) 4. $A00000-$BEFFFF Rezerve 5. $BFD000-$BFDF00 CIA B (Çift adresler) 6. $BFE001-$BFEF00 CIA A (Tek adresler) 7. $C00000-$DFEFFF Rezerve (Genişleme için) 8. $DFF000-$DFFFFF Custom Chip (Hardware) Register'ları 9. $E00000-$E7FFFF Rezerve 10. $E80000-$EFFFFF Genişleme Portları 11. $F00000-$F7FFFF Rezerve 12. $F80000-$FFFFFF ROM Amiga'da kod yazabilmek için hafıza yapısını bilmek kadar Amiga'nın özel çiplerini (custom chips) de bilmek gerekir. Bunlar $DFF000-$DFFFFF arasında bulunan hardware register'ları tarafından kontrol edilen, mikro işlemciden bağımsız çalışabilen, Amiga'nın görüntü ve ses çıkışını kontrol edebilen özel çiplerdir.

Agnus, Denise ve Paula olarak adlandırılan bu özel çipler

Amiga'nın, döneminin en güçlü bilgisayarı olmasındaki temel faktörlerdir.

Agnus, blok halindeki hafızanın bir yerden başka bir yere taşınması işlemini (blitting) gerçekleştirir. Bu işlem sırasında aynı zamanda taşınan veri üzerinde çeşitli işlemler (masking, AND, OR) uygulayabilir. Ek olarak çizgi çizebilir ve bir poligonun içini doldurabilir. Denise, ekran görüntüsü ile ilgili tüm işleri üstlenmiştir (copper). Paula ise tüm giriş/çıkış işlemlerinden sorumludur. (Disk sürücü ve ses gibi.) Custom Chip'ler ve hardware register'lara ileriki sayılarda çok daha detaylı olarak değineceğiz.

Bu noktada Fast Ram ve Chip Ram arasındaki farka kısaca değinelim. Chip Ram, 68000'in ve Amiga'nın özel çiplerinin doğrudan erişebileceği bellektir. Fast Ram ise sadece 68000 tarafından erişilebilir. Burada önemli bir nokta; ses ve görüntü ile ilgili tüm verilerin Chip Ram'de durması gerektiğidir.

Özet

Amiga Assembly'ye giriş niteliğindeki bu yazımıza burada son veriyoruz. Bu sayıda Amiga'nın register'larını ve data transfer komutlarına değindik, ayrıca kodlarımızı nasıl derleyeceğimizi öğrendik.

Önümüzdeki sayıda yeni örnek kodlarımızla 68000 komutlarını incelemeye devam edeceğiz. Ek olarak Amiga Assembly ile kod yazarken olmazsa olmaz konulardan olan kütüphane (library) fonksiyonlarının nasıl kullanıldığını da göreceğiz.

Ayrıca AsmPro'nun nasıl kullanıldığı ile ilgili ayrı bir yazıyı da bir sonraki sayıda bulabilirsiniz.

Soru ve önerileriniz için bana aşağıdaki adresten ulaşabilirsiniz. Bir sonraki sayıya kadar hoşçakalın.

semseddinm (at) gmail (nokta) com

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