Bu sayfadaki yazılar
Sayfanın metni
Sayfa 62
ZI
BURAK KİPER
RUN-STOP/RESTORE
TUŞUNU ENGELLEME
Bildiğiniz gibi çalışan bir programı RUN-STOP/RES-TORE tuşlarına basarak kırabilirsiniz. Bu tuşların etkisini
POKE 808,PEEK (808)-3 komutu ile kaldırabilirsiniz. Dilerseniz aşağıdaki ufak programı yazarak POKE komutunuzun etkisini görün.
410 POKE 808,PEEK (808)-3 20 PRİNT “Bu bir denemedir”;
30 GET AS:İF A$ THEN PRİNT:PRİNT“Program durduruldu” POKE792,51:POKE793,255
komutlarını kullanarak sadece RESTORE tuşunu da etkisiz hale getirmeniz mümkün. Ufak bir BASIC programı ile de RUN-STOP tuşunu etkisiz hale getirebilirsiniz.
10 TRAP 100 20 PRİNT “Bu bir denemedir.”; 30 GOTO 20 400 PRİNT “RUN-STOP tuşuna basıldı.” 4140 RESUME NEXT
SAVE KOMUTUNU ENGELLEME
SAVE vektörü de hafızanın üçüncü sayfasında bulunur, 818/819 LIST komutunu engellemekte kullandığımız teknikleri burada da kullanabiliriz, mesela;
POKE 818,61:POKE 819,255
komutu ile bilgisayar kendisine SAVE komutu verildiğinde açılış ekranına dönecektir. POKE komutları ile programlarımızı nasıl koruyabileceğimizi gördük, şimdi de bir iki ufak BASIC programı vasıtası ile programlarımızı nâsıl koruyabileceğgimizi görelim. İşe program döküm ekinde bulacağınız 4 numaralı programı yazarak başlayın. Yazdığınız programı RUN 63000 komutu ile çalıştırabilirsiniz. Herhangi bir BASIC programınızın sizin için önemli olan satırlarını gizlemek istediğinizde bu satıra herhangi bir komut yazmadan evvel beş tane kolon yazın, daha sonra o satırda bulunması gereken komutları yazabilirsiniz. Gizlemek istediğiniz satırlara örnek olarak üstünde programın çalışmasını sağlayacak olan şifreyi taşıyan bir satırı örnek verebiliriz. Gizlemek istediğiniz satırları olan bir programınız varsa programınızın sonuna 63000'inci satırdan evvel bizim verdiğimiz programı ekleyin ve gizlenecek satırların başına beş kolon koyun. İlk olarak RUN 63000 komutu vererek bizim programımızı çalıştırdığınızda önünde beş kolon bulunan satırlar görünmez olacak, sadece satır numaraları kalacaktır. DELETE 63000- komutunu verdikten sonra programınızı bu hali ile tekrar SAVE edin. Yalnız dikkat etmeniz gereken nokta, eğer programınızın orijinal halini saklamazsanız bir daha gizlediğiniz satırları kendinizin bile göremeyeceğidir. Gizleyici Programımızın açıklamasını yapalım: 63000: BASIC'in başlangıcı LI değişkenine saklanıyor. Eğer bu programı C64'te çalıştırmak istiyorsanız LI—45 yerine LI—-43 yazmanız gerekir. 63020: Programdaki her byte'ı tek tek kontrol etmek yerine program bağlantılarına bakıyoruz, böylece programımız daha hızlı çalışıyor. 63030: LI-0 olduğunda program sona erer. 63040: Ekrana o anki satır numarası yazılıyor. 63050: X$ değişkeninde korunmuş satırların numarası saklanıyor. 63060: Yeni başlayacak satır LI değişkeninin içeriğine eşittir. 63070: İncelenmekte olan satırın ilk beş karakterine bakılıyor. 63080: Her normal satır, yani başında beş kolon bulunmayan satır FL değişkenini bire, | değişkenini de sekize eşitler. 63100: Eğer FL— 1 ise bir sonraki satıra geçeriz, aksi takdirde üzerinde çalıştığımız program bitmiş de- Mektir. 63110: Üzerinde çalışılan satır korunur, satırın ilk kolonuna sıfır değeri gelir. Program sıfır değerini gördüğünde bunu satırın sonuna gelinmiş kabul eder, böylece o satır varolmasına rağmen gösterilmez.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 63
Bildiğiniz gibi BASIC'te satır numaraları birbirlerini izleyen sırada artarlar, ancak 64000'den büyük satır numaralarını kullanmak mümkün değildir. Bu du- TUMU program koruma tekniğinde avantajımıza kullanabiliriz. Program döküm ekinde bulacağınız 5 numaralı programı korumak istediğiniz programınızın sonuna ekleyin. RUN 63000 vererek programımızı çalıştırın, sizden sıra ile saklayacağınız programın satır numaralarını değiştirme, aynen bırakma, bu işlemlere son verme seçeneklerinden birirti seçmeniz istenecek. Ancak programımızın bazı sakıncalı tarafları bulunuyor:
* GOTO ve GOSUB satır numaraları hesaplanmıyor. * Eğer 64000'den büyük bir satır numarası girerseniz bir daha bu satırı silemezsiniz. * 1'den küçük satır numaralarına atlama yapa: mazsınız.
Programımızın çalışma prensibi oldukça basit: Programımız bütün BASIC satırlarını kontrol ediyor, eğer satır numarası değiştirildiyse yeni satır numarasını ZN değişkenine veriyor ve bu değer 63110 numaralı satırda yüksek/alçak byte düzenine göre yerleştiriliyor. Daha sonra yeni değer BASIC hafıza bölgesinde eski değerin üzerine POKE yapılıyor. Koruma işlemini gerçekleştirdikten sonra DELETE 6300- komutu ile koruma programını sildikten sonra programınızı yeni hali ile SAVE edin. Artık programınız yüklendiğinde sizin vermiş olduğunuz satır numaralarına sahip olacaktır. Eğer yeni satır numarası ola- Tak 65535 verirseniz, program bu satıra geldiğinde END komutu ile karşılaşmış gibi olur, bundan başka bu satır yok olarak göründüğünden bu satırda yazılı olanları da görmek mümkün olmayacaktır. Programlarımızı çeşitli POKE komutları kullanarak veya bazı ufak programcıklar vasıtası ile nasıl koruyabileceğimizi gördük. Son olarak programımız LIST edildiğinde LIST edene nasıl sürprizler hazırlayacağgımızı göreceğiz. Aşağıdaki komut grubunu direkt modda yazın.
KEY1,CHRS(27) 4 CHRS(79) 4 “<RVSON > <SHIFT- M> <RVSOFF >” 4 CHRS(34) 4 CHRS(20)
Şimdi programınızı yazarken istediğiniz yerlerde F1 tuşuna basın. Programınızı LİST ettiğinizde oldukça ilginç bir görüntü ile karşılaşırsınız. Programınız LIST edildiğinde bir mesaj çıkmasını isterseniz, aşağıdaki örnekleri inceleyin.
40 REM”FA <UP ><RVSON> Bu bir denemedir. 400 REM”FA <CTRL4* 200 >
Şimdiye kadarki program koruma yöntemlerimizde koruma işlemini ya program üzerinde yapmaya çalıştık ya da POKE komutları ile gerçekleştirmeye çalıştık. Bir başka yöntem olarak da disket üzerinde gerçekleştireceklerimiz ile kopyalama işlemini oldukça zorlaştırmaya çalışacağız.
İlk yöntem olarak disket üzerindeki bir TRACK'ı tah- TİP edeceğiz, ancak bu işi yaparken disket sürücüye sizin için önemli olmayan bir disket takın. Aşağıdaki programı çalıştırdığınızda sizden tahrip etmek istediğiniz track numarası sorulacak. Bu track'de herhangi bir program bulunuyorsa çalışmaz hale geleceğinden bir disket monitörü ile kindinize boş bir track bulmanızı tavsiye ederiz. Bu işlemin sonunda disketiniz kopya edilmeye çalışılınırsa oldukça zor ve yavaş kopya edilir.
410 İNPUT 20 OPEN 1,8,15 30 OPEN 4.“U4 2 O" TR;O SO PRİNT 41,“M-E“CHRS(163)CHRS(253)