Gönderen Konu: ipucLarI  (Okunma sayısı 25133 defa)

ipucLarI

« Yanıtla #30 : 06.02.2012 18:51:37 »
Hızlı düğmeleri aç

ozayturay

İleti: 25

Çevrimdışı
  • *
  • Newbie
    • Profili Görüntüle
Alıntı yapılan: skate;12401
$0801 öncesi bazı yükleme adresleri kullanılarak istisnai trickler yapılabiliyor ancak bunun şu an için bir önemi yok.

Öğrenmek amaçlı bir kaynak kodu okurken 6 baytlık bir autostart koduna denk geldim, bu da burada bulunsun 256b için işe yarayabilir. :)

Kod: [Seç]
!to "256b-minboot.prg",cbm

* = $0326    

!word start
!byte $ed,$f6

start:
    ;programı buraya yazın

256 bayt bile size fazla geliyorsa 6 bayt harcamanın en güzel yolu. :P

ipucLarI

« Yanıtla #31 : 07.02.2012 09:44:03 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
http://noname.c64.org/csdb/release/?id=103840

Burada bu 6 byte'ı 4 byte olarak kullanıyorum. $f6 ya da $ff olmak durumunda sondaki byte ancak $ed olan byte değişebiliyor. Dolayısıyla şu çalışıyor örneğin;

Kod: [Seç]
!to "tricky.prg",cbm

* = $0326    

!word start
start:
lda #$f6 ; ya da $ff
...

Aklınızda bulunsun.

En fazla 18-19 byte civarı kod yazacaksanız $007e trickini de kullanabilirsiniz.

18 byte örneği (load address hariç):

Kod: [Seç]
!to "very_short_1.prg",cbm

* = $7e
loop
 inc $d020
 inc $d021
 inc $d020
 inc $d021
 inc $d020
 jmp loop

19 byte örneği (load address hariç):

 
Kod: [Seç]
!to "very_short_2.prg",cbm

* = $7e
loop
 inc $d020
 inc $d021
 inc $d020
 inc $d021
 inc $d020
 nop
 nop
 bcs loop

ılk örnek 19 byte olarak kullanıldığında sondaki jmp'ın high byte adresi bozuluyor ancak ikinci örnekte aynı adresteki byte bozulmuyor. Yani biraz kullandığınız opcodelara göre de maksimum sınırınız değişebiliyor. Çok sakat ve aşırı sınırlı bir autorun yöntemidir ancak $0326'ya göre 4 byte daha kısa, benim kullandığım $0326 trickine göre de 2 byte daha kısa sonuç verir, load address harici hiç byte harcamaz.
« Son Düzenleme: 07.02.2012 09:49:40 Gönderen: skate »