Commodore sayı 21, sayfa 54

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 54

RUN/STOP tuşuna basarsanız, directory okunması duracaktır. Başka bir tuşa bastığınızda ise, bir sonraki 20 dosya adı listelenecektir. Diyelim ki bu disketi formatlayıp, deneme disketi olarak kullanmak istediniz. Bu durumda ekrandaki noktanın yanına yazacağınız komut şu olacaktır:

*ON:disket

Bir önceki bölümde de gördüğümüz disket formatlama komutunu OPEN, CLOSE gibi komutlara gerek kalmadan, sadece komutun başına O ekleyerek kullandık. Bu, diğer disket komutları için de geçerli. Diskete göndereceğiniz, Scratch, Rename, Validate, Copy vs. komutlarının hepsini başlarına O karakterini eklemek şartı ile DISKMON içerisinden kullanabilirsiniz. Komutların formatları, son iki bölümümüzde anlattığımız gibidir. Tek dikkat edeceğiniz, O karakterinden sonra boşluk olmaması. Şimdi deneme disketimiz şu veya bu şekilde hazır ise, DISKMON ile disketimize ilk saldırıyı yapalım: Bir blok okuma. Birazdan ayrıntısına gireceğimiz directory, disketimizde 18. TRACK'ın 0. SECTOR'ünde başlar ve 19 blok kaplar. İster misiniz, bu zincirin ilk bloğunda neler olduğuna bir göz atalım? Hemen şu komutu verelim:

12 00

Yani READ (oku) komutu. Yanında gelen iki sayı ise sırasıyla TRACK ve SECTOR numaralarını veriyor. Peki TRACK yerine neden 18 değil de 12 yazdık? Bu disket monitörümüz (DISKMON) sayıları onluk sistemde değil de onaltılık sistemde kabul ediyor. Bu sistemden defalarca söz ettik. Eğer hâlâ bilmiyorsanız, Ayhan Kalaylıoğlu'nun Makine Diline Merhaba yazısına ve benim bazı diğer yazılarıma bir göz atın. Böylece 12'nin, 1*16+2=18 sayısına tekabül ettiğini göreceksiniz. Eğer disketle bu derece yakından ilgilenecek aşamaya gelmişseniz, onaltılık (hexadecimal) sistemi sular seller gibi bilmeniz gerekmekte... Yukarıdaki komutu verdikten sonra disketin kırmızı ışığının kısa bir süre yanıp söndüğünü göreceksiniz. Hemen arkasından da şu komutu verin:

s4

.M

Ekranda bir sürü sayının geçtiğini ve ekranın sağ tarafında da sol tarafta yer alan sayıların karakter karşılıklarının yer aldığını göreceksiniz (Eğer byte'ın değerine karşılık düşen bir harf, rakam veya işaret yok ise, nokta basılacaktır). İşte bu komut (Memory, hafıza), R ile disketten bilgisayara okuduğunuz blok içindeki 256 byte'lık bilgiyi ekrana çıkarır. Gördüğünüz gibi, blokun ortalarında bir yerde, formatlarken verdiğiniz disket adı ve ID'si var. Neyse, buna birazdan geri döneceğiz. Peki, şimdi bir sürprize ne dersiniz? Eğer M komutunu verdikten sonra başka bir şey yapmadıysanız, cursor ekranın en alt satırında yanıp

iskete

yazılan bilgilerin üst üste yazılmaması için bir disket haritası tutulması lazım. Bunu directory yapıyor.

sönüyor olacak. Şimdi HOME tuşu ile cursor'u ekranı silmeden sol üst köşeye getirin. Şimdi de CRSR tuşu ile cursor'u ekranın üst kenarına doğru itmeye çalışın. N'oldu? Sayı listesi, aşağıya doğru kaymaya, ekranın üstünden listenin ilk satırları gelmeye başladı, di mi? Şimdi de, aynı şeyi ekranın alt kenarı ile yapın. Bu sefer listenin yukarıya kaydığını ve alt satırdan listenin geri kalan kısmının satır ekrana yazıldığını göreceksiniz. Güzel mi? Bir ufak komut daha... Hâlâ kaç numaralı TRACK/SECTOR'de olduğumuzu hatırlıyor musunuz? Eğer hatırlamıyorsanız, şöyle bir komutla bilgisayara sorabilirsiniz:

Show (göster) komutu, size o anda hafızada bulunan 256 byte'lık bilginin en son hangi bloktan okunduğunu belirtecektir. Bilgisayarın bu bilgiyi saklamasının bir iyi tarafı da,

R komutunu herhangi bir blok adresi belirtmeden de kullanabilmeniz. Eğer aşağıdaki komutu kullanırsanız, bilgisayar en son okuduğu bloku bir daha okuyacaktır:

.R

Böylece, yazımızın devamında göreceğimiz işlemlerle hafızayı bozarsak tekrar düzeltme imkânımız ortaya çıkıyor. DISKMON'u şimdilik bir köşeye bırakıp, disket yapımıza geri dönelim. Genel kullanım açısından disket üzerindeki bloklar üçe ayrılabilir: Directory'nin 19 blokluk zincirinin önemli sistem bilgilerinin saklandığı ilk bloku, disketteki dosyaların adı, uzunluğu ve diğer bilgilerinin saklandığı geriye kalan 18 blok ve dosyaları oluşturan esas byte'ların saklandığı 664 blok. Disket üzerine herhangi bir bilgi bir dosya adı ile yazılmaya başlandığında (örneğin bir SAVE işlemi veya bir veri dosyasının OPEN ile yazılmaya başlanması), 1541'in işletim sistemi (DOS, Disk Operating System) tarafından sırasıyla şu işlemler yapılır. Önce programın adı, birazdan göreceğimiz kurallara uygun olarak directory zincirindeki ilk boş yere yazılır. Daha sonra da bilgi yazılabilecek en uygun boş blok bulunur. Ancak bir bilgi bir bloktan uzunsa, yani 254 byte'dan (256 değil, ilk iki byte 1541 tarafından kullanılıyor) daha fazla yazılacaksa ne olacak? İşte buna çözüm olarak şöyle bir yöntem geliştirilmiş. Yazılacak bilgi yığının ilk 254 byte'ı bir bloka yazılır ve bu blokun adresi TRACK/SECTOR numarası olarak directory'de bu dosyaya ayrılmış uygun yerde kaydedilir. Sonra disket üzerinde yeni bir uygun ve boş blok bulunur. Bilginin bir sonraki 254 byte'lık kısmı da bu bloka yazılır. Bu arada ilk blok ile ikinci blok arasında bir bağ kurabilmek için, ikinci blokun TRACK ve SECTOR numaraları ilk blokun ilk iki byte'ına yazılır. Şimdi neden bize blok başına 254 byte kaldığını anladınız mı? Bu işlem, üçüncü, dördüncü ve daha sonraki 254'er byte'lık kümeler halinde devam eder. Böylece o dosyanın bilgilerini içeren bir bilgi zinciri oluşur. Bu zincirin en son halkasını oluşturan blokun ilk iki byte'ı ise, arkadan gelen başka bir blok olmadığını göstermek üzere özel değerler alırlar. İlki, sıfır değerini içermektedir. İkinci byte ise, o bloktaki bilginin kaç byte'ının programın son bölümünü oluşturduğunu belirtir. Tüm bu yazılma işlemi yapılırken, üzerlerine bilgi yazılan blokların bir yöntemle korunması gereklidir. Daha sonra diskete yazılacak bilgilerin tekrar bu blokların üzerine yazılmaması lazım. İşte bunun için, directory zincirinin ilk blokunun ilk yarısında bir tür disket haritası tutulmaktadır ve bu haritada hangi blokun o anda boş, hangisinin dolu olduğu açıkça belirtilmektedir. Bu haritanın da ayrıntısına ineceğiz. Dikkatli okuyucuların hemen soracakları bir soru olsa gerek. Yukarıda “uygun ve boş” blok bulmaktan bahsettik. Acaba uygun blok da neyin nesi: Bilginin ilk 254 byte'lık kısmını diyelim ki, 01/00 numaralı (TRACK/SECTOR) bloka yazıldı. Bir sonra gelen 254 byte, 01/01'e yazılmaz. Onun yerine 01/04 tercih edilir. Eğer bu blok daha önce başka bir programın blokları tarafından kullanılmamışsa, ikinci 254 byte oraya yazılır. Peki neden? Bilginin ilk blokunu okuyup COMMODORE 64'e gönderme sırasında disket, merkezi etrafında dönmeye devam eder ve 01/01 numaralı blok okuma/yazma kafasının altından geçer gider. Sıra ikinci bloku okumaya geldiğinde ise, okuma/yazma kafasının altındaki blok 01/04 numaralı blok olacaktır. Diskete kayıt sırasında böylesine atlayarak giden blok sıralamasının en güzel örneğini directory yapısını incelerken göreceğiz. Hatta isterseniz, bu incelemeye hemen başlayalım...

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