Commodore sayı 22, sayfa 49

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 49

194-223 7. dosya 224-225 Kullanılmaz 226-255 8. dosya

18/04'te ise aynı byte'lar 9-16 arası dosyaları gösterecektir ve ilk iki byte da 18/07'yi gösterecektir. İsterseniz önce .M 02 1F diyerek ilk dosyaya ait bilgileri içeren dört satırı ekrana getirelim. Bu 30 byte'ı kolaylık olsun diye 0-29 arası numaralandıralım ve buna göre her bir byte'ın anlamının ne olduğunu görelim. Eğer bu bilgileri, diyelim ki 7. dosya için kullanmak isterseniz, bu 0-29 arası byte numarasını 7. dosyaya ait bilgilerin başladığı 194'e ekleyerek blok üstündeki gerçek byte numarasını bulabilirsiniz.

0 numaralı ilk byte, o dosyanın türünü belirlemektedir. Bildiğiniz gibi dosya türleri PRG, SEQ, REL, DEL ve USR'dir. Bu dosya türlerini sırasıyla 130, 129, 132, 128 ve 131 ($82, $81, $84, $80, $83) kodları temsil eder. Eğer o dosya disketten Scratch ile silinmişse, burası 00 olur ve $ ile directory'e baktığınızda o dosya görünmez. Bu byte'ların bazı başka özellikleri de vardır. Eğer ikilik ve onaltılık sistemde işlem yapmaya alışkınsanız, yukarıdaki sayıların üst bit'lerinin 1 olduğunu görürsünüz. Bu, o dosyanın diskete başarılı bir şekilde yazıldığını ve gerektiğinde rahatça okunabileceğini gösterir. Ancak dosyayı diskete yazarken CLOSE kullanmamışsanız veya disketin hafızası dolduğu için kayıt işlemi yarıda kesilmişse, bu değerler 128 eksik, yani sırasıyla 2, 1, 4, 0, 3 olacaktır. Directory'i $ ile yüklediğinizde ise isimlerinin yanlarında bir çarpı işareti görünecektir. Ayrıca 6 numaralı bit'in de bir önemi vardır. Bunun için demin verdiğimiz bilgilere 64 toplamanız yeterli olacaktır ($C2, $C1, $C4, $C0, $C3). Eğer dosya tipi bunlardan biri ise, o dosya silinemez veya üzerine yeni bilgi yazılamaz demektir. Yani bir tür koruma. Bu tür dosyaların directory aldığınızda yanlarında bir “<” (küçüktür) işareti ile yazıldığını göreceksiniz. Gelelim iki ve üç numaralı byte'lara. Daha önce dosyaların birer blok zinciri halinde diskete kaydedildiğini anlatmıştık. İşte bu iki byte, blok zincirinin ilk halkasının adresini belirtir. İlk dosya için bu genellikle 17/00 ($11/$00) blokudur. Şimdi .R 11 00 ile bu bloku okuyup .M ile listeleyelim. N komutu ile bir sonraki bloka geçebiliriz. Dosyanın sonuna kadar bunu tekrarlayıp dosyanızın disket üzerinde nasıl yayıldığını gözleyebilirsiniz. Bu arada S ve B komutlarını da daha iyi bir inceleme için kullanabilirsiniz.

Şimdi 18/01'e geri dönelim (R 12 01 ile). 3-18 arası 16 byte'da dosyanın adı saklıdır ve tıpkı disket adında olduğu gibi, ismi 16 karaktere tamamlamak için 160 değeri kullanılır. $ ile directory aldığınızda dosya isimlerinin tırnak işareti ile başlayıp bittiğini görürsünüz. DOS, bu tırnak işaretini dosya okumadan önce ve ilk 160 değerine rastladığında yaratır. Burada küçük bir numara yapabiliriz. Dosya adından sonraki ilk (160) değerini orda bırakıp diğerlerini başka karakter kodları ile değiştirin. Bunu nasıl yapacağınızı biliyor olmalısınız artık. Doğrudan o byte'ların üzerine karakter kodlarını onaltılık sistemde yazıp RETURN tuşuna basın. Sonra da W ile 18/01'i diskete geri yazın. Tekrar directory aldığınızda, son tırnak işareti ile dosya tipi arasında sizin yazdığınız karakterler görünecektir.

19-21 arası byte'lar relatif (REL) dosya türlerinde kullanılır. Buna daha ileriki bir bölümümüzde değineceğiz. 22-25 arası byte'lar kullanılmaz. 26-27 arası olanlar ise (@ işareti kullanarak SAVE yaptığınızda, yani aynı isimle bir dosyanın üzerine yazmaya çalıştığınızda kullanılır. Böyle bir SAVE işlemi yaptığınızda, 1541 önce yeni bir boş blok bulur ve yeni dosyayı o bloktan başlamak üzere bir blok zinciri halinde diskete yazar. O ilk blokun adresi de bu iki byte'a yazılır. Dikkat ederseniz, bu aşamaya kadar programın disketteki ilk durumu bozulmadı. Eğer bu SAVE işlemi başarıyla biterse, yani arada elektrik kesilmemişse, diskette yeterli yer varsa veya biterse, bir WRITE ERROR oluşmamışsa (eğer bunlardan biri olmuşsa, programın eski hali hâlâ sağlam duruyor olacaktır), DOS bu iki byte'ın içeriğini 1-2 numaralı byte'lara yazacak ve bu byte'ların daha önce gösterdiği blok zincirinin halkalarını BAM'da boş olarak işaretleyecektir. İşte bu aşamada ufak bir sorun var. DOS kimi zaman 26-27'den 1-2'ye yaptığı transferi doğru yapmıyor ve bunun sonucunda dosyanızın hem eski hem de yeni halini kaybediyorsunuz. Bu nedenle, bu tür bir SAVE işlemi tavsiye edilmeye layık değil... 30 byte'lık grubun son ikisi olan 28-29 numaralı byte'lar dosyanın blok olarak uzunluğunu saklarlar. Ancak bu sayı onaltılık sistemde LOW/HIGH denen bir formatta saklıdır. Bilmeyenlere anlatalım, onluk sistemde blok uzunluğunu bulmak için ilk byte'ın değerine ikinci byte'ın değerini 256 ile çarparak eklemek gerekir. Örneğin, buradaki sayılar $28, $01 ise blok sayısı olarak dosyamızın uzunluğu, (1*256 + 40) = 296 olacaktır. Artık disketimizin her tarafını mıncıklamış olduk. DISKMON'un şu ana kadar görmediğimiz komutlarını da görerek bu ayki beraberliğimizi nihayete erdirelim. Şimdiye kadar, R, W, N, @, -, S, M, C, $, B, A, F, X komutlarını gördük. Daha profesyonel kullanımlar için bir iki komut daha var. Diyelim ki, o anda hafızada olan en son okuduğunuz bloka ait bilgileri COMMODORE 64'ün belleğinde bir başka yere daha kopyalamak istiyorsunuz (örneğin, makine dili bir programınızda kullanmak veya birden fazla bloka ait bilgiyi hafızada tutmak için). Ve diyelim ki kopyalayacağınız adres $3500. Bu durumda şu komutu kullanacaksınız:

.P $ASAF

Put (koy) komutu ile kullanabileceğiniz adresler $0000-$0800 ve $C000-$DFFF arası dışındaki herhangi bir adres olabilir. Bu adreslerde ya işletim sistemi ile ilgili hayati bilgiler ya da DISKMON'un kendisi var. Adresin onaltılık sistemde olması gerektiği çok belli, di mi? Bu işlemin tersini, yani hafızadaki 256 byte'lık bir bilgiyi DISKMON'un deposuna kopyalamak isterseniz:

.G adres

Get (al) komutunu kullanacaksınız. P için geçerli tüm kurallar G için de geçerli. C (Copy, kopyala) ile, en son okunmuş bloka ait bilgilerin hafızadan yazıcıya çıkarılması sağlanır. En son komutumuz, bir tür tarama. Herhangi bir TRACK'daki SECTOR'lerin ilk sekizer byte'larını bir arada görebilmek, kimi durumlarda faydalı olacaktır. Diyelim ki, 18. TRACK'ın, yani directory'nin tüm SECTOR'lerinin başlarını görmek istediniz. Vereceğiniz komut: T18

Görüşmek üzere.

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