Plazma sayı 5, sayfa 63

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 63

start: moveg #4,DO loop: nop ;buraya kodlar girilir dbeg DO,loop rus

Burada BEQ komutu ile DBEQ komutu arasındaki önemli farka değinmemiz gerek: BEQ komutu işlemin sonucu sıfır İSE dallanır, DBEQ komutu ise işlemin sonucu sıfır olana dek dallanır, sıfır olduğunda ise döngüden çıkılır.

NOT: Önce data register'ının değerinin sıfır olup olmadığına bakılır, sonra değer bir azaltılır, ilk karşılaştırmanın sonucu sıfır değilse dallanma gerçekleşir. Yani DBEQ komutundan çıkıldığında D0 register'ında $FFFF değeri olacaktır.

NOT 2: Verilen register'ın sıfır ile karşılaştırma işlemi 16 bit (word) olarak yapılır ve register'ın değeri yine word olarak azaltılır. Sayaç register'ındaki değer başlangıçta $12340000 ise DBcc komutundan sonra $1234FFFF değeri olacaktır.

Ayrıca yukarıdakilere ek olarak DBF ve DBRA komutlarını söyleyebiliriz, bu iki komut koşula (condition) bakmaksızın sadece register'ın değeri sıfır olana dek dallanma işlemi yapar. Genel olarak koşulsuz döngüler için kullanılırlar.

Hardware Register'ları

Hardware register'ları işlemcinin doğrudan custom chiplere ulaşabilmesini sağlayan adreslerdir. RAM ve ROM'da bulunmazlar. Normal şartlarda, eğer bir utility veya sistem uyumlu, multitasking bir uygulama geliştiriyorsanız bu adreslere doğrudan erişmeniz gerekmez, hatta erişmemeniz daha doğru olur. Bu adreslere dolaylı olarak ulaşmanızı sağlayacak kütüphaneler vardır. Kütüphaneler konusuna ileride detaylı olarak değineceğiz.

Ancak demo (ve hatta çoğu oyun) programları bu adreslere doğrudan erişim yapılarak yazılır. Bu bölümde ileride çok defa karşılaşacağımız bu adresler hakkında kısa bilgiler vereceğim:

Hardware register'larının 68000 üzerindeki base (taban) adresi $DFF000'dır. Yani verilen chip adreslerini bu taban adrese ekleyerek ulaşacağınız adresi bulabilirsiniz.

68000 adresi (chip adresi) + $DFF000

Örneğin Joystick/Mouse bilgisini okumak için kullanılan adres $DFF0DA için genelde sadece $0DA register'ı denir.

Aşağıdaki listede donanım register'larının adreslerini ve kısa açıklamalarını bulabilirsiniz. Listede R/W olarak verilen kısım register'ın sadece okunabilir ya da sadece yazılabilir olduğunu ifade eder.

W write-only, yalnız yazılabilir; R read-only, yalnız okunabilir; ER early-read DMA için kullanılır; S strobe yazma işlemi yapıldığında bir olay tetiklenir.

Bu register'ları kullanılırken okunabilir/yazılabilir olmalarına dikkat etmelisin, asla okunabilir bir register'a veri yazmaya kalkmayın ya da yazılabilir bir register'ı okumayın. Bu makinenin kilitlenmesine sebep olur.

Hardware Register'ları Listesi

BLTDDAT (000,ER) : Blitter RAM'e veri kopyalarken kullanır. Kullanmayınız.

DMACONR (002,R) : DMA kontrol, tüm DMA durumlarını bu adresten okuyabilirsiniz.

VPOSR (004,R) : Dikey tarama MSB (most significant bit) VHPOSR (006,R) : Yatay/Dikey tarama pozisyonu DSKDATR (008,ER) : Disk DMA tamponu. Kullanmayınız JOY0DAT : Joystick-mouse 0 verisi (dikey, yatay) JOY1DAT (00C,R) : Joystick-mouse 1 verisi (dikey, yatay)

CLXDAT : Sprite/görüntü çarpışma verisi (oku ve temizle)

ADKCONR (010,R) : Ses, disk kontrol register'ı POT0DAT (012,R) : Pot sayacı (dikey, yatay) POT1DAT (014,R) : Pot sayacı (dikey, yatay) POTGOR (016,R) : Pot port data SERDATR (018,R) : Seri port data ve durumu DSKBYTR (01A,R) : Disk data byte'ı ve durumu INTENAR (01C,R) : Interrupt enable bitleri INTREQR (01E,R) : Interrupt request bitleri DSKPTH (020,W) : Disk adres pointer'ı (üst 3 bit) DSKPTL (022,W) : Disk adres pointer'ı (alt 15 bit) DSKLEN (024,W) : Disk DMA data uzunluğu (word) DSKDAT (026,W) : Disk DMA data yazma REFPTR (028,W) : Kullanmayınız. (Refresh pointer)

VPOSW (02A,W) : Dikey tarama MSB (yaz)

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