Commodore sayı 52, sayfa 21

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 21

$6000 Adım 3:

IRQ'nun kesilmesi

6001 LDA # $28 6003 STA $0314 6006 LDA # $60 6008 STA # 0315

IRQ rutininin alçak baytı IRQ vektörü (alçak bayt) IRQ rutininin yüksek baytı IRQ vektörü (yüksek bayt)

Adım 1: 600B LDA # $F8 Yazı ekranının bittiği raster satırı. Bu satırdan itibaren satır siyah olmalıdır. 600D STA $DO12 Raster registerinin alçak baytına yazılır. 6010 LDA £DOl1 6013 AND # $7F

Raster satırının yüksek baytı 0111 1111 sayısı 7. Bit'i temizler Değer geri yazılır. Böylelikle IRQ'yu başlatacak Raster satırı belirlenmiş olur.

6015 STA $DOL1

Adım 2: 6018 LDA # $81 Bu sefer 1000 0001 sayısı ya- zılır (Raster Interrupt'ı için) STA $DOLA Bazı başlangıç değerlerinin belirlenmesi: 601D LDA #$00 Siyah rengi (kodu 0) 601F STA $DO20 Çerçeveye yazılır. 6022 LDA # $04 Bant kalınlığı belirlenir

6024 STA $02 6026 CLI IRO kapatılır. 6027 RTS Hazırlık aşamasının sonu.

Bundan sonra Interrupt'larda bizim $6028'den itibaren yazacağımız program çalışacaktır. İlk önce Interrupt'ın VIC-II-Chip'inden mi, yoksa mikroişlemciden mi kaynaklandığı araştırılır:

6028 LDA $DO19 Eğer bu adresdeki 7. Bit “*1”” değerini almışsa İnterrupt geliyor demektir. Değer geri yazılır.

602B STA $DO19

60Z2E BMI $6037 Eğer VI-IRO ise program

$6037'ye atlar. CIA-IRQ durumu:

6030 LDA $DCOD Interrupt kontrol regis- teri temizlenir.

6033 CLI IRÇ'dan çıkılır.

Bu şekilde mikroişlemcinin Interrupt'ları arasına bizim yazacağımız VIC Interrupt'ları yerleştirilebilir.

2?

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