DIRECTORY NUMARALARI

NUMARALARI

Programlarını diğer insanların gözlerinden korumak isteyen bir bilgisayarcı, oldukça katı yöntemler kullanmak zorundadır. Şaşılacak olan, yalnızca bir disketin directory'siyle bu konuda neler yapılabileceğidir.

C64'ü satın alanlardan bir kısmı cihazlarını oyun amacıyla kullanmak yerine program yapmayı tercih ederler. Uzun uğraşlardan sonra gerçekleştirdiği programların istenmeyen kişiler tarafından kopyalanmasını önlemek ise her programcının en doğal hakkıdır. Fakat ne yazık ki bazıları kopya programları yazma alanında ustalaşmıştır ve her ne kadar, disket üzerindeki yarım track'ların kullanılması, yazılmış track'ların karıştırılması veya bazı track'lara özel olarak hata mesajları yazdırmak gibi korunma önlemleri geliştirildiyse de bir süre sonra bunların da çaresi bulunmuştur. Kısaca öyle kopyalama programları yazılmıştır ki, bir disketi olduğu gibi başkasına aktarmaktadır. Dolayısıyla tamamen etkili bir korunma yöntemi şu anda mevcut değildir. Fakat en azından bir programın dökümünün istenmeyen kişiler tarafından görülmesi, değiştirilmesi veya başka programlar içinde kullanılması engellenebilir. Yani yabancı, yazdığınız bir programı kopyalasa bile üzerinde herhangi bir değişiklik yapamaz. Bu iş için genelde kendi kendine otomatik olarak başlayan programlar (Autostart) ve korunmuş bir program dökümü kullanılır. Biz burada aynı işlevi gören başka bir yöntemden bahsedeceğiz: Disketlerin directory'lerinde yapılacak ufak düzenlemeler ile yabancıların programlarınıza göz atmasını önleyebilirsiniz. Burada gösterilecek metodların bir kötü yanı vardır: Bunlar programı, disketleri block usulü ile çeken kopya programlarına karşı (Fcopy, Quickcopy veya benzerleri) koruyamazlar. Fakat yazdığınız program herhangi bir şekilde kopyalansa bile üzerinde başkaları tarafından herhangi bir değişiklik yapılamaz. Burada size gerekli olan SMON türü bir Disk-Monitör ve bir disketin block organizasyonu hakkında temel bilgilerdir. Oldukça etkili bir korunma oldukça kolay bir şekilde ve herhangi bir Disk-Monitor'una gerek duyulmadan gerçekleştirilebilir. Resim 1'de görülen directory'ye bir göz atın. Peki burada block sayısı bakımından ana program olması gereken ikinci programı nasıl yükleyeceksiniz? LOAD "*",8 komutunu bilgisayara girdiğinizde ilk sırada yer alan yüklendiği için bu ikinci programı yüklemek imkansız gibi görünmektedir. Şimdi ikinci programın adını düşünelim. Zaten problemin çözümü de bu noktada yatmaktadır. Directory'de bulunan ikinci Filename "" dır. Bunun bir basım hatası filan olduğunu sanmayın. Dosya adı bildiğimiz tırnak işaretidir. Eğer bilgisayara "" gibi bir satır yazarsanız hata mesajı ile karşılaşırsınız. Çözümü kendiniz de bulabilirsiniz. Öncelikle ASCII kodlarını düşünün. Tahmin ettiğiniz gibi LOAD CHR$(34),8 satırını girdiğinizde ikinci programı sorunsuz olarak yükleyebilirsiniz, zira "" işaretinin ASCII kodu 34'tür. İkinci dosyayı yüklemenin başka hiçbir yolu yoktur. Aynı CHR$(34) komutunu SAVE ve VERIFY içinde kullanabilirsiniz.

Tırnak işareti ile yapabilecekleriniz bunlarla kalmıyor. İlginç directory'ler yaratmak isterseniz örnek olarak programınızı şöyle kaydedin: SAVE "C*",8. Yalnız bu son kayıt şeklinin bir dezavantajı vardır. İstenmeyen biri LOAD "C*",8 yazarak programınızı rahatça yükler. Burada bilmeniz gereken en önemli unsur, bir dosya adında bir veya daha fazla tırnak işareti varsa en sonda bir daha tırnak işaretinin gözükmeyeceğidir. Bu Floppy-Dos'un directory gösterim rutinindeki bir hatadan ileri gelmektedir. Burada yine oldukça ilginç bir özellikten söz etmeden geçemeyeceğiz. Dosya adında yer alan renk değiştirme, cursor kontrol gibi kumanda kodlarından ASCII değeri 128'in altında bulunan grafik işareti ile gösterilmezler, tersine işlevleri yerine getirilir. Bu şekilde gerekli ASCII kodlarını kullanarak değişik renkte directory'ler elde edebilirsiniz. Bildiğiniz gibi directory'nin en sağ tarafında dosyaların tipi yer alır.

Disket üzerinde bir

Directory oluşturmak: Bir solukta söylendiğinde çok basit geliyor. Oysa Directory'deki her karakter bir macera vaat etmekte.

Eğer dosya tipleri üzerinde bazı değişiklikler yaparsak bunların bir derece korunmasını sağlayabiliriz. Yine resim 1'de görülen directory'ye bakın. Burada sequential olarak görülen son dosya aslında normal bir Basic programıdır. Her şey iyi güzel de bunu nasıl yükleyeceğiz diye bir soru yöneltebilirsiniz. Bu sorunun cevabının ne kadar basit olduğunu görünce şaşıracaksınız: LOAD "",8 yazdığınızda bu sequential dosyanın rahatça yüklendiğini göreceksiniz. Tabii ki program daha önce SAVE "6510,S,W",8 ile kaydedilmiş olmalıdır. Gerçek sequential dosyalar yukarıda belirtilen yöntemle yüklenebilir, fakat bu şekilde hiçbir sonuç alamazsınız, bilgisayarınız kitlenir. USR tipinde dosyalar yaratmak için yukarıdaki LOAD ve SAVE komutlarında "S" harfi yerine "U" yazmalısınız. Görüldüğü gibi normal bir programın sequential veya USR-File gibi gösterilmesi herhangi bir sorun teşkil etmemektedir. Fakat Relative File olarak gösterilmek istenen programlarda iş biraz karışıyor. Burada Floppy Relative-File'ı bir program gibi bilgisayara göndermeyi kesinlikle reddediyor. Şimdi yapacağımız bazı işlemlerle disket üzerindeki dosyaları kısa süreler için “canlandıracağız.” Bu iş için Block-yazma ve Block-okuma komutlarını kullanacağız. İlk olarak boş bir diskete ihtiyacımız olacak. Bu disketin üzerine koruma altına alacağımız programı ve ardından bunu yükleyecek bir alt program kaydedin. Bu alt programa daha sonra detaylı olarak değineceğiz. Yukarıda belirtilenleri aynı sırada yapmaya dikkat edin. Yukarıdaki işlemler tamamlandıktan sonra scratch komutu kullanarak ilk dosyayı yani ana programı silin. Dikkat! Bu andan itibaren disket üzerinde hiçbir yazma işlemi gerçekleşmez. 42

“tirmemelisiniz! Bilgisayar ekranına gelen directory'de yalnızca ikinci program, yani ana dosyayı yükleyen alt program bulunmaktadır. Her ne kadar directory'de gözükmese de ana program disket üzerinde hâlâ yer almaktadır ve 18. Track'da&*DEL>*dosya tipi ile kaydedilmiştir. DEL komutunun basım hatası değildir. Bu directory dilinde bir programın düzgün olarak kaydedilmediği anlamına gelir. Bu tür yıldızlar genelde seguential dosyalarda herhangi bir hata yapıldığında veya diskete sığmayan normal programlarda bulunur. Disket sürücümüz bu işe çok sinirlendiği için directory yüklenirken hatalı programların yanına mutunu yerleştirmektedir ve bu şekilde kullanıcıya, saatlerce, olmayan bir program yüklemeye uğraşmaması için mesaj göndermektedir. Disket üzerinde var olan fakat görülmeyen bu ana programı tekrar canlandıralım. Bunun için dosya tipi baytının 130($82) değerini almasını sağlamalıyız. Disket üzerindeki ilk dosyanın tipi 2 no.lu baytta (bilgisayarlarda sayma işlemleri 0'dan başladığı için baştan üçüncü bayt) kayıthdır. Bu nedenle 18 track'ın 1. sector'unun 2. baytını değiştirecek olan alt programda şu satırlar bulunmaktadır.

OPEN 3,4,3, # 9?
OPEN 15,8,15
PRINT #1. 30181”
PRINT # 15,“B-P:3 2”
PRİNT #3, CHR$(130)
PRINT #15,*U2:3 018 1”
PRİNT #15,“1”
CLOSE 15,3
LOAD" 18

Son satırda bulunan LOAD komutu directory'ye bakılıp tahmin edileceği gibi ilk sırada bulunan alt programı yüklemez, aksine yukarıdaki satırlarla tekrar hayata döndürdüğümüz âna programı yükler. Burada önemli olan ana programın yüklenmesinden önce <PRINT # 15, ile initialisation işleminin gerçekleştirilmesidir. Floppy directory bir kez okunduktan sonra bunu hafızasına almaktadır. Bilgisayar tarafından bir kez daha directory istendiğinde disket sürücü 18. Track'ı okumadan hafızasında bulunanı bildirmektedir. Sonuç olarak yeni düzenlediğimiz directory disket üzerinde bulunmasına rağmen okunmamaktadır. İnitialisation işlemi yapıldığında disket sürücünün ara belleği boşaltılır ve yeni directory okunur. Esas program yüklenip çalışmaya başlayınca ilk olarak kendini tekrar silmelidir. Bu silme işlemi için normal scratch yerine yukarıda alt programda kullandığınız komutları kullanmanızı tavsiye ederiz. Yalnız CHR$(130) yerine&*DEL tipine karşı gelen CHR$(0) komutunu kullanmalısınız. Bu prensipten hareket ederek çok daha etkili yöntemler geliştirebilirsiniz. Yalnız bu iş için disketin directory yapısı hakkında bazı bilgilere sahip olmalısınız. Resim 1'de görülen directory'de üç program bulunmasına rağmen yine de 664 Block boş olarak gözükmektedir. Herhangi bir disk monitörü ile boş block sayısını istediğiniz gibi de- Biştirebilirsiniz. Eğer şu ana kadar gösterdiğimiz hilelerle bir sonuç alamıyorsanız, son çare olarak herşeyi ortadan kaldırmalıyız. Gözükmeyen bir directory'de yer alan bir programı kopyalamak önemli sorunlar yaratır. Yabancı gözlerden directory'yi gizlemenin iki yolu vardır. C-64'ün iç yapısını yakından tanıyan biri LIST komutunun arka arkaya üç sıfır baytı bilir. Böyle bir durumda programın listesi normal yollardan kesinlikle alınamaz. Esasında bilgisayarın hafızasında yer alan directory çalışmayan fakat dökümü alınabilen normal bir programdır. Eğer biz bu programın herhangi bir yerine arka arkaya üç sıfır baytı yerleştirirseek bir daha döküm alınamaz. Bu sıfırların nereye yerleştirileceği tamamen kullanıcının isteğine bağlıdır: İster en başa, ister herhangi bir programın arkasına. Böylelikle sadece istenen programların gözükmesi sağlanabilir. Eğer bu metodu cursor kontrol veya renk kodları ile uygularsanız daha büyük karışıklıklara yol açarsınız. Bu metodun dezavantajı ise bilgili bir kişinin directory hafızada iken RAM'da yapacağı bazı düzenlemeler veya herhangi bir disk monitör yardımıyla disket üzerinde yapacağı bazı değişikliklerle sizin sakladığınız directory'yi görebilmesidir. Ayrıca bu metod çok yaygın olduğu için önlemleri birçok kişi tarafından bilinmektedir. Çok daha az bilinen ve daha güvenli olan bir yöntem de şöyledir: Disket üzerinde en fazla sekiz program bulunduğunu kabul edelim. Böylelikle sadece 18,1 no.lu Directoryblock'u işgal edilmiştir. Bu block'un ilk iki baytı O ve 255 değerlerini alarak aynı zamanda bunun okunacak son directory-block'u olduğunu belirtirler. Bu değerleri tamamen ilgisiz değerlerle, örneğin 67 ve 85, değiştirdiğinizde directory'yi yüklemek istediğinizde disket sürücü “ILLEGAL TRACK OR SECTOR”' mesajı ile cevap verecektir. Dolayısıyla bilgisayara hiçbir dosya adı gönderilmeyecek, ekranda sadece disketin adı ve ID görülecektir. Artık hangi hile kullanılırsa kullanılsın dosya adlarının bilgisayara ulaşması sağlanamaz. Her ne kadar dosya adları gözükmese de LOAD komutu olduğu gibi tek dezavantajı ise kaydedilecek programların sayısının sekiz ile sınırlanmasıdır. Her ne kadar ilk bakışta gereksiz gibi gözükse de şu ana kadar gösterilen metodları birarada kullanabilirsiniz. Örnek olarak gizlenmiş bir directory'de dosya tiplerini değiştirmek ne işe yarar diye sorabilirsiniz. Fakat bu tür kombinasyonlar ile programı kopyalamak isteyenlerin işini daha da zorlaştıracağınızı unutmayın. Son olarak size bir tavsiye: Basic ile yazdığınız koruma programlarını herhangi bir Compiler kullanarak makine diline çevirin. Her Compiler programı kendine özgü kodlar kullanır. ve «“Compile” > edilmiş bir program asla eski halini alamaz. Yine de çok profesyonellere karşı disket sürücüye yollanan komutların sırasını mümkün olduğunca karıştırır. Ayrıca CHR$ komutunun arkasından gelen değeri de bir değişkene aktarmanız çok yararlı olacaktır. Artık Compiler programını yazan bile işin içinden çıkamaz. Bir de son olarak Autostart-File oluşturursanız, programınızı yabancılara karşı korumada kesin önlemler almış olursunuz.

6 — PROGRAM" PRG 75 PRG 5 *esie" 664 FREE, READY. Resim 1