Bu sayfadaki yazılar
Sayfanın metni
Sayfa 42
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.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 43
6 — PROGRAM" PRG 75 PRG 5 *esie" 664 FREE, READY. Resim 1