Commodore sayı 31, sayfa 52

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 52

Basıc Programlar Kürsoru ekranın istenilen bir yerine göndermenin çeşitli yolları var. Daha evvelki yazılarımızda bu işlem için çeşitli POKE Komutları vermiştik. Ancak kürsorun devamlı olarak yerinin değiştirilmesi gereken bir programda bu kadar çok POKE Komutu, programın okunabilirliğini azaltır. POKE komutu yerine kontrol karakterleri kullanmak da programın okunurluğunu azaltır. Bu kullanıma bir örnek verelim:

DOWN DOWN RİGHT RİGHT RISHT “

Bu satır kontrol karakteri içeren bir satırın BDE ile alınmiş çıkışıdır. Ancak bu satırı BDE olmadan yazdırırsak, anlaşılması güç karakterlerle uğraşmak zorunda kalacaktık. Yeni vereceğimiz yöntem diğerlerine göre daha hızlı bir yöntem değil, hatta diğer yöntemlere göre daha fazla hafıza harcamayı gerektiriyor. Ancak bu yöntemle programın anlaşılması çok daha kolay. Mesela onikinci kolon, onuncu satıra MERHABA yazmak için bütün yapmamız gereken:

40 PRİNT “MERHABA”

Bu şekilde bir kullanımdan evvel dizileri tanımlamak gerekiyor. SAS ve KLS dizilerini tanımlamak için programınıza şu satırları ekleyin:

1 GOSUB 60000 END 60000 Fzx0 : : 39 600410 DIM SAS(LS), KLS(CS)

60050 SAS(X)- SAS(X-1)4 CHRS(47) 60060 NEXT 60070 FOR 1 TO CS 60080 KLS(X-1) 4 CHRS(29) 60090 NEXT 60400 RETURN

Artık SA$ ve KLS dizilerini kullanarak kürsoru istediğiniz yere yerleştirebilirsiniz. Ekrandaki yirmibeş satırı 0-24 şeklinde sıraladık. Kolonlar 0-39 şeklinde sıralanıyor. Eğer sıfırdan başlamak istemezseniz 60000 numaralı satırdaki F değişkenini F=1 yapın. Bu değişiklikten sonra kolonlar 1-40, satırlar 1-25 olarak sıralanır.

Yeni INPUT Komutu INPUT komutu, kullanıcının verileri girip RETURN tuşuna basması için bekler. Eğer kullanıcı hiçbir şey yapmazsa, program bu noktada sonsuza kadar bekler. Eğer bazı durumlarda INPUT komutuna ne kadar beklemesi gerektiğini söyleyebilirsek daha iyi olur. Mesela bir test programı, soruların cevabı için belirli bir süre bekleyip kullanıcının sürenin sonunda bir sonraki soruya otomatik olarak geçmesini sağlayabilir. Program Döküm Eki'ndeki ikinci program, zaman kontrollü INPUT komutunu devreye sokuyor. Yeni INPUT komutu kullanıldığında cevap için kalan süreyi ekranın üst sağ köşesinde izleyebilirsiniz. Saat sesli olarak geriye doğru sayacaktır. Süre bitiminde veri girişi yapılmamışsa, bir gong sesi çıkar. Programı yazdıktan sonra çalıştırmadan evvel muhakkak SAVE edin. Çünkü makine dilini hafızaya geçiren BASIC yükleyici, işini bitirdiğinde kendini siler. Makine dili program hafızada sadece 160 Byte yer kaplar ve BASIC programınız tarafından çağrılana kadar bekler. Yeni INPUT komutunu kullanabilmek için aşağıdaki üç altprogramı, programınıza eklemeniz gerekir. İlk alt program SYS komutuyla makine dili programı çalıştırıp geriye sayımı başlatır. İlk alt program:

5000 REM GERİ SAYIM BAŞLADI 5010 POKE 254,RENK : POKE 252,SES : POKE 253.ZA 5020 SYS 1020 : RETURN

RENK değişkeninde saatin rengi belirleniyor. Eğer saatin görünmesini istemezseniz renk olarak arka plan rengini seçin. SES değişkeninde saat sesinin yüksekliği saklanıyor. 0 değeri sesin duyulmasını engeller. 15 değeri en yüksek sesi verir. ZA değişkeni izin verilen süreyi taşır. Bu süre 1 ile 99 saniye arasında olabilir. Bu üç değişkeni programın başında hazırlamanız gerekir. İkinci altprogram saati kapatır. Bu altprogramı her zaman INPUT komutundan sonra çağırmanız gerekir. Altprogramdan dönüşte iki değişken önem taşır. FLG değişkeni 1 değerini taşırsa, kullanıcı RETURN tuşuna basmış demektir. Aksi takdirde bu değişkenin değeri sıfır olur. TR değişkeni kalan zamanı verir. Eğer zaman bitiminde bir cevap verilmemişse, bu değişkenin değeri

5100 REM ALT PROGRAM - 2 5110 SYS 65418 5120 POKE 1062,32 : POKE 1063,32 5130 TR- 6 5140 IF TR— 100 THEN TR-O 5150 FLG -PEEK(254) : RETURN

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