Commodore sayı 73, sayfa 16

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 16

180 DUN- TRUE 190 RETURN

Programınız GOSUB 100 ile altrutini çağırıyor. 100. satır DUN mantıksal değişkenine bakarak bu rutinin daha önce çağrılıp çağrılmadığını kontrol ediyor. Eğer DUN FALSE ise rutin çalıştırılır ve DUN TRUE yapılır. Böylece bu rutin bir daha çağrıldığında 100. satırdaki kontrole takılacaktır. 100. satırı şöylece kısaltabilirsiniz:

100 İF DUN THEN RETURN

Sonuç değişmez. Eğer rutin ilk çağrıldığında bir bölümünün diğer çağrılışlarında ise başka bir bölümünün çalışması isteniyorsa 100. satır şu şekilde değiştirilebilir.

100 DUN THEN ...(sadece ilk se- ferde)...:GOTO 180

NOT ayrıca sayısal değişkenlerde de kullanılabilir.

10 Az0 20B-NOTA 30 PRİNT B

sonuç olarak -1 alırsınız. NOT komutu gördüğü her 0 biti 1 yapar ve tam tersi. Eğer 0 ise 16 tane 0 bir var demektir. NOT ettiğinizde bu 16 bit şu hale gelir: 1111 1111 Bu da onluk düzende karşılık gelir. Buna “ikinin tamlayanı” sistemi denir. İkilik düzende 16 tane 1, 65535'e eşittir. Ancak bilgisayar normal ikilik düzeni kullanmaz, eski sayıların ifadesi için daha farklı bir yöntem izlenir. İkinin tamlayanı sistemi şöyle çalışır: 1. En soldaki hariç 15 biti al ve hepsini ters çevir (1'ler 0, 0'lar 1 yap). 2. Bu sonuca 1 ekle. 3. Sonuçtaki sayıya negatif de. En soldaki bite işaret biti diyebiliriz. İşaret bitinin 1 olması sayının negatif olduğunu ve işlemlerin yukarıdaki gibi işletilmesi gerektiğini gösterir. İşaret biti 0 ise sayı pozitiftir. Örneğin 1111 ... sayısını onluk düzene çevirelim. Yukarıdaki adımları takip edelim. Sayının her bitini ters çevirelim, elde edeceğimiz sayı 000 0000 0000 0000, Toplam 15 basamak aldığımıza dikkat edin.

2. Bu sayıya 1 eklenince elimizde 000 0000 0000 0001 sayısı olur. 3. Böylece 1111 1111 1111 1111 sayısının ikinin tamlayanı gösterimde onluk olarak “eksi bir” sayısına denk geldiğini görürüz. Sonuç olarak NOT 0'ın da nasıl ettiğini görüyoruz. 0000 sayısının onluk düzende kaç olduğunu hesaplamaya çalışın. En soldaki 1 sayısı onluk olarak bu sayının negatif olduğunu gösterecektir. Daha sonra anlatılan adımlar izlenerek -16 sayısı bulunur (16 sayısının bitlerini ters çevirip sonuca 1 eklemek 16 sayısını verir). Eğer sisteme PRINT NOT -16 komutunu verirseniz cevap olarak 15 sayısını alırsınız.

Ama Ne Bit açıklaması bize WAIT komutu için iyi bir ortam hazırladı. WAIT komutu genellikle normal programcılıkta sanılır ama bu doğru değildir. Her neyse, ilk önce bu komutun ne yaptığına bir bakalım. WAIT'in formatı şöyledir: WAIT HAF,A,X. Bilgisayar bellekte HAF (hafıza) adresindeki değeri A ve X değerleriyle karşılaştırır. Şimdi ise basit bir örnekle başlayalım. WAIT 211,1 yazın. C-128'de SHIFT tuşları ayrı ayrı bitlerde saklanırlar (C-64'teki hafıza adresi ise 653'tür. Yani yazacağınız şey 653,1'dir). Aşağıdaki program siz SHIFT tuşlarına basana kadar bekleyecektir.

05 HAF-211:1F FRE(0) THEN HAF-653 10 WAİT HAF,I 20 PRİNT “Şimdi 20,

5. satır hangi bilgisayar kullanılıyorsa ona göre hafıza adresini ayarlar (FRE komutundan hatırlıyorsanız. FRE(0) ile FRE(1) arasında bir fark vardı. Oysa C-64'te bu bir şey değiştirmiyordu. İşte 5. satırda FRE(0) ile FRE(1) ayrı değere sahipse hafıza adresi C-64'e göre ayarlanıyor. FRE(0) ile FRE(1)'in değeri farklıysa HAF değişkeninin değeri de değişmiyor). Şimdi size bazı tuşların onluk ve ikilik düzenlerdeki değerlerini veriyoruz.

Onluk — İkilik düzen — Her iki SHIFT tuşu 1 00001 COMMODORE tuşu 2 00010 CONTROL tuşu 4 00100 ALT tuşu 8 01000 CAPS LOCK 16 10000

Son iki tuş sadece C-128'de vardır. HAF adresinde 00000 değeri varsa bu tuşlardan hiçbirine basılmamıştır demektir. Eğer değer olursa tuşların hepsine birden basılıyor demektir. WAIT komutu AND ile kullanıldığında hangi HAF bitlerinin işlemi bilgilendirdiğini belirtir. Eğer SHIFT ve CONTROL tuşlarına basılıp basılmadığını kontrol etmek istiyorsanız WAIT HAF,5 yazmanız gerekir. Onluk düzendeki 5 sayısı ikilik düzende 1 ve 4. bitleri kapsar. Yani onluk düzende 1 ve 4. Bunlara 2, 4 veya 5. bitler dahil değildirler. Sadece SHIFT ve COMMODORE tuşları algılanır. İkisinden birine veya ikisine birden basılırsa program akışına devam eder. WAIT HAF,A,X komutu, diğerlerinden biraz daha karışıktır. Mesela WAIT HAF,5,1 yazdığınızda bilgisayar SHIFT tuşu bırakılıncaya veya CONTROL tuşuna basılıncaya kadar bekleyecektir. Şimdi 10. satırı şekildeki gibi değiştirin:

TO MEM,5,1

Şimdi RUN yazın ve hemen SHIFT tuşuna basın. Program siz SHIFT tuşunu bırakana veya CONTROL tuşuna basana kadar bekleyecektir. (FOR-NEXT döngüsü siz SHIFT'e basana kadar geçecek olan zaman için konmuştur). Programınız başka tuşların basılmasını da bekleyebilir, Daha önce verdiğimiz tabloya bakarak 10. satırı değiştirin. Sprite veya grafik için olan bazı özel komutları listeye katmadım çünkü bazıları gerçekten de çok seyrek olarak kullanılıyorlar. Eğer size hâlâ garip gelen bazı komutlar varsa bana bunlardan bahsetmeyin. Onları kendi hallerine bırakın...

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