64'ler sayı 15, sayfa 48

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 48

Komutun değişkenliklerine gelince ilk ssss - eeee adres aralığını ikinci ssss - eeee aralığına taşımak istediğinizde, önce ikinci dilimdekilere dddd başlamak üzere yukarıya taşır, sonra ilk dilimi ikinci aralığa yerleştirir.

Komutun kullanılımını göstermek için 64'ler mon.'u hafızanın başka bir bölümüne Normal durumda 64'ler mon. $C000 - $CFFF daha ilerde anlatacağımız TAŞIMA komutu ile önce doğru bölüme yerleştirmemiz gerekir. T C000 CFFF 6000 64'ler mon.'un son üç sayfası 3 x 256 bayt, sadece DATA'dan oluştuğundan sadece ilk on üç sayfayı taşıyacağınız bölmeye yerleştirmek kafidir. N 6000 6D00 C000 CFFF 6000 Bu komut yeni programın 13 sayfasını tarıyarak eski programın referanslarını gerektiği gibi değiştirmektedir. Bir başka örnek bu komutun normal kullanımını iyice açıklamaya yardımcı olacaktır. adresleri arasında bir programınız olduğunu ve $1300 adresine 16 bayt yerleştirmek istediğimizi düşünelim. Bu son 256 bayt'ın hafızada daha ileriye kaydırılması demektir. Bunu şöyle yapabiliriz; N 1000 13FF 1300 13FF 1310 T 1300 13FF 1310 y Değiştirmek istediği her referansı ekrana dökmesi, hafızanın herhangi bir bölgesindeki referanslara bakmak için 64'ler mon.'u kullanabileceğinizi gösterir. Örneğin 0 ve 1 deki herhangi bir referansı bulmak için aşağıdaki komutu yazmak yetecektir: N ssss eeee 0000 0001 0000. O - Güvenlik nedeniyle, kontrol 64'ler mon.'a geçtiğinde yada herhangi bir komut onunla birlikte uygulandığında, 64'ler mon. kendiliğinden KERNAL ROM'a bağlanıp INTERRUPT vektörünü, normal INTERRUPT ROUTINE'ine RESET eder. Bununla birlikte, herhangi bir nedenden dolayı, örneğin 64'ler mon.'un içinden çalışan bir müzik programı istenmezse O komutuyla korumayı sağlıyabilirsiniz. Aç-Kapa (On, Off) anahtarı gibi çalışır. P sayacının belirteceği adresten başlamak üzere bir programı işleme koyar. P ssss - Bir programı ssss adresinden itibaren işleme koyar. Bu komut bir makina kodu programı, 64'ler mon.'dan yavaşlatılmış işleyişini izlemenize olanak verir. Her komut uygulandıkça, önce komutun kendisi ve çeşitli registerlerin o andaki durumları ekrana dökülür. Ve bir tuşa yada SHIFT tuşuna basılıncaya kadar bekler. SHIFT tuşuna bastığınızda program normal hızıyla çalışmaya başlar. Bu komut rutinlerinizdeki hataları ayıklamak için çok iyi bir yol gibi görünmekle birlikte, ayrıca da yeni başlayan biri içinde komutların çeşitli register, bilhassa STATUS REGISTER üzerine etkilerini incelemesine olanak tanıdığı için çok kullanışlıdır. Ayrıca programın işleyişi için hangi tuşlara basmanız gerektiğini de göstermektedir. Eğer bir dallanma komutu

(branch instruction) ekrana dökmekteyse R tuşuna basarken, bu uzun beklemeli LOOP'lar nedeniyle zaman kaybetmenizi önler. İşlem rutini bir JSR komutuyla karşılaştığında çeşitli seçenekler vardır. Subroutine adresi KERNAL ROM'da ise ($F000 - $FFFF) routine kendiliğinden işleme girer; Tabii siz ayrıntılarıyla incelemek için bir tuşa basmadıysanız. Eğer subroutine adresi KERNAL sınırları dışındaysa, program sizin routine'in her komutunun işlemesini istediğinizi varsayar. Eğer bu komutların hızlı akışını sağlamak isterseniz D tuşuna basmanız gerekmektedir. Register'lerin dökümü ve DISASSEMBLING işlemi (programın yürüyüşünü) çok yavaşlatırsa yada printing sırasında iki program birbiriyle karıştırırsa S tuşuna basarak kurtulabilirsiniz. Bu durumda bile program bir tuşa yada SHIFT tuşuna basmanızı bekleyecektir. SHIFT tuşuna basarak akışı hızlandırsanız bile yine de normal makina kodu hızından 500 kez daha yavaş olarak çalışacaktır. Tekrar S tuşuna basarak komutların dökümünü başlatabilirsiniz. C ssss eeee ssss eeee dddd - Bu komut tek bir fark dışında N komutuyla tamı tamına aynı işi yapar. Normal olarak yeniden yerleştirme rutin bulduğu tüm geçersiz opcode'ların dökümünü yapar. Bununla birlikte, bu rutini sadece hafızanın bir bölümündeki referansları bulmak için kullanıyorsanız ve programınızda geniş aralıklarla DATA blokları varsa, tüm geçersiz bayt'ların tek tek bulunması ve ekrana dökümü çok zaman alır. Oysa C komutu sadece bulunduğu referansları yazar. R - Bu komut, Accumulator'un, X register'in, Y register'in, Stack Pointer'in, Program Counter'in, Status Register'in, IRQ vektörünün ve NMI vektörünün bulunduğu durumları ekrana döker. Ayrıca Status Register hangi FLAG'in açılmış olduğunu göstermek için genişletilmiş olarak ekrana dökülür. Dökümü yapılan değerlerin hepsi normal ekran yazım yollarıyla değiştirilebilirler ve yeni değerler G, J yada P komutları kullanıldığında işleme girer. S “Dosya Adı” dd ssss eeee yada S “Dosya Adı” dd ssss eeee bk Bu bir bölümünü diskete yada teybe kaydetmenize olanak sağlar. Bölüm sonu adresi (eeee) kaydedilecek son bayt'tan bir fazla yazılmalıdır. İkinci kayıt seçeneği ise sıfırdan farklı durumlarda kullanabilmeniz içindir. İkinci adres BASIC içinde geçerlidir. T ssss eeee dddd - Hafızanın ssss - eeee adresleri arasında kalan bölümünü dddd'den başlamak üzere başka bir adrese taşır. U b... -Birden dörde kadar rakamlı hexadesimal sayıyı ondalıklı sayıya çevirir. V yada V “Dosya Adı” yada V “Dosya Adı” dd yada V “Dosya Adı” dd ssss - Bir programı VERIFY eder. Load'daki seçenekler gibidir. W bb ssss eeee - Hafızanın bu adresleri arasında bildireceğiniz bir bayt'ı yazar (hafızaya doldurur). X - BASIC'e geri döndürür. 1 - Bu komut sırasıyla DISASSEMBLING ettiğiniz programı yada hafızayı ekran yerine PRINTER'daki kağıda döker. Komut kapatma düğmesi gibi (On-Off) çalışır. İkinci kez bastığınızda normal hale yani ekrana döküm yapmaya başlar. Bu rutin PRINTER DEVICE sayısının dört ve ikinci adresinin de bir olduğunu varsayar. PROGRAM : MON Bununla birlikte, sizin PRINTER'iniz bu komutlara uymuyorsa $CCE6 adresindeki LDX #04 ve $CCF7 adresindeki LDY #01 komutlarını PRINTER'ınızın DEVICE sayısına ve ikinci adresine uygun olarak değiştirmeniz gerekir. Örneğin: 1520 PRINTER/PLOTTER kullanıyorsanız LDX #06 ve LDY #00 şeklinde bir değişiklik

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