Sayfanın metni
Sayfa 9
start etiketli yere kadar olan kısımda LIST komutuyla göreceğiniz 2005 SYS2061 satırını oluşturuyoruz. start sei lda #<irq ldx #>irq ldy #$01 sta $0314 stx $0315 sty $d01a
İnterruptları engelledikten sonra, interrupt vektörlerini bizim rutinimizi gösterecek şekilde değiştiriyoruz ve satır tarama interruptı yapacağımızı VIC'e bildiriyoruz. lda color jsr $e536 stx $d015 stx $d01d dex stx $d020 stx $d021 stx $d027
Ekranı temizliyoruz ve geri dönüşte X registerinin değerini (X registerinde 1 değeri var) 1 numaralı sprite'ı açmak ($D015) ve X ekseninde genişletmek ($D01D) için kullanıyoruz. Sonra X registerini 1 azaltıp ekran renklerini ve 1 numaralı sprite'ın rengini siyah yapıyoruz. lda #$ff loop0 sta sdata,x inx bne loop0
Sprite şekil datası için kullanılacak hafıza bölgesini $FF ile dolduruyoruz. Böylece programda kullanacağımız sprite'ın şekli dikdörtgen oluyor. lda #(sdata/64) sta $07f8
Sprite şekil datasının bulunduğu bölgeyi sprite pointerine yazıyoruz.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 8
Geldik son alt rutine. Burada yapılan iş hafızadan okunan bir baytı hex olarak ekrana yazdırmak. İlk olarak hafızadan okunan bayt daha sonra tekrar kullanılmak üzere yığına atılıyor. Sonra HIGH nibble değerini ekrana yazdırmak için 4 kez sağa kaydırılıyor. Elde edilen değer sayaç olarak kullanılarak, sayaca göre tablodan okunan değer ekrana yazdırılıyor. Daha sonra yığındaki değer geri alınarak $0F sayısı ile AND işlemi yapılıyor. Böylece LOW nibble elde ediliyor. Sayaç işlemleri bir kez daha yapılıp hafızadaki bir sayı hex olarak ekrana yazdırılmış oluyor.
key_table .text "0123456789abcdef" ;basılması gereken tuş tablosu val_table .byte 0,1,2,3,4,5,6,7,8,9 ;tuşlara göre sayısal değerler .byte 10,11,12,13,14,15 line .byte 16 ;ekrana basılacak satır sayısı text1 .text " c64 turkiye hex-ascii dump program" .byte $0d .text " 10-may-2005 code: hades of ascraeus" .byte $0d,$0d .text "f1:next f3:prev. f5:new f7:exit" .byte 13,13 text2 .text " adres" .byte 0 text3 .text " hexadecimal memory dump ascii " .byte $0d .text " ===== ======================= ========" .byte $0d,0 temp_scr .byte 0,0,0,0,0,0,0,0 ;geçici saklama bölgesi .end