Commodore sayı 2, sayfa 21

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 21

Ayrıca, kâğıdın yarısından çoğu boşa gider ve düzensiz bir görünüşe sahip olur. Hele bazı program isimleri, normal harf, sayı ve grafik karakterlerinden farklı bazı karakterlere sahip olduğunda, yazıcı bunlara değişik tepkiler göstermekte, kimi zaman basmamakta, kimi zaman ise kontrolden çıkmaktadır. Bazı disketlerin directory'leri ise üretici firma tarafından, yükleme sırasında bilgisayarı sonsuz döngüye sokacak biçimde hazırlanmıştır. İşte bizim programımız tüm bu zorlukların üstesinden gelecek. Bir kere kâğıda 3 ayrı disketin directory listesi yanyana basılacak, böylece kâğıt israfı ortadan kalkacak. Hatta, eğer yazıcınız MPS802 ise bir sayfaya 90 satır basılacak (normalde 66 satır). Bundan başka, her disket için ayrıca bir başlık verilebilecek. Yükleme işlemi sadece bir tuşa basarak başlatılabilecek. Bütün karakterler kontrolden geçirilecek ve basılamayacak olanlar yerine basılacak. Sonsuz döngüler önlenecek ve sonuçta her şey düzenli bir görünüşe sahip olacak. Şimdi bu programımızı satır satır açıklayalım. 10: Bir karakterin basılıp basılamayacağını öğrenmek için kullanacağımız fonksiyon. Eğer kontrolünü yaptığımız karakter kodu, 32'den küçükse veya 127-160 arasında ise basılamayacak bir karakter demektir. 15: Kullanacağımız değişkenleri belirliyoruz:

20-30: Gerekli sabitler yerine yerleş- tiriliyor. 31-41: Sırası gelen disketin takılma- sı ve bir başlık verilmesi bekleniyor. 42: Başlık, sonuncu karakteri boşluk olan toplam 24 karaktere tamamlanı- yor. Bu arada ZG hangi disketle (O, 1, 2) uğraştığımızı gösteriyor. 45: Daha o disketteki hiçbir dosya okunmadığı için dosya numarası -1'e eşitleniyor. İlk dosya sıfır numaralı ola- cak. 50-90: Komut kanalı ve depo açılı- yor. Disketin adı okunuyor ve her ka- rakteri kontrol ediliyor. Toplam 16 ka- rakter okunduğunda, disket adı DN$ içinde hazır oluyor. Bu arada 0 numa- ralı SECTOR'ün okunduğu işa- retleniyor. Bunu sonsuz döngüyü ön- lemek için kullanacağız. 100-440: Disket |D'si okunuyor, kont- rol ediliyor ve ekleniyor. En son- da da oluşan isim ve ID ekrana bası- İlyor. 120-4140: Her TRACK'daki boş blok sa- yısı BAM'dan okunarak toplanıyor. An- cak 18. TRACK'daki yani directory ta- rafından kullanılan TRAC'daki boş yer- ler bizi ilgilendirmediği için orayı atlı- yoruz. 150: Artık dosyaların okunmasına 18/01'den başlayabiliriz. 160: Eğer o bloku daha önceden okumuşsak, sonsuz döngü başlıyor demektir. O disketi okumayı bırakabi- liriz demek ki. 4161: O bloku okuduğumuzu işaret- liyoruz. 462-170: Sırası gelen bloku depoya okuyup, ilk iki byte'dan bir sonraki

için için için

T&$ Dosya tiplerini saklamak için NM& üç disketteki dosya isimlerini saklamak BLZ üç disketteki dosyaların uzunluğunu saklamak için : üç disketin kalan blok sayısları DN$ : üç disketin adları için HD$ : üç disketin başlıkları için Zi$ £ Dosyanın korunmuş olup olmadığını saklamak için : Dosyanın açık olup olmadığını saklamak TUZ £

Bir daha önce okunup okunmadığını bilmek için

TRACK ve SECTOR'ü öğreniyoruz. 180: O bloktaki 8 dosyayı okumaya başlıyoruz. Önce göstergeci, sırası gelen dosyanın dosya tipini gösteren byte'ına ayarlıyoruz. 190: Dosya tipini okuyoruz ve eğer sıfır ise, yani o yerde bir dosya ile ilgili bilgi yoksa, bir sonraki dosyaya geçiyoruz. 195-230: Dosya numarasını bir artırıp, dosya tipini belirten harfi ve dosya tipinin veya karakterlerine ihtiyacı olup olmadığını saptayıp, dosya adının içine yerleştirerek saklıyoruz. 250-280: Sırası gelen dosyanın adı, her karakteri kontrol edilerek okunup, harf harf N$'in içinde oluşturuluyor. En sonunda da, daha önce belirlenen dosya tipine eklenerek o dosya ile ilgili basılacak satır oluşturuluyor. 290-300: Dosyanın blok uzunluğu okunup hesaplanıyor. 305-310: O dosya ile ilgili bilgiler ekrana basılıyor ve bir sonraki dosya ile ilgili işlemlere geçiliyor. 320: O bloktaki dosyalar bittiğinde eğer hâlâ okunacak başka bir blok varsa, tüm işlemler yeni blok için de tekrarlanıyor. 325: Boş blok sayısı ekrana yazılıyor ve o disketle ilgili tüm okuma işlemleri bittiği için açılmış olan kanallar kapatılıyor. 330: Eğer daima üç disket okunmamışsa, tüm işlemler yeni bir disket için tekrarlanıyor. 340: Artık üç disketten toplanan bilgilerin kâğıda geçirilme zamanı geldi. Önce 6 numaralı kanaldan MPS802'ye satır aralarındaki boşlukları azaltan ve böylece sayfa başına satır sayısını 90'a çıkaran komut gönderiliyor. Sonra da üç disketin başlıkları basılıyor.

345-350: Disketlerin isim ve ID'leri yazılıyor. 355: İlk iki satırın altı çiziliyor. Böylece, bir bakışta kâğıttaki dosya isimlerini bulmak mümkün olacaktır. 360-386: Artık her üç disketteki dosyaların blok sayısı, isim ve tipini yazabiliriz. Her üç directory aynı uzunlukta olmayacağı için her satırda nereye kadar yazı yazılacağını kontrol etmemiz gerekir. Bunu 380-383'te yapıyoruz. 385'te ise başka dosya adı kalmadığını anladığımızda, döngüyü bitiriyoruz. 390-392: Her disketin boş blok sayısını, belli bir uzunluğa getirerek basıyoruz ve açtığımız yazıcı kanalını kapatıyoruz. 395-420: Bilgisayar bir tuşa basmamızı bekliyor. Eğer bu tuş sola bakan ok ise, MPS802'nin satır açıklığı normale döndürülüp program bitiriliyor. Eğer başka bir tuş ise program yeniden başlatılıyor.

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