Bu sayfadaki yazılar
Sayfanın metni
Sayfa 49
CMD komutu ise, normalde ekrana yapılan her türlü çıktının belirtilen bir kanala yapılmasını sağlar. Örneğin OPEN 1,4,0:CMD 1 yaptıktan sonra ekranda yazılması gereken her şey printer'a gidecektir. Bu tür bir işlemin diskette ne işe yarayabileceğini ileride göreceğiz.
Bir kanal ile işimiz bittiğinde onu kapatmamız gerekir. Bu, özellikle 1541 ile yapılan haberleşmelerde çok önemlidir. Örneğin CLOSE 3 vererek üç numaralı kanalın işini bitiririz. Geçen sayımızda üzerinde çalıştığımız disketi inşallah bozmadınız. Bu ay gerekeceğini söylemiştik. Öğreneceğimiz DOS komutlarını onun üzerinde deneyeceğiz. 1541'in akıllı bir alet olduğunu söyleyerek işe başlayalım. İçinde kendi işletim sistemi ve kendi merkezi işlem ünitesi vardır. Aslında bu pek rastlanmayan bir özelliktir. Birçok iş bilgisayarı, kullandığı disket sürücülerine hitap etmek için gerekli işletim sistemini kendi hafızasında saklar ve bu da çok değerli boş hafıza miktarını ister istemez azaltır. Ancak bizim durumumuzda bu sözkonusu değil.
1541 kendi başına çalışabildiği için ona kendi komutlarını gönderip işi bitince bizi haberdar etmesini bekleyebiliriz. Bu komutları, demin de sözünü ettiğimiz komut kanalını kullanarak gönderiyoruz ve gene bu kanalı kullanarak 1541'in bize gönderdiği mesajları alıyoruz. Bu kanalı kullanmanın ilk örneğini geçen sayımızda yapmıştık. Disketimizi kullanmadan önce onu formatlamak için:
OPEN 1,8,15,“N: DENEME,01”: CLOSE 1
komutunu kallanmıştık. Burada neler yaptık? Önce | numaralı haberleşme kanalını 8 numaralı alete, ki bu da disket sürücüsü oluyor, 15 numakıllı bir alet olan 1541, içinde kendi işletim sistemi ve kendi merkezi işlem ünitesini taşımaktadır.
ralı ikincil adres üzerinden bağlıyoruz. Bu ikincil adres 1541'in komut kanalını aktif hale getirdiğine göre, arkasından gelen karakter dizisinin de bir dosya adı değil de bir komut olması gerekiyor. “N:DENEME,01” yazısı bir komut ve şu parçalardan oluşuyor: N: NEW kelimesinin kısaltılmışı ve disketimizin baştan sona temizlenmesi gerektiğini 1541'e bildiriyor. Arkasından iki nokta üstüste gelmesi şart. 1541 bunu komut ile arkasından gelen yazıyı ayırmak için kullanıyor. DENEME: Disketi temizledikten sonra adının ne olması gerektiğini burada veriyoruz. En fazla 16 karakter olabilir. 01: Bu da disketimizin kodu. İngilizce de ID (Identification) olarak bilinir. İki karakterden oluşur ve çok içindeki disketin değişip değişmediğini bu koda bakarak anlar. Bu nedenle kullandığınız her disketin ID'sini farklı yapmaya dikkat edin. Formatlama komutunu verirken isim ve ID arasına virgül koymayı unutmayın! Dikkat ederseniz, yukarıdaki format komutunu tek satırda ve OPEN komutu ile birlikte gönderdik. Bunun illa da böyle olması gerekmiyor. Aşağıdaki örnek de aynı işi yapar:
OPEN 1,8,15 PRİNT # ,“N:DENEME,01” CLOSE 1
Gördüğünüz gibi, komut kanalına hitap ederken muhakkak komutu da göndermemiz gerekmiyor. Daha sonraki haberleşmelerde kullanmak için onu en baştan açmamız, sonra da PRINT kullanarak komutlarımızı göndermemiz mümkün. Ayrıca, eğer 1541'e komut göndermek istemiyor da, sadece onun mesajlarını görmek istiyorsak, gene bu tür bir OPEN işlemi yapmamız gerekiyor. Sırası gelmişken, komut kanalının nasıl okunacağını, 1541'in mesajlarının nasıl alınacağını ve anlamlarını görelim. Bu kanalı okumak için aşağıdakine benzer türde bir program vermeniz gerekmekte. Bunun nedeni, tıpkı INPUT gibi INPUT — komutunun da sadece program içinde kullanılabilir olması.
10 OPEN 1,8,15 20 INPUT : 1,A,AS$,B,C 30 PRİNT A;A: 40 CLOSE 1
Programdan da anlayacağınız gibi, 1541'in mesajları dört parçadan oluşuyor. İlki bir sayı ve mesajın kodunu belirtiyor. İkincisi ise, ilk sayı ile verilen koda ait mesajın yazı ile yazılmış hali. İkinci ve üçüncü sayılar ise, eğer gönderiler mesaj disketteki bir hatayı bildiriyorsa, o hatanın hangi track ve sector'de olduğunu belirtiyor. Şimdi disketimizi takalım ve directory'i yükleyelim. Sonra NEW verip yukarıdaki program parçasını yazahm ve çalıştıralım. Ekranda,
0OKO00 yazısı çıkacaktır. 1541 bize işlerin yolunda olduğunu bildiriyor. Şimdi disketi çıkarın ve directory'i yüklemeye çalışın. Disket sürücümüz biraz takırdayacak, sonra da kırmızı ışık yanıp sönecektir. Daha önce de belirttiğimiz gibi, bu ışığın yanıp sönmesi bir hata olduğunu gösterir. Ve her hata olduğunda, 1541'in komut kanalında hatayı açıklayan bir mesaj hazır bekler. Bize kalan onu okumak. RUN komutu ile programımızı bir kez daha çalıştıralım ve bu seferki mesajı okuyalım:
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 48
Eğer bir programı ,8,1 ile yüklemişseniz ve program kendiliğinden başlamamışsa VERİFY “İSİM”,8,1 ile kontrolunu
Esas sorun belli bir hafıza blokunu SAVE etmekte ortaya çıkar. Eğer makina dili bir program SAVE etmek istiyorsanız, makina dilinden biraz anlıyorsunuz demektir. Bu durumda da muhtemelen bir makina dili monitörünüz vardır. Bu monitörün SA-VE komutunu kullanabilirsiniz. Bu SAVE genellikle,
.S “İSİM”,08,AAAA,BBBB
türünde olacaktır. AAAA ile başlangıç adresi, BBBB ile de bitiş adresinden bir sonraki adres, onaltılık sistemde temsil edilmektedir.
Ama makina dili bilmiyorsanız, makina dili monitörünüz yoksa ve gene de belli bir hafıza bölümünü diskete almak istiyorsanız, aşağıda verdiğimiz minik programı kullanacaksınız. SAVE “İSİM”,8,1 gibi bir komut YOK!
A-256*AH NT (B/256 70 BL— B-256*BH 80 SYS (57812)AS,8 90 POKE 193,AL 100 POKE 194,AH 110 POKE 174,BL 120 POKE 175,BH 130 SYS 6257
Biraz makina dili bilenler yukarıda yaptıklarımızı anlayacaklardır. Yukarıdaki hesaplamaları elden yapıp tüm komutları tek satırda vermek de mümkün. 80 numaralı satırdaki SYS komutunda bir hata yok. COM-MODORE 64'ün işletim sistemindeki bir rutini kullandığımız için böyle küçük hilelere başvurmamız gerekebiliyor. Böylece VC 1541'e program dosyası göndermenin ve çağırmanın inceliklerini görmüş olduk. Bu kadar ayrıntı olduğunu tahmin ediyor muydunuz?.. Şimdi sıra geldi işin daha karışık yönlerine... Disket sürücümüze belli komutlar göndermeyi öğreneceğiz. LOAD, SAVE ve VERİFY komutları ile sadece program dosyalarının alışverişini becerebiliyorduk. Diğer tür dosyaları kullanmak veya komut göndermek için kullandığımız başka BASIC komutları da var: OPEN, CMD, PRINT , INPUT , GET ve CLOSE gibi. COMMODORE 64'ün çevre birimlerinden herhangi biriyle, ki VC 1541 de bunlardan biridir, iletişim kurması bir haberleşme kanalı ile olur. Dolayısıyla bu haberleşme kanalını belirlemeden herhangi bir aletten bilgi almak veya bilgi göndermek mümkün olmaz. LOAD, SAVE ve VERİFY komutları gerek duydukları kanalları kendiliklerinden açıp kaparlar. Ama bizim kendi amaçlarımız doğrultusunda, kendi kanalımızı kendimizin açması gerekiyor. Bu işlemi OPEN komutu yapar. Formatını görelim:
OPEN kanal no, araç no, ikincil adres, “komut veya isim
KANAL NO ile, OPEN komutunda bildirdiğimiz türde açılacak haberleşme kanalına bir isim vermiş oluyoruz. Daha sonra bu kanaldan bir şey göndermek veya almak istediğimizde bu sayıyı belirtmemiz gerekecek. 1- 127 arası herhangi bir sayı olabilir. Ancak kullanılan her değişik haberleşme kanalı için değişik bir kanal numarası vermek gerekir.
Bunun arkasından gelen sayı ve karakterler o kanalın özelliklerini belirliyor. ARAÇ NO ile o kanalın hangi çevre birimine açıldığı verilir. Araç kodlarını önceki bölümde görmüştük. Disket sürücüsü için 8 olacak. İKİNCİL ADRES ile de bazı özel kodlar göndermemiz mümkün oluyor. Buradaki sayının anlamı hitap edilen çevre birimine göre değişiyor. Örneğin yazıcıda karakter setini seçmek, satır aralarını ayarlamak vs. gibi işlemleri değişik ikincil adresler üzerinden yapabiliyoruz. Disket sü- Tücümüze gelince... İkincil adresimiz 1541 için 2-14 arası bir sayı olabilir. 0 veya 1, işletim sistemi tarafından kullanılmaktadır. Siz de kullanabilirsiniz, ancak eğer ikincil adresiniz O ise © haberleşme kanalını sadece disketten bilgi okumak için kullanabilirsiniz. | yapınca da, sadece 1541'e bilgi gönderebilirsiniz. Diğer ikincil adreslerde bir sorun yok. İkincil adresiniz 15 olduğunda disket sürücüsünün komut kanalını kullanıyorsunuz demektir, ki bu bizim bugünkü temel uğraşımız olacak. “KOMUT VEYA İSİM” olarak ya da haberleşme kanalını açtığımızda kullanmak istediğimiz dosyanın adı, türü ve haberleşme biçimini gösteren kodu (sonra göreceğiz!) ya da, eğer ikincil adres olarak 15 kullanmışsanız, 1541'e göndereceğimiz komut yer alacaktır. PRINT ,GET veINPUT komutlarının normal PRINT, GET ve INPUT'tan pek farkları yok. Sadece etkileri, belirtilen haberleşme kanallarında görülüyor. Örneğin PRİNT 1,“AHMET” yaptığınızda, AHMET yazısı | numaralı haberleşme kanalına gönderiliyor. Eğer bu kanal printer'a bağlı ise yazı yazılıyor. Veya bu kanal disket üzerindeki bir dosyaya bağlanmışsa yazı o dosyaya ekleniyor. GET # 1,A$ ile, 1 numaralı kanaldan bir tek karakter okumuş oluyoruz. INPUT * 3,A$ ile de | numaralı kanaldan bir karakter dizisi okuyoruz.