1 Nisan 1988 Tarihli Commodore Gazetesi Sayfa 54

1 Nisan 1988 tarihli Commodore Gazetesi Sayfa 54
Metin içeriği (otomatik olarak oluşturulmuştur)

Şimdi DISKMON'u yükleyin ve ça- lıştırın. Bundan sonra yapacağımız iş- lemlerin sonuçlarını bu yazı ile yayın- lanan DISKMON çıktısında da izle- yebilirsiniz. Önce .R 12 Ol vererek dosyalar ile ilgili bilgilerin yeraldığı ilk bloku okuyun. .M 00 20.ile bize gerekli olan bilgiyi de ekrana getirin. Directory'i incelediğimiz bölümü hatırlamaya çalışın veya o bölümü de elinizin altına alın. Önce ilk satırda- ki $84'e bakalım. Bu byte, ilgili dos- yanın REL türünde bir dosya oldu- ğunu belirtiyor. Bu dosyaya ait bilgi- ler $11 numaralı track'ın $00 numa- ralı sector'ünden başlıyormuş. Sonra da 16 karakterlik dosya adı geliyor. Bundan sonra gelen üç byte bizim için yeni ve ilginç. Directory yapısını in- celerken bu byte'ların REL tipi dos- yalarla ilgili olduğunu söylemiş ve es geçmiştik. İşte tam yeri geldi. $11 ve $OA olarak gördüğünüz iki byte, ait oldukları REL tipi dosyanın kullanıl- masını sağlayan ve Side-Sector adı ve- rilen bilgilerin disketin üzerinde ne- rede başladığını gösterir. Side- Sector'ün de ne demek olduğuna bi- ,razdan geleceğiz. Arkadan gelen $64 byte'ı ise 100 olan kayıt birim uzun- luğunu belirtir (onaltılık sistemde, ta- bii ki). Eğer daha önceden yarattığı- nız bir relatif dosyayı daha sonra ka- yıt uzunluğunu belirtmeden açarsa- nız, DOS gerekli kayıt uzunluğu bil- gisini buradan alacaktır. Bunu takip eden sıfırlardan sonra gelen $1D ve $00 byte'ları ise, REL ti- pi dosyamızın şu sırada 29 blok kap- ladığını belirtiyor. Şimdi gelelim Side- Sector'e... Önce .R 11 OA ile ilk Side- Sector blokunu okuyun ve .M ile ta- mamını ekrana getirin. Artık cursor ile listeyi yukarı aşağı oynatmayı size bırakıyorum. Side-Sector'de, REL tipi dosyanın içerdiği bilgileri saklayan blokların Track ve Sector numaralarını göste- ren bir liste yeralır. Herbir kaydın uzunluğu, kaçıncı kayda ulaşmak is- tediğimiz ve Side-Sector'deki bilgiler bir araya geldiğinde, aranan kaydın disketin üzerinde tam olarak nerede başladığı bir iki hesaplama ile bulu- nabilmekte. Şimdi Side-Sector'ün ya- pısına inelim. İlk iki byte, bir sonraki Side-Sector blokunu gösterir. Üçüncü byte ise 0- 5 arası değerler alır ve o blokun kaç numaralı Side-Sector olduğunu belir- tir. Sonra gelen byte ise ($64—100), herbir kayıdın uzunluğunu belirtir. Bunu izleyen 12 byte içinde, en fazla altı tane olabilen Side-Sector'lerin 54 ç herbirinin adresi Track/Sector forma- tında yeralır. Eğer 6'dan az Side- Sector kullanılmışsa, byte'lar $00 ile doldurulur. Ondan sonra da, sırayla REL dosyayı oluşturan blokların lis- tesi gelir. Eğer birinci Side-Sector blo- ku dolarsa ikincisi açılır. En fazla 6 Side-Sector olabileceğine ve her bir blok da en fazla 254 karakter alabi- leceğine göre, en uzun REL Dosya 6*120*254—182880 karakter alabilir. Bu, zaten 1541'in bir diskete depola- yabileceği bilgi miktarından da faz- ladır. Yani DOS'un değil, disket ka- pasitesinin engelleyici bir rolü var. Diyelim ki, herbiri 100 karakter olan kayıtlarımızdan 70 numaralı ola- nına erişmek istedik. DOS, şu işlemi yapar: (70-1)*100/254 Sonuç 27 ve kalan 42 olacaktır. De- mek ki aranılan kayıt, REL Dosyanın 27. blokunun 4242—44 numaralı byte'ından itibaren saklanmaktadır. Dikkat! Bloklar O, 1, 2,... diye sayıl- makta., Yani 27. blok dediğimizde, bir açıdan da 28. blok demiş oluyoruz. Side-Sector'e bakarsak, bu blokun $10/$0C adresinde başladığını görü- rüz. Bu işlemin açıklanması basit. Her blokta ilk iki byte dışında kalan byte'lar bilgi yazımına ayrıldığına gö- re, (kayıt no-1)*kayıt uzunluğu/254 formülü, aranan kaydın hangi blok- ta olduğunu verecektir. Bölmenin ka- lanı ise, bu blok içinde kaç byte iler- lememiz gerektiğini gösterecektir. An- cak bu sayıya, ilk iki byte'ın kullanıl- maması nedeniyle, iki eklememiz ge- rekiyor... Tabii ki, byte'lar da O, 1, 2,... diye sayılıyor. Şimdi .R 10 0C ile o bloku da oku- yup ekrana getirelim. “70 numara” yazısını ve $0D-—-13 kodunu (noktalı virgül kullanmamıştık!..) göreceksi- niz. Eğer yukarıdaki işlem sonucunda 120'den büyük bir blok sayısı elde et- seydik, o sayıyı da 120'ye bölerek han- gi Side-Sector blokuna bakmamız ge- rektiğini bulacaktık. Her Side-Sector blokunda diğerlerinin de adresi oldu- ğu için, herhangi birine bir kerede ulaşmak sorun olmayacaktı. REL dosyalarla uğraşırken, DOS* un bir tane dosya için, bir tane de Side-Sector için iki kanala ihtiyacı vardır. Bu da daha önce kanallar ve açık dosya sayısı hakkında söyledik- lerimizi açıklıyor. REL dosyayı okurken, ilk kaydın ilk byte'ından itibaren okur ve bu iş- lemi devam ettirirseniz, relatif dosyayı sıralı dosya gibi okumuş olursunuz. Eğer işinize gelirse, relatif dosyaları böyle de kullanabilirsiniz. Yeni yazı dizilerinde buluşmak üze- re, hoşçakalın...

Bu sayıdan diğer sayfalar: