Amiga Dünyası sayı 29, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

Gelişmiş Assembler

Selam sevgili assembler meraklıları! Yaz sonunun getirdiği bu nemli ve sıcak günlerden biri daha. Ve yine bıkkınlık verebilecek bir yazı! Dilerseniz biraz sohbetle bu can sıkıcı sayfaları neşelendirelim; ne dersiniz? Sizi bilmem, ama bu sene gayet zevkli bir tatil geçirdim diyebilirim. Kuşadası güzel, şiş kebap güzel, ben var Türkiye'ye tekrar gelmek ... Hay allah galiba turistlerin yanında fazla kaldım. Kuşadası'nda geçen 26 günden sonra İstanbul'a dönmek, insanda şok etkisi yaratıyor. Bu trafik, bu kargaşa, koşuşturmaca. Ben de isyan ettim, eve kapandım. U2 grubunu dinleyerek dergimize karşı olan büyük sorumluluğumuzu elimden geldiğince yerine getirmeye çalışıyorum. Oysa en azından iki hafta daha güneyde kalabilmek için bilgisayarımı komple elden çıkarmaya razıydım. O kadar eğlence ve güneşten sonra buz kütlesi gibi bir makina hiç mi hiç aradığım bir şey değil. Bunun yerine Kuşadası'nda yaşadığım en berbat günü tercih ederim. Zaten dergiye yazı hazırlama görevim olmasaydı (ve tabii ki param da suyunu çekmeseydi!) kesinlikle orada kalırdım. Eminim ki birçoğunuz da benim bu konudaki fikrime katılırsınız. Burada kalıp da bilgisayarla uğraşmayı tercih edenlere bir an önce bu hastalıktan kurtulmalarını öneririm. Gidin, dolaşın, eğlenin; fakat kesinlikle bilgisayarı düşünmeyin. Bilgisayarınız soğuk kış aylarında evde otururken can sıkıntınızı giderecek bir hobi olsun. Bilgisayarla uğraştığım bu kadar seneden sonra ona karşı böyle güzel duygular beslemek gayet enteresan bence, siz bu konuda ne dersiniz? Tabii diğer konularla uğraşırken dersleri de ihmal etmeyin; zira okullar artık açılıyor. Bazılarınız bunu fark etmemiş olabilir, ama mazeret günlerinizi şimdiden harcamayın derim. Sonra baharda herkes mutlu mutlu okul kırarken, siz gitmek zorunda kalabilirsiniz. Tabii burada kimseyi okul kırmaya teşvik etmiyorum; fakat 1-2 günün de bence kimseye zararı dokunmaz; aksine okul stresinden uzaklaşmak bir hayli yararlı olabilir. Düşünüyorum da, bu yazı bir an önce bitse de başımda duran gitarımı elime alabilsem « Ne, evinde gitarın yok mu? Bir an önce kendine bul bir tane ve tıngırdat biraz. Hoşlanmıyorsan karışamam; ama insanı rahatlattığı da bir gerçek. Değişik şeylerle uğraşmak insanı hem geliştirir, hem de sorunlardan kısa bir süre için de olsa uzaklaştırır. Her neyse, bu kadar dalga yeter. Biraz da sıkıcı konulara geçelim. Genel istek üzerine bundan sonra her ay yararlı bir alt rutin ya da komple bir source vereceğim. Vereceğim tek teorik bilgiler, bu rutinlerde kullanılan teknik ayrıntılar olacak. Artık size programı yazmak ve işlevini inceleyerek anlamak kalıyor. Tüm komutları işlevleriyle birlikte verdiğim için, anlayacağınızı umuyorum. Teknik ayrıntılar da artık zaten kısa kısa değinilecek konulara dönüşecek. Her zamanki gibi assembler gelecek aydan itibaren yine iki bölüm halinde olacak. Gelişmiş Assembler köşesinde daha çok intro ve demo source'ları, Amiga ve Assembler köşesinde ise sistem library'lerini kullanan ufak utility source'ları vermeye çalışacağım. Her iki köşenin source'larını hazır olarak benden direkt temin edebilirsiniz. Bu şekilde çalışma hatalarıyla karşılaşmazsınız. Zaten buna bir bakıma da mecbursunuz; zira her ay vereceğim intro datalarının dergide binary dökümünü yayınlamaya kalkışsak ilerde bütün dergi bir demo için yetmeyebilir! Source'ları ve dataları tek bir diskette topladığımdan bir defada şimdiye kadar yayınlanan tüm source'ları çalışır vaziyette temin edebilirsiniz. Bunun için bana bir mektup yazarak isteğinizi belirtmeniz gerek. Tabii mektuba boş bir disket ve posta masrafını (1000 TL'lik pul olarak) eklemeyi de unutmayın. Adresim gayet basit: PK 46 - 81110 Bostancı - İstanbul. Bu ay verdiğim alt rutin, bazılarınızın istemiş olduğu NoiseTracker (ve SoundTracker) — replay rutinidir. Bununla NoiseTracker'da hazırlanmış olan tüm modül parçaların programlarınızda çalınmasını sağlayabilirsiniz. Bazı SoundTracker modüllerini de çalabilmek mümkündür; ama bu gibi durumlarda yine de SoundTracker'ın replay rutinini kullanmanız işi garantiye alır. SoundTracker'ın da replay rutini buradaki rutine çok benzer ve çalışması da aynıdır. Programın açıklayacağım tek önemli tarafı, nasıl kullanılacağıdır. Modül parçamızı mt data label'ının gösterdiği adrese

Cem GENCER yüklemeliyiz. Dilerseniz ilk satır olan mt data=$58000'i programın sonuna alarak 'mt data: incbin "mod.xxx"' şeklinde değiştirebilirsiniz. Bu şekilde modül datasının, programınız compile edilirken otomatik olarak hafızaya yüklenmesini sağlayabilirsiniz. Üçüncü yöntem, bence aslında en güvenilir olanı. Exec library'sini kullanarak hafıza rezerve ederek (AllocMem) modülü dos library'sinden Open ve Read fonksiyonlarıyla hafızaya yüklemek ve kullanmak. Biraz detaylı gözükse de, programınızın yeni KickStart'larda (ROM 2.0 ve yukarısı) sorunsuz çalışmasını sağlayabilir. Tabii işiniz bittiğinde ayrılan hafızayı tekrar sisteme geri vermeyi unutmayın. Şayet sistemin multitasking özelliğini kapamayan bir programla uğraşıyorsanız, bu üçüncü yöntemi kullanmanız zorunludur. Esas programınıza aşağıdaki rutini ekledikten sonra yapacağınız tek şey, programınızın açılış rutinine 'bsr mt init' satırını da eklemek. Ana döngünün içinde bir yere 'bsr mt play' satırını yazmanız, müziğin çalmaya başlamasını sağlayacaktır. Bu satırı devamlı tekrar eden bir döngü içine yazın; aksi halde müziğin sadece bir ya da birkaç notası çalınacak, ardından da büyük ihtimalle susacaktır. Programınızın sonunda (ya da başka bir yerde) müziği komple susturmak için 'bsr mt end' satırını kullanmanız gerekmekte. Bunu da programınızın çıkış rutinine eklemeniz mantıklı olur. Bu satırı kullanmazsanız, programdan çıkılsa bile müzik arka fonda devamlı olarak çalmaya devam edecektir. Bu, size öyle gelmese bile başkalarına göre rahatsız edici olabileceğinden müziği de çıkışta kapamanızı öneririm. Bu kadar açıklama herhalde yeter; gelecek ay bu source ile ilgili sadece sesle ilgili sistem register'larına kısaca bir göz atarak başka bir source vereceğim. Hadi hoşçakalın ...

Noisetracker V1.0

Mahoney & Kaktus

mt data-$58000

mt init: lea mt data,a0 move.l — add.| #$3bB, at moveg #$7f,d0

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