NEMESİS
THE WARLOCK kahramanımız WARLOCK kötü karaktere sahip olan TORQUEMADA'yı öldürmek zorundadır. Bu kötü kişinin masum uzaylıları öldürmek gibi kötü bir alışkanlığı bulunuyor. Kötü bir kişi ama aptal bir kişi değil. Bu yüzden dövüşte kendisini yalnız bırakmıyor. Kendisini koruyabilmek için özel askerlerini dövüşe gönderiyor. Oyunda WARLOCK rolünü üstlenmektesiniz. Yapmanız gereken, karşınıza çıkan askerleri yok ederek en sonunda TORQUEMADA'yı yok etmek. Unutmayın, birçok masum uzaylının hayatı sizin elinizde. Başarılı olursanız uzayı kurtaracaksınız. Oyun başladığında karşınıza çıkan ekranlarda beş veya altı tane platform bulunuyor. Savaş sırasında platformlarda dolaşabiliyorsunuz, kontrol odasından savaşçılarını sizin bulunduğunuz bölüme gönderiyor. Karşınıza çıkan savaşçıları ister kılıcınızla ister silahınızla yok edebilirsiniz. Ancak silahınızı kullanabilmeniz için önce yerde bulunan mermi kartuşlarını alarak silahınızı doldurmanız gerekiyor. Her ekranda mermi kartuşlarından birkaç tane bulunuyor. Her kartuşun içinde on iki mermi var. Bir kerede sadece bir kartuş alın. Tüm kartuşları birden almanızın size mermi kaybettirmekten başka bir faydası olmayacaktır. Bulunduğunuz düzeyi bitirip bir sonraki düzeye geçebilmeniz için yeterli miktarda savaşçı öldürmeniz gerekiyor. Yeterli miktarda savaşçı öldürdükten sonra ekranın her yerinde bulunabilecek geçidi arayıp bulmanız gerekiyor. Gizli geçidi bulduktan sonra bir sonraki düzeye aktarılacaksınız. Her düzey birbirine benzemekle birlikte herbirinde platformların dizilişi farklıdır. Her ekranda mermi kartuşları bulunarak silahınızı kullanabileceğinizi söylemiştik. Kartuştaki mermiler bitene kadar silahınızı kullanabilirsiniz. Kartuş bitince yerden başka bir kartuş daha alabilirsiniz. Ancak öldürdüğünüz savaşçıların kartuşların üstüne düşmemesine dikkat edin, aksi takdirde bu kartuşları alamazsınız. Oyunun başlaması ile birlikte sadece savaşçılarla uğraşacağınızı zannetmeyin. Ölen savaşçıların cesetlerinden bir yaratık çıkabilir. Bu yaratığı öldürmek, savaşçıları öldürmekten çok daha zordur. Normalde savaşçıları öldürmek için bir isabet yeterli iken bu yaratıkları öldürebilmek için birkaç tane isabet kaydetmeniz gerekiyor. Savaşçılar ekrandaki tüm platformlarda dolaşabildikleri halde bu yaratıklar sadece ortaya çıktıkları platformlarda dolaşabilirler. Bazen bu yaratıkların size erişemeyeceği bir platforma çıkarak beklemeniz halinde, bir süre sonra yaratık toz haline gelebilir.
Kullanabileceğiniz iki silahınız olduğunu söylemiştik: Bir kılıcınız, iki tüfeğiniz. Bunlardan çok daha güçlü bir silahınız daha var, ancak bu silahı her düzeyde bir kere kullanabiliyorsunuz. Bu silah o kadar güçlü ki yaratıkları bile bir kerede öldürüyor. Güçlü silahımız asitten oluşuyor. Kullanmak için boşluk tuşuna basmanız yeterli. Savaşçıları öldürdükçe cesetleri yerde kümeler halinde birikmeye başlayacak. Ceset yığınlarını platformlara çıkmada kullanabilirsiniz. Hatta bir ekranı tamamlayabilmek için bunun gerekli bile olduğunu söyleyebiliriz. Bir ekranı tamamlamanız ne kadar uzun sürerse TORQUEMADA'nın WARLOCK üzerinde etkisi o derece fazla olacaktır. Ekranın alt kısmında TORQUEMADA'nın yüzü belirginleştikçe ölmüş olan savaşçıların yaratıklara dönüşmesi hızlanacaktır. Ancak yaratıkları bir kere öldürdüğünüzde bir daha dirilemezler. Etrafta dolaşırken ölmüş olan savaşçıların kılıçlarına dikkat edin. Ekranın üst kısmında platformlar yer alıyor. Savaşçılar ile WARLOCK arasındaki savaş burada geçiyor. Ekranın alt kısmında ise çeşitli paneller bulunuyor: Sağ alt köşede TORQUEMADA'nın gücü arttıkça yüzü belirginleşiyor. Resminin solunda tüfek resmi ile kaç merminiz kaldığı gösteriliyor. Tüfek resminin solunda ne kadar asidiniz olduğu gösteriliyor.
Alt köşede bir el içinde kalbiniz gösteriliyor. Enerjiniz azaldıkça bu el kalbinizi sıkıyor. Kalp resminin tam altında bulunduğunuz düzeyi tamamlayabilmek için öldürmeniz gereken savaşçı sayısı gösteriliyor. Bulunduğunuz düzeyi tamamlamak için yeterli sayıda savaşçı öldürseniz bile savaşçılarla temastan çekinin. Zaten normalde bile savaşçılarla temas etmeniz enerji kaybetmenize sebep olur. Ateş tuşuna ilk basışınızda silahınız ateşe hazır hale gelir. İkinci defa ateş düğmesine bastığınızda ateş edebilirsiniz. Hareket ederseniz ateş etmeden evvel tekrar silahınızı ateş etmeye hazır hale getirmeniz gerekir. Tüfeğinizin mermilerini tamamen bitirmeniz halinde tek silah olarak kılıcınıza güvenmek zorunda kalacaksınız. Ama savaşçılarda bu silah bir dereceye kadar etkili olsa bile yaratıklara pek bir etkisi olmayacaktır. GRAFİK: 8 SES: 8 ZORLUK: 8 OYNANABİLİRLİK: 8 GENEL: 8
TUNA ERTEMALP
Eğer daha önce verdiğimiz dosya adlarını kullanmışsanız, disketimizin üzerinde G harfi ile başlayan bir tek program dosyası var demektir. Disketimizin üzerinde G ile başlayan bir tek program olduğuna göre, LOAD komutunu verebiliriz. 1541, directory'de rastlayacağı G harfi ile başlayan ilk program dosyasını bilgisayara gönderecektir. Peki LOAD “*”,8 dese idik ne olacaktı? Tabii ki, F ile başlayan ilk dosya dolacaktı. Ancak burada 1541'in azizliğine uğrayabiliriz. Kimi zaman 1541'in kafası karışır ve bize istediğimiz dosyayı göndermez. Bunu önlemek için LOAD “:F*”,8 demek daha garantili olacaktır. İki nokta üst üste koymamız, 1541'in directory'i en baştan aramaya başlamasını sağlayacaktır. LOAD “:ZZ*”,8 komutunu verseydik, ilk iki harfi ZZ olan ilk dosya adı ZZZ olduğu için, o dosya yüklenecekti. Bir diğer özel karakter de soru işaretidir. Eğer dosya adının içinde bilmediğimiz ya da hatırlamadığımız bir harf varsa, bu harfin yerine soru işareti koyabiliriz. Örneğin LOAD “:?F”,8 verdiğimizde ikinci harfi F olan ve iki harflik ada sahip ilk program yüklenecektir. Bizim durumumuzda bu AF olacaktır (Dikkat, FF değil, çünkü o daha sonra geliyor). Eğer LOAD “*”,8 verseydik, bu durumda uzunlukla ilgili kısıtlama ortadan kalkacak ve yüklenecek program AFITAP olacaktı.
LOAD “:*”,8 verirsek disketteki ilk program yüklenecek. * ve ? ile oluşacak kombinasyonları VERIFY ile de kullanabilirsiniz. Bu tür bir dosya adını SAVE ile kullanırsanız, 1541 hata verecek, kırmızı ışık sizi hemen uyaracaktır.
Bu karakterleri directory yüklerken de kullanabilir, böylece sadece istediğimiz dosya adlarının bilgisayara gönderilmesini sağlayabiliriz. Örneğin LOAD “$:D*”,8 ile gelecek dosya isimleri DENEME, D, DD, DENEMEI ve DEN olacaktır. Eğer D* yerine DD* kullanırsak, sadece DD'yi görürüz. DE* ise bize DENEME, DENEMEI ve DEN dosyalarını gösterecektir. LOAD “$:?F”,8 diyerek iki karakter uzunluktaki dosyaların isimlerini isteyebiliriz; AF, DD, FF, ZZ gibi. LOAD “$:2F*”,8 sonucunda da AFITAP, AF ve FF dosyaları gelecektir. Şimdi ilginç bir konuya geldik.
Normalde SAVE “xxx”,8 komutu ile bir programı diskete gönderdiğinizde dosyanın tipi otomatik olarak PRG olacaktır. LOAD “xxx”,8 ise XXX adlı PRG tipi bir dosya arayıp yükleyecektir. Ama küçük bir hile ile programlarımızı SEQ veya USR tipleri halinde de saklayabiliriz. Şu komutu verin:
SAVE
Şimdi directory'i yükleyip bir göz atın. DEN1 isimli bir dosyanın SEQ tipine sahip olduğunu göreceksiniz. Şimdi de şu komutu verin:
SAVE “DEN2,U,W”,8
Tahmin edebileceğiniz gibi, şimdi de USR tipinde bir dosyamız oldu. Aslında bambaşka amaçlar için kullanılan SEQ ve USR tiplerini kendi amaçlarımız için kullandık. Ancak bu dosyaları LOAD “DEN1”,8 veya LOAD “DEN2”,8 ile yükleyemeyiz. Kullanılacak komutlar:
LOAD “DEN1,S,R”,8 veya LOAD “DEN2,U,R”,8 olmalıdır.
Yukarıdaki SAVE ve LOAD komutlarında geçen R (Read, oku) ve W (Write, yaz) komutları, aslında veri dosyaları oluşturmakta kullanılır. Bunu da ileride göreceğiz. Hazır disketimizde PRG, SEQ ve USR tipi dosyalar varken, directory yüklemesinin bir diğer yönünü görelim: LOAD “$:*=PRG”,8 PRG tipi dosyaları, LOAD “$:*=SEQ”,8 ile sadece SEQ tipi dosyaları, LOAD “$:*=USR”,8 ile sadece
LOAD ile sadece USR tipi dosyaları, LOAD “$:*=DEL”,8 ile sadece
DEL tipi dosyaları, LOAD “$:*=REL”,8 ile sadece REL tipi dosyaları görmemiz mümkün olacaktır. Yukarıdaki komutlarda üç harfli dosya tipleri yerine sadece ilk harflerini de kullanabilirsiniz. Örneğin bu durumda disketteki SEQ tipindeki dosyalardan sadece ilk harfi B olan iki harfli dosya adları görünecektir. Tüm bunlardan farklı olarak, SAVE komutuna özgü bir diğer şekil daha vardır. Eğer disketimizin üzerinde XXX adlı dosya varsa, biz SAVE “XXX”,8 ile yeni bir dosya daha gönderemeyiz. Ya yeni dosyaya yeni bir isim vermemiz gerekir, ya da eski dosyanın yerine yenisini koymamız. İkincisini yapmanın da iki yolu var. Ya ileride göreceğimiz disket komutları ile eski dosyayı silmek ve SAVE “XXX”,8 komutunu yeniden vermek, ya da aşağıdaki komutu kullanmak:
SAVE “©:XXX”,8
1541, önce yeni dosyayı diskete alacak, sonra eski dosyayı silecektir. Dolayısıyla SAVE sırasında elektrik kesilirse eski dosya bozulmamış olacaktır. Ancak bu komutu kullanmanızı kesinlikle tavsiye etmiyoruz. Çünkü, DOS'daki küçük bir hata nedeniyle disketinizin üzerindeki birkaç programı bu komutu kullandıktan sonra kaybetmeniz olası. Bu satırların yazarı, bu acı tecrübeyi birkaç kez yaşadı. En iyisi, eski dosyayı silip yenisini ondan sonra göndermek.
Eğer bir SAVE, LOAD veya VERIFY işlemi sırasında 1541 takırdamaya başlarsa, disket üzerindeki bir alan fiziksel olarak bozulmuş demektir. İlk yapacağınız iş, eğer hâlâ bozulmamışlarsa, disketteki diğer dosyaları başka disketlere aktarmak.
Sonra da disketi yeniden formatlamayı deneyin. Eğer sonuç alamazsanız, disketi atmaktan başka bir çareniz yok.
Eğer SAVE işlemi sırasında bilgisayar READY verdiği halde kırmızı ışık yanıp sönüyorsa iki olasılık vardır. Ya aynı adlı bir dosya daha vardır ya da diskette geri kalan boş blok sayısı programınızı alamayacak kadar azdır. Önce başka bir isim deneyin, olmazsa da yeni bir disket, tabii ki formatlı olanlarından.
Şu ana kadar gördüklerimiz hep BASIC programların LOAD ve SAVE edilmesi içindi. Peki makine dili programlar için ne yapacağız?
Eğer disketinizde hazır makine dili programlar varsa, LOAD “İSİM”,8,1 ile yükleyebilirsiniz. Eğer 8'den sonra gelen 1'i unutursanız ve kazara RUN komutu verirseniz elde edeceğiniz sonuç, ERROR olacaktır. ,8,1 ile yükledikten sonra program kendiliğinden başlamamışsa, ya bir SYS komutu gerekmektedir, ki bu durumda SYS komutunun arkasından gelecek 0-65535 arası sayının bilinmesi gerekir, ya da RUN/STOP-RESTORE tuşlarına basmanız gerekmektedir. O programı alırken nasıl başlatılacağını da öğrenmiş olmanız gerekiyor.
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.
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:
21 READ ERROR 18 1
1541'e göre 18. track'ın 1. sector'- ünde bir okuma hatası var ve bu 21 numaralı hata türü. Daha sonra da göreceğimiz gibi, directory disketin üzerinde 18 numaralı track'da yer alır. Biz disketi 1541'den çıkardığımız için, 1541 bu track'ı bulamamakta ve bize hata mesajı göndermekte.
1541'in gönderebileceği hata mesajlarının bir listesini tablo halinde size sunuyoruz. Gerektikçe bakabilirsiniz. Şimdi sıkı durun. Pek fazla bilinmeyen bir yöntemden bahsedeceğiz. Yukarıda, komut kanalını sadece program aracılığı ile okuyabileceğimizi söylemiştik. Bu, işin yasal ve kurallara uygun yolu. Ama her zaman olduğu gibi COMMODORE 64'e üçkağıt açmamız mümkün. Satır numarası vermeden aşağıdaki satırı yazın ve RETURN tuşuna basın. Hata mesajının (daha doğrusu, komut kanalında bekleyen mesajın) karakter karakter ekrana yazıldığını göreceksiniz.
OPEN 1,8,15:POKE 58,1:FOR 1-1
TO 50:GET 1,A$:PRIİNT
AS:PRINT A$;CLOSE -(ST-64):
IF ST< > 64 THEN NEXT
Bu satırda neler olduğunu sormayın. Bunu anlatmak için COMMO-DORE 64'ün sistem değişkenleri ile ilgili kurallarına girmek gerekir, ki bu da bu yazının sınırlarını aşar. Eğer bu satırı verip RETURN'e bastığınız sırada bir sorun yoksa, ekranda göreceğiniz yazı şöyle olacaktır:
50
00,0K,00,00
Komut kanalını açmayı, komut göndermeyi ve 1541'in mesajlarını okumayı öğrendikten sonra sırayla gönderebileceğimiz komutları ve özelliklerini görelim:
NEW (Formatlama)
Daha önce gördüğümüz bu komutu kısaca açıklayalım: Başlıca görevi, disketi temizlemek ve kullanıma hazırlamaktır.
Kullanım biçimi: NEW İSİM ile 16 karakter, ID ile de 2 karakter verebiliriz. ID'nin önemine değinmiştik. Birkaç değişik örnek görelim:
OPEN 1,8,15,“NEW:TEST1,XX”:
CLOSE |
OPEN
3,8,15:PRINT * 3, “NEW:TEST2,
XY”:CLOSE 3
OPEN 5,8,15,“N:TEST3,YX”:
CLOSE 5
OPEN 2,8,15:PRINT # 2,“N:
TEST4,A1”:CLOSE 2
Formatlama komutunu verirken ID yazmaz da sadece “N:TEST” gibi bir komut gönderirseniz, disketiniz tamamen formatlanmayacak, sadece üzerindeki tüm dosyalar silinip disketin adı TEST olarak (veya verdiğiniz yeni bir isim) değişecektir. ID'si eskiden olduğu gibi kalacaktır. Dolayısıyla bu komutu sadece daha önceden normal yoldan formatladığınız ve kullandığınız, ama şimdi ihtiyacınız olmayan dosyalar içeren bir disketi tamamen boşaltmak için kullanabilirsiniz.
Eğer NEW veya N ile İSİM arasındaki iki noktayı unutursanız, 1541'in ışığı göz kırpacak ve mesaj olarak da, 34,SYNTAX ERROR 00,00 gelecektir.
Formatlama komutunu kullanırken çok dikkatli olun. Eğer bir disketi ID'li formatlarsanız içinde eskiden varolabilecek bilgileri KESİNLİKLE kurtaramazsınız. Eğer ID kullanmadıysanız, kurtarma ihtimali var ama inanın o dosyaları kurtarmaya çalışmaktansa onları gözden çıkarmak daha pratik. Çok profesyonel hale geldiğinizde bile sizi çok zorlayacak bir işlem. Siz en iyisi dikkat-
SCRATCH (Silme)
Disket üzerindeki dosyaları tek tek silmeye niyet ettiğimizde kullanacağımız komut şu olacaktır:
SCRATCH:isim1,isim2,
Tabii ki SCRATCH yazısı yerine kısaca S harfi de koyabilirsiniz. Dosya isimlerini belirlerken, LOAD ve VERIFY yaparken kullanabileceğiniz tüm karakterleri (yani ? ve * dahil) kullanabilirsiniz. Dikkat edeceğiniz iki şey var:
-Komutun toplam uzunluğu 40 karakteri geçmeyecek. -En fazla 5 isim verebilirsiniz.
Örneğin OPEN 1,“S:R*,29M” komutunu verdiğinizde ilk harfi R olan tüm dosyalar ve son harfi M olan tüm üç harfli isme sahip dosyalar silinecektir. Eğer “S:*” kullanırsanız, disketinizdeki tüm dosyalar silinecektir. Ancak bu işlem uzun sürecektir. Bu nedenle ID'siz formatlama kullanılması daha avantajlıdır. S komutuyla sildiğiniz dosyaları, bazı koşullar hâlâ geçerliyse, tekrar ortaya çıkarma ihtimaliniz var. ID'siz formatlamada ise bu çok çok zor. Birkaç örnek görelim: OPEN 1,8,15,“SCRATCH: A*,F,ZZZ”:CLOSE 1 OPEN 3,8,15:PRINT 3, “SCRATCH:DEN1,G*”:CLOSE 3 OPEN 1,8,15,“S:A*,F,ZZZ”: CLOSE 1 OPEN 3,8,15:PRINT 3, “S:*” Tıpkı directory yüklerken olduğu gibi, “S:* — S” kullanarak tüm SEQ dosyaları, “S:B? — P” kullanarak sadece ilk harfi B olan iki harfli PRG dosyalarını silmeniz veya bu ikisini aynı anda “S:* — S,B? — P” ile yapmanız mümkün. Dikkatli olmanız gerektiğini bir kez daha söylemekte fayda var. SCRATCH komutunu gönderdikten sonra kırmızı ışık yanıp sönmeyecektir (tabii bu arada bir hata olmadıysa), ama komut kanalını okursanız aşağıdaki gibi bir mesaj elde edersiniz: 01,FILES SCRATCHED,nn,00 Buradaki nn sayısı ile 1541 bize, kaç tane dosya sildiğini bildirmektedir.