Bu sayfadaki yazılar
Sayfanın metni
Sayfa 16
Disk İşlemleri
Normal Basic ile disk işlemleri yapılırken kullanılan OPEN, ve CLOSE gibi komutlardan kurtulmak için her iki program da çeşitli komutlar kullanmaktadır. Simons' Basic'te bu işler için DISK komutu bulunmaktadır. Sysres ise çeşitli disk işlemlerini tek karakterlik komutlarla gerçekleştirmektedir. Normal Basic'teki silme, isim değiştirme ve formatlama gibi işlemlerin tümü Simons' Basic'teki DISK komutu ile gerçekleştirilebilir. Bu komutun kullanımı ise DISK “X0:isim” şeklindedir. Buradaki X harfi DOS'a komut verilirken kullanılan standart harflerin herhangi biri olabilir. Bunun yanında Basic ile directory okumak için DIR“$ komutu da bulunmaktadır. Sysres'te ise, bazı kartuşlarda ve Dolphin Dos'ta kullanılan & işareti ve bununla aynı işlevi gören sola ok karakteri bulunmaktadır. Disk işlemleri için ( karakterinden sonra istenilen işlemin yazılması yeterlidir. Normalde disk işlemleri sırasında bilgisayar da
kullanılmaz haldedir ve CLOSE komutuna kadar da böyle kalır. Ancak Sysres disk işlemini yürütürken klavyenin normal olarak kullanılmasını sağlar, daha sonra diskle haberleşme kanalı kendiliğinden kapanacaktır. Sysres, disk işlemleri sırasında yükleme, kaydetme için de özel karakterler kullanılmasını sağlar. Örneğin @$ komutuyla directory okunduktan sonra bir dosya adının başına gidip / işaretine bastığınız zaman o dosya için ise aynı şekilde yukarı ok yazmak yeterlidir. Simons' Basic 2'de ise disk işlemlerine yardımcı olan bu komutların yanı sıra bir de disk monitörü bulunmaktadır. Sola ok karakterinden sonra D yazıp girilen bu monitör programı diskten bir blok okumak, okunan bloğu değiştirmek, diskin hafızasında program yazmak ve çalıştırmak için kullanılan dökümünü inceleyerek disk üzerinde çeşitli işlemler gerçekleştirmek hatta ayrı bir disk işletim sistemi yazmak bile olasıdır. Kaset İşlemleri Kaset yüklemeleri için ise Simons' Basic gerekli komutları desteklemektedir. Ancak Simons' Basic 2 turbo'lu yükleme özelliğine de sahiptir. Normal bir turbo programında olduğu gibi Simons' Basic 2 ile ok-L, ok-S ve ok-V komutlarını sırasıyla, yüklemek, kaydetmek ve programın doğru kaydedilip edilmediğini kontrol etmek için kullanabilirsiniz. Sysres ise tamamen diske yönelik bir paket olduğu için disk işlemleri sırasında komuttan sonra “,8” yazmanıza bile gerek kalmaz. Bu yüzden kasete kayıt yapmak için mutlaka kasetin cihaz numarası olan komutun sonuna eklenmelidir.
Makine Dili Monitörü
Sysres, Basic programların çalışmasını engellemediği gibi hafızanın dört değişik bölgesine yüklenebilen makine dili monitörü yardımıyla, yine Basic programları bozmadan makine dilinde program yapmanızı sağlar. MON komutuyla girilecek makine dili programı, bir monitörden istediğiniz hemen her özelliğe sahiptir. Ancak Basic listeler içinde yukarı aşağı dolaşma özelliği ne yazık ki makine dili programlar için geçerli değildir. Aynı şekildeki bir makine dili monitörü Simons' Basic 2'nin içinde hazır olarak bulunmaktadır. Hemen hemen Sysres'inkiyle aynı özelliklere sahip olan bu monitör programına girmek için sola ok karakterinden sonra M yazmak yeterlidir. Sysres makine dili olarak yazılmış programları çalıştırmak için özel komutlara da sahiptir. BLOAD, BRUN, EXEC komutları diskten makine dili programları yüklemeye ve çalıştırmaya yarar.
Hata Koşulları
Programın çalışması sırasında herhangi bir hata olduğunda, bu hatayı bulmak için iki programın da değişik sistemleri vardır. Basic kullanırken hatayı bulmak için programa komut eklemek gerekir. Böylece hata oluştuğunda istenen işlemler gerçekleştirilip yapılan hata düzeltilebilir. Sysres'in hata bulma sistemi ise daha farklıdır. Program bir hata sebebiyle durduktan sonra, işlenen son komutun yerini bulmak için WHY komutu verilebilir. Bu komut sayesinde programın kesildiği satır ekrana gelecek ve hatanın olduğu yer parlatılacaktır. WHY? komutu verilirse parlama yapılmadan sadece hatalı satır ekrana listelenir.
Diğer Fonksiyonlar
Bahsettiklerimizin yanı sıra Simons' Basic, programlarınızda kullanmak üzere birçok komut daha eklemektedir. Bunların genel amaçları, yazı düzenlemesi ve ekran düzeni, matematik fonksiyonlar, grafik çizimi, sprite ve karakter tanımlaması, müzik işlemleri, yapılanmış programlama komutları olarak özetlenebilir. Sysres ise yine programın tümüne yönelik arama ve değiştirme, yazıcıya komut gönderme, belirli satırları silme gibi özel komutlara da sahiptir. Sonuç olarak bakınca, Simons' Basic programlarda daha geniş özellikler kullanmanızı sağlar. Ancak standartın dışında olan bu programlar ancak Simons' Basic hafızada iken çalışırlar. Diğer yandan Sysres tüm programların hazırlanmasında büyük bir yardımcıdır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 17
Tüm Commodore kullanıcılarına merhaba. Bildiğiniz gibi bu köşenin asıl hedefi, makine dili kullanıcılarına yeni bir şeyler öğretmek, bu arada BASIC kullanıcılarına da bir şeyler verebilmek için bu öğrettiklerimizi BASIC'in yetersiz kaldığı alanlarda kullanmalarını sağlamaktı. Bu ay dengeyi biraz bozup makine dili kullanıcıları tarafına ağırlık vermek istiyorum. Aslında benim BASIC kullanıcılarına tavsiyem, gelecek ay başlatacağım makine dili kursunu olabildiğince iyi takip etmeleri.
Çünkü bu kursu makine dili hakkında hiçbir şey bilmeyen arkadaşlara yönelik olarak hazırlayacağım. Kısaca Commodore'un yetersiz kalan BASIC'inden kurtulmak için son şansınız bu olabilir. Reklamları izlediniz. İki ay önce, BASIC'çilerin kullanması için bir küçük grafik paketi hazırladığımızı hatırlarsınız. Geçen ay makine dili kullanıcılarına bu paketin hangi formülleri ne şekilde kullandığını anlatmıştım. Bu ay (BASIC kullanıcıları kızmasınlar) gene makine dili kullanıcılarına yönelik bir konuyu ele almak istiyorum: BASIC'e komut eklemek. Bu komutlar Commodore'un izin verdiği en basit sistemle eklenecekler BASIC'inize. Yani normal bir BASIC komutu gibi, kaç harften oluşursa oluşsun bir bayt olarak gösterilmeyecekler. Artık yavaş yavaş orijinal fikirler de tükendiği için bu komutları gene iki ay önce anlattığım grafik paketçiğine ekleyeceğim. Aslında yapacağım tek iş, SYS komutlarını kendi seçeceğim bazı komutlarla değiştirmek olacak. Aslında Commodore çoğu bilgisayara göre esnek bir BASIC'e sahiptir. Hangi adreste neyin bulunduğunu bilirseniz, BASIC'e eklemeler yapmak çok kolaylaştırılmıştır. BASIC'i geliştirmenin tabii ki çok yöntemi var. Mesela hatanın verilmesinden hemen önce olaya müdahale edip, sizin istediğiniz komuttan dolayı oluşmuş bir hata varsa bu hatayı iptal edip işlemenizi yaptırabilirsiniz.
Vedat Hallaç rabilirsiniz. Ya da komutların yorumlandığı rutinin öncesine kısa bir casus rutin koyup, sizin komutunuz geldiği zaman kontrolü bilgisayardan alabilirsiniz. $0073'ü bile değiştirmeniz mümkün. Tabii ki bu hiç de iyi bir fikir sayılmaz. Kontrol ettiğiniz komutun (mesela (9XS) bir PRINT'in parametresi olup olmadığını, bir değişkene verilen değer olup olmadığını ya da benzeri binlerce şeyi kontrol etmeniz gerekeceğinden, sağ kulağınızı sol ayağınızla göstermek olur bu. Benim size önereceğim, komut eklemenin en basite indirgenmiş şekli: $0308-$0309'da size RETURN'e basar basmaz girilen satırı yorumlayan (ya da duruma göre BASIC satırını alıp onu yorumlayan) ROM rutininin adresi bulunur. Eğer bu adresi bir yere not eder, daha sonra $0308-$0309'u bizim rutinimizi gösterecek şekilde değiştirirsek, bilgisayara girilen satır hakkında fikrini belirtmeye çalışmadan önce bizim rutinimiz ön kontrol yapma hakkına sahip olur. Eğer bizim rutinimizden çıkarken her şeyi bir sonraki komutu gösterecek şekilde ayarlarsak ve kontrolü ROM rutinine bırakırsak tüm komutlar olduğu gibi işleyecek, sadece gerekli durumda fazladan bazı komutlar işleme sokulacaktır. İsterseniz yaptığınız işi basit bir örnekle pekiştirelim: Biliyorsunuz bankamatikler kartı alır almaz şifreyi girmenizi beklerler. siz şifreyi girdikten sonra (yani “giriş” tuşuna bastıktan sonra) kart üzerinde ya da merkezde yazılı olan şifreyle sizin girdiğiniz şifreyi karşılaştırırlar. Eğer şifre doğru dedi olayı biraz çarpıtalım: Diyelim ki siz bu niz, ya da programa dışarıdan müdahale etmek yetkiniz var. Tekrar farzedelim ki, şifrenin doğru olup olmadığını kontrol eden runıyor (yeterince komik oldu mu, devam edeyim mi?). Bu adresi bir yere not edip, kendi program adresinizi buraya girerseniz, şifreler kontrol edilmeden önce çalışacak bir programınız olur. Bu programda, girilen şifrenin “1234” olup olmadığını kolaylıkla kontrol edebilirsiniz. Eğer girilen şifre bundan farklıysa demin bir kağıda not ettiğiniz adrese sıçrarsınız ve bütün işlemler normal olarak yerine getirilir. Ama girilen şifre “1234” se şifre kontrol rutinine hiç sıçramadan ana programa sıçrarsınız. Böylece bankamatiğe bir “komut” eklemiş olursunuz. Bu eklenen komut, “şifre olarak 1234 girildiyse, doğru olup olmadığına bakma” diye bir işlem yapmaktadır. Bu sayede gidip istediğiniz kartı alıp, bankamatiğe “1234” şifresini girerek şifre korumasını atlayabilirsiniz. Başka şifre girenler ise böyle bir hilenin mümkün olduğunu bile bilmeden işlemlerini normal olarak sürdürecektir. Bizim Commodore BASIC'e yaptıracağımız işlem de tam anlamıyla budur. Bir komut girilir girilmez bilgisayara “Dur bir dakika!” diyerek araya girecek, gelen komutun bizimki olup olmadığına bakacak, bizimki gelmediyse kontrolü bilgisayara devredeceğiz. Komut bize aitse bilgisayara “Bu iş seni ilgilendirmiyor. Sen gidebilirsin” dedikten sonra istediğimiz işlemi yapacağız. Gelen komutla ilgili tüm kanıtları yok ettikten sonra da her şeyden habersiz olan bilgisayara hiç bir şey olmamış gibi yoluna devam etmesini söyleyeceğiz. Bu şekilde söyleyince kolay olacakmış gibi görünüyor, ama aslında hiç de kolay değil. Bütün bu işleri yapabilmek için bilgisayarın komutları ne şekilde işlediğini öğrenmeliyiz. $0308-$0309 adreslerini incelediğimizde burada $ATE4 değerini buluruz. $A7E4'ün en başında ise