AMIGA BASIC

Merhaba... Geçen ay son olarak RETURN komutunu incelemiştik. Bu ay, RIGHT$ fonksiyonundan başlayarak devam ediyoruz.

RIGHT$ KOMUTU: Kullanım Şekli: RIGHT$(Yazı-dizisi,karakter-sayısı)

Yazı-dizisi'nin en sağından, belirtilen karakter-sayısı kadar karakteri alır. karakter-sayısı, 0'dan 32767'ye kadar bir sayı olarak girilir.

RIGHT$("En büyük AMIGA!",6) örneği, "AMIGA!" kısmını keser ve istenirse bir yazısal dizi değişkeni içerisine yerleştirir ya da verilen komuta uygun olarak basar, karakter-sayısı, yazı-dizisinin karakter sayısına eşit ya da ondan büyükse karakterlerin tamamını alır.

RND KOMUTU: Kullanım Şekli: Değer=RND[(x)]

Bu fonksiyon, 0 ile 1 sayıları arasında rasgele bir sayı üretir. RANDOMIZE yönergesi kullanılmadıkça, RND fonksiyonu programın her çalıştırılışında aynı sırada rasgele sayı dizisini üretir.

Parantez içine x sayısını girerek, rasgele sayı üretimini kontrol edebilirsiniz: 1 ve tüm pozitif sayılar, bir dizi değer üretirler. 0, son üretilen sayıyı verir. -1 ve negatif sayılar, bir başlangıç değeri seçerek sayı üretirler. Sayı değiştirilerek değer değiştirilir. Aynı sayı girilirse, aynı sayı üretilir.

Zaman zaman belli sınırlar arasında bir rasgele sayı üretilmesi gerekebilir. Böyle durumlarda formül kullanmalısınız: Değer=Başlangıç+(Son-Başlangıç)*RND

Sayının tam sayı olması gerektiği durumlarda ise: Değer=INT (Başlangıç + ((Son-Başlangıç

+ 1) *RND))

Aşağıdaki örneği çalıştırın, isterseniz değerleri değiştirin:

FORi=lTO5
y=RND:PRINT y; 
NEXTİ PRINT 
FORİ=1TO5
y=RND(0):PRINT y: 
NEXTi PRINT FOR 
i=l TO 5
z=RND(l):PRINTz; 
NEXTİ PRINT FOR 
i=l TO 5
e=RND(-l):PRINTe; 
NEXTi

RSET KOMUTU: Kullanım Şekli: RSET Transfer dizisi değişkeni=Yazısal dizi

Rasgele dosyalarla çalışırken PUT yönergesi ile kullanılmak üzere, kayıt buffer'ına data yazmak için kullanılır. Hatırlarsanız, RSET ve LSET komutlarını, hem dosya komutlarında hem de PUT komutunda incelemiştik. Transfer dizi değişkeni, FIELD komutunda tanımlanan değişkendir ve içine yazısal dizi atanır. Böylece yazısal dizi buffer'a transfer edilmiş olur. Komuttaki "R", datanın sağa yapışık (Right-justified) olarak yerleştirileceğini belirtir. Bunun anlamı, ayrılan alana bu alanın uzunluğundan daha kısa bir karakter dizini atandığında bilginin data alanına sağa yapışık olarak yerleştirileceğidir. Boşluklar, alanın başlangıcında solda kalacak ve yazının sonu alanın sonuna yerleşecektir. Sayısal değerlerin standart formatında düzgün yazdırılması açısından çok kullanışlıdır.

Kayıt buffer'ı, FIELD komutu ile oluşturulur. Kayıt buffer'ındaki datanın diskete kaydedilmesi ise PUT komutu ile gerçekleştirilir.

F$=SPACE$(20) 
RSET F$="AMIGA" 
WRITE F$

Örneğini çalıştırırsanız, alana bilginin hangi mantıkla yerleştirildiğini daha kolay anlayacaksınız.

RUN KOMUTU: Kullanım Şekli: RUN [etiket] RUN dosya-adı[,R]

O an aktif olan BASIC programı çalıştırır.

Ekran temizlenir, LIST penceresi arka plana atılır ve açık olan tüm dosyalar kapatılır. Komut çıktı penceresinden direkt komut olarak verilebileceği gibi, program içinde de kullanılabilir. Komuttan sonra satır numarası ya da etiket verilirse, program belirtilen bu etiketten itibaren çalışmaya başlar.

Komutun ikinci kullanım şeklinde dosya-adı ile verilen kayıtlı dosya yüklenir ve çalıştırılır. Bu kullanıma ",R" opsiyonu eklenirse, açık bulunan dosyalar kapatılmaz, açık bırakılır. Bu da tüm bu açık dosyaları kullanabilen bir program yüklemenize izin verir.

SADD KOMUTU: Kullanım Şekli: Değer=SADD(Yazısal dizi)

Özellikle makina dili programlar için çok yararlı olan bu fonksiyon, Yazısal dizinin bellekteki başlangıç adresini verir. Bu, datanın ilk byte'ının adresidir. Programda yeni bir karakter dizisi kullanacaksanız, başlangıç adresini tekrar sormanız gerekecek, çünkü AmigaBASIC mevcut dizileri kaydıracaktır. SADD, tipik olarak bir makina dili programa yazısal dizinin adresini geçirmek için kullanılır. Aşağıdaki örnek kullanımı incelerseniz, fonksiyonun kullanımını daha rahat anlayacaksınız:

Ma$="" 
FOR x=0 TO 20 
READ Değer 
Ma$=Ma$(Deger) 
NEXTx 
StartAddress&=SADD(Ma$) 
CALL Start Address&( 10,20) 
DATA.......

SAVE KOMUTU: Kullanım Şekli: SAVE [dosya-adı[,A]] SAVE [dosya-adı[,P]] SAVE [dosya-adı[,B]]

Bu komutla, programlarınızı diskete, harddiske ya da RAM'e kaydedebilirsiniz. dosya-adı girilmezse, AmigaBASIC tıpkı menüden seçilmiş gibi, dosyanın kaydedileceği ismi soran bir diyalog penceresi görüntüleyecektir.

Komutun ilk kullanım şeklindeki gibi dosya adından sonra ",A" verilirse, dosya ASCII formatında kaydedilir. Bu formata, MERGE kullanarak programlarınızı birleştirmek ya da bir text editörde AmigaBASIC programları düzenlemek isterseniz ihtiyacınız olacak.

İkinci kullanım şeklindeki gibi dosya

AMIGA BASIC

adından sonra ",P" verilirse, program korumalı olarak kaydedilir. Böyle kaydedilen bir program, yüklenip çalıştırılabilir, ancak listelenemez ve değiştirilemez.

Son kullanım şeklindeki gibi, komut sonuna ",B" eklendiği durumda ise dosya binary formatta kaydedilir. Tanımlı format budur ve dosya kayıt esnasında sıkıştırılır. Normal kayıt modu bu olduğundan, bu opsiyonun yazılması gerekmez. ",B" opsiyonu ile ya da opsiyonsuz olarak SAVE fonksiyonu, dosyayı bu formatta kaydeder.

dosya-adı, drive numarası, directory adı ya da library adı içerebilir. Bu komut için örnek vermemize gerek yok herhalde değil mi?

SAY KOMUTU: Kullanım Şekli: SAY Fonem dizisi [,dizi%(0), dizi%(1), dizi%(2), dizi%(3), dizi%(4), dizi%(5), dizi%(6), dizi%(7)]

SAY komutu, fonem kodları kullanılarak yazılan bir diziyi seslendirir. Fonem, konuşma dilinin hece ve kelime birleşiminin birimleridir ve tabii ki her dilin fonemi farklıdır. Fonem kodlarını TRANSLATE$ komutu ile normal texte çevirebileceğiniz gibi, kendi fonem kodlarınızı da girebilirsiniz. Amiga'da SAY ve TRANSLATE$ komutları, İngilizce foneme göre tanımlanmıştır. Siz fonem kullanmadan Türkçe olarak bir text girerseniz, bu İngilizce telaffuz edilecektir.

Fonem dizisi arkasına yazılan dizi%'ler Amiga'nın konuşma karakteristiğini tanımlar. 9 parametre ile belirtilen bu konuşma karakteristikleri, tamsayı olarak girilir. Tamsayı dışında bir data girilirse, "Type mismatch" hatası ortaya çıkar.

dizi%(0), ses yüksekliğini belirler. Burada sesin hangi yükseklikte çıkacağını belirlersiniz. En yüksek ses 320, en alçak ses ise 65 ile belirtilir. Tanımlı değer 110'dur. dizi%(1)'de, ses tonunun hecelere göre değişeceği (0) ya da bilgisayar monotonluğunda (1) olacağı tespit edilir. Tanımlı değer 0'dır.

dizi%(2), konuşma hızını tespit etmek için kullanılır. Bu değer, dakikada söylenecek kelime sayısıdır. Değer sınırı, 40 (yavaş) ile 400 (çabuk) arasıdır. Tanımlı değer, 150'dir. dizi%(3)'te, kadın (1) sesi mi, yoksa erkek (0) sesi mi kullanılacağı belirtilir. Tanımlı olan erkek sesidir.

dizi%(4), akortu ya da örnekleme frekansını tespit eder. Bu değer sesin derinliğini etkiler ve ses kalitesindeki değişiklikleri kontrol eder. Değer, 5000 (alçak ve gürültülü) ile 28000 (yüksek ve cızırtılı) sınırı arasından verilir. Tanımlı değer 22200'dür.

dizi%(5)'te, ses seviyesi tanımlanır. 0 (ses kapalı) ile 65 (sesli) sınırı arasında bir değer verilir. Tanımlı değer 65'tir.

dizi%(6)'da, ses çıkışının hangi kanaldan olacağını belirten değer verilir. Mevcut 12 kanal kombinasyonu vardır. Bunlar, aşağıdaki tabloda listelenmiştir: DEĞER KANAL/KANALLAR DURUM 0 Kanal 0 Sol 1 Kanal 1 Sağ 2 Kanal 2 Sağ 3 Kanal 3 Sol 4 Kanal 0 ve 1 Stereo 5 Kanal 0 ve 2 Stereo 6 Kanal 3 ve 1 Stereo 7 Kanal 3 ve 2 Stereo 8 Tüm boş sol kanallar 0 ve/veya 3 9 Tüm boş sağ kanallar 1 ve/veya 2 10 Boş bir kanal çifti Tanımlı değer 11 Bir boş kanal Tabloda da gördüğünüz gibi, tanımlı değer 10'dur yani boş bir sol ve sağ kanal çifti kullanılır.

dizi%, senkronizasyon modunu belirtir. 0 ve 1 olarak iki değer ile belirtilir. 0 modunda, AmigaBASIC program çalışmasını bilgisayarın konuşması esnasında durdurur. Konuşma tamamlanınca başka işlemlere geçer. Tanımlı mod budur. Senkronizasyon moduna 1 verildiğinde, konuşma arka zeminde sürerken aynı zamanda programın çalışması devam eder.

dizi%(8), iki SAY yönergesi birbiri arkasına geldiği zaman (bil ki dizi%(7)'de 1 değeri verilmişse) ne olacağını kontrol eder. 0, normal işleyiştir; yani birinci SAY tamamlandıktan sonra ikincisine geçilir. Tanımlı değer, 0'dır. 1, 7. parametreye bakmaksızın konuşma işlemini durdurur. 2 verilirse, ilk SAY komutu aniden kesilir ve ikinciye geçilir. Aşağıdaki örnek program, parametreleri rasgele tespit ederek "Amiga" sözcüğünü tekrarlıyor. Yaz ve dinleyin.

Text$="Amiga" 
Basla:
alan%(0)=90+180*RND 
alan%(l)=RND 
alan%(2)=50+200*RND 
alan%(3)=RND 
alan%(4)= 17000+1000*RND 
alan%(5)=40+24*RND 
alan%(6)=ll*RND 
alan%(7)=0 
alan%(8)=0 
SAY TRANSLATE$(Text$),alan% 
GOTO Basla

SCREEN KOMUTU: Kullanım Şekli: SCREEN ekran-no, genişlik, yükseklik, derinlik, mod

Bu komut, yeni bir ekran yaratmak için kullanılır. AmigaBASIC, Workbench ekranına ek olarak 4 ekran yaratmanıza izin verir. Yani komuttaki ekran-no parametresi, 1-4 sınırları içinde olabilir.

genişlik ve yükseklik ekranın pixel olarak genişlik ve yüksekliğidir, genişlik, 1 ile 640; yükseklik ise 1 ile 400 arasında bir değerle belirtilir.

derinlik, ekranda kullanılan bitplane sayısıdır. 1 ile 5 arasında bir sayı ile verilen derinlik, ekranda görüntülenecek renk sayısını tespit eder:

DEĞER RENK SAYISI

1 2 2 4 3 8

4 16 5 32 mod, ekranın pixel genişliğini ve interlace olup olmadığını, yani çözümleme derecesini tespit eder. 1 ile 4 arasında bir değerle belirtilir: MOD TANIM BİR BİTPLANE İÇİN

GEREKEN BELLEK 1 320*200 Pixel 8000 Byte 2 640*200 Pixel 16000 Byte 3 320*400 Pixel (interlace) 16000 Byte 4 640*400 Pixel (interlace) 32000 Byte Normalde düşük çözümleme modu televizyon ekranında, yüksek çözümleme ise yüksek çözümlemeli monochrome ve RGB monitörlerde kullanılır. interlace bir ekran, yatay satır sayısını ikiye katlar. Bir örnek komut vererek bu komutumuzu da tamamlayalım: SCREEN 1,640,400,1,4: WINDOW 1,"TEST",(0,0)-(400,300),15,1

SCREEN CLOSE KOMUTU: Kullanım Şekli: SCREEN CLOSE ekran-no

Ekranların her biri bellekten bir miktarını yer. Bu nedenle, gerek kalmadığında ekranlar kapatılmalıdır. SCREEN CLOSE komutu, bu işlem için kullanılır. Ekranı pencere olsa da olmasa da temizler ve ekrana tahsis edilen belleği serbest bırakır.

Evet... Bu aylık da bu kadar. Gelecek ay bu köşede buluşmak dileğiyle, hoşçakalın...