Bu sayfadaki yazılar
Sayfanın metni
Sayfa 14
eda RTS5 : 210 ; Hİ-RES GRAFİK RENK
DEK 223 BNELOOP2 224 RTS READY.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 15
Commodore 64'ünüzün içinde üç adet, birbirinden bağımsız bilgisayar olsun ister miydiniz? İşte bu kısacık program, BASIC RAM'ını 12K'lık bloklar halinde üç ayrı bölgeye ayırıyor. Böylece birbirinden bağımsız üç adet 12K'lık COMMODORE elde etmiş oluyorsunuz. Durun canım... Hemen 12K bellek çok yetersiz diye sızlanmayın. COMMODORE dergisinde yayınlanan en uzun BASIC programlar bile 10K civarında. Birçok kullanımda usta programcıya 12K yeter de artar bile...
Bu program sayesinde bellekte aynı anda birbirinden bağımsız üç program bulundurabilir, bu programlar üzerinde ayrı ayrı çalışabilir, birbirlerini hiç etkilemeden yükleme ve kaydetme işlemlerini gerçekleştirebilirsiniz. Örneğin, yaptığınız bir programı COMMODORE 1'de saklarken, COMMODORE 2'de yeni yaptığınız altprogramları test edebilir ve aynı anda COMMODORE 3'te de disket directory'si veya başka bir programı bulundurabilirsiniz.
Programı yazabilmek için MDE'yi yükleyin ve çalıştırın. Sorulacak sorulara (Program adı: 3 x 12K, Başlama adresi: $0801, Bitiş adresi: $090E) cevaplarını verin. Programı yazıp kasete veya diskete kaydettikten sonra tekrar yükleyin ve 'RUN' ile çalıştırın. Ekranın temizlendiğini ve 'READY' mesajını göreceksiniz. Artık 12K'lık COMMODORE'larınız hazır durumdadır. COMMODORE'lar arasında geçiş yapabilmek için kullanacağınız komut: !COM veya !C'dir. Denediğinizde "1, 2 veya 3 giriniz." mesajı ile karşılaşabilirsiniz. Örneğin 3'e bastığınızda "COMMODORE 3 AKTİF DURUMDA." cevabını alırsınız. Herhangi bir işlem için başka bir bloğa geçmeniz gerektiğinde yine, !C komutuna başvurmanız gerekiyor. O halde hangi blokta bulunduğunuzu öğrenmek için !TEST veya sadece !T komutunu kullanın.
Şimdi de programımızın içeriğine bir göz atalım:
İlk bölümde BASIC komutu yürürlüğe koyma adresini belirleyen vektörü değiştiriyoruz. Böylece kendi dizayn edeceğimiz yürürlüğe koyma rutininde özel komutlarımızı tanımlama imkanı bulacağız. Bu bölümde ayrıca her bir bloğun ilk üç adresini sıfırlıyor ve ROM'daki NEW rutinine atlıyoruz.
154 ile 158 satırları arasında karşılaşılan karakterin "!" olup olmadığı kontrol ediliyor. Eğer "!" ile karşılaşmış isek bu bizim özel komutumuzdur, aksi halde ROM'daki yürürlüğe koyma rutinine atlıyoruz.
159 ile 163 Satırları arasında "!" karakterlerinden sonra gelen harf değerlendiriliyor. Eğer bu bir "C" ise !C komutu, "T" ise !T komutu yürürlüğe konuluyor.
164-175 satırları arasında !T komutu görüldüğü zaman yürürlüğe konulacak rutin bulunuyor. Burada hangi blok aktif ise test ediliyor ve ekrana bir mesaj yollanıyor.
177. satırdan program sonuna kadar ise !C komutu ile karşılaşıldığında yürürlüğe konulacak ana rutin bulunuyor. Bildiğiniz gibi COMMODORE 64'ün BASIC RAM'ını organize eden vektörler şunlardır:
$2B-$2C 43-44 BASIC program başlangıç vektörü $2D-$2E 45-46 BASIC prg.bitişi/Değişken başl.vek. $2F-$30 47-48 Değişken bitiş vek./Boyut başl.vek. $31-$32 49-50 Boyut bitiş vektörü $37-$38 55-56 BASIC RAM sonu vektörü
Bu rutin çağrıldığı zaman önce hangi blokta ise o bloğa ait yukarıdaki vektörleri tabloya kaydediyor. Böylece bir daha çağırıldığı zaman bu vektörlere eski değerlerini yükleyebilecek ve sanki hiçbir şey olmamışcasına görevine kaldığı yerden devam edebilecektir. Sonra bizim tercihimizi (1, 2 veya 3) alarak tablodan vektörlere ait yeni değerlere ulaşıyor. Bu değerleri vektörlere yerleştirdiğimizde herşeyin hazır olduğuna dair bir de mesaj yollayarak rutin sona eriyor. İşte hepsi bu kadar...
Programın Assembler Listing'ini inceledikten sonra tablolarda yapacağınız uygun değişikliklerle BASIC RAM'ı 2 x 18K veya 4 x 9K yapabilirsiniz değil mi?
İyi kullanımlar... □