Makine Diline Merhaba AYHAN KALAYLIOĞLU Geçen yazımızda yarım bıraktığımız kontigürasyon değiştirme işleminin son kısmıyla bu yazımıza başlıyoruz. 130 — LDX 534 740 — SEI 750 — STX 1 760 — ORA (SUML),Y 770 — STA (SUML),Y 780 — LDX $37 1D0 — STX1 800 — CLI ölü — RTS Programımız bitmiştir! Artık rahat bir nefes alıp, doğru çalışıp çalışma- dığını kontrol edebiliriz. Şimdiye ka- dar yazdığımız tüm programların ha- fızada yeraldığını varsayarak ufak bir BASIC program yardımıyla deneme yapalım. Tüm programların aynı an- da hafızada olup da, bir de BASIC programı nasıl çalıştırmayı becere- ceklerini merak edenler için bunun yöntemini açıklayalım da daha son- ra anlaşmazlık çıkmasın! Şimdiye kadar yazdığımız tüm alt- programların *source' kodlarını (as- sembler'dan geçmemiş hali) bir yer- de saklıyorsunuz herhalde. Şimdi, SUPER ASSEMELER''i yükleyip ça- lış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 “assembliy' işlemi bittikten sonra, demin söylediğimiz *tüm altprogramların aynı anda ha- fızada bulunma' durumuna geldiniz demektir. BASIC'teki deneme proz- ramınızı yazıp çalıştırabilmek için, SUPER ASSEMBLER' terk etmeniz gerekiyor. Bunun için, bilgisayarı ka- patıp açmayacağınız aşikâr. Yoksa, deminden beri peşpeşe yükleyip as- sembler'dan geçirdiğiniz programlar bellekten silinir. Fakat, SUPER AS- SEMBLER'in */X' komutunu kulla- nırsanız, bilgisayar ilk açılış durumu- na dönecek, fakat sizin programlar 64 (11) 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$: IFA-"” THEN 200 210 SYS 50192: REM NORMALE DÖNÜŞ TABLO | hâlâ bellekte bulunacaktır. Artık, bu durumda BASIC'teki deneme proz- ramımızı yazıp çalıştırabiliriz. İşte program: (Bkz. Tablo 1) akine 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 çi- zilecektir. 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, he- men arkasından bir işi tam yapama- manın rahatsızlığını duyacaksınız. Çünkü, bu kadar uğraştığımız prog- ramımız sadece nokta basıyor. Nok- ta silmek istersek ne olacak?.. Bu kadar çok şey yazdık. Herhal- de bunların ucundan, köşesinden bi- raz bozup, değiştirip hem nokta ko- yup hem nokta silen bir altprogram yapabiliriz. Programın yaptığı, adres belirleme işlemi gibi karışık kısımla- rı 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ğerler- le görelim. Yo 01001000 #9 00010000 Yo OTOLTÜOCÜ Burada, “veya' işlemi sonucu, iste- diğimiz bitin yanmasını sağladık. Bu- nun tersi işlemi yapmak için “AND' komutunu kullanmamız gerekecek gibi. o O1OTLODO o ODO1OO00O Yo O0010000 Pek olmadı gibi!.. Silmek istediği- miz bit dışında tüm bitler silindi. Biz de, “AND' işlemine silmek istediğimiz bit dışındaki tüm bitleri sokarsak, bu iş olacak gibi. Tabii, bunun için ön- ce diğer bitleri işleme sokmamızı sağ- layacak değeri hesaplamamız gereki- yor. Bu değerin bitlerinin işlem yapı- lacak değerin bitlerinin tam tersi ola- cağı açıkça belli oluyor. Bitleri tersi- ne çevirmek için *BOR' komutunu kullandığımızı hatırlarsak: