AMIGA BASIC
Retro bilgisayar

Merhaba... Bir aylık aradan sonra yine birlikteyiz. Geçen ay son olarak Erase komutunu incelemiştik. Bu ay ERR ve ERL komutlarından itibaren devam edeceğiz.
ERR ERL KOMUTLARI:
Kullanım Şekli: ERR ERL
Bu iki sistem değişkeni, programdan çıkmadan hata analizi yapmak için kullanılır. Programda daha önceden ON ERROR komutuyla bir hata yakalama ve düzeltme rutini işleme konmuşsa, ERR hatanın kod numarasını, ERL de hatanın meydana geldiği satırı belirtir. ERL, numarasız satırlar için o satırdan önce gelen ilk numaralı satırı gösterir. ERL, etiketleri tanımaz. Bu iki fonksiyon genellikle bir IF ... THEN döngüsü içinde kullanılır.
AmigaBasic derleyicisinde, hata bir doğrudan mod yönergesinde oluşmuşsa, ERL komutu 65535 değerini alacaktır.
Aşağıdaki örnek, hata durumunda program akışını bir alt rutine dallandırıyor ve 55 kod numaralı hata oluşmuşsa ya da hata satırı 90. satır ise 1 numaralı dosyayı kapatıp programın çalışmasına devam etmesini sağlar.
ON ERROR GOTO Hata
Hata:
IF (ERR=55) AND (ERL=90) THEN
CLOSE#l:RESUME
ERROR KOMUTU:
Kullanım Şekli: ERROR hata-numarası
Bu komutla, program hatalarını yakalayabileceğiniz gibi kendiniz de değişik hatalar için yeni hata numaraları yaratabilirsiniz.
Bunun için 256'dan yüksek bir sayı alıp, bunu program içinde ERROR komutuyla birlikte kullanmak gerekir. ON ERROR, bu özel hatayla karşılaştığında, sizi bu hata için tanımladığınız hata yakalama rutinine dallandıracaktır. Doğrudan modda Amiga BASIC 256'dan büyük hata numaraları için "unprintable error" mesajını verir. 0-256 arasındaki hata mesajlarını Amiga BASIC kullanım kılavuzunun sonundaki ekler bölümünde bulabilirsiniz.
Çıktı penceresinde, doğrudan komut modunda bir hata kodunun karşılığını öğrenebilirsiniz. Bunun için kullanılacak komut şöyledir:
ERROR 15
Bu komutu yazıp Return tuşuna bastığınızda, hemen altında kodun karşılığı verilecektir:
String too long
EXP KOMUTU:
Kullanım Şekli: EXP(X)
Doğal logaritma tabanı olan e'nin (2.7182818284590), X kuvvetini hesaplar. X sayısı, tek veya çift yoğunluklu bir sayı olabilir. Eğer tek yoğunluklu sayı 88'den veya çift yoğunluklu sayı 709'dan büyükse, "overflow" hata mesajı verilir ve bilgisayarda temsil edilen en büyük sayı olan 3.402824E+38 sonuç olarak gösterilir. Aşağıdaki örnek, bir döngü içerisinde e'nin 10, 20 ve 30 kuvvetini hesaplar:
FORI=10TO30STEP10
PRINT EXP(I)
NEXTI
Ve sonuçları çıktı penceresine yazar:
2.718282 403.4288 59874.14
FIELD KOMUTU:
Kullanım Şekli: FIELD [#] dosya-no, alan-genişliği AS dizi-değişkeni ....
Rastgele erişimli dosya buffer'ında, program değişkenleri için alanlar ayırır.
Bu alanın ne kadar büyük olacağını, parametre değişkenleriyle tanımlayabilirsiniz.
AMIGA BASIC
MAHMURE ÜNYELİ niz. Genellikle bu komut OPEN komutunun arkasından kullanılır, dosya-no parametre değişkeni, OPEN komutunda rastgele erişimli dosyayı açmak için kullanılan sayıyı belirtir, alan genişliği, yazısal dizi değişkenleri için ayrılacak karakter sayısı ile tespit edilir. Bu değer, herhangi bir tamsayı olabilir; ancak parametre değişkenlerinin toplam uzunluğu, OPEN komutu ile dosya yaratılırken belirtilen kayıt uzunluğunu aşmamalıdır. Tanımlı kayıt uzunluğu, 128 byte'dır. Aksi taktirde "FIELD OVERFLOW" hata mesajı alırsınız.
Aynı dosyada birden fazla FIELD yönergesi kullanılabilir. Program, tüm FIELD yönergelerini dikkate alır ve aynı anda geçerli olarak kabul eder.
FIELD komutunda kullanılan parametre değişkenleri, program değişkenleriyle LSET komutu kullanılarak eşitlenmelidir. Aşağıdaki programda, rastgele erişimli bir dosya açma işlemi ve FIELD komutunun işlevi gösterilmiştir.
ÖPEN "R",#l /TELEFONNO.DATA", 100
FIELD # 1,40 AS AD$,40 AS ADR$,20 AS TN$
INPUT "ISIM";ISIM$
INPUT "ADRES";ADRES$
INPUT "TELEFON NO: ";TELNO$
LSETAD$=ISIM$
LSETADR$=ADRES$
LSETTN$=TELNO$
PUT #1,1
CLOSE1
OPEN komutunun sonundaki 100 sayısı, kayıt için ayrılan buffer (tampon) büyüklüğünü göstermektedir. FIELD komutundaki üç ayrı parametre değişkeni için ayrılan alanın toplamı, (40+40+20) 100'e eşit olmak veya aşmamak zorundadır. Ayrıca LSET komutuyla bu parametre değişkenlerini program değişkenlerine eşitlediğimizi görüyorsunuz.
FILES KOMUTU:
Kullanım Şekli: FILES [directory]
O anki directory içeriğini ekranda gösterir, directory parametresi olarak herhangi bir directory veya sürücü adını yazabilirsiniz. Sürücü adı veriliyorsa, isimden sonra iki nokta üst üste (:) koymayı unutmayın. Ayrıca CHDIR komutuyla herhangi bir directory içine girip, doğrudan FILES komutunu verebilirsiniz.
İsterseniz bu komutu birkaç örnekle tamamlayalım. O anda içinde bulunduğunuz directory'nin içeriğini görmek için:
FILES yazmak yeterlidir. Bulunduğumuz directory'deki PROGRAMLAR adındaki alt directory'sinin içeriğini görmek içinse:
FILES "PROGRAMLAR"
yazılır. İlave bir disket sürücünüz varsa, buradaki dosyalara bakmak için ise:
FILES "df1:"
komutunu vermek gerekir. İlave disket sürücü olmadığında, dahili sürücüdeki bir "Data" adı verilmiş bir data disketinin içindeki dosyaları listelemek için de:
files "data:"
komutu kullanılır.
FIX KOMUTU:
Kullanım Şekli:
Ondalık bir sayının, virgülden sonraki ondalık kısmını atar; sadece tam sayı kısmını verir. INT komutuna benzer, ancak onun gibi negatif sayıları bir küçük negatif sayıya yuvarlamaz; sadece tam sayı kısmını verir.
Bunu her iki komutu da içeren bir örnekle açıklayalım. Negatif sayımız, -34.66 olsun:
PRINT FIX(-34.66)
PRINT INT(-34.66)
Sonuç: -34 -35
FOR...NEXT KOMUTU:
Kullanım Şekli: FOR sayaç değişkeni =başlangıç TO bitiş [STEP adım] NEXT [sayaç değişkeni] [,sayaç değişkeni]
Bir dizi komutu, bir döngü içinde belli sayıda tekrarlar. Burada sayaç değişkenleri ve adım değişkeni, sayısal ifadelerdir. Sayaç değişkeni, döngünün sayacıdır. Bu değişkene verilen başlangıç değeri, bitiş değerine eşit ya da büyük olana kadar döngü devam eder. Normalde bitiş değeri başlangıç değerinden daha büyük bir sayı olur.
FOR komutunda sayaç değerleri belirlendikten sonra, program NEXT komutuna gelene kadar normal olarak çalışır. NEXT komutuna geldiğinde, bu komutta belirtilen değişkene göre sayacın bulunduğu FOR komutuna geri döner. STEP ile adım belirtilmemişse, sayacın değerini bir arttırır ve bu döngü, sayacın değeri bitişe ulaşana kadar yinelenir. Bundan sonra program akışı NEXT komutundan devam eder.
Eğer FOR komutunda STEP'le beraber bir adım değeri kullanılmışsa, her döngüde sayacın değeri adım kadar arttırılır. Adım, negatif bir sayı olarak verilmişse, döngü sayacının değeri her döngüde belirtilen sayı kadar azaltılır.
Bir FOR...NEXT döngüsü başka bir FOR...NEXT döngüsü içinde yer alabilir. Bunun için, herbir döngüde ayrı bir sayaç değişkeni kullanılmalıdır. Eğer NEXT komutundan sonra, değişken adı yoksa son FOR komutuna dönülür. Aşağıda FOR...NEXT için iki örnek yer almaktadır.
1. ÖRNEK:
FORX= 10 TO 50 STEP 5
PRINT X
NEXTX
2.ÖRNEK
FOR X = OTO 100
FORY = 50TO 100
PRINT X;Y
NEXT Y,X
1. Örnek yazılıp çalıştırıldığında, ekranda; 10 15 20
50 sonucunu göreceksiniz. 2. Örnek ise,
0 50 0 51 0 53 şeklinde devam edecek; iç döngü 100 olduğunda, dış döngünün X sayaç değişkeni 1 olacak ve iç döngü bu değerle bir kez daha tekrarlanacaktır. Örnekleri yazarak sonuçlarını görebilirsiniz.
FRE KOMUTU:
Kullanım Şekli:
FRE(-1) FRE(-2) FRE(x)
Belirtilen bölgelerdeki boş bellek miktarını gösterir.
FRE(-1), sistemdeki toplam boş bellek miktarını; FRE(-2) ise, kullanılmamış stack boşluğunu (komutların çalışmak için kullandıkları bellek) gösterir, x'in, -1 ve -2 dışında herhangi bir sayı olabildiği FRE(x) formatında ise, Amiga BASIC'in data segment'inde ne kadar boş bellek kaldığını belirtir.
GET KOMUTU:
Kullanım Şekli: GET [#] [dosya-no] [,kayıt-no] GET(x1,y1)-(x2,y2),dizi-adı [(index,index ...,index)]
Bu komut için iki ayrı format vardır. Bunlardan birincisi, PUT komutuyla kaydedilmiş rastgele erişimli bir dosyadan kayıt çağırmak; ikincisi ise, ekrandan bir dizi bit değerini bir dizi içerisine almak için kullanılır.
Birinci kullanımda, GET komutu rastgele erişimli dosyadaki kayıtları numarasına göre okur ve buffer'a getirir. Eğer bir kayıt numarası belirtmezseniz, son okunan kayıttan bir sonraki kayıt okunur. Kayıt numarası en fazla 16777215'e kadar çıkabilir ve bir değişkenle ifade edilebilir. GET yönergesini kullanırken EOF ile kayıtların bitip bitmediğini kontrol etmelisiniz.
Ekranla ilgili ikinci kullanımda ise, grafik parçalarını ekrandan alıp diskete kaydedebilirsiniz. GET komutu ekrandaki herhangi bir bölgedeki bitlerin değerini DIM ile belirtilen bir dizinin içine saklamanızı sağlar. Daha sonra PUT komutuyla bu diziyi tekrar grafik halinde ekrana getirebilirsiniz.
GET komutu, ekranda sol üst köşe (x1,y1) ve sağ alt köşe (x2,y2) koordinatları ile belirtilen bir dörtgen alandaki resmin bilgilerini alır. Koordinatlar belirtildikten sonra, alandaki resim bilgileri dizide belirtilen dizide tutulur. Ancak dizinin daha önce DIM ile tanımlanmış olması gerektiğini unutmayın. Dizi, yazısal dışında herhangi bir tipte tanımlanabilir ve tüm resmi tutabilecek kadar büyük olmalıdır. Dizi için gereken büyüklüğü hesaplamak için, aşağıdaki formülü kullanabilirsiniz:
FIX(X)
bitplane sayısı* yükseklik* 2*INT«genişBc+16/16) +6
Genişlik ve yükseklik değerleri, piksel olarak verilir. Aşağıdaki program GET ve PUT komutlarının kullanımına örnek olarak verilmiştir.
DIM array% (966)
LINE(10,5)-(85,35)„b
LINE(30,10)-(37,15)„b
LINE(60,10)-(67,15)„b
CIRCLE (50,20),8
CIRCLE(50,18),30„3.5,5.8
PAINT(50,20),3,1
GET (0,0) - (90,40),anay%
CLS
FOR x = 0 TO 5
FOR y = 0 TO 4
PUT (x * 100, y * 40),anay%
NEXTy
NEXTx
Evet, bu aylık da bu kadar. Gelecek ay bir başka döngü komutu olan GOSUB ... RETURN ile devam edeceğiz, Hoşça kalın.
