Mutant
çersiniz iki hamburger ekmeğinin arasına iyi uyuyacak bir duruma gelirsiniz (Nihohoho). Buraları atlayarak geçin. En sonunda karşınıza bir bilgisayar çıkıyor ve Fransızca bağlantı kurup kuramayacağınız soruluyor. Bu soruda Oui cevabını verin. Z-41 kontrolleri tersine çevirir. Z-35 ile Cyborg'unuzu hıçkırık tutar. Fakat Z-21 ile Tank'ınıza radar yeteneği verilir. Böylece sol alt çapraz-ateş ile Tank'ınız nöbetçi robotun binanın hangi katında gezindiğini bildirir. Z-64 ile ekran ışıkların rengi değişir. İlerlemeye devam edin ve asansöre binin. Tam ortasına gelin. Asansörle istediğiniz kata çıkabilirsiniz. Her katta bir bilgisayar ve onu koruyan robotlar vardır. Örneğin tepenizde uçan yuvarlak bir robot size ateş açıyor ve Tank ile bunu yok edebilmenize rağmen bu iş çok zor. Bilgisayarlardan çeşitli şifreler, bina hakkında bilgiler ve kafasına göre takılan, bumerang atan en güçlü robot hakkında bilgiler alıyorsunuz. Eğer bu robota rastlarsanız tüm kapıları kilitliyor ve size bumerang ziyafeti veriyor. Bu sırada de dönen bir testere olan garip bir robot karşınıza çıkabilir. Bunu Cyborg'la yok edebilirsiniz. En üst katta enerji aracı var. Enerji aldıktan sonra sağa ilerleyin. Karşınıza bir boşluk ve havada duran küçük bir araç çıkacak. Bu aracın üstüne atlayın. Ateş ile gaz verirsiniz. Biraz fazla veya az gaz verirseniz üstteki veya alttaki lazerler tarafından yok edilirsiniz. Hafif hafif gaz vererek karşıya geçin. Araç sizi bıraktıktan sonra geriye dönecektir. Karşınıza çıkacak çeşitli yüksekliklerdeki sütunları halat atarak geçin. Bir müddet sonra küçük bir uçak size torpil atıyor. Tank ile bunu yok edin. Bir ekran sonra bir filo tarafından torpilleniyorsunuz. Bunları da yok edin ve halatınızı kullanarak ilerleyin. Daha sonra karşınıza havada sağa ve sola ilerleyen bir düzlem çıkacak. Bunun üstüne atlayın ve yukarı çıkın. Başlıktan Cyborg ile atlayıp robotu yok edin. İçeri girin ve bilgisayarı kullanın. Spot ile ışıkları söndürebilir, Temposo ile oyunu yavaşlatabilirsiniz. Fakat Salle-Estomac seçeneği ile nöbetçi robotu en alt katta sıkıştırabilirsiniz. Bu seçeneği seçin ve sağdaki aletin altına girip ateşe basın. Asansöre ışınlanacaksınız. En alt kata inin ve soldan odaya girin. Burada bir düğme var ve bunu nöbetçi robot koruyor. Nöbetçi robotu yok edebilirsiniz bu düğmeyi kullanabilirsiniz. Bundan sonra da bilgisayarlardan alacağınız bilgileri de kullanarak oyunu bitirebilirsiniz. Metal Mutant şimdiye kadar gördüğüm en güzel oyunlardan biri. Bu kadar şey tek diskete nasıl sığmış anlayamadım. Özellikle arka planın devamlı hareketli olması oyuna başka bir hava veriyor. Bu oyunu acilen temin edin ve hayatınız boyunca silmeyin. Böyle bir oyunun en azından kenarda köşede durması her zaman için iyi olur.
ÇAĞRI DÖRTER
Herkese selam, geçen iki ayda köşemizi kaplayan Masterseka 1.70'in açıklaması sonunda bitti. Sonunda Assembler komutlarının açıklamasına devam edebileceğiz. Nerde kalmıştık... Şu anda elimde iki ay öncesinin dergisi var içinden Seka Assembler köşesini aramaktayım. Ohhh! sonunda buldum. Matematiksel komutları bitirmiştik. Değer karşılaştırma komutlarından da TST komutunu görmüştük. Bu ayki konumuz CMP komutu. CMP komutu SEKA Assembler'da tüm değer karşılaştırma işlemlerini, karşılaştırmaların sonuçlarında ne yapılacağını, programın hangi label'ına atlayacağımızı, kısaca computer'leri computer yapan 'computer mantığını' öğreneceğiz. CMP komutu, iki eleman kullanan basit bir komuttur. Yaptığı iş; birinci elemanı, ikinci elemandan çıkartarak, sonuca göre bir mantık düzenlemektir. Komuta basit bir örnek verirsek; (Parça 1) adlı program parçası, birinci değeri, ikinci değerden çıkartır ve eğer bu iki değer eşitse, çıkarmanın sonucu 0 olur, eğer 68000 böyle bir durumla karşılaşırsa ZERO FLAG adındaki CCR bitini 1 yapar, BEQ komutu ise ZERO FLAG'i kontrol eder ve burada 1 değerini bulursa programı LABEL label'ına atlatır. Bu programdaki ilk komut olan CMP komutu karşılaştırmanın yapıldığı satırdır. Karşılaşma yapıldığı zaman 68000, kendi üstündeki bir pin'deki bitlerden bazılarını karşılaştırmanın sonucuna göre set eder, örneğin karşılaştırmada ikinci eleman birinci elemandan küçükse, Status / Condition code registerindeki birinci bit olan OVERFLOW biti 1 yapılacaktır. İkinci satırdaki BEQ komutu (Branch on Equality) ise mantık komutunu oluşturur. 68000 bu komutu gördüğü zaman, Özel register'daki equality bitini kontrol edecek, bu bit 1 ise LABEL label'ına dallanmayı gerçekleştirecektir. Bcc komutlarında da kullanılan Condition Code kısaltmalarını (TABLO 1) de bulabilirsiniz... CMP ve Bcc komutları kullanılarak her türlü program yapılabilir, döngüler yaratılabilir. Eğer AMIGA bilgisayarının mantık komutlarının kullanımını iyi bir biçimde öğrenebilirseniz, en zor programcılık problemlerini çözebilir, yirmi satırda yapılabilecek bir işi, değişik teknikler kullanarak on satıra, hatta ve hatta beş satıra bile sığdırabilirsiniz, bu sayede programlarınız hızlanacak, ve siz de iyi bir makine dili programcısı olma yolunda ilerlemeye devam edeceksiniz. Tablo 1'de gördüğümüz V,C,Z,N harfleri tahmin ettiğiniz gibi, bilgisayarımızın mantık birimini oluşturan Condition Code register'inin ilgili bitlerini temsil ederler. Equation ya da Türkçe adıyla eşitliklerin, yani mantıksal eşitliklerin nasıl ele alındığına göz atalım; Bunun için BLE (Branch if Less than or Equal) LABEL komutunun denklemi olan Z + N*V + N*V eşitliğini inceleyelim. Bu komut verildiği zaman 68000, CCR (Condition Code Register)'den eşitliğe ait bitlerin değerlerini okuyarak eşitlikte yerlerine koyar, eğer sonuç 1 yani true yani doğru ise BLE LABEL komutu amacına ulaşmış program LABEL label'ına atlatılmıştır. Eğer sonuç 0 yani false yani yanlış ise program, BLE komutundan bir sonraki komuta atlayarak, akış devam ettirilir. Bu gibi hesaplamalar, diğer Bcc komutlarında da geçerlidir. DBcc KOMUTU: (Test, Decrement and Branch) komutu, Bcc komutuyla aynı yapıda olup, Condition Code mantık ve kontrol işlemleriyle çalışır ve döngü yaratmak için kullanılır. Sayıları kendi Test edebildiği için yardımcı komut olarak CMP komutunu kullanmaya gerek yoktur. Eğer döngüye DBcc komutuyla girilirse, DBcc komutunda verilen döngü sayısı, döngü rutininin çalışma sayısına eşittir. Eğer döngüye en başından yani rutinden girilirse, rutinin dönme sayısı eşittir DBcc'de verilen sayı artı bir'dir. Bu komutla ilgili örnekleri (TABLO 2)'de bulabilirsiniz. DİĞER DALLANMA KOMUTLARI: BRA komutu: BRA (BRanch Always) komutu programın, komut görüldüğü anda belirtilen Label'a atlaması sağlanır. Bu komutun mantık birimleriyle bir ilgisi yoktur. Sadece komut görüldüğü her zaman aynı label'a atlar. JMP komutu: Bu komut (JUMP) kelimesinin kısaltılmışı olup, BRA komutuyla aynı işi yapar. Fakat BRA komutu relative JMP komutu relative değildir. BSR komutu: BSR (Branch to SubRoutine) komutu da relative bir dallanma komutudur. Fakat BRA komutundan farklı olarak, atlanılan program parçasının herhangi bir yerindeyken RTS komutu verilerek BSR LABEL komutundan sonraki komuta geri dönülerek akış devam ettirilir. JSR komutu: JSR (Jump to SubRoutine) komutu da BSR komutuyla aynı görevi görür, fakat JSR komutu relative değildir ve bu komutla hafızanın istediğimiz bölümüne (8 megabyte'la sınırlı) atlayıp RTS komutuyla geri dönebiliriz. RTR komutu: RTR (ReTurn and Restore CCR) bu komutta RTS'nin yaptığı işin aynısını görerek, akışı atlanılan yere geri döndürür. Fakat bu komutun farkı geri atlanırken, stack'deki değerlerin CCR register'ine kopyalanmasını sağlamaktır. Böylece bu sayıda, dallanma komutlarını öğrenmiş olduk. Unutmayın, iyi bir Assembler programcısı olmanın yolu bu komutlardan geçer. Bir dahaki sayıya kadar herkese iyi kafa yemeler. Bu arada ASSEMBLER sorunlarınız için şu adrese bi mektup çakabilirsiniz. BURAK ÖZIŞIK MAŞUKLAR YOKUŞU 2/2 BEŞİKTAŞ/İST