Bu sayfadaki yazılar
Sayfanın metni
Sayfa 10
)
Ç
O
BASIC, çoğu kullanıcı tarafından makine diline tercih edilir. Çünkü bir makine dili programcısı iki sayıyı birbiriyle çarpabilmek için bile bir sayfa dolusu program yazmalıdır. HELE bir sayıyı diğerine bölmek dünyadaki en zor işlerden biridir. Ama, makine dili BASIC'le karşılaştırılmayacak kadar hızlı olduğu için, birçok programcı tarafından tercih edilmektedir. Bu yazı dizimizde, makine dilini kullanarak BASIC ROM'unda hazır duran ve birileri tarafından kullanılmayı bekleyen rutinleri ortaya çıkarmayı ve bu sayede makine dilini kullanmayı neredeyse BASIC kadar kolaylaştırmayı amaçlıyoruz. Tabii ki BASIC ROM'unu kullandığınız zaman programlarınız normalde olacağından daha yavaş çalışacaktır, ama hız hiçbir zaman BASIC'in sinir hoplatıcı yavaşlığına erişemeyecektir. Bütün bunların yanında, BASIC ROM'unda yazılı programları kullandığınız için hem programlarınız kısacık olacaktır, hem de yazması BASIC programı yazmak kadar kolaylaşacaktır.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 11
İşin en güzel yanı, bir adreste bulunan rutinin nasıl çalıştığını bilmek zorunda olmamanız. Bu rutinleri belli adreslere yerleştirilmiş kara kutular olarak düşünebilirsiniz. Bu kara kutuların sağ üst ve sol alt kenarlarında birer boşluk bulunur. Sağdaki boşluğa çilek koyduğunuzda soldaki boşluktan çilek suyu çıkaran bir makinenin asıl işi yapan kısmı da bir kara kutudur. Nasıl çalıştığını hiç merak etmezsiniz, ama her canınız istediğinde çilek suyu içebilirsiniz. En iyisi ilk kara kutucuğumuzla işe başlayalım. Makine dili de olsa, BASIC de olsa her türlü programı kullanılır kılan en önemli şeylerden biri ekran düzenini iyi yapmaktır. İyi bir ekran düzeni yapabilmek için ise bol bol PRINT kullanmanız gerekir. Tabii ki bu yalnızca BASIC kullanıcıları için geçerlidir. Makine dili kullanıcıları yüzlerce döngü kurup, aralarda harfleri teker teker basacak olan JSR $FFD2'leri kullanmak zorundadır. Daha doğrusu kullanmak zorundaydı. Çünkü ROM'da $AB1E'de bulunan rutinden haberleri yoktu:
1. $AB1E; Karakter grubu yazdırma:
Eğer ekrana bir cümle yazdıracaksanız, cümlenin uzunluğunu Y'de tutup, cümleyi harf harf ekrana yazdırabilirsiniz. Ama bunun yerine cümleyi ASCII kodu olarak belleğin bir yerine (mesela $C100) yazıp sonuna bir adet $00 ekleyebilirsiniz. Daha sonra bu adresin alçak değerlikli baytını A'ya, yüksek değerlikli baytını da Y'ye yerleştirip sıçrarsanız, $00 baytının olduğu adrese kadar olan tüm harfler otomatik olarak ekranda kursor'un bulunduğu yere yazılacaktır.
PROGRAM 1: .C000 LDA 15$00 Ldy İsr $ABİE Rts $C100'da bulunan mesajı ekrana yazan program. Mesaj $00 işle bit- melidir ve 255 bayttan kısa olmalı- dır. Bu sayede bütün yazılarınızı tek seferde, zahmetsizce yazabilirsiniz ekrana.
Eğer ekran temizleme, renk değiştirme ya da kursor yukarı, aşağı gibi kodları da kullanacaksanız, yazının ASCII kodlarını hesaplamak oldukça zahmetli olabilir. Ama bu işi de BASIC'e yaptırmanın kolay yolu var. İlk olarak "7DOWN COMMODORE DERGİSİ" gibi bir satır yazın ve RETURN'e basın (.. içinde yazılı olanlar gerekli tuşa basılarak yazılacaktır. Aynen yazmayın). Daha sonra bir monitör programı çalıştırın ve Tablo 1'de altı çizili adreslerin değerini gerekli adrese transfer edin. 256 baytı geçmediği sürece bu işlemi istediğiniz kadar tekrar edin. Tüm yazının sonuna da $00'ı ekleyin. Eğer bir bloktan uzun yazıları bu yöntemle yazdırmaya kalkarsanız bilgisayar kilitlenir. Ama her zaman yazılarınızı ikiye bölüp ayrı ayrı yazdırma şansınız bulunur. Bu arada belirtmeden geçemeyeceğim bir nokta var: Yazıda $0D karakterini kullanmadığınız sürece aynı satırda kalırsınız.
TABLO-İ:
0801: 22 08 OA 00 22 93 11 0809: 1111111111 1143 4F 0811: 4D 4D 4F 44 4F 52 45 20 0819: 44 45 52 47 49 53 49 22 0821: 00 00 00