Bootblock
Retro bilgisayarMerhaba 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