1571'i Tanıyalım

Bu yazımızda kısaca 1571 disket sürücüsünü tanımaya çalışacağız. 1571, çeşitli disket formatları ve veri transfer hızlarında çalışabilen, tek yüz tek yoğunluktan çift yüz çift yoğunluğa kadar disket formatlarını kullanabilen bir disket sürücüdür. 1571'i çeşitli Commodore bilgisayarları ile kullanmak mümkündür. Kullanabileceğimiz bilgisayarlar içinde C128, C64, PLUS4, C16 ve VIC20 yer alıyor. 1571 özellikle C128 ile kullanıldığında tüm özelliklerini kullanır. Bu özelliklerin bazılarını kısaca inceleyelim. * 1571, C128 bilgisayarında mevcut olan C128, C64 ve CP/M kullanım şekillerine uygun, veri transfer hızını seçer.

* MFM, çift yoğunluk formatında yazma ve okuma işlemleri yapabilir.

Bu format şekli sayesinde Commodore dışında başka bilgisayarlarda mevcut olan CP/M altındaki programları kullanmak mümkün olur. * Çift taraflı, çift kayıt yapabilirsiniz. Bu şekilde bir diskette 339K'lık bilgi saklayabilmeniz mümkündür. 1571'i C64 bilgisayarı ile veya C128'de C64 modunda kullandığınızda, 1571 GCR tek yoğunluk formatını kullanır. Bu format tipini 1541, 1551, 4040 ve 2031 disket sürücüleri de kullanmaktadır. 1571, C64 ile veya C128'de C64 modunda kullanıldığında tamamen 1541'i taklit eder ve onun hızında çalışır. Bunun dışında C128'de kullanıldığında 1541'den çok daha hızlıdır. DOS (Disket Operating System), Disket Çalışma Sistemi, bilgisayar ile disket sürücüsü arasındaki bağlantıyı sağlar. DOS, dosyaların açılması, düzeltilmesi ve silinmesi gibi işleri düzenler. Bundan başka disketteki boş yer miktarını takip eder, disket kataloğundaki dosya isimlerini saklar ve bu dosyaların nerede olduğunu kontrol eder. Ne olduğunu söylediğimize göre Commodore bilgisayarının DOS'undan bahsedebiliriz. 1571 akıllı bir alettir. Akıllı kelimesi ile ne demek istiyoruz? 1571'in kendi CPU'su ve ROM'u vardır. Böylece 1571, kendini kullanan bilgisayarın CPU'suna ihtiyaç göstermeden marifetlerini ortaya koyar. Buna rağmen 1571, bilgisayar kendisinden bir şey istemeden çalışmaz. Buna bir örnek verelim. Mesela, bilgisayara DIRECTORY veya LOAD"$",8 komutunu verdiniz. Bilgisayar bu komutu disket sürücüye gönderir, ondan cevap gelmesini bekler. Bu istekten sonra disket sürücüsü, ilk önce disket olup olmadığını kontrol eder, sonra dönmeye başlar, dönüşün gerekli hıza ulaşmasını bekler, okuyucu/yazıcı kafayı istenilen bilginin olduğu TRACK'a getirir. Ve-

ğer 1571

kullanıyorsanız birçok bakımdan şanslısınız demektir. Örneğin 1571'de disket

İşlemleri çok hızlıdır.

riyi okur, sıralar ve bilgisayara gerekli bilgiyi iletir. C64 veya C128 bilgisayarı C64 modunda iken, kendi içlerinde DOS taşımazlar. Bütün DOS programı 1571'de bulunur. Aynı durum C128'in C128 modu için de geçerlidir. Ancak 1571 ile C128 birbirleri ile daha iyi anlaşabildikleri için DSAVE, DLOAD, HEADER gibi anlaşılması kolay komutları kullanabilirsiniz. Bu komutları C128'in BASIC 7.0'ına borçlu olduğumuzu söylememize gerek yok. Mesela, C64 veya C128'de C64 modunda iken bir disket formatlamak isterseniz, vermeniz gereken komutları görelim:

OPEN 1,8,15
PRINT #1, “Nesim,ıd””
CLOSE |

C128'in C128 modunda disket formatlamak, bu işi anlaşılır bir komutla ve tek satırda halledeceğimiz için çok daha kolay olur:

HEADER “ısım,1d”'DO
veya
HEADER “ısım,l1d,DO

Eğer daha evvel bir disketi yeniden formatlayacaksanız C128 modunda bu işi 3 saniyede yapmanız mümkündür:

HEADER “ısım”

1571, HEADER Komutunu bitirdikten sonra herhangi bir hata olup olmadığını kontrol edip bize bildirir. Buna karşın C64 modunda iken disket formatladıktan sonra herhangi bir hata olup olmadığını anlamak için fazladan birkaç komut daha yazmanız gerekir. Biraz da C128'in CP/M modu ve 1571'in rolünden bahsedelim. 1541 kullanarak CP/M modunda çalışabilirsiniz. Bunu sağlamak için sistem disketi GCR formatı ile hazırlanmıştır. Ancak size disket kataloğunu verecek DIR komutunun sonucunu alabilmek için bile büyük bir sabırla beklemeniz gerekir. Ama eğer 1571 kullanıyorsanız, birçok alanda şanslısınız demektir. İlk olarak her türlü disket işlemi hızlı gerçekleşir. Mesela, DIR komutunun sonucunu çok çabuk alırsınız. 1571, GCR formatı dışında MFM formatını da tanıdığı için diğer bilgisayarların CP/M disketlerinden de yararlanırsınız. CP/M modunda, DOS bilgisayarın hafızasında yer alır. CP/M sistemi yüklenirken DOS programı da bilgisayarın hafızasına yüklenir ve bilgisayar tarafından çalıştırılır. Tüm dosya işlemleri de bilgisayarda halledilir. C128'de bulunan BASIC 7.0'ın anlaşılması çok kolay ve yararlı komutlar içerdiğini söylemiştik. BASIC 7.0; BASIC 2.0, BASIC 3.5 ve BASIC 4.0'ın komut setlerini kapsar. Bu yüzden kullandığınız BASIC'e göre başka bir deyişle kullandığınız Commodore bilgisayarına göre siz de BASIC 7.0'da kullanılan disket ile ilgili komutların bazılarını kullanabilirsiniz. Yazıya BASIC 7.0'da bulunan disket komutlarını inceleyerek devam edeceğiz.

Herhangi bir işlemden sonra disketinizin ışığı yanıp sönmeye başlarsa bir hata yaptınız demektir. Yapmış olduğunuz hatayı öğrenmek için tek satırlık bir komuta ihtiyacınız var:

PRINT DS$

Herhangi bir programınızı diskete saklamak için SAVE etmeniz lazım. İlk önce formatlı bir disketi disket sürücüye yerleştirip aşağıdaki komutu yazın.

Burada ufak bir hatırlatma yapalım. DSAVE ile sadece BASIC programları saklayabilirsiniz. Makine dili programlarını saklamak için BSAVE komutunu kullanmanız gerekir.

BSAVE''dosya-ısmı'',Pbaslangıc
adresi TO Pbıtım adresi 4 İ

Buna bir örnek verelim:

TO P51000

Makine dilinde yazılmış bir programı C128'de bulunan MONİTOR programından da SAVE edebilirsiniz. Bu komutun şekli:

adresi,bıtım adresı 4 |

Adresleri HEX veya Desimal verebilirsiniz. Saklamak istediğiniz dosya diskette kayıtlı ise ve siz onun yeni halinin eskisinin üzerine yazılmasını istiyorsanız yazmanız gereken:

Diskete bir program kaydettiniz ama içimiz rahat etmedi. Kaydın doğru olup olmadığını kontrol etmek istiyorsunuz:

Herhangi bir kelime işlem veya benzeri bir programla uğraşıyorsunuz. Ve iki ayrı SEQ dosyanız var. Bu iki dosyayı birleştirmek isterseniz kullanmanız gereken komut:

CONCAT “eklenecek-dosya” TO “ilk-dosya”

Bu komuta örnek verelim: Mesela ilk dosyamızın adı A, ikincisinin adı B olsun. Bizim amacımız A dosyasına B dosyasını eklemek:

CONCAT“B” TO “A”

Bu komut işleme konduktan sonra A dosyası silinecek, yerine A ve B dosyalarının birleştirilmesi ile oluşan dosya A adı ile yeniden kaydedilecek.

Gelelim en yararlı komutlardan birisi olan SCRATCH komutuna. Bu komuta yararlı dememizin sebebi oldukça sık kullanmanız ve eğer BA-SIC 2.0 ile bu işlemi yapacak olursa-

1571, 1541 ile uyumlu olduğu için Tuna Ertemalp'in “1541'i Anlamak” dizisindeki bilgiler 1571'e de uygulanabilir.

nız yapmanız gereken komutların uzun olması.

SCRATCH “dosya-ismi”

Bu komuttan sonra size ARE YOU SURE? (Emin misiniz?) sorusu yöneltilip cevap beklenir. Cevabınız “Y” olursa istediğiniz dosya veya dosyalar silinir.

Hemen bu komutun gazabına uğramış kişilerin işine yarayacak bir şey söyleyelim. Eğer kazara istemediğiniz bir programı sildiyseniz ve henüz o diskette başka bir işlem yapmadıysanız, disket sürücünüzle birlikte gelen diskette bulunabilecek olan UNS-

CRATCH (veya buna benzer bir isim) programı ile kaybettiğiniz programı kurtarabilirsiniz. Disketinizde bulunan dosyalardan birinin ismini değiştirmek isterseniz kullanmanız gereken komut:

RENAME “eski-isim” TO

Eğer, bir diskete devamlı program kaydedip, program silerseniz bir süre sonra dosyaların blok sayıları ile diskette boş kalan blok sayısının tutmadığını görürsünüz. Diskette esir kalmış bloklarınızı kurtarmak için kullanacağınız komut:

COLLECT

Yalnız bu komutu içinde RANDOM dosyaların bulunmadığı disketlerde uygulayın, aksi takdirde bu dosyaları kaybedebilirsiniz. RELATIVE dosyalarınıza ise hiçbir zarar gelmez. Kısaca BASIC 7.0'da yer alan disket komutlarını gördükten sonra iki disket sürücüsü ile çalışma şansına sahipsek, bunları aynı anda nasıl kullanabileceğimizi görelim: Eğer iki disket sürücümüz varsa program kopyalamak veya disket kopyalamak daha zahmetsiz ve kısa olur. Ancak bilgisayar açıldığında disket sürücüsüne 08 alet numarasını verir. Eğer disket sürücülerinden birini 09 yaparsak iki disket sürücü birbiri ile karışmaz:

10 INPUT “Eskı alet
FAN
20 INPUT “Yenı alet
YAN
301F YAN 8 OR YAN >30
THEN 20
40 OPEN
15,BAN,15,“U0 >'*4 CHR$
(YAN):CLOSE15

Alet numarasını değiştirmek istediğiniz disket sürücü açık iken diğerini kapatıp bu programı çalıştırın.

Daha sonra ikinci disket sürücüyü açın. Artık iki disket sürücü de emrinize amade vaziyettedir. 1571, 1541 ile uyumlu olduğu için Tuna Ertemalp'in “1541'i Anlamak” yazı dizisindeki tüm bilgileri 1571 disket sürücüsü için de uygulayabilirsiniz. Sonuç olarak gerektiği yerde gerektiği hızda çalışmasını bilen ve tüm bilgi ortamlarına ayak uydurabilen bir disket sürücü ile çalışmak istiyorsanız, 1571 tam size göre demektir.

SAMET KUMAŞ

Artık adet haline geldi: İki sayıda bir, işe bir önceki sayıda yer alan hataları düzeltmekle başlıyoruz. Üstelik bu seferki de nispeten ciddi. Geçtiğimiz sayıda verdiğimiz ve güneş şeklini tasarlamak için geliştirilmiş işlemle, istediğimizi elde edemeyiz. Daha doğrusu, bir güneş şekli elde ederiz ama bu, renkli olmaz. Sebebi basit. İşlem üzerinden ilk geçişte bilgisayar REPEAT 72 komutuna rastlayacak ve bunu izleyen komutların ise parantez içinde (PC :X+1 DORTGEN RT 5) komutları ile karşılaşacaktır. PC'nin değerini 1 artırdıktan sonra, 72 kere, parantezin dışına çıkmadan, onu izleyen işlemleri yerine getirecektir. Yani, DORTGEN'i 5'er derece sağa kaydırarak 72 kere çizecektir. Ondan sonra da parantezin dışına çıkacak ve END komutu ile karşılaşıp sona erecektir. Dolayısıyla, REPEAT 72 komutuna rağmen, çizgilerimizin rengini belirleyen PC'nin değeri ancak 1 kere artırılmış olacaktır. Dolayısıyla da, alacağımızı söylediğimiz, PC DOESN'T LIKE 16 AS INPUT mesajını almayacağız.

Kendi Üzerine Dönen Kaplumbağa

Bu hata mesajını almak ve renkli bir güneş çizmeye, hiç değilse başlamak için, bütün diğer yapay zekâ dilleri ile birlikte LOGO dilinin de en önemli özelliği olan, “kendi üzerine dönüşlülük” (recursivity) özelliğinden yararlanmamız gerekiyor. Başka bir deyişle, işlemimizin çalışırken kendi kendine gönderme yapması, yani kendi kendini çağırması gerekiyor. Şöyle,

YO GUNES
MAKE “X :X41
PC :X
DORTGEN RI 5
GUNES
END

Burada ilk dörtgen çizilip, kaplumbağa 5 derece sağa döndükten sonra her şey yeniden başlayacak, dolayısıyla da PC'nin değeri bir kere daha artırılacak, dörtgen bir kere daha çizilecek, kaplumbağa bir kere daha 5 derece sağa döndürülecek ve işlem yine kendi kendisini çağıracak ve ilh. (Kendi üzerine dönüşlülüğün mantığını daha iyi kavramak istiyorsanız, işlemi çalıştırmadan önce, TRACE yazın. LOGO size işlemin çalışmasının her evresini gösterecektir. Sıkıldığınızda da NOTRACE yazın.) İşlem kendi kendisini 15 kere çağırdığında :X'in değeri 1, dolayısıyla da PC'nin değeri 16 olacaktır. İşte bu noktada da LOGO size PC DOESN'T LIKE 16 AS INPUT, yani PC girdi olarak 16'yı beğenmiyor, diyecektir. Bu durumu düzeltmek için gereksindiğimiz koşullu komutu nereye yazacağımız açık olmalı: (Karışıklık olmasın diye bu düzeltilmiş işlemi GÜNES2 diye adlandıralım):

TO GUNES2
IF :X—15 THEN MAKE “X 0 ELSE PC :X
DORTGEN RI 5
GUNES
END