Bu sayfadaki yazılar
Sayfanın metni
Sayfa 21
şu programı kullandınız: Ldy $27 Döngü Lda $07C1,y Sta $07CO,y
Dey Bpl Döngü Fakat programınız çalışmıyor. Ne gibi bir hata verir bu program, ve neden? 24. IRQ yükleyicinize bir şov programı eklediniz. Programlar harika şekilde çalışıyor, ve $02'nin değeri 100'den farklı olur olmaz $02'ye 0 verip BASIC RUN yapıyor. Bu turbo, programların onda dokuzunu çalıştırıyor, fakat özellikle BASIC programlarda hata veriyor ve programın tamamını LIST komutuyla göremiyorsunuz hatadan sonra... Turbo yükleyicinizde ne unuttunuz? 25. Beş blokluk kocaman bir program yazdınız, ve programın içinde bol bol Jsr, Jmp, Bne, Bpl komutları var. Fakat program çalışmadı ve programın en başında küçücük bir hata bulunduğunu fark ettiniz. Bu hatayı gidermek için bir Lda, bir Sta komutu koymanız yeterli. Fakat (büyük bir gaflet örneği göstererek) programı herhangi bir assembler kullanmadan, doğrudan monitör programınızı kullanarak yazdınız. Yani boğazınıza kadar batmış durumdasınız. Nasıl düzeltirsiniz programınızı? Evet sorular sadece (!) bu kadar. Bazılarının çok zor olduğunun farkındayım ama cevaplarınızı okurken zalim hocalarınız gibi davranmayacağımdan emin olabilirsiniz: Ne de olsa ben de bir öğrenciyim, halinizden anlarım tabii ki. Hadi bakalım bu kadar eğlence yeter! Çözün soruları da yollayın cevaplarınızı bana. Unutmayın, cevaplarınız 1 Eylül'den önce elimizde olmalı. Abonelik kazanmak istiyorsanız sarılın kalemlere. Sakın kopya çekmeyin ha. Hey! Sen gözlüklü! Önündeki kağıda bak bakayım... Ne biliyorsun arkadaşının doğru cevap verdiğini? Şaka bir yana önceki sayıları karıştırmak serbest tabii ki, Gelecek ay görüşmek üzere..
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 20
Selam kasetzedeler. Son üç aydır program kayıtları hakkındaki bilgilerinizi artırmak için bu satırlarda bir interrupt yükleyiciyi inceliyorduk. Yazımızı okuyanların hatırlayacağı gibi bu turbo sayesinde, açık ekranlı, yükleme yaparken bir de program çalıştırabilen, çok iyi korunmuş programlar kaydedebiliyorduk kasete. Bu ay daha da ilginç işlere girişecektim, ama önce yazıyı ne kadar anladığınızı anlamama yarayacak, bu arada bazılarınıza da dergimizin aboneliğini kazandıracak kısa bir sınav yapmaya karar verdim. Evet yanlış okumadınız. Sorulara doğru cevap verenler arasında beş kişi, bir yıllık dergi aboneliğine kavuşacaklar. Yarışmamızın kuralları oldukça
Vedat Hallaç basit: Aşağıda kimi çoktan seçmeli, kimi boşluk doldurmalı, kimi klasik yirmi beş soru var. Temiz bir kağıda, (soru numaralarını unutmadan) cevaplarınızı okunaklı harflerle yazın, ve 1 Eylül'den önce elimizde olacak şekilde dergimizin adresine yollayın. Yarışmayı kazanmanız için bütün sorulara doğru yanıt vermeniz gerekmiyor, sadece diğer arkadaşlarınızdan fazla yapmanız yeterli. Yani tüm sorulara cevap veremeseniz bile cevaplarınızı dergimize yollayın. Kim bilir, belki diğer arkadaşlarınız sizden az soru yanıtlayabilmiştir... İki ay sonra abonelik kazanan arkadaşlarla birlikte doğru cevapları yayınlayacağız. DİKKAT!! İki ay sonra yayınlanacak olan derginin yazılarının erkenden yazılması gerekiyor. Bu yüzden yalnızca Eylül başına kadar elimize geçen mektuplar arasında değerlendirme yapılacak!!! Unutmadan, cevaplarınızı çoktan seçmeli sorularda doğru seçeneğin harfi, boşluk doldurmalı sorularda yalnızca boşluğun içi, klasik sorularda ise tüm cevap olacak şekilde yazın. İşte sorularımız (Kolay gelsin...): 1. Hızlı yükleme yapabilmek için kasetteki bit sinyallerini, gerekli bayt oluşturacak şekilde düzene sokmak gereklidir. Bu iş için nasıl bir yöntem kullanırsınız? 2. Dergimizin ilk sayısında yayınlanan ESRA TURBO, güvenilirliğini arttırmak için nasıl bir yol bulmuştu? 3. Aşağıdaki baytlardan hangileri senkronizasyon baytı olarak kullanılabilir? A) $A0 B) $4A C) $0F D) $08 E) $2B 4. Kontrol toplamını hesaplamak için bizim turbomuzda nasıl bir yol kullanılmıştır? 5. Save vektörünü, turbomuzda da olduğu gibi kendi programımızı gösterecek şekilde değiştirdik, programımızın içinde ünite (device - araç) numarasını okumak için $.... adresinin değerine, dosya adının uzunluğunu bulmak için $.... adresinin değerine, dosya adını bulmak için $.... ve $.... adresli baytların alçak-yüksek bayt formatında sakladığı değere bakmamız gerekir. 6. LOADER (yükleyici)'nin normal hızla kaydedilmesi gerektiğini biliyoruz. Eğer turbo koruma derdimiz yoksa, nasıl bir sistem kullanarak LOADER'ın yükleyeceği alanı küçültebiliriz? 7. Teybe yollanan voltajın yönünü değiştirmek için (- 5V ise 0V, 0V ise -5V yapmak için) hangi adresli baytın hangi bitinin değerini ters çevirmeliyiz? A) $0002'nin 0. bitinin B) $0001'in 5. bitinin C) $DCOD'nin 6. bitinin D) $0001'in 3. bitinin E) $0002'nin 7. bitinin 8. $01'e $05 veya $04 vererek KERNAL ROM'u kaldırırsak, IRQ ve NMI interrupt'larını istediğimiz yere yönlendirmek için hangi adreslerdeki vektörleri kullanmamız gerekir? 9. CIA 1'in zamanlayıcı (timer) A'sının adresi $.... ve $.... adreslerinden ..... formatında okunabilir. 10. BASIC RUN komutunu makine dilinden gerçekleştirmek için nasıl bir yol kullanırız? 11. İyi korunmadığını tahmin ettiğiniz bir turboyu kırmak için aşağıdakilerden hangisini kullanamazsınız? A) Poke 44,1 B) Poke 43,12: Poke 44, 192 C) Poke 2049,1 D) Poke 2048,255 E) Poke 2048,12 12. Kernal, $.... adresinde bulunan adresteki alt programı kullanarak program satırında bulunan veya klavyeden girilen bilgileri okur. 13. $F76A adresinde bulunan KERNAL rutini ne işe yarar? 14. “Press Record & Play On Tape' mesajını yazdıran, ve teypte bu tuşlara basılmasını bekleyen rutin $.... adresinde yer almaktadır. 15. Bir turbo programını korumak için şu komutlarla başladınız: Jsr $E3BF Jsr $F453 Bu rutinlerin gerekli yerleri düzelteceğinden eminsiniz, ve bu komutlardan sonra içiniz rahat olarak yükleme rutinine giriyorsunuz. Fakat ortalıkta bazı kırıcılar için açık bir kapı var. Nedir bu açık kapı? 16. Bilgisayarın RESET'lenmesi halinde istediğiniz adreste bulunan rutine sıçramak için ne yaparsınız? 17. Bilgisayarın, tuşuna basılmadan NMI yaratabilmesi için aşağıdaki adreslerden hangi üçünün değeri ayarlanmalıdır? A) $DCOD, $DCOE, $DCO4 B) $DDOO, $DDO2 C) $DDOD, $DDOE, $DDOF D) $0000, $0001, $DDOD E) $DCOO, $DCO4, $DCOS 18. Bir programı kırmaya çalışıyorsunuz (Ne kadar ayıp!!) İncelediğiniz alanda karşınıza şu satırlar çıktı: 212 Lda $A9 Nop Ve M komutuyla bu bölgeyi incelediğinizde şu baytlarla karşılaştınız: $F4 $A9 $EA Bu rutinin hemen arkasından akümülatörün (A registerinin) değeri ne olur? 19. Bildiğiniz gibi Multi-Ice serisini engellemek çok zordur. Siz de bu kartuşu engelleyemiyorsunuz, ama kartuş kullanıcısına acı çektirmek istiyorsunuz... Ne yapardınız? 20. Sadece RESTORE tuşuna basıldığında istediğiniz adrese sıçranmasını istiyorsunuz. Yani RESET işlemi normal olarak gerçekleştirilmeli... Hangi adreslerin değeriyle oynamalıyız? 21. Diyelim ki sadece basic programları yüklemek üzere kullanıyorsunuz IRQ yükleyici programımızı. Baştan beri kaç blok yüklendiğini ekrana yazmak için basitçe (baytın değerini ekrana yazacak rutini nasıl yapacağınızı anlatmadan) nasıl bir yol izleyeceğinizi anlatın (hangi adrese, ne gibi bir işlem yaptıktan sonra ekrana yazma rutinine gönderirdiniz? - tek çözüm bu değil). 22. $D012 adresi ne işe yarar? 23. Yazı kaydırma anında, ekranda harfleri bir sola almak için