Commodore sayı 68, sayfa 23

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 23

Vedat Hallaç herkese merhaba. Geçen ay bitirdiğim yazıya, yaptığım testin cevaplarını vererek abonelik kazanan arkadaşların adlarını açıklayarak devam ediyorum. Ama büyük bir ihtimalle bu aydan sonra bu köşeyi göremeyeceksiniz. Bugün Eylül'ün ikisi ve bu günden sonra elime geçen cevapları değerlendirmeye alamayacağım. Cevapları geç yollayan arkadaşlara, gelecekte olabilecek yarışmalarda başarılar dilemekten başka yapabileceğim bir şey yok. Neyse, sözü fazla uzatmadan (oldukça zor olan) soruların cevaplarına geçelim: 1. İlk iş olarak 0 ile 1 bitlerine karşılık gelebilecek sinyaller bulmalısınız. Bu sinyaller, birbirinden ayırt edilebilecek kadar farklı uzunluklara sahip olmalılar. Daha sonra, bir dizi sıfır arasına sadece bir adet bir biti yerleştirilmiş bir bayt kullanarak teypten gelen sinyallerin bayt senkronizasyonunu yaparsınız. Bu senkronizasyon baytlarının hemen arasına bir kontrol baytı koyarak tam senkronizasyonun tutup tutmadığını kontrol edersiniz. Bundan sonra teypten okuduğunuz her sekiz biti bir bayta yerleştirip belleğe yazabilirsiniz. Ne yalan söyleyeyim bu soruda tam olarak ne istemiş olduğumu ben de anlayamadım. Bu sebepten, bayt okunabilecek herhangi bir cevabı doğru saydım. 2. Esra Turbo, demin anlattığım senkronizasyondan hemen sonra dokuzdan geri sayarak her baytı kasettekiyle kontrol ediyordu. Eğer burada herhangi bir hata çıkarsa, programın geri kalanı yüklenmiyordu. 3. D şıkkı. Bu soruyu sorarken bir hata yapmışım: “Aşağıdakilerden hangileri” yerine “Aşağıdakilerden hangisi” demem gerekirdi. Burada affınıza sığınıyorum ve konuya yeterince hakim olanların bu hatayı hemen yakalamış olduğuna inanıyorum. Doğru cevap tabii ki D şıkkı olan $08'dir. Çünkü yalnızca bu baytın içinde bir tek 1 biti bulunur. 4. Programın başlangıç ve bitiş adresleri yazıldıktan sonra yazılan her bayt, başlangıçta $00 değerini taşıyan $FB adresinin değeriyle EOR'lanıyor. Yani $02, $02, $05 yazmaya kalkarsanız $FB'nin değeri, $01, $03, $06 olarak değişir ve kontrol toplamımız $06 olarak yazılır teybe. 5. $BA: device (ünite) numarası. $B7: dosya adının uzunluğu. $BB,$BC: dosya adının bulunduğu adresler (alçak-yüksek bayt formatında). 6. Eğer kasede kaydedilecek dosyanın adının uzunluğunu 16 değil de 116 olarak verirsek, 16 harflik isimden sonra yüz baytlık program da dosya adıyla birlikte kasede kaydedilir. Böylece $0351'de başlayan bir programı dosya adıyla birlikte kaydedip, $02A7'deki programı da dosya olarak $0300'den $0351'e kadar olan bölgeyi kaydetmemize gerek kalmaz. Fakat bu soruda bir baskı hatası yüzünden “Loader'ın yükleneceği” kısmı “Loader'in yükleyeceği” şeklinde çıkmış. Bu yüzden bu soruyu iptal ediyorum. 7. D ve B. Voltajın yönünü değiştirmek için $01 adresli baytın 3. bitini (ilk bite 0. bit dersek) ters çevirmek gerekir diye düşünmüştüm soruyu sorarken, ama ifade hatası yüzünden sorunun cevabının B şıkkı da olabilir. Bu yüzden her iki cevap da doğru sayılıyor. 8. $EFFA,$FFFB: NMI interrupt vektörü. $FFFE,$FFFF: IRQ interrupt vektörü. 9. $DC04,$DC05: CIA 1 Timer A, alçak-yüksek bayt formatında. 10. RUN komutunu makine dilinden yapabilmek için ilk olarak $A659 adresine sıçrayıp (Jsr) ortalığı temizleyip BASIC'i sevindirmek, sonra da $A7AF'ye gidip (Jmp) RUN komutunu gerçekleştirmek gerekir. Ya da ANKARA'lı Onur Malkoç'un önerdiği gibi Keyboard Buffer'a R, U, N, RETURN kodlarını yerleştirip Buffer'da bulunan karakter sayısını 4 yaparsak, BASIC'e döner dönmez ekrana RUN yazılır ve komut işletilir. 11. C şıkkı. Doğal olarak, yüklenen BASIC programı $0801 — 2049 adresinden başlayacak ve sizin verdiğiniz değeri silecektir. 12. Kernal klavyeden girilen veya programda bulunan sıradaki baytı alabilmek için $0073 adresine sıçrar. Bu konuda değişik cevaplar geldi ama bu adreslerden hiçbiri BASIC programında bulunan karakteri okumaz. $FFE4, klavyede basılı olan tuşun kodunu (tuşa basılmıyorsa 0 değerini) A'ya koyarak geri döner. $FFCF ise INPUT komutu gibi davranır (Bu iş biraz program gerektirir tabii ki).

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