Bu sayfadaki yazılar
Sayfanın metni
Sayfa 54
Basic dilini kullanırken PEEK ve POKE komutlarının işleyişi ile haşır neşir olmuş olabilirsiniz ama bilgisayara ne yaptıklarını da tam olarak bilmeyebilirsiniz. Bu komutlar Basic programcısının makinenin içine direkt olarak ulaşabilmesini sağlarlar; hem donanıma hem de davranışlarını belirleyen makine dili programlarına.
Basic'te bir program yazarken yaptığınız, bilgisayarın sürekli belleğinde bulunan geniş bir makine dili programının daha sonra yorumlayacağı bir dizi direktif vermektir. Bilgisayar Basic dilini doğrudan anlayamaz, ama bu Basic yorumcusunun kontrolünde yazdığımız programları uygulayabilir. Basic, bilgisayarın RAM kısmının belli bölümlerini işlemlerinde bir müsvette kâğıdı gibi kullanır. RAM'in içeriklerini dikkatle manipüle ederek Basic dilinin beklenmeyen ve yararlı şekillerde hareket etmesini sağlayabilirsiniz.
Bilgisayarın belleğindeki adresleri temsil eden iki baytlık sayılarla çalışırız. Genelde Basic bu adresleri vektörler ya da pointer olarak kullanır. Pointer'lar RAM ya da ROM'da datanın depolanmış olduğu yerleri saptamakta ya da RAM'da belli bölgeleri belirlemekte marker (işaretleyici) olarak kullanılabilir. Basic pointer tarafından yöneltildiği adresi inceler ve orada bulduğu datayı kullanır ya da manipüle eder; ya da pointer'ı başka değerlere gönderip yönlendirmeleri yapar. Bir vektör başka bir makine dili programının ya da subrutinin başlangıç adresini temsil eder. Makine dili direktifleri genellikle bellekte depolandıkları sırayla uygulanırlar.
Bununla birlikte, vektörlerin kullanılması programcının direktiflerin uygulanma sırasını değiştirmesini sağlar. Bunu gerçekleştirmenin bir yolu uygulamanın sapması (branch) gereken subrutin ya da programın başlangıç adresini depolamaktır. Bu bir miktar Basic dilinin GOTO komutunu andırmaktadır.
MİKRO PROSESÖR
C-64 ve C-128 popüler 8 bitlik 6502 mikro işlemcisinin birazcık değiştirilmiş versiyonları olan 6510 ve 8502 mikroişlemcilerini kullanırlar. Bir programcının açısından 6510 ve 8502, 6502 ile işlevsel olarak özdeştir. Tek temel değişiklik, onlarda 0 ve 1 adreslerinin işlemci içine yerleştirilmiş bir donanım portu oluşturmasıdır. Bu şekilde referans materyalleri de birbirleri için geçerlidir. 8 bitlik bir mikroişlemci olarak 6510/8502 datayı bir seferde sekiz bit ya da bir bayt olarak kullanır. Her bit 0 ya da 1 olabildiğinden (elektronik olarak ifade edecek olursak “kapalı” ya da “açık”) bir tek baytta 256 değer olabileceğini kolayca hesaplayabiliriz (2 üssü 0 ile 2 üssü 7'nin toplamı). 256 sayılık bir alanın çok yararlı hesaplar yapmanıza yararlı olamayacağı açıktır. Programcılar bu sorunu baytları daha geniş bir sayı spektrumunu temsil etmek üzere bir araya getirerek çözüyorlar; 0-9 arasındaki rakamları daha büyük sayılar yaratmak üzere bir araya getirmeye benzeyen bir işlem bu. 6510/8502 işlemcisi bir seferde iki baytı manipüle edecek (16 bit) 65536 adres oluşturur. (0 adresi artı 2 üssü 0 ile 2 üssü 15 arasındaki üslerin toplamı) Sonuçta iki baytın bir araya getirilmesi 65535'tir. Adres-
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 55
Basic'te bir program yazarken yaptığınız, bilgisayarın sürekli belleğinde bulunan geniş bir makine dili programının daha sonra yorumlayacağı bir dizi direktif vermektir.
ler, düşük bayt ve yüksek bayt formatlarında depolanır. Yani ilk baytın değeri ikinci baytın değerinin 256 katıyla bir araya gelerek esas adres oluşturulur. Çeşitli yapalım. C-64'ün klavyesinden direkt modda şunu girin: PRINT PEEK(43) ya da C-128 modunda: PRINT PEEK(45) Her iki durumda da bilgisayarın 1 (düşük bayt değerleri) ile yanıt vermesi beklenir. Şimdi de yüksek-bayt değerlerine bakalım. C-64'de şunu girin: PRINT PEEK(44) Bir 8 almanız beklenir. Sonra da C-128'de deneyelim: PRINT PEEK(46) Bu da 28 vermelidir. Bu sayılar bilgisayarın belleğinde bir Basic programının depolanması için gereken başlangıç adreslerinin anahtarlarıdır. Bu adresin gerçek sonucunu hesaplayabilir (düşük-bayt değeri artı 256 çarpı yüksek bayt değeri) ya da bunu bilgisayara yaptırabiliriz. C-64'te şunları girin:
PRINT (PEEK(43) 4 256*PEEK (44) Yanıl 2049 çıkmalı, C-128'e gelin- PRINT (PEEK(45)4 256*PEEK (46)
7169 sonucunu Programcılar yüksek-bayttan genellikle numarası olarak söz ederler. Böylelikle bir 6510/8502, 256 sayfa belleğe adres edebilir. Makine dili programını kurcalamayı sürdürürseniz, ilk iki sayfa 0 ve 1'in mikroişlemci için özel bir önem taşıdığını fark edebilirsiniz. Hem C-64, hem de C-128, mikro- 5