Bu sayfadaki yazılar
Sayfanın metni
Sayfa 79
Bursa'dan Mehmet İhtiyar, BASIC'ten CLI'den çalışan programları çalıştırmak istediğini yazmış. Bu programları Open ve Load emirleriyle çalıştırmanız pratik olarak mümkün değil. Bu iş için yine Library Fonksiyonlarına ihtiyacınız olacak. Kısaca mesela Preferences programını BASIC'ten çalıştıracak bir BASIC programı, kısaca şu şekilde olacak:
DECLARE FUNCTION Executes LIBRARY LIBRARY ":bmaps dos.library" p$ ="DF0:Preferences"+CHR$(0) sonuc%=Execute& (SADD(pS),0,0) LIBRARY CLOSE END Programı Hi-Soft Basic'te yazıyorsanız, ilk iki satır yer değiştirmeli. Programı çalıştırırken, ikinci satırda belirtilen Dos adresinde dos.bmap isimli dosyanın bulunmasına özen gösterin. Lütfen dikkat edin, söz konusu dosyanın adı dos.bmap ancak programda dos.library olarak kullanılıyor. Bmap dosyası sayesinde, Amiga Basic Library'lerle işlem yapabiliyor.
b$, çalıştırmak istediğiniz programın tam adresini + sonunu belirlemek için bir 0 karakteri (CHR$(0)) taşıyor. Execute& bir fonksiyon olduğundan, sonuç isimli bir değişken kullanmak durumundayız. İsimden sonra gelen parametreler ise, giriş çıkışın nereden olacağını gösteriyor. 0,0 durumu ile CLI penceresi kastediliyor. Tek sorun programın çalışması için mutlaka bir yerlerde bir CLI penceresi olmalı. Maalesef çalışacak programların da bir sınırlaması var Çok büyük olmamalılar ve temiz bir şekilde sistemi kullanacak şekilde programlanmalılar.
Basic programı, çalışan program bitene dek bekleyecektir. Paralel çalışma istiyorsanız, CLI'nin run emrini kullanın B$ = "df0:C/run df0:Utilities/Clock"+CHR$(0) Gördüğünüz üzere Basic'ten her şeyi yapmak mümkün. Ama her şeyin daha kolay olduğu diller vardır. Eğer fazla Library'ler fonksiyonlarına dayanan, sistemle iletişim kuran programlar yazacaksanız, başka dillerle işinizi çok daha rahat göreceksiniz.
Gelelim bir ikinci konuya. Mouse Pointer yani Mouse'un ekrandaki görüntüsü. Az önceki programla preferences'i çalıştırdık. Mouse Pointer'ın ve daha birçok özelliğin preferences programı ile değiştirilip kaydedilebildiğini biliyoruz. Şimdi isterseniz, preferences programının tekelinde olan bu konuya bir el atalım.
Her şeyden önce. Mouse Pointer Sprite adı verilen bir görüntü birimidir. 16 nokta genişlikte zorunlu olmasa da genelde 16 nokta yüksekliktedir ve dört renkten oluşur (Normal şartlarda). Mouse'un bir diğer özelliği ise. Hot Spot adı verilen bir hassas noktaya sahip olmasıdır. Mouse'un sol tuşuna basıldığında bu noktanın bulunduğu yere göre değerlendirme yapılır. Gelelim şekle: İkilik düzen hesaplarınızı hatırlayın bakalım. Her basamak ya 0 ya da bir olabiliyordu, iki basamak kullanarak 00, 01, 10, 11 gibi dört değişik sayı elde edebiliyorduk. Bu sayılar, istediğimiz görüntünün renklerini oluşturmamıza yetecek. Önemli konu bu iki basamağı yan yana yazmıyoruz. Önce 16 adet yani tam bir satır ikinci basamak yazılıyor sonra 16 adet birinci basamak. Genişliğin 16'yı geçemeyeceğini unutmayınız. Hemen bir örnek verelim, şu renk serisini saklamamızı inceleyelim.
0000 1111 2222 3333 Bu sayılara karşı düşen basamakları alt alta yazalım 0000 0000 1111 1111 00001111 0000 1111 Yukarıda olan satır ilk basamak, altında olan ise ikinci basamak. Görüntü işini de böylece hallettik. Kağıt üzerinde hesaplar sizi sıkıyorsa, basit bir program yazarak gerekli satırları oluşturmasını sağlayabilirsiniz.
Değişik renklerden bahsettik, ancak renk değerlerini anlatmadık. Alt renk zaten belirli, ekranın alt rengi (0 numaralı renk). Geri kalan renkler ise paletin 17, 18, 19 numaralı renkleri.
Aşağı yukarı her şey bitti. Pointer'ı değiştirmek için ne yapacağız. Ne kadar hoşunuza gitmese de, yine Library fonksiyonları kullanacağız. İlk olarak penceremize bağlı bir pointer yaratacağız. Yani pointer sadece kendi bizim penceremizde istediğimiz şekilde gözükecek. Prowrite'tan tanıdık gelmesi gereken bir özellik. Başka sefere tüm ekranda çalışan bir pointer yaparız olur biter.
Şimdi ihtiyacımız olan hafızada Pointer'ın görüntüsü için yer ayrılması, sonra görüntüyü oluşturacak dataların buraya kopyalanması, daha sonra ekrana getirilip en sonunda pointer'ın eski hale gelmesi.
Kullanacağımız fonksiyon SetPointer& adını taşıyor ve Intuition Library'sinin bir parçası. Bunun yanında hafıza ayırmak için AllocRemember& kullanılıyor. Şimdi programı görelim bakalım
DECLARE FUNCTION AllocRemember& LIBRARY LIBRARY ":bmaps intuition.library" RAMTipi&=2+65536& Remember&=0 RemKey&=VARPTR(Remember&) Memory&=AllocRemember& (RemKey&,66&,RAMTipi&) IF Memory&=0 THEN FreeRemember& RemKey&.-i : END
FOR a&=0 TO 68 STEP 2 READ Dat POKEW Memory&+a&,Dat NEXT a& DATA 0,0 DATA &H0001 .&H0001 ,&H0002.&H0002.&H3C3C.&H0004 DATA &H7E7C,&H0008,&H7FFE,&H0010,&H7FFE,&H0020 DATA &H7FFE,&H0040,&H3FFC,&H0000,&H1 FF8.&H0000 DATA&H0FF0.&H0000.&H07E0.&H0000.&H0BC0.&H0800 DATA&H5180.&H5000.&H6000.&H6000.&H5800.&H5800 DATA &H6000.&HE000.0.0 PALETTE 17,1,0,0 PALETTE 18,0,0,1 PALETTE 19,.7,.5,.6 SetPointer& WINDOW(7).Memory&. 16,16.0,-15 WHILE INKEY$="" : WEND
Ende: ClearPointer& WINDOW(7) FreeRemember& RemKey&,-1 LIBRARY CLOSE END
Son olarak biraz SetPointer fonksiyonunun parametrelerini açıklayalım. İlk olarak pencerenin adresinin (kabaca) bulunduğu adres var. WINDOW(7) bunu veriyor. Daha sonra dataların adresi var. Dataların sonunda ve başında sıfırların olduğu dikkatinizi çekmiş olmalı. Bunlar normal Sprite'larda kontrol için kullanılıyor; ancak Mouse Pointer normal bir sprite gibi kullanılmıyor, bu yüzden buraları sıfır. Sonra sırasıyla yükseklik ve genişlik yer alıyor. Sonraki iki sayı ise Hot Spot denen noktanın yeri. Bu sayıları eksi vermeniz gerekiyor. ClearPointer& ise, bu pointer'ı ortadan kaldırıyor. Benden bu aylık bu kadar, görüşmek üzere.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 78
4> Olabilir, bana bir daha yaz. Mektubun içine bir ölçek disket koymayı ihmal etme.
5> Evet doğru, hem de hepsi bayılıyor. Eğer ben de olayın yakınlarındaysam ayılana gazoz, bayılana limon satarak yolumu buluyorum. Diğer zamanlarımı ise yolumu bulamayıp kaybolmakla geçiriyorum.
6> Evet. Hem de çok doğru. Aynı olay bende de oldu. Fakat Allah'tan olayın erken farkına varıp bir arkadaşımın sayesinde LEMMINGSGRAT'daki bir hastanede tedavi altına girdim. Daha sonra polis tarafından yakalanan TEDAVİ'nin şoförünün ehliyeti olmadığı ortaya çıktı, brülüp.
7> Aslında o işi MAHMURE abla değil, İNCİ abla yapıyor. Her ay yazarları 'Aaa çocuklar görüyor musunuz? Parayı buraya koymuştum, VİRÜS yedi' diyerek yolluyor. Believe it or not!
8> Hadi bakalım kolay gelsin. Bir acayip zor yarı... Bir dakika nooluyo ya! Tabii ki Fenerbahçe ve BEN!
9> Artık gitmiyor. Nedenine gelince bir gün bir kafede bir kızla tanıştım. Muhabbet sohbet derken bayağı ilerlettik samimiyeti. Koleksiyonumu göstermek için eve çağırdım. Her neyse her şey çok güzel gidiyordu. Taaki koleksiyonumu kıza gösterene kadar. Daha sonra karakolda öğrendim ki. Benim koleksiyonun nadide parçalarından biri, kızın babası imiş.
10> Bu çok uzun bir hikaye, yazmaya kalksam sayfalar yetmez roman olur. Ve daha sonra etrafta 'ille de roman olsun' şarkısını söyleyen bir sürü insan oluşur. Ben de tanışabilir miyim demişsin. Orasını Allah bilir. Eğer bir günah işlediysen emin ol bu cezasız kalmaz, VIGO'yla tanışırsın. Nasıl demişsin. Orası işin en can alıcı bölümü. Genelde VIGO gökten vahiy gibi iner. Eğer bu işlem sırasında altında durursan senin üstüne düşerek canını alır.
11> Her şey yazabilirsin. BRONX yaz KOMMODOR ABİ yaz. Ahmet Ayşe'yi seviyo yaz. Ali top at. Koş Ali koş. Tabii ki yaptıklarının fotoğrafını göndermeyi unutma!
12> Süper marketlerde ve salı pazarından. 13> Belki, ama KIŞIN daha güzel olmalı. İşte bir başka mektup. Kolay gele ... Sevgili KOMMODOR ABİ; 1> LEMMINGS disketini AMIGA'ya takınca diskdoctor'a git diye mesaj veriyor. Yüzlerce LEMMING'i doktor'a hakikaten götüreyim mi? Tanıdığınız doktor var mı?
2> Kendi harddisk'imi kendim yapmak istiyorum. 20 tane 1 MB disket aldım. Bunları seri mi yoksa paralel mi bağlamam lazım. İşlemi yaparken kaç watt'lık havya kullanmam lazım? DOĞAN TÜR-KÜLER abimize sorarsan sevinirim.
İHSAN TAŞ
Sevgili yavrum, Bu hakikaten çok büyük bir sorun. Ayrıca çok da pahalı yani..
HER DOKTORA GİT diyen bilgisayara inanma diye bir atasözü vardır (Hehe bunu her bilgisayarcı bilmez, bilenler ise büyük programcılardır. Sağ olun hehhe..).
Her neyse biz gene konumuza dönelim. Pek tabii ki bilgisayar diyorsa götürmen lazım. Ayrıca bir de doktor tanıdığın var mı diye sormuşsun. Tabii çok yakın bir doktor arkadaşım var. Daha geçenlerde gelip bağırıp, çağırdı. Gençlere bir şeyler söyledi ve kaçıp gitti. Şimdi merak etmişsindir 'Kim bu Doktor ?' diye. Eh evlat kim olabilir tabii ki DR. ALBAN yani be....
2> Tabii bu çok doğal. Her insan kendi harddiskini yapma hakkına sahip olmalıdır. Zaten bu konu hakkında çalışmalarımız devam ediyor. Geçenlerde bu konuyu meclise açtım. Ve daha sonra oradan hızla kaçtım. Neyse almış olduğun disketleri seri bağlaman senin için çok daha iyi olur. Nedeni de, disketlerin seri değil çok yavaş bağlanması durumunda, daha bağlamana fırsat vermeden kaçıp girmeleridir. Ayrıca seni kandırmışlar. Bu disketler havya ile değil halatla bağlanır. Bunu da aklından çıkartma. Ayriyeten bunları DOĞAN abine sormanı istemişsin. Cevap: Soramam çünkü Doğan abimiz doğarken arada olamayabilirim. Ayrıca bir insan doğduğunda abi değil olsa olsa DOĞAN KARDEŞ olur. İlgim için teşekkürler.
Gelecek ay başka mektuplarda buluşmak üzere hoşça kalın. Byee.