Commodore sayı 34, sayfa 25

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 25

MAKİNE DİLİ

END Bir makine dili programı sona erdirmenin çeşitli yöntemleri vardır. Mesela $4003 adresine veya $4000 adresine JMP yapabilirsiniz. Eğer makine dili programı BASIC'ten SYS komutuyla başlatırsanız RTS ile BASIC'e dönebilirsiniz. Her JSR komutunun karşılık gelen bir RTS komutu vardır. JSR komutunu kullandığınızda stack'a dönüş adresi yerleştirilir. RTS komutuna sıra geldiğinde stack'taki adres kullanılarak geri dönülür. RTS komutu kullanılmadan başka bir JSR komutu gelirse, buna ait dönüş adresi stack'ta ilk adresin üstüne yerleştirilir. Buna göre iki JSR komutundan sonra stack'ta iki dönüş adresi bulunur. İlk RTS komutuna sıra geldiğinde en üstteki dönüş adresi kullanılır. Böylece program akışı en son kullanılan JSR komutundan sonraki komuta geçer. BASIC'te kullanılan SYS komutunun etkisi makine dilindeki JSR komutu gibidir. BASIC'e dönülmesi gereken adres stack'a yerleştirilir. Makine dilinde hiç JSR kullanılmadan veya JSR karşılığı olmadan kullanılan RTS komutu stack'ten BASIC'e geri dönüş adresini alır. Bir makine dili programı sona erdirmenin başka bir yolu da BRK komutunu kullanmaktır. Eğer bu komut C-128'de kullanılmışsa BRK komutu sonrası makine dili monitöre girersiniz. Bu tür bir kullanım genellikle program geliştirme sırasında veya hata arama sırasında kullanılır. Hata bulunduktan veya program sona erdikten sonra bu komutu RTS ile değiştirmek uygun olur. Programınızın incelenmesini istemiyorsanız işlevini tamamladığında durmasını engellemeniz gerekir. Bunun en iyi yolu da sonsuz döngülerdir. Bu yöntemin uygulanışını en iyi oyunlarda görebiliriz. Bu oyunlardan çıkmanın tek yolu bilgisayarı kapatıp açmaktır. (Ama elimizde imkan varsa resetleme yolu ile programı inceleme şansımız vardır.) Sonsuz döngüye bir örnek vererek END komutunun karşılığını tamamlayalım. Bu örneği kullanarak klavyeden istediğiniz bir tuşu okumanız mümkün olacaktır.

ATLALDAS$D4 ; basılan tuşun saklandığı hafıza ad- resi CMP 88 ; eğer bu değer 88 ise hiç bir tuşa ba- sılmadı demektir. BERATLA ; döngüye devam et

$D4 adresinde 88 değeri varsa hiç bir tuşa basılmamış demektir, sonsuz döngüye devam et. Eğer bir tuşa basılmışsa kontrol BEQ komutundan sonraki komuta geçer ve A yazmacında basılan tuşun değeri bulunur.

AMIGA

İlk konumuz son derece güncel bir olay olan virüsler. Şu ana kadar bilinen ve başımızı derde sokan iki virüs vardı: SCA ve BYTE BANDIT. Şimdi bilinen virüslerin sayısı beşe ulaşmış durumda. Fakat yeni çıkanlardan sadece DASA adındaki üçüncü virüs Türkiye'ye girmeyi başardı. Bu ve diğer beş virüse karşı en etkili virüs killer ise Guardian isimli program. Bunun elinden kurtulan virüs henüz yok. Virüs killer programı olarak arkadaşlarımız virüse karşı nasıl korunabilirler? Disketlerinizin korumasını daima kapalı tutun. Bu durumda diskete yazmak imkansız olduğundan virüs giremeyecektir. Yeni aldığınız disketlerin sağlığından emin olmadıkça bu disketleri çıkardıktan sonra bilgisayarınızı açıp kapatın. Resetlemek hiç bir işe yaramaz, AMIGA'da Guru'dan sonra en can sıkıcı olaylardan birisi READ/WRITE ERROR'dür. Bu mesajla genellikle disketten bir program yüklerken karşılaşırsınız. Bu mesaj sizin için çok değerli bir programın kaybını işaret ediyor olabilir. Mesajla karşılaştığınızda hemen ümitsizliğe kapılmayın ve RETRY seçeneğini en az beş kere deneyin. Çoğu kere durumun düzeldiğini göreceksiniz. Eğer bütün bunlara rağmen durum değişmezse hâlâ programı kurtarmak için bir şansınız vardır. Ancak biraz CLI kullanarak uğraşmak gerekecek, ilk olarak CLI ekranını açın ve; ED s/startup-sequence yazın. Karşınıza çıkan bilgisayarın açıldığında takip edeceği işlemlerdir. Eğer ana programın öncesinde, gibi komutlar varsa ve READ/WRITE ERROR burada ortaya çıkıyorsa programı kurtarma şansınız vardır. Ana programı anlamak için sıra ile her satırın başındaki isimleri kullanarak,

LIST isim komutunu verin. Burada çıkan değer 50000'den büyükse büyük ihtimalle programı bulduğunuz demektir. Bunun üstündeki isimlerin (satır başlarına) başlarına noktalı virgül koyup yeni startup-sequence'i SAVE edin ve tekrar deneyin. Şansınız varsa program kurtulur. Bu söylediğim işlemleri kesinlikle arızalı disketin bir kopyası üzerinde yapın. Karşılaşabileceğiniz startup-sequence'a bir örnek:

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