Değişkenler

Program dökümü: DEGISKENLER CB00 CEE

BASIC'de program yazan arkadaşlar bilirler: Bir değişkene yanlış değer vermek yüzünden koca koca programlar bir türlü çalışmaz. Ancak saatler süren bir araştırmadan sonra, herhangi bir değişkene yanlış değer yüklendiği bulunur.

Çeşitli yardımcı programlar, bu araştırmayı çabuklaştırmak için DUMP, HELP, TRACE gibi komutlar getirmiştir. Ancak bunların tümü bazı eksiklikler gösterir. Örneğin hiçbir DUMP komutu, sayısal ve karakter değişkenlerinin dışında kalan matris değişkenlerini ve sistem değişkenlerini (TI, TI$ ve ST) göstermez. Üstelik DUMP komutundan sonra program, her zaman kaldığı yerden başlayamaz. Ekrandaki görüntünün bozulması da cabası.

Verdiğimiz programlar, tüm bu sorunların üstesinden geliyor. Önce MDE ile programı yazın ve SAVE edin. Daha sonra ,8,1 veya ,1,1 ile yükleyin ve NEW yapın. SYS 51968 ile programı çalışmaya hazırlayın. Görünürde hiçbir şey olmayacak. Ancak CTRL ve F1 tuşlarına aynı anda basınca ekranda, TI$, TI ve ST sistem değişkenlerinin değerleriyle birlikte yazıldığını göreceksiniz. Cursor, bu listelemeden önce bulunduğu yerde kalacaktır. Şimdi devamlı CTRL ve F1 tuşlarına basın. Bilgisayarın saatinin ilerlemesini izleyebileceksiniz.

Tabii programın tüm marifeti bu değil. Şimdi ekranı temizleyip, A=100 verin. Gene CTRL+F1 verince, ekrandaki listeye A değişkeninin de eklendiğini göreceksiniz. Aynı şeyi ZT$ = "DENEME" verdikten sonra da deneyin. Bir de F(7)=55 yaptıktan sonra. Gördüğünüz gibi, hafızada o anda tanımlanmış tüm değişkenler listelenmekte. Eğer ekranda çıkan değişken listesinin çıkışını yavaşlatmak isterseniz, CTRL tuşuna tek başına basın. Sol alt köşedeki Commodore tuşuna bastığınızda ise, listenin geçişi siz istediğiniz sürece bekleyecektir. Eğer geçişi durdurmak isterseniz, SHIFT tuşuna basınız.

İsterseniz programımızı bir de BASIC'de yazılmış bir program ile deneyelim. Bol bol değişken kullanan bir BASIC programı yükleyin ve çalıştırın. Yalnız dikkat edin, BASIC programınız $CB00-$CFFF (51968-53247) arasına dokunmasın. Çünkü bu arada bizim programımız var. Program çalışırken CTRL+F1 yapın. Programınızın o ana kadar kaldığı tüm değişkenleri ekranda görebileceksiniz. Değişkenlerin listelenmesi bitince veya siz SHIFT tuşuna basınca, BASIC programınız kaldığı yerden çalışmaya devam edecektir.

Peki, en başta DUMP komutunun ekranı bozmasını eksiklik olarak görmüştük. Bizim program da program bozuyor... İşte bu noktada, printer'ı olan okur'larımız yaşadı. BASIC programını çalıştırmadan önce POKE 52025,4 komutunu verin ve printer'ı açın. Şimdi BASIC programı çalıştırın ve istediğiniz zaman CTRL+F1 yapın. Eskiden ekranda gördüğünüz liste, printer'de kâğıda çıkacaktır. Liste bitince veya siz SHIFT ile durdurunca, programınız hiçbirşey olmamışcasına çalışmasını sürdürecektir. Ekran da olduğu gibi kalacaktır. Harika değil mi?

Şimdi işin biraz tekniğine girelim. CTRL+F1 tuşun algılanması, daha önce onuncu sayımızdaki F1-DIRECTORY programında anlattığımız interrupt programlama yöntemiyle oluyor.

Bu nedenle, eğer interrupt vektörünü değiştiren bir program ile birlikte bizim programımızı kullanmak istiyorsanız, programın çeşitli rutinlerini SYS komutları ile çağırabilirsiniz. Örneğin SIMONS' BASIC'de kullanabilmek için bu zorunlu.

Bunun için, öncelikle en başta verdiğiniz SYS 51968 komutunu vermeyeceksiniz. Eğer daha önceden verdiyseniz, RUN-STOP/RESTORE ile iptal edebilirsiniz. Eğer kazayla bu tuşlara bastıysanız, tekrar aktif yap-

mak için gene SYS 51968 vermelisiniz.

Daha sonrada programınızın içinde gerekli yerlere şu SYS komutlarından gerekenleri yerleştirin.

SYS 52071 : Tüm Değişkenler SYS 52083 : Matrisler (array) SYS 52093 : Sistem değişkenleri SYS 52273 : Karakter değişkenleri SYS 52287 : Ondalık sayı değişkenleri SYS 52300 : Tamsayı değişkenleri

SYS 52429 : Karakter matrisleri SYS 52443 : Ondalık sayı matrisleri SYS 52456 : Tamsayı matrisleri

CTRL, C= ve SHIFT tuşları işlerliklerini koruyacaktır. Eğer listeyi printer'e göndermek isterseniz, OPEN 1,4,0:CMD 1 komutundan sonra gereken SYS komutunu veriniz ve sonra da CLOSE 1 ile kanalı kapatınız.

Dikkat etmeniz gereken bir nokta var. Eğer CTRL+F1 şeklini kullanıyorsanız, disket sürücüsüyle olan işlemler sırasında bu tuşlara basmayınız. Bilgisayar, disket, ekran ve printer kanalları arasında şaşırıp kalacaktır.

Ayrıca, programın SUPER-ASS formatında assembler dökümünü de veriyoruz. Meraklı okuyucularımız inceleyebilirler. Eğer gerekiyorsa, istenen değişiklikleri kolayca yapabilirler.

İyi kullanımlar...

Bu yazıdaki programlar

Dergideki dökümlerden çıkarıldı; satırlar derginin kontrol toplamlarıyla doğrulandı ve programlar VICE emülatöründe denendi. Tarayıcıdaki C64'te çalıştırabilir, indirip bir emülatöre sürükleyip bırakabilir ya da gerçek bir C64'te LOAD "AD",8,1 ile yükleyebilirsiniz. "Sorun bulundu" yazanlarda bazı satırlar okunamadı ya da tutmadı; düzeltilmiş bir sürümünüz varsa contact@coze.org adresine gönderin.