Commodore sayı 21, sayfa 64

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 64

AYHAN KALAYLIOĞLU

Geçen yazımızda yarım bıraktığımız konfigürasyon değiştirme işleminin son kısmıyla bu yazımıza başlıyoruz.

730 — LDX $34 740 — SEL 750 — STX1 760 — ORA (SUML),Y 710 — STA (SUML),Y 780 — LDX $37 790 — STX1 800 — CLI 810 — RTS

Programımız bitmiştir! Artık rahat bir nefes alıp, doğru çalışıp çalışmadığını kontrol edebiliriz. Şimdiye kadar yazdığımız tüm programların hafızada yer aldığını varsayarak ufak bir BASIC program yardımıyla deneme yapalım. Tüm programların aynı anda hafızada olup da, bir de BASIC programı nasıl çalıştırmayı becereceklerini merak edenler için bunun yöntemini açıklayalım da daha sonra anlaşmazlık çıkmasın! Şimdiye kadar yazdığımız tüm altprogramların “source” kodlarını (assembler'dan geçmemiş hali) bir yerde saklıyorsunuz herhalde. Şimdi, SUPER ASSEMBLER'i yükleyip çalıştırdıktan sonra, bunları peş peşe yükleyip çalıştırın. Hepsi, hafızada kendileri için gösterilmiş yere yerleşecektir. Hepsinin “assembly” işlemi bittikten sonra, demin söylediğimiz “tüm altprogramların aynı anda hafızada” durumuna geldiniz demektir. BASIC'teki deneme programınızı yazıp çalıştırabilmek için, SUPER ASSEMBLER'i terk etmeniz gerekiyor. Bunun için, bilgisayarı kapatıp açmayacağınız aşikâr. Yoksa, deminden beri peş peşe yükleyip assembler'dan geçirdiğiniz programlar bellekten silinir. Fakat, SUPER ASSEMBLER'in “/X” komutunu kullanırsanız, bilgisayar ilk açılış durumuna dönecek, fakat sizin programlar

100 SYS 50176: REM GRAFİK MODUNA GEÇMEK 110 SYS 50208: REM EKRANI SİLMEK 120 POKE 780,16: REM SİYAH/BEYAZ 130 SYS 50240: RENK EKRANINI SİLMEK

140 FOR X'40 TO 319

150 POKE 780, X AND 255: REM X-LOW 160 POKE 781, X / 256: REM X-HIGH 170 POKE 782, X * 0.625: REM Y 180 SYS 50272: REM NOKTAYI KOYMAK

190 NEXT

200 GET A$: IF A-*“” THEN 200

210 SYS 50192: REM NORMALE DÖNÜŞ

TABLO I

hâlâ bellekte bulunacaktır. Artık, bu durumda BASIC'teki deneme programımızı yazıp çalıştırabiliriz. İşte program: (Bkz. Tablo 1)

Makine dilinde indeksli adresleme yöntemiyle, çalışmak istediğimiz bitleri tek tek kontrol edip düzenleyebiliriz.

Programı çalıştırdığınızda, sol üst köşeden sağ alt köşeye bir doğru çizilecektir. Herhangi bir tuşa bastığınızda ise normal yazı ekranına geçer. Bu örneği çalıştırdığınızda belli bir rahatlama duyacaksınız. Fakat, hemen arkasından bir işi tam yapamamanın rahatsızlığını duyacaksınız. Çünkü, bu kadar uğraştığımız programımız sadece nokta basıyor. Nokta silmek istersek ne olacak?.. Bu kadar çok şey yazdık. Herhalde bunların ucundan, köşesinden biraz bozup, değiştirip hem nokta koyup hem nokta silen bir altprogram yapabiliriz. Programın yaptığı, adres belirleme işlemi gibi karışık kısımları her iki işlem için de aynı olduğu için asıl değişikliği programın sonlarında, 760'ıncı satırdan sonra yapacağız. Şimdi, “ORA” komutunu kullanarak nokta koyma işlemini örnek değerlerle görelim.

Ve 01001000 Ve 00010000 ORA işlemi 01011000

Burada, “veya” işlemi sonucu, istediğimiz bitin yanmasını sağladık. Bunun tersi işlemi yapmak için “AND” komutunu kullanmamız gerekecek gibi. Ve 01011000 00010000 AND işlemi Ve 00010000 Pek olmadı gibi!.. Silmek istediğimiz bit dışında tüm bitler silindi. Bir de, “AND” işlemine silmek istediğimiz bit dışındaki tüm bitleri sokarsak, bu iş olacak gibi. Tabii, bunun için önce diğer bitleri işleme sokmamızı sağlayacak değeri hesaplamamız gerekiyor. Bu değerin bitlerinin işlem yapılacak değerin bitlerinin tam tersi olacağı açıkça belli oluyor. Bitleri tersine çevirmek için “EOR” komutunu kullandığımızı hatırlarsak:

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