Bu sayfadaki yazılar
Sayfanın metni
Sayfa 41
Selam Assembler'kolikler! Çok sıcak ve nemli geçen yaz aylarından birinde yine sizlerleyiz. Umarım bu ay köşeme ayırabileceğiniz zaman biraz daha fazladır, zira bu ay, geçen ay kaldığım yerden devam edeceğim. — Anlatacaklarım bazılarınıza ağır gelebilir. Fakat hiç fark etmez: ne de olsa biraz ilerilerden bir konuya da değindik geçen ay: gadget'lara. Fakat geçen ayda belirttiğim gibi gadget'ları sadece üstünkörü anlatıyorum. Dileyenlerin kurcalamasını sağlamak için neyin ne olduğunu belirtmem gerekli diye düşündüm. Lafı fazla uzatmadan hemen açıklamamıza dönelim. Son olarak gadget tipini belirleyen word'un alabileceği değerleri listelemiştik. Bu word'un ikinci biti, gadget'ta resim kullanılırken set edilmeli. Bunu daha ilerki örneklerimizde de göreceğiz. Aynı word'daki üçüncü ve dördüncü bitler, gadget konumunun klikleme alanına relatif mi, yoksa kesin (absolut) mi olacağını belirlemek için faydalıdır. Bununla ilgili örnekleri de, gadget'ları daha detaylı açıklamaya başlayacağım zaman göstereceğim. Beş ve altıncı bitler, yine yatay ve dikey
Cem GENCER koordinat eksenlerinde relatifliği tanımlamak için kullanılır. Bu şekilde gadget'ların boyutlarını, window boyutlarına oranla olarak değişmesini bilirsiniz. Bunun için gerekli biti set etmeniz (Xİ) yeterli. Window'un boyutunu değiştirdiğimizde, gadget koordinat ve boyutları da değişerek pencere içindeki yerinin aynı kalmasını sağlar. Yedinci bit, window açılır açılmaz o gadget'ın gözükmesini sağlar. Bu çift konumlu (Yes/No) şalter için geçerlidir. Gadget'ı kullanılamaz hale getirmek içinse, sekizinci biti set etmeniz yeterli. Bu sayede o sekizinci bitin konumu reset (<0) edilinceye kadar seçilemez. Gadget structure'ı içindeki bir sonraki değerimiz, gadget klikleme özelliklerini belirten GADGET FLAG word'udur. Bu, bizim örneğimizde $201 değerini taşımakta. Şimdi isterseniz, bu her bir bitin anlamını size yine bir tablo olarak vereyim. Bu tabloya bakarak gerekli bitleri set konumuna getirirseniz, gelecekteki kliklemede dikkat edilecek kuralları belirleyebilirsiniz. Bit 0 - RELVERIFY: Sol mouse tuşu,
Mouse işaretçisi gadget klikleme bölgesi bırakıldığında gadget aktiflenmiş olur. Bit 1 - İşaretçisi, gadget klikleme bölgesi üzerindeyken sol mouse tuşuna basmanız gadget'ı aktif hale getirir. Bit 2 - ENDGADGET: Eğer gadget bir Requester ise, Requester klikten sonra olumsuz cevap seçilmiş gibi kapanır. Bit 3 - Kliklediğiniz andan, sol mouse tuşunu bıraktığınız ana kadar geçen zamanda eşit aralıklarla mouse koordinatları kontrol edilir. Bunu, klikten sonra sol tuşu bırakmadan gadget'in yerini de mouse'a bağlı olarak değiştirmek için kullanabilirsiniz. Bu da kullanıcıya daha yakın programlar demek... Bit 4 - RIGHTBORDER: Bu bit, sağ kenarın klikleme alanına tam olarak kurulması için kullanılır. Aynı şekilde aşağıdaki bitler de diğer kenarları uygunlaştırmak için kullanılır. Bit 5 - LEFTBORDER Bit 6 - TOPBORDER Bit 7 - BOTTOMBORDER Bit 8 - Bu bit yardımıyla her klikleyişte konum değiştirmesini sağlayabilirsiniz. (Çiftli şalter gadget). Bit 9 - STRINGCENTER: Bu bit set konumunda olduğunda, gadget'a ait text içinde ortalanarak basılır. Bit 0 konumunda ise, text sola dayalı olarak basılacaktır. Bit 10 - STRINGRIGHT: Bu bit ise, gadget text'inin sağa dayalı olarak gösterilmesini sağlar. Bit 11 - LONGINT: Bu bit yardımıyla bir string'i sadece sayısal giriş yapılmasına izin veren integer'a dönüştürebilirsiniz. Bit 12 - ALTKEYMAP: String gadget'ta başka bir klavye map'i kullanılacağını belirler. Bu bit açıklamalarına göre bizim gadget, STRINGCENTER ve RELVERIFY'a sahip. Gelelim gadget structure'ındaki bir sonraki değere; Bu word, tipi için kullanılır. İşte size burada kullanabileceğimiz bütün bitler ve anlamları: Bit 0 - BOOLGADGET: Bizim örnekte kullanılan boolean gadget adı verilen basit gadget'lar. Bit 1 - GADGET002 Bit 2 - STRGADGET: Yazı girişi yapmanızı sağlayan string gadget. Bit 3 - PROPGADGET: Bu iki bit de set edildiğinde, sürgü gadget'i (proportional gadget). Bundan sonraki bitler, sistem gadget'larını tanımlamak için kullanılır. Bit 4 - SIZING: Window boyut değiştirme. Bit 5 - Window için pozisyon değiştirme gadget'i. Bit 4 - Bit 5 - SCROLLING: Scroll için pozisyon değiştirme. Bit 6 - WUPFRONT: Window'u mevcut window'ların üzerine çıkaran gadget. Bit 6 - Bit 4 - SUPFRONT: Screen'i screen'lerin üzerine çıkaran. Bit 6 - Bit 5 - WDOWNBACK: Window'u diğer tüm pencerelerin arkasına almaya yarayan gadget. Bit 6 - Bit 4 - SDOWNBACK: Screen'i diğer tüm ekranların arkasına yarayan gadget. Bit 7 - CLOSE: Window'u kapamaya yarayan gadget. Bunlardan sonraki bitler de gadget'in global parametrelerini belirler. Bit 12 - Requester gadget'i. Bit 13 - GZZGADGET: Gimmezerozero window'u kullanıldığında, kenar gadget'i (ilerde detaylı olarak açıklanacak). Bit 14 - SCORGADGET: Set durumundaysa. Bit 15 - SYSGADGET: Set durumundaysa sistem. Bizim örneğimizde, bu word $1 değerini taşımaktaydı: öyleyse boolean gadget kullanıyoruz. Bundan sonra karşımıza bazı long-word'lar çıkıyor. Bunlardan ilki, gadget görüntü tanımlamasını içeren structure'ı gösteren bir adres göstergeci. Örneğimizde bu göstergeç, adresini göstermekte. Bu alt structure'a altta aşağıda bakacağız. Ardından gelen long-word, GADGHIMAGE flag'ı set konumundaysa kullanılabilir. Bu, az önce anlattığım adres göstergeci gibi yine bir gadget görüntü tanımlamasını içeren gadget'in adresini gösteren bir pointer. Eğer gadget'i kliklediğimizde, gadget görüntüsünün değişmesini istiyorsak, GADGHIMAGE bitini set etmemiz ve klik yapıldıktan sonra gösterilecek görüntünün structure'ının adresini gösteren bir pointer'ı da bu ikinci long-word'a yazmamız gerekli. Örneğimizde ikinci bir konuma gerek duyulmadığından, bu long-word 0 değerini taşımakta. Hemen sonraki long-word yine bir adres pointer'ı. Bu da gadget text'ini ihtiva eden gadgettext alt structure'unu göstermekte. Eğer hiçbir gadget text'i yoksa, buradaki değer 0 olmalıdır. Bizim örnekte bu long-word, REALLYITEXT alt structure'ini göstermekte. VAZ ve eksiklikler yüzünden hatalı olarak çalışır. Bu yüzden biz de örneğimizde bu özelliği kullanmayarak 0 değerini verdik. Ardından gelen long-word de 0 değerini taşımakta; çünkü bu long-word sadece string ve proportional gadget'larda kullanılır. Bu iki gadget tipi de biraz gelişmiş olduklarından ekstra bazı tanımlamalara ihtiyaç duyarlar. Bu tanımlamalar da SpecialInfo adlı ayrı bir structure'da toplanmalıdır. Fakat biz her iki gadget tipini de kullanmadığımızdan, bu long-word 0 değerinde. Gadget structure'ındaki bir alt satıra geçiyoruz. Burada bir word, 1 değerini taşımakta. Bu word'un ismi GADGETID. Bir pencerede birden fazla gadget'i birbirlerinden ayırt edebilmek için bu değeri kullanabiliriz. Zaten bizim örneğimizde de REALLY label'ından sonrasında gadget'in kodu aşağıdaki gibi kontrol ediliyor ve duruma göre uygun yerlere dallanma gerçekleştiriliyor.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 40
İSTANBUL'dan VEFA LÖK, güzel duygular belirten sözlerle dolu mektubunda çok sorulan bazı soruları sıralamış. Güzel sözleriniz için teşekkürler Sayın LÖK, işte yanıtlarınız:
Yüksek çözünürlükte titremesiz görüntü verebilen monitör sormuşsunuz. Sanırım bu isteğinizin temelinde, Amiga'nın yüksek çözünürlükte oluşan titremesinden (INTERLACE FLICKER) kurtulmak yatıyor. Ne var ki, titremenin sebebi Amiga'nın monitörü değil, daha çok Amiga'nın video devresi. Bu yüzden Amiga çıkışını çok yüksek çözünürlüklü monitörlere bağlayabilseniz bile, titremeden kurtulamayacaksınız. Ancak çaresiz değilsiniz. Flicker-Fixer adı verilen hardware kartları sayesinde yüksek çözünürlüklü ekranlarda titremeyen görüntüler mevcuttur. Commodore'un yanısıra firmalar, hem 500 hem de 2000 için bu kartları üreterek piyasaya sürdü. Bu kartların fiyatları Mart 91'den sonra hızla düştü ve şu aralar 500-800 Mark arasında değişmekte. Ancak bu tür bir kartın çıkışı yüksek çözünürlüklü bir ekrana verilebilir. Kartların özelliklerine göre değişmekle beraber, ekran olarak Multisync monitörler kullanılmaktadır. Bu ekranların fiyatları 800 Mark'tan başlayarak 1200 Mark'a, hatta daha fazlasına erişebilmektedir. Bu ekranların iyi ses çıkışı olanlarına daha rastlamadım, ancak Amiga'yı müzik setinize bağlayarak herhangi bir ekrandan (1084'ler dahil) çok daha iyi ses kalitesine sahip olabilirsiniz. Bu tür bir kart almaya karar verdiğinizde, ekranı karta göre seçmek zorunda kalacaksınız. Yurtdışında birçok kuruluş, Flicker Fixer, monitör ve ses kuvvetlendiricisi dahil olan paket fiyatlar sunuyor, bunları da gözden geçirin. Dergi olarak size belirli bir marka önermemiz mümkün değil. Türkçe karakter basma, printer'lara takılan bir EPROM ile sağlanır. Türkiye yetkili bayileri, sattıkları tüm printer'lar için bu EPROM'ları hazırlamışlardır, bu konuda fazla bir zorlukla karşılaşmayacaksınız. Printer'lar kafasında bulunan iğne adediyle sınıflandırılırlar. 9 ve 24 iğneli yazıcılar en yaygın olanlarıdır. Yeni 9 iğneli yazıcıların hepsi NLQ (Neredeyse matbaa harfi kalitesi, Near Letter Quality) yazabilirler, 24 iğnelilerde ise, bugün LQ (Matbaa harfi kalitesi) basımlar mümkün. Performans arttıkça fiyat artıyor; onun için performans, amaç ve mevcut para üçlüsünün birbirine en çok yaklaştığı seçeneği bulun. XT kartları ile ilgili bilgi için, bu sayıdaki yazıdan yararlanabilirsiniz. Amiga'da PCO Pascal, Power Pascal, Pascal V1.0 ve Kick Pascal derleyicileri mevcuttur. Bir firma da, bugünlerde piyasaya kaliteli bir Pascal derleyicisi sunacağını müjdeledi. Bu konuda yakında yayınlanacak ayrıntılı bir yazı dizisi hazırlıyoruz. Şahsen bunlardan Kick Pascal Versiyon 2.0 en çok hoşuma gideni.
Vel;
Yine — İstanbul'dan — yazan — Mustafa Güçlü'nün ilk sorusu. AMON adlı program için nasıl ikon hazırlayabileceği. Sorularını sırayla yanıtlayalım:
o Herhangi bir programa ikon hazırlamak için, içindeki İcon editörü veya geçen ay açıklaması yapılan İcon veya İcon Maker programlarından birini kullanabilirsiniz. İkonu istediğiniz şekilde çizdikten sonra tool ikonu olarak AMON-İkon adıyla kaydedin. Okuyucumuzun diğer soruları ise, Amiga DOS ile ilgili. Bir dosya açmak için, type dosya-adı şeklinde bir komut verebilirsiniz. Bu dosyaların içine başka disketten bilgi yüklemek isterseniz, disketin adını veya ek sürücüden bilgi alacaksanız, df1: yazıp iki nokta koyduktan sonra gerekli dosyanın adını yazın. Örneğin type df1:datatoyunlar gibi. Diskdoctor'da hata veren disketler eğer hard error mesajı veriyorsa, ciddi olarak bozulmuş demektir. Böyle bir diskette sağlam kalan dosyaları diskdoctor'un çabasıyla kurtardıktan sonra başka bir yere kopyalayıp disketi formatlayın. Eğer disket yeniden formatlandığında hata mesajı veriyorsa, çöpe atılabilir demektir. A500'de DOS, C vb. konusunda maalesef aylık dergiler dışında Türkçe bir yayın bulabileceğinizi sanmıyoruz.
ve. Bir diğer mektup da Eray Özkural'dan. Yanıtımız çok kısa olacak. Sayın Özkural, AMOS ile ilgili sorunuzu, Burak Özdemir kendi köşesinde yanıtladığını söyledi. Wingleader adlı oyunu henüz bizler de oynamış değiliz. Midnight Resistance adlı oyunun trainer versiyonları piyasada dolaşmakta.
İstanbul'dan Ömer sorularının ise aşağıda: Validation hatasını düzeltmenin en kolay yolu, disketi disk doctor'dan geçirmektir. Ancak bu mesajı harddisk verirse, muhtemelen virüsten kaynaklanan bu hatayı Master Virüs Killer ile düzeltmek mümkün olabilir. 020 ve farklı biçimde chip olarak 68000 yerine takılmaktadır. 68000 ile dış görünüş olarak aynı olan bu işlemci ile Amiga'da ufak bir hız artışı görülebilir. Ancak asıl hızlanmayı çok bacaklı ve bu yüzden Amiga'ya bir kart üzerinde takılabilen 68020 ve 68030 kartları ile sağlayabilirsiniz. Bu kartlar 32 bit hafıza kullanarak Amiga'nın 16-50 Mhz hızları arasında çalışmasını sağlar. Bu kartların fiyatları 800-2000$ arasında değişmekte. - Utility bootlar, disketi taktığınızda ilginç mesaj ekranlarının çıkmasını sağlar. - Şu an piyasada A2000 için 16MB'a kadar (68030 ile) RAM kartları mevcut. Tefeteknik tarafından satılan RAM 8MB'a kadar çıkmakta. — Fiyatının 1000$'ın üstünde olduğunu