STOCK MARKET

Amiga'da gördüğüm en iyi araba yarışları oyunları ile yarışabilecek durumda. Renkler, scrolling ve üç boyut oldukça iyi düşünülmüş. Oldukça zor olan bu oyunu bitirmenin size diğer oyunlardan farklı bir zevk vereceğinden eminim. Batman hayranları, filminden sonra oyununda da heyecan fırtınasını estirmek istiyorsanız bu oyunu kaçırmayın.

Oyunun Değerlendirmesi AMIGA-512K

GRAFİK : 9 SES : 8 ZORLUK : 7 KURGU : 7 GENEL : 8 başından kalkmadan 8 saat bu oyunu oynadığı görülmüştür. Son rekorunun 862.000.000 $'a ulaştığını duyduk. Bu benim şimdiye kadar gördüğüm en yüksek skor. Oyunu bir kere oynadıktan sonra neden bu skoru ısrarla yazdığımı anlayacaksınız. Önce kaç kişi oynayacağınıza karar vermelisiniz. Birkaç arkadaşınızı daha bu oyunu oynamak için kandırdıktan sonra sırayla isimlerinizi yazıp borsanın kapısına dayanabilirsiniz. Artık yapacağınız şey dikkatli davranarak hisse senetleri almak. Yalnız şunu hemen belirtmeliyim, bilgisayar her turda oyuncuları rasgele sıralıyor. Örneğin birinci turda borsada ilk siz işlem yaparken, ikinci turda birkaç arkadaşınızdan sonra işlem yapma sırası size gelebilir. Şimdi tekrar oyunumuza dönelim. Hisse senedi listelerinin altında Buy, Sell, Loan, Graphics gibi çeşitli seçenekler göreceksiniz. Bu seçenekleri kullanabilmek için sadece ilk harflerine basmanız yeterli.

Bunlar oyunda size yardımcı olacaklar. Buy satın almadır. Fakat bunun yerine almak istediğiniz hisse senedinin üstüne gelerek mouse'unuzun sağ tuşuna basabilirsiniz. Sell hisse senedi satımıdır. Bunun yerine de satacağınız hisse senedinin üzerine gelerek mouse'unuzun sol tuşuna basabilirsiniz. Unutmadan, bir kere herhangi bir hisseyi satın aldıktan sonra bir daha satış yapamazsınız. Bütün satışlarınızı herhangi bir şey satın almadan önce yapmalısınız. Graphics sizin oynadığınız tura kadar şirketlerin kâr-zarar grafiklerini verir. Assignment o turda sizin elinizdeki hisse senetlerinin değerini, bankaya olan borcunuzu, elinizdeki nakit miktarını ve borcunuz düşüldükten sonraki net kârınızı gösterir. Gelelim Loan'a yani bankaya. Bu belki de oyundaki en önemli seçenektir. Çünkü başlangıçta elinizde sadece 58.000 $ var. Bankaya gittiğinizde karşınıza seçenekler çıkacaktır. Bunlar Borrow (borç alma) ve Payment (borç ödeme). B tuşuna basarak Borrow'a girerek para miktarını soracaktır. İlk turdaki kredi miktarınız 5.000.000 $. Burada minik bir hatırlatma yapacağım. Eğer herhangi bir işlem sırasında bir şeyin hepsini almak veya satmak istiyorsanız, sadece 1 yazıp return'e basın. Şimdi tekrar bankaya dönelim. Yukarı kenarda faiz oranları bulunmaktadır. Bu faizlere bakarak piyasa durumunu kontrol edebilirsiniz. Return'le geri dönün ve paranızı yatırın. Herkes para yatırdıktan sonra market kapanacak ve hisse senetleri işlemeye başlayacaktır. Ekran değiştiğinde Bear Market veya Bull Market diye iki başlıkla karşılaşacaksınız. Bear Market piyasadaki küçük oynamaları, Bull Market ise büyük çalkantıları gösterir. Ekrandaki o anki borsayı en çok etkileyen olay haber olarak geçer ve şirket durumları sıralanır. Burada sıralanan şirket haberleri sizi ne korkutsun, ne de sevindirsin. Çünkü büyük bir ihtimalle gerçek çıkmayacaktırlar. Daha sonra sıra şirketlerin dağıttığı kâr paylarına gelir. Bunlar nakit olarak elimize geçer ama gerçekte olduğu gibi bunlar da şirketlerin zararları veya fazla gelişememeleri karşısında halkı yatıştırmak için kullanılan haberlerdir. Bazı durumlarda şirketler hisselerinize karşılık belirli sayıda hisse vererek hisse arttırırlar (rüçhan hakkı-split) ve şirketi geliştirirler. Oynama hakkınızı kullandıktan sonra E tuşuna basarak sırayı arkadaşınıza devredin. Bu arada Bankrupt (iflas) durumu da var tabii. Bazen de karşımıza All Stocks are

Down veya All Stocks are Up gibi bir yazı gelebilir. Genellikle en yüksek skorlar bunlara rastladığımız turlarda olur. All Stocks are Up olduğunda bütün hisseler yükselecektir. Bununla karşılaştıktan sonraki üç tur boyunca All Stocks are Down'ı bekleyebilirsiniz. Oyun esnasında yararlanabileceğiniz ipuçlarına gelince: Oyun başlayınca yapacağınız ilk hareket bankaya gidip paranın tamamını almak olacaktır. Daha sonra bu parayla alabileceğiniz kadar çok hisse alın. Ucuz hisselere yönelmeniz kısmen riskli olsa da daha çok kazanç sağlayacaktır. Turlar ilerleyip paranız çoğaldığında artık alım satımlarınız şirketleri sarsar duruma gelecek. Elde ettiğiniz şirketleri önce satarak fiyatını düşürüp daha sonra ucuza hepsini almak belki kârlı bir yol gibi görünebilir ama bu işlem şirketleri bir dahaki tur için oldukça kötü etkileyerek istikrarsızlığa itecektir. İflas edip yeniden açılan şirketleri almaya çalışın, çünkü o şirketler hem fiyatça ucuz, hem de gelişmeye açıktırlar. Uzun lafın kısası arşivlenmeye değer bir oyun Stock Market. Heyecanlı ve bol iniş çıkışlı saatler sizi bekliyor. Deneyin memnun kalacaksınız veya İF-

Tuncay Topyıldız ene 12 NİSAN 1861. Güneyli konfederasyon birlikleri SUMTER kalesine ateş açtı. Böylece 1877 yılına kadar sürecek ve yaklaşık 1.500.000 kişinin ölümüne sebep olacak bir savaş başlamış oldu. SUMTER kalesine açılan ateş savaşın çıkma sebebi değildi. Asıl sebep köle kullanan tarımcı güneylilerle, buna karşı çıkan sanayileşmiş kuzeylilerin mücadelesiydi. Bu savaş 1877 yılının Nisan'ında federal (kuzey) birliklerinin LOUISIANA'dan çekilmesi ile son buldu ve böylece AMERİKAN tarihi de en korkunç iç savaşını büyük kayıplar vererek yaşamış oldu. Yukarıda okuduğunuz bu iç savaşı evinizde, büronuzda, bilgisayarınızın başında ve oturduğunuz yerden oynamak ve biraz da gülmek isterserseniz oyunumuzu kaçırmayın. Esprileri ve hafife alınmış haliyle bu kanlı savaş adeta domates salçalı bir savaşa dönüşmüş. Oyunumuz yüklendiğinde karşımıza 5 bayrak çıkıyor. Bu bayraklarla hangi dilde oyunu oynamak istediğimiz soruluyor, istediğimiz bayrağı seçtikten sonra program yüklemeye başlıyor ve karşımıza yeni bir ekran çıkıyor. Oyuna başlamak için bu ekranda yapacağımız işler aşağıda açıklanmıştır. Üstünde kızılderili resmi olan karede oyunda kızılderililerin olup olmaması soruluyor, eğer kabul edersek kızılderililer kuzey-güney ayrımı yapmadan topraklarına yaklaşanı öldürüyor. Bu oyuna eklenmiş bir zorluktur, oyunu çok iyi oynayanlar bu seçeneği oyuna ekleyebilirler. Üstünde şimşek resmi olan kare de oyunumuz için düşünülmüş bir zorluktur. Bu seçeneği seçtiğimiz zaman oyuna hava durumunu da eklemiş oluyoruz ve sahasında bulutlar dolar. Bu bulutların altına giren ordular ise hareket edemiyorlar. Üstünde askerlerin resmi

LAS EDECEKSİNİZ...???1!! Oyunun Değerlendirmesi AMIGA-512K SES: 8 ZORLUK: 7 KURGU: 8 GENEL: 7 olan kare oyun içindeki ordulara rasgele yardım yapmaktadır. Bu seçeneği seçtiğimiz zaman hiç beklemediğimiz bir anda bize ya da rakibimize deniz yolu ile bir tabur asker gelebilir ama haritanın sağında bulunan toprakları ele geçirmemiz lazım. Eğer bu topraklar düşman elinde ise o zaman asker yardımı düşmana yapılır ve karşımızdaki ordu biraz daha güçlenir. Üstünde oyun oynayan asker resmi olan karede bize arcade ya da düşünce oyunu mu diye soruluyor, kareyi bir kere klik edersek, oyun oynayan asker yerini satranç tahtasına bırakıyor ve oyun zeka oyununa dönüşüyor. Son kalan kare ise oyun iki kişi oynandığı zaman açılıyor. Burada hangi tarafın klavyeyi hangi tarafın Joystick'i seçeceği belirleniyor. Ekranda sağda ve solda bulunmak üzere iki büyük kare bulunuyor. Bunların içindeki askerlere bastığımız zaman askerlerin rütbesi büyüyor. Bu da seçtiğimiz tarafın askerlerinin gücünü gösteriyor. Arka plandaki bayrağa bastığımız zaman ise bayrak yerini bilgisayara bırakıyor, bu o tarafın bilgisayar tarafından oynanması demektir. Oyunu iki kişi oynayacağımız zaman her iki karenin de arka planında bayrak olması gerekir. Bütün bu işlemler bittikten sonra hatıra fotoğrafı çektirip oyuna başlıyoruz. Oyuna başlamak için fotoğrafçının sol altında bulunan çantaya mouse'la basmamız yeter ama sakın fotoğrafçıya mouse'la dokunmayın, çünkü adamcağız çok huylanıyor. Ve en nihayetinde oyuna iki tabur askerle başlıyoruz. Oyun sırası kimde ise o tarafın askerlerinin altındaki toprak yanıp sönüyor, üstüne bastığımız taktirde nereye hareket edeceğini görebiliyoruz ve istediğimiz bölgeye gönderebiliyoruz. Eğer bu bölgede asker ya da bayrak yoksa hiç savaşmadan oraya sahip oluyoruz. Yok eğer orada asker varsa işte o zaman savaş başlıyor. Savaşta ordumuzu Joystick'le yönetiyor ve shift tuşu ile de yayaları mı, atlıları mı yoksa topumuzu mu hareket ettireceğimizi belirliyoruz. Oyunu iki kişi oynarken birinci oyuncu Joystick ve sol shift, ikinci oyuncu cursor ve sağ shift tuşunu kullanıyor. Gittiğimiz bölgede sadece bayrak varsa orada düşman kalesi var demektir ve orayı ele geçirmek için güçlü bir adamımız zamana ve düşmana karşı kalenin sonuna gitmeye çalışıyor ve bu cesur delikanlıyı biz yönetiyoruz. Eğer başarabilirsek kalenin sonundaki düşman bayrağını indirip kendi bayrağımızı çekiyoruz ama başaramazsak zavallı adamcağız sinir krizleri geçiriyor. Oyunda daha çok demiryolu kenarlarını ele geçirmemiz lazım, çünkü ele geçirdiğimiz topraklar üzerinden geçen her tren bize 2, 3 ya da 4 torba altın veriyor. Bu altınların fazlalığı demiryolunun uzunluğuna göre değişiyor ve 6 torba altın topladığımız zaman bir tabur asker kazanıyoruz. Demiryolunun tamamını ele geçiremediğimiz zaman altınları alamıyoruz ama treni soyabiliyoruz. Bunun için demiryolunun etrafındaki bir parça toprağı ele geçirmek kafidir. Treni soymak için aynı kalede olduğu gibi zamana karşı koşarak treni durdurmaya çalışıyoruz, tabii ki karşımıza düşman askerleri çıkıyor. Amacımız en kısa sürede trenin en son vagonuna gidip oradaki makinisti temizlemektir. Böylece düşman eline geçecek olan altın bizim kasamıza intikal ediyor. Savaş durumunda kullanılan taktikler: Düşman birliklerinden birine savaş açtığımız zaman güzel espriler ve grafiklerle kendimizi bir anda savaş alanında buluyoruz. Savaşta üç birliğe komuta ediyoruz. Bunlar:

4- TOP: Joystick yardımı ile top'u yukarı aşağı hareket ettirebiliyoruz. Ateş tuşundan da mesafeyi ayarlıyoruz. Tuşa bastığımız anda yukarda mesafeyi gösteren bir çizgi çıkıyor. Mesafeyi ayarladıktan sonra tuşu bırakıyoruz ve BO-OOOOM karşı taraf dağılıyor tabii ki mesafeyi tutturabilirsek. Top uzak mesafe savaşları için

2- ATLI ASKERLER: Bu süvari birliğini joystick yardımı ile sağa, sola, yukarı ve aşağı hareket ettirebiliyoruz. Joystick'i yukarı sol çapraza çektiğimiz zaman atlılar tek sıra halinde geçiyor, normale dönmesi için ateşe basmak yeterlidir. Ateşe basıldığı taktirde atlılar kılıçlarını çekiyorlar ve önlerine geleni kılıçtan geçiriyorlar. Atlılar düşman hatlarını geçtikleri zaman ekrandan kaybolurlar, ama merak etmeyin. Çünkü bir iki saniye sonra ilk hallerini tekrar alırlar ve komutunuzu beklerler. Onları fazla bekletmeyin çünkü çok sabırsızlar. Atlılar yakın mesafeler için ideal birliktir. 2- YAYA ASKERLER: Askerleri yönetmek atlı süvarilerden farklı değildir. Joystick yardımı ile süvarileri yönettiğimiz gibi askerleri de yönetebiliyoruz. Askerler de düşman hatlarının arkasında kayboluyor ve tekrar ilk hallerini alıyorlar. Ateş tuşuna bastığımız zaman askerler diz çöküyorlar ve ateş ediyorlar, menzilleri biraz kısa olduğundan askerlerle yakın mesafeden ateş etmek gerekir. Askerler yakın olan mesafeler için ideal birliktir. Savaş başladı ve durumunuz kötüye gidiyor. İşte o zaman kalan askerleri kurtarmak için geri çekilmeniz gerekiyor. Bunun için ESC tuşuna basmanız lazım. Eğer iki kişi oynuyorsanız ve ikinci oyuncu geri çekilecekse o zaman DELETE tuşuna basılmalıdır. Aşağıda savaş taktikleri verilmiştir. 1: Eğer fazla askeriniz varsa iki tanesini birleştirin. Böylece iki topunuz, iki süvari birliğiniz ve iki tabur askeriniz olacaktır. Daha fazlasını birleştirme imkânınız varsa, ordunuz o denli güçlenecektir.

WELL DONE, CAPTATNİ PİTT EN END TME BY

2: Eğer rakibinizin ordusu çok kuvvetli ise ve savaş alanında köprü varsa ilk yapacağınız iş köprüyü yıkmak ve böylece düşman tarafından gelecek olan süvarileri ve askerleri durdurmak, aynı zamanda uzaktan topla düşmanın işini bitirmektir.

3: Kaleyi ele geçirirken mümkün olduğunca duvarların üstünden gitmeye çalışın, çünkü alt tarafta köpekler, askerler, bombalar ve yolu tıkayan arabalar bulunmaktadır. Bu bölümde ayrıca dört adet bıçağınız da var, böylece size saldıran askerleri öldürebilirsiniz. Eğer bıçak kullanmazsanız aynı işi yumruklarınızla halletmek zorundasınız, bu da zaman kaybı olur.

4: Olanağı varsa Amerika'nın doğu yakasını yani size göre sağ tarafını ele geçirin.

5: Eğer başlangıçta kızılderili menüsünü açtıysanız haritanın soluna yaklaşmayın, çünkü kızılderililer savaşmamıza fırsat vermeden bir tabur askerimizi ortadan kaldırıyor. Oyunumuz oldukça kaliteli animasyonlara, grafiklere ve efektlere sahip. Bunun yanısıra Amiga'da gördüğüm en güzel espriler de oyuna ayrı bir zevk katıyor. Gülmek, gülerken düşünmek ve zaferin, galibiyetin tadına varmak isteyenlere severek tavsiye edebileceğim bir oyun NORTH & SOUTH yani KUZEY VE GÜNEY...

NOT: Oyunumuzun Türkiye'de 3 ayrı versiyonu bulunmaktadır. 1. ve 2. versiyonu tam çalışmayabilir. Yukarıda anlatmaya çalıştığımız üçüncü ve tam çalışan versiyondur. Oyunumuzun tam çalışan versiyon olduğunu anlamak için oyunun başında hangi dilde oynamak istediğimizi belirtirken üst tarafta yazıların geçtiğini görmek yeterlidir. Diğer iki versiyonun hataları ise programın çalışma esnasında resetlenebilmesi ve bilgisayara karşı oynama menüsünün olmamasıdır.

Oyunun Değerlendirmesi AMIGA-512K

GRAFİK : 9

SES :8

ZORLUK: 7 KURGU : 8 GENEL : 8

ASSEMBLER - 9

Kursumuzun şu ana kadar olan bölümünde ele aldığımız makine dilinin temelini oluşturan ikilik ve onaltılık sayı sistemlerindeki aritmetik işlemler oldukça başımızı ağrıtmıştı. Bu işlemlerle bir müddet daha uğraştıktan sonra programlarımızda C-64'ün işletim sistemindeki (kernal) rutinleri kullanıp örneğin en basitinden makine dili ile ekranın herhangi bir bölümüne istediğimizi yazabileceğiz. Fakat şimdi tekrar kaldığımız yere dönelim ve makine dilinde çıkartma işleminin nasıl yapıldığını görelim. “Subtract with Carry” (Carry ile birlikte çıkart) veya kısaca SBC komutu makine dilinde çıkartma işlemlerinde kullanılır. Aynı ADC'de olduğu gibi burada da akümülatörün değeri ele alınır ve sonuç tekrar akümülatöre kaydedilir. Fakat SBC'de farklı ve daha karışık olan tek unsur Carry'nin kullanılışıdır. Biz burada Carry'nin kullanılışına detaylı olarak değinmeyeceğiz; karşılaşacağımız sorunlarda ise SEC (Set carry) komutunu kullanacağız. SEC ile Carry'nin değeri 1 yapılmaktadır.

Önemli Not: Herhangi bir toplama işleminden önce muhakkak CLC ile Carry'yi temizleyin. Aynı şekilde yine herhangi bir çıkartma işleminden önce SEC ile Carry'nin “1” değerini almasını sağlayın.

Şimdi iki örnekte yukarıda gördüklerimizi inceleyelim. Öncelikle bir 8-Bit çıkartma: $1300'deki SAYI1'den $1400'deki SAYI2'yi çıkartalım ve sonuç $1500'e yazılsın.

1200 CLD
1201 SEC
1202 LDA $1300
1205 SBC $1400
1208 STA $1500

Yukarıda da görüldüğü gibi SBC mutlak veya dolaysız olarak (Örneğin SBC #$40) adreslenebilir. Dolaysız olarak adreslendiğinde komut iki bayt, mutlak olarak adreslendiğinde ise 3 bayt işgal etmektedir. SEC ise daha önce tanıştığımız CLC gibi tek baytlık bir komuttur. İkinci örneğimiz ise bir 16-Bit çıkartmadan oluşmakta. Programa geçmeden önce belleğin dört baytı aşağıdaki şekilde düzenlenmelidir:

1300 SAYII Alçak Bayt
1301 SAYII Yüksek Bayt
1400 SAYI2 Alçak Bayt
1401 SAYI2 Yüksek Bayt

Sonucu yine $1500 ve $1501'e yazalım.

1200 CLD
1201 SEC
1202 LDA $1300

ANIL GÜL

1205 SBC $1400
1208 STA $1500

Program bu haliyle iki sayının alçak baytlarını birbirinden çıkartmakta ve $1500'e kaydetmektedir.

120B LDA $1301
120E SBC $1401
1211 STA $1501

Bu şekilde iki sayının yüksek baytlarını da birbirinden çıkardıktan sonra görevimiz tamamlanmış oluyor. SBC komutu ADC ile aynı bayrakları (Statü registeri) etkilemektedir.

Bir program projesi:

Şimdi öğrendiklerimizle ilk geniş kapsamlı programımızı geliştirebiliriz. Bu program bize iki açıdan yararlı olacaktır: 1) Şu ana dek tanıdığımız komutları birbirleriyle kombine etme imkânına sahip olacağız. 2) Basic ve Assembler programlarını birbirine bağlamada oldukça sık kullanılan bir yöntemi göreceğiz. Özellikle bu ikinci konu birçok kişi tarafından yeteri derecede bilinmemektedir. Assembler rutinlerini Basic programların içinde kullanmanın birçok yöntemi vardır ve bu yöntemlerin hepsine sırası geldiğinde teker teker

Program: Aritmetik dizinin toplamı,

T

Ne X-Reg

İs m

Carry'nin silinmesi

16-Bit-Toplama

Toplam * son eleman

Yeni

Carry'nin silinmesi

16 Bit - Toplama

Son eleman * D farkı

Yeni son Eleman

X-Register - 1

A: Programımızın akış diyagramı.

Birçoğumuz SYS komutunu oldukça sık kullanırız. Örneğin “POKE 214,Satır No.” ve “POKE 211,Sütun No.” komutlarının ardından yazacağımız “SYS 58640” ile kursorun pozisyonunu belirleyebiliriz. Aslında burada yaptığımız iş bilgisayarın belleğinde bulunan makine dili bir programı işletmekten başka bir şey değildir. Burada 58640 programın başlangıç adresidir ve SYS'yi Basic'teki GOTO komutunun bir benzeri olarak düşünebiliriz. Dolayısıyla SYS komutunu kullanarak Assembler programları çalıştırmak pek zor değildir. Esas sorun Assembler programın kullanacağı parametrelerin kullanılmasında yatmaktadır. Bu sorunun en basit ve en yavaş çözümü değerlerin Alçak ve Yüksek Baytlar şeklinde belli adreslere POKE edilmesi ve daha sonra makine dilinde yazılmış programca okunmasıdır. Şimdi örneğimizde bu yöntemi kullanacağız.

Örnek programımızda birçoğumuzun yakından tanıdığı bir aritmetik diziyi ele alacağız. Eğer “A” ilk eleman, “D” fark ve “N” ise eleman sayısını belirtirse bu tür bir dizinin toplamı şu şekilde olur:

*D)

İlk on doğal sayının toplamı yukarıdaki diziye bir örnektir:

Szl14243444546474849-410

Burada 1 ve N=10'dur. Yukarıdaki örnekte S toplamının 55 olduğunu kolaylıkla hesaplayabiliriz, fakat eleman sayısı çoğaldığında iş oldukça yorucu bir hale gelir. Her ne kadar bu işi yapabilen bir formül (Gauss Formülü) mevcut ise de biz burada herhangi bir formül kullanmayacağız. Programımız kısaca 1'den N'e kadar olan tamsayıları toplayıp sonucu bize bildirecek. Bu sonuç 16-Bit bir sayı olduğu için 32767'den büyük olamaz. Dolayısıyla N için sadece 1 ile 255 arası değerler sözkonusudur (Neden 255 olduğunu program tamamlanınca deneyerek görebilirsiniz). N sadece 1 bayta ihtiyaç duyduğu için bunu $1300'e kaydedebiliriz. A ve D'nin değerleri 1'dir, fakat bunlar da ileride programda değişiklik yapılabilmesi için 16-Bit'lik sayılar olarak hafızaya kaydedilir. “A” değişkeni alçak ve yüksek bayt şeklinde $1310/1311'de, “D” değişkeni ise aynı şekilde $1320/1321'de saklanır. Sonuç ise $1400/1401'de yer alacaktır. Makine dili programımızın ise başlangıç adresi de $1200'dür.

Bayt | — Kod Etkilediği | A*resleme İsayısı|he — dec | bayraklar ADC dolaysız. |2 69 10512 mutlak 3 6D CLC |yok- 1 18 24 (2 O-c SBC |2 absolut 3 ED 237|4 SEC |yok 1 38 56 |2 |LC BEO |relatif 2 FO 2 Değişiklik yok BCC |İrelatif 2 90 2 Değişiklik yok 2 BO 2 Değişiklik yok BM |relatif 2 30 2 iklik yok. BPL |relatif 2 10 2 iklik yok. 2 60 2 Değişiklik yok BVS |relatif 2 70 2 Değişiklik yok *1 dallandırmak 42 sınırın artması halinde

A2: Son öğrendiğimiz 11 komut.

Öncelikle Basic çağrı programıyla biraz ilgileneceğiz. Yalnız hemen şunu belirtelim: POKE, PEEK ve SYS komutlarında kullanacağımız değerler yukarıda belirtilen adreslerin desimal karşılıklarıdır.

10 REM **** ARİTMETİK BİR DİZİNİN TOPLA-
MI ***
20 POKE 5120,0 : POKE 5121,0 : REM SONUÇ AD-
RESLERİNİN SIFIRLANMASI
30 PRİNT CHRS$(147) CHR$(17) CHRS(17)
40 INPUT “ELEMAN SAYISI N-”;N
S0 IF OR N>255 THEN PRİNT
#N< -255”: GOTO 40
60 POKE 4864,N :REM N'NİN KAYDEDİLMESİ
70 POKE 4880,1:POKE 4881,0: POKE 4896,1: PO-
KE 4897,0: REM A VE D'NİN KAYDEDİLMESİ
80 SYS 4608: REM MAKİNE DİLİ PROGRAMININ
ÇAĞRILMASI
90 M-PEEK(5121):L « PEEK(5120): REM SONU-
CUN OKUNMASI
100 E— 256*M 4 L:PRİNT CHR$(17) CHR$(17)
110 PRİNT “ ILK “N” TAMSAYININ TOPLAMI:
120 END
Şimdi artık makine dili programımıza geçebiliriz. Bu-
nun için lütfen Resim 1'deki akış diyagramına bakın.
Programımızın hazırlık safhasında eleman sayısını X
registerine yükleyeceğiz ve toplama işlemi gerçekleşece-
ği için Carry Bit'ini temizleyeceğiz. Monitör programı-
nızı yükleyip A1200 yazdığınızda başlangıç adresimiz olan
$1200 ekranda gözükecektir. Artık programı yazmaya
başlayabiliriz (Her satırdan sonra RETURN'e basmayı
unutmayın).
1200 LDX $1300
1203 CLC
Şimdi gelecek olan altı satırda ise bir sonraki eleman
© ana kadar olan toplama eklenecektir. Başlangıçta
$1400/1401 boştur ve $1310/1311'de ise başlangıç ole-
manı olan A— | yer almaktadır. Aşağıdaki döngü işle-
meye başladığında ise $1400/1401'de o ana kadar olan
toplam ve $1310/1311'de ise son eleman bulunacaktır.
1204 LDA $1400
1207 ADC $1310
120A STA $1400
Bu satırlarda alçak baytlar toplanıp $1400'e kaydedil-
miştir.
120D LDA $1401
1210 ADC $1311
1213 STA $1401
Böylelikle yüksek baytlarda toplanmış oldu. Bundan
sonra dizinin o anki son elemanını bir önceki elemanı D
ile toplayarak elde etmeliyiz. Bu işlemin Basic'deki kar-
As A4 D'dir. Yine bir 16-Bit toplama yapacağı-
mız için CLC komutunu kullanmalıyız.
1216 CLC
1217 LDA $1310
I21A ADC $1320
121D STA $1310
Bunlar alçak baytlar idi. Şimdi de yüksek baytlar:
1220 LDA $1311
1223 ADC $1321
1226 STA $1311
X- Registerini | eksilttikten sonra O olup olmadığını
kontrol ederek N tane elemanın toplanıp toplanmadığı-
nı anlayabiliriz.
1229 DEX
122A BNE $1203
Eğer tüm elemanlar toplanmamış ise döngünün başı-
na dönülecektir. Döngü N defa tekrarlandıktan sonra Ba-
sic'e dönüş şu şekilde sağlanır:
122C RTS
Yazdığımız bu makine dili programını diskete şu şe-
kilde kaydedebilirsiniz: S “Program Adı'',1200,122D,08
Genelde tüm monitör programları bu kalıbı kullanır,
fakat bazıları virgül işaretine gerek duymaz. Bu nedenle
farklı bir monitör programı kullanıyorsanız biraz dene-
me yapmanız gerekecektir. Kaset kullanıcıları ise Yuka-
**08”' yerine yazmalıdırlar. Yalnız birçok mo-
nitör programı disket ile çalışmak üzere hazırlanmıştır

ve teybi bir kayıt cihazı olarak kabul etmezler. Bu gibi durumlarda kaset kullanıcıları için başka bir monitör programını denemekten başka çare kalmamaktadır. Makine dili programı kaydettikten sonra tekrar yüklerken monitör programına ihtiyacımız olmayacak. Sadece LOAD””,8,1 (veya kaset için ,1,1) yazdıktan sonra Basic başlangıcını normale döndürmek için NEW yazıp RETURN'e basmalısınız. Böylelikle biraz önce yazdığımız Basic programı da yükleyebiliriz. Assembler programını oluştururken A ve D'yi değişken olarak tutmuştuk. Bu nedenle isterseniz Basic programın satırındaki alçak ve yüksek baytları değiştirerek farklı diziler elde edebilirsiniz (1+2+3+4+5+6... gibi). Burada dikkat etmeniz gereken tek unsur ise S toplamının 32767'nin üstünde olmamasıdır. Yalnız hemen şunu belirtelim: Şu ana kadar makine dilinin gerekli temel özelliklerini öğrendik. Bu bilgiler doğrultusunda toplamın 32767'den daha büyük değerler almasını sağlayabilirsiniz. İşte size bir ipucu: Neden yukarıda iki bayt halinde yazdığımız sayılar üç veya daha fazla bayt ile gösterilmesin? Veya yukarıda belirttiğimiz maksimum sınır değeri aşılırsa makine dilinin hangi özelliği ortaya çıkar? (Statü registerinin V-Bayrağı ile ilgili bölüme bir göz atmanızı tavsiye ederiz.)

Branch komutları:

6510 mikroişlemcisi 8 farklı dallanma komutuna sahiptir. Biz bunlardan sadece BNE'yi tanıyoruz. Bu Branch (Branch — dallanma) komutlarının tümü statü registerinin bayraklarını kontrol etmektedir. BNE ve BEQ komutları Z-Bayrağına bakmaktadırlar. Eğer Z-Bayrağında sıfır değeri varsa BNE istenen adrese dallanmaktadır. BEQ (Branch if equal Zero — eğer sıfıra eşitse dallan) ise aynı işi Z-Bayrağı sıfıra eşit ise yapmaktadır. BCC ve BCS ise statü registerindeki C-Bayrağı yani Carry Bit'i ile ilgilenmektedirler. BCC'nin karşılığı “Branch if Carry Clear”, yani “eğer Carry boş ise dallan”dır. Carry Bit'inin “1” değerini aldığı durumlarda ise BCS (Branch if Carry set) komutu devreye girmektedir ve dallanmayı sağlamaktadır. Yukarıda sıraladıklarımız makine dilindeki en anlamlı ve en çok kullanılan dallanma komutlarıdır. Şunu rahatlıkla söyleyebiliriz ki, programcılar tarafından kullanılan dallanmaların %90'ı bu şekilde sağlanmaktadır. R.Mansfield Amerika'da oldukça satılan “Machine Language for Beginners” adlı kitabında okuyucuları programlarında BPL ve BMI komutlarını kesinlikle kullanmamalarını öğütlüyordu.

Aslında bu komutları kullanmamak için bir sebep yoktur. Birçok sorun BPL, BMI, BVS ve BVC ile kolaylıkla çözümlenmektedirler. Sayıların bilgisayar tarafından nasıl yorumlandığını bildikten ve bu dallanma komutlarının fonksiyonlarını kavradıktan sonra bunları rahatlıkla kullanabiliriz. BMI ve BPL (“Branch on Minus” — “Eğer negatif ise dallan” ve “Branch on Plus” — “Eğer pozitif ise dallan”) statü registerindeki N-Bayrağına göre hareket etmektedirler. Bu bayrak hakkında daha önce bazı bilgiler vermiştik. Şimdi kısaca tekrar ele alalım isterseniz. Eğer bir operasyonda 7. Bit'i 1 olan bir sayı ortaya çıkarsa bu bayrak da değerini almaktadır. Dolayısıyla bu Bit 8-Bit'lik bir sayının işaretidir. Eğer bu Bit “1” değerini alırsa BMI, aksi takdirde BPL ile bir dallanma gerçekleşir. BVS ve BVC komutları da statü registerindeki V-Bayrağı ile ilgilenmektedirler. Eğer bu bayrak “1” değerini alırsa BVS (Branch on Overflow Set) komutu kullanıldığında bir dallanma gerçekleşecektir. BVC ile ise V-Bayrağının 0 olduğu durumlarda dallanma sağlanır. Bu şekilde istersek hesap işlemlerinde kullanılan sayıların 16, 24 veya 32 Bit'lik olmaları sağlanabilir ve böylelikle her seferinde ortaya çıkabilecek en büyük ve en küçük değerleri bulmak için uğraşmayız. Yukarıda tanıdığımız tüm Branch komutları aynı BNE gibi 2 baytlık komutlardır ve özel bir adresleme yöntemi kullanmaktadırlar: Relatif Adresleme. Resim 2'de son öğrendiğimiz 11 komut hakkında bazı yararlı bilgiler yer almaktadır.

Tabii ki 9?

Geçen ay yayınladığımız The Hunt'a çok benzeyen bu oyun, yine Dracula ile ilgili. Daha doğrusu First Night, Second Night ve The Hunt bölümleri asıl oyunu olan Dracula'yı oluşturuyorlar. Oyunumuz yine bir text adventure. Grafiği olmadığı halde yine de ülkemizde en çok satılan ve en çok oynanan adventurelardan biri.

İlk olarak, oyuna ısınabilmemiz için karşımıza uzun bir açıklama metni çıkıyor. Buna göre; Arabacı sizi GOLDEN KRONE HOTEL'ine götürüyor. Sade bir yolculuk yaptığınızı söylüyorsunuz. Ülkenin doğa güzellikleri karşısında hayran kaldığınızı da saklayamıyorsunuz. Daha şimdiden içinizde çok tuhaf bir sezinti beliriyor. Çok acayip ve değişik bir şey... Neyse, kendinizi toplamalısınız. Şimdi yapmanız gereken ilk iş, Hotel'e girebilmek. Bunun için yolunuzu kesen ve sizi yoldan geçirmeyen arabacıya paranızı vermelisiniz (E, Give Money). Doğuya giderek (E) hotelin girişine varıyorsunuz. Burada hotel hakkında bir sürü açıklamalar veriliyor. Bu gibi açıklamalar her ne kadar önemsiz ise de, oyunun heyecanını bozmamanız için bunları okumanızı tavsiye edebilirim. Buradan 'S' yönünü izleyin. Resepsiyon yerine gelmiş bulunuyorsunuz. Geceyi orada geçireceğinizden dolayı önce adınızı yazdırmalı ve bir oda kiralamalısınız. Bunun

FİRST NİGHT

için önce 'Look desk' komutunu vererek zili bulun. 'Bell' komutuyla bu hotelin sahibini çağırabilirsiniz. Odanızın anahtarını alabilmek için deftere kayıt olmanız gerekir. Bunun için verebileceğiniz en uygun komut “Sign Register”dir. Şimdi sıra geldi karnınızı doyurmaya. 'N' ve 'E' yönlerini izlerseniz yemek odasına varırsınız. Şimdi sandalyeye oturun. Buradaki komutu da artık siz tahmin edebilirsiniz. 'Menu' komutuyla menüyü okuyabilirsiniz. Burada seçeceğiniz yemekler ve içecekler çok önemli. Bunlar hayatınıza mal olabilecek derece önemli (Hayır, kimse yemeğe fazladan zehir katmadı!). En iyisi size bir örnek vereyim: İçecek olarak 'Wine'ı seçerseniz, geceleyin susayacaksınız. Su bulma ümidiyle de odanızdan çıkıp su arayacaksınız. Bu sırada hotelin sahibi sizi karanlıkta tanıyamayacak ve sizi, vampir Dracula diye öldürecektir. Dracula değil de sizin olduğunuzu fark ettiği zaman iş işten geçmiş olacak. Görüyorsunuz, bir içecek insanın hayatına nasıl mal olabiliyor. Yemeğinizi bitirdikten sonra artık uyku vakti yaklaşır. 'Up' ve 'Up' komutlarıyla odanızın önüne gelebilirsiniz. Şimdi başarmanız gereken odanızın kapısını açmaktır. Her ne kadar kolay görünüyorsa da, Adventure oynamaya yeni başlayan arkadaşlarımız için en zor işlerden birisidir. Şu iki komut işinize yarayacaktır: “Unlock Door” ve “Open Door”. 'N' komutuyla da odanıza girin. Derin ve rahat bir uyku çekmeden önce siz en iyisi odanızın penceresini kapatın. Çünkü biliyorsunuz, sevgili dostumuz Dracula bir vampir olduğundan dolayı ancak geceleyin gezebilir. 'Close window' ve 'Sleep' vereceğiniz komutlardır. Ne yazık ki rahat bir uyku uyuyamıyorsunuz. Çünkü biraz kabus görmektesiniz. Oldukça uzun bir kabus olmalı ki, ekranda bunu anlatırken birkaç sayfa sürüyor. Kabustan sonra her zaman bir olay oluyor. Bu olay-

lar yediğiniz yemeklere göre değişiyor. Örneğin 'Lamb Stew' ve 'Water' seçtiyseniz pencerenizden birkaç yarasa girmeye ve sizi öldürmeye çalışacaktır. Fakat biz önlemimizi önceden almıştık. Evet, geldik yine oyunumuzun sonuna. Geçen seferki gibi yine ancak birkaç ipucu vermekle yetinmek zorundayız. İşte ipuçları: Sabah olduğunda Hotel'den ayrılın; arabacıyı bekleyin ve Register'de bulunduğunuz ismi arabacıya söyleyin; arabaya binerek oyunu bitirin. Text adventuredan bıkanlara hak veriyorum. Bunun için size gelecek ay bol grafikli bir adventure açıklamayı düşünüyorum. Öyleyse bir dahaki aya kadar hoşçakalın... Sorunlarınız ve ipuçlarınız için adres: Macera Peşinde Sakız Sok. No: 6/4 Berkel Apt. Kadıköy/İSTANBUL.

60 WETH Sar

Başarınızın sırrı:

Tabii ki 9?