1 Kasım 1987 Tarihli Commodore Gazetesi Sayfa 65

1 Kasım 1987 tarihli Commodore Gazetesi Sayfa 65
Metin içeriği (otomatik olarak oluşturulmuştur)

Yo 00010000 Oç 11111111 ———————— EOR işlemi 9o 11101111 Bu değeri, istediğimiz biti silmek için kullanabiliriz. Yo OLOL1LÖDÜ Yo 1W1ÖN1 a 01001000 Şimdi sıra, bu işi programa yaptır- maya geldi. En son yaptığımız alt- programı, hem nokta koyabilecek hem nokta silebilecek şekilde değiş- üreceğiz. Yani, altprogramımız koor- dinatlardan başka, bir de yanık nokta mı, sönük nokta mı konacak, diye bir parametre daha olacak. Bu paramet- reyi, kullanım açısından rahat olma- sı bakımından “carry' flag'ına koya- cağız. Altprogram, yanık *carry' bi- tiyle çağırılmışsa yanık nokta basa- cak, eğer sönük “carry”' bitiyle çağı- rılmışsa tersi işlemi yapacak. Progra- mın başlarında gelen “carry' bilgisi- ni bozmadan sonlarda kullanmak mümkün olmadığı için durum regis- ter'ini yığında saklayıp, gerektiğinde geri alacağız. Hatırlayacaksınız, sak- lama işlemi “PHP”, geri alma işlemi 'PLP' komutlarıyla yapılıyordu. Bu komutları, programımızda uygun yerlere yerleştirmek gerekiyor. Aşa- ğıdaki satırları programa ekleyin: PHP PLP 145 — 135 — Programın 760'ıncı satırdan geri kalan kısmını şöyle değiştirin: 760 — BCC SİL 7T0 — ORA (SUML),Y 780 — BCS OK2 790 —SİL EOR # $FF 800 — AND (SUML), Y 8l0 —OK2 STA (SUML),Y 820 — LDX » $37 830 — SIXI 840 — CLI 850 — RTS CARRY flag'ı sönükse 790'ıncı sa- tıra sıçrıyoruz. ve demin yukarıda el- de yaptığımız “bitleri ters çevirme' iş- lemini, program içinde yapıyoruz. Ardından, bildiğimiz “AND' işlemi ve yerine geri yazma olayları gerçek- leşiyor. Eğer, CARRY flag'ı vanık- 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 1—1 150 FOR X-0 TO 319 160 POKE 780, X AND 255: REM X-LOW 170 POKE 781, X / 256: REM X-HIGH 180 POKE 782, X * 0.625: REM Y 190 POKE 783,1: REM YAZMA/SİLME 200 SYS 50272: NEXT 210 GET A$: 1F A$-“*” THEN 1-1-1: GOTO 150 220 5YS 320192: REM NORMALE DÖNÜŞ TABLO |l sa, “ORA' işlemi ile istediğimiz biti yakıp, yerine geri yazma işleminin ol- duğu yere sıçrıyoruz. Bu sıçrama iş- leminde *BCS' komutunu kullanarak gene *carry' bitinin içeriğine göre ka- rar veriyoruz. Çünkü, *ORA” komu- * tu *carry' bitinin içeriğini bozmuyor (eğer CMP, ADC gibi komutlar ol- saydı, durum daha değişik olurdu Programımızın yeni halini dene- mek için, BASIC'teki altprogramı- mızda da bazı değişiklikler yapalım: (Bkz. Tablo ) Bu program çalıştırıldığında, de- minki düz çizgiyi gene çizer, fakat he- men ardından aynı çizgiyi siler. Nok- taların basılması veya silinmesi gerek- tiği, altprograma durum register'ini 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 REM 150 FOR X- 160 POKE 780,X 170 POKE 781,0 180 POKE 782,Y 190 POKE 783,1 200 SYS 50272: NEXT: NEXT 210 FOR C-0 TO 255 220 FOR1-1 TO 500 230 POKE 780,C 240 SYS 50240 250 NEXT 260 SYS 50192 70 TO 150: FOR Y- A TO 199 TABLOÖ İll (dolayısıyla CARRY flag'ını) geçiren 783 adresli bellek elemanı vasıtasıy- la bildirilir. Program, çizme ve silme işlemlerini peşpeşe ve devamlı olarak yapmaktadır. Bunu durdurmak için herhangi bir tuşa basmanız kafidir. Böylece, normal yazı ekranına döner- siniz. Bu arada grafik ekranının, o anki durumu korunur. Yani, daha sonra grafik moduna geçtiğinizde ek- ranın son bıraktığınız halini görme- niz mümkündür. Şimdi biraz da renklerle oynayalım. (Bkz. Tablo II) Burada önce bir şekil çizilmekte ve bu şekil 256 değişik renk kombinas- yonunda gösterilmektedir. Commodore Makine dilinde programlama açı- sından, yazımızın bu bölümünde, in- deksli adresleme üzerinde tecrübe sa- hibi olduk. Mantıksal işlemleri de ol- dukça detaylı kurcaladık. Böylece, artık istediğimiz bitleri yakıp, söndü- rüp, ters çevirebiliyoruz. Yığını, ken- di verilerimizi saklamak için kullan- dık. Bunlardan başka, toplama ve bit kaydırma gibi işlemleri 16 bit üzerin- den yapmayı becerdik. Şu anda, kav- ram olarak tek eksiğimiz, altprogram kullanma tekniği. Bu eksikliğimizi de zaten bir sonraki bölümde fazlasıyla gidereceğiz. Gelecek sayıda buluşmak üzere, şimdilik hoşçakalın... D 65

Bu sayıdan diğer sayfalar: