Bu sayfadaki yazılar
Sayfanın metni
Sayfa 25
Görüldüğü gibi bir application'ı terkedip Desktop'a geri dönmek (64'ünüzü kilitlemeden tabii ki) tek komutla halledilebiliyor. Bu komutu verdiğiniz zaman GEOS bütün işlemlerini keser ve DESKTOP programını yüklemeye başlar. Eğer diskinizde bu programı bulamazsa bir pencere açarak sizden içinde Desktop olan bir disk koymanızı isteyecektir.
Testmenü m.byte 10 .byte 24 .word 0 .word 125 .byte 2 İkinci ekranın menülerinin tanım tablosunu da bura- da yaratıyoruz. Bu tablonun ilk iki byte'ıyla menünün üst ve alt kenarlarının y koordinatını 10 ve 24 olarak ayar- lıyoruz. Sonraki dört byte'la da menünün sol ve sağ ke- narlarını O ile 125 olarak ayarlıyoruz. Son byte'imız olan 2 ise menünün yatay bir menü olduğunu ve 2 elemanı bu- lunduğunu belirtiyor.
Word textil .byte $80 .word altmenül ikinci menü elemanının tanımı
Menümüzün ilk seçeneğini bu byte'larla tanımlıyoruz. 1. ve 2. byte'larda bu elemanın içine yazılacak olan yazının saklandığı adresi belirtiyoruz. 3. byte'la bu seçeneğin bir alt-menüyü açacağını belirtiyoruz. 4. ve 5. byte'lar ise bu eleman seçilirse açılacak alt menünün adresini taşıyor.
textil .text “ana menu 1” .byte 0
.... ikinci elemanın yazı dataları
Ana menünün seçeneklerinin içinde yazılacak olanlar yukarıdaki gibi tablolarda hazırlanır. Her seçeneğin yazısının sonuna $00 byte'ını koyarak yazının bittiğini belirtmeliyiz.
altmenül — .byte 24 .byte 24-4-(8*14) 41 .word 0 .word 80
.byte $80 4 $08
Bir alt menünün tanım tablosu da ana menülerin tanım tablosunun aynısıdır. Yani bu alt menünün üst kenarı 24., alt kenarı 137. y koordinatlarında; sol kenarı 0., sağ kenarı 80. x koordinatlarında bulunuyor ve menümüz sekiz elemanlı bir dikey menü olarak ayarlanıyor.
Gin ADAM
NX he » a ha
AAA YAZ
»N
altltexti .byte 0 .word menülservisi 7 elemanın daha tanımları
Tabii ki alt menünün elemanları da tanımlanmalıdır. Burada her elemanın yazılarının adreslerini veriyoruz. Elemanların bir rutini çağıracağını belirtiyoruz ve bu rutinin adresini ekliyoruz.
altmenü2 — .byte 24 .byte 244 (7*14) 41 70 .Wword 155 .byte $80 -- $40 4 $07 eleman tanımları
Bu menü tanım tablosunu yazmamın tek sebebi dikkatinizi menü tipine çekebilmekti. Gördüğünüz gibi bu yalnızca dikey değil aynı zamanda sınırlandırılmış bir menü. Sınırlandırılmış menünün ne olduğunu görmek için örnek programın 2. ekranında “ana menü 2” seçeneğini seçmeniz yeterlidir.
altltextl — .text “seçenek 1” .byte 0 diğer yazı dataları
Bütün menü elemanlarının yazıları bu tabloyla ayarlanıyor.
menüservisi Jsr GotoFirstMenu Rts
Gördüğünüz gibi alt menü seçenekleri de hiçbir işlem yapmıyorlar ve doğrudan doğruya ilk menüye dönüyorlar. (Bu işlemi yapmanız için GotoFirstMenu rutinine sıçramanız ve RTS ile kontrolü tekrar Kernal'a bırakmanız gereklidir.)
.byte 0,0,0,0
Burada bırakılacak fazladan birkaç sıfır, programını- zın GEOS formatına çevrilmesi sırasında olabilecek bir byte kaybını kapatmak içindir. Mesela yayınlamış oldu- ğumuz GEOS CONVERTER programı, GEOS forma- tına çevirdiği programların son byte'ını çevirdiği prog- rama yazmıyor. Bunu kesinlikle unutmayın. Bu programın MDE çıktısını program döküm eki'nde bulabilirsiniz.
Evet GEOS'çular, bu aylık da bu kadar. Gelecek ay kursumuza “GEOS'ta çizim ve grafik” konusuyla devam edeceğiz. Şimdilik hepiniz hoşça kalın.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 24
tanımlanacak. Dolcons rutini otomatik olarak mouse'u yeni bir koordinatta görünür hale getirdiği için yeni x ve y koordinatları da bu tablonun başında verilmelidir. 2. ve 3. byte'larda x koordinatı, 4. byte'ta ise y koordinatı veriliyor. .word ikon1 .byte 10
3 . .byte 2,16 .word ikonrutini İşte ilk ikonumuzun tanım byte'ları: 1. ve 2. byte'lar 1. ikonun grafik datasının saklandığı bellek alanını gösteriyor (programımızda ikon1 label'ı ile gösterilen adres). 3. byte ise ikonun ekranda görüleceği x koordinatı. Yalnız dikkat etmeniz gereken nokta, bu koordinatın piksel değil byte olarak belirlendiği. Yani piksel koordinatını bulmak için bu sayıyı 8'le çarpmanız gerekir. 4. byte olan 3 ise 1. ikonun y koordinatı (bu sefer piksel olarak). 6. ve 7. byte'larda ise ikonun genişliği (byte olarak) ve uzunluğu (piksel olarak) veriliyor. Yani 1. ikonun asıl boyutları 2*8 = 16'ya 16. Son iki byte'ta ise bu ikon üzerinde ateş tuşuna basıldığı zaman hangi adrese sıçranacağı belirtiliyor. İlk ekranda 8 tane ikon bulunduğu için burada 7 ikonu daha tanımlamamız gerekiyor. Fakat hepsinin tablo yapıları aynı olduğu için 7'sinin de buraya yazılmasına
gerek yok. ikonrutinl , Jsr i Rectangle .byte 0 .byte 199 0 .word 319
Eğer birinci ikon seçilirse GEOS Kernal'ı, 1. ikonun tanım byte'larında adresi belirtilen bu rutine sıçrama yapar. Burada ise bizim ilk yaptığımız işlem ikinci ekrana geçebilmek için ekranı temizlemek. Lda Ekran2ikonu
Sta r0 Lda 1 JsrDolcons Daha sonra ikinci ekrandan çıkış için kullanılacak iko- nu tanımlıyoruz.
Ekran2ikonu
Lda Sta r0 Lda Sta r04 1 Lda 0 Jsr DoMenu
Testmenü
Testmenü
Artık bu ekranda kullanacağımız menüleri tanımlamanın zamanı geldi. Jsr DoMenu komutundan önce A'ya verdiğimiz 0 değeri ile menüler hazırlandıktan sonra mouse'un ilk menü elemanının üzerinde belirmesini sağlıyoruz. Rts Ve kontrolü tekrar GEOS Kernal'e bırakıyoruz. $4486 ikon1 .byte $02,$FF .byte $9C $80,$01,$80,$39,$80,$6D,$80 .byte $E5,$81,$BD,$83,$19,$86,$31 .byte $8C,$61,$98,$C1,$B1,$81,$BB .byte $01,$BE,$01,$BC,$01,$80,$01 .byte $02,$FF 8 ikon grafik datası daha. Ekranda görünecek olan ikonların grafik tanımlarını yapmanın zamanı gelmişti zaten. Burada gördüğümüz tipik bir ikonun grafik dataları. Fakat bu ikon datalarının özelliği GEOS'un grafik kullanımında az bellek harcamasını sağlayan sıkıştırılmış formatta saklanması. Bu sıkıştırma işlemleri hakkında çok ayrıntılı bilgiyi “GEOS'la Grafik” konusunda anlatacağım. Fakat basitçe bu byte'ların anlamını açıklamak istiyorum: $02,$FF byte'ları: $FF byte'larının 2 kere yazılmasını sağlar. Yani 32 tane $FF byte'ı yazmak isteseydik ikonumuza (yani içi tamamen dolu bir ikon isteseydik) yalnızca $20,$FF yazmamız tüm ikonu tanımlamamıza yeterli olacaktı. $9C byte'ı: Kendisinden sonra gelen $9C-$80 = $1C (28) byte'ın yalnızca birer kez kullanılmasını sağlar. Buradan sonra gelen 28 byte ikonun grafik datalarıdır. $02,$FF byte'ları: Gene iki kez $FF byte'ı yazılır. Aşağıdaki tabloya bakarak bu byte'ların nasıl bir sonuç vereceğini görebilirsiniz.
DESENE
Ekran2ikonu .byte 1 .word 240 .byte 155
.word ikonl .byte 30 .byte 150 .byte 2,16 .word bitir İşte tipik bir ikon tanım tablosu daha. Bu seferki ise programdan çıkış için kullandığımız ikonu tanımlıyor. Bitir Jmp EnterDesktop