Bu sayfadaki yazılar
Sayfanın metni
Sayfa 17
POKE 43,0 POKE 44,192 POKE 2048,255
Bu komutlardan ilk ikisi, normalde $0801 (2049) adresinde bulunan BASIC programının başka bir adreste bulunduğuna inandırmaktadır bilgisayarınızı, (Örnekte 49152). Son komut ise neden bilgisayara eklendiğini hiçbir zaman anlayamadığım bir özellikten yararlanmak için kullanılır: Eğer BASIC başlangıç adresinin bir eksiğinde 0'dan farklı bir değer varsa, RUN komutu programınızı çalıştırmaz. Neyse ki bu adreslerin işlevlerini sadece kırıcılar değil, biz de biliyoruz. Böylece, turbomuz çalışmaya başlamadan önce bu adreslerin değerini normale çevirirsek acemi kırıcıların işini bozmuş oluruz. (Biz bu adreslerin düzeltilmesi işini Kernal'a bırakacağız gene de.) Biraz daha deneyimli programcılar, klavyeden girilen, veya program satırlarında bulunan komutların Kernal'a $0073 (115) adresinde bulunan bir kısa programcıkla iletildiğini bilirler. Tabi ki bu bölüm RAM'de yer için, üzerinde yapılacak ufak bir değişiklikle, klavyeden girilen komutları işletime sokup, BASIC'e ait olanları ciddiye almaması sağlanabilir. Dergimizin ilk sayılarında yayınlanan bir program bu işi yapmaktaydı zaten. Ama, bu numarayı da öğrendiğimize göre, bu programın artık işe yaramayacağı açıktır. Turbobaşında Kernal'da bulunan başka bir rutine sıçrayarak bu yöntemi kullanmayı deneyenleri de hayal kırıklığına uğratabiliriz. Bütün bunlara rağmen, turbo koruma programımızın gücü üç-dört adresin değerini düzeltmekten gelmiyor. Bu turbonun asıl özelliği, en zor şartlarda dahi bu adresleri düzeltmesini sağlayacak olan kısmı çalıştırabilmesi. Normalde, oto-run programların kullandığı adresler, yeterince etkin bir şekilde Turbonuzun çalışmasını sağlayamazlar (Bu geçen sayıda verdiğimiz turbo için de geçerli). Çünkü, programı kasede kaydetmeden önce, bellekteki asıl yerine kopyalama zorunluluğu vardır ve yeterince güçlü adresler, belirlenen adrese, kasede kayıt yapılmadan önce sıçranılmasını sağlar. Fakat, C-64 KERNAL'ını yeterince inceleyenler bilirler ki, bir programı yükleneceği adrese taşımadan da kasede veya diske kaydedebilirsiniz. Fakat böyle bir rutin yazmanın bedeli, Jsr $FFD8 komutuyla yapabileceğiniz işi çok daha fazla komutla yapmaktır. Hatta “Press Record & Play on tape” mesajını yazdıracak rutin olan $F838 adresine bile sizin sıçramanız gerekecektir. Bu rutin için kullanmanız gereken iki ayrı adres daha vardır: $F76A ve $F67C, $F76A adresi, program adının, başlangıç ve bitiş adreslerinin ve yüklenecek olan data tipinin (Basic, Makine dili, vb.) bulunduğu kayıt başlığını (header) kasede kaydeder (program yüklenmeden önce başlık kısmı yüklenir ve sadece datalardan oluşan ikinci kısmın nereye yükleneceği gibi bilgiler buradan elde edilir). $F67C adresindeki rutin de başlık kısmını kaydetmeden, belirtilen alanı kasede kaydeder. Başlık ve data kısımlarını ayrı ayrı kasede kaydedebildiğimize göre, programın $02A7 adresine yükleneceğini bildirdikten sonra, $CD40 adresindeki programı ve koruma kısmını kasede kaydedebiliriz. Bu sayede, programınızın kayıt öncesi çalışma ihtimali tamamen ortadan kalkacaktır. Bu kayıt işlemini yapan rutin aşağıda gördüğünüz gibidir:
5 LDA #$01 5 CC35 TAX CC36 TAY ., CC37 JSR $FEFBA ., CC3A LDA #$10 CC3CLDX #SDA ., CC3E LDY #$CD ., CC40 JSR $FEFBD 5 CC43 LDA #$A7 3 CC45 LDY #$02 ., CC47 STA $Cİ ., CC49 STA $C2 CC4B LDA #$56 LDY #$04 ., CC4AF STA $AE ., ÖC51 STA $AF CC53 JSR $F838 .,CC56 LDA #$03 ., CC58 JSR $F7GA ., CC5B LDA #$40 ., LDY #$CD CC5F STA $CI ,,CC61 STY $C2 ., CC65 LDY #$CE . CC67 STA $AE ., CC69 STY $AF ., CC6GB JSR $F67C
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 16
VEDAT HALLAÇ
Hepinize merhaba, 64'çüler! Bu sayıda da, teyp turbosu yaratmanın inceliklerini açıklamaya devam ediyoruz. Hatırlayacağınız gibi, geçen sayıda ekranı kapatmaya ihtiyaç duymadan yükleme yapabilen basit bir turbo programını satır satır incelemiştik. Aslında bu turbonun tek özelliği açık ekranla yükleme yapabilmek değil, fakat diğer özelliklerinin kullanılması gelecek sayıdan başlayarak anlatacağım. Bu sayıda daha öncelikli bir konu olan turbo korumalarından söz etmek istiyorum. Şu anda piyasada bulunan birçok turbo kolay yollarla kırılamayacak kadar iyi korunmuştur. Fakat bu turbolar -belki de nasıl çalıştığı anlaşılmasın diye- pek piyasaya dağıtılmaz. Yani kendi programınızı korumak için tamamen kendinize güvenmek zorundasınız. Ama yeterince kaynak kitabınız yoksa, basit kırma yöntemlerini engellemek için bile bol miktarda ter dökmeniz gerekir. Bu sebeple, “Teyp Turboları” yazısında, turbo koruma yöntemlerine de değinmek istedim. Aslında, bu konu biraz “modası geçmiş” bulunabilir. Çünkü herkesin elinde dolaşan kırıcı kartuşlar, ne yazık ki program kopyalanmasını çok kolay hale getirdi. Fakat, günlerce uğraşarak yarattığınız bir turbonun meraklı bir programcı tarafından iki saniyede kırılmasını görmektense, bu yazıya birkaç dakikanızı ayırmayı tercih edeceğinize eminim. Şu anda çoğu turbo düşmanının, program kırmak için kullandığı standarda yakın sistemler vardır. Her kırıcı ilk olarak şu komutları verip programı yüklemeyi dener: