Makine Diline erhaba (8) AYHAN KALAYLIOĞLU 6. MAKİNE DİLİNDE PROGRAMLAMA COMMODORE 64'te makine di- lini kullandırmayı gerektiren başlıca konu, yüksek çözünürlüklü grafikle- rin yaratılması olayı. Bu bölümde, biz bu sorunları önce BASIC'te for- müle edip, daha sonra makine diline çevirmeyi deneyeceğiz. Bu arada ana işlem ünitesinin yapabileceklerinin hepsini keşfedip, yeri gelince kullan- maya çalışacağız. Grafik işlemlerini yürütmek üzere yazılmış BASIC programlar genelde birbirinin içine geçmiş PEEK ve PO- KE komutları yığını şeklindedir. Bil- hassa bu tip programları makine di- line çevirirken bu dilin asıl gücünü keşfedeceğiz. Bundan başka, her iki dilin avantajlı yönlerinden aynı anda yararlanmak için değişik yollar dene- yeceğiz. Böylece yarı makine dili, yarı BASIC yapısına benzer programları- mız olacak. Böylece, oldukça kısa bir zamanda oldukça güçlü programlar elde edebileceğiz. Örnek programımıza geçmeden önce makine dili programların BA- SIC'ten nasıl kullanıldığını ve para- metrelerin nasıl gönderildiğini göre- lim. Makine dilindeki altprogramla- rın çağrılması için SYS komutunu kullanacağız. Bu komutun arkasın- dan gelen rakam, yürütülmek istenen altprogramın bellekte bulunduğu başlangıç adresidir. Makine dilinde- ki altprogram RTS (return from sub- routine) komutu ile bittiğinde kont- rol gene BASIC yorumlayıcısına ge- çer. Böylece BASIC'teki program kaldığı yerden yürümeye devam eder. Diyelim ki makine dilindeki altprog- ramımızın sabit bir görevi var, örne- ğin ekranı silmek, böyle bir durum- da herhangi bir parametreye gereksi- 60 nim duyulmayacak ve SYS komutu kendi başına yeterli olacaktır. Diye- lim ki grafik ekranına bir nokta ko- yan bir altprogramı çağıracağız; böy- le bir durumda tabii ki noktanın ne- reye konacağını bildiren bilgiler, ma- kine dili altiprograma geçmesi gereken parametrelerimiz olacaktır. Bu para- metreleri göndermek için birçok yön- tem vardır. Bunlardan ilki ve en ba- siti, parametreleri peşpeşe gelen ha- Commodore fıza birimlerine saklamaktır. Makine dilindeki altprogram, daha sonra bu parametreleri o bölgeden alır. Bizim örneğimizde de aynı yöntemi kulla- nacağız. Şöyle ki: Yatay koordinatı bir hafıza birimine, dikey koordina- tı bir diğer hafıza birimine saklaya- cağız. BASIC'te tüm bu işlemi yap- mak için iki adet POKE komutuna ihtiyacımız olacak. Makine dili prog- ramımız yürürken bu parametreleri o