Commodore sayı 3, sayfa 54

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 54

İkinci sayımızı alan ve özellikle disket konusuyla ilgili okurlarımız, disketin TRACK ve SECTOR'leri ile ilgili yayınladığımız yazıyı hatırlayacaklardır. O yazımızda, disket üstündeki bilgileri nasıl okuyup, nasıl değiştirebildiğimiz hakkında da bazı açıklamalar yapmıştık. Ve örnek bir program vermiştik. Bu program disket DIRECTORY'lerini okuyup düzenli bir şekilde kâğıda geçiriyordu. Bu sayımızda da, hem okuyan, hem de değişiklikler yapabilen bir program geliştireceğiz. Amacımız, disketimizin adını ve ID kodunu okuyup değiştirmek ve bu arada disketimizdeki dosyalara zarar vermemek. —

Tuna ERTEMALP birkaç noktayı hatırlayalım... Disketimizin adı, TRACK 18 ve SECTOR 00 ile adreslenen blok üzerinde bulunmaktadır. Bu blokun 144. ve 161. byte'ları arasında kalan 16 byte'lık bölümde bulunur. Eğer isim 16 karakterden kısa ise, SHIFT-SPACE karşılığı olan 160 kodu ile 16 karaktere tamamlanır. Aynı TRACK ve SECTOR üzerinde, 162. ve 163. byte'larda da iki karakterlik ID kodu yer alır. Disketin üzerindeki herhangi bir yeri okuyup, değiştirip, tekrar geri yazmak için de bazı komutlar olduğunu görmüştük. Önce diskete bir depo kanalı açmasını söylüyor (OPEN 2,8,2,“#”), sonra da emir kanalından gönderdiğimiz disk sürücüsü komutları ile istediğimiz bloku bu depoya okuyup (PRINT#15,“B-P”;2;0), istediğimiz byte'ını değiştirip (PRINT#15,“B-P”;2;BYTE), o bloku tekrar geri yazıyorduk (PRINT#15,“U2”;2;0;TRACK;SECTOR). Bu kısa hatırlatmadan sonra programımıza gelelim. Oldukça kısa olan programımızda izleyeceğimiz yöntem, önce disketin isim ve ID'sini okuyup bunu ekranda göstermek, eğer değişiklik gerekiyorsa yeni isim ve ID almak, bunu disket üzerine yazmak ve kontrol amacıyla yeniden okuyup ekrana basmak olacak. Şimdi satır satır açıklamaları yapalım: SATIR 10: Önce 100. satırdan başlayan, disket üzerinden isim ve ID'yi okuyacak ve ekrana basacak olan altprogram çağırılıyor. Sonra da 235 numaralı satırdan itibaren program çalışmaya devam ediyor. SATIR 400: VC-1541'in emir kanalı

© PERİYODİK

-16

© SÜREKLİ FORM açılıyor ve yeni komutu gönderiliyor. Böylece VC-1541 içindeki diskete ait bazı önemli bilgileri kendi içine yerleştiriyor. Buna, VC-1541'in içindeki disketi 'farketmesi' de diyebiliriz. Daha sonra ikinci kanala bağlı depo açılıyor ve TRACK 18/SECTOR 00 depoya okunuyor. Son olarak da depo göstergeci, 144. byte'ın üzerine gelecek şekilde ayarlanıyor. SATIR 160-200: Önce DN$'in içi temizleniyor ve depo göstergecinin gösterdiği 144. byte'dan itibaren 16 byte okunarak DN$'in içine yerleştiriliyor. Artık disketimizin adı, DN$'in içinde hazır. SATIR 210: Bu sefer depo göstergecini 162. byte üzerine yerleştiriyoruz. Daha sonra da, önceden içini temizlediğimiz ID$'in içine iki karakterlik disket ID'sini okuyoruz. SATIR 220: Açtığımız emir ve depo kanallarını kapatıyoruz. Bunu VC-1541'in kırmızı ışığının sönmesinden de anlayabilirsiniz. SATIR 230: Artık okuduğumuz isim ve ID'yi ekrana yazıp, altprogramın çağrıldığı yere geri dönebiliriz. SATIR 235-245: DN$'i, disketimizin yeni adını saklamak için kullanacağız. Ancak eğer disketimizin adını değiştirmek istemezsek ne olacak? İşte bunun için DN$'in içine önceden sola bakan ok karakterini yüklüyoruz. Bir sonraki INPUT komutunda herhangi bir isim verilmeden doğrudan doğruya RETURN tuşuna basılırsa, program 245 numaralı satırda bitecektir. Bu arada SP$'in içinde 16 karakter uzunluğunda ve 160 numaralı karakter kodundan oluşan bir dizi hazırlanıyor. INPUT komutunda birbirinden virgül ile ayrılmış iki isim vermelisiniz. Birincisi en fazla 16 karakter uzunluğundaki disket ismi olacak. İkincisi ise iki karakterlik disket ID'si... (Örnek: deneme,di) SATIR 250: DN$, 16 karaktere tamamlanırken, ID$ de iki karakter uzunluğa getiriliyor. SATIR 260-290: Yeniden 15 numaralı emir kanalı açılarak “I” komutu gönderiliyor. Komutun “I0” olmasının nedeni, VC-1541'in normalde 0 numaralı sürücü olmasından kaynaklanıyor. Daha sonra depo kanalı açılarak, TRACK 18/SECTOR 00 depoya okunuyor. Depo göstergeci 144 numaralı byte'a ayarlanıp DN$ depoya yazılıyor. Daha sonra depo göstergeci 162 numaralı byte üzerine getirilip ID$ yerleştiriliyor. En sonda da depodaki değişmiş bilgi, TRACK 18/SECTOR 00'a geri yazılıp depo ve emir kanalları kapatılıyor. SATIR 300: Yeni yazılan isim ve ID tekrar okunarak ekranda gösteriliyor ve böylece bir kontrol imkanı sağlanıyor.

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