13.07.2015 Views

C64 Turkiye - Sayi 08 (Ekim 2005).pdf - Retro Dergi

C64 Turkiye - Sayi 08 (Ekim 2005).pdf - Retro Dergi

C64 Turkiye - Sayi 08 (Ekim 2005).pdf - Retro Dergi

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>C64</strong> TÜRKİYE #8 6"." karakterini basıyoruz. Eğer okunan bayt "boşluk" karakterinden büyükse bu sefer ()karakterinden büyük olup olmadığını kontrol ediyoruz. Eğer büyükse yine "no_ascii" yazanyere gidiyoruz. Eğer küçükse yani okunan bayt $20-$60 arasındaysa ekrana basıyoruz. Fakatburada $2C bayt'ı bilgisayarı kandırmak için kullanıyoruz. $2C değeri "BIT" komutununkodu olup kullandığı parametre 2 baytlıktır. Bu parametreler ise "no_ascii" yazan yerdeki"LDA #$2E" komutunun baytlarıdır. Dolayısıyla "BIT $A92E" gibi bir komut yazmış oluyoruz.Bu durumda komut sırası .... BCS NO_ASCII - BIT $A92E - JSR $FFD2 şeklinde olmaktadır.Dolayısıyla Aküdeki değer değişmemiş olmakta ve bu değerin ASCII karşılığını yazdırmışoluyoruz. Normalde "no_ascii" yazan yere gelindiğinde Aküye $2E değeri yüklenmektedir ve$2E'nin ascii karşılığı "." karakteridir. Bu nedenle hafızadan okunan baytların asciikarakter karşılığı yoksa "." basılmaktadır. Bu işlemleri 8 defa tekrarlıyoruz ve sonraprogram aşağıdan devam ediyor.new_line lda #$0djsr $ffd2Yukarıdaki iki komutla bir alt satıra geçiyoruz.mem_setup lda $fbclcadc #$<strong>08</strong>sta $fbbcc no_inc_fcinc $fcno_inc_fc dec linebne line_dumpBu bölümde ilk olarak hafızadan okuyacağımız yeni yerin adresini hesaplıyoruz. $FBadresinde okuma yaptığımız adresin LOW baytı bulunmaktadır. Bu adresteki değeri 8 iletoplayıp geri yazıyoruz. (Her seferinde 8 bayt okuduğumuz için 8 ile topluyoruz). Toplamasonucunda elde biti varsa (yani sonuç 255'ten büyükse -"C" biti "1" ise-) bu sefer $FCadresindeki HIGH baytı bir arttırıyoruz. Eğer elde biti "0" ise yani sonuç 255 veyaküçükse "no_inc_fc" yazan yere gidiyoruz. Burada ise daha önce tanımlamış olduğumuz ekrandabir seferde gösterilecek satır sayısını bir azaltıyoruz. “0” olmadıysa “line_dump”yazan yere gidip ekranda 16 satır gösterilinceye kadar işlemleri tekrarlıyoruz.f_keys jsr $ffe4cmp #$85 ;F1 - Sonraki sayfabeq next_pagecmp #$86 ;F3 - Önceki sayfabeq old_pagescmp #$87 ;F5 - Yeni adresbeq restartcmp #$88 ;F7 - Çıkışbne f_keysjmp $a474 ;Basic'e geri dönrestart jmp startnext_page .byte $2cold_pages dec $fcldy #$00ldx #$<strong>08</strong>clcjsr $fff0jmp dumperBurası ekranda 16 satır yani 16*8=128 bayt dump edildikten sonra basılması gereken"F(onksiyon)" tuşlarının kontrol edildiği bölümdür. Önce bir JSR komutuyla tuşları okuyoruzve "F" tuşları olup olmadığını kontrol ediyoruz. "F1" ile "next_page" yazan yeregidiyoruz. Daha önce bahsettiğimiz şekilde "BIT" komutuyla bilgisayarı kandırıyoruz vekursörün yerini belirleyip dump etme işine tekrar başlıyoruz. "F3" ile daha önceki sayfayıekrana getiriyoruz. Bunun için o anki hafıza adresinin HIGH baytının tutulduğu $FCadresinin değerini 1 azalttıktan sonra kursörün yerini belirliyoruz ve başa dönüyoruz."F5" ile farklı bir adresi dump etmek için programın en başına zıplıyoruz. "F7" ileprogramdan çıkıyoruz.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!