ESPİONAGE
Ekranın ortasındaki micraflimleri
de aynı şekilde alacaksınız. Arkasında başka microflim olmayacak. Bu iş için en iyi karakter şapkalı karakterdir. Oyunda, ekranın sağ tarafında karakterlerin durumundan başka, options seçeneği vardır. Bu seçenekle bulunduğunuz kareyi büyütebilir, oyunu durdurabilir, bir oyuncuyu bilgisayara geçirebilir veya help seçeneğiyle oyunun konusunu öğrenebilirsiniz. Oyunu çok monoton ve sıkıcıdır. Eğer dama dan hoşlanıyorsanız bu oyun hoşunuza gidebilir. Oyunu monoton yapan tek grafikli olması ve tekdüze olan müziğidir. Eğer tezcanlı biri iseniz bu oyunun yanına yaklaşmayın. Mert GÖKKAYA
Bilgisayarda markalar hızla çeşitleniyor.
Toplama parçalarla yerli montajı bile var
“Senin IBM ne marka?”
caba Türkiye bilgisayar mezarlığı mı olacak?” Türkiye'deki bilgisayar çevreleri uzun yıllar bu korkuyu yaşadı. Karamsarlar diyorlardı ki: “Hiç ilgisi olmayan firmalar bile talep olduğunu görünce bilgisayar ithalatçılığına soyundu. Adı sanı duyulmadık Uzakdoğu kökenli cihazları getirip satıyorlar. Çoğu da getirdiği birkaç partiden sonra bu işten çekiliyor. Bu cihazlar bir süre sonra bozulacak, o zaman ne olacak? Bu kadar değişik marka için servisi, bakımı, en önemlisi yedek parçayı kim sağlayacak? Tamir edilemeyen, yedek parçası bulunmayan, yallah çöpe. Yazık değil mi dövizlere?” İthalat mevzuatı, ilk şekli ile ithalatçı firmaya 7 coğrafik bölgede en az bir servis istasyonu kurmayı zorunlu tutuyor, bu kanıtlanmadıkça ithal izni vermiyordu. Oysa daha sonra servis zorunluluğu kaldırıldı. Yani ithalatçı, dilediği ülkeden dilediği marka bilgisayarı getirtip Türkiye'de pazarlayabilecek, ama bu cihazların bakımı için servis ağı kurma zorunluluğu olmayacaktı. PİYASA ORGAN DOĞURDU Oysa gerçek şu ki, Türkiye ileri sürüldüğü gibi hiç de bilgisayar çöplüğü olmadı. Hatta Türk insanının kendine özgü pratik zekâsı, bilgisayar alanında öylesine ilginç çözümler üretti ki, en karamsarlar bile parmak ısırdılar. Artık markası ne olursa olsun, PC düzeyinde Türkiye'de servisi yapılamayan bilgisayar yok... Piyasaya giren en bilinmedik marka bile, kısa bir alışma döneminden sonra onarılabiliyor. Çünkü artık işi sadece bilgisayar tamir etmek olan ekipler yaygınlaşmaya ve güçlenmeye başladılar. Yedek parça sorunu ise yine işi yalnızca yedek parça getirmek olan ithalatçılar tarafından karşılanmaya başlandı. Yani bir başka tarifle, piyasa talebe göre kendi organlarını bilgisayar alanında da yarattı. Uzakdoğu kökenli bilgisayarlar, özellikle 1988 başından itibaren Türk piyasasına geniş çapta çıkar-
* ma yapmaya başladılar. Giderek daha fazla alıcı buluyorlar. Buna en önemli neden olarak ise artık Türk insanının bilgisayar korkusunu atması gösteriliyor. IBM uyumlu olarak üretilen Uzakdoğu bilgisayarları, çok daha ucuza satıldıkları için Türk piyasasında giderek yer tutmaya başladılar. Taiwan, Güney Kore gibi ülkelerden gelen cihazlar,
Özçınar “Servis sorunu yok.”
özellikle sıradan ihtiyaçlar için cazip bir alternatif oluşturuyorlar. IBM uyumlu bu bilgisayarlar için parça sorunu da asgari düzeyde. Zaten endüstri standardına ulaşmış olan pek çok devre, çoğu markada birbirine uyuyor. İthalatçı, tamirbakım işleri yapan bir firma ile anlaşarak servis sorununu da çözüyor.
BASTIRIYOR Aslını ararsanız IBM'den NCR'sine kadar hemen bütün büyük markaların içine Uzakdoğu üretimi parçalar girmiş durumda. Ünlü markaların hemen hepsinin pek çok bölümü ucuza çıktığı için, bir süredir Taiwan veya Güney Kore'de üretiliyor. Bu gerçek kimi zaman açıkça söyleniyor. Kimi zaman gizleniyor. Hatta Türkiye'de satılan bazı IBM bilgisayarların ambalajı açıldığında, ekranın üzerinde “Made in Taiwan- Bu etiketi ambalajı açınca lütfen atınız” yazılı etiketlere rastlanıyor. Yapışkan etiket atılınca geriye kalan IBM markası, sıradan kullanıcıya cihazın sanki tamamen Amerikan yapımı olduğu izlenimini veriyor. Yani Uzakdoğu üretimi parçalar, Batı üretimi bilgisayarları zaten istila etmiş durumda. Şu veya bu oranda. Ama varlıkları inkâr edilemez. Bir yandan da doğrudan bütün olarak cihaz halinde pazarlanıyorlar. Tüketiciye cazip gelen tarafı ise fiyatları. Çünkü ünlü markalara göre Uzakdoğu yapımı bir PC, yüzde 40'lara varan oranda daha ucuza satılıyor. Eh, yaptığı iş sıradan ihtiyaçlar için aynı, fiyatı düşük, servis problemi de olmayınca cazip hale geliyorlar. Taiwan malı IPC bilgisayarlarını pazarlayan YA-GEM'in satış sorumlusu Gökçe Özçınar konuyu şöyle açıklıyor: “Önemli olan satışı yapan firmanın tutumu ve verdiği hizmettir. Yoksa yerli kullanıcılar Uzakdoğu ürünü bilgisayarların da dev Batı markalarıyla aynı performansı sağladığını gördüler. Servis ve yedek parça sorunu da çözümlendi. IBM bu işin standardını koyan kılavuz kuruluş konumunda. Bu inkâr edilemez. Ama yaptığı iş bakımından ele alındığında, boynuz kulağa yetişti. Hem zaten büyük markalar da çoğu parçalarını Uzakdoğu'da yaptırmıyorlar mı?” MEGA Bilgisayar'dan Fethi Demir ise şu örneği veriyor: “İnsanlar bilgisayarla neler yapabileceklerini
Bia.
Orijinal gibi Kim der ki, bu toplama bilgisayardır. (Fotoğraflar: Fahri Alakeni)
rini daha yeni yeni öğrenmeye başladılar. Bir müşterim broşür yollamak için adresleme makinesi arıyordu. Hatta fuarlara bile gidip adres makinesi aramış. Sonra işini bir bilgisayarla yapabileceği, ayrıca bilgisayarın diğer işlevlerinden yararlanabileceğini de öğrendi. Gidip bir Uzakdoğu malı bilgisayar aldı. İhtiyaçları belirli, genişleme problemi yok. Ünlü bir marka diye neden 7-8 milyon ödesin?” YİĞİDİN HAKKI Piyasanın büyük ağabeyi olduğu için yine örneği IBM'den alırsak, IBM'in teknolojisinin üstün olduğu açık. Ancak herkesin de çok üstün teknolojiye ihtiyacı yok. Uzakdoğu ürünleri de bu ayrımı değerlendirip piyasaya yerleşmeye başladılar. Dünyadaki tüm ülkelerde Uzakdoğu ile rekabet etmekte olan IBM de üzerindeki bu kamburdan kurtulmak için bir süre önce dizaynını değiştirdi.
Micro Channel adını verdiği yeni bir teknolojiyi PS/2'lerde uygulamaya başladı. Ancak Uzakdoğulu üreticiler son teknolojiyi takip ediyorlar. Ne var ki bazı ayrıntılı yazılımlarda IBM'in chip seviyesine inildiği için, program yalnızca IBM'de çalışabiliyor. Örneğin korumalı dis-
Demir “İnsanlar artık korkmuyor.”
ketlerde, disket sürücünün chipine yönelik kayıtların bulunduğu programlar gibi. Bazı Türk girişimciler ise Uzakdoğu ülkelerine fason bilgisayar yaptırıp, üzerine kendi markalarını koyarak pazarlıyorlar. Bir de toplama bilgisayarlar var. Yani ana kartı şuradan, ekranı buradan, klavyesi oradan, diski beriden toplanıp monte edildikten sonra, üzerine bir marka basılıp satılan bilgisayarlar, Endüstride standartlaşmanın ilginç bir yan ürünü. Şimdi Türkiye'de bazı usta bilgisayarcılar bunu yapıyorlar yani toplama bilgisayar üretiyorlar ve bu garip karışımlar pek çok kuruluşta şakır şakır çalışıyor. BİZ YAPTIK OLDU! Toplama bilgisayarcılıkta mekanizma üç türlü işliyor. Birinci gruptaki iş bitiriciler doğrudan, sözgelimi Taiwan ile ilişkiye geçip değişik üreticilerden fiyat alıyorlar. Fiyatını uygun buldukları fabrikalardan toparladıkları ana kart, disk, klavye gibi gerekli tüm parçaları ayrı ayrı ithal ederek Türkiye'ye getiriyor ve burada monte edip bilgisayar haline getirerek satıyorlar. İşleri bu. İkinci gruptakiler ise profesyonellere yedek parça satan çeşitli ithalatçılardan topladıkları elemanları kendi atölyelerinde monte ediyorlar. Üzerine şöyle İngilizce çağrışımları olan bir markayı da basınca oluyor sana bilgisayar. Disk kapasitesi, ana belleği, hızı ile oynayarak çok değişik bileşimler yaratıyorlar. İşin hoş yanı bu toplama bilgisayarların bazıları zaman zaman dev markaların cihazlarından çok daha marifetli de olabiliyor. Hepsi de IBM uyumlu. Bunları daha çok bilgisayarı meslek edinmiş, onu yakından tanıyan profesyoneller tercih ediyorlar. Çünkü yarı fiyatına geliyor. Toplamacılar çoğu kez aynı zamanda tamir işini de yapan servisler. Üçüncü grup ise ana parçaları bütün olarak alıp birleştirenler. Bilgisayar çöplüğü olmasından korkulan Türkiye, görüldüğü gibi 3-5 yıl içinde bilgisayarla öyle içli dışlı oldu ki, bazıları işin katakullisini bile öğrendi. Piyasadaki PC satıcıları da artık pazarladıkları malın marifetlerinin yanı sıra, hizmetlerinin kalitesi ve fiyatları ile de rekabet etmeye başladılar. Çünkü artık Türk insanı bilgisayarı daha yakından tanıyor.
MAKİNE KODUNA GİRİŞ Şimdi assembler programını yazdın, RUN et. Ekranda menü olması lazım. 1 tuşuna bas. Ekranda “BAŞLANGIÇ ADRESİ” göreceksin. Bunu cevap olarak C000 yaz ve RETURN'e bas. Şu anda Assembly dili, C000 mevkiine girme pozisyonundasın. Dilinde satır no'ları yok, bunların yerine adresler vardı. C00 bir adrestir. Şu anda Assembly dili bilmiyorsun, bunun için X tuşuna bas ve RETURN'le. Bu seni ana menüye geri gön-
derecektir.
Şimdi 2 tuşuna bas. Ekranda “BAŞLANGIÇ ADRESİ” göreceksin. Bu sefer F301 diye cevap ver. Şimdi kompüter F301 adresinden başlamak üzere, ileriye doğru (F301, F302 vs.) bilgileri ekrana print edecek. Nelerin print edildiğini şu anda anlaman gerekmiyor. Sonra anlıyacaksın. Print'i durdurmak için SPACE tuşuna bas ve öyle tut. Şimdi X tuşuna bas. Tekrar ana menüye döneceksin. Şimdi 7 tuşuna bas. Bu sefer “CODE'UN ADRESİ” göreceksin, FFD2 yaz. Şimdi kompüter FFD2 adresindeki Assembly dilini RUN edecek ve ekrana bazı rakam ve karakterler yazacak. Bu karakterler bir sonraki bölümde incelenecek. Herhangi bir tuşa bas, ana menüye döneceksin. Bundan sonra 8 tuşuna bas ve D tuşuna bas. Bu decimal rakamları girmenizi sağlar, kompüter bunu hexadecimal'e çevirir. Şimdi yine 8 tuşuna bas ve arkasından H tuşuna bas. Şimdi hexadecimal rakam gir, kompüter bunları decimal'e çevirecek. Eğer ana menüye dönmek istiyorsan X tuşuna bas. REGİSTER'LERİ YÜKLEMEK Commodore 64'ün Assembly dilinde 3 ana Register'ı vardır. Bu Register'lar değişken olarak düşünülebilirler. Bunlar: 1) Accumulator (A) 2) X Register 3) Y Register BASIC değişkenlerinin tersine, değişkenler 0-255 (0-FF-Hex.) arasındadır. Register'ı bir değere eşitlemek için, bu değeri yüklemeliyiz. Örnek: Basic'te A'nın değeri 55 ise A=55 yazabiliriz. Assembly dilinde bu “LDA #$37” şeklindedir. Burada LDA 'load A' ve “#$” ise bu sonraki değer ile '$' ise hex. rakam demektir.
Dr. Ali Özçelik
A Register'a 37 yüklendi, 55 değil, çünkü rakamları hex. olarak vermeliyiz. 55 decimal = 37 hex. Register'lar değişik metodlar ile yüklenebilirler. Yukarıdaki metoda denir. Daha sonra diğer metodları da anlatacağım. Önce Assembly dili yazmak için Assembler'in nasıl kullanılacağını öğreneceğiz. Assembler'i yükle ve RUN et. 1 tuşuna bas, sonra C000 yaz, kodumuzu C000 adresi ve devamına koyacağız. Şimdi “LDA #$37” yaz ve RETURN'e bas. Cursor tekrar göründüğü zaman RTS yaz. RTS komutu kompüteri tekrar BASIC'e gönderir (RUN olurken). Assembly programının sonunda RTS'yi yazmazsan kompüter BASIC'e dönmez ve donar (CRASH). Yazdığın kod şu şekilde olmalıdır: C000 LDA #$37 C002 RTS Şimdi X tuşuna bas. Asıl menüye dönmelisin. 7 tuşuna bas. Ekranda “CODE'UN ADRESİ” yazısını görmelisin. C000 yaz ve RETURN tuşuna bas. Şimdi kompüter yazmış olduğun Assembly programını RUN edecek ve A register'ini 37 değeri ile yükleyecek. Kompüter Assembly programından döndükten sonra, Register'lerin değerini ekrana dökecek. AR—A Register XR—X Register YR—Y Register SP—Stack Pointer (sonra izah edilecek) Dikkat et A registerinde 37 değeri var, bunu biz yükledik. X ve Y registerleri de yukarıda olduğu şekilde aynı yöntemle yüklenir. Bazı örnekler: C000 LDX #$9A C002 RTS
50 C002 RTS İlk örnekte X registeri 9A ile ve ikinci örnekte Y registeri 50 değeri ile yüklenmiştir. ZERO PAGE: Bunu okumadan önce PEEK komutunu bilmeniz gerekiyor. (Bakınız Programcının El Kitabı sayfa 53) Bundan sonraki direktifler PEEK fonksiyonunu kapsar. Zero page 0-FF kadar verilen adreslere denir. BASIC'te A değişkenini C5 bölgesindeki değere biz eşitlemek istersek 'A=PEEK(197)' yazmalıyız. (197, C5'in decimal yazılışı). Assembly dilinde ise 'LDA $C5'. olmadığına dikkat et (rakam olmadığı için) İşte size A registerinin C5 bölgesindeki değerini gösteren demonstrasyon programı, Programı başlatmak için ana menüdeki 7 tuşuna basmayı unutma. C000 LDA $C5 C002 RTS X ve Y registerleride aynı şekilde yüklenebilir. C000 LDX $D7 C002 RTS C000 LDY $03 C002 RTS Birinci örnekte X registeri D7 ve ikinci örnekte Y registeri 03 ile yüklenmiştir. İNDEXED ADDRESSING (ZERO PAGE): BASIC'te A değişkenini 45+X bölgesine eşitlemek istersen 'A=PEEK(45+X)' yazmalısın. Assembly dilinde karşılığı 'LDA $45,X' şeklindedir. İşte bunu yapacak program: LDA $45,X C002 RTS Bu örnekte eğer X=10 ise A registeri 45+10=55 bölgesindeki değerle yüklenecek. X registeri, Y registeri ile indexli olarak yüklenebilir. Fakat A registeri ile yüklenemez. Şimdiki örnekte X registeri 67 bölgesindeki değer ile yüklenecek, çünki 40+27=67: C000 LDY #$27 C002 LDX $40,Y C004 RTS Y registeride aynı şekilde yüklenebilir. Aşağıdaki programda Y registeri 03 bölgesindeki değeri yüklenir (1+2=3): LDX #$02 LDA $01,X C004 RTS ABSOLUTE ADDRESSING: Zero Page adreslemenin tersine (limitlidir), Absolute adreslemede FFFF kadar figür kullanabilirsin. 0286 bölgesi CURSOR'un halihazır rengini tayin eder. Cursor'un rengini bulmak için A registerine 0286 değerini yükleyebiliriz. İşte bunu yapacak program: C000 LDA $0286 C003 RTS Bu programı çalıştırdıktan sonra cursor'un rengi değişir. Cursor'un rengini değiştirdikçe bu değerinde değiştiğini göreceksin. ABSOLUTE INDEXED ADDRESSING: Bu aşağı yukarı Zero Page adresleme ile aynıdır. A register'i X ve Y register'larını index olarak kullanabilir. Commodore 64 de ekran, 0400 bölgesinden başlar. A registerini ekrandaki ilk karakter ile yüklemek için 'LDA $0400' yazmalısın. Eğer ekrandaki X'inci karakteri yüklemek istersek 'LDA $0400,X'
yazmalıyız. İşte ekrandaki X'inci karakteri yükleme programı: C000 LDX #$09 C002 LDA $0400,X C004 RTS Eğer X'in değerini değiştirirsen A register'i başka bir karakterle yüklenmiş olacaktır. X register'i yukarıdaki metodla da yüklenebilir, fakat Y registerini index olarak kullanmalıdır. INDEXED İNDİRECT ADDRESSING: Sadece A register'i bu adreslemeyi kullanabilir. Daha ileriye 'LOW byte' ve 'HI byte'ın ne anlama geldiğini anlamamız gerekiyor. LOW byte adresin ilk 2 digit'idir. Örnek olarak FEA9 adresinde A9 LOW byte'dır. 764F adresinde ise LOW byte 4F'dir. HI byte adresin ikinci digit'idir. FEA9 adresinde FE HI byte'dır, keza 764F adresinde 76 HI byte'dır. Indexed İndirect Addressing formu şudur: “LDA ($40,X)”. Kompüter bunu gördüğü zaman X'in değerini parantez içindeki sayıya ilave eder. Örnek X=10. Parantezin içi 50 olacaktır. 50 bölgesinin D2'ye eşit olduğunu kabul edelim. Kompüter HI byte'ı 51 bölgesinden alacaktır. (51 bölgesinde FF olduğunu kabul edelim) Kompüter şimdi HI ve LOW byte'lara sahip, böylelikle adres oluşmuştur. Adres FFD2 olacaktır, LOW byte D2 ve HI byte FF'dir. Şimdi A register'i FFD2 bölgesindeki değere sahip olacaktır. Bu komutu kompüterde kullanmadan önce ikinci bir örnek vereceğim. Bu örnekte A bölgesi=43 ve 31 bölgesi de FE'ye eşittir. Bu örnekteki komut 'LDA ($20,X)' olacaktır. 30 bölgesinin LOW byte değeri 43 olacaktır. 31 bölgesinin HI byte değeri ise FE olacaktır, böylece A register'i FE43 bölgesindeki değere sahip olacaktır: C000 LDX #$0B C002 LDA ($20,X) C004 RTS Programı RUN ettiğin zaman A register'inin değeri 0B olacak. Bütün izah etmek istediğim: 2B bölgesi=01, 2C bölgesi=08, ve 0801 bölgesi 0B'ye eşittir. INDİRECT İNDEXED ADDRESSING: Diğerlerinde olduğu gibi bu da sadece A registerinde kullanılabilir. Kullanımda örnek: 'LDA ($78),Y'. Kompüter LOW byte'ı 78 bölgesinden, HI byte'ı 79 bölgesinden alır. Adres oluştuktan sonra Y registerindeki değeri adrese ekler. Eğer 78 bölgesi=56'ya, 79 bölgesi=98'e ve Y register'i de 03'e eşitse şunlar vuku bulur. 78 bölgesinin LOW byte'ı 56, HI byte (79 bölgesi) 98 olacaktır. Adres 9856 olur, fakat bu son adres değildir. Kompüter Y registerinin değerini de toplayarak final adres olarak 9859 olacaktır. 9856+03(Y registeri)=9859. A registeri 9859 adresindeki değerle yüklenecektir. İşte örnek program:
C000 LDY #$03 C002 LDA ($43),Y C004 RTS Yukarıdaki örnekte 43 bölgesi 04'e, 44 bölgesi 02'ye ve 0204 bölgesi 20'ye eşittir. Bundan başka öğreneceğimiz yükleme (load) komutları yok. İşte zamanınızı hesaplamanız için küçük bir test: 64'ün saatinin HI byte'ını A0 bölgesi tutar. MID byte'ı (iki orta digit) A1 bölgesi ve LOW byte'ı A2 bölgesi tutar. Bütün saati bir defada nasıl okuyabilirsin? Bu sorunun bir sürü cevabı vardır, cevaplardan en
İyisi:
CO00O LDA $ A0
C0O02 LDX $ At
CO04 LDY $ A2
Co06 RTS
Sizin programınızda bunlardan biri değilse, önemli
değil, uzun zamanda da olsa çalışır. Eğer programı-
“nız çalışmıyorsa bu bölümü tekrar çalışın.
REGİSTER'LERİ HAFIZADA SAKLAMA Şimdi register'lerin nasıl yüklendiklerini ve onların nasıl değer yüklendiklerini biliyoruz. 3 tane register olduğu için bunları depolamaya ihtiyacımız vardır. BASIC programını üç değişkenle yazabildiğinizi düşünebiliyor musunuz? Bu bölümde register'leri hafızada nasıl saklayacağınızı öğreneceksiniz. Hafızaya yükledikten sonra, onları oradan alıp tekrar registerlere yükleyebilirsiniz. ZERO PAGE ADRESLEME: İlk saklama (depolama) komutu STA ile çalışacağız. Bu A registerini depola demektir. Zero Page kullandığımız registerini 00-FF bölgelerinde depolayabiliriz. Aşağıdaki program A register'ini FB bölgesine depolar: C000 LDA #$80 C002 STA $FB C004 RTS Programı çalıştırdıktan sonra ana menüye dön. Şimdi 4 tuşuna bas. 'DATA DÖKÜMÜ BAŞLANGIÇ ADRESİ' yazısını görmelisin. 00FB yaz ve RETURN'e bas. Kompüter sayıları basmaya başlayacak. Bu rakamlar hafıza bölgesinin değerleridir. Dikkat et ilk sayı FB bölgesindeki 80'dir. X ve Y register'leri de aynı şekilde Zero Page'de depolanabilir. Bunlar için komutlar STX (X registerini depolama) ve STY (Y registerini depolama) İşte herbiri için birer örnek: C000 LDX #$23 C002 STX $FE C004 RTS
$ 00
C002 STY $ CB
RTS
Programı yazdıktan sonra ana menünün 4 üncü
seçeneğiyle kontrol edebilirsiniz.
ZERO PAGE INDEXED ADDRESSING Bu load komutunda olduğu gibidir, bu sefer depoluyoruz. Bu komut A register'ini, X register'ini index olarak kullanır. Örnek olarak 'STA $25,X' şeklindedir. Bu A register'ini 25+X bölgesine yerleştirecektir. (X registeri) : İşte bunu gösterecek program: LDX #$45 C002 LDA #$FF C004 STA $25,X C006 RTS A registeri 6A bölgesine depolanır, çünkü 25+X = 25+45 = 6A'dır. Bu ana menüdeki 4. seçeneği kullanarak kontrol edebilirsin.
X registeri aynı şekilde kendini depolayabilir, yalnız bu sefer Y registerini index olarak kullanmalıdır. İşte herbiri için örnek: C000 LDX #$80 LDY #$05 C004 STX $F0,Y C006 RTS
C002 LDY /&$ 00
C002 LDX FO
COO4 STY $ 11.X
CO06 RTS
Birinci örnekte X registeri F5 bölgesine depolandı, çünkü F0+Y = F0+5 = F5'tir. İkinci örnekte Y registeri 101 bölgesine depolandı, çünkü 11+X = 11+F0 = 101'dir.
ABSOLUTE ADDRESSING Üç register de kendilerini depolamak için absolute adresleme kullanabilirler. Daha önce söylediğim gibi Cursor'ün rengi 0286 bölgesindedir. Bu program 0286 bölgesindeki değeri değiştirmekle kürsörün rengini değiştirecektir.
CO00 LDA /£$ 00
C002 STA $ 0286
Co05 RTS
Yukarıdaki programda olduğu gibi A register'ine değişik değerler vererek cursor'ün rengini değiştirebilirsin. 028A bölgesi tuş tekrarlama içindir. Eğer bu bölgenin değeri 80 e eşitse tuş tekrarlar, yoksa tekrarlamaz. Bu program tuş tekrarlama için X register'ini kullanır. C000 LDX #$80 C003 STX $028A C005 RTS Bu programı denemek için RUN/STOP tuşuyla programı durdur ve herhangi bir tuşa bas. D020 bölgesi ekranın bordür rengini kapsar. Takip eden program Y registerini kullanarak bordür rengini değiştirir. C000 LDY #$00 C002 STY $D020 C005 RTS Y register'inin değerini değiştirerek bordür rengini istediğiniz renge değiştirebilirsiniz. ABSOLUTE INDEXED ADDRESSING Absolute Indexed Adresleme ile depolama sadece A registeri ile yapılabilir. Bu defa A registeri X veya Y registerlerini index olarak kullanabilir. Bu programlar ekran üzerine karakter depolar. Bakalım görebilecekmisiniz: C000 LDX #$29 C002 LDA #$21 C004 STA $0400,X C007 RTS
Co00 LDY #$ Fo
C002 LDA #$ 21
CO04 STA $ 0400.Y
C007 RTS Birinci program ekranın sol üst köşesine, ikinci program ekranın sağ üst köşesine karakter depolar. İkiside çalışır çünki ekran hafızası 0400 bölgesinden başlar. INDEXED ADDRESSING Bu adresleme şeklinide sadece A registeri kullanabilir. Giriş olarak örneğimiz “STA ($32,X)' olsun. Bu girişte X=14 ise, LOW byte 46 bölgesindeki değer (32+14=46) ve HI byte 47 bölgesindeki değer olacaktır. Bundan sonra kompüter A registerini bu bölgede depolayacaktır. İşte örnek program: C000 LDX #$21 C002 STX $FB C004 LDX #$D0 C006 STX $FC C008 LDA #$00 C00A LDX #$01 C00C STA ($FB,X) C00E RTS Bu Assembly programını RUN ettiğin zaman zemin rengi değişecektir. X registerini LOW byte ile yükler. C002: LOW byte, FB bölgesinde saklanır. C004: X registeri HI byte ile yüklenir. C006: HI byte FC bölgesinde saklanır. C008: A registeri 00 ile yüklenir. C00A: X registeri 01 ile yüklenir. C00C: Kompüter LOW byte FB (FA+X) bölgesinden alır, sonra HI byte FC (FB+X+1) bölgesinden alır. Kompüterde D021 adresi oluşur ki bu zemin rengini tutan yerdir. Sonra A registeri rengi değiştirmek için oraya yüklenir, renk siyaha değişir. INDIRECT INDEXED ADDRESSING Bu şekil adreslemeyi yalnız A registeri kullanır. Bu şekil bir önceki adreslemeye benzer, sadece Y registerini index olarak kullanır ve Y registerini adres oluştuktan sonra ilave eder, önce değil.
İşte size ekranın sol üst köşesine karakter depolayan gösteri programı: LDX #$28 STX $FB C004 LDX #$04 C006 STX $FC LDY #$28 C00A LDA #$23 C00C STA ($FB),Y C00E RTS C000: Bu X registerini LOW byte'la yükler. C002: LOW byte FB bölgesinde şimdi depolandı. Şimdi X registeri HI byte'la yüklendi. HI byte FC bölgesinde depolandı. C008: Şimdi Y registeri (index) 28 ile yüklendi. C00A: A registeri 23 ile yüklendi. C00C: Kompüter LOW byte'ı FB, HI byte'ı FC bölgesinden alır. Sonra 0400. adres şekli oluşur, sonra Y ile toplanır ve 0428 olur. A registeri bu adrese saklanır. Bordür rengi D020 ve zemin rengi D021 bölgesinde kontrol edilir. Bu en son saklama komutu idi, öbür konuya geçmeden önce bir test vereceğim. İşte problem: Bordür rengini zemin rengine çeviren bir program yapabilir misin? Cevap: C000 LDA $D021 STA $D020 C006 RTS Yukarıdaki çözüm tek cevap değildir, X ve Y registerleriyle de aynı şeyi yapabilirdik. Cevabınız yüz güldürüyorsa gelecek sayıyı okuyun. Eğer çalışmıyorsa bu sayıyı tekrar çalışmanızı tavsiye ederim.
'DRAGON NINJA'NIN HARİTASI' Dergimizin 13. sayısında yayınlanmış olan Dragon Ninja'nın haritasını, size daha yararlı olacağı inancıyla yayınlıyoruz. İşte birbirinden zor 8 bölümün haritası. Hepinize iyi eğlenceler. A: Mavi, siyah ve kırmızı ninjalar B: 8 mavi ninjayla korunan Data
East treyleri. C: Köpekler D: Kılıçlı ninjalar E: Ateş kusan insanlar F: Treyler'in etrafında giden ve 9'a mavi ninja taşıyan yedi araba G: Maymun adası H: Mamçakalı ninjalar I: Ayrı ayrı başa çıkılması gereken
8 ninja J: Bir kaç kez vurulması gereken ve sonradan kırmızı bir ninjaya dönen ateş adam. K: Akrobatic hareketler yapan ve güçlü tekmeler atabilen ninja.
L: Deri giyimli ninja N: Top ve zincirli ninja O: Helikopteriyle kaçmak üzere olan Dragon Ninja'nın kendisi. Onu alt ettiğinizde helikopter duracak ve Ronnie'yi kurtarmış olacaksınız.