Commodore sayı 64, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

Y'de bulunuyor. Ve biz $D012'nin değeri Y'ye eşit olduğu sürece beklemede kalıyoruz.) ve ilk iş olarak demin hesapladığımız değeri $D011'e yazarak DMA satırını bir aşağı alıyoruz. Aslında bu program, benim tembelliğimden dolayı tam olarak çalışmıyor. Yani 1 satır kaydırılması gerekirken, beş-altı satır kaydırıyor. Çünkü $D012'nin değerini doğrudan doğruya ele aldığımızda, DMA sadece bir satır kaymıyor. İlk olarak $38 gibi kontrolsüz (ve şu anda hesaplamaya üşendiğim) bir raster satırından başlıyor ekran. Oysa, $D012 değerine CLC ADC $07 komutlarıyla 7 eklesek ve AND, OR işlemlerini daha sonra yapsak, ilk DMA satırı tam olarak $34 raster satırına denk gelecekti ve bir satır kaydırmak istediğinizde, ekran bir satır kayacaktı. Program çoktan baskıya gittiği için bu hatayı düzeltmeyi size bırakıyorum. Programımıza geri dönelim. Bu $D012'yi $D011'e taşıma işlemi $FE'de belirtilen kadar satır yapıldıktan sonra, ekranın 9. satırını sabit bir noktaya getirecek olan rutine giriş raster satırını belirliyoruz. Oynayan satır sayısı sekiz olduğuna göre, 88 - 64 = $40'ı $FE'nin değerine ekliyor, bu değeri de interrupt'a giriş raster satırı olan $2E'ye ekliyoruz. Bu hesapla yaptığımız iş $FE'de belirtilen miktar kadar kaymış olan ekranın sekizinci satırının son pikselinin, raster satırı olarak yerini belirlemek. Bu sayede, bu noktadan başlayarak, dokuzuncu satırı belirli bir noktaya kadar kaydırabiliriz, ama önce ikinci interrupt'un programına bir bakın...

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