AMOS
Retro bilgisayar
Merhaba arkadaşlar. Bu ayki yazımızda AMOS'un ekran komutlarını anlatmaya başlayacağım. Kuşkusuz AMOS'un en büyük özelliklerinden biri, ekranlar konusundaki büyük ustalığıdır.
Şimdi, ekran komutlarına bir göz atalım. AMOS programı ilk çalışmaya başladığında sistem 320*200 genişliğinde ve 16 renkte bir ekran açar. Bu sakın sizi üzmesin. Siz bunu istediğiniz şekilde değiştirebilir ve buna ek olarak da, 7 tane daha ilave ekran açabilirsiniz. Aynı anda monitörünüzün veya televizyonunuzun ekranında bunlardan istediğiniz kadarını gösterebilir ve bunları birbirinden bağımsız kontrol edebilirsiniz. Şimdi bu komutlara bir göz atalım:
KOMUT: Screen Open KULLANILIŞ:
Screen Open n,g,y,rs, mod
Bu komut bir ekran açar ve bu ekran için gerekli olan hafızayı ayırır. Bu komutun kullanılışından sonra gelen tüm ekran kontrol komutları, Screen komutu tarafından değiştirilmediği takdirde, en son açılan ekrana kontrol eder. 'n' ekran numarasıdır ve 0-7 arasında değerler alır. 'g' ve 'y' sırası ile ekranın genişliği ve yüksekliğidir. Açacağınız ekranın gerçek boyutları, göstereceğiniz fiziksel ekran ile sınırlı değildir, 'rs' kullanacağınız renk sayısını belirler; alabileceği değerler 2, 4, 8, 16, 32, 64 ve 4096'dır. 'mod' ise rezolusyonu belirler HIRES veya LOWRES olur.
ÖRNEK:
Screen open 1,340,400,16,lowres
Screen open 3,200,150,4096,lowres
KOMUT: Screen Close KULLANILIŞ:
Screen Close n
Bu komut daha önce açılmış olan bir ekranı kapatır ve hafızanın bu bölümünü boşaltır.
ÖRNEK:
Screen close 5
KOMUT: Auto View KULLANILIŞ:
Auto view on/off
Normal olarak bir ekranı açtığınız anda ekran gösterilir. Bu, bazen istenmeyen sonuçlar doğurabilir. Bunu auto view off komutu ile durdurabilirsiniz. Böylece ekranlarda yaptığınız değişiklikler gösterilmez. ÖRNEK:
Auto view off
KOMUT: Default KULLANILIŞ:
Default
Tüm ekranları kapar ve AMOS'un açılış ekranına geçer.
KOMUT: View KULLANILIŞ:
View
Auto view off durumunda iken ekranlarda yapılan değişikliklerin gösterilmesini sağlar. Bu konumdayken, yapılan her değişiklik gösterilmek istendiğinde bu komut kullanılır.
KOMUT: Load Iff KULLANILIŞ:
Load iff "resim",[ekran]
Bu komut ile disklerden iff formatında kaydedilmiş herhangi bir resim yüklenir. Eğer ekran numarasını belirtmemişseniz, o an aktif olan ekrana kaydedilir.
ÖRNEK:
Load iff "df0:res/house ".3
KOMUT: Save Iff KULLANILIŞ:
Save Iff "isim" [,compression]
O anki ekranı diskete kayıt eder. Eğer compression seçeneği varsa, resmi sıkıştırıp kayıt eder.
ÖRNEK:
Save iff "resim"
KOMUT: Screen display KULLANILIŞ:
Screen display n [,x,y,w,h]
Açılmış bir ekranı, görünür ekranın istenilen bir yerine yerleştirir. Böylece sadece ekranın gösterildiği yeri değiştirerek, ekranı hareket ediyormuş gibi gösterebilmek mümkündür. 'n' ekran numarasıdır. 'x' ve 'y' ise, ekranın sol üst köşesinin fiziksel ekranda görüleceği yeri belirler, 'w' ve 'h', sırasıyla gösterilecek bölgenin genişliğini ve yüksekliğini belirler.
ÖRNEK:
Screen display 1,112, 30,100, 100
KOMUT: Screen offset KULLANILIŞ:
Screen offset n,x,y
Normalde bir ekran gösterilirken, gösterime o ekranın sol üst köşesinden başlanır. Bu, screen offset komutu ile değiştirilebilir. 'n' ekran numarasını, 'x' ve 'y' de fiziksel ekranın, mantıksal ekranın solundan ve üstünden ne kadar boşluk bıraktıktan sonra başlayacağını belirler. ÖRNEK:

Screen offset 2,100,50
KOMUT: Screen clone KULLANILIŞ:
Screen clone n
Bu komut, o anda aktif olan ekranın bir kopyasını açacağı 'n' ekranına alır. Normal olarak bu ekran diğeri ile aynı yerde gösterilir, fakat 'screen display' ve 'screen offset' komutları ile bu değiştirilebilir. Hafızada tek bir yerde bulunan bir ekranı, monitörde aynı anda değişik yerlerde göstermek mümkündür.
ÖRNEK:
Screen clone 5
KOMUT: Screen KULLANILIŞ:
Screen n a=screen
Bu komut, bütün grafik ve yazı işlemlerini "n" ekranına yönlendirir. Eğer bu ekran o anda görüntüde değilse, komutun görünür bir etkisi olmaz; fakat hafızada istenen değişiklik yapılmış olduğundan, ekran görünür duruma alındığında sonuca ulaşılmış olunur. İkinci kullanım şeklinde ise 'a' değişkenine o an aktif bulunan ekranın numarası verilir.
KOMUT: Screen
to front KULLANILIŞ:
Screen to front [n]
Bu komut 'n' ekranının monitörde önde görünmesini sağlar. Ekran numarası verilmemişse o an aktif olan ekran öne alınır.
KOMUT: Screen
to back KULLANILIŞ: Screen to back [n]
Bu komut seçilen ekranın monitörde arkaya atılmasını sağlar.
KOMUT: Screen hide KULLANILIŞ:
Screen hide [n]
Bu komut seçilen ekranı tamamen görüntüden kaldırır. Ekran numarası verilmemişse o an aktif olan ekran kaldırılır.
KOMUT: Screen show KULLANILIŞ:
Screen show n Bu komut 'screen hide' komutunun tersidir. O an gösterimde olmayan bir ekranı göstermek için kullanılır.
Bu ay açıklayacağım komutlar bu kadar. Şimdi de size kısa bir program veriyorum. Program ilk olarak disketten bir resim yükler. Daha sonra siz tıpkı 'Deluxe Paint' programındaki gibi ekranın bir bölümünü 'brush' olarak seçersiniz. Bunu yapmak için, ekranın iki yerine kliklemeniz yeterli. Daha sonra program bu seçtiğiniz bölümü yukarıdan aşağıya doğru düşüyormuşçasına kaydıracaktır. Önce programın listesini veriyorum, sonra da satır satır açıklayacağım.
Rem**********************************************
Rem**********************************************
Rem****
AMIGA DÜNYASI
****
Rem****
AMOS DEMO PROGRAM
****
Rem****
written by Burak OZDEMIR
****
Rem****
using AMOS
****
Rem****
AMOS Copyright 1990
****
Rem****
Mandarin Software ****
Rem**********************************************
Rem**********************************************
Screen Open 0,320,200,32,Lowres
Flash Off
Load Iff "df0:resim"
Repeat
Until Mouse Click=l
XS=X Screen(0.X Mouse)
YS=Y Screen(0.Y Mouse)
Gr Writing 2
Repeat
X=X Screen(0,X Mouse)
Y=Y Screen(0,Y Mouse)
Box XS,YS To X,Y
Box XS,YS To X,Y
Until Mouse Click=l
DX=Abs(XS-X)
DY=Abs(YS-Y)
Auto View Off
Screen Hide 0
Screen Open l,DX,DY,32,Lowres
Get Palette 0
Flash Off
If XS>X Then Swap XS,X
If YS>Y Then Swap YS,Y
Screen Copy 0,XS,YS,X,Y To 1,0,0
Screen 1
Screen Clone 2
Screen Hide 2
Auto View On
Do
Screen To Front 1
For 1=0 To 201 Step 3
Screen Display 1„I„
Wait 1
If Mouse Key>0 Then Exit
Next I
Boom
If Mouse Key>0 Then Exit
Wait 40
Screen Show 2
Screen To Front 2
For 1=0 To 201 Step 3
Screen Display 2„I„
Wait 1
If Mouse Key>0 Then Exit
Next I
Boom
Wait 40
If Mouse Key>0 Then Exit
Loop
Program, ilkönce 32 renkte ve düşük çözünürlükte bir ekran açar. Bir sonraki satırda ekranın yanıp sönmesini önlemek için 'flash off' komutunu kullandım.
Repeat
Until Mouse Click=l
döngüsü ile mouse'un kliklenmesi beklenir. Bundan sonra mouse'un o an bulunduğu nokta ekran koordinatları olarak XS ve YS değişkenlerine verilir.
gr writing 2
komutu ile grafik çiziminde XOR moduna geçilir. Bu sayede ekrana çizilecek bir şeklin üstünden tekrar geçilecek olursa, ekran tekrar eski durumuna döner.
Bundan sonra gelen döngüde mouse tekrar klikleninceye kadar, 'box' komutu ile ekranda 'brush' olarak seçeceğiniz bölgenin etrafına kutular çizilir. Komutu iki kere arka arkaya kullanmamın nedeni resmi bozmamak içindir.
Daha sonra dx ve dy değişkenlerine seçtiğiniz bölgenin genişliği ve yüksekliği kayıt edilir.
Bundan sonra ekran ayarlamaları yapılırken, görüntünün bozulmaması için 'auto view off' komutunu kullandım.
Screen Open l ,DX,DY,32,Lowres
Get Palette 0
satırları ile seçtiğiniz brush'ın kopyalanacağı yeni bir ekran açılır.
screen copy komutunda, önce ekranın sol üst köşesi sonra da sağ alt köşesi verileceğinden;
If XS>X Then Swap XS,X
If YS>Y Then Swap YS,Y
komutları ile değişkenler sıralanır.
Sonra 'screen clone' ile bu ekranın da bir kopyası alınır. Bundan sonra "auto view on" komutu ile ekranda yapılacak değişikliklerin görünmesi sağlanır. Daha sonra programın ana döngüsü gelir.
Önce bir numaralı ekran öne alınır. Daha sonra
For 1=0 To 201 Step 3
Screen Display 1„I„
Wait 1
döngüsü ile bu ekran yukarıdan aşağıya kaydırılır. Ekran aşağıya inince de 'boom' komutu ile bir patlama sesi verilir.
Bundan sonra aynı olay, 2 numaralı ekran için yapılır.
Döngüden çıkmak için 'mouse' tuşuna basmanız gereklidir.
Şimdi sizlere AMOS MANUAL'dan uyarlanmış iki program daha vereceğim. Fakat açıklamalarını gelecek ay yapacağım. Bu arada sizler de bunların nasıl çalıştıklarını bulmaya çalışın. Gelecek aya kadar hepinize iyi eğlenceler...
Rem ******************* *****************
Rem* AMOS demo 10.1
*
Rem * AMOS MANUAL dan uyarlanmistir *
Rem *
HAM Demo
*
Rem* (c) Mandarin/Jawx 1990 *
IP Aryj 'I* 5f* ^K 5fC 5|C 3fC 3fC 3fC 5|< 3fC 3fC 3fC 5yC 9fC 3fC 3fC 3fC 5|C 3|C 3|C 3fC 3fC 3fC 3fC 3|C 5fC 3fC 3|C 3fC 9fC 3fC 3{C 3|e 5(C 3fC 5(Ç
Rem
Screen Open 0,320,290,4096,Lowres
Screen Display 0,129,30,320,270
Curs Off: Cls 0 : Flash Off
Locate 0,2 : Pen 15 : Paper 0
Centre "AMOS-HAM"
ForB=0To 15
Colour B,B : Ink B : Bar 32,B* 15+32 To 288,B* 15+47
ForR=0To 15
For L1 =32 To 47:Ink 32+R :Plot R* 16+33,B* 15+L1
:Next L1
ForG=0To 15
Ink48+G : Draw R*16+G+34,B* 15+32 To R*16+G+34, B* 15+47
NextG
NextR
NextB

Rem ***********************************
Rem *
AMOS Example 10.2
*
Rem * AMOS MANUAL dan u\ arlanmistir *
Rem *
(c) Mandarin /Jawx 1990
*
Rem ***********************************
Rem
Screen Open 0,960,100,8,Lowres
Screen Display 0,130,150,320,100
Palette 0,S111,$222,$333,$444,$555,$666,$777
Flash Off
Set Rainbow 0,1,64,"(8,2,8)",'"*,""
Rainbow 0,1,150,100
LAND[640,0,50]
Screen Copy 0,0,0,319,100 To 0,639,0
Do
For 1=0 To 159
Screen Offset 0,1*4,0 : Wait Vol
Next I
Loop
Procedure LAND[W,X,N]
Ink 1 : Bar X,0 To W+X,99
Foe T=0 To N
TX=Rnd(W)+X : TW=Rnd(W/8)+4 : TH=Rnd(50)
Polygon TX,99 To TX+TW/2,99-TH To TX+TW,99
Next T
End Proc