Amiga Dergisi sayı 4, sayfa 41

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 41

Merhaba arkadaşlar. Bildiğiniz gibi geçen ay normalde boot'tan yapamayacağımız bir şeyi yapıp Cli ekranının büyük ve kendi istediğimiz başlıkla açılmasını sağlamıştık. Bu ayki programımızın buna ek olarak bir fonksiyonu daha var bu da disket üzerindeki System Configuration ne olursa olsun sizin istediğiniz bir system configuration ile ekranı açmak. Bunun yararı nedir? Her şeyden önce bu şekilde bir disketi install ettiğinizde disket bomboş bile olsa Cli açıldığında size özel bir system configuration çıkar. Ayrıca bu yöntemle 232 byte kadar yerden ve yaklaşık 1sn kadar bir zamandan da tasarruf etmiş oluruz. Daha önce de söylediğim gibi bu program bir önceki sayıdaki programı da içermekte, bu yüzden eğer o programı yazdıysanız üzerinde küçük değişiklikler yaparak bu programa dönüştürebilirsiniz. Yapmanız gereken ilk şey 'Down' isimli labeldan sonra gelen kısmı aynen yazmak. Bunu yaptıktan sonra 'Exc' isimli label ile başlayan rutinin sonuna 'Bra Down' diye bir komut koymak. Bu arada 'incbin' diye başlayan satırı yazmayı da unutmayın sakın. Gelelim programın açıklamasına. Programın ilk kısmı, geçen ay da açıkladığım gibi boot olayı sırasında kendini Open Window komutunun içine yerleştiriyor ve Dos'a çıkıyor. Dos gerekli işlemlerini yaptıktan sonra (Dos resident'i açıp, system configuration dosyasını arayıp bulabilirse yükledikten sonra) Cli ekran ve task'ini açmaya kalkıyor. İşte burada bizim boot, değiştirmiş olduğumuz Open Window komutu sayesinde yeniden devreye giriyor ve Open Window komutunun parametrelerini değiştiriyor. Artık ekran istediğimiz büyüklükte ve başlıkta açılıyor. Bu işi de yaptıktan sonra program daha önceden boot'a yerleştirdiğimiz System Configuration'ı aktif hale getiriyor. Bunu da Set Pref komutu ile gerçekleştiriyor. Burada dikkat edilmesi gereken bir nokta daha var, o da hafızaya yerleştirdiğimiz bu system configuration'un silinmesi. Aslında biz bunu hesaba katarak programı $71000 gibi uzak bir köşeye attık ama yine de bu iş pek sağlam değil. Bu yüzden, programımızın silinmesini engellemek için daha iyi bir önlem bulmamız gerekmekte. Bir çoğunuzun da bildiği gibi Pc'den farklı olarak Amiga multitasking bir alet ve bu multitasking olayının yürüyebilmesi için aynı anda çalışan programların iyi bir koordinasyon içinde olmaları şart. Çalışacak her programın hafızada belli bir yer tutup, bazı işlemler için yine hafızanın kendine ayırdığı bazı bölümlerini kullanacağını göz önüne alırsak her şeyden önce bu programların hafızayı mantıklı bir şekilde paylaşmaları gerekir. Bu en basit şekli ile bir hafıza listesi oluşturularak yapılır. Her yüklenen program kendine bir yer arar, bu yeri bulursa oraya yerleşir ve bunu sisteme belirtir. Daha sonra yapacağı bir işlem için bir miktar hafıza gerektiğinde bunu da sistemden ister, eğer alamazsa o işlemi yapamaz, alabilirse istediği gibi kullanır ve yine sistemi bundan haberdar eder. Böylelikle her program belli sınırlar içinde diğerlerinin alanlarını işgal etmeden makul bir şekilde çalışır. Tabi bu söylediğim uygun programlar, eğer bir programcı yaptığı programda 'burda ne varmış' diye bakmadan $71000'a yerleştiriyorsa sizin multitaskingin devamını sağlamak için yapabileceğiniz hiç bir şey yoktur. Kısa zamanda hızlı bir bootblock anlatımıyla birlikte program örnekleri verdik. Eğer yakından takip edebildiyseniz. Bu temellerin üzerinde sağlam bir bootblock bilgisi oturtabilir ve birçok şey yapabilirsiniz. Bundan sonrası artık biraz da size kalmış. Çünkü genel Amiga bilginizi artırmalı ve işin kaçamak yollarını bulmaya çalışmalısınız. Zira bu tür programlar her zaman garip yollarla hazırlanırlar. İlgi alanınıza giren örnek boot'ları incelemeyi ihmal etmeyin.

Sıra geldi bu ayın örnek programına: BOOT: 'Dos',0 de. $0 del 880 START: BSR.L 60: , AL JSR -$0060(A6)

MOVE L DO, A0 MOVE $0016(A0) ,A0

#$00,DO MAIN: BSR.S TRANS JMP SONRA: BSR.s — BACKUP Res TRANS:

LER DEST, AO LEA AL DONGU: MOVE.L (AL)4, (20)4 DBF D7,DONGU ETS BACKUP MOVE MOVE . L

Tintbase-hoct -$00CA (20) ,

: MOVE (inthasa-boct )#DRST, AT MOVE.L )*DEST,DO JSR (A€) RTS ABA INTUT (PC), Al

;Set Function

JSR (A€) Cpen Library MOVE.L DO, MOVEM.L DO-d7/a0-A6, - (A7) BSR.S — EXC

MOVEM.L MOVE.L (funbace-bocot) *DEST, (A7) MOVE 1. — Win

MOVE $0004.W,AG6 JSR -$OLAA (AE) etFunction A0

#$0100, $0006(A0) — ;Window Y MOVE L #ititel-boot)*DEST, $OOLA(AD) Bra Down FUNBASE: O INTBASE: DC1 O 'intui-

tion.library',$00 DOS: — DC.B "dos library',$00 TİTEL: DC.B "Amiga Dergi- si/Athos',$00 DOM

MOVEM.L DO-d7/a0-A6, - (A7) $04.w,a6 #232.dü

lea IPrefbase-boot) tdest,al Jer — -204(a6) ;Allocate Absolute Move.1 a6

a0 move.1 #$Şe8,do moveg.1 #i,di jer -324 (46)

Set

MOVEM.L (A7)4,D0-d7/a0-A6 Res prefba: incbin 'df0:devs/system- configuration” bik.b 1000,0 KIVILCIN HİNDİSTAN

Klavyeyle gezinmek için ← ve → tuşları.