Commodore sayı 57, sayfa 24
Sayfanın metni

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

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