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'ı ko- laylık olsun diye 0-29 arası numara- landı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 numara- sını bulabilirsiniz. 0 numaralı ilk byte, o dosyanın tü- rünü belirlemektedir. Bildiğiniz gibi dosya türleri PRG, SEO, REL, DEL ve USR'dir. Bu dosya türlerini sıra- sıyla 130, 129, 132, 128 ve 131 ($82, $81, $84, $80, $83) kodları temsil eder. Eğer o dosya disketten Seratch ile silinmişse, burası 00 olur ve $ ile directory'e baktığınızda o dosya gö- rTünmez. Bu byte'ların bazı başka özellikle- ri 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 dosya- nin diskete başarılı bir şekilde yazıl- dığını ve gerektiğinde rahatça okuna- bileceğini gösterir. Ancak dosyayı diskete yazarken CLOSE kullanma- mışsanız veya disketin hafızası dol- duğu için kayıt işlemi yarıda kesilmiş- se, bu değerler 128 eksik, yani sıra- sıyla 2, 1, 4, O, 3 olacaktır. Direc- tory'i $ ile yüklediğinizde ise isimle- rinin yanlarında bir çarpı işareti gö- rünecektir. Ayrıca 6 numaralı bit'in de bir önemi vardır. Bunun için demin ver- diğimiz bilgilere 64 toplamınız yeterli olacaktır ($C2, $C1, $C4, $CO, $C3). Eğer dosya tipi bunlardan biri ise, o dosya silinemez veya üzerine yeni bil- gi 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örecek- siniz. Gelelim iki ve üç numaralı byte'- lara. Daha önce dosyaların birer blok zinciri halinde diskete kaydedildiği- ni anlatmıştık. İşte bu iki byte, blok zincirinin ilk halkasının adresini be- lirtir. İlk dosya için bu genellikle 17/00 ($11/$00) blokudur. Şimdi .R 11 00 ile bu bloku okuyup .M ile lis- 50 teleyelim. 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öz- leyebilirsiniz. Bu arada S ve B komut- ları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 dosya- nın adı saklıdır ve tipki disket adın- da olduğu gibi, isimi 16 karaktere ta- mamlamak için 160 değeri kullanılır. $ ile directory aldığınızda dosya isim- lerinin tırnak işareti ile başlayıp bit- tiğini görürsünüz. DOG, bu tırnak işaretini dosya okumadan önce ve ilk 160 değerine rastladığında yaratır. Burada küçük bir numara yapabili- riz. Dosya adından sonraki ilk $A0 (160) değerini orda bırakıp diğerleri- ni başka karakter kodları ile değişti- rin. Bunu hasıl yapacağınızı biliyor olmalısınız artık. Doğrudan o byte'- ların üzerine karakter kodlarını onal- tılık sistemde yazıp RETURN tuşu- na basın. Sonra da W ile 18/01'i dis- kete geri yazın. Tekrar directory al- dığınızda, son tırnak işareti ile dos- ya tipi arasında sizin yazdığınız ka- rakterler görünecektir. 19-21 arası byte'lar relatif (REL) dosya türlerinde kullanılır. Buna da- ha ileriki bir bölümümüzde değinece- Biz. 22-25 arası byte'lar kullanılmaz. 26-27 arası olanlar ise © işareti kul- lanarak SAVE Yaptığınızda, yani ay- nı isimle bir dosyanın üzerine yazma- ya çalıştığınızda kullanılır. Böyle bir SAVE işlemi yaptığınızda, 1541 ön- ce yeni bir boş blok bulur ve yeni dos- yayı o bloktan başlamak üzere bir blok zinciri halinde diskete yazar. O ilk blokun adresi de bu iki byte'a ya- zılır. Dikkat ederseniz, bu aşamaya kadar programın disketteki ilk duru- mu bozulmadı. Eğer bu SAVE işle- mi başarıyla biterse, yani arada elek- trik kesilmemişse, diskette yeterli yer varsa veya biterse, bir WRITE ER- ROR 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 da- ha önce gösterdiği blok zincirinin hal- kalarını BAM'da boş olarak işaretle- yecektir. İşte bu aşamada ufak bir so- run 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 kaybe- diyorsunuz. Bu nedenle, bu tür bir SAVE işlemi tavsiye edilmeye layık değil... 30 byte'lik grubun son ikisi olan 28-29 numaralı byte'lar dosyanın blok olarak uzunluğuna saklarlar. Ancak bu sayı onaltılık sistemde LOW/HIGH denen bir formatta saklıdır. Bilmeyenlere anlatalım, on- luk sistemde blok uzunluğunu bul- mak için ilk byte'ın değerine ikinci byte'ın değerini 256 ile çarparak ek- lemek gerekir. Örneğin, buradaki sa- yılar $28, $01 ise blok sayısı olarak dosyamızın uzunluğu, (2*164 8) -4 256*(0*16-- 1) — 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 er- direlim. Şimdiye kadar, R, W, — S,M, ©,$,B,A,F, X komutlarım gördük. Daha profesyonel kullanım- lar için bir iki komut daha var. Diyelim ki, o anda hafızada olan en son okuduğunuz bloka ait bilgile- ri COMMODORE 64'ün belleğinde bir başka yere daha kopyalamak is- tiyorsunuz (örneğin, makine dili bir programınızda kullanmak veya bir- den fazla bloka ait bilgiyi hafızada tutmak için). Ve diyelim ki kopyala- yacağınız adres $3SAF. Bu durumda şu komutu kullanacaksınız: .P SASAF Put (koy) komutu ile kullanabile- ceğiniz adresler $0000-$0800 ve $C000-$DFFF arası dışındaki her- hangi bir adres olabilir. Bu adresler- de 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ızada- ki 256 byte'lik bir bilgiyi DISK- MON'un deposuna kopyalamak is- terseniz: .G adres Get (al) komutunu kullanacaksı- nz.Pi ıçın geçerli tüm kurallar G için de geçerli. C (Copy, kopyala) ile, en son okunmuş bloka ait bilgilerin hafıza- dan yazıcıya çıkarılması sağlanır. En son komutumuz, bir tür tara- ma. Herhangi bir TRACK'daki SEC- TOR'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 is- tediniz. Vereceğiniz komut: ı Görüşmek üzere. |