Bu sayfadaki yazılar
Sayfanın metni
Sayfa 22
İyi de nasıl yapacağız?
Bu durumda daha değişik arayışlara girmemiz gerekecek. İlk olarak aklımıza gelebilecek şey, bir makine dili programı ekleyerek (ki bunu bizim için yapacak hazır programlar bulunuyor) programın yüklenir yüklenmez başlamasını sağlamak. Ama demin de söylediğim gibi bu tür programlar sizin de ulaşımınızı engellediği için biraz tehlikelidir. Aynı tehlikeli gruba giren koruma sistemlerinden biri de programınızı COMPILE etmektir. BASIC programı COMPILE ettiğinizde kullandığınız programa bağlı olarak 6510 makine dili veya p-code adı verilen bir kod üretilebilir. Bu kod normal programınızdan hızlı çalışacağı gibi (3-10 kat) BASIC listesinin de bir daha geri gelmemek üzere kaybolmasını sağlar. Bu çeşit bir korumadan sonra herhangi birinin (siz dahil) bu programın listesini alması mümkün olmayacaktır. Ama bunu uygulayabilmek için disket sürücüye sahip olmalısınız. Bu şekilde koruduğunuz bir programın başına bir de şifre koruması ekleyebilirseniz, yetkili olmayan kişilerin programdan uzak kalmasını garanti etmiş sayılabilirsiniz. Bu ekleyeceğiniz şifre korumasının IF A$ = “şifre” THEN ... şeklinde olmamasına dikkat etmelisiniz. En iyisi şifre kelimesini harflere bölüp programın değişik yerlerinde tek tek kontrol etmek olacaktır. Bu şekilde koruduğunuz bir programın şifre korumasını liste alınabilirken bile çözmek oldukça zor olabilir. Programınız çalıştıktan sonra 45-46 değerlerinin sizin bıraktığınızla aynı olup olmadığına da bakabilirsiniz. Bu adresler her zaman BASIC programının bittiği adresi gösterir. Ama bu adresleri kontrol etmek için ekleyeceğiniz her satır bu değerleri değiştireceği için gerçek değerini öğrenmekte oldukça zorlanırsınız. Bu değerleri nasıl öğreneceğinizi size söylemeyeceğim, ama sizin bu işi nasıl yapabileceğinizi öğrenmek istiyorum. Ne olursa olsun benim çözümümü gelecek sayıda öğreneceksiniz.
ROM'u kandırmaya ne dersiniz?
Deminden beri anlatıp durduğum sistemlerde ya programlarınızı bir daha inceleyememe riskini göze alıyorsunuz, ya da belli bir dereceye kadar makine dili öğrenmeniz gerekiyor. Sonuçta sadece BASIC bilenlerin programlarını koruması oldukça zor oluyor. Bilgisayarın BASIC listelerini gösteren rutini incelediğimiz zaman, programlarımızı korumaya yarayacak bazı açıklıklar yakalayabiliriz oysa. Mesela belli bir şekilde belli karakterleri girdiğinizde satırın herhangi bir yerinde bulunan karakterleri silebilir, ya da ekranı hepten temizleyebilirsiniz. Bunun yanında programın listesinin en sonuna tanıtıcı bir sayfa bile ekleyebilirsiniz bu karakterleri kullanarak. Bu karakterlerin ne olduğuna değinmeden önce, BASIC listesine bunları nasıl yaptırabileceğimizi öğrenmemiz yerinde olur: Kontrol karakterlerini eklemek istediğiniz yere ilk olarak bir REM komutu yazın. Sonra iki kere tırnak işareti ekleyin (“ ”) ve ikinci tırnak işaretini silin. Bu sayede tırnak modundan çıkmış olursunuz (yani renk değiştirirseniz, kursor rengi değişir, renk değiştirecek karakter belirmez). Daha sonra CTRL-9 tuş kombinasyonuyla RVS-ON moduna girin. Artık bastığınız tüm harfler negatif olarak (siyah yerine beyaz, beyaz yerine siyah gelecek şekilde) ekrana çıkacaktır. Daha sonra yapmak istediğiniz işlem için gereken tuşları Tablo-1'den seçerek REM” 'ın arkasına ekleyin. Sanırım en iyisi basit bir örnek vermek olacak. Satır numarasını ve REM komutunu silip ekranda sadece bir mesajın görünmesini sağlamak için sırasıyla aşağıdaki işlemleri yerine getirin: 1) 10 REM” ” yazın. 2) İkinci tırnak işaretini silin. 3) CTRL-9'a basarak RVS-ON moduna girin. 4) Yedi defa T tuşuna basın. Ekranda negatif T'ler belirecektir. 5) CTRL-0'a basarak RVS-OFF moduna girin. 6) COMMODORE DERGİSİ yazın ve RETURN'e basın. 7) LIST komutuyla yarattığınız şaheseri görün. Çok eğlenceli değil mi? Ama hemen bilgisayarın başına atlayıp rengârenk bir liste yaratmaya çalışmadan önce yazının kalanını okuyun, yoksa hiçbir şey yapamazsınız. T, yani karakter silme gibi karakterler (ki bunların sayısı çok azdır) doğrudan doğruya çalışabilir. Oysa tüm renk değiştirme kodları, kursor hareketleri, vb. çalışabilmek için kendisinden önce SHIFT-M karakterinin (tabii ki negatif olarak) girilmiş olmasını beklerler. Yani bir alt satıra geçmeden renk değiştirme gibi bir şansınız yok. Tabi ki bu çok yüzeysel bir kısıtlama, çünkü alt satıra inip tüm karakterlerin çalışmasını sağladıktan sonra rahat rahat kursor kontrol kodlarıyla üst satıra çıkıp yazmaya buradan devam edebilirsiniz. Artık TABLO-1'i kullanıp süslü ve gizli listeler yaratmanız mümkün. Bu sistemle renkli, hoş görünüşlü listeler yapabileceğinizi anladınız sanırım. Eminim şimdi de nasıl program koruyabileceğinizi düşünüyorsunuzdur. Çok önemli bilgiler içeren satırların sonuna bir REM” ekleyip buraya bir alt satıra geçme, bir de ekran temizleme karakteri atarsanız bu satırı okumak için oldukça uğraşmanız gerekecektir. Ya da bir sayıyı gizlemek için sayının hemen arkasına bir ekleyip içine REM” ve sayıyı silecek kadar T (RVS-ON) basıp yeni bir sayı ekleyebilirsiniz. Listenizi inceleyen herkes (siz de dahil) buradaki sayının ya da yazının gerçek değerini göremeden üzerine sahtesi basılacaktır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 23
NORMAL : Beyaz
Alt satır (CR) : Küçük harf : Kursor aşağı : Reverse açık : Kursor sol üst köşeye : Bir Harf sil : Kırmızı : Kursor sağa : Yeşil : Mavi
E H I M N co R S T £ t
COMMODORE( CE )4
—..Cyan
: Küçük-Büyük harf kilitli : Küçük-Büyük harf serbest mak için iki değişik yöntem önerebilirim size: 1. REM” ” yazıp ikinci tırnağı silin. Yedi tane T (RVS-ON) yazmak yerine yedi kere SHIFT-DEL kombinasyonuyla yer açın ve yedi kere DEL'e basın. Bu sayede gerekli kodu bilgisayar sizin için hesaplayacak ve RVS-ON ekrana yazacaktır. Dikkat, yedinci T'yi bastıktan sonra yazılan T'ler silinir, bu yüzden kaç tane INSERT yazdıysanız o kadar DEL yazın. SHIFT-M dışında hemen hemen tüm karakterleri bilgisayara hesaplattırabilirsiniz. Bir kez (RVS-ON) SHIFT-M'ye basın, daha sonra INSERT (SHIFT-DEL) ile bir yer açın. Eğer yazı rengini beyaz yapmak istiyorsanız, bildiğiniz gibi CTRL-1 kombinasyonuna basın. Yazının rengi beyaz olmayacak, ekranda beyazın kontrol karakteri belirecektir. Bu sistemi kullanırsanız sadece bu şekilde yazamayacağınız
SHIFT- : Turuncu : Açık yeşil 1: Alt satır (CR) : Büyük harf : Siyah : Kursor yukarı 1: Reverse kapalı : Ekranı temizle : Araya harf ekle ©: Kahverengi 1 Açık kırmızı : Gri 2 : Açık mavi 3 : Kursor sola :Sarı
DP NSZ
TABLO-1: Listelerinizde istediğiniz işlemleri yaptırmak için
kullanabileceğiniz karakterler.
Eminim TABLO-1'de bulunan tüm karakterleri ezberlemek size çok zor gelecektir. Bundan kurtulmak için karakterleri ezbere bilmeniz yeterli olacaktır (SHIFT-M gibi). 2. REM” yazın. Bu sefer iki tırnak yazıp ikincisini silmeyin ama. Bu sayede bilgisayarınız gene tırnak modunda kalacaktır. Bir kez boşluk tuşuna basın. Şimdi yapmak istediğiniz işlemleri sıralayın (SHIFT-M ve DELETE karakterleri dışındakileri). Bu sefer bütün işlemler kendi karakterini gösterecektir sadece. RVS-ON ve RVS-OFF'u bile kullanabilirsiniz. Daha sonra RETURN'e BASIN, satırı listeleyin, her şey kontrol karakteri olarak görünecektir. Yani henüz işlemlerinizi ekranda göremezsiniz. Şimdi DELETE (RVS-ON T) kullanmak isterseniz istediğiniz kadar INSERT (SHIFT-DELETE) ve bu sayıda DELETE girin. Daha sonra bir boşluk bıraktığınız yere gidin ve bir kez RVS-ON SHIFT-M yazın. LIST dediğinizde yaptığınız her şeyi ekranda görebilirsiniz. Program-1'de bu şekilde düzenlenmiş bir listenin MDE dökümünü bulabilirsiniz (takdir edersiniz ki BDE bu programların listesini çıkaramıyor). Programı MDE ile yazın ve kaydedin. Daha sonra LIST dediğinizde kontrol karakterleriyle yapabileceklerinizin küçük bir örneğini Sondaki RUN'ın üzerine kursor'u nasıl yerleştirdiğimizi de siz bulun artık. Bu sistemi kullanmadan önce programınızı bir yerlere kaydetmeyi unutmayın. Çünkü bu şekilde koruduğunuz ya da düzenlediğiniz programları siz de bir daha inceleyemezsiniz. Yani deminden beri söyleyip durduğum programınızı tehlikeye atma olayı burada da var. Son bir uyarı: Döküm Eki'ne gönderdiğiniz programları sakın bu şekilde korumayın ya da düzenlemeyin. BDE bunları basamadığı için programınız yayınlanmaz!
Ben tehlikesiz koruma istiyorum!
Doğal olarak hepiniz sadece programlarınızı korumak istiyor. Hem de öyle bir şekilde korumak istiyorsunuz ki, sizden başka kimse programı inceleyemesin. Ama siz istediğiniz anda korumanızı kaldırabilmelisiniz. Bu koruma sistemini gerçekleştirebilirsiniz. Ama yeterli bilgiye sahip olmadığınızı varsayarak ilk olarak BASIC'in bellekte nasıl durduğunu incelemekle başlayalım. Bir BASIC programı, 43-44 adreslerinde low-high (alçak-yüksek; $0801 için $01 $08 şeklinde) formatında bulunan adresten başlar. Bu adresten bir önceki adreste bulunan (genelde $0800) değer 0 değilse ne programınız çalışır, ne de NEW komutu işler. (Buradan sonra normalde olduğu gibi 43-44 adreslerinde $0801 olduğunu düşünerek adresleri buna göre ayarlayacağım. Diğer durumlar için biraz kafa yormanız yeterlidir.) $0801-$0802 adreslerinde ikinci satırın başladığı adres alçak-yüksek bayt formatında tutulur. Yani ilk satır $0801-0812 arasını kaplıyorsa bu iki adres $0813 adresini gösterir. $0803-$0804 adreslerinde satır numarası alçak-yüksek bayt formatında tutulur. Bu sebeple satır numaralarınız 63000'lere kadar çıkabilir. $0805 adresinden sonra BASIC programınızın baytlarına rastlayabilirsiniz. Ama komutlar özel olarak kodlanarak saklanır burada. Yani PRINT komutunu yazıp $0805'den sonrasını incelerseniz, PRINT'in ASCII kodu olan $50, $52, $49, ...'ya rastlamazsınız. Bunların yerine $99 kodlu tek bir bayt PRINT'i temsil eder. Satır sonunu belirtmek için bir adet $00 kullanılır. İkinci satır bu $00'dan sonra başlar ve aynı yapıya sahiptir. Bu zincirleme liste $00 $00 $00'a rastlanana kadar devam eder. Bu üç sıfır, BASIC programının sonunun geldiğini bilgisayara bildirir. Yani bir satırın yapısını özetlersek: 1. ve 2. bayt: Sıradaki satırın bellekteki yeri. 3. ve 4. bayt: Satır numarası. 5. bayt ve sonrası: BASIC programı ve kodlar. Son olarak da bir adet (son satıra üç) $00. İsterseniz her şeyi bir de örnek üzerinden inceleyelim. Örneğimiz iki satırdan oluşuyor: 10 REM PROGRAM-I 20 PRINT “PROGRAM-I” Programın bellekte nasıl durduğunu görmek için bir göz atın isterseniz. Gördüğünüz gibi ilk iki bayt $0811 adresini gösteriyor ($11 $08). Yani ilk satır $0810'da bitiyor. Ve ilk satır numarası 10 ($0A $00: $000A — 10). Daha sonra REM'in kodu olan $8F geliyor. Bir boşluktan ($20) sonra PROGRAM-I'in ASCII kodları ($50 $52 $4F $47 $52 ...) yer alıyor. Ve $0810'da yer alan $00 ile satır sona eriyor. Aynı yapıyı ikinci satırda da gözlüyoruz. Üçüncü satır adresi olarak $0822 gösteriliyor, satır numarası 20. $0815-$0821 arasında gerekli BASIC kodları yer alıyor. $0821 adresinde yer alan $00 satırın sonunu belirtiyor. $0822 adresinde bulunan $0000 adresi ($00 $00) BASIC programının bittiğini gösteriyor.