C64 Türkiye sayı 3, sayfa 27

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 27

Bize lazım olan ilk 6 bittir. Yani bizim kullanacağımız ekran kodlu bir karakterin genel yapısı şöyle olacaktır. % 0 0 x x x x x x Bitlerin sıralanışı soldan sağa ve 7 6 5 4 3 2 1 0 şeklindedir. “ABCD” yazısını sıkıştırdığımızda 3 baytlık anlamsız bir yazı ortaya çıkacaktır. Şimdi diyeceksiniz ki, “Bu kadar işlemi sadece 1 bayt için mi yapacağız?” Ben de evet diyeceğim. Bu program temel programdır ve ayarlanınca isterseniz bütün hafızayı sıkıştırabilirsiniz. Şu anki yapısıyla programda geçen “length” değişkenini 192 yaparsanız 1 blokluk (256 baytlık) ve ekran kodlarıyla yazılmış bir yazıyı rahatça şifreleyebilirsiniz. Nitekim, yazının başında bir oyun için kullandığımı yazmıştım. Ekran belleği 1 Kbyte’tır ve bu rutine bir iki ekleme yaparak 768 bayt olarak kısaltabilirsiniz. İşi biraz daha büyütürsek 20 ayrı ekran görüntüsünü hafızada sakladığınızı varsayalım. 20 ekran = 20 Kbyte eder. Bu programı kullanarak 20 ekranın kapladığı alan 16 Kbyte’a iner. Alın size 4 Kbyte’lık tasarruf. Sadece her 4 bayt’ta 1 bayt tasarruf ile nerelere geldik. Tabii bir de şöyle bir soru var. Ben bu programı sadece ekran için mi kullanacağım? Hayır. Mesela bir program yazdınız ve programa kendi adınızı vs. info olarak yerleştirdiniz. Programınız çalışınca adınız çıkacak daha sonra program kullanılacak. Ama bazı lamer’lar sizin adınızı kendi adıyla değiştirerek ortaya çıkabilirler. İşte bu program ile adınızı sonsuza dek koruyabilirsiniz. Adınız, bilgileriniz şifreli bir şekilde programın herhangi bir yerinde duracaktır ve program çalışınca deşifre rutini devreye girerek adınızı vs. şifresiz şekilde ekrana yazacaktır. Kullanma alanı tamamen size kalmıştır ve konuyu daha fazla dağıtmadan programın açıklamasına devam edelim. En son bize lazım olan ilk 6 bit demiştik. Yaptığımız işlemler şöyle. 1. harf xxx, 2. harf yyy, 3. harf vvv, 4. harf zzz ile gösterilsin. Ayrıca işlem sonunda şifreli sonucu saklayacağımız adresleri de SAKLA0, SAKLA1, SAKLA2 olarak adlandıralım. Bir de geçici işlemler için TEMP isimli adres olsun. 1 – 1. harfi 2 kez sola kaydırın ve TEMP’e yazın : 00xxxxxx şu hale gelir % xxxxxx00 % TEMP’e 2 – 2. harfi 4 kez sağa kaydırın ve sonuca TEMP ile OR işlemi uygulayın ve sonucu SAKLA0’a yazın : 00yyyyyy şu hale gelir % 000000yy % OR işleminden sonra sonuç xxxxxxyy % SAKLA0’a 3 – İkinci harfi 4 kez sola kaydırın ve sonucu TEMP’e yazın : 00yyyyyy şu hale gelir % yyyy0000 % TEMP’e 4 – 3. harfi 2 kez sağa kaydırın ve TEMP ile OR işlemi yapın ve sonucu SAKLA1’e yazın : 00vvvvvv şu hale gelir % 0000vvvv % OR işleminden sonra sonuç yyyyvvvv % SAKLA1’e 5 – 3. harfi 6 kez sola kaydırın ve sonucu TEMP’e yazın : 00vvvvvv şu hale gelir vv000000 % TEMP’e 6 – Son harfi ile TEMP arasında OR işlemi yapın ve sonucu SAKLA2’ye yazın : vv000000 % OR TEMP % sonuç vvzzzzzz % SAKLA2’ye Gördüğünüz gibi bütün işlem bu kadar. İşlem sonunda hafızada 00xxxxxx, 00yyyyyy, 00vvvvvv ve 00zzzzzz olarak sıralanan 4 harflik bir yazı (sayı da olabilir) “xxxxxxyy yyyyvvvv vvzzzzzz” şeklinde şifrelenmiş veya sıkıştırılmış olur. Deşifre programı ise bunun tam tersi mantıkla çalışır. Programı inceleyerek ne gibi işlemler yapılmış anlayabilirsiniz. Bu programı kullanmak için dikkat edilmesi gerekenleri tekrar yazıyorum. Öncelikle yazılarınız 0 ile 64 (64 hariç) arasındaki ekran kodları olmalı, yani grafik karakterler, inverse harfler olursa işinize yaramaz. İkinci konu ise yazınız mutlaka 4 ve 4’ün katları uzunluğunda olmalıdır. Peki uzunluğa dikkat etmezsek ne olur? Mesela 20 değil de 22 harflik bir yazınız var. Şifreleme sırasında 22’den sonraki karakterlerin yerine hafızadan rastgele bir değer okunacak ve şifreleme yapılacaktır. Ama deşifre sırasında rastgele okunan baytlar deşifre sırasında yazıyla ilgisi olmayan birkaç harf şeklinde ekranda sırıtacaktır. Bunun çaresi ise yazınızın sonuna boşluk karakteri ekleyerek uzunluğu 4’ün katları haline getirmektir. Programın başlangıç adresi $0900 (2304)’te bir sıçrama tablosu vardır. Eğer BASIC’ten SYS 2304 yazarsanız şifreleme bölümünü, SYS 2307 yazarsanız deşifre bölümünü çalıştırabilirsiniz. Assembler bilenler için bir sorun olacağını zannetmem. Veya rutinleri ayırıp ayrı ayrı kullanabilirsiniz. Umarım işinize yarar.

Eğer bu program ile ilgili sorularınız olursa aşağıdaki e-mail adreslerine bir e-mail atın yeter.

hades6510@mynet.com ve hades6510@yahoo.com

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