Bu sayfadaki yazılar
Sayfanın metni
Sayfa 46
Bayt Etkilediği Komut: | Adresleme: Sayısı | Hex Dec | Süre: | Bayraklar LDA Sıfırıncı Sayfa 2 A5 165 3 NZ LDX Sıfırıncı Sayfa 2 AB 166 3 NZ LDY Sıfırıncı Sayfa 2 A4 164 3 NZ STA Sıfırıncı Sayfa 2 85 133 3 - STX Sıfırıncı Sayfa 2 86 134 3 - STY Sıfırıncı Sayfa 2 84 132 3 - INC | Sıfırıncı Sayfa 2 DE 222 5 | NZ DEC Sıfırıncı Sayfa 2 C6 198 5 NZ ADC Sıfırıncı Sayfa 2 65 101 3 SBC Sıfırıncı Sayfa 2 E5 229 3 CMP | Dolaysız 201 2 NZC Mutlak 3 CD 205 4 N.Z.C Sıfırıncı Sayfa 2 C5 197 3 N.Z.C CPX Dolaysız 2 E0 224 2 N.Z.C Mutlak 3 EC 236 4 Sıfırıncı Sayfa 2 E4 228 3 CPY Dolaysız 2 C0 192 2 NZ.C Mutlak 3 CC 204 4 Sıfırıncı Sayfa 2 C4 196 3 NZ.C, Resim 1:
şeyler not etmektedir. Böylece Assembler programcıları için sıfırıncı sayfayı kullanmak oldukça zor bir hal almıştır ve bazı sıfırıncı sayfa değerlerinin değiştirilmesi felaketlere yol açabilir. Bu nedenle kendiniz C-64'ün bellek haritasını inceleyip hangi adresleri kullanacağınıza karar vermelisiniz. Her Assembler programcısının kendine özgü sıfırıncı sayfa adresleme yöntemleri vardır. Yalnız $02 ve $FB-$FE baytlarında her an gönül rahatlığı ile adresleme yapabilirsiniz. Eğer programcılık bilginize güveniyorsanız Basic yorumlayıcıyı ve C-64'ün işletim sistemini tamamıyla devre dışı bırakma olanağına her zaman sahipsiniz. Böylelikle Sıfırıncı sayfanın tümünü rahatlıkla kullanabilirsiniz, yalnız bu durumda gerekli olacak tüm rutinleri kendi başınıza oluşturmak zorunda kalacağınızı kesinlikle unutmayın. Sonuçta kernal rutinleri kullanılarak yapılabilen en basit işlem bile içinden çıkılamayacak bir hal alacağı için bu yöntem çoğu zaman ihmal edilir. Kursumuzun bundan sonraki bölümünde sık sık sıfırıncı sayfa adresleme yöntemini kullanacağız ve bu sayfayı kullanan kernal ve Basic yorumlayıcı rutinlerini inceleyeceğiz. Sıfırıncı Sayfa'yı kullanan rutinlere en güzel örnek CHRGET rutinidir. Bu program sadece Sıfırıncı sayfayı kullanmaz, tamamıyla burada yeralır. Bu çok gerekli rutinin kullanılışına geçmeden önce karşılaştırma komutlarını ele almalıyız.
Kı Komutları:
X, CPY
Karşılaştırma kelimesinin İngilizce karşılığı “to compare”'dir ve bu kelimeden makine dilindeki CMP, CPY ve CPX komutları türetilmiştir. Burada karşılaştırılacak eleman akümülatör olduğu zaman CMP, X-Register'i olduğu zaman CPX ve de Y-Register'i olduğu zaman CPY kullanılır. Birkaç örnekle konuya daha açıklık kazandırabiliriz:
CMP $FF
Satırı akümülatörün değerini $FF sayısı ile karşılaştırır. Burada dolaysız adresleme kullanılmıştır ve komut bu haliyle 2 bayt'lıktır. Aynı adresleme CPX ve CPY komutları için de kullanılabilir.
CPX $3000
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 47
satırı ise X-Registeri'ni $3000 adresinin içeriği ile karşılaştırmaktadır. Burada kullanılan mutlak adresleme diğer karşılaştırma komutları içinde geçerlidir ve bu şekilde 3 bayt kaplarlar,
CPY $A8
satırı ise Y-Registeri'ni bir sıfırıncı sayfa adresi olan $A8'in değeri ile karşılaştırır ve 2 baytlıktır. CPX ve CPY için olan tüm adresleme çeşitleri yukarıda sayılanlardır. CMP için mevcut diğer yöntemlere ise daha sonra değineceğiz, fakat şimdi gelelim karşılaştırma sonuçlarını nereden öğreneceğimize. Sonuçların tekrar akümülatöre veya registerlerden herhangi birisine yazılması mantıksız olacağı için bu iş için yine statü registerindeki üç tanıdık bayrak (flag) kullanılır: N-Bayrağı (Negatif Flag), Z-Bayrağı (Zero Flag) ve Carry Bit. Sonuçların gösterimi şu şekilde olur: 1) Register değeri (X, Y veya akümülatör) karşılaştırılan değerden büyükse Carry Bit = 1, N- ve Z-Bayrağı = 0 olur. 2) Register değeri karşılaştırılan değere eşitse Carry ve Z-Bayrağı = 1, N-Bayrağı = 0 olur. 3) Register değeri karşılaştırılan değerden küçükse N-Bayrağı = 1, Z-Bayrağı ve Carry = 0 olur. Yukarıda anlatılanlar bir şema halinde Resim 2'de gösterilmiştir. Compare komutlarının en yaygın kullanım alanı dallanma operasyonlarıdır ve genellikle kernaldaki CHRGET rutiniyle bir bütün halinde kullanılırlar.
CHRGET kısaltması “get a character” veya “bir işaret al” anlamına gelmektedir. Tamamıyla Sıfırıncı Sayfada yer alan bu rutin makine dilinde oldukça sık kullanılır. Şimdi Ex-Mon'da aşağıdaki satırı yazın.
D 0073 008B
Böylelikle CHRGET rutinin tamamını ekranda görebilirsiniz:
0073 0075
E6 TA DO 02 0077. E6 7B 0079. AD 2502 C9 3A 007E BO OCA
INC $7A BNE $0079 INC $7A LDA $0225 CMP # $3A BCS
Akümülatör Akümülatör Akümülatör BAYRAK X Veriler X X Veriler Y Y N 0 veya 1 0 1 veya 0 Z 0 1 0 C 1 1 0 Resim 2: 0080 C9 20 CMP #$20 0082 F0 EF BEQ $0073 0084 38 SEC 0085 E9 30 SBC #$30 0087 38 SEC 0088 E9 D0 008A 60 RTS
Yukarıdaki dökümde 0079 no'lu satır sizde daha farklı olacaktır. Bu farklılık $7A ve $7B adreslerinden ileri gelmektedir. Bu baytlar bir gösterge gibi kullanılmaktadırlar (Alçak Bayt = $7A ve $7B = Yüksek Bayt) ve büyük bir ihtimalle bu değer sizde $0225'den farklıdır. Yukarıdaki CHRGET rutinini gelecek ay detaylı olarak ele alacağız. Şimdilik hoşçakalın!
TİCARET Time To Die, C-64'ün en son ve en iyi adventure'larından biri. Sadece grafiği ile insanı çok etkiliyor. Ayrıca oyunda Amiga'ya benzer özellikler kullanılmış. Nefes kesen bir macera yaşamayı isterseniz, size Time To Die'ı öneririm. Borrowed Time'a çok benzemesi, bazı yerlerde Borrowed Time 2 adıyla da geçmesi mümkün. Mastertronic'in yaptığı bu oyun ne yazık ki sadece disket kullanıcıları için. Oyuna daha başlamadan, bir adam gelip ofisinizin kapısını kırarak içeri dalıyor. Burda '1' tuşuna basarsanız oyuna başlayabilirsiniz. '2' tuşuna basarsanız, size bir adventure'ın nasıl oynanacağını öğretiyor. Bu da oyunun en güzel yanlarından biri. Burada çok önemli komutların yanısıra sizi adventure'lar hakkında en iyi şekilde aydınlatmak için, küçük bir adventure'ı açıklıyor. Burada da grafik kullanmaktan kaçınmıyor. Kısacası her adventure meraklısına bu bölümü okumanızı tavsiye ederim. Buradan çıkabilmek için '0' tuşuna basmanız yeterli. Oyun ofisinizde başlıyor. Siz bir özel dedektifi canlandırıyorsunuz. Adınız da Sam. Fakat her zaman olduğu gibi bu sefer siz avlamıyorsunuz. Çünkü av sizsiniz. Peşinizde birkaç kiralık katil dolaşıyor. Amacınız ise bu katillerden kurtularak, patronlarını ortaya çıkartmaktır. Ekranın sol üstteki büyük pencere, oyunun grafik bölümü için ayrılmış. Onun üstünde 'LOAD GAME' ve 'SAVE GAME' komutları bulunmaktadır. Oyunun en güzel yanlarından bir tanesi de, Amiga'da kullanılan okun bu oyunda da kullanılması. Tabii ancak joystick'iniz Port 2'deyse. Amiga'da olduğu gibi, bu seçeneklerin üstüne geldiğiniz zaman düğmeye basarsanız onu seçmiş oluyorsunuz. Şimdi joystick'inizi aşağı-yukarı hareket ettirerek istediğiniz seçeneği seçebilirsiniz. Grafik ekranın altındaki bölüm, yazılarınızın yazıldığı ve olayların anlatıldığı yerdir. Kısacası, oyunu orada oynamaktasınız. Oyunun sağ bölümü bazı önemli komutlar ve eşyaların bulunduğu kısımdır. Taşıdığınız eşyaları ekranın sağ üst kısmında görebilirsiniz. Onun altında yönleri görebilirsiniz. Onun altında da komutlarla, eşyalar bulunmaktadır. Oyunu ister joystick'le isterseniz yön tuşlarıyla oynayabilirsiniz. Fakat ben size tuşlarla oynamayı tavsiye ederim. Çünkü ekranın sağında, joystick'le kullanacağınız komutların sayısı sınırlı. Orada yazılı olmayan daha bir sürü komut bulunmaktadır. Oyunu en kolay şekilde oynayabil-