AMOS

Bu sayımızda, AMOS Basic dilinin grafikle ilgili komutlarını anlatmaya çalışacağız. Amiga, gerçekten grafik bakımından diğer ev bilgisayarlarından daha üstün. Ayrıca Amiga, hem grafiklerin hızlılığı, hem de renk çözünürlüğü bakımından COMMODORE firmasının Amiga'dan önce çıkarttığı bilgisayarlardan çok daha gelişmiş. Amiga, bilgisayar dünyasına yeni bir grafik anlayışı getirdi ve grafikle uğraşan kullanıcılara yeni bir dünya açtı. Grafik işlemleri çok basitleştirildi; bunun için kendi içine, yani ROM'una grafikle ilgili ayrı bir kütüphane yerleştirilerek grafikle ilgili program yapmak kolaylaştırıldı. Fakat bunu kullanmak için, ya makine kodunu ya da C dilini öğrenmek gerekmekte. Amiga Basic bu konuda hem yetersiz, hem de çok yavaş kalıyor. Bize sorarsanız, grafikle ilgili programlarda en iyi dil, AMOS Basic.

Amos Basic, ROM'daki komutları birleştirerek size daha kolay komutlar ortaya çıkartıyor. Kolayca daire, poligon, elips gibi şekiller ekrana yansıtılabilir. HAM moduna AMOS ile ulaşılabilir ve doğrudan bu modda çalışabilirsiniz. Görünen ekrandan daha büyük bir grafik alanı yaratabilir ve scroll olayı da eklenebilir. Kısacası Amiga'nın grafikle ilgili hemen hemen tüm özellikleri, AMOS ile kullanılabilir.

Grafik komutlarını açıklamaya, her ekran için geçerli olan komutlar ile başlayacağız sonra daha da ilerleyerek değişik grafik alanlarının nasıl tanımlanabileceğini öğreneceğiz.

Tabii ki, grafikte en önemli olan noktalardan biri renktir. Amiga'nın ekrana yansıtabileceği renk sayısı, değişik özel grafik alanlarına göre değişir. Renklendirme olayı, birkaç ekranın (en fazla 6) üst üste gelmesiyle gerçekleşir. Bu, iki renkten 4096 renge çıkabilir. Fakat normalde 5 ekran üst üste getirilerek yapılan grafik ekranında, 32 renk kullanılabilir. Renk sayısını hesaplamak kolaydır. Eğer 5 ekran üst üste geliyorsa, 2^5=32 renk kullanılır; 3 ekran üst üste geliyorsa, bu grafik ekranında 2^3=8 renk kullanılır anlamına gelir. Kısacası hesaplama, [2^(ekran sayısı)] olarak yapılır. Kullanılan renkler, renk register'larından alınır. Renk register'ları, renk değerlerinin olduğu adreslerdir. Renk register'ları $dff180'den başlar ve 32 tanedir. Amiga, ekranlar açıldığında bu register'lardan renk değerlerini alarak grafiği renklendirir.

AMOS, size aynı anda 64 tane rengi ekrana yansıtabilme özelliğini vermiştir. AMOS'un özel renk register'larından bazılarını şöyle sıralayabiliriz.

0 AMOS ekranının dışının rengi 1 AMOS ekranının sayfa rengi 2 yazı rengi

17 mouse işaretçisinin 1. rengi 18 mouse işaretçisinin 2. rengi 19 mouse işaretçisinin 3. rengi AMOS'da renk register'ları ile yapılan işlemler; INK, COLOUR ve PALETTE komutları ile yapılmaktadır.

INK KOMUTU: [INK (çizgi),(sayfa),(dış)] olarak kullanılır. Amiga'da grafik renklendirmede, 32 adet renk register'ı kullanılır. Renk register'larında bulunan sayıya göre noktalar renklenir. AMOS'da renk değerlerini register'lara yerleştirmek için, COLOUR komutunu kullanırız. INK komutu ile de, şekillerin hangi register'lardaki rengi alacağı belirlenir. 'Çizgi', çizgi renginin kaçıncı renk register'ında olduğunu belirtir. O register'daki renk, çizgi rengini belirler.

Amiga, normalde 32 register kullanmasına rağmen; AMOS size, 0'dan 63'e kadar renk sayısı kullanma olanağı vermiştir. Böylece HAM modunda, tüm renkleri kullanma olanağı sağlar.

'Sayfa' şekli, doldurmada kullanılacak arka plan renginin renk register'ını belirler. Diğer bir deyişle, [SET PATTERN] komutu ile belirlenmiş desene verilecek arka planının renk register'ıdır. 'Dış' ise, kapalı bir şeklin sınırının dışındaki alanın renk register'ını belirler. Şeklin sınırlarının belirlenmesini, [SET PAINT] komutu ile sağlayabiliriz. [INK 2,3,4] komutu, renk olarak 2. renk register'ındaki rengi kullan; 3. renk register'ındaki rengi arka planda kullan ve 4. renk register'ındaki rengi, şeklin dışında kullan demektir. INK komutundaki değişkenler renk numarasını değil, kaçıncı renk register'ı kullanılacağını belirler.

Curs Off: Flash Off 
Z=0: V=15:X=20:Y=20 
Set Pattem 0 : Set Paint 1 
Colour 1,$0 
Repeat 
Ink V,0,Z 
BarX,YToX+50,Y+10 
X=X+10 
Y=Y+10 
V=V-1 
z=z+ı 
Until V=0 
End

Bir [INK]komutunda, herhangi bir değerin yerinde sadece virgül varsa; o değer, eskisi gibi kalır. Sadece verilen diğer de-

OSMAN&SERDAR ğerler değişir. [INK „5]sadece 'dış' değeri değiştirir ve diğer renkler aynı kalır.

COLOUR KOMUTU: [COLOUR (renk registeri),$(renk değeri)] olarak kullanılır. Bu komut, Amiga'nın 32 renk register'ına renk yüklemeye yarar, 'renk registeri', kaçıncı renk register'ı olduğunu belirler.

Renk değerine gelince. Bu, biraz karışık. Doğada renkler kırmızı, yeşil, mavi renk üçlüsünün karışımından oluşur. Kırmızı ile yeşili karıştırdığımızda ortaya sarı çıkması gibi. Amiga'da da renk değerleri, bu üç ana rengin karışımından alınır. Üç ana renkten her birine 15'lik bir değer verilmiştir. 0'dan 15 değerine gidildikçe renk açılır. Renk değerini verirken, hexadecimal (onaltılık sayı sistemini) sayı sistemini kullanırız. HEX 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Sayı değeri $XXX olarak verilir. İlk sayı kırmızıyı, ikinci sayı yeşili ve üçüncü sayı da maviyi belirler. Renklerin değerlerini verirken, 0 en koyu, F en açık anlamına gelir. Yani sayının büyüklüğü, rengin açıklığını gösterir. $ff0 açık kırmızı ile açık yeşili karıştır anlamına gelir ve sonuçta çıkan renk, sarıdır.

Aşağıdaki tabloda, birkaç renk listelenmiştir: HEX RENK $000 Siyah $f00 Açık Kırmızı $800 Koyu Kırmızı $ff0 Sarı $0f0 Yeşil $f0f Violet $fff Beyaz $666 Gri Eğer gri rengi, 5. renk register'ına yerleştirmek istiyorsanız, [COLOUR 5,$666] yazmalısınız. INK komutunda, 5. register'ı kullandığınızda gri olduğunu görürsünüz. Sayfa rengini değiştirmek isterseniz, 1. register'ı değiştirmelisiniz. [COLOUR 1,$000], sayfa rengini siyah yapar. Curs Off: Flash Off F=0 Set Pattern 5 : Set Paint 1 Colour 1,$0 Ink 2,5,7 Bar 100,100 To 200,200 Repeat Colour 5,F F=F+(Z) If F=$F Then Z=-1 If F=0 Then Z=1 Wait 5 Until Mouse Key End

=COLOUR KOMUTU: [(değişken) = COLOUR ((renk register'ı))] olarak kullanılır. Komut, 0 ile 31. renk register'ında bulunan renk değerini 'değişken'e atar.

Curs Off: Flash Off 
C=Colour(0) 
A=Colour(l) 
B=Colour(2) 
Repeat 
C=C+1 :A=A+1 :B=B+1 
Locate 0,0: Print "dis ekran rcngi=";Hex$(Colour(0)3 )
Locate 0,1 : Print "sayfa rengi=";Hex$(Colour( 1 ),3) 
Locate 0,2 : Print "yazi rengi=";Hex$(Colour(2),3) 
Colour0.C 
Colour 1 ,A 
Colour 2,B 
Wait 10 
Until Mouse Key _________________________

PALETTE KOMUTU: [PALETTE renk listesi] olarak kullanılır. PALETTE, COLOUR komutuna benzer, ama daha da geliştirilmiştir. Renk değerlerini, renk register'larına yüklemeye yarar. Sadece bir komutla birden fazla renk değerini girebilme özelliği vardır. Böylece, 64 tane register için ayrı ayrı COLOUR komutu kullanmak gerekmez.

[PALETTE $ff0,$F00,$666] yazıldığında, ilk üç register değeri değiştirilir. PALETTE komutundaki değer değişimi, 0. register'dan başlayarak yapılır.

Diyelim ki; sadece, 0 ile 3. renk register'ı değişecek ve aradaki register'lar değişmeyecek. Bunun için, [PALETTE $666,,$400] yazmalısınız. Komutta, boş bırakılan değerler değiştirilmez; sadece verilen değerlerin register'ları değişir. ____________

Palette $FFF,$FFF,$0 
Print "YAZI" ______________________ 
Şimdi biraz da çizimle ilgili komutlara 
göz atalım. 
GR LOCATE KOMUTU:

[GR LOCATE (x),(y)] olarak kullanılır ve grafik kursorunun yerini belirler. Yani çizimin nereden başlayacağı, bu komutla belirtilir. 'x', x koordinat değerini belirler. Bu da, başka özel bir ekran açılmamış ise, 0 ile 320 arasında değişir, 'y' ise, y koordinat değeridir ve normal koşullarda 0 ile 200 arasında bir değer alır. Bunun anlamı, AMOS'un normal ekranında 200*320 tane nokta olduğudur. Tabii ki, diğer ekranlarda bu 640*200 ya da 640*400'e kadar çıkartabilmektedir.

Colour 1,$0 
Curs Off 
Gr Locate 100,100 
Draw To 200,200 ___________________ 
=XGR 
=YGR KOMUTLARI 
[(değişken) = XGR] [(değişken) = YGR] 
olarak kullanılırlar. Grafik kursorunun ye- 
rini değişkenlere atarlar.
Curs Off: Colour 1,$0 
Circle 100,100,20 
Print Xgr,Ygr

PLOT KOMUTU: [PLOT (x),(y),(renk register'ı)] olarak kullanılır. Çizimin en kolay ve en temel komutlarından biridir. Ekrana tek bir nokta koymaya yarar. 'x', x koordinatının değerini; 'y', y koordinatının değerini ve 'renk register'ı' da hangi renk register'ının kullanılacağını gösterir. Verilen değerlere karşılık gelen yere, verilen renk register'ından renk değerini alarak bir nokta koyar. Eğer renk register'ı verilmezse, INK komutu rengini değiştirmeden, noktayı, verilen değerlere koyar.

Curs Off: Colour 1,$0 Repeat Plot Rnd(319),Rnd(199),Rnd(16) Until Mouse Key___________________ =POINT KOMUTU: [(değişken)=POINT((x,y))] olarak kullanılır. Verilen değerlerdeki renk değerini değişkene yükler.

Curs Off: Colour 1,$0 
Circle 100,100,20 
Paint 100,100,1 
C=Point(100,100) 
Print "100,100 KOORDİNATLARINDAN 
RENK REGISTERI=";C ______________

DRAW KOMUTU: DRAW komutu, ekrana çizgi çizmeye yarar. [DRAW (X1),(Y1) TO (X2),(Y2)] olarak kullanıldığında; X1, Y1 koordinatından başlar ve X2, Y2'ye kadar düzgün bir çizgi çizer. [DRAW TO (X3),(Y3)] olarak kullanıldığında da, son kalınan yerden (grafik kursorundan) X3, Y3 değerine kadar devamlı bir çizgi çizer.

    Curs Off : Flash Off
Colour 1,$0 
XE=1 
YE=2 
VE=1 
TE=3 
Z=0 
Repeat 
InkRnd(16) 
Draw X,Y To V,T 
If  X>310 Then XE=-(Rnd( 10)) 
If  Y> 190 Then YE=-(Rnd( 10)) 
If  V< 10 Then VE=(Rnd(10)) 
If T<10ThenTE=(Rnd(10)) 
If V>310ThenVE=-(Rnd(10)) 
If  T>190 Then TE=-(Rnd(10)) 
If  X< 10 Then XE=(Rnd( 10)) 
If  Y< 10 Then YE=(Rnd(10)) 
   X=X+(XE)
Y=Y+(YE) 
V=V+(VE) 
T=T+(TE) 
Z=Z+1

If Z=200 Cls:Z=0 EndIf Until Mouse Key __________________ BOX KOMUTU: [BOX (X1),(Y1) TO (X2),(Y2)] olarak kullanılır. Ekrana boş bir dikdörtgen çizmeye yarar. X1, Y1 dikdörtgenin sol üst köşesinin koordinatları; X2, Y2'de dikdörtgenin sağ alt köşe koordinatlarıdır.

Re dikdörtgen boyutlarini mouse pointer ile ayarlayin 
m
Do 
If Mouse Key=l 
KOOR 
X1=X:Y1=Y 
Gr Writing 2 
While Mouse Key=l 
BoxXI YlToX.Y 
.
KOOR 
BoxX YlToX,Y 
l,
Wend 
Gr Writing 1 
BoxX YlToX,Y 
l,
Endl f
Loop 
Procedure KOOR 
Shared X,Y 
X=X Screen(X Mouse): Y=Y Screen(Y Mouse) 
EndProc_______________________________________

POLYLINE KOMUTU: POLYLINE, DRAW komutuna çok benzer. Aralarındaki fark, POLYLINE komutu ile birden çok çizgi elde etme olanağı olmasıdır.

[POLYLINE (X1),(Y1) TO (X2),(Y2) TO (X3), (Y3) ......] olarak kullanılır. İlk koordinattan başlayarak verilen koordinata kadar düzgün çizgiler çizer.

POLYLINE, aşağıdaki örnekte göreceğiniz gibi birçok DRAW yazma derdini yok etmiştir.

Draw 10,10 To 20,20 Draw To 30,30 Draw To 40,40 yazmak yerine, daha basit olarak;

Polyline 10,10 To 20,20 To 30,30 yazarak aynı sonucu alabiliriz.

Curs Off: Colour 1,$0 
Timer=0 
ForN=0To 100 
InkRnd(15) 
Polyline Rnd(320),Rnd(2O0) To 
Rnd(320),Rnd(200) To Rnd(320),Rnd(200) 
Next____________________________

CIRCLE KOMUTU: [CIRCLE (x),(y),(r)] olarak kullanılır. Ekrana çember çizmeye yarar. X ve Y çemberin merkez koordinatlarıdır. R de çemberin yarı çapıdır. Verilen koordinatlarda R yarı çapı ile çember çizer.

Curs Off: Flash Off Colour 1,0 XE=1 : YE=2 : VE=1 : TE=3 : Z=0 Repeat Ink Rnd(16) Gr Writing 2 Circle X,Y, 10 Circle X,Y, 10 If X>310 Then XE=-(Rnd(10)) If Y>190 Then YE=-(Rnd(10)) If X<10 Then XE=(Rnd(10)) If Y<10 Then YE=(Rnd(10)) X=X+(XE): Y=Y+(YE) Until Mouse Key ___________________ ELLIPSE KOMUTU: [ELLIPSE (x),(y),(r1),(r2)] olarak kullanılır. Ekrana elips çizmeye yarar. X ve Y merkez koordinatlarıdır. Bu koordinatlara R1, R2 yarı çaplarında bir elips çizer. Eğer R1>R2 ise, yatık; R2>R1 ise dik bir elips olur. R1=R2 olursa bir çember olur.

Curs Off: Flash Off 
Colour 1,$0 
Repeat 
InkRnd(15) 
Rl=Rnd(90):R2=Rnd(90) 
X=Rnd(200): Y=Rnd(100): Ellipse 
X,Y,R1,R2 
Until Mouse Key 
AMOS, çizgilerinizi değişik stillerde 
ekrana yansıtma olanağı da sağlamaktadır. 
Bu da SET LINE komutu ile gerçekleştiri- 
lir.

SET LINE KOMUTU: [SET LINE (maske)] olarak kullanılır. SET LINE komutu ile çizgi stili değiştirilebilir ve DRAW, BOX ve POLYLINE gibi komutlarda bu stil kullanılabilir. "Maske" 16 bitlik bir binary (ikili sayı sistemi) sayıdır. Bu sayıdaki 1, rengin olduğu noktalardır ve o noktada INK ya da başka bir komutla verilen renk var anlamına gelir.

Normal koşulda 'maske' %1111111111111111'dir. Yani her noktada renk vardır ve ekranda kesiksiz bir çizgi olarak görülür. Bunu %1111000011110000 olarak verirsek, ekrana çizilen çizgilerin kesik kesik olduğunu görürüz. Düz çizgiler için geçerli olmakla birlikte, istenen çizgi stilinde kullanılabilir. CIRCLE ya da ELLIPSE komutları için geçerli değildir.

Curs Off: Colour 1,$0 
Set Line% 1100110011 
Box 50,100 To 150,150 ____________ 
Şimdi de, bir şeklin içini boyama ya da 
doldurma komutlarına göz atalım.

PAINT KOMUTU: [PAINT(x),(y),(mod)] olarak kullanılır. Bir şeklin içini renklendirme ya da kapalı bir şekli doldurmaya yarar. X, Y boyanacak bölgenin herhangi bir noktasının koordinatlarıdır. MOD, ikiye ayrılır. MOD 0 olarak verilirse, ilk dış renkteki noktada boyamayı keser. MOD 1 verilirse: boyama, INK ile verilen renkten başka renk bulunduğunda durdurulur.

Curs Off: Colour 1,$0 
Flash Off 
Do 
X1=XScreen(XMouse) 
Y1=YScreen(YMouse) 
CircleX1,Y1,15 
PaintX1,Y1,1 
InkRnd(16),Rnd(16) 
Wait5 
Loop

BAR KOMUTU: BAR, BOX komutu gibi kullanılır. Sadece BAR ile yapılan dikdörtgenlerin içi doludur. [BAR (X1),(Y1) TO (X2),(Y2)] formatında kullanılır. X1, Y1 sol üst köşenin; X2, Y2 de sağ alt köşenin koordinatlarıdır.______ Curs Off: Flash Off

Colour 1 ,$0 
Repeat 
I=Rnd(I5);X=Rnd(300)+10;Y=Rnd(170)+32;R=Rnd(30)+1

Ink 1: Bar X,Y To X+10,Y+10 Until Mouse Key 1 Ink 0 : Paint 0,0___________________________ POLYGON KOMUTU: POLYGON, içi dolu bir şekil elde etmeye yarar. [POLYGON (X1),(Y1) TO (X2),(Y2) TO (X3),(Y3)....] formatında kullanılır. Grafik kursorunun bulunduğu yerden başlayarak çizim yapılmak istenirse, [POLYLINE (X1),(Y1) TO (X2),(Y2)....] formatında da kullanılabilir. X1,Y1; X2,Y2; X3,Y3 çizgilerin başlangıç ve bitiş koordinatlarıdır. I Curs Off: Flash Off

Colour 1,$0 
Repeat 
InkRnd(15) 
X1=RJKK200) : Yl=Rnd( 100): H=Rnd( 100): W=Rnd(90) 
PolygonX1,Y1 To X1+W,Y1To X1+W1/2,Y1+H ToX1,Y1 
Until Mouse Key____________________________________

AMOS'ta, doldurma işlemi tek bir desen üzerinde olmaz. İstenirse desen değiştirilebilir. Hatta sprite bankasından kendi yaptığınız deseni kullanabilirsiniz.

SET PATTERN KOMUTU: Desen seçiminde kullanılır. [SET PATTERN (desen)] olarak kullanılır. Üçe ayrılır;

Desen=0 modunda, şeklin içi normal renkte ve desensiz olarak doldurulur.

Desen>0 modunda, AMOS'taki 34 desenden biri kullanılabilir. Bu desenler MOUSE.ABK dosyasının içinde saklıdır ve istenirse AMOS sprite programı ile değiştirilebilir. Fakat ilk üç desen mouse kursoru ile yapıldığından, 4. desenden sonraki desenleri değiştirmek doğru olur.

Desen<0, en güçlü moddur. Desen, bu kez sprite bankasını tercih eder ve şekil numarası aşağıdaki gibi hesaplanır:

SPRITE ŞEKLİ=DESEN*-1 Seçilen şekil, kullanımdan önce otomatik olarak aşağıdaki kurallara göre değiştirilecektir.

*Şeklin eni 16 noktaya indirilecek *Şeklin boyu ikinin katlarına yuvarlanacak. 1,2,4,8, 16, 32 gibi.

Şeklin düzenine göre, desen iki değişik şekilde ekrana yansır. İki renkli şekiller, monochrome olarak ekranda çıkar ve tamamıyla sayfa, çizgi rengini kullanır.

Birçok renk içeren desen yaratmak mümkündür. Bu düzende, şeklin rengi ile ön plan rengi AND'lenir. Sonra da sayfa rengi ile şeklin arka plan rengi OR'lanır. Böylece, değişik renkte desen elde edilir. Eğer orijinal renkleri kullanmak istiyorsanız, çizgi ve arka plan renklerini değiştirmelisiniz.

Yapılan şekli, sprite bankasından GET 
SPRİTE PALETTE ile çağırmayı unutma- 
malısınız.Aksi takdirde desenlerde, nor- 
mal desen ile boyama açısından bir deği- 
şiklik olmaz. 
I Load "AMOS_system/mouse.abk" 
Flash Off 
Curs Off 
Set Pattem -4 
Get Sprite Palette 
Bar 100,100To 200,200_______________________

SET PAINT KOMUTU:

[SET PAINT (n)] olarak kullanılır. Dolu yani kapalı şekillerin dışına çizgi çekilip, çekilmeyeceği bu komut ile bilgisayara iletilir. n=1 ise, dolu şeklin dışı bir çizgi ile belirlenir. Bunun yararı, birbiri üzerinde aynı renkte olan şekilleri ayırt etmektir. n=0 ise, şekiller normal olarak çizilir.

I Curs Off: Flash Off 
Set Paint 1
I=Rjnd(15): X=Rnd(160)+10 : Y=Rnd( 130R32 : R=Rnd(35) 
Ink l,0 R : Bar X, Y To X+40,Y+40 
,
Wait5 
Until Mouse Ke 
y
Ink 0 : Paint 0,0

Şimdi de AMOS Basic dilinin yazı ile ilgili bazı komutlarına göz atalım.

TEXT KOMUTU: [TEXT (x),(y),( "karakter serisi")] olarak kullanılır ve verilen karakter serisini istenen koordinatlara yerleştirmeye yarar. X,Y değişkenleri yazının konulacağı koordinatları belirtmektedir. Verilen karakter serisi, tırnak içinde olmalıdır. _____ Flash Off

Dim A$(40) 
Input "kac tane isim";A 
ForI=l ToA 
Input sim";A$(I) 
"i
Next I 
ForI=l ToA 
YAZ[ $(I)] 
A
Nex I 
t
End 
Procedure YAZ[A$] 
For 1=100 To 90 
 1
Text 100,I,A$ 
Wait 1 
If 1= 182 Then Text 100,190," 
Next I 
  EndProc _______________________________________

GR WRITING KOMUTU: Grafik üzerine yazı yazımında genellikle güçlük çıkar. İstenen tarzda yazılım yapılabilmesi için, AMOS'a GR WRITING komutu eklenmiştir. Diyelim ki, renkli bir şeklin içine yazı yazılacak. TEXT komutunu kullanıp yazdığınız zaman harflerin dışının sayfa rengini aldığını görürsünüz.

Curs Off Ink 2,5 Bar 100,100 To 200,200 Text 150,150,”AMOSTEXT” programı yazılıp çalıştırıldığında, yazıların şekilde boşluk yarattığını görürsünüz. Bunu ortadan kaldırmayı veya böyle bir yazılım yapmayı GR WRITING komutu sağlar.

[GR WRITING (n)] formatı altında kullanılır. n değişkeni binary olarak verilirse, yazılım modunu anlamak daha kolay olur. Bu modda verildiğinde, n değişkeni 3 bitten oluşur (%000 gibi). 1. bit 0, yani %000 olursa; bu moda Amiga'da JAM1 denir. JAM1'de yazılan yazı, şeklin üzerinde boşluklar yaratmaz ve hiçbir renk değişikliği bu modu engellemez.

Bar 100,100 To 200,200 Gr Writing %000 Text 150,150,"AMOSTEXT" 1. bit 1, yani %001 olursa; bu moda, JAM2 adı verilir. JAM2 modu, normal yazılım demektir. Yani GR WRITING komutu kullanılmadığı takdirde Amiga bu modda grafik yazılımı yapar.

2. bit 1 ise; Amiga, XOR modunda yazılım yapar. Bu mod, EXCLUSIVE OR dediğimiz lojiksel işlemi yapar. Bu modun yararı, değişik renklerle karşılaştığında, yazı renginin değişmesidir.

3. bit 1 ise, grafik yazılım modu INVERSEVID'dir. %100 olarak verilirse, karakter rengi ters çevrilir.

GrWriting %100 Text 100,100,,,GELGELELİM,, Bu modlardan 2 ya da 3 tanesi bir anda kullanılabilir. %101 verildiğinde, Amiga hem karakter renklerini tersine çevirir, hem de şeklin üzerinde yazılan karakterler tarafından boşluk bırakılmaz.

Circle 100,100,30 Paint 100,100,1 GrWriting %101 Text 100,100," YAZILIM" CLIP KOMUTU: CLIP komutunun işlevi, ekranı küçültmek diyebiliriz. AMOS'un normal ekranı sol üst köşe 0,0; sağ alt köşe de 320,200 olmak üzere 320*200 noktadan oluşmaktadır. Tüm işlemler, bu ekran içinde yapılmaktadır. Fakat CLIP komutunu kullanarak, bu ekranı istenilen koordinatlara indirgeyebiliriz. Yapılan tüm grafik işlemleri CLIP ile verilen koordinatlar içinde yapılır. Koordinatların dışında kalan işlemler ekrana yansımaz.

[CLIP (x1),(y1) TO (x2),(y2)] olarak kullanılır. X1,Y1 yeni grafik alanının sol üst köşesinin; X2,Y2 de sağ alt köşesinin koordinatlarıdır.

Curs Off 
Yl=YScreen(Y Mouse) 
Flash Off 
Circle X1,Y1 15 
,
Colour 1,$0 
Paint X1,Y 1,1 
Clip 50,50 To 200,150 
Ink Rnd(16),Rnd(16) 
Do 
Wait  5
X1=XScreen(X Mouse)    Loop

Şimdi de öğrendiğimiz tüm komutları bir örnekte toplayalım.

  RENK=2
Colour 1,0 
Z=$0 
Curs Off: Flash Off 
Do 
K$=lnkey$ 
If Mouse Key=l 
While Mouse Key=l 
KOOR 
Plot X,Y 
Wend 
Endlf 
If Mouse Key=2 
KOOR 
Paint X,Y,0 
  End If 
  If K$="d"
Locaıe 0,4 : Input "renk*';D5 
Ink D5 
D5=RENK 
End If 
IfK$=V 
Gr Writine 0 
Locate 0,0 : Input "REDISTER";T 
Repeat 
Cl=Colour(T) 
V=0 : W=0 : Q=0 
Locate 0,1 : Print 'renk=";Hex$(Cl,3)
  K$=Inkey$
If K$=”7”  
  v=v+ı
End If 
IfK$="4M 
V=V-1 
End If 
IfK$="8" 
W=W+$10 
End If 
IfK$="5" 
W=W-$10 
End If 
IfK$="9" 
Q=Q+$ 100 
End If 
If K$="6" 
Q=Q-$100 
End If 
K1=Q+V+W 
C2=C1+K1 
Colour T,C2 
Until Mouse Key 
End If 
IfK$=T 
Repeat 
Until Mouse Key 
  Gr Writing 2
KOOR 
X1=X:Y1=Y 
While Mouse Key=l 
DrawX1,Y1ToX,Y 
KOOR 
DrawX1,Y1ToX,Y 
Wend 
Gr Writing 0 
DrawX1,Y1ToX,Y 
Endlf 
If K$="b" 
Repeat 
Until Mouse Key 
Gr Writing 2 
KOOR 
X1=X:Y1=Y 
While Mouse Key=l 
BoxX1,Y1loX,Y 
KOOR 
BoxX1,Y1ToX,Y 
Wend 
Gr Writing 0 
BoxX1,Y1ToX,Y 
Endlf 
If K$="s" 
Repeat 
Until Mouse Key 
Gr Writing 2
KOÖR 
X1=X:Y1=Y 
While Mouse Key=l 
BoxX1,Y1ToX,Y 
KOOR 
BoxXI,Y1ToX,Y 
Wend 
Gr Writing 1 
Ink 1 
BarX1,Y1ToX,Y 
Ink RENK 
Endlf 
IfKS^'c" 
Repeat 
Until Mouse Key 
KOOR 
H=l 
Gr Writing 3 
X1=X:Y1=Y 
While Mouse Key=l 
IfH=0 
H=l 
Endlf 
CircleX1,Y1,(H) 
CircleX1,Y1,(H) 
KOOR 
H=Sqr((X 1 -X)
A2+(Y 1 - Y)
A2) 
Wend
Gr Writing 0 
CircleX1,Y1,(H) 
Endlf 
If K$="t" 
KOOR 
F1=0 
Repeat 
K$=Inkey$ 
If K$ <> 
TextX+Fl,Y,K$ 
Fl=Fl+8 
Endlf 
If K$=Chr$(13) 
TextX+Fl-8,Y, "  " 
F1=0 
Y=Y+8 
Endlf 
If K$=Chr$(8) 
Text X+Fl-16,Y," " 
F1=F1-16 
Endlf 
Until Mouse Key 
Endlf 
Loop 
Procedure KOOR 
Shared X,Y 
X=X Screen(X Mouse) 
: Y=Y Screen(Y Mouse) 
End Proc

Bu örneği çalıştırdığınızda, sol mouse tuşuna basarak nokta nokta çizim yapabilir ve sağ mouse tuşu ile kapalı şekilleri boyayabilirsiniz. ‘b’ tuşuna basıldığında, BOX moduna geçer. Sol mouse tuşunu basılı tutarak dikdörtgen büyüklüğünü ayarlayabilirsiniz. Kullanılabilecek diğer tuşlar da şunlar: ‘c’ çember çizmek için; T, düzgün çizgi; 'r’ register'ların renklerini değiştirmek için; ‘s’ yapılan resmin bir bölümünü silmek için:

‘d’ çizim register'ını değiştirmek için; 't' ekranın mouse işaretçisinin bulunduğu yere yazı yazmak için kullanılır. Çember, çizgi ve silme işlemlerinde sol mouse düğmesini devamlı basılı tutarak şeklin büyüklüğünü belirlemelisiniz. Yazı yazarken 'return’ ve 'back space' tuşlarını kullanabilirsiniz, diğer özel tuşlar ekranda küçük bir kare olarak çıkacaktır. Bu moddan çıkmak için sol mouse tuşuna basmak yeterlidir. Renk register'larını değiştirirken sıra ile 7,4 kırmızı; 8,5 yeşil; 9,6 mavi rengi artırmak ve azaltmak için kullanılmalıdır.

Bu örnek, çizim programlarının nasıl yapıldığını göstermek için ideal. Fazla karmaşık değil. Eğer grafik komutlarını ve daha önce anlattığımız komutları iyice anladıysanız, bu örneği kolayca çözebilirsiniz ve kendi komutlarınızı ekleyebilirsiniz.

Gelecek aya kadar iyi çalışmalar.