Commodore sayı 5, sayfa 35
Sayfanın metni

Sayfa 35

BASIC Kodu Nasıl Çevrilir?

Microsoft'un GW-BASIC çeviricisi (interpreter) oldukça açık sözlü ve basit bir dildir. Siz komutları satır satır belleğe girerken çevirici kendi çalışma alanını hemen son program satırının üzerinde tutar. Bir satırda bulunan her BASIC komutu kendisine uygun 1- ya da 2- byte'lık kodlara çevrilir. Bellek adresleri ve satır numaraları standart 2 byte formatında saklanır. Program dökümünde görülmemekle birlikte her BASIC satırından önce bir sonraki satırı adresleyen bir işaret bulunur. Bu işaretten sonra satır numarası, ondan sonra sonuç çözümlenmiş BASIC kodu, ondan sonra da harf sayısal konumların met vs. ASCII karşılıkları gelir. Haydi şimdi de sırf eğlencelik olsun diye bir BASIC komutunu inceleyelim. İlk önce komutun bilgisayarınızın belleğinin neresinde olduğunu bulmak zorundasınız. BASIC'i yükledikten sonra NEW komutunu kullanın ki yabancı bir kodla uğraşmak zorunda kalmayasınız. Sonra herhangi bir değişkene bir değer verin ve o değişkenin bellekteki yerini tespit edin. Örneğin sadece yazın. Şimdi de PRINT VARPTR(S) yazın. Ondalık sonuç sizi BASIC'in kullandığı hafızanın en alt noktasının çok yakınına bir yere, programın başlayacağı yere götürür. COMMODORE PC'de bu değer 2830'dur. Sonra yeniden NEW girin ve inceleyebileceğimiz basit bir satır yazın: 10 X=1. Şimdi BASIC interpreter'in ne yaptığını görmek için satır numaraları kullanmadan FOR I=1 TO 20:PRINT PEEK(X+I):NEXT I girin. Burada X'in değeri demin VARPTR(S)'dan elde ettiğiniz değerden 10 eksik yani 2820 olmalı. Bilgisayarınızın bu komutun sonucu olarak şu 20 değeri kontrol etmiş olması gerekir.

0002111 10070 36 32 231 32

34 42 3400073

000 Basic) kodun birinci satırının altında) 12 11 Bellekteki bir sonraki satır adresleyen işaret 15*2564 237-4077) 100 Satır numarası) 70 36 FS) 3? Boş aralık) 231 X- (eşit işareti için GW-BASIC kodu) 32 Boş aralık) 34 42 34 he dü 0 satır sonu) 00 Bu bölgeler boştur. Demek ki programın gerisi gelmemektedir) 473 BASIC'in çalışma

alanında ilk iki byte) Bu yöntemi aynı zamanda diğer BASIC fonksiyonlarının çalışmalarını görmek için de kullanabilirsiniz. Ve isterseniz POKE fonksiyonu ile deneysel bir çalışmayla bir komut tablosu ve küçük alt programlar inşa etmeyi de başarabilirsiniz.

İki Tabanlı (Binary) Bir Dosya İnşa Etmek

Benim ana program ve alt programlarımı ayrı ayrı BASIC listeleri halinde hazırlıyorum.

Ana programın sonunda çeşitli işaret satırları vardır. Bunlar alt programın ikili versiyonunun yükleneceği bellek bölgelerini işgal etmektedirler. Dokümantasyon ve yer doldurma amacıyla kullanılan REM'ler gerektiğinden de fazla boş yer bırakırlar. Pratik olarak gerekli olandan daha fazla, daha geniş bir alan temizlenmemelidir. BASIC alt programın çifte değişkenli versiyonunu yaratmak için iki listeyi tek liste haline getirin (Anaprog. Bas. yükleyin ve MERGE “routine.sub” yazın). Programı RUN ettiğimizde yeni dosya (routine.bin) saklanmış olur. Programın iki tabanlı alt programın ilk satırında 8 byte öteye bakar. Bu yüzden alt programın BASIC versiyonu yalnızca satır numarası ve bir REM cümlesinden ibaret olan bir satırla başlamalıdır. Bundan sonra program, “adres işareti + 8”den, bulunmuş olan adresi çıkartarak artık belleğe alınmış olan alt programın iki tabanlı versiyonu boyunca ayarlanmasını sağlar. Bu ayarlamalar programın sonu gelene kadar (adres göstergesi 0 olana kadar) satır satır yapılır. Öyle ki, ikili versiyon saklanması bittiğinde alt program ana programın sonunda olmalıdır. Kodun geri kalanı ise oldukça basittir. Bir not daha: Eğer alt programda ve düzeltilmiş ikili versiyonda yapılan değişiklikler diskin üzerinde korunmak isteniyorsa, programı yürürlüğe sokmadan önce halihazırdaki versiyonu silmelisiniz, yoksa program var olan çifte değişkenli alt programı yüklemeye kalkacaktır. Alt program yüklemeleri konusunda GW-BASIC'teki basit yaklaşım her BASIC programının işine yarayabilir. Teknikten yararlanın ve uygulamalarınızda örnek program birleştirmelerinde tekniğinizi geliştirin. Yazar Mike Carmichael ve Jones kuruluşları Program Planlama Servisleri Müdürüdür. Editörün notu: Program örnekleri için BASIC kaynak kodu, Anaprog. Bas. ve Program. Yan. (routine.sub) downloading için 617 861-9764'teki listeler uygundur ve aynı zamanda disk üzerinde de kullanılabilir (Sayfa 469'daki liste).

— üreticilerinin paniğe kapılmalarına neden olan yeni bir ürün var piyasada. King Limited tarafından üretilen Freeze Frame. C-64'ün expansion portuna takılan bu kartuş hemen hemen tüm programları kırabiliyor. Aslında fikir çok basit. C-64'ün 64 Kbyte'lık RAM'ı, G/Ç çipinin, işlemci sicilinin ve renk RAM'ının değerleriyle birlikte topluca yükleniyor ve bellekte bulunan programın bir kopyası alınmış oluyor. Aslında bu iş anlatıldığı kadar kolay değil tabii ki. Bunun kanıtı da böyle bir kartuşun ancak bugün yapılabilmiş olması. Aletin kullanılması çok basit: Bilgisayar açıldığında Freeze Frame ekranda bir menü veriyor. Menüde belirtilen tuşlardan birine basılınca ekran kararıyor. Artık hiçbir program Freeze Frame'i fark edemiyor. Kopyalamak istediğiniz programı yükleyip çalıştırıyorsunuz. Program çalışırken herhangi bir anda kartuşun üstündeki küçük kırmızı düğmeye basıyorsunuz. Ekran kısa bir süre kararıyor, sonra yanıp sönmeye başlıyor. Bu aşamada Freeze Frame, bir klavye girişi bekliyor. Çünkü kullanıcı programı kasette mi yoksa diskette mi saklamak istediğini bildirmek durumunda. Seçilen gereci belirten tuşa basıldığında belleğin içeriği adım adım yükleniyor. Bugün var olan Software'in 94'ten fazlası bu kartuşla kopyalanabiliyor. Bu orana erişebilen başka kopya programı yok. Bellek sınırına kadar dolu olsa bile Freeze Frame bir miktar çalışma belleği oluşturuyor, çünkü kendi yükleme programını ekran belleğine yazıyor. Ara yükleme yapan programlarda iş daha karışık. Bu şekilde çalışan az sayıda programın kopyalanması şöyle oluyor: Ana menü Freeze Frame ile yüklendikten sonra diğer bölümler parça parça yükleniyor. Fakat bu ara yükleme yapan ve her aşamada korumayı kontrol eden programlar için geçerli olmayabiliyor. Ayrıca Speed-Dos vb. bir sistemle donatılmış disk drive'lar karşısında bu kartuş işleme olanağı bulamıyor. Çünkü Freeze Frame Floppy-RAM'ı değil yalnızca bilgisayarın RAM'ını kırabiliyor. Freeze Frame, kopyalamanın dışında bazı kullanım olanakları daha sağlıyor. Örneğin çoğu oyunda Pause ve Save fonksiyonları olmayabiliyor. Kısa bir süre bilgisayarınızın başından ayrılmanız gerekirse, kartuşun düğmesine basmanız yeterli. Geri döndüğümüzde kaldığınız yerden devam edebilirsiniz. Ayrıca kaset programlarınızda skor listesini saklamanız da mümkün. En yüksek skora eriştiğinizde düğmeye basıp bu skoru saklayabilirsiniz. Son olarak bu marifetli kartuşun bazı dezavantajlarından bahsedelim. Kartuşun başarılı kullanımı ancak herhangi bir değişikliğe uğramamış C-64'lerde ve 1541 Disk Drive'larda mümkün. Yeni sistemler, Floppy hızlandırıcıları vb. kullanıldığında, Freeze

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