Amiga Dünyası sayı 17, sayfa 32
Sayfanın metni

Sayfa 32

bunu tutar. Bilmiyorum aklınıza geldi mi, ama Amiga blockları sadece bir programa ayırabiliyor. Diyelim ki, biri 200 byte biri ise 35 byte uzunluğunda çok küçük iki adet dosyanız var (Mesela startup-sequence'lar). Bu iki dosya, toplam 235 byte yer kaplayacaklardır. Oysa Amiga, bu iki dosyayı saklamak için, 2048 byte yer ayıracaktır. Her program için bir Header ve bir data block'u, her block 512 byte'tan eder 2048 byte. Bir diskete bu iki dosyadan en fazla 440 adet yerleştirebiliriz (Neredeyse). Oysa Amiga'nın bu sistem özellikleri olmasaydı, bu dosyalardan tam 3834 adedini diskete sığdırabilecektik. Burada kazancınızın neredeyse 9 katı olduğunu belirtmeme müsaade edin. Programlama yapan arkadaşlar, bu miktarda bir kazancın ne demek olduğunu anlayacaklardır (20 Mb'lık harddisk ile 180 Mb'lık arasındaki fiyat farkını da düşünelim lütfen). Bu yüzden birçok programcı, verilerini doğrudan disketten okutmaktan hoşlanır, bu yönteme Trackloading adı verilir. Programcı, burada Track sector parametrelerini hatta disket yazma hızını ve kodlamayı bile değiştirebilir. Bugün birçok oyun bu sistemle yazılır. Programcı, sistemi kullanmadığından tüm yüklemeler için kendisi programlar yazar, (Shadow of the Beast'i yazan adam bu basit iş için pek zorlanmamış olsa gerek) bu açıdan tecrübeli programcılar değilseniz, sizin için bu yöntemi kullanmak o kadar kolay olamayacak.

Sistem, bu türde kullanılmış bir disket hakkında hiç bir fikir sahibi olamayacaktır. Kısmen doğrudan yazılmış disketler de mevcuttur. Sorun, eğer programlayan tarafından haberdar edilmemişse, sistemin bu doğrudan yazılmış kısımları boş olarak göstermesi olacaktır.

Amiga, Bootblock'u formatlı olup DOS veya KICK harfleriyle başlamayan veya Rootblock'u olmayan disketleri tanımayacak, bunları "Not a DOS disk in Drive .." olarak belirtecektir. Buradan sonra anlatacaklarımız, sistemi kullanan programlara ait disketler için geçerli olacaktır. Herhangi bir şekilde sistem bir hata var dediğinde, disketin yukarıda belirtildiği gibi doğrudan yazılmamış olduğundan emin olduktan sonra tamir işlemlerine geçin.

Yukarıda block tiplerini anlatmıştım, şimdi size bir fikir verebilmek için, block türlerini ve bu blockların bazı bölümlerinde nelerin bulunduğunu aşağıdaki tabloda sıralayacağım (Bir long = 4 byte, tüm adresler long cinsinden $ işaretini takip eden sayılar Hex). Tüm liste işinize yaramayacağından burada yayınlamıyorum, zaten birçok kaliteli disk programı, bu block'ları yorumlayabilecek güçtedir.

Burada programların saklanışında dikkat ettiyseniz, blok sırası ilk önce File-Header içinde belirleniyor, ancak her blok'un başında bir sonraki Data'nın numarası bir daha verilmiş. Bu ikisinin uyuşmaması bir başka sorun, sonuç yine Read/Write Error. Hemen bu konudayken bir hatırlatma daha. Data blockları eğer arka arkaya geliyorsa, kafa hiç zorlanmadan programı okuyacaktır. Ancak sık silmeler sonucu disketinizin arasında birçok irili ufaklı boşluklar oluşacaktır. En sonunda yeni kopyalayacağınız bir programı, sistem diskete arka arkaya kaydedemeyecek, programınızı disketin bu boşluklarına serpiştirecektir. Bu durum bilgisayar açısından çok sakıncalı olmamakla beraber, kafanın programı okuması için çok sık hareket etmesi gerekecektir. Drive'ın gırç gırç sesleri sizi gıcık etmese bile, yükleme süresinin uzaması, sizi de önlem alma yoluna sokacaktır. Disk Space Fragmentation adı verilen bu durum, en kolay olarak tüm disketi hafızaya alıp düzenleyerek yeniden disketin üzerine yazarak halledilir. Bu işin genel adı Optimization'dır. Xcopy başta olmak üzere birçok program, size bu iyiliği yapacaktır.

Evet, bu biraz uzunca kaçan açıklamaların ardından gelelim asıl konumuza. Read/Write Error'lara. Sistem bir disketi okurken bir sorunla karşılaşırsa, bu hatayı verecektir. Bunun çeşitli sebepleri olabilir, şimdi bunları inceleyelim.

- Bazı Virüsler, özellikle de Lamer Exterminator, disketinizin yazma koruması (Write Protect'i) yoksa disketinizin bazı blocklarını formatlayarak bilgi kaybına yol açarlar. Lamer Exterminator adlı virüs, rasgele denebilecek bir şekilde disketi arar ve bir Data block'u bulduğunda burasını Lamer! yazısı ile doldurur. Sonuç olarak bu data block'u kullanılmaz hale gelir.

- Amiga sistemi, block'lara birçok kontrol elemanı yerleştirir. Bunların en önemlisi Checksum'dır. Bu bilgi ile okunarak bulunan bilgilerin uyuşmaması halinde sistem bu bilgilere güvenmeyecek ve hata verecektir. Bu tür hatalar yine virüsler, bilinçsiz disket kurcalayan kullanıcılar ve zamansız olarak bilgisayarın kapatılması veya çakılması ile oluşur. Sistem, mesela rootblock'a yeni bir dosya ekler; ancak rootblock checksum'unu değiştiremeden veya bitmap üzerinde gerekli değişikliği yapamadan kapatılır veya çakılır, işte size en basitinden bir read/write hatası.

- Disket işlemi tamamlanmadan, disketin çıkartılması. Dikkatsizlik sonucu, disketin çalışıyor ışığı yanarken disketin çıkarılması esnasında muhtemelen okuma yazma yapan kafa, disket üzerinde bilgi kayıplarından, hatalı formatlara hatta en kötüsü fiziksel hatalara varan sorunlar çıkarır (Validating Errors). Tabii ki, bu söylediklerim sistemden yükleme yapan programlar kullanılırken geçerlidir. Birçok oyunda Drive ışığının sönmediğini, bu durumda disket değiştirilebildiğini farketmişsinizdir. Bu tür kullanıcı hatalarını önlemek için, yeni drive üreticileri elektronik disket çıkarma sistemleri geliştirmişler. Bunlar sayesinde, siz çıkış düğmesine basıyorsunuz, okuma yazma bitince disket dışarı çıkarılıyor.

- Son olarak program hataları. Bugüne dek kendi yaptıklarımın dışında okuma yazma yaparken sorun çıkaran program görmedim. Ancak, birçok program bir arada çalışırken aynı disket üzerinde işlem yapılınca temiz programlanmamış bazı programlar sorun çıkarabilmektedir.

Sorunları ve olası sebeplerini özetledikten sonra gelelim çözüm yollarına. Eğer

Rootblock LongByte İçerik Anlamı 0 2 Bir yapının başı olduğunu belirler. 5 Checksum Blocktaki tüm sayıların toplamını sıfır yapacak sayı 78 -1 Bu sayı-1 ise BAM geçerli 79 BAM BAM'ın hangi blokta olduğu 108 isim Disketin ismi, ilk karakter ismin uzunluğunu veriyor 127 -1 RootBlock'u belirler File Header Longbyte İçerik Anlamı 0 2 Bir yapının başlangıcı 1 Header Blok numarası 2 Toplam blok sayısı 4 İlk Data blok numarası 5 Checksum 6-77 Data-Blokları 77'den aşağı sıra ile data bloklarının yerleri 108 İsim Dosyanın ismi 125 Parent Dosyanın ait olduğu directory 126 Extension Tüm data blokları buraya sığmazsa burada devamın olduğu blok adresi yer alır, aksi takdirde değeri sıfırdır. 127 -3 veya $FFFD File Header olduğunu belirler

File List File Header'ı tamamlayan, aynı yapıda bir blok. Sadece ilk Long $10'a eşittir. Bu sayede File Header'den ayrılır.

User Directory LongByte İçerik Açıklama 0 2 Bir yapıyı belirliyor 5 Checksum 127 2 User-Directory için Data Block LongByte İçerik Açıklama 0 8 Türü = Data 1 Header Data Blok'un Header'ının bulunduğu blok numarası 2 Seq Num Bu block'un sıradaki kaçıncı block olduğunu gösterir 3 $ 1E8 Data sayısı (488), daha az olabilir 4 Sonraki Bir sonraki data blok numarası 5 Checksum 6'dan itibaren datalar Boot Longbyte İçerik Açıklama 0 DOS,KICK Disket türünü belirler. KICK A1000 için WORM bilgisi taşıyor 1 Checksum 2 $370 Rootblock adresi 3-127 Program veya data.

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