Originally posted by nightlord+Sep 29 2005, 12:51 PM--><div class='quotetop'>QUOTE(nightlord @ Sep 29 2005, 12:51 PM)</div><div class='quotemain'><!--QuoteBegin-Bakkada@Sep 29 2005, 12:20 PM
Bise sormak istiom screen=$0400+(12*40) tanimlamasini kodun en basinda yapabilir miyiz yane =
!to out.prg
* =$c000
screen=$0400+(12*40)
gecerli olurmu se sonra programda nerde screen yassam bu toplama degerine esit olur mu?
[post=2047]Quoted post[/post]
evet olur. hatta genelde boyle etiketlerin tamamini kodun basinda bir yerde tanimlamak da iyi bir aliskanliktir.
etiket kullanimi ile ilgili bi not daha: genelde yazdiginiz program icinde ilk bakista ne olduu anlasilmayan sayilar gecmesi de genelde pek iyi bi aliskanlik sayilmaz. yani kodda
lda #32
sta $137f
gibi bisey gecerse aradan bi ay gectikten sonra baktiginizda 137f neydi ben buna niye 32 yukluyodum gibi sorulari cevaplayamayabilirsiniz. o yuzden
DEFAULT_NO_OF_PLAYERS = 32
NumberOfPlayers = $137f
lda #DEFAULT_NO_OF_PLAYERS
sta NumberOfPlayers
gibisinden yazmak daha iyi bir aliskanlik olacaktir.
Bu arada etiketler birbirinin tanimlanmasinda da kullanilabilir. mesela
MESAJIN_SATIRI = 12
VM = $0400
SCREEN = VM + (MESAJIN_SATIRI *40)
da calisir.
[post=2048]Quoted post[/post]
[/b][/quote]
Bir de dipnot. Etiketler ile tanımlamaların kullanımı farklıdır.
x = $40
diye tanımlama yapıldıysa
lda #x
şeklinde kullanılması gerekir. Ancak herhangi bir byte'a label verildiyse
x !byte $c
o zaman
lda x
şeklinde bu byteın değeri kullanılabilir. "#" karakteri kullanımaya çalışıldığında hata mesajları alırsınız.
Bu kafanızı karıştırmasın (henüz o konuya gelmemiş olabilirsiniz) ama bir dip not olarak yer alsın.
İkinci bir dip not:
Alın size basicden otomatik çalışabilecek bir program örneği (ACME).
!to "test.prg"
* = $0801
!byte $0c, $08, $00, $00, $9e, $32, $30, $36, $31, $00, $00, $00
* = $080d
lda #$02
sta $d020
rts
$0801'den itibaren yazılan bytelar basicden programı çalıştıracak "SYS" komutunu içeriyor ve komutun çalışması için sonnunda üç tane "0" byteına ihtiyaç var. bunun haricinde "0"dan önce yer alan 4 byte:
$32, $30, $36, $31
2, 0, 6 ve 1'in karakter kodlarını içeriyor. $30 0'a $39 ise 9'a denk gelecek şekilde. 2061'in hex karşılığı da $080d'dir. Bu durumda burdan itibaren programımızı yazmaya başlayabiliriz. Bu program derlendiği zaman $0801'den başlayan bir prg dosyası üretir ki bu dosya otomatik olarak çalışacaktır. Eğer programımızı $c000'a koymak isteseydik $c000'ın decimal karşılığı olan 49152'ye sys komutu ile gitmemiz gerkecekti. Bu durumda kod şu şekilde değişir.
!to "test.prg"
* = $0801
!byte $0c, $08, $00, $00, $9e, [b]$34, $39, $31, $35, $32, $00, $00, $00
* = $c000
lda #$02
sta $d020
rts
[/b]
Ancak unutmamanız gereken şey bu kaynak kod $0801'den başlayan ve $c006'da sona eren bir PRG dosyası üretir. Yani arada kalan tüm boş alanlar da dosyanın içinde gereksiz yer kaplar. Gerçi herhangi bir sıkıştırma programıyla bu alanlar kolaylıkla sıkıştırılabilir ancak bu da aklınızda bulunsun.
Daldan dala oldu biraz da içimden geldi işte 🙂