Bu sayfadaki yazılar
Sayfanın metni
Sayfa 4
HEXADECIMAL VE ASCII MEMORY DUMP ;=======================================================================================; ; hexadecimal ve ascii memory dump programı ; ; C64 TÜRKİYE dergisi sayı 8 için hazırlanmıştır ; ; 10-05-2005 / ismail "hades" şahin ; ; hades@amigaturk.com www.c64turkiye.com www.amigaturk.com c64turkiye@amigaturk.com ; ;=======================================================================================; *=$0801 prg .word nextline .word 2005 .byte $9e .text "2061" .byte 0 nextline .word 0
start etiketli yere kadar olan kısımda LIST komutuyla göreceğiniz 2005 SYS2061 satırını oluşturuyoruz. start lda #$0d ;yeşil renk kodu jsr $e536 dex stx $d020 stx $d021 stx $fb stx $fc
Yukarıdaki bölümde karakter rengi yeşil olacak şekilde ekranı siliyoruz ve ekran silindikten sonra X registerinin değerini 1 azaltarak "0" yapıyoruz. Bu değeri $D020 ve $D021 adreslerine vererek ekran renklerini siyah yapıyoruz. Ayrıca daha sonra kullanacağımız $FB ve $FC adreslerini sıfırlıyoruz. lda #<text1 ldy #>text1 jsr $ab1e lda #$3a jsr $ffd2 lda #$24 jsr $ffd2
Önce ekrana biraz yazı yazıyoruz sonra ":" ve "$" karakterlerini basıyoruz. adres_gir jsr hex_byte_in sta $fc ;high bayt jsr hex_byte_in sta $fb ;low bayt
Bu bölümde ilk önce adresin HIGH baytını klavyeden girip $FC adresine saklıyoruz. Sonrada LOW baytını girip $FB adresinde saklıyoruz. ldy #$00 ldx #$06 clc jsr $fff0
Yukarıdaki komutlarla kursörün yerini belirliyoruz. Y registerine kursörü koyacağımız yerin sütun değerini, X registerine ise satır değerini vererek Kernal Rom’daki PLOT rutinine sıçrıyoruz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 5
C64 TÜRKİYE #8 5 lda #<text2 ldy #>text2 jsr $ab1e lda #<text3 ldy #>text3 jsr $ab1e
Ekrana birşeyler yazdırıyoruz ve asıl bölüme geçiyoruz. dumper lda #$10 sta line
Ekranda bir seferde kaç satır gösterileceğini ayarlıyoruz. line_dump lda #$20 jsr $ffd2 lda $fc jsr mem_to_scr lda $fb jsr mem_to_scr lda #$3a jsr $ffd2 lda #$20 jsr $ffd2
Önce bir adet "boşluk" basıyoruz. Programın başında girdiğimiz adresin önce HIGH baytını, sonrada LOW baytını hex olarak ekrana yazdırıyoruz. Son olarak ":" ve "boşluk" karakterlerini basıyoruz one_line_dump ldy #$00 loop1 lda ($fb),y sta temp_scr,y jsr mem_to_scr lda #$20 jsr $ffd2 iny cpy #$08 bne loop1
Bu bölümde bir satıra hex dump yapıyoruz. Y registerini sıfırlayıp bayt sayacı olarak kullanıyoruz. LDA komutuyla hafızadan o anki baytı alıyoruz ve geçici olarak saklıyoruz. Hafızadan okuduğumuz baytı JSR komutuyla HEX formatlı olarak ekrana yazdırıyoruz. Ekrana bir baytı yazdırdıktan sonra bir adet "boşluk" basıyoruz. Y registerini (bayt sayacı) 1 arttırıp 8 ile karşılaştırıyoruz. 8 olmadıysa hafızadaki bir sonraki bayt için LOOP1 etiketli yere sıçrıyoruz. 8 olduysa program aşağıdan devam ediyor. ascii ldy #$00 ascii_dump lda temp_scr,y cmp #$20 bcc no_ascii cmp #$60 bcs no_ascii .byte $2c no_ascii lda #$2e jsr $ffd2 iny cpy #$08 bne ascii_dump
Burada ise daha önce hafızadan okuyup geçici olarak sakladığımız baytların varsa ascii karşılığını ekrana yazdırıyoruz. İlk olarak Y registerini sayaç olarak kullanmak üzere sıfırlıyoruz. Sakladığımız ilk baytı alıyoruz. Önce "boşluk" karakterinden küçük olup olmadığını kontrol ediyoruz. Eğer küçükse "no_ascii" yazan yere gidiyoruz ve ekrana