AMOS
Retro bilgisayarWelcome to wonderful world of AMOS! Bu ayki AMOS köşemize bir müjde ile başlayacağız. Geçen ayki dergimizin haberler kısmında kısmen tanıtımının yapıldığı AMOS Professional nihayet ülkemize geldi. Daha önceki versiyonlardan görünüm olarak oldukça farklı olmasına rağmen, onlarla tamamen uyumlu bir versiyon. Ekranın üst kısmında bulunan ve mouse veya karmaşık tuş kombinasyonlarıyla ulaşılan menüler, yerini Pull Down menülere bırakmış. Editör ekranındaki renk sayısı da 8'e çıkartılmış (ancak editör biraz yavaşlamış). Birçok konuda yeni komutlar eklenmiş (Anim formatında animasyon gösterebilme, printer'dan ekran dökümü alabilme, Sound/Noise-Tracker modüllerini doğrudan kullanabilme, Arexx desteği vb). Direkt mod çıktılarını, direkt mod penceresinden alabiliyorsunuz. Bu ve bunun gibi birçok konuda yenilikler getirmiş. Şu anki en büyük eksikliği, Compiler ve 3D extensiyonlarıyla uyumsuz olması. Bunun da zamanda giderileceği belirtilmiş. Altı disketlik bu yeni AMOS versiyonunun geniş açıklamasını, önümüzdeki aylardaki sayımızda bulabilirsiniz. Bu ay yine bazı AMOS programlarımız var. Ama önce okur mektupları. Köşemizin okurlarından Çağatay ÜDEĞER, SoundTracker programında kullanılan efektleri (sample) AMOS'ta kullanamadığını belirtmiş. Çağatay, bu efektleri kullanabilmen için önünde iki seçenek var: Bunlardan ilki ve daha basit olanı, SAMPLE BANK MAKE.AMOS programı ile, bu efektleri AMOS'un kullandığı formata dönüştürmek. Bu formattaki efekt (sample)'leri, Load komutu ile yükleyip Sam Play komutu ile kolayca kullanabilirsin. Diğer yöntem ise biraz daha karışık. Önce chip memory'de, efekt uzunluğunda bir bank açıp, Bload komutu ile bu banka efekti (sample) yükle. Bundan sonra, Sam Raw komutu ile bankın başladığı adresi ve efektin (bankın) uzunluğunu vererek efektini çaldırabilirsin. Bankın hafızada başladığı adresi Start(), uzunluğunu da Length() fonksiyonu ile öğrenebilirsin. Gördüğün
Çağatay'ın bir diğer sorunu ise, ekrandaki Bob sayısı arttıkça hareketlerde kesiklik olması yani akıcılığın kaybolması. Bu sorunu ekonomik olarak halledebilirsin. Yani ekrandaki renk sayısını mümkün olduğunca az tutmaya çalış. Ticari oyunların çoğundaki (Beast, Agony vb) objelerde maximum 8 renk kullanılmıştır. Ayrıca, arkaplanda herhangi bir resim yoksa, bobların zemini hareket etmelerini sağla. Bu işlemi Set Bob komutu ile yapabilirsin. Bu komutun ikinci parametresini 1 yaparsan, ilgili bob, zemini silerek hareket eder. Ancak bu işlemi, bobu ekrana çıkarmadan yapmalısın. Eğer, bir arkaplan resmi varsa da kısmen bu yöntemden yararlanabilirsin. Dual Playfield modunu açarak arkaplan resmini, arkadaki ekranda, bobları da üstteki ekranda çıkarırsan, boblar üstteki ekranı sildikleri halde, arkada ekranda bulunan resim bundan etkilenmez. Bu yöntemin dezavantajı ise, her iki ekranda en fazla 8'er renk sınırlaması bulunması (Low-res'de). Bir diğer çözüm sprite'ların maksimum ölçüde kullanılmasıdır. Birçok ticari oyunda sprite'lar mümkün olduğunca çok kullanılmıştır. (Örneğin Battle Squadron'da scoreboard, nova misil göstergeçleri, tüm mermiler ve uzay gemileri tamamen sprite'tır.). Bitmap Brothers gibi bazı programcılar ise sprite kullanmamakta hala diretmektedirler. Çağatay ayrıca, yaptığı hesap makinesi programında, ondalık sayı kullanımında sorunlarla karşılaşmış. AMOS'ta ondalık sayıların problem sebebi olduğu bir gerçek. Gerçekten de bazen 0.01 gibi bir sayıyı 0.0099 olarak gösterebiliyor. Ancak bu problemin AMOS Professional'da giderildiğini ümit ediyorum. Ayrıca, normalde 7 haneden daha fazla ondalık basamak kullanılamaması problemi, AMOS Professional'da çözülmüş. AMOS Pro'da bulunan Set Double Precision komutu yardımıyla 15'e kadar ondalık basamak kullanabilirsin. Bir diğer sorusu da fast memory'yi bob, sprite ve müzik datalarında kullanıp kullanamayacağı. Ne yazık ki, bu dataları doğrudan fast memory'de kullanamazsın. Ancak, bir Ram Disk açıp dataları önce buraya kopyalayıp, gerektiğinde de buradan çok hızlı bir şekilde yükleyebilirsin.
Mektubunun sonunda da, AMOS ile yaptığı bir programı pazarlama imkanının bulunup bulunmadığını sormuş. Eğer programın güzelse çeşitli firmalarla irtibat kurup programını onlara göster. Program beğenilirse, pazarlama şansı düşük de olsa var. Bir diğer mektup da, Güçlü TUGAY'dan. Güçlü, mektubuyla birlikte bir de program göndermiş. Adres ve program arşivi yapmaya yarayan bu program, dizayn olarak oldukça güzel olmuş. Diğer okuyucularımızdan da böyle programlar bekliyoruz. Güçlü, programı hakkında görüşlerimizi belirtmemizi istemiş. Bunları şöyle sıralayabiliriz: * Programının bazı yerlerinde kullandığın Paint komutlarını Cls ile değiştirirsen, daha hızlı çalıştığını görürsün. * Goto komutlarından mümkün olduğunca sakınmaya, hatta hiç kullanmamaya çalış. * Disk ulaşımı gerektiren programlarda, en fazla 8 renkli Hires ekran kullan. DMA problemlerinden dolayı disk hızı biraz düşmekte. * Disketten yüklenecek olan ekranları Spack komutu ile sıkıştırarak, programın bir parçası haline getir. Programın bu halini sakladığında, bu banklar da saklanacaktır. Yükleme komutlarını (Load Iff) de Unpack komutu ile değiştirdiğinde, programın tek parça haline gelecektir (Ancak uzunluğu da artacaktır.). Kısaca prosedürler hakkında bilgi vermeye çalışalım.
Prosedürler, AMOS ile programlamanın en iyi yönlerinden biridir. İlk olarak Pascal vb. dillerde ortaya çıkan bu kavram, Basic'in gelişmesiyle birlikte yeni çıkan Basic'lerde de görülmeye başladı. Modüler programlamanın temellerinden biri olan bu kavram, programların, yapılan işlemlerin daha küçük alt programlara bölünmesini, bu alt programlarda yapılan işlemlerin de gerekiyorsa, daha başka prosedürlere bölünerek programın netleşmesini ve her bir bölümün, mümkünse tek bir işlemi yerine getirmesi esasına dayanıyor. Bu sayede, programda meydana gelen bir hatanın, programın neresinden kaynaklandığı (genellikle) kolayca anlaşılabiliyor. Ayrıca programlarınızda sık kullandığınız rutinleri, prosedürler halinde diğer programlarınıza doğrudan ekleyerek, bir kez daha yazma zahmetinden kurtulabilirsiniz. Prosedürlerin bir diğer yararı da, F9 (Fold/Unfold) tuşuyla, tüm satırlarının editörde görülmesinin engellenebilmesi. Hazırladığınız bir prosedürün üzerinde iken F9 tuşuna bastığınızda, programınız önce test edilir ve bir hata yoksa, prosedürün sadece ilk (Procedure komutu ile başlayan) satırı editörde kalır. Gerektiğinde, bu satır üzerinde iken tekrar F9 tuşuna bastığınızda, yeniden görünür hale getirebilirsiniz. Bu yöntemin (Fold) yararı, düzgün çalışan bir prosedürü kapatarak, dikkatinizi başka bir noktada daha kolay yoğunlaştırabilmeniz. Ayrıca, program listesinde başından sonuna kadar gitmek için harcayacağınız çaba azalır. Prosedürler ve modüler programlama ile ilgili daha geniş bilgiyi de bir başka sayıda ele alacağız.
Bu ay da birkaç AMOS programımız var. Bunlardan ilki olan "SINIRSIZ BOB DEMO" isimli program, bazı demolarda bulunan ve bob iddiasıyla ortaya atılan, ancak gerçekte animasyondan başka şey olmayan bir efekt içeriyor. 512KB sahiplerinin, bu programı yazmadan önce, menüden “Set Text Buffer” seçeneğini seçerek text belleğini 4000'e indirmeleri gerekiyor. Aksi takdirde, hafıza yetmediğinden program çalışamıyor. Programı çalıştırdığınızda, AMOS disketinden bazı library rutinlerini yüklemek isteyecektir (Sin() ve Cos() fonksiyonlarından dolayı). İkinci programımız (daha doğrusu prosedürümüz), BASİT ANALYZER ismini taşıyor ve çalan müziğe göre kanalların durumlarını gösteriyor. Bu prosedürü kolaylıkla programlarınıza ekleyebilirsiniz. Ancak etkisini görebilmeniz için, AMOS formatında bir müzik yüklemeniz gerekiyor. Bu program, hem AMAL, hem de Rainbow komutlarına örnek teşkil ediyor. Üçüncü programımız ise sprite'lar ile yapılmış bir volume analyzer programı. İkinci programımızda olduğu gibi bunda da, AMOS formatında bir müzik yüklemelisiniz. Dördüncü programımız (prosedür) olan YAZI KAYDIRMA #1, bir kaydırma rutininden çok, ekrana yazı getirme rutini. İncelediğinizde oldukça basit olduğunu göreceksiniz. Son programımız olan YAZI KAYDIRMA ise, Data'larda bulunan metni, ekranı yukarıya doğru kaydırarak gösteriyor. Son data elemanının "*SON*" olması gerekmekte.
* PUL
Bu ayki köşemizi de, daha önceki aylarda yaptığımız çağrımızı yineleyerek sonlandırıyoruz: AMOS'la yaptığınız programları ve prosedürleri (* Posta pulu) gönderin ve bir AMOS program kütüphanesi oluşturalım ve herkes bundan faydalansın.
1993'ün Ocak ayında, yeni bir AMOS köşesinde karşınızda olmak dileğiyle...
ak ak * * İba AMOS (C) 1990 * tik: Europress Software, Ltd. vk
* * DEMO * *. * *
BASLA
DESEN)| 152,120,132,0.02)
DESEN|152,120,1320,0.2)
FINAL
Procedure BASLA
Close Editor
Close Workbench
Set Sprite Buffer 18
Hide
For Az0 To 7
Screen Open A,320,256,4,Lowres
Curs Off : Cls O : Flash Off
Palette
Next
R>8
For To 2
Ink 3-A
Circle R,R,(R/2-A)*2
Paint R,R
Next
Get Bob 1,0,0 To R*242,R*242
Cis 0
End Proc
TONO DESIA ACIYOESà
For A#—0 To F Step S#
Add FL,1,0 To 3
If
Add S,1,0 To 7
Screen To Front S
Wait Vbi
End If
Screen SCR
Add SCR,1,0 To 7
Paste Bob X,Y,1
R#—R#40.03
Next
End Proc
Procedure FINAL
RX#-156 : RY#—4
IX#-0.02 : IY#-0,015
Do
For To 155.5 Step 0.02
Screen To Front SCR
Wait Vbl
Screen SCR
Add SCR,1,0 To 7
Paste Bob X,Y,1
Next
: İY#—-IY#
Loop
End Proc
AMOS (C) 1990
Europress Software, Ltd.
BASİT ANALYZER
DEMO
Procedure DEMO
Screen Close 0
Led Off
SONG$-Fsel$(
yiniz")
If
MÜzik Yükle-
Then Edit
Load SONG$
Music 1
ANALYZER| 160,4,2)
Wait 200
ANALYZER| 100,32,2
Wait 200
ANALYZER| 160,2,4)
Wait 200
ANALYZER)| 100,16,32)
Wait 200
ANALYZER| 144,8,8)
Wait Key
For A-63 To 0 Step -1
Volume A
Wait 2
Next
Erase 3
Rainbow Del
End Proc
Procedure ANALYZER| Y,H,S)
Pause;"
; Jump
For A=0 To 3
Rainbow
Channel A To Rainbow A
Amal
Next
Amal On
End Proc
AMOS (C) 1990 * ** Europress Software, Ltd.
ANALYZER #2
INIT
MAIN
Procedure MAIN
SONG
If SONG
Load SONG$
Music |
DISPLAY SPRITES
Wait Key
End Proc
Then Pop Proc
For Az0 To 3
Channel A To Sprite A*2-4-8
Amal
IfA>I Then K-159
A*248,1534A*324K,129,
Sprite
16
Amal On
Procedure INIT
Close Workbench
Kil itor
IMAGES
Hide On
Screen Open 0,320,80,2,Lowres
Curs Off
Screen Display 0,,88442,,
For A-0 To 15
Colour A416,A*273
Next
End Proc
Procedure İMAGES
Screen Open 0,320,256,16,Lowres
Curs Off : Cls 0
Screen Hide
For A-0 To 15
Ink A: Draw 0,A To 15,A
Next
Get Bob 17,0,0 To 16,16
For A-0 To 14
15-A,0,164A*4 To 16,204
Next
Get Bob 1,0,0 To 16,80
Cis 0
For A-I To 15
Paste Bob 0,A*4,1
Get Bob A*41,0,0 To 16,80
Cls 0,0,0 To 16,200
Next
End Proc
*
ter AMOS (C) 1990 *
yak Europress Software, Ltd. *
ik *
YAZI KAYDIRMA #1
vik *
Hide
Screen Open 0,320,256,4,Lowres
Curs Off : Flash Off : Cls 0
Palette 0,$F00,$FO,$48F
Do
For To 210 Step 10
RENK-Rnd(2)41
YAZI$-"COMMODORE AMIGA"
Next
Loop
Procedure YAZIY,RENK,HIZ,YAZI$|
Ink RENK,0
SWzScreen Width
Def Scroll 1,0,Y To SW,Y--8,-HIZ,0
For A-1 To Len(YAZI$)
Text SW-8,Y46,Mid$(YAZI$,A,1)
For To 8/HIZ
Scroll 1
Wait Vbl
Next
Next
End Proc
İyi AMOS (C) 1990
* Europress Software, Ltd. *
* *
Hik YAZI KAYDIRMA #2
* *
Hide
Screen Open 0,640,256,2,Hires
Curs Off
Double Buffer
Autoback 1
Palette 0,0
A$i(8,1,15)(8,-1,15)*
Set Rainbow 0,1,256,A$,A$,A$
Rainbow 0,0,43,254
S2-Logic
Do
Read A$
If A$-"*SON*"
Restore
Read A$
End If
Centre At(,30)4A$
For A-z1 To 8
Sereen Copy S1,0,8,640,249 To
S2,0,7
Screen Swap
Wait Vbi
Next
Loop
Data String$("-",60)
Data
Data" 'DÜŞEY EKSENDE"
Data "YAZI KAYDIRMA RUTİNİ"
Data ""
Data "ARALIK / 1992"
Data "En kısa zamanda"
Data String$("-",19)
Data "AMOS PROFESSİONAL"
Data String$("
Data" “kullanmaya başlayınız"
Data "",
Data "*SON*"