Bu sayfadaki yazılar
Sayfanın metni
Sayfa 10
Yalın Kiremitçi 337 Halitağa Cad. Kadioğlu Apt. No. 70 K.2 Kadıköy Serdar Neptun 343 56 66 Mütevelli Çeşme Sk. Atayurt C-14 Koşuyolu Burak Yaşar Ahıskalı 361 99 45 Şemsettin Günaltay Cad. İpek Apt.
02.02.1992 PAZAR
1 adet AMIGA 500
Özlem Kuyaş 385 08 21/5 Esbank Suadiye Şb. Bağdat Cad. 404 Suadiye
1 adet PC-I Aylin Pişkin 341 17 56 Murat Reis Mah. Güntaş Apt. 10 adet dergi seti Angın Aybar 325 44 08 Ulus Sk. No.10 Suadiye Umut Tekin 165 78 96 Çanakkale Seramik Sitesi yeni blok E/6 Etiler Gonca Güreken 345 72 18 M.Mazharbey Sk. No.43 B/4 Kadıköy Salih Gültekin 375 43 52 Samsun Sk. No. 27 Kaynarca Alp Gökalp 565 81 21 Yenidoğan Mah. Şafak Sk. No. 40 Bayrampaşa
Duygu Dilber 279 66 02 Ebülullah Cad. Maya Sitesi N Blok Etiler H.Adnan Dudurga 567 74 97 Bahariye Bl. Al Barış Eyüp Hakan Kır 577 73 91 Tuna Cad. Yılmaz Sk. No. 42/2 B.paşa Hazime Ay 356 65 06 Akın Sk. No.1 D.8 Suadiye Servet Yılmaz 164 39 84 Şirintepe Mah. Azim Sk. No.28/5 4. levent 5 adet kitap seti Oğuz Taşçı 527 32 24 Saka Mehmet Sk. Coşansu Han 15/101 Sultanhamam
Hasan Zengin 579 99 39 Zübeydehanım Mah. 1350 Sk. No.10 Gaziosmanpaşa
Cennet Mah. Barbaros Cad. 13/5 K.çekmece
Volkan Öztürk 168 17 47 Sanayi Mah. 100. Yıl Cad. Düğer Sk. No.4/5 4. Levent
Hasan Karahan 538 18 59
01.02.1992 CUMART
2 adet PC-1
Murat Karamızrak 332 19 58 Hisaryolu No. 5 81610 Kanlıca
Ertan Güsen 131 21 21 (3250) Sheraton Oteli Taksim İstanbul
5 adet dergi seti
Suna Atlan 372 55 11 Taşlıçeşme Sk. 19/15 Bostancı
Hüsnü Sevinç 152 26 46 Dereboyu Sk. No.8/2 Tophane
Yako Pase 141 54 84 Sirkeci Doğubank İşhanı No.25
Öznur Erişüren 370 72 79 Atatürk Cad.
Eme Apt. No.101/3 Maltepe Kenan İnal 373 03 95 Bahçeler arası Sk. İbar Palas 5/B 81110 Bostancı 5 adet kitap seti Ergin Yavuzol 361 24 31 Eminali Paşa Cad. Taşlı Çeşme Sk. Blok A/1 No.30 Bostancı
Ceyda Ceyhan 529 34 65 Hacıhüseyinağa Cami Sk. Mah. No.9/1 Samatya Emir Gelen 172 94 61 Yıldız Posta Cad. 24/2 Gayrettepe İsmail Aydoğan 162 86 24 Cumhuriyet Mah. Şalcıkır aralığı No.13 B.dere Mustafa Birbilen 553 49 50 Ahmet Kutsi Tecer Cad. Arin Apt. A blok K.3 Merter
31.01.1992 CUMA
1 adet Commodore 64 Taylan Artaç 334 89 89 Mütevelli Çeşme Sk. Atayurt St. A-13 Koşuyolu 1 adet PC A. Serkan Özkan 332 45 10 Şimşek Yapı
B-1 Blok D.12 Kanlıca 5 adet dergi seti Volkan Eser 1860 69 17 Ataköy 9. Kısım A/4 Blok D.8 Bakırköy Tansu Alpcan 340 21 04 Gayretli Sk. Can Apt. No. 17/4 Acıbadem Saruhan İnce 140 38 14 Hanımefendi Sk. 99/9 Şişli Evrim Toklucu 335 74 48 İstiklal Mah. Destan Sk. No. 2/8 Ümraniye
Esma Yılmaz 558 12 54 Sümer Mah. 28. Sk. No.14 Z.burnu
5 adet kitap seti Barış Gümüşel 345 45 68 Bahçeler Sk. Mas Apt. No.10/3 Feneryolu Kıyasettin Albayrak 559 45 92 Ataköy 9. Kısım D2 C blok No.27 Bakırköy Kunter Güler 130 77 87 Bilezikçi Sk. Talas Palas Apt. No.7/9 Kurtuluş Arda Çağlayan 74-11 95 38 Çamlıbey Subay Loj. K.3 D.6 Mersin Mert Oğuzülgen 573 53 00 Kazım Silivrili Sk. Villa Kent Sit. An Blok D.5 Yeşilköy
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 11
Neredeyse iki aydır “ROM rutinlerini açıklayacağım” deyip deyip teorik bilgileri sıralıyordum. Ama emin olun bütün teorik bilgiler birazdan vermeye başlayacağım rutinlerin ne olduğunu anlamanıza yardım edecek. Eğer doğrudan rutinlere kalkışsaydım, herkesin kafasında koca koca soru işaretleri kalacaktı (dediğimde bunun Floating Point Accumulator'u! -Bir Ayan Nokta Değişkeni diyebiliriz mesela- olduğunu kaçınız tahmin edebilirdiniz?). Teorik bilgilerle sizi neden sıktığımı da anlatıp içimi rahatlattıktan sonra, bu ay neleri anlatacağımı kısaca özetleyeyim: Hepinizin makine dilinde çarpma, bölme, sinüs alma vb. işlemlerini yapmak için öldüğünüzü biliyorum, ama canınızı biraz daha sıkabilmek için ilk olarak sayıları değişik tam sayı formatlarından kesirli sayılara çeviren rutinlere değinmek istiyorum. Bu konu gerçekten de önemli sayılabilir, çünkü program hızlandırmak istediğiniz her yerde basit işlemleri ROM'a yaptırmak yerine kendiniz yapmak zorunda kalırsınız. Bu işlemleri de tam sayılar üzerinden yapmak çok daha kolaydır. İsterseniz size daha somut bir örnek vereyim: Diyelim ki, bir ile yüz arasında değişen tam sayıların ortalamasını alacak bir program yapacaksınız. İlk olarak kullanıcıdan aldığınız tüm sayıları birer baytlık tam sayı olarak saklarsınız. Sonra bunları basit ADC komutlarıyla iki baytlık bir yerde toplarsınız. Daha sonra bu sayıları birazdan vereceğim ROM rutinlerinden uygun olanıyla ikilik kesirli sayıya çevirirsiniz ve son olarak da -umarım bu ay verebileceğim- bölme rutiniyle girilen sayı miktarına bölersiniz. Bu sayede yapacağınız ortalama alma işlemi, kesirli sayılarla yapılandan hem daha hızlı olacaktır, hem de daha az bellek işgal edecektir.
Vedat Hallaç
Bu rutinleri bilmenin gerekliliğine ikna olduğunuza göre, adresleri vermeye başlayabilirim: Tam Sayıdan Kesirli Sayılara Geçiş
1. İşaretli bir bayt sayı - $BC3C: Aşağıdaki rutin bir baytlık işaretli bir sayıyı (-128..+127) kesirli sayıya çevirir. Negatif değerler -geçen sayıda da bahsettiğim gibi- A'da (akümülatörde) bulunan pozitif sayıya:
CLC ADC #$0L komutlarının uygulanmasıyla elde edilir. Sayının mutlak değeri de aynı işlemler sonucu bulunabilir. Aşağıdaki rutini çağırdığınızda sonucu FAC'a yerleştirirsiniz:
LDA (-127..128) SR $BC3C
A'da bulunan $80 -128'e, $FF -1'e, $7F +127'ye çevrilecektir. 2. İşaretsiz bir bayt sayı - $B3A2: Eğer baytın işareti yoksa, değeri 0-255 arasındaysa bu rutin kullanılır. Bu rutinde dikkat etmeniz gereken şey, baytı A'yla (akümülatörle) değil Y registeriyle iletmeniz:
LDY Hsayı (0..255) JSR $B3A2
Sonuçta $00 0'a, $80 128'e, $FF 255'e çevrilir. 3. İşaretli iki bayt sayı - $B395: İşaretini de bulunduran iki baytlık bir sayı (-32768..+32767) aşağıdaki basit rutin kullanılarak yerleştirilir: LDY #Alçak LDA #Yüksek JSR $B395
Bu rutinde de alçak ve yüksek baytın yerini karıştırmamaya bakın. Eğer 32767'yi çevirecekseniz:
32767 -$TFFF, LDY HSFF LDA JSR $B395
rutini kullanın. Y'de hep düşük değerlilik (alçak bayt) bulunmalıdır. Aşağıdaki sayılar sanırım konuyu tam olarak anlamanıza yardımcı olacaktır.
A Y Sonuç 00 00 0 00 01 1 00 FF +255 01 00 +256 7F FE +32767 80 00 -32768 FF FF -1 4. İşaretsiz iki bayt sayı - $BC49: Eğer iki baytlık sayınız her zaman pozitif değerler alacaksa aşağıdaki rutini kullanmalısınız. Yalnız bu rutinlere biraz dikkat edin, gittikçe karmaşıklaşıyor çünkü
LDY LDA gYüksek STY $63 STA $62 LDX SEC JSR $BC49
Bu rutin, sayınızın hep pozitif olduğunu varsayarak 0..65535 arasında bir sayı yerleştirir. İsterseniz A ve Y'ye verilen tipik değerler sonucunda ne sonuçlar alacağımıza bir göz atalım: