11.07.2015 Views

Amiga Dunyasi - Sayi 23 (Nisan 1992).pdf - Retro Dergi

Amiga Dunyasi - Sayi 23 (Nisan 1992).pdf - Retro Dergi

Amiga Dunyasi - Sayi 23 (Nisan 1992).pdf - Retro Dergi

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

DERLEYİCİLERAMIGAASSEMBLERMerhaba! Bir ay aradan sonra tekrar birlikteyiz.Bu ay yine birtakım library fonksiyonlarınıöğreneceğiz. Biliyorum, herseferinde library fonksiyonları öğrenmekbiraz sıkıcı. Fakat bunları şimdiden öğrenirsekilerde program yazmaya başladığımızdapek fazla açıklama yapmama gerekkalmayacak. Bu yüzden bana biraz dahasabırlı olmanızı dilemek ve hemen yenifonksiyonlar tanıtmaya başlamak kalıyor.Bu ay tanıtacağım library fonksiyonlarınıbiraz daha düzenli olarak başlıklar altındatopladım. Bu sayede, bir fonksiyonunaçıklamasını aradığınızda daha rahat birşekilde bulabilirsiniz. Hemen başlıyorum..IOErrBu fonksiyon dos library'sinde bulunmaktadır.Kullanımı da çok basit. Çağırırkenhiçbir parametre gerektirmiyor. Libraryofseti -132 (=-$84) olan bu fonksiyonunişlevi de hayli yararlı. Herhangi birgiriş/çıkış fonksiyonunu çağırdığığınızdabir hata oluşmuşsa, IOErr fonksiyonu buhata hakkında daha ayrıntılı bilgi verir.Library'de giriş/çıkış işlemlerini gerçekleştirenfonksiyonlar hata oluşması durumundaçağrıldıktan sonra d0 register'ine 0yazarlar. Böyle bir durumda sizin ayrı birrutine dallanıp burada IOErr ile hatayı algılayıpkullanıcıyı uyarmanız gerekmekte.Fonksiyon çağrıldıktan sonra d0'da hatamesajını tanımlayan bir sayı bulunur. Busayı 0 olduğunda hiçbir hata oluşmamışdemektir. Aşağıda IOErr fonksiyonunungösterdiği hatalar kod numaralarıyla listelenmiştir.103 - insufficient free store:Kullanıma ayrılmış hafıza doldu. Free-Mem ile hafıza boşaltın ve tekrar deneyin.121 -file is not an object module:Çağırmaya çalıştığınız dosya çalıştırılabilirdosya (executable) değil. Kontroledin.202 - object in use:Başka bir task ya da program bu file'ıkullanıyor. Aynı anda çalışan diğer tasklarınya da programların bu file'ı UnLockettiklerinden emin olun. Bir dosyayı shellya da CLI üzerinden çalıştırdığınızda dabu hata oluşabilir. Bu durumda shell/CLI'ıkapamanız gerekmekte.203 - object already exist:Yaratmaya çalıştığınız dosya ile aynıisimde başka bir dosya diskette zatenmevcut. İsim değiştirerek tekrar deneyin.Cem GENCER204 - directory not found:Belirtilen isimde directory bulunamadı.Bu hatayı engellemek için ilk öncedirectory'nin var olup olmadığını kontroledin.205 - object not found:Belirtilen isimde dosya bulunamadı. İlköncedosyanın varlığını kontrol edersenizbu hata oluşmaz.209 - action not known:Böyle bir işlem tanınmıyor. Saçma birkomut girerseniz bu mesajla karşılaşabilirsiniz.210 - invalid stream component name:File ya da directory isminde geçerli olmayanbir karakter kullanılmış. Düzeltiptekrar deneyin.211 - invalid lock:File lock'ta elde ettiğiniz lock değeri geçerlideğil.212 - object wrong type:Çalıştırmaya çalıştığınız dosyanın filetipi yanlış. Bu hata bir device ismini (meselaram:) program ismi olarak kullanmanızdaoluşabilir.213 - disk not validated:Bilgisayar diskete bilgi yazarken disketiçıkardığınızda, o an yaratılan dosya kapanamaz.Bu durumda her disketi takışınızdasizden boot ettiğiniz disketi takmanızıister. Böyle bir diskete yazmaya kalkıştığınızdada bu hatayı alırsınız. WorkBenchya da içersinde Disk-Validator dosyasınınbulunduğu (L directory'sinde) bir disketyardımıyla disketi tekrar düzeltebilirsiniz.Fakat son yaratmaya çalıştığınız dosyaboş dosya olur.214 - disk write protected:Disketin write protect deliği açık konumdaykendiskete yazmaya kalkıştığınızdabu hata kodunu alırsınız.215 - rename across devices:Rename işleminin device isimlerinifarklı girerseniz bu hata kodunu elde edesiniz. Normalde rename işleminde farklıisim ve/veya farklı directory girilebilir.Farklı directory ismi girdiğinizde file, eskidirectory'den silinip yeni directory'niniçerisine yazılır. Fakat bu işlemi device'larlayapamazsınız.216 - directory not empty:Boş olmayan bir directory'i silmeye kalkıştığınızdabu mesajı alırsınız.. İlk önce odirectory içersindeki tüm dosyaları silin,ardından directory'i silebilirsiniz.218 - device not mounted:Verilen isimde bir device sisteme mountedilmemiş ya da takılı değil.219 - seek error:Dos library'sinden Seek fonksiyonunuhatalı bir parametre ile çağırdığınızda bukodu alabilirsiniz. Seek fonksiyonunu dabu ay tanıtacağımdan daha ayrıntılı bilgiiçin daha aşağılara bakmanızı öneririm.220 - comment too big:Bir file'ın çomment'ını (dosya notu) değiştirmeyekalkıştığınızda, not string'iizin verilenden uzun ise bu kod karşınızaçıkacaktır.221 - disk full:Disket dolmak üzereyse ya da dolmuşsave bu diskete yeni bir file yazmaya kalkıştığınızdabu kodu elde edersiniz.222 -file is protected from deletion:File project'i silmeye karşı korumalıolan bir dosyayı silmeye kalkıştığınızdahu hata kodunu alabilirsiniz.2<strong>23</strong> – write protected:File protect'i yazmaya karşı korumalı birdosyaya yazmaya kalkıştığınızda IOErrfonksiyonu bu hata kodunu verir.224 - read protectedFile protect'i okumaya karşı korumadaolan bir dosyayı okumaya kalkıştığınızdabu kodu elde edersiniz. KickStart 1.2 ve1.3'lerde bu protect modu daha tamamlanmadığındanbu mesajı da almanız çokzor…225 - not a dos disk:Disket sürücüsüne takılan disket DOSFormatında değil.226 – no disk in drive.Erişmeye çalıştığınız disket sürücüsündedisket takılı değil.DelayBu fonksiyon da dos library'sinden. Neişe mi yarıyor? Gayet basit, belli bir sürebeklememizi sağlıyor. Bekleme süresini1/50 saniye olarak d1'e yazmamız vefonksiyonu -198 (=-$c6) library ofsetiyleçağırmamız yeterli.ExNextİşte yine bir dos fonksiyonu daha! Geçenay öğrenmiş olduğumuz Examinefonksiyonu sadece bir directory'nin directoryheader'ını elde etmemizi sağlıyordu.ExNext fonksiyonu ise Directory header'abakarak burada yer alan ilk file'a aitheader'ı bulmamızı sağlıyor. Bu fonksiyonuardarda cagırdığımızda her seferinde odirectory'deki bir sonraki file'a ait header'ıelde ederiz. Bu tekilde de istediğimizdirectory'nin içeriğini okuyabiliriz.ExNext'in parametreleri Examine ile aynı.Filelock'u d1'e, boş fileinfoblock'un adresinide d2'ye yazıyoruz. Fonksiyonu çağırmakiçin kullandığımız ofset de -108(=66c). ExNext fonksiyonu, direetory'eait başka file yoksa d0 register'ine 0 yazar.Tam bir directory alabilmek için Ex-Next fonksiyonunu, directory'deki tüm Fileheader'lan okuyuncaya kadar tekrarlamalısınız.Aşağıdaki kısa alt rutin directory'i okur.Rutini doğru kullanma için başlangıçtagerekli library'leri açmalısınız. ProgramAMIGA DÜNYASI 43

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!