OKUR MEKTUPLARI

lar vermesinden anlaşılabilir. 12) C-64 bilgisayarınızda PASCAL dilini kullanabilirsiniz. Ancak kaset kullanıcısı iseniz uygulamalarınız sınırlı kalacaktır. Disket kullanıcıları PAS-CAL dilinden tam anlamıyla yararlanabilirler. Bir PASCAL programı yazmak için ilk olarak PASCAL programını yükleyip çalıştırmanız gerekir. Bundan sonra istediğiniz PASCAL programı yazabilirsiniz. BI Joystick kontrolunu C-64 püf noktalarının ilerki bölümlerinde bulabileceksiniz.

MDE ve BDE

Sayın Commodore Dergisi, Ben bir yıllık Commodore'cuyum. Sık sık karşıma çıkan ve beni çaresiz bırakan aşağıdaki sorunlarımı çözerseniz çok sevineceğim. 1-27. sayınızdaki Aynalar adlı programda programı MDE ile giriniz deniyor. Bu nasıl oluyor? 2- Yine aynı dergide POWER PAU-SE 64 programında programı BDE ile yazmamız isteniyor. Bunlar nasıl yazılıyor? Başka şekli var mı? Açıklarsanız sevinirim. Hacı Osman Kayıhan Sayın Hacı Osman Kayıhan, Program Döküm Eki'nde yayınlanan programlar kolay okunabilmeleri için türlerine göre BDE veya MDE programları aracılığı ile yayınlanıyor. BA-SIC diliyle yazılmış olan programların listeleri, BDE (BASIC Dili Editörü) kullanılarak alınıyor. BDE ile alınan program dökümlerinde normalde grafik işaretleri ile gösterilen kontrol karakterleri yazı olarak veriliyor. Buna örnek olarak, UP BİR TUŞA BASINIZ” satırını verebiliriz. Bundan başka her satırın sonunda parantez içinde yer alan sayı ile o satırı doğru olarak yazıp yazmadığınızı kontrol edebilirsiniz. Ancak bunun için program yazımı sırasında sizin de BDE programını kullanmanız gerekir. Aynı şekilde Makine Dili programların yazımını kolaylaştırmak için MDE (Makine Dili Editörü) programı kullanılıyor. Her iki programı da dergimizin ilk sayılarında bulabilirsiniz. Eğer bu programları kullanmak istemezseniz, verilen programları normal halde yazabilirsiniz. Ancak yazdığınızı derhal kontrol edemeyeceğiniz için hata yapma olasılığı çoğalacaktır. BASIC programları yazarken satır sonlarındaki rakamları yazmayın. Bunlar programa dahil değildir, kontrol amacıyla verilirler.

Makine Dili Programlar

Sayın Commodore Dergisi, Benim sorunum Makine Dili Editö- Tü ile. Programı yazdıktan sonra kaydediyorum. Bilgisayarı açıp kapattığımda yazdığım program çıkmıyor. Şimdiden teşekkürler. Serhan Kirişler

Sayın Serhan Kirişler, Programı gerektiği gibi saklayın. Daha sonra programı yüklerken, LOAD"“program-ismi”',8,1 komutuyla yükleyin. Bu sayede program hafızaya saklandığı yerden itibaren yüklenmiş olur. Makine Dili programları SYS komutundan sonra gelen başlangıç adresi ile çalışır. Bu komutu BA-SIC programları çalıştırmada kullandığımız RUN komutuna benzetebiliriz. Makine Dili Programı LIST ederek göremezsiniz. Çünkü LIST komutu $0801 adresinde başlayan BASIC programların listesini almak için kullanılır. Makine Dili Programı başka bir adreste yer alacağından sanki hâfızada hiçbir şey yokmuş izlenimi doğar. Eğer Makine Dili Programı'nız $0801 adresinde başlarsa LIST komutu ekranda anlamsız şekiller verir.

Yazımıza Amiga sahiplerini yeni bir virüse karşı uyabaşlayacağız. Yeni virüsün adı BYTE BANDID. Bu virüsün kötü tarafı, kullanıcıyı bilgisayarı bozulmuş yanılgısına düşürmesi. Çünkü bir program çalışırken birden ekran simsiyah (bu renk değişik olabilir) oluyor. Ekran bu duruma geldiğinde yapabileceğiniz bir tek şey var. Elinizi hiç kaldırmadan sıra ile klavyenin en alt sol kısmında bulunan ALT tuşundan başlayarak sağ taraftaki ALT tuşuna kadar olan tüm tuşlara basın. Ekran geçici olarak eski haline dönecektir. Ancak ekranın kararması belirli aralıklarla olacağından, bu geçici bir çözüm. Virüslü disteki sağlığına kavuşturmak için en iyi yöntem bir virüs killer programı kullanmak olur. Ancak böyle bir program buluna kadar İNS-TALL komutuyla disketi sağlığına kavuşturabilirsiniz. İlk olarak bilgisayarı kapatın ve tekrar açın. Sağlamlığından emin olduğunuz Workbench disketini bilgisayara takın. Eğer herhangi bir disketin korumasını kapalı tutarsanız, o diskete kesinlikle virüs bulaşmaz. Disketi taktıktan sonra şu komutları sıra ile yazın:

DIR RAM: COPY RAM: Bu iki komutu yazdıktan sonra workbench disketinizi çıkarın ve virüslü disketi koruması açık olarak bilgisayara takın. Ve aşağıdaki komutu yazın:

INSTALL DFO: Bu işlemden sonra virüslü disket sağlığına kavuşmuş olacaktır. Ancak hafızaya virüs yerleştirdiğinden, başka bir şey yapmadan önce bilgisayarı açıp kapamayı unutmayın.

Disket kataloğu C-64'te disket kullanıcıları disket kataloğunu görmek için; LOAD”

komutunu kullanırlar. Ancak bu komut hafızadaki programın silinmesine neden olur. Program Döküm Eki'ndeki PROGRAM-1, disket kataloğunu hafızadaki programı silmeden görmenizi sağlar. Eğer kendi programınızda disket kataloğunu okumak isterseniz, bu rutini programınıza ekleyin. Veya ilk olarak programı yükleyip çalıştırın. Kataloğu okumak için SYS828 kömuUtunu vermek gerekiyor. Program, 828 - 943 adresleri arasında yer alıyor. Eğer programınız bu hafıza bölgelerini kullanıyorsa, 10 numaralı satırdaki PO-KE adresini değiştirerek rutini başka yere alabilirsiniz Disket kataloğu ekrana yazılırken listeyi bir tuşa basarak durdurabilirsiniz. Tekrar bir tuşa bastığınızda liste devam eder. Liste alma işlemini durdurmak için RUN/ STOP tuşuna basın. Sprite İnceleme Hafızada bulunan herhangi bir sprite'ı incelemek için PEEK Komutunu kullanabilirsiniz. Ancak bu komutun vereceği sayıları kâğıt üzerinde noktalara çevirmek oldukça uzun zaman alır. Bu işlemi bilgisayara yaptırabiliriz. Ancak ilk olarak incelemek istediğiniz sprite'ın verilerinin hangi adreste saklandığını bilmeniz gerekir. C-64'te sprite'lar için ayrılmış belirli bir adres yoktur. 2040-2047 arasındaki adreslerde sprite verilerinin saklandığı adreslerin başlangıç noktaları saklanır. Ancak bu adresler kullanıcıya göre değişir. Aşağıdaki program, sprite verisinin 12288 adresinde başladığını kabul ediyor. Bu adresi incelemek istediğiniz sprite'ın saklandığı adrese göre değiştirin. Bunun için 10 numMaralı satırdaki SL değişkenini değiştirmek yeterli olacak. Sprite başlangıç adresini saptadıktan sonra aşağıdaki kısa programı çalıştırın:

5 OPEN 1,3
122888
20 FOR TO SL4 60 STEP 3 : AS“”
30 FOR TO 128 : SB-PEEKİK)
A0FORL-1ATO 8
50 SB AND M THEN
60 4*CHRS(32)
70M-M/2
80 NEXT L : NEXT K : PRİNT 4,A$
90 NEXT J

Program çalıştığında istenen sprite'ı ekrana çizer 5 numaralı satırdaki OPEN komutuyla ekranı bir dosya olarak açıyoruz. Eğer bir yazıcınız varsa, bu satırı

5 OPEN 1,4
GOTO 70

şeklinde değiştirerek sprite'ın yazıcıya yazılmasını sağlayabilirsiniz. Ancak bu değişiklikten sonra programa aşağıdaki satırları eklemeyi unutmayın:

100 PRİNT 4
1410 CLOSE 1

Oyunlar İçin Kolaylıklar

Burada sözü oyunlar için çeşitli kolaylıklar gönderen arkadaşlarımıza bırakıyoruz. Ankara'dan Ekin İşisağ isimli arkadaşımız bize aşağıdaki püf noktasını göndermiş, kendisine teşekkür ediyoruz.

Ghostbusters İsim sorulduğunda OWEN yazın. Banka hesap numarasına LİST yazdığınızda oyuna 720.000 Dolar ile başlayabilirsiniz. İstanbul'dan Furkan Kıraç arkadaşımız Destroyer oyunu hakkında sorular soruyor: Joystick yardımı ile dört ayrı rotayı seçtikten sonra ne yapacağız? Rotanın dördüncü noktasını da seçtikten sonra iki harften oluşan emirleri yazıp RETURN tuşuna basmanız gerekir. Bu emirleri aşağıdadır: SO : Sonar RA : Radar AB : Gemiyi terk et AP : Güverte uçak savar - 1 AS : Güverte uçak savar - 2 BR : Köprü kontrol DA : Hasar kontrol DC : denizaltı bombası

Bundan başka F7 tuşuna basarak geminin düdüğünü çalıştırabilirsiniz Bulduğunuz oyun kolaylıklarını diğer Commodore'- cu arkadaşlarla paylaşmak isterseniz bize gönderme-

Sı 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 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

Üçüncü altprogram zaman bitimini belirten gong sesini çalar. Bu sesi istediğiniz bir ses efekti ile değiştirebilirsiniz. Eğer gong sesini istemezseniz 5200 numaralı satırı RETURN komutuyla bitirin.

5200 S-54272
5210 FOR L—0 TO 24 : POKE S4 : NEXT
5220 POKE S4 1,130 : POKE S4- 5,9
5230 POKE 15,30 : POKE S4 24,SES
5240 POKE S4 4,21
5250 FOR T— 1 TO 300 : NEXT
5260 POKE S4 4,20
5270 FOR T— 1 TO 500 : NEXT
5280 FOR L—0 TO 24 : POKE : NEXT
5290 RETURN

Yeni INPUT komutunu kullanmak istediğiniz programlara bu üç altprogramı eklemeyi unutmayın. Yeni INPUT komutunu kullanan program şu şekilde olabilir: 100 POKE 53280,6:POKE 53281,6:PRINT” BLK “:PRINT CHR$(447) 1410 : : ZA=10 200 PRINT “SORUYA 10 SANİYE İÇİNDE CEVAP VERİN” 210 PRINT “ÇALIŞTIĞINIZ BİLGİSAYAR NEDİR” 220 GOSUB 5000 : INPUT A$ : GOSUB 5100 230 IF FLG THEN 250 240 PRINT “ÜZGÜNÜM SÜRE BİTTİ.“:GOSUB 5200: GOTO 270 250 IF A$=“COMMODORE” THEN PRINT “SANİYENİZ KALMIŞTI”:GOTO 270 260 PRINT “CEVAP YANLIŞ” 270 END

Bu programda 100 numaralı satırda ekran renklerini belirliyoruz. 410 numaralı satırda geri sayımda kullanılan üç değişken ayarlanıyor. 200 ve 210 numaralı satırda kullanıcıya soru soruluyor. 220 numaralı satırdaki GOSUB komutuyla geri sayım başlatılıyor. Her GOSUB 5000 çağrısını GOSUB 5100 çağrısı izlemeli, aksi takdirde geri sayım hep devam eder. Eğer GOSUB 5100 komutu işlenmeden programı RUN/STOP ile durdurursanız geri sayım devam eder. Saati durdurmak için SYS 65418 komutunu kullanabilirsiniz. 230 numaralı satırda FLG değişkeni kontrol ediliyor. Bu değişken, kullanıcının zamanında RETURN tuşuna basıp basmadığını belirliyor. Eğer değişkenin değeri sıfır ise zaman bittiğinden gong sesi çalar. Eğer zaman bittiğinde doğru cevap yazılmış, ama RETURN tuşuna basılmamışsa cevap yanlış kabul edilir. Bu durumu belirlemek için programa şu satırı ekleyin:

235 IF A$-“COMMODORE” THEN PRİNT “CEVAP
DOĞRU, ANCAK RETURN TUŞUNA BASMAYI
UNUTTUNUZ.”:GOTO 270

Makine Dili Makine dili programı yaparken ekranı yüksek çözünürlüğe nasıl geçiririz? 53265 numaralı adresin beşinci biti yüksek çözünürlük modunu kontrol eder. Bu biti yakmak için BASIC'te POKE 53265,PEEK(53265) OR 32 komutunu vermek yeterli olur. Makine dilinde de aynı tekniği kullanacağız.

LDA 53265
ORA 32
STA 53265

Aşağıda makine dilinde yazılmış olan program yüksek çözünürlük ekranını 24576 numaralı adreste açar.

LDA 56578
ORA 3
STA 56578
LDA 56576  ;VİC çipi bu adrese
AND 252 ;dikkat et.
ORA 2
STA 56576
LDA 53272 ;VİIC bu adrese bak
AND 15 ve bitmap için
ORA 120 ;hafıza
STA 53272
LDA 53265  ;53265 numaralı adresin
ORA 32 beşinci bitini yak
STA 53265
RTS

Tekrar normale dönmek için aşağıdaki programı kullanabilirsiniz.

LDA 56578
ORA 3
STA 56578
LDA 56576
AND 252
ORA, 3
STA 56576
LDA 21
STA 53272
LDA 27
STA 53265
RTS

Şimdilik hoşçakalın.