Bu sayfadaki yazılar
Sayfanın metni
Sayfa 31
Merhaba; işte yine güzel geçen bir yaz tatili bitti. Kış da geldi sayılır. Eh, 30. sayıya da ulaştığımıza göre artık Assembler öğrenmiş sayabiliriz kendimizi. Fakat hala çok pratik yapmamız lazım. Bu yüzden de bu köşeyi artık sırf ilgi çeken enteresan source'lara ayırmak istiyorum. Gelişmiş Assembler köşesini de kaldırdım ve bu köşeyle birleştirdim. Daha önceki sayılarda belirtmiş olduğum tüm kitaplardan faydalanarak vermiş olduğum tüm source'ları gayet rahat anlayabilirsiniz. Bu kitaplardaki bilgileri tekrar burada yazmayacağım. Aşağıda gerekli kitapların listesini bir defa daha bulabilirsiniz: * Amiga Hardware Reference Manual * Amiga ROM Kernel Reference Manuals: - Includes and AutoDocs - Libraries and Devices - Exec * Mapping the Amiga * Inside Disk-drives * Inside the Amiga Her ay bir ya da iki source vermeye çalışacağım. Bunlardan biri demo ağırlıklı olacak; ikincisi sistem rutinlerini DOĞRU olarak kullanan ufak utility programları olacak. Zaman zaman da, benim ilgimi çeken bir source vermeyi düşünüyorum. Bu source'lardan bazıları datalara ihtiyaç duyacaklar. Bu dataları data satırları olarak yayınlamaya kalkışırsam bütün dergiyi kaplayacağından ve kimsenin bunları girmeye kalkışmayacağından aynen dergiden şutlanırım. Bu yüzden data file gereken source'ların datalarını ve source'ların kendilerini direkt benden temin edebilirsiniz. Bunun için boş bir disketi 1000 TL'lik posta puluyla beraber aşağıdaki adrese gönderin. Çekeceğim diskette şimdiye kadar yayınlanmış tüm source'ları doğru olarak bulabilirsiniz. İşte adresim: Cem GENCER, PK 46, 81110 Bostancı-İstanbul. Gelelim ilk rutinimize; bu herkesin yakından tanıdığı 3 boyutlu gibi gözüken bir yıldız rutini. Birçok demo ve intro'da da arka fon olarak karşımıza çıktı. İkinci source'umuz gayet kısa; yaklaşık 50 satır.
Bu source'u eski Almanca dergilerimi karıştırırken buldum. Disk driver'ınızın motorunu değişik şekillerde ve hızlarda hareket ettirerek müzik çalıyor. Disket sürücüsüne hiçbir zararı yok. Sadece programı çalıştıracağınız zaman disket sürücüsüne ya bozuk (çizilmiş) bir disket takın ya da hiç disket takmayın. Programı biraz kurcalarsanız, sizin istediğiniz bir melodiyi de ekleyebilirsiniz. Şimdilik bu kadar; hoşçakalın ...
3D YILDIZ RUTİNİ
; Written by Cem GENCER dg movem.l d0-d7/a0-a6,-(sp) bsr.S ClearBitplanes move.l 4,26 jsr -132(a6) lea $Aff000,a6 lea CopList(pe),a0 move.l a0,$80(a6) clr.w $88(a6) move.w — #$20,$96(a6) bsr.S PrepareStarMovement MainLoop cmp.b bne MainLoop bsr.S MoveStars btst #6,$bfe00O1 bne.S MainLoop move.l 4,a5 move.l 156(a5),A1 move.l 38(A1),$80(a6) move.w — #$8020,$96(a6) move.l jsr -138(a6) Mmovem.l (sp)t,d0-d7/a0-a6 rts ClearBitPlanes lea BitPlane,a0 move.w — #$5dbf,d0 ClearLoop cir.b (a0)4 dbf d0,Clearloop rts PrepareStarMovement move.w — #$a00,d6 move.l #$fEfOOO,mmd1 lea . PosControl(pec),a2 lea Retter,al
PrepareLoop bsr.L move.l move.l sub.w bne.S lea rts
MoveStars move.w MoveLoop move.l move.l belr belir belr GoOn bsr.L bsr.L move.l move.l move.l bec.S bset NotSetl İsr.w bec.S bset NotSet2 İsr.w bec.S bset NotSet3 sub.w bne.S Tts
RestoreAdder lea add.l add.l move.l move.l Loopl move.l Loop2 cir.b cir.b çlr.b dbra move.l Loop3 sub.l cir.b cir.b
GetANewStar #BitPlane,(a1,d6.W) #6,4(a1,d6.W) #820,d6 PrepareLoop CMPundColor(pe),a4
#$a00,d6
O(a1,d6.W),a0 4(a1,d6.W),d0 d0,$1f40(a0) d0,$3e80(a0) DoMove ComputeAddress a0,0(a1,d6.W) d0,4(a1,d6.W) 8(a2,d6.W),d4 #1,d4 NotSetl d0,(a0)
NotSet2 d0,$1f40(a0)
NotSet3 d0,$3e80(a0)
#$20,d6 MoveLoop
BitPlane,a0 #$1f40/2,a0 #20,a0 #78,d0
di,d2
-(a0) $1£40(a0) $1f40*2(a0) d2,Loop2 di,d2
#40,20 (20) $1f40(a0) $1f40*2(a0)
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 30
C$-Mid$(B$,K,1) SCzScreen Colour-2 Hf H>-1 VERİ-X(H,Y,X) If VERİ<>0O mod SC)41 If CM-0 R-Rnd(SC)41 End If If RENK<>FR R-RENK End 1f Plot C,D,R Else Plot C,D,FR End If End If End Proc
Procedure HARF GIRISIX,Y,C,M,ER, AS-"ABCDEFGHUKLMNO-PORS- AS-AS+ [V"&_7_0123456789"
CM,RENK| TU- VWXYZ" B-X
' 0123456789 "
$) B$-İ Mid$(C$, Instr(D$,B$),1) Exit End 1f
B$-Upper$(B$) S-Scancode Exit If InstrÇA$,B$)>0 or or
Sz65 and X>B Dec X : ENTRY$-Left$(ENTRY$,Len (ENTRY$)-1) PRG|X,Y,M,B$,FR,CM,RENK | End If If Len(ENTRY$)<C41 If S<>65 and S<>68 | ENTRY$-ENTRY$4B$ Inc X End If End 1f Exit If S-68 or C>X-B
Loop End ProcJENTRY$)|
Procedure PRG|XE,YE,M,B$,FR,CM,
RENK| Shared X(),K,X,Y UzLen(B$) or For To U : To 7 : For To7 If and(X mod 3)-0 End If
If F-Y:G-X Swap X,Y End If CIZIM|XE, YE,B$,CM,R,FR,RENK|
X-G : End If Next Next Next End 1f If M>2 or For To7 : İnc R : For X-0 To 7
If CM>2 : İnc R : End If If M->3
F-Y:G->X Swap X,Y End If For K-1 To U I£ CMX3 and(K mod 3)-0 End 1f
CIZIM|XE,YE,B$,CM,R,FR,RENK | Next If M->3 X-G : End If Next Next End 1f End Proc