Öncelikle her ne kadar tutoriallardan faydalanmış olsan da 6510 ASM'den interrupt rutini içeren bir kod yazmış olman bile büyük başarı, tebrik ederim. Elbette ki bir o kadar da Nightlord tebriği hakediyor.
Kodunu incelediğimde vardığım ilk sonuç daha önceden programlama tecrüben olduğu. Bunun hem iyi hem de kötü sonuçları olmuş. ıyi sonuç şu ki programı alt rutinelere bölerek yazmışsın. Daha derli toplu bir görüntüde olmuş böylece. Kötü sonucu ise şu ki bu efekt düzensiz zamanlamaları oldukça hoş görüyor, hatta efektin temeli bundan oluştuğu için problem yaşamamışsın. Ancak daha düzgün zamanlama gerektiren efektlerde bu şekilde alt rutin kullanarak sorun yaşayabilirsin. Özellikle interrupt içersinde her "jsr rts" kullandığın yerde 12 cycle kaybedersin. "wait_raster", "wait_timer" gibi alt rutinleri makrolara çevirmeni tavsiye ediyorum. yani;
wait_raster:
cmp $d012
bne wait_raster
rts
yerine
!macro wait_raster {
cmp $d012
bne wait_raster
}
şeklinde kullanıp;
jsr wait_raster
yerine
+wait_raster
şeklinde çağırmanı öneririm. Bu her defasında o kod parçasını copy & paste ile yerine koymanla aynı işi yapar. Dolayısıyla çok uzun kod parçalarının defalarca çağırılması söz konusu olursa hafıza kullanımını göz önüne alarak makro yerine yine alt rutin tercih edilebilir. ama bu verdiğim örneklerde makro net bir biçimde tercih edilmelidir.
jsr prepare_irq
end:
jmp end
bu tür kullanımlar da senin önceden gelen bir programcılık alışkanlığın olduğunu hissettirdi bana. kullanım tamamen doğru. ancak genellikle programcılıkta assembler'a kadar inmişsek bu tür kullanımlardan kaçınabiliriz. yani bir derleyici böyle bir kod üretebilir. biz yazıyorsak ihtiyaç duymayabiliriz. yani jsr jmp satırlarını kullanmadan doğrudan;
sei
...
...
cli
end:
jmp end
kullanabiliriz.
Dediğim gibi senin kodunda hiçbir "yanlış" yok. Bu söylediklerimin hepsini daha önce başka bir programlama dili tecbrüben olduğunu hissettiğim ve assemblerda bazı farklı yöntemlere alışman için söylüyorum. turbo'nun grafik çizimiyle ilgili "gereksiz taramalardan kaçının" tavsiyesi gibi ben de "gereksiz cycle harcayan herşeyden kaçının" diyorum
Joker'den sonra son zamanlarda gördüğüm ikinci Commodore 64 programlamaya ilgili kişi olduğunu belirteyim. Umarım senin de ilk intronu kısa sürede görmek nasip olur. Hatta Joker'le güçleri birleştirip birlikte birşeyler yapmanız da hiç fena olmaz, bende size bir fikir.