Commodore sayı 70, sayfa 24

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 24

MOD'lar aracılığıyla BASIC'in bellekte nasıl durduğunu incelemekle başlayalım. Bir BASIC programı, 43-44 adreslerinde low-high (alçak-yüksek; $0801 için $01 $08 şeklinde) formatında bulunan adresten başlar. Bu adresten bir önceki adreste bulunan (genelde $0800) değer 0 değilse ne programınız çalışır, ne de NEW komutu işler. (Buradan sonra normalde olduğu gibi 43-44 adreslerinde $0801 olduğunu düşünerek adresleri buna göre ayarlayacağım. Diğer durumlar için biraz kafa yormanız yeterlidir.) $0801-$0802 adreslerinde ikinci satırın başladığı adres alçak-yüksek bayt formatında tutulur. Yani ilk satır $0801-$0812 arasını kaplıyorsa bu iki adres $0813 adresini gösterir. $0803-$0804 adreslerinde satır numarası alçak-yüksek bayt formatında tutulur. Bu sebeple satır numaralarınız 63000'lere kadar çıkabilir. $0805 adresinden sonra BASIC programınızın baytlarına rastlayabilirsiniz. Ama komutlar özel olarak kodlanarak saklanır burada. Yani PRINT komutunu yazıp $0805'ten sonrasını incelerseniz, PRINT'in ASCII kodu olan $50, $52, $49, ...'ya rastlamazsınız. Bunların yerine $99 kodlu tek bir bayt PRINT'i temsil eder. Satır sonunu belirtmek için bir adet $00 kullanılır. İkinci satır bu $00'dan sonra başlar ve aynı yapıya sahiptir. Bu zincirleme liste $00 $00 $00'a rastlanana kadar devam eder. Bu üç sıfır, BASIC programının sonunun geldiğini bilgisayara bildirir. Yani bir satırın yapısını özetlersek: 1. ve 2. bayt: Sıradaki satırın bellekteki yeri. 3. ve 4. bayt: Satır numarası. 5. bayt ve sonrası: BASIC programı ve kodlar. Son olarak da bir adet (son satıra üç) $00. İsterseniz her şeyi bir de örnek üzerinden inceleyelim. Örneğimiz iki satırdan oluşuyor: 10 REM PROGRAM-I 20 PRINT “PROGRAM-I” Programın bellekte nasıl durduğunu görmek için bir göz atın isterseniz. Gördüğünüz gibi ilk iki bayt $0811 adresini gösteriyor ($11 $08). Yani ilk satır $0810'da bitiyor. Ve ilk satır numarası 10 ($0A $00: $000A — 10). Daha sonra REM'in kodu olan $8F geliyor. Bir boşluktan ($20) sonra PROGRAM-I'in ASCII kodları ($50 $52 $4F $47 $52 ...) yer alıyor. Ve $0810'da yer alan $00 ile satır sona eriyor. Aynı yapıyı ikinci satırda da gözlüyoruz. Üçüncü satır adresi olarak $0822 gösteriliyor, satır numarası 20. $0815-$0821 arasında gerekli BASIC kodları yer alıyor. $0821 adresinde yer alan $00 satırın sonunu belirtiyor. $0822 adresinde bulunan $0000 adresi ($00 $00) BASIC programının bittiğini gösteriyor.

Teknik bilgi yeter!

Yapacağımız koruma işlemi aslında daha önceleri de kullanılıyordu. Özellikle SIMONS' BASIC'de istediğiniz satırların başına DISAPA (argo DISAPPEAR — yok ol) yazdıktan sonra, direk modda SECURE 10 yazarak bu satırların satır numarası dışında yok olmasını sağlayabilirsiniz. Ama bu satırları geri almanın yolu yoktur. Gizlenmiş bir satıra bakarsanız (demin anlattığım sistemle) ilk baytının $00 olduğunu görürsünüz. Yani bilgisayar

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