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.

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).

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