Plazma sayı 4, sayfa 55

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 55

Vice Monitörü

Bu kadar genel tanıtımdan sonra yukarıda bahsettiğimiz komutları Vice'da nasıl vereceğimizi inceleyelim. Bu bölümde örnek olarak hatalı bir kod ile başlayacağız. Daha sonra Vice debugger'ını kullanarak hatayı nasıl bulabileceğimizi göreceğiz.

- Örnek kod

Bir bahar akşamı cevval coder adayı Psychadelic/Granite yeni introsunu (Devil is My Friend adlı şaheser olacaktı) kodlamaya başladı. Tabii ki ilk olarak her introsunda olduğu gibi ekrana bir tane raster çizgisi koyarak başlayacaktı. Hemen aşağıdaki kodu yazdı. Birkaç ACME uyarısını atlatıp sonunda kodu derledi. Vice ile açtı. sys 49152... Ve hiçbir şey olmadı.

UYARI: BU KOD BİLİNÇLİ OLARAK HATALAR İÇERMEKTEDİR

” a !to "devil.prg", cbm *—-$c000

A Baslangic: jsr RasterIROHazirla Son:

sei

lda sta

#$7E£ $dc0d

lda ora sta

$d0la #$O1 $d0la

lda and sta

#$7E

lda sta

#$20 $d012

lda sta lda sta

$00 $0314 $el $0315

eli *—-$c100 IRORutini: inc $d019

ldx #$2 IRO gecikme dongusu: dex bne IRO gecikme dongusu

lda $d020 pha lda #$01 sta $d020

ldx $0a IRO gecikme dongusu2: dex bne IRO gecikme dongusu2

lda #$0e sta $d020

jmp

- Monitöre

giriş ve çıkış

Bunun üzerine Psychadelic hemen resetleyip bu sefer sys49152 demeden önce, Alt-M ile monitöre girdi (Linux Alt-H). Artık Debugger konsolu karşısında onun komutlarını bekliyordu.

Şekil 1. Vice Debugger Konsolu

- Breakpoint'ler

Hemen kendine sordu. "Kurduğum interrupt çalışıyor mu? Program interrupt rutinine ulaşıyor mu?" Bunu anlamak için $c100'deki interrupt rutininin başına bir breakpoint koymaya karar verdi. Bunun için konsola şu komutu yazdı: break c100

Ardından kodu çalıştırmak için debugger'dan çıkmaya gerek duymadı ve direkt başlangıç adresine atlama komutu verdi.

g c000

Program breakpoint'te durmadı ve çalışmadı. Psychadelic anladı ki interrupt rutinini doğru kurmuyor. Bunun üzerine programın başına breakpoint koyup interrupt rutinini hazırladığı bölümü tek tek incelemeye karar verdi.

break c000 g c000

İkinci komutu vermesiyle beraber program çalışmaya başlamak üzere c000'a atladı ve oradaki breakpoint'e yakalandı.

- Adım

adım ilerlerken registerları takip etmek z komutunu kullanarak adım adım komutları işletmeye başladı. Vice kullanıcı konsol penceresinde Enter'a her bastığında son debugger komutunu işletiyordu. Bu sayede ilk seferde z komutunu verdikten sonra her Enter'a basışında yeni bir Step-In komutu vermiş oluyordu. Bu komutlar sayesinde program satır satır ilerledi ve her defasında bir sonraki assembly komutunun işletildiğini gördü.

Klavyeyle gezinmek için ← ve → tuşları.