Commodore sayı 5, sayfa 71
Sayfanın metni

Sayfa 71

AD — PEEK(788) 4 PEEK(789) *256:PRİINT AD

Bu formül sonucunda elde edeceğimiz adres 59953 (SEA31) olacaktır. Bu adresi bir kenara not edin, çünkü normal rutinimizin sonunda ana bir JUMP yapmamız gerekecektir. Eğer bu sıçramayı yapmazsak sistem, keybodcrd'u tarayamaz ve sonuçta kilitlenir. Onun için kodumuzdaki son direktif şöyle olmalıdır:

JMP SEA31

Anlamıyorum diye sinirlenmeyin, bunları yapmaya başladıkça konu açılık kazanacaktır. Örnek olarak vereceğimiz programlar yeni başlayanlar için olacaktır.

Oluşturulur?

Eğer assembler'la interrupt oluşturacaksak şöyle kısa bir örnek verebiliriz. (Aslında interrupt'ları oluşturmanın hemen tek yolu makine dilidir. Ancak okuyucuların çoğunda monitör programı olmadığı, olsa bile kullanmanın zorluğunu düşünerek BASIC'e dönüştürülmüş örnek programlar vermeyi tercih ettik.):

MAKİNE DİLİ PROGRAM

(İNT 4 (M)) (Monitör programıyla yazılabilir) . SEl LDA $20 $C003 STA $0314 $C006 LDA #& $CO $c008 STA $0315 CLI $00 $C022 STX DO20STX $C025 DEX $C026 BNE $C022 $C028- JMP SEA3A

Programımızda $C020 kodumuzun başlangıç noktası, JMP $EA31'de son yönergemizdir. Bu, interrupt'larla çalışan yazılımlar oluşturmak için standarttır, ancak bazı programcılar bu işlemler sırasında başlangıç için bazı şeyler yapmak isteyebilirler. Bunun teknikleri üzerinde yerimizin sınırı ölçüsünde durmaya çalışacağız. Rutin bellekte 49152 ($C000) adresinde başlamaktadır. Burası BASIC INTERPRETER üzerine yerleştirilmiş bir RAM'dır. Her RAM bölgesi -BASIC ya da SİSTEM DEĞİŞKENLERİ ile çatışma olmaması koşuluyla- kullanılabilir. Bazı bölgeleri belirtelim: $C000(49152)'den $D063(53347)'a: Burası yedek AK RAM'dır. BASIC INTERPRETER üstündeki normal BASIC RAM'ından ayrılmış olduğu için BASIC'ten etkilenmez. BASIC RAM $800(2048)'den $9FFF(40959)'a: Kodumuz bu adreslerde BASIC RAM'ın üstüne yerleştirilecektir. Ancak korumazsak

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