AMOS THE CREATOR
Retro bilgisayar
Bu ayki yazıma AMOS yazımıza gösterdiğiniz ilgiye teşekkür ederek başlıyorum. Dergimize AMOS'la ilgili o kadar soru soruluyor ki, bunları 'Okuyucu Mektupları' köşesi yerine AMOS yazısının içinde yer vermeye karar verdik.
Antalya'dan Ali AYKOL, AMOS EXTRA'S disketinin nasıl bulunabileceğini sormuş. Bu disketi dergimizde ilanlarını gördüğünüz çeşitli Club ve iş yerlerinden alabilirsiniz. Tabii, bu arada şu ana kadar ihtiyacınız olmasa da AMOS DATA disketini de almanız gerekiyor.
Diğer bir soru da, Sinop'tan Doğan Özdemir'den. AMOS'ta 'Sound Sampler' ile örneklenmiş seslerin kullanılıp kullanılamayacağını soruyor. Bu mümkündür ve daha ileriki sayılarımızda bununla ilgili örnekler vereceğim.
Son derece dikkatli ve sevgili okuyucumuz Ali Hatay, mektuplarında biraz sitemli. Mektuplarınız elimizde ve biz gerekli itinayı gösteriyoruz inanın. Ancak sorularınız detaylı ve uğraşı gerektiriyor. Ben sorularınıza bu satırlarda değineceğim; ama yine sırayla. Yani bu sayıda ilk mektubunuzun cevabı var; diğer mektuplarınızda yinelediğiniz sorularınızın yanıtlarını da bunlardan alabileceksiniz. Ama sonraki mektuplarınızın yanıtları gelecek sayıda. İlginize teşekkür ediyor ve sizin şahsınızda cevapları geciken tüm okuyucularımızdan özür diliyoruz. AMOS'un komut kısaltmalarını sormuşsunuz. Varolan tek kısaltma 'Print' komutu için olup "?" şeklinde ve siz bunu zaten bulmuşsunuz.
Eğer AMOS'ta yazdığınız programları tek başına AMOS'u yüklemeden çalıştırmak istiyorsanız, EXTRA'S disketindeki RAMOS programını kullanmanız gerekiyor. RAMOS, AMOS'un aksine bir 'public domain' programı. Bunu kanuni hiçbir zorlukla karşılaşmadan kendi programlarınızla birlikte dağıtabilirsiniz.
İki program arasında, sadece iki fark var. Bunlardan biri, RAMOS'ta editör olmaması. Eğer program sırasında bir hata olursa ya da Ctrl+C tuşlarına basılırsa, RAMOS hemen Workbench ekranına geri dönüyor. Diğer bir fark da, RAMOS'ta 'Default' bir ekranın tanımlanmamış olmasıdır. Bu yüzden programlarınızda ekrana yazı veya şekil çıkartacaksanız, programın ilk başında 'Screen open' komutu ile bunu yapmanız gerekir. RAMOS'u kullanmak için aşağıdaki işlemleri yapmanız yeterli:
Boş bir disketi formatlayın. AMOS'u çalıştırın ve 'Search' menüsünde 'Set text buffer' komutunu kullanarak text buffer'ı 5000 byte'a çıkarın. Sonra AMOS EXTRA'S disketindeki 'RAMOS installation' programını yükleyip çalıştırın. Bundan sonrasını program sizin istediğiniz şekilde halledecektir. Program bittikten sonra CLI'ya girip yeni disketinizi install edin. Artık yazdığınız programları CLI'dan çalıştırabilmeniz için 'Ramos programismi.AMOS' yazmanız yeterlidir. Eğer programın ismini belirtmemişseniz, RAMOS, bulabilirse o anki directory'den AUTOEXEC.AMOS adlı programı yükleyip çalıştırır. Aynı şekilde disketi boot ettiğiniz zaman da AUTOEXEC.AMOS programı çalıştırılır. RAMOS komutunu aynı zamanda Script dosyalarında da kullanabilirsiniz. Bu şekilde, disketin ya da diskette bulunan herhangi bir programın start-up dosyasına girerek bu programlarla birlikte yazdığınız programları da kullanarak ilginç demo'lar hazırlayabilirsiniz.
AMOS'un karakter setini değiştirmek için, ana diskette yer alan 'AMOS Configuration' programını kullanabilirsiniz. Bu programla AMOS'ta başka değişiklikler de yapılabilir. Bunları ileride açıklayacağım.
Doğan Özdemir arkadaşımız, bir de ekranın bir bölümüne resim yükleyip, diğer bir bölümünde de kursor'un yazmaya elverişli olduğu bir program örneği istiyor. Aslında bunu daha önce verdiğim komutları kullanarak yapmak mümkün, ama yine de ben ufak bir örnek vereceğim.
Aşağıdaki program, önce ekrana bir iff resim yükler, sonra bu resmin önüne daha ufak bir ekran açar ve yazıları buraya yazar. Bu programda daha önce kullanmadığım 'Fsel$' komutunu kullandım. Bu komut yardımıyla yükleyeceğiniz resimleri, program çalışırken seçebilirsiniz.
Rem**
AMIGADUNYAS1
**
Rem** AMOS DEMO PROGRAM **
Rem** written by Burak OZDEMIR **
Rem**
using AMOS
Rem** AMOS Copyright 1990 **
Rem**
Mandarin Software **
Rem Bu iki satır resmi yükler
F$=Fsel$("DF0:","","Resmi secin")
LoadIffF$,l
Rem Burada yazı ekranı açılır
Screen Open 2,320,80,16,Lowres
Screen Display 2,136,200,,
Rem Burada yazı ekranının renkleri
ayarlanır
Get Palette 1
Screen 2
Rem Buradan sonraki bütün komutlar

yazı ekranına gider
Print "Fundalar açmış tenis kortunda."
Print "Önada ağ yok, havada bulut,'
Print
Print "Vesaire vesaire....."
Print
Print "Bizi izlemeye devam edin !!"
Şimdi tekrar komut açıklamalarımıza geçelim. Bu ay özel ekran efektlerini anlatacağım. Bunlardan ilki geçen ay örnek programını verdiğim 'Appear' komutu.
KOMUT: APPEAR KULLANILIŞI: APPEAR e1 TO e2,efekt,piksel Bu komutla, ekran görüntüsü 'efekt' değişkeninin değerine bağlı olarak, 'e1' ekranından 'e2' ekranına dönüştürülür. Normalde ekranların tamamı değiştirilir. Fakat isteğinize göre belirtebileceğiniz 'piksel' değişkeni ile değişikliğin ekranın sadece bir bölümünde gerçekleşmesini sağlayabilirsiniz.
KOMUT: FADE KULLANILIŞI: Fade hız,renk listesi Fade hız TO e [,maske] Bu komut yardımıyla, bir ekranın renk paletini yavaşça değiştirebilirsiniz. Komutun ilk kullanım şeklinde bütün renkler siyaha dönüştürülür. Böylece görüntü yavaşça kaybolur. Hız parametresi ile renklerin değişme hızı ekran tarama sayısı biriminden belirtilir. Program her renk değişimi için hız/50 saniye bekler. İsteğe göre verebileceğiniz bir renk listesi ile renklerin sadece bir bölümünün veya hepsinin, sizin tanımlayacağınız başka renklere dönüşmesini sağlayabilirsiniz. İkinci kullanım şeklindeyse, ekranın renkleri 'e' ekranının renk paletinden alınır. Bu kullanım şeklinde belirteceğiniz bir maske ile renklerden sadece bazılarının diğer ekrandan alınıp, geri kalanların aynı kalmalarını gerçekleştirebilirsiniz. Eğer renk 'e' parametresi sıfırdan küçük bir değerdeyse, o zaman renkler ilgili sprite-bank'dan alınır.

Rem** AMIGA DÜNYASI
**
Rem** AMOS DEMO PROGRAM **
Rem** written by Burak OZDEMIR **
Rem**
using AMOS
Rem** AMOS Copyright 1990 **
Rem**
Mandarin Software
Rem Bu program birbiri ardına yükle-
nen
Rem 3 resmi 'fade' komutunu kullana-
rak gösterir
Rem
Curs Off
A$=Fsel$("df0:",""."ilk resmi secin","")
B$=Fsel$("df0:","","ikinci
resmi
se-
cin","")
C$=Fsel$("df0:"."","ucuncu resmi se-
cin"."")
Load lff A$.l
Load Iff B$,2
Load Iff C$.3
Screen Open 4.320.200.32.Lowres
Curs Off
Rash Off
Fade 1
Wait 15
I=1
Do
Fade 10
Wait 150
Screen Copy I To 4
Fade 10 To I
Wait 150
1=1+1
If I=4 Then I=1
Loop
KOMUT: Flash KULLANILIŞI: Flash n,"(renk,süre),(renk,süre)..." Flash Off

Bu komut yardımıyla ekrandaki 'n' numaralı rengin değerini, periyodik olarak değiştirebilirsiniz. 'renk' değişkeni adından da anlaşılacağı gibi, o sırada gösterilecek olan rengi belirler; alabileceği değerler 'Palette' komutundaki gibidir, 'süre' değişkeni yine saniyenin 1/50'si cinsindendir. Bu yanıp sönmeleri 'Flash off' yazarak durdurabilirsiniz.
Eğer dikkat ettiyseniz, genelde bütün süreler 1/50 saniyenin katlarıdır. Bu bilgisayardan çok, kullandığınız elektriğin 50Hz. veya 60Hz. olmasına bağlıdır; çünkü monitör ekranındaki elektron ışını, bütün ekranı saniyede 50 ya da 60 defa tarar.
İşte bu 1/50 veya 1/60 saniyelik birimlere 'Vertical blanking period' yani dikey karartma periodu denir. Bunun neden böyle olduğunu daha sonra açıklayacağım. Artık bu süreye kısaca VBL diyeceğim.
Rem** *********************** **
Rem** AMIGA DÜNYASI
**
Rem** AMOS DEMO PROGRAM **
Rem** written by Burak OZDEMIR **
Rem**
using AMOS
**
Rem** AMOS Copyright 1990 **
Rem** Mandarin Software
**
Curs Off
Flash I,"(000,10)( 111,10)(222,10)
(333,10)(444.I0)(555,10)(666,10)
(777,10)"
Flash 2,"(001,1)(002,1)(003,1)(004,1)
(004,1)(005, l)(006,l)(007,l)"
Flash 3,"(00f,5)(0f0,5)(f00,5)"
Flash 4,"(000,10)(004.10)(008.10)
(00c, 10)(00f.,10)(04f. 10)(08f, 10)(0cf, 10)
(0ff.,10)(4ff,I0)(8ff,10)(cff,10)(fff.l0)"
NUMBER=4
Writing 2,2
For I=0 To NUMBER-1
Ink I+l
Box I*80,0 To I*80+80,200
Paint I*80+40,15,1
Locate X Text(I*80),Y Text(100)
Ink 3
Print "FLASH !"
Next I
KOMUT: Shift up KULLANILIŞI: Shift up süre,ra,rb,mod Bu komut, bir ekranın renk paletindeki renk register'larından 'ra'dan 'rb'ye kadar olanlarını kendi aralarında kaydırır. Bunu, 'mod' değişkeninin '1' veya '0' olmasına göre iki değişik şekilde yapar. Olayı daha iyi kavramanız için, aşağıdaki tabloyu hazırladım. Örneğin 'ra=2', 'rb=7' ve 'mod=0' olsun.
Aşağıdaki tablolarda register değerlerinin zamanla nasıl değiştiğini izleyebilirsiniz:

TABL02 CMod= Tiken)
'Süre' değişkeni, yine VBL cinsindendir.
KOMUT: Shift down KULLANILIŞI: Shift down süre,ra,rb,mod Bu komut da, deminki gibi çalışır. Tek farkı, renkleri öbür tarafa kaydırmasıdır. Yukarıda verdiğim değerler için iki tablo daha hazırladım. Eğer fark etmişseniz, bu komutlar 'Deluxe Paint' programındaki 'Cycle' efektinin çok benzeridir. Bence daha da güçlüdür.

KOMUT: Shift off KULLANILIŞI: Shift off Bu komut, ‘shift up’ ve ‘shift down’ komutları ile harekete geçen renk kaymalarını durdurur. Bunu aşağıdaki örnekte görebilirsiniz.
Rem**
AMIGA DÜNYASI **
Rem** AMOS DEMO PROGRAM **
Rem** written by Burak OZDEMIR **
Rem**
using AMOS
**
Rem** AMOS Copyright 1990 **
Rem** Mandarin Software
**
Dp*Y%)fc3tc îfc ijc % % îfr: $c % ^c $t % ^c % % ;fc % % % $z ^c .*; ^c %^c ^c %
Curs Off
Flash Off
C=Screen Colour
N=320/C
NN=N/2
For I=0 To C
Ink I
Box I*N,0ToI*N+N,200
Paint I*N+NN, 100,1
Next I
Screen Open 1,320,50,2,Lowres
Screen Display 1,136,200,320,50
Do
Print "s=";
Input S
Print "ra=";
Input RA
Print "rb=";
Input RB
Print "m=";
Input M
Screen 0
Shift Up S,RA,RB,M
Wait Key
Shift Off
Screen 1
Print "devam edecek misiniz ? (e/h)"
Input A$
If A$<>"e" Then Exit
Loop
Şimdi de sıra, 'Rainbow' komutlarına geldi. Bunlar 'Set rainbow', 'Rainbow' ve 'Rain' olmak üzere üç tanedir. Önce Rainbow'un nasıl bir şey olduğunu inceleyelim. Türkçe'de bu komut gökkuşağı anlamına gelir. Gerçek gökkuşağından farkları ise, yay şeklinde değil de yere paralel şekilde olması ve renk, kalınlık gibi özelliklerini ayarlayabilmeniz.
KOMUT: Set rainbow KULLANILIŞI: Set rainbow n,renk,l,k$,y$,m$ Bu komut, rainbow'ları tanımlamak içindir. Toplam 4 tane kadar değişik rainbow tanımlayabilirsiniz, 'n', rainbow numarasıdır. '0' ile '3' arasında değerler alır. 'renk' değişkeniyle, komutun etkileyeceği renk indisi belirlenir. Bu indisin belirlediği renk, her yatay tarama satırında sizin belirleyeceğiniz bir renge dönüşür. '0' ile '15' arasında değerler alır. 'l' sayısı, renklerin depolanacağı tablonun büyüklüğünü belirler. Alabileceği değerler '16' ile '65500' arasındadır.
Şimdi gelelim renk tablosunun hazırlanmasına. Bu olay 'k$', 'y$' ve 'm$' değişkenleriyle ayarlanır. Herbiri satır renklerinin kırmızı, yeşil ve mavi bileşenlerden birini ayarlar. Bunlar temel değişkenlerden değildir; içinde üç ayrı değer taşıyan karakter dizileridir. Dizilerin temel yapısı aşağıdaki gibidir:
"(satır,adım,tekrar)" 'Satır' değişkeni ile, o bileşenin kaç satırda bir değerini değiştireceği belirlenir. 'adım' değişkeni renk bileşeninin o anki değerine kaç ekleneceğini belirler. Tekrar sayısı ise, bu olayın ne kadar tekrar edeceğini belirler.
KOMUT: Rainbow KULLANILIŞI: Rainbow n,b,y,h Bu komut 'Set rainbow' komutuyla tanımladığınız rainbow'ları göstermek için kullanılır, 'n' rainbow numarasıdır. 'b' değişkeni, gösterilecek renklerin hazırladığınız tablonun neresinden alınmaya başlanacağını belirler. 'y', rainbow'unuzun monitörün hangi satırında başlayacağını belirler. Rainbow'un toplam kalınlığını da 'h' ile ayarlayabilirsiniz.
KOMUT: Rain KULLANILIŞI: Rain(n,l)=c c=Rain(n,l) Bu komut, rainbow komutları arasında en güçlü olanıdır. Bu komut yardımıyla, hazırladığınız bir rainbow tablosunun istediğiniz satırını değiştirebilirsiniz, 'n' rainbow numarası, 'l' satır numarası, 'c' de atanacak değerdir. Komutun ikinci kullanılış şekli, ilkinin tam tersi içindir. Bu sefer, istediğiniz bir satırın rengini öğrenebilirsiniz.

Rem**
AMIGA DÜNYASI **
Rem** AMOS DEMO PROGRAM **
Rem** written by Burak OZDEMIR **
Rem**
using AMOS
**
Rem** AMOS Copyright 1990 **
Rem**
Mandarin Software **
Rem** *********************** **
Flash Off
Curs Off
ClsO
Set Rainbow 0,0,3000,
"(10,100.1)",
'(5,001,1)", "(20,010.1)"
Do
I=0
While I<3001
Rainbow 0,1,0,320
Wait Vbl
1=1+1
Wend