AMOS Pro
Retro bilgisayarMerhaba! Amos Pro Eylül ayında yine karşınızda. Geçen sayı başladığımız programa bu ay devam ediyoruz. Hatırlarsanız program IFF resimler üzerinde efektler yapacaktı. Hâlâ sizden fikir ve rutin bekliyorum. Yazımın sonunda geçen aydan bu yana program üzerinde yaptığım değişiklikleri bulacaksınız. Bazı procedure'ler değişti. Yeni bazı procedure'ler ekledim. Programın girişi ve değişkenleri yenilendi ve sanırım daha sağlam oldu. Programla ilgili daha fazla detaya girmeden önce Kerim ACAR'ın mektubunu cevaplamak istiyorum. İlk olarak şunu belirteyim, yazdığınız mektuplar bazen elimize geçmiyor ya da çok geç ulaşıyor. Bu yüzden mektup yazdığınız halde cevap alamazsanız bize kırılmayın. Çünkü elimize geçen her mektubu mutlaka okuyup cevaplandırıyoruz. Kerim de bana 2. sayıdan itibaren mektup yazdığını ama cevap alamadığını, bu yüzden kırgın olduğunu yazmış. Bu elime geçen ilk Kerim ACAR mektubudur. Sanırım PTT'nin gazabına uğradın Kerim, üzgünüm. Evet şimdi Kerim'in sorunları. Önce neden yazdığın programları Amos diskine kaydediyorsun anlayamadım. Sanırım Amos diski yerine, taktığın herhangi bir diski nasıl tanıtacağını bilmiyorsun. Eğer Amos 1.35 veya daha düşük bir versiyon kullanıyorsan disk işlemleri sırasında ekrana bir window çıkıyor (File Requester). Bu window'un sol üst köşesindeki daireye mouse'un sağ tuşuyla bas. Window'da Device'lar listelenecektir. Amos diskini çıkartıp yerine istediğin bir diski tak ve Df0:'ı seç. Artık bu diske programlarını saklayabilirsin. Eğer Amos Pro kullanıyorsan zaten File Requester window'unda Devices butonu var. Aynı işlemi bu buton sayesinde yapabilirsin. Eski programlarını Amos diskinden başka bir diske almak içinde Disk Master gibi bir program kullan. Dergi kapağına gelince. Kapakları beğendiğin için teşekkürler. Bence de kapaklarımız mükemmel, zaten bizim dergi mükemmel, biz mükemmel insanlarız. Ama açıkçası bu derginin en mükemmel yanı ben ve Amos Pro. Neyse bunları zaten sen ve tüm dünya biliyor. Soruna gelince kapaklarımız Imagine temel olmak üzere birçok programın yardımıyla hazırlanmakta. DPaint'ten Vista Pro'ya kadar pek çok program. Kullanılan makine ise hızlandırılmış bir Amiga 2000. Hafıza ise 9 Mbyte. Yaptığın programları diske atıp ilk olarak onun çalışmasını istiyorsan, diskine bir S directory'si aç ve Startup-Sequence dosyasının ilk satırına programının ismini yaz. RSDM ile ilgili soruna ise bir cevap veremeyeceğim çünkü şimdiye kadar hiç kullanmadım. Ve son soru. Üniversite mezunuyum. Evli değilim. Hiç çocuğum yok. Demokrasi'ye inanırım. 72 İstanbul doğumluyum. Şu anda herhangi bir kamu kuruluşunda çalışmıyorum. Alo Amiga yazarından daha uzun boyum ve saçım var. Ondan daha yakışıklıyım, daha fazla kitap okudum ve daha güçlü dişlerim var. Hepsi bu. Evet şimdi yeniden programa dönüyoruz. Geçen ay yayınlanan versiyon ekrandan daha geniş resimler yüklediğinde sadece ekran boyundaki bölümünü gösterebiliyordu. Bu ay bu sorunu hallettim. Ok tuşları yardımıyla ekranı kaydırabiliyorsunuz. Sol Amiga ve ok tuşları hızlı kaymaya, Sağ Amiga ve ok tuşları ise bir ekranlık atlama yapmaya yarıyor. Sadece ok tuşlarının kullanımıyla ise ekranı birer piksel kaydırırsınız.
Programın son üç procedure'ü ise henüz programa eklenmeyen ekran efektleri. Gelecek aya hazırlık.
Program içindeki yeni procedure'lerden en fazla yabancılık çekebileceğiniz procedure sanırım SCRES. Procedure aktif ekranın çözünürlük modunu (Lowres, Hires, Lowres Lace, Hires Lace) öğrenmek için kullanılıyor. Bunun için kullanılan yöntem ise şöyle;
Screen Base komutuyla Screen Structure'ının adresi öğrenilir. Bu structure içinde ekran modu, renk adedi, çözünürlük, ekran display değerleri yer almaktadır. Deek komutuyla bu adresteki değerler alınır ve Btst komutuyla bu adres içindeki belirli bitler kontrol edilir. Bu bitleri sanırım rutin içinden çıkarabilirsiniz. Program içindeki ScreenRes$ değişkeni yüklediğiniz ekranın modunu içinde tutar. Lace değişkeni de ekran Lace ise 1 değilse 0 değerini alır. Program içinde şimdiye kadar kullanmadığım diğer bir komutsa Key Shift. Komutun kullanımını program içinden öğrenebilirsiniz. Komutun görevi, Shift, Alt, Amiga ve Ctrl tuşlarından herhangi birine basılıp basılmadığını kontrol etmek.
Evet bu ay bu kadar, Gelecek ay görüşmek üzere.
TOLGA KAHRAMAN
Efekt 1.00
'k Tolga Kahraman Amiga Dergisi
1993 *
Dim IKONT(10,2),IKONB(10,2), (10)
Dim IKONCOL(10)
Global CRTL, LAMIGA, RAMIGA
Global UARROW, LARRONW, RARROW
Global AXIŞAX2,AYİ,AY2,FILEŞ,IKONT(),
İKONB(),1KONTEXŞ ()
IKÖNCOL () , İKONSAY, SCROFFX, e
SCROFFY,
Global XDISP,YDISP
Global
Degiskenler
Uarrow,Darrow
Rarrow
lamiga,ramigğa
Yön tuşları
Alansec procedure'den
geri dönen değerler
kullanıcının resim
üzerinde seçtiği
alanın koordinatları
File$ş Seçilen resim dosyasının ismi
IkonT();IkonBi) Ikon dataları
IkonSay Toplam ikon sayısı
Sereen'e ait offsetler
SerRes$ Sereen resolution
Lace 1 Laced, 0 Nonlaced
Ydisp,XDisp Ekranin display edilen alanı
MAİN
Procedure MAIN
MAİN LOOP *
Limit Mouse 128,243 To 448,308
Do
PRESKEY-Asc(Inkey$)
RAWKEYS-Key Shift
İf Mouse Keysi
Sereen(X Mouse)
MY-Y Secreen(Y Mouse)
BASILAN—-0I
For K-İ To IKONSAY
NOT: Program dökümünde kullanılan « işaret, sütunlarımızın darlığı yüzünden kesilen satırları göstermektedir. Lütfen bu karakterin bulunduğu satırlarda return veya enter'a basmadan altındaki satırı yazmaya devam edin.
If MX>-IKONT(K,1) and MY>-İKONT(K,2)
If MX<-—IKONBİK,1) and MY<-IKONB(K,2)
Exit
End If
End If
Next
If BASILAN>O
SHADEBOX(IKONT(K,1),IKONT(K,2),
IKONB(K,1),IKONBİK,2);,;False,
(K), IKONCOL (K) |
İf BASILAN-2
Limit Mouse
LODIFF
Limit Mouse 128,243 To 448,308
Sereen To Front O
Sereen Ü
'©
İKONB(K, 1) , IKONB(K,2),True,
IKONTEXŞ (K) , IKONCOL (K) |
End If
İf BASILAN-3
Limit Mouse
SAVIFF
Limit Mouse 128,243 To 448,308
Sereen To Front 0
Sereen O
IKONB(K,İ),1IKONBİ(İK,2),True, ie
IKONTEX$ (K) , IKONCOL (K) |
End If
İf BASILAN-7
Fade 5
Exit
End If
End If
End If
:
If
ARX—A :
End If
If RAWKEYS-RAMIGA
ARX—XDISP ;: ARY-YDISP
End If
If PRESKEY-UARROW
Add SCROFFY,-ARY
If SCROFEFY>O
Sereen Offset 4, SCROFFX, SCROFFY
Else
SCROFFY-0O
Screen Offset 4,SCROFFX, SCROFFY
End 1f
End If
If PRESKEY-DARROW
Add SCROFEFY,ARY
If SCROFFY<Screen Height (4) -YDISP
Screen Offset 4,SCROFFX, SCROFFY
Else
SCROFFY-Screen Height (4) -YDISP
Screen Offset 4,SCROFFX, SCROFFY
End If
End If
If PRESKEY-LARROW
Add SCROFFX, -ARX
If SCROFFX>O
Seteen Offset 4,SCROFFX,
Else
SCROFFX-0
Sereen Offset
End If
End If
If PRESKEY-RARRONW
Add SCROFFX,ARX
If SCROFFX<Screen Width (4) -XDİSP
Screen Offset 4,SCROFFX, SCROFEY
Else
SCROFFX-—Screen Width (4) -XDISP
Sereen Offset 4,SCROFFX, SCROFFY
End If
End If
Loop
End Proc
Procedure INITPROG
fik PROGRAM HAZIRLIKLARI
LARROW—29
UARRONW-30
DARROW—3İ
RAMIGA-I128
Degree
Screen Open 0,640,70,16,Hires
Screen Display 0,,244,,
Palette $0,$BA9,$310,$FED,SE,$505,Ş$AĞA,
Öl Or Or O; Oy O, O; $ŞEFE
Curs Off
Flash Off
Ink 1
Paint 0,0
Ink 3
Set Text 6
Text 5,60,"Efekt 1.00 Amiga Dergisi 1993"
Set Text 0
INITIKON
BASIKON
End Proc
Procedure ALANSEC
İFF EKRANINDA BOLGE SECER K
Change Mouse 2
Gr Writing 2
B-0
Repeat
(Inkey$)
RAWKEYS-Key Shift
If Moüse Key-l
AXİ—X Screen(X Mouse)
AYİ-Y Screen(Y Moüse)
AX2-AXI
AY2-AYI
While Moüse Key-l
Box AXI,AYI To AX2,AY2
Screen(X Mouse)
AY2-Y Screen(Y Mouse)
Box AXI,AYİI To AX2,AY2
Wend
Box AXİ,AYI To AX2,AY2
GRABBED-Trüe
If AXİI>AX2
: AX2-T
End If
If AYIDAY2 : T—AYI : AYİ-AY2 : AY2-T : End If
End If
ARX—İ : ARY-İ
If RAWKEYS—LAMIGA
ARX—A :
End If
If
ARX-—XDISP : ARY-YDISP
End If
If
Add SCROFEY,-ARY
İf SCROFFY>O
Screen Offset 4,SCROFFX, SCROFFY
Else
SCROFFY-0
Sereen Offset â4,SÜROFFX,SCROFFY
End if
End If
İf PRESKEY-DARROW
Add SCROFEFY,ARY
İf SCROFFY<Screen Height (4) -YDISP
Screen Offset 4,SCROFFX,SCROFEY
Else
SCROFFY-Screen Height (4) -YDISP
Screen Offset 4,SCROFFX,SCROFEY
End
End If
İf PRESKEY-LARROW
Add SCROFFX, -ARX
If SCROFEFX>O
Screen Offset 4, SCROFFX, SCROFE'Y
Else
SCROFFX-0
Screen Offset 4;,SCROFFX, SCROFFY
End If
End İf
If PRESKEY-RARROW
Add SOROFFX,ARX
If SCROFEX<Screen Width(4)-XDISP
Screen Offset 4,SCROFFX, SCROFFY
Else
SCROFFX-—Screen -XDISP
Sereen Offset 4,SCROFFX,SCROFF'Y
End If
End If
Üntil GRABBED
Plot AXİ,AYI
Ge Writing |
Change Mouse |
End Proc
Procedure LODIFF
RESIM YUKLER
resim secin")
İf
Pop Proc
End If
Load If£f FILEŞ,4
Screen Hide 4
SCRES
XDISP-Screen Width(4)
YDISP-Screen Height (4)
I£((SCRRES$-"Lowres") or (SCRRES$—-"Ham"))
and Sereen >320
XDISP-320
Screen Display 4,;,r320,
End If
If SCRRES$-"Hires" and Sereen Width(4)>640
XDISP-640
Sereen Display 4,,;r640,
End If
İf
If Screen Height (4) >256
YDISP-256
Screen Display
End If
Else
İf Screen Height (4)>512
YDIİSP-512
Sereen Display 4,»rr 912
End İf
End If
SCROFFX-0
SCROFFY-O0O
Screen Show 4
End Proc
Procedure SCRES
vok SCREEN RESOLUTİON BULUNUR Ki
A-Screen Baset72
M-Deek (A)
if Btst (15,M)
SCRRES$-"Hires"
Else
İf
SCRRES$-"Ham"
Else
SCRRES$-"Lowres"
End İf
End If
İf
LACE-—İ
Else
End If
End Proc
Procedure RULO(KAL|
KAL—I13
Fort K-l To 256
For Z—K Tö KtKAL
Screen Copy To
Inc M
Next
Screen Copy 1,0,K,320,Kt1 To 0,0,K
Wait Vbl
Next
End Proc
Procedure FLOOD
Unpack 5 To 0
Screen Open 1,320,256, 32,Lowres
Cürs Off
Flash Off
cls O
Get Palette 0
For K-0 To 256
For L—K To Kt45
Screen Copy” To 1,0,L
Next
Next
End Proc
Procedure
: A-0
Cls ©
For K-9 To 230
For To Ktd5 Step 9
Z—Sin(A)*30
Screen Copy 0,0,K,320,Ktl1 To 1,Z,L
Add A,R
If A>180 Then
If A<0 Then R-İ
Next
Sereen Copy To 1,0,K
Next
End Proc