Commodore sayı 70, sayfa 43

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 43

Şimdiye kadar, Makine Dilinin Püf Noktaları köşesinde ufak tefek rutinler kurcaladık. Bu rutinleri birbirine ekleyerek hoş efektler yaptık. Artık atölyemizde bu rutinlerle BASIC'i birleştirerek işe yarar araçlar yaratmanın zamanı geldi. Bu işe girişmeden önce ilk olarak yapmamız gereken, BASIC sistemini etkilemeden makine dili programı yazmayı öğrenmektir. Çünkü intro tekniklerini açıklarken kullandığımız programlama sistemleri KERNAL'ın zaman zaman kullandığı bazı adreslerle oynayarak herhangi bir BASIC programının çalışmasını engelliyordu. Oysa çok harika zamanlamaya ihtiyaç duymayan rutinler, yeterince iyi programlanırsa BASIC'e güç katabilir. Dergimizi eski sayılarından beri takip edenler, 2. sayının döküm ekinde yayınlanmış olan “Matematik Temelli Çizimler” programının makine dilini ne kadar etkili kullandığını hatırlarlar. Eğer BASIC kullanarak X ve Y'ye bağlı bir fonksiyonu üç boyutlu olarak çizmeye kalkarsanız, her fonksiyon için 12-24 saat beklemek zorunda kalırsınız. Oysa demin bahsettiğim program, en çok vakit yiyen rutinleri makine dilinde yazarak bu işlemi en fazla on dakikaya indirmiştir. Atölyemizin ilk odacığında makine dilinin BASIC programlarını daha canlı, daha renkli hale getirmesini seyredeceğiz. Daha sonraki odacıklarda makine dilinde ondalıklı sayılarla işlem yapan işçilere bu işlemleri nasıl yaptıklarını soracağız. Ondan sonraki odacıklara henüz ben de uğramadım. Kalan işlemleri beraberce öğreniriz. Demin de söylediğim gibi bu ilk odacıkta ekranı daha canlı hale getirmek için neler yapabileceğimizi öğreneceğiz. “Bir konuyu anlamanın (ve anlatmanın tabii ki) en kolay yolu bir örnek üzerinde prensibinden yola çıkarak ilk örneğimizi sunuyorum: Şimdiye kadar birçok MENU sistemi gördünüz. Genel olarak alt alta dizilen seçenek numaralarının yanına seçenekler yazılır ve kullanıcının bir sayı girmesi beklenir. Karşılaşabileceğiniz en güzel efektlerden biri, seçilmekte olan satırın negatif (reverse) yazılmasıdır. Gelin, biz aktif olan seçeneği, ekran boyunca uzanan rengarenk şeritlerle belirtelim. Bu şerit kullanıcının kursor tuşlarını kullanmasıyla yukarı-aşağı oynasın ve RETURN tuşuna basıldığında da bulunduğu seçeneği bize bildirsin. Temel olarak pek de zor bir şey istemiyoruz, ama en azından iki işi yan yana yaptırmalıyız bilgisayarımıza. Bir yandan gerekli yere renkli şeritleri dizerken, diğer yandan da BASIC'in kullanılmasına izin vermeli program. Bu sayede kullanıcının tuşlarını BASIC'le kolayca izleyebiliriz. Tabii ki tüm işi makine dilinde yapabiliriz, ama bir IF...THEN komutuyla yapabileceğimiz kısacık işleri neden makine dilinde yapmaya çalışalım ki? Bu örneği programlayabilmek için ilk olarak BASIC'e karışmayan ve bir satırlık çizgiler koyan bir INTERRUPT rutini yapmalıyız. RASTER zamanının çoğunu BASIC'e ayırmak istediğimiz için $D012'nin gereken yere gelip gelmediğini sürekli kontrol edemeyiz. Bu durumda geriye bir tek seçenek kalıyor, o da BASIC'in çalışmasını engellemeyecek bir RASTER interrupt rutini yazmak. Şimdiye kadar kullandığımız RASTER interrupt giriş rutinleri, bazı arkadaşlarınızın da farkettiği gibi BASIC'i alt-üst ediyor. En sona sonsuz döngü kurmak yerine BASIC'e dönsek bile kursor ya yavaş ya da hızlı yanıp sönüyor, programların çalışması aksıyor. Bu durumda en baştan, sistemin zamanlamalarına dokunmayan bir RASTER interrupt yaratmalıyız. Aslında bir RASTER interrupt'ı yaratmak için Tablo 1'deki program yeterlidir.

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