Commodore sayı 26, sayfa 54

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 54

Şimdi DISKMON'u yükleyin ve çalıştırın. Bundan sonra yapacağımız işlemlerin sonuçlarını bu yazı ile yayınlanan DISKMON çıktısında da izleyebilirsiniz. Ö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ırdaki $84'e bakalım. Bu byte, ilgili dosyanın REL türünde bir dosya olduğunu belirtiyor. Bu dosyaya ait bilgiler $1l numaralı track'ın $00 numaralı 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ı incelerken bu byte'ların REL tipi dosyalarla 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ılmasını sağlayan ve Side-Sector adı verilen bilgilerin disketin üzerinde nerede başladığını gösterir. Side- Sector'ün de ne demek olduğuna bigeleceğiz. Arkadan gelen $64 byte'ı ise 100 olan kayıt birim uzunluğunu belirtir (onaltılık sistemde, tabii ki). Eğer daha önceden yarattığınız bir relatif dosyayı daha sonra kayıt uzunluğunu belirtmeden açarsanız, DOS gerekli kayıt uzunluğu bilgisini buradan alacaktır. Bunu takip eden sıfırlardan sonra gelen $1D ve $00 byte'ları ise, REL tipi dosyamızın şu sırada 29 blok kapladığını belirtiyor. Şimdi gelelim Side- Sector'e... Önce .R 11 OA ile ilk Side- Sector blokunu okuyun ve .M ile tamamı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österen bir liste yeralır. Herbir kaydın uzunluğu, kaçıncı kayda ulaşmak istediğimiz ve Side-Sector'deki bilgiler bir araya geldiğinde, aranan kaydın disketin üzerinde tam olarak nerede başladığı bir iki hesaplama ile bulunabilmekte. Şimdi Side-Sector'ün yapı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 belirtir. Sonra gelen byte ise (864-100), herbir kayıdın uzunluğunu belirtir. Bunu izleyen 12 byte içinde, en fazla altı tane olabilen Side-Sector'lerin herbirinin adresi Track/Sector formatı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 listesi gelir. Eğer birinci Side-Sector bloku dolarsa ikincisi açılır. En fazla 6 Side-Sector olabileceğine ve her bir blok da en fazla 254 karakter alabileceğine göre, en uzun REL Dosya 6*120*254 —182880 karakter alabilir. Bu, zaten 1541'in bir diskete depolayabileceği bilgi miktarından da fazladır. Yani DOS'un değil, disket kapasitesinin engelleyici bir rolü var. Diyelim ki, herbiri 100 karakter olan kayıtlarımızdan 70 numaralı olanına erişmek istedik. DOS, şu işlemi yapar:

(70-1)*100/254

Sonuç 27 ve kalan 42 olacaktır. Demek ki aranılan kayıt, REL Dosyanın 27. blokunun numaralı byte'ından itibaren saklanmaktadır. Dikkat! Bloklar 0, 1, 2,... diye sayılmakta. 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 uzunluğu/254 formülü, aranan kaydın hangi blokta olduğunu verecektir. Bölmenin kalanı ise, bu blok içinde kaç byte ilerlememiz gerektiğini gösterecektir. Ancak bu sayıya, ilk iki byte'ın kullanılmaması nedeniyle, iki eklememiz gerekiyor... Tabii ki, byte'lar da O, 1, 2,... diye sayılıyor. Şimdi .R 10 0C ile o bloku da okuyup ekrana getirelim. “70 numara” yazısını ve $0D—13 kodunu (noktalı virgül kullanmamıştık!..) göreceksiniz. Eğer yukarıdaki işlem sonucunda 120'den büyük bir blok sayısı elde etseydik, o sayıyı da 120'ye bölerek hangi Side-Sector blokuna bakmamız gerektiğ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, 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öylediklerimizi 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 üzere, hoşçakalın...

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