C64 Türkiye sayı 3, sayfa 26

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 26

asl asl4 asl asl asl asl rts ;--------------------------------------------------------------------; read .byte $bd,0,0 rts ;--------------------------------------------------------------------; length .byte 3 temp .byte 0 ;====================================================================; *=$0a00 text .scrl "c-64" ; şifrelenecek text burada olacak fuse .byte 32,32,32

;====================================================================; *=$0b00 ; deşifre edilen text buraya yazılacak desifrememory .byte 0 ;====================================================================; *=$0c00 ; şifrelenmiş text burada olacak sifrememory .byte 0 .end ;====================================================================; Bu sayının program köşesine hoş geldiniz. Bu programın hikayesi oldukça eskidir. Askerde teskere için gün sayarken, boş durmaktan sıkıldığım bir vakitte aklıma geldi ve kağıt üzerinde bitirdim. Daha sonra oturup kodladım ve diskete kaydettim. 1994’ten beri disketlerin birinde bekliyordu. Fakat bir zamanlar yapmaya başlayıp bıraktığım bir platform oyununda, ekran datalarını bu programlamla şıkıştırarak yer kazandım. Hatta yine başlayıp bıraktığım bir shoot-em-up oyununun HI-SCORE ekranında çıkacak isimleri bu programla şifreleyip daha sonra deşifre ederek ekrana yazdırıyordum. Aslında programın adı “TEXT PACKER-DEPACKER” idi. Fakat bazı sınırlamalardan dolayı “TEXT ŞİFRE-DEŞİFRE” adını koymayı uygun gördüm. Lafı fazla uzatmadan programın teknik açıklamasına ufaktan bir giriş yapalım. Bilindiği gibi C64’te bir karakteri ekrana iki şekilde çıkarabilirsiniz. Birincisi doğrudan ekran belleğine karakterin - EKRAN KODUNU - POKE komutuyla yerleştirerek, ikincisi ise PRINT komutuyla tırnak işaretleri arasında yazarak C64’te ekrana bir yazı yazabiliriz.. İkincisi standart ASCII kodları kullanır ve C64 ile kullanabileceğiniz kodlar 32 ($20) ile 96 ($60) kodları arasındaki karakterlerdir. Bizim için önemli olan EKRAN KODLARI’dır ve sadece C64 için tasarlanmıştır. Standart ASCII kodlarda $40 ile $60 (64 - 96) arasındaki karakterler EKRAN KODU’nda 0 ile $20 (0 – 32) arasındadır, $20 ile $40 arasındaki kodlar ise değişmemiştir. Biraz daha ayrıntıya inersek bizim programın kullandığı ekran kodları -bizim işimize yarayacak olan ilk 64 karakterdir (0 - $40 arası)- 6 bitten oluştuğu için şifreleme veya sıkıştırma işleminin mantığını anlatmaya başlayabiliriz.

Yazının başında bahsettiğim sınırlama, şifrelenecek yazının sadece ekran koduyla ve ekran kodlarının da sadece ilk 64 karakteriyle yazılmış olmasından kaynaklanmaktadır. İkinci bir sınırlama -aslında sınırlama değil mecburiyettir- şifrelenecek yazının 4 ve 4’ün katları uzunluğunda olmasının gerektiğidir. Vereceğimiz örneğin basit olması için hafızada ekran kodlarıyla bulunan “ABCD” yazısını sıkıştıracağız veya şifreleyeceğiz. Bu yazı hafızada aşağıdaki şekilde bulunmaktadır.

ADRES ( A HARFİ ) ADRES + 1 ( B HARFİ ) 0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

ADRES + 2 ( C HARFİ ) ADRES + 3 ( D HARFİ ) 0 0 0 0 0 0 1 1

0 0 0 0 0 1 0 0

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