Amiga Dünyası sayı 11, sayfa 50

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 50

AmigaDOS ile ilgili başka bir ilginç özellik bellek yönetimidir. Amiga'nın işletim sisteminin multitasking olarak çalıştığından daha önce birçok kez bahsetmiştik. Bir program belleğe yüklenirken, yükleneceği adres bellekteki diğer programlara göre ayarlanır. AmigaDOS önce programın sığabileceği büyüklükte boş bir bellek parçası arar. Bellek parçası dedik, çünkü Amiga'nın belleği tek bir parça (segment) olarak düzenlenmemiştir. Örneğin bilgisayar 200K boş bellek olduğunu gösterirken, en büyük bellek parçası 50-60K'yı geçmeyebilir. Bu durumda 100K'lık bir segment gerektiren bir program 200K'lık boşluğa rağmen yüklenemez. DOS komutlarından avail komutunu kullanarak en büyük segment'i largest başlığı altında görebilirsiniz. Programın segment yapısı compile işlemi sırasında belirlenir.

Şimdi de bir arkadaşımın içinde shell bulunan özel bir çalışma disketi hazırlarken karşılaştığı bir zorluktan söz edeceğim. Arkadaşım Shell-Seg dosyasını ve Shell ikonunu kopyalayıp Workbench'in startup-sequence dosyasında yer alan komutları aynen kullanmıştı. Buna rağmen Shell'i bir türlü başlatamıyordu. Bu sorunu bana anlattığında problemin çok basit bir şekilde çözülebileceğini söyledim. Burada unuttuğu nokta Shell-Segment dosyasının Shell'i çalıştırmak için yeterli olmadığı ve aynı diskete CLI programının da kopyalanması gerektiğiydi. Bundan sonra Shell'in project ikonunun info'sunu alıp default tool'u SYS:SYSTEM/CLI yaptıktan sonra her şey yoluna girmişti.

Hazır laf CLI programından açılmışken, bu programın C diliyle yazılmış basit bir program olduğunu biliyor muydunuz? Programı çalıştırdığınızda ilk yaptığı iş nereden yüklendiğini (workbench/CLI) kontrol etmektir. Daha sonra bir CLI penceresinin açık olup olmadığına bakılır. Eğer açık değilse 10K bellek ayrılır, %N mesajı hazırlanır ve directory SYS: olarak seçilir. Bu arada CON:0/50/640/80/newcli adında bir pencere açılır.

Aslında CLI'dan verdiğiniz komutları çalıştırırken asıl işi Run komutu yapar. Önce ROM'dan execute fonksiyonu çağrılır. Bu fonksiyon, bir CLI komutu olan Run'ı yükler ve çalıştırır. CON penceresine yapılan giriş CIS (giriş sistemi) ve COS (çıkış sistemi) tarafından analiz edilir ve Run komutuyla çalıştırılarak sonuç aynı CLI penceresine yazılır. Görüldüğü gibi burada en önemli işlem Run komutu sayesinde yapılmaktadır. İşin ilginç yanı CLI programının Workbench disketinin c directory'sinde Run komutu olmadan çalışamaması.

Son olarak bu ay sizlere kısa bir DOS komutunun listesini veriyoruz. Bu program mouse hareketini preferences ile mümkün olandan daha hızlı hale getiriyor. Böylece artık mouse seçimlerinizi daha kolay yapabilirsiniz. Programı AmigaBASIC'ten yazın ve kaydedin. RUN komutuyla programı çalıştırdığınızda DATA satırları kontrollü bir şekilde okunarak RAM diskte bir komut dosyası haline gelecektir. Bundan sonra RAM:fastmouse diyerek mouse'unuzun hareketini hızlandırabilirsiniz. Eğer bu hızı da beğenmezseniz aynı komutu tekrar yazın ve pointer'ın hızının daha da arttığını görün. Komutu diskete kaydetmek için

1> copy ram:fastmouse to df0: komutunu kullanabilirsiniz.

DATA 0,0,3,243,0,0,0,0,0,0,0,1,0,0,0,0 DATA 0,0,0,0,0,0,0,66,0,0,3,233,0,0,0,66 DATA 78,85,255,170,44,120,0,4,43,110,1 DATA 20,255,170,69,237 DATA 255,174,97,0,0,122,67,237,255,208 DATA 32,73,112,48,97,0 DATA 0,210,35,74,0,14,65,250,0,210,112 DATA 0,114,0,78,174 DATA 254,68,112,58,114,1,78,174,255 DATA 58,36,64,32,74,112,22 DATA 97,0,0,176,37,74,0,14,66,106 DATA 0,22,65,234,0,24 DATA 37,72,0,18,114^4,67,250,0 DATA 120,48,217,85,65,102,250

DATA 21,124,0,51,0,9,67,237,255,208 DATA 51,124,0,9,0,28 DATA 35,74,0,40,78,174,254,56,67,237 DATA 255,208,78,174,254,62 DATA 69,237,255,174,97,0,0,66,78 DATA 93,112,0,78,117,32,74 DATA 112,34,97,0,0,94,112,255,78 DATA 174,254,182,66,170,0,10 DATA 66,42,0,9,21,124,0,4,0,8 DATA 21,124,0,0,0,14 DATA 21,64,0,15,37,109,255,170 DATA 0,16,36,138,88,146,66,170 DATA 0,4^3,74,0,8,78,117,16,42 DATA 0,15,78,238,254,176 DATA 32,8,12,40,0,2,0,4,102,16 DATA 12,104,0,255,0,6 DATA 102,8,225,232,0,10,225,232 DATA 0,12,32,80^4,8,102,226 DATA 78,117,66,24,83,64,102,250 DATA 78,117,105,110,112,117,116,46 DATA 100,101,118,105,99,101,0,0,0,0,3,242

p = 300:b = 0 PRINT "DOSYA YAZILIYOR" OPEN "ram:fastmouse" FOR OUTPUT AS #1 FORj=l TO p READ a: b = b + a PRINT #l,CHR$(a); NEXT j CLOSE 1 IF b<> 23117 THEN PRINT "DATA SATIRLARI HATALI!" PRINT "LÜTFEN TEKRAR KONTROL EDIN.":STOP END IF PRINT "DOSYA TAMAM" END

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