Commodore sayı 44, sayfa 57

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 57

POKE 44,12:CLR Yükle komutunun bazı ilginç özellikleri vardır. Direkt modda uygulandığı zaman, bir disk yüklemesi tüm pointer'ları resetler, belleğe bir program dosyası okur ve pointer'ları programın başı ve sonuna ayarlar. Eğer bir yeniden yerleştirmeyen LOAD “filename”,8,1 uygulanırsa sonraki Load komutlarında Out-of-Memory hatası görülebilir. Çünkü 45-50 arasındaki üç pointer load aracılığıyla Dizinin-Tabanı pointer'ı yukarısına ayarlanmışlardır. Bu 49512'deki RAM bloğuna bir makine dili programı yükleseniz de olabilirdi. Bu çıkmazdan kurtulmanın en basit yolu yeniden yerleştirmeyen (nonrelocating) bir yüklemeden sonra bir NEW uygulamaktır. Program kontrolü altında, load pointer'ların hiçbirini resetlemez. Bununla birlikte bellekteki herhangi bir Basic programının uygulanması

Basic başlangıcı pointer'ının değdiği herhangi bir noktadan başlayabilir. Bu da demektir ki program kontrolü altında bir makine dili subrutini gibi şeyler yüklemek için aşağıdaki gibi bir kod yazmalısınız. 10 IF FL=1 THEN GOTO 30 20 FL=1:LOAD “routine”,8,1 30 RESTORE:REM program Bu program ilk çalıştırıldığında, FL değişkeni 0'a eşittir. Satır 20'de, FL 1'e ayarlanır ve nonrelocating load gerçekleşir. Bu yapıldığında uygulama satır 30'da başlar, ama bu sefer FL 1'e eşittir ve satır 20 pas geçilir. Load komutu program kontrolünde uygulandığı zaman hiçbir pointer'ı değiştirmemesi, Basic programcılığına ayrılabilecek ilave bir 4K sağlar. Aşağıdaki kod bunun nasıl yapılacağını göstermektedir. 10 POKE 44,192:POKE 49152,0 20 LOAD “Short program”, 8

Bu örnekte, satır 10 Basic başlangıcını 49152'ye yerleştirir ve o adrese 0 POKE eder. Satır 20'deki kısa program (short program) 4K'dan daha kısa olan her program olabilir. O satır kısa programı yükler ve çalıştırmaya başlar, böylece 2048'de başlayan esas program bellekte değişmeden kalır. Kontrolü şöyle bir satırla yeniden esas programa devredebilirsiniz: 100 POKE 44,8:GOTO esas programdaki satır numarası Kısa programa da şöyle bir şekilde geri dönebilirsiniz: 200 POKE 44,192:GOTO kısa programdaki satır numarası Böyle bir şey eğlenceli olabilir.

C-128 BELLEK İDARESİ

C-128'de işler biraz daha değişir. Her şeyden önce, bu makinede Basic program RAM bank 0'da tutulur. Oysa ilişkili dizi ve değişkenler RAM bank 1'de depolanmaktadır, bu yüzden bellek pointer'ları arasında daha az ilişki vardır. Ayrıca C-64'ün zıttına, program ve data depolanması için mevcut olan alanlar birbirinden bağımsızdır ve bu nedenle data depolanması program uzunluğunca kısıtlanmaz. Son olarak, C-128 bellek içeriklerinin kullanılmasını hızlandırmak için BSave ve BLoad komutlarına sahiptir. Dikkat etmeniz gereken bir konu da Grafik emri (statement), GRAPHIC N (1 ile 4 arasındaki herhangi bir değerdir N) uygulandığında, Basic başlangıcı pointer'ı 9K'ya gider. Adres 46'nın içeriği 28'den 64'e değişir. GRAPHIC CLR uygulanacak olursa, tam tersi olur. Buna ilave olarak, o sırada bellekte olan her Basic programı yeni yere taşınır. C-128'de belleği, RAM bank 0'daki program deposunun üstünde bellek depolamak kolaydır. Sadece 4626 ile 4627'nin içeriklerini değiştirin. Örneğin 4K rezerve etmek için şunu girin: POKE 4627,240 FRE(0) fonksiyonu RAM bank 0'daki mevcut belleği Basic tavanı ve Program sonu değerleri arasındaki fark olarak verir. C-128'de elde edilen 16 bitlik, işaretlenmemiş tam sayı sizin daha fazla bir çaba harcamanıza gerek olmadan halledilir. Tüm bunlar C-64 ve C-128'in bellek haritalarına sadece bir girişti. Ayrıntılı bilgiler için programcı referans kitaplarına başvurmalısınız.

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