Commodore sayı 61, sayfa 20

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 20

Taşı1 Lda TransBaşı, Y Taşı2 Sta BasicBaşı, Y Dey Bne (TransBaşı—intronun bitiş, programınızın başlangıç adresi Basic Başı — $800)

Bu kadarını tabi ki siz de biliyorsunuz. Bu rutin sayesinde bir blokluk bilgiyi $0800'e taşırız. Yeri gelmişken söyleyeyim, $0801'den başlayan proğramları TransBaşı - 1 adresine yükleyin ve Transbaşı adresinin değerini O'layın. Her neyse, transferimize devame delim. Bunun için de programın kendini değiştirmesi metodunu kullanıyoruz gene. İnc Taşı2-42 Inc Taşı1 42 taşınan dataların bloklarını birer arttırdık. Şimdi de bellek sonu konirolü yapılıyor. Bne Taşı Bu kadar basit olduğunu tahmin etmiyordunuz eminim. Sadece transfer bloğunun değerinin sıfır olup olmadığını kontrol ediyoruz. Eğer değeri sıfır olduysa, TransBaşı'dan SFFFF'e kadar transfer tamamlanmış demektir. Y'yi tekrar sıfırlamaya gerek yok, çünkü son İşlemden zaten sıfır olarak çıkmıştı. Eğer tüm bellek transfer edildiyse, yapacak pek bir İşimiz kalmadı demektir. Sadece Lda # $37 Sta $01 komutuyla ROM'lar geri alıp, Clı ile interrupfları açıp, Jsr Jmp SAZAE ile de RUN işlemini yerine getirmek asıl programı hatasız olarak çalıştırmak için yeterli olacaktır. Eğer program kendi sonunu kontrol ediyorsa ($2D veya $AE adresinden) bu değerleri de birkaç Lda ve Sta ile eski haline getirmek sizin için pek zor olmaz herhalde, Transfer label'ıyla başlayan programı, üç JSR'nin arkasında eklediniz mi? Peki neden çalışmadı sizce? Evet doğru bildiniz. Bu rutin, asıl programı $0800 adresinden başlayacak şekilde geri Taşıyor ve bu arada da kendi üzerine de bol bol bay? yazarak sonunu hazırlıyor. Bunu engellemek için programı $0400'de çalışacak şekilde yazıp boş bir alana transfer edin: Trans1 Lda BoşAlan, Y Sta $0400, Y Jmp $0400 Üç JSR'nin arkasına eklemeniz gereken program: cık bu. Buradaki BoşAlan Transfer rutinini koyduğunuz boş alanın adresidir. Bu sayede Transfer, taşı-.

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