Commodore sayı 5, sayfa 9

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 9

Cin Numaraları

Daha önce cinlerin 0-7 arası rakamlarla gösterildiğini söylemiştik. Ancak hangi cinin ne yapması gerektiği makineye bildirilirken bu rakamlar değil, 2^n formülü ile elde edilen sayılar kullanılır. Dolayısıyla kendi aramızda, 0, 1, 2 diye adlandıracağımız cinlerden makineye bahsederken şu temsil numaralarını (bundan böyle tn. kısaltmasıyla gösterilecek) kullanacağız:

Cin no. Temsil no. 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128

Birden çok cinden birden söz etmek istediğimiz zaman ise, o cinlere ait temsil no.ları toplanır. Şimdi artık cinlerin çarpışmasına dair örnek komutlarımıza dönebiliriz:

IF PEEK (V 430) AND 1—1 THEN GOTO 100

0 no.lu cin başka herhangi bir cinle çarpışırsa, 100 no.lu program satırına git.

IF PEEK (V * 30) AND 6-6 THEN POKE (V 4 21), PEEK (V 4 21) AND (255-2-4)

1 ve 2 no.lu cinler çarpışırsa, her ikisi de ekrandan silinsin. Şimdi bu karmaşıklığı biraz çözmeye çalışalım. 1 ve 2 no.lu cinlerden söz ettiğimiz 6'nın 244 olmasından anlaşılıyor. $D015 cinlerin silinmesini sağlayan sicil. Bütün cinler birden görünüyorsa, değeri 128-255 olacaktır. Bizim yapmak istediğimiz, $D015'te mevcut olan değerden, sadece 2 ve 4'ün silinmesini sağlayacak olan değerleri çıkartmak. Bunun için önce mevcut değeri PEEK etmemiz, bunu yalnızca 2 ve 4 no.lu cinlerin silinmesini sağlayacak şekilde yeniden düzenlememiz (255-2-4) ve sonucu yeniden $D015 POKE etmemiz gerekiyor. Eğer çarpışanlar cinler değilse, bir cin başka herhangi bir başka karakterle çarpışıyorsa, ufak bir değişiklik gerekiyor. Örneğin;

IF PEEK (V 431) AND 4-4 THEN PRINT “CLR”

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