yi Unutmayın. Adresimiz: Commodore Dergisi Oyunlar İçin Kolaylıklar Köşesi Silahhane Cad. Ralli Apt. 59/3 80200 Teşvikiye-İstanbul 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 Kornutları vermiştik. Ancak kürsorun de- vamlı olarak yerinin değiştirilmesi gereken bir prog- ramda bu kadar çok POKE Komutu, programın oku- nabilirliğini azaltır. POKE komutu yerine kontrol karak- terleri kullanmak da programın okunurluğunu azal- tır. Bu kullanıma bir örnek verelim: PRINT"“HOME DOWN DOWN RİGHT RİGHT RIGHT * Bu satır kontrol karakteri içeren bir satırın BDE ile alın- mış çıkışıdır. Ancak bu satırı BDE olmadan yazdırırsak, anlaşılması güç karakterlerle uğraşmak zorunda ka- lacaktık. Yeni vereceğimiz yöntem diğerlerine göre daha hız- li bir yöntem değil, hatta diğer yöntemlere göre da- ha fazla hafıza harcamayı gerektiriyor. Ancak bu yön- temle programın anlaşılması çok daha kolay, Mese- la onikinci kolon, onuncu satıra MERHABA yazmak için bütün yapmamız gereken: 10 PRİNT SAS(10):KLS(12): MERHABA” Bu şekilde bir kullanımdan evvel dizileri tanımlamak gereklyor. SA$ ve KL$ dizilerini tanımlamak için prog- ramınıza şu satırları ekleyin: 1 GÖSUB 60000 39999 END 60000 Fz0 : LS—F4-24 : CS-F439 60010 DIM SASILS), KLS(CS) 60020 SAS(F)— CHRS(49) 60030 KLS(F)- ”” 60040 FOR X—F4- 1 TOLS 60050 SAS(X) — SAS(X-1)4- CHRSC17) 60060 NEXT 60070 FOR X—F-41 TO CS 60080 KLS(X)—KLS(X-1)4 CHRS(29) 60090 NEXT 60100 RETURN Artık SA$ ve KL$ dizilerini kullanarak kürsoru İstedi- giniz yere yerleştirebilirsiniz. Ekrandaki yirmibeş satırı 0-24 şeklinde sıraladık. Kolonlar 0-39 şeklinde sırala- niyor. Eğer sıfırdan başlamak istemezseniz 60000 nu- maralı satırdaki F değişkenini F- 1 yapın. Bu değişik- likten 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 bek- ler. Eğer bazı durumlarda İNPUT 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 sonuunda bir sonraki soruya otomatik olarak geçmesini sağlaya- 52 bilir. Program Döküm Eki'ndeki ikinci program, zaman kontrollu 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 mu- hakkak 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 ka- dar bekler. Yeni INPUT komutunu kullanabilmek için aşağıdaki üç altprogramı, programınıza eklemeniz gerekir. ' İlk alt program SYS komutuyla makine dili progra- mı çalıştırıp geriye sayımı başlatır. İlk alt program: 5000 REM GERİ SAYIM BAŞLADI 5010 POKE 251,RENK : POKE 252,SES : POKE 253,ZA 5020 SYS 1020 : RETURN RENK Değişkeninde saatin rengi belirleniyor. Eğer saatin görünmesini İstemezseniz 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ük- sek 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ğe- ri sıfır olur. TR değişkeni kalan zamanı verir. Eğer za- man bitiminde bir cevap verilmemişse, bu değişke- nin değeri sıfırdır. 5100 REM ALT PROGRAM - 2 5110 SYS 65418 5120 POKE 1062,32 : POKE 1063,32 5130 TR— 1 4-PEEK(253)-İNT(PEEK(253)/16)* 6 5140 I1F TR— 100 THEN TR—O 5450 FLG — PEEK(254) : RETURN