Commodore sayı 5, sayfa 34
Sayfanın metni

Sayfa 34

BASIC programınızı disketten altprogram çağırır hale getirin. Eğer hız programcıların en baş sorunuysa, bellek hacmi de hemen ikinci baş sorundur. 3. sayımızda Ömer Erkmen, BASIC'le hız sorununun nasıl anlatmıştı. Bu yazımızda GW-BASIC'le ilgili olarak tanıttığımız yöntem hem hız hem bellek hacmi konularında büyük kolaylıklar sağlar.

Mike Carmichael'dan Çeviren:

Emin TANRIYAR Bir BASIC programı geliştirirken bellek tükenmesi gibi bir olayla karşılaştıysanız, büyük bir ihtimalle kendi kendinize şöyle demişsinizdir: “Ah keşke bütün alt programları (subroutine'leri) diskte kaydedebilseydim ve ihtiyacım oldukça birer birer çağırıp kullanabilseydim”. Şüphesiz global değişkenleri sürdürmek ve program modülleri arasında bir yol açabilmek için COMMON ve CHAIN komutlarını kullanabilirsiniz, ama Microsoft'un GW-BASIC'i programcının bir dizi alt programın ana programa bağlanmasına (linking) izin vermez. Ama yine de GW-BASIC'in bu sınırlılığını aşarak disketten yan program çağrılabilmesini mümkün kılan RAMDISK'te aslında fikir oldukça basittir; RAM'ın belli bir bölümü alt programlara ayrılır ve gerektikçe disketteki alt programlar bu özel bölüme yüklenir. Hemen bir uyarı: GW-BASIC'te ana programa bitişik bellek bölgesi içine bir yan program yüklemeye çalışırsanız programın hemen üstünde hafızada bulunan interpreter'in çalışma sahasını tahrip edersiniz ve program çöker. Bu sorunun üstesinden şöyle gelebiliriz: Ana program alt programlar için, içinde belirli bir miktar RAM ayıran yorum (REM) cümleleriyle takviye edilir (Örneğin benim örnek programımdaki REM'ler yaklaşık 1000 byte yer kaplıyor). Ama daha fazla ya da az REM cümlesi kullanarak ana programınızın daha büyük bir bellek hacmi kaplamasını sağlayabiliriz. Belirli bir alt programa gereksinim duyulduğunda ana program onu disketten alır ve REM cümleleriyle bellek yerine yükler. Bu arada orada işgalci kuvvet gibi duran REM cümleleri de silinmiş olur ve alt program ana programa dahil edilir. Daha sonra başka bir alt programa daha ihtiyaç duyulduğunda program onu da aynı bellek bölgesine yükler ama bu arada da bir önceki alt programı da siler. Ve bütün bu işler ana program yürürlükteyken olur biter. Bu sihirbazlık için kullanılan komut bir GW-BASIC komutu olan BLOAD'dır ve bir disketteki dosyayı belirtilen bellek bölgesine yükler. Yalnız dikkat edilmesi gereken bir nokta var: Diskteki dosya söz konusu durumda bir alt program ikili formatta (binary) olmalıdır. Ve şimdi de bizim artık BASIC programlamayı terk ettiğimizi düşünmeyesiniz diye bu GW-BASIC'in programları nasıl depoladığını ve sizin de BASIC kodunu nasıl ikili formata çevirebileceğinizi inceleyelim. Göreceksiniz sandığınızdan daha basit.

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