Commodore sayı 71, sayfa 13

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 13

gıç adreslerini ayarlamakla uğraşmak istemiyorsanız, hata mesajlarının her birinin uzunluğunu sabit tutan rutin adresleri, buradaki sırayı takip eder. Yani $A00C'de bulunan $A831-1 değeri END komu-

Alçak = 49172 AND 255 Yüksek = INT (49172/256) formüllerini kullanabilirsiniz.

PROGRAM ADI - PROGRAM - 3

00000 R, A: NEXT 00020 SYS 49152

00030

FOR TO 26:READ A:POKE 491521

A$>”HAZIR.”: FOR TO 5:POKE 41

NEXT

00040 01000

POKE 1,54: END DATA

169,0,133,95,169,160,133,9

6:REM KAYNAK BASLANGIC 2. VE 6.

SAYIDA 01010

SAYIDA

01020

SAYIDA 01030

BASIC ROM'unda değişiklikler yaparken de bu taşıma işinden yararlanabilirsiniz. İlk olarak $A000-$C000 arasını $A000'a taşırsınız (($58-$59)'a $C000 vererek). Daha sonra POKE 1,54 komutunu kullanarak eski ROM'u devreden çıkarırsınız. Artık ROM'da yapacağınız tüm değişikliklerin sonucunu anında görebilirsiniz. Mesela yukarıdaki program “READY.” yerine “HAZIR.” yazmak için neler yapmanız gerektiğini gösteriyor. BASIC ROM'da değişiklikler yapabilmek için genel olarak nerede neyin bulunduğunu bilmeniz gerekir. Kısaca baş kısımdaki komutların ve hata kodlarının yerleştirilme şeklini anlatacağım, ama asıl detaylı bilgiyi bir monitör programı kullanarak elde edebilirsiniz: $A093-$A127: komutların listesi. Komutun son harfi, gerçek değerinden 128 ($80) fazla olarak yazılır. $A00C-$A051 arasında bulunan rutin adresleri, buradaki sırayı takip eder. Yani $A00C'de bulunan $A831-1 değeri END komu-

DATA 76,191,163

DATA 169,0,133,90,169,192,133,9 1:REM KAYNAK BITIS

2. VE 6.

DATA 169,0,133,88,169,192,133,8 9 :REM HEDEF BITIS

2. VE 6

tunu işletecek rutinin adresini gösterir. Bu yüzden sırayı değiştirmeyin. Daha da önemlisi, kesinlikle tablonun toplam uzunluğunu değiştirmeye kalkmayın. Eğer bunu denerseniz, verdiğiniz ilk komutta sistemi ne kadar artistik bir şekilde göçertebileceğinizi öğrenirsiniz. $A129-$A19C: Fonksiyon isimleri tablosu. Fonksiyon isimlerinin son harfi gerçek değerinden 128 fazladır. Bu fonksiyonların rutin adresleri de $A052-$A07F arasında aynı sırayla tutulmaktadır. $A129-$A19C: Hata mesajlarının yazı dataları. Bu dataları değiştirerek Türkçe hata mesajlı, Türkçe komutlu bir BASIC yapabilirsiniz. Unutmayın; her hata cümlesinin son harfi normal değerinden

128 fazladır. Ama hata mesajlarını olduğu gibi değiştirdiğiniz zaman

(toplam uzunluğa dokunmadan) işiniz tam bitmiş sayılmaz, çünkü $A328-$A363 arasındaki tabloda, hata mesajlarının data başlangıç adresi yer alır. Yeni mesaj başlatmaya çalışın. $A364-$A389: Genel yazılar için harf datası. Mesela $A376'da: $0D $0A $A4 $00 bulunur. Baştaki ve sondaki $0D-$0A'lar satır başına gelinmesi için gereklidir. En sonda bulunan $00 ise mesajın sona erdiğini gösterir. ve sonrası, ROM'un genel işlemleri yerine getirebilmesi için gerekli rutinleri içerir (demin kullandığımız $AB1E gibi). Makine dilinin asıl tercih sebebinin çalışma hızı olduğunu söylemiştim. Ama tamsayılarla yapılan toplama-çıkarma işlemlerinden başka bir işlem yapmaya kalktığınızda canınızın çıkacağını da belirtmiştim. Mesela makine dilinde SIN(x) fonksiyonunu gerçekleştirmek imkansızdır. Ancak belli bir dereceye kadar yaklaştırma yapılabilir. Tabii ki bütün bu yaklaştırma işlemleri toplama, çıkarma, çarpma ve bölme işlemleri ROM'da yer almaktadır ama bu rutinler genel olarak floating point (yüzen nokta, yani ondalıklı sayı) aritmetiği kullanmaktadır. Bu yüzden ilk olarak öğrenmemiz gereken şey: Ondalıklı Sayı Aritmetiği Hepimiz onluk düzene alışkın olduğumuz için işe onluk düzenle ondalıklı sayılar anlatarak başlamak istiyorum: Ondalık düzende kullanılan herhangi bir sayı 1-10 arası bir sayı olan K ile 10^x'in çarpımı olarak yazılabilir. Örnek vermek gerekirse:

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