Bu sayfadaki yazılar
Sayfanın metni
Sayfa 58
Basic yorumlayıcısının, bunu “DEF” komutu olarak yorumlayıp, ona ait token'ı (Basic yorumlayıcısının kendi komutlarını ayırt etmek için kullandığı kodlama) yerleştirmesi önlenecektir. Bu kurala uymadığınız takdirde, hata mesajı ile karşılaşırsınız. IF...THEN komutları ile kurulmuş şartlı programlama satırlarında, THEN komutundan sonra yeni komutlardan biri gelecekse iki nokta üst üste ile ayrılmış olması gereklidir. Yoksa, yazılımınız doğru olsa bile, hata mesajı ile karşılaşırsınız.
A) BAZI TEMEL KOMUTLAR
RESET-SID çipini, VIC çipini ve CIA çiplerini siler. Kernal'ın (işletim sistemi) sistem vektörlerini ilk değerlerle yükler. RESET komutu, her BASIC programın ilk komutlarından biri olmalıdır. © BASIC-Speech-Basic yardımcı programını terk etme ve normal BASIC'e dönme. Bu komutu verdiğinizde “are you sure?” (emin misiniz?) sorusu ile karşılaşırsınız. Cevap olarak 'Y' (= yes) verirseniz, komut yürütülür. Başka herhangi bir cevapta, komut yürütülmez ve normal işlemler devam eder. Şayet, bu komut bir program satırının içinde kullanılmışsa bu soru sorulmaz ve komut doğrudan yürütülür. Bu arada, BASIC'in LOMEM (BASIC işlemleri için kullanabileceği en düşük adresli hafıza) değişkeni tekrar $0800 adresine oturtulmaz ve programın yürümesi kesilmez, sadece yeni eklenmiş komutların yürütülmesi kesilir. HELP-Speech-Basic'e özel tüm komutları listeler. HELP* şeklinde bir kullanım, normal BASIC V2 komutlarını listeler.
B) DİSKET KOMUTLARI VE ÖZEL KOMUTLAR
KEY (n,str)- Fonksiyon tuşlarına bazı işlevler yüklemek. Bu komutu parametresiz kullandığımızda, tüm tuşlara atanmış işlevleri, ekranda edit edilebilecek bir şekilde görürüz. Eksi işareti “-” hiçbir tuşun tanımı sırasında kullanılamaz. Çünkü, bu işaret RETURN tuşunun kodunu ($0D) temsil etmektedir. Maksimum 15 karakterden oluşmuş tanımlar kullanılabilir. Speech-Basic'i ilk kullanmaya başladığınızda, programın kendisinden bazı tanımlar bu tuşlara yüklenmiştir. Bunlar:
F1 - RUN F2 - LIST F3 - PLAY F4 - HEAR:RECORD F5 - HELP/DISPLAY KEYS F6 - BLOCK
F7 - F8 - DISK-STATUS
Aslında, normal çalışma sırasında, F5 tuşunu komutu ile yüklemek oldukça uygun olur. Diyelim ki söz konusu değişikliği yaptınız ve Speech-Basic'inizin artık böyle çalışmasını istiyorsunuz. Yapacağınız tek işlem Speech-Basic'in yeni versiyonunu diskete saklamak. Bunun için:
BSAVE“SPEECH-BASIC”,8 FROM $0801 TO $1800
komutunu kullanın. MEM- O sıradaki hafıza bölüşümünü rapor eder. Rapor aşağıdaki örnekteki gibi görünür:
BASIC SOUND : $a000 to $fff8
:$1801 to $1803
KEYS : $0c6f to $0cef BLOCKS: $165b to $17db
DISK(str(,dv))- Disk kanalı ile ilgili işlemleri yürütmek. Bu komut parametresiz kullanıldığında, disket sürücüsünün durumunu ekranda gösterir. Eğer komut stringini kullanırsanız, bu disket sürücüsüne gönderilir. Fakat disket sürücüsünün mesajı alınmaz. Böylece istenirse, program içinde INPUT komutu ile hatanın veya durumun daha ayrıntılı işlenmesine olanak sağlanır. DIR(str(,dv))- Disketin içeriğini görme. Parametresiz kullanıldığında disketin tüm içeriği gösterilir. Gönderilen parametre, dosya adı ve tipine göre seçim yapılmasını sağlayan bir maskedir. Bu maskenin kullanımının detayları için “1541 Disket Sürücüsü Kullanım Kılavuzu'na bakın. İsmi verilmiş dosyayı “dv' numaralı aletten hafızaya yüklemek. Blok kullanılırsa, yükleme işlemi burada belirtilen adresten başlar. Şayet kullanılmazsa, dosya kendi belirlediği adrese yüklenir. Yükleme işlemi dosya bittiğinde veya (belirtilmişse) bitiş adresine varıldığında biter. BLOAD komutunun LOAD komutundan bir başka farkı ise bunun normal bir BASIC komutu gibi yürütülmesi. Yani LOAD'daki gibi yükleme işlemi bittikten sonra program baştan başlamıyor. Yüklenen dosyanın başlangıç ve bitiş adresini belirlemek istiyorsanız BLOCK 0'ı kullanabilirsiniz. BLOAD komutu daimi RAM'e yükler (zaten istese de ROM'a yükleyemez, burada belirtilmek istenen bütün yükleme işlemi sırasında RAM konfigürasyonunun kullanıldığı, yani $D000-$DFFF adresleri arasını yüklerken bile bilgisayar “crash' etmiyor, çünkü dosya buranın üç (!) kat altındaki RAM bölgesine yükleniyor). BLOAD komutunun kullanımına bazı örnekler vermek istersek:
BLOAD“s.test” BLOAD"s.test'',8 FROM $A000 BLOAD"s.test'',8 FROM $8000 BLOAD"“b.test”,8 BLOCK 31:REM blok talosunu yüklemek.
BSAVE “prog.ismi”'(,dv)(block)- Başlangıç ve bitişi belirtilen bölge verilmiş isim altında dv numaralı alete saklanır. Burada dosyaları ayırt edebilmeniz için bir önerimiz var: Diyelim ki aynı örnekler için ses bilgilerini ve bunların içindeki başlangıç ve bitişlerini belirtilen blok tablosunu saklamak istiyorsanız. Her iki dosyayı aynı isimle saklayın; tek farkla: Ses bilgilerinin başına 's.' (ses), blok tablolarının başına 'b.' (blok) ekleyin. Böylece, ileride oluşabilecek karışıklıkların önüne geçersiniz. BSAVE komutuna ait birkaç örnek:
BSAVE"s.test”',8 FROM $A000 BSAVE"“s.test'””,8 FROM $SA000, $8000 BSAVE"'b,test”',8 BLOCK 31:REM blok tablosunu saklamak
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 59
C) SES KONTROL KOMUTLARI
HEAR(SPEED n)- Örneklenen sesin aynı anda duyulmasını sağlar. Burada dört değişik örnekleme seviyesine karşılık olarak dört değişik ses şiddeti seviyesi ve dört değişik rengin belirlenmesi gerekmektedir. Renk değerleri $D020, ses şiddeti değerleri $D418 adresli registere yazılmaktadır. Dinleme işlemini bitirmek için boşluk tuşuna basın. RECORD (block) (SPEED n)- HEAR komutu ile aynı biçimde çalışır. Tek fark, dinlenen sesin aynı zamanda hafızaya da yazılmasıdır. Blok dolmadan, ses kayıt işlemi kesilmek istenirse RESTORE tuşuna basmak yeterlidir. Direkt moddayken bu işlem yapılırsa, kesilme adresi “stopped at xxxxx.” mesajı ile belirtilir. Örnekleme 1 ile 40 arasında değişen bir tamsayıdır. Burada 1, en hızlı kaydı, 40 ise en yavaş kaydı sağlar. Örnek olarak: RECORD RECORD FROM $A000 TO $D000 RECORD SPEED 1 RECORD BLOCK 1 SPEED 10
PLAY(block)(SPEED n)- RECORD işleminin tam tersi: içindeki bilgiler, ses bilgisi olarak yorumlanıp, karşılık gelen ses şiddet değerleri ve renk değerleri kullanılarak geri verilir. En yüksek geri verme hızı olarak “0” kullanabiliriz. Yani sesi kayıttan daha hızlı geri verebiliriz.
VOLDEF (n,(n,(n,(n))))
COLDEF (n,n,n,n) Dört değişik örnekleme seviyesine karşılık gelen ses şiddet ve renk değerlerini belirlemek. Digitizer devresinden elde edilen değerler doğrudan ses ve renk kanallarına yazılmaz. Bu işlemden önce gelen bilgiler, sizin bu komutlarla belirlediğiniz tablolar vasıtasıyla işlenir ve öyle kullanılır. İki değişik örnekle, VOLDEF ve COLDEF komutlarının parametrelerinin etkilerini inceleyelim:
VOLDEFO, 1,2,3:COLDEFO, 11,12, 15: REM alçak sesli ve gri tonları VOLDEFO,5,10,15:COLDEF7,2,5, 6: REM yüksek sesli ve çok renkli
D) DAHA İLERİ SEVİYEDEKİ KOMUTLAR
BLOCK n (block)(str)- Bir blok, 60 tanım olarak, başı ve sonu belirlenmiş ve bunlarla sınırlanmış hafıza bölgesidir. Birçok komutun kullanımında yeralan (block) parametresi ya “FROM başl.adr. TO bit.adr.” biçiminde, ya da FROM ve TO komutları kullanılmayarak yeni “başl.adr., bit.adr.” biçiminde kullanılabilir. Başlangıç ve bitiş adresleri genelde ayrı ayrı kullanılmadığı için BLOCK komutu geliştirilmiş ve her iki adresi tek komutta işlemeye olanak vermiştir. Bitiş adresi olarak tanımlanan sayının, başlangıç adresinden büyük ve $FFF9 adresinden küçük olması gerekir. BLOCK komutu parametresiz kullanıldığı zaman KEY komutu gibi tüm blok tanımlamalarını ekranda listeler. Blokların sayısı 0'dan 31'e kadar uzanabilir. Fakat 0'ıncı blok özel bir işlem için ayrılmış olduğundan bu blok'un kullanıcı tarafından tanımlanması mümkün değildir. Bu blok, en son yapılan BLOAD işleminin başlangıç ve bitiş adresini aklında tutar. 30 numaralı blok, fonksiyon tuşlarının başlangıç ve bitiş adresini, 31 numaralı blok, blok tablosunun bulunduğu bölgenin başlangıç ve bitiş adreslerini aklında tutar. Gerektiğinde bu bölgeler diskette saklanmak istendiğinde (gerçekten de saklamak gerekiyor bu bölgeleri) sözkonusu adresleri aklınızda tutmanız gerekmiyor, komut bu işi sizin için hallediyor. Fakat isterseniz 30 ve 31 numaralı blokları kendi istediğiniz biçimde yeniden tanımlayabiliyorsunuz. Şayet böyle bir işlem sonucu, sözkonusu değerleri kaybettiyseniz bunları MEM komutundan elde edebilirsiniz. Burada parametre olarak verilen str adlı string ise, sekiz karakteri aşmayan ve yalnızca blok tablosu istendiğinde ortaya çıkan, blokların içeriği ile ilgili kısa bilgileri saklasın diye bırakılmış bir açıklama bölgesidir. Blok tablosunu RESET'lemek için (tümüyle silmek, ilk ve temiz haline getirmek için): FOR n=1 TO 29:BLOCK n:NEXT n satırını vermeniz yeterlidir. Bu komuta ait birkaç örnek isterseniz:
BLOCK 1 blok'u silme BLOCK 1,$A000:REM bitiş adresi olarak $FFF8 kullanılır BLOCK 1,$A000,$8000:REM aşağıdakinin kısaltılmışıdır.
1 numaralı
BLOCK 1 FROM $A000 TO $8000 BLOCK | BLOCK 0:REM 0 numa- ralı blok'un içeriğini saklamak BLOCK | BLOCK 0:REM 0 numa- ralı blok'un içeriğini saklamak” ve isimlendirmek. BLOCK | TO $8000:REM YANLIŞ!!!
map(x(y))(y)- Blok tablosunu edit edilebilir şekilde listeler. MAP komutunun arkasında yeralan parametre listesi sizde korku yaratmasın. Aslında parametreler göründüğü kadar korkunç değil, tam aksine LIST komutunun kullanımı ile olduğu gibi aynı bu parametrelerin kullanımı. HIMEM A- Basic için kullanılabilecek hafızanın sonunu (üst sınırını) belirliyor. Böylece, aynı zamanda ses bilgileri için kullanılabilecek alt sınırı da belirlemiş oluyoruz. 'A' değeri, o sırada hafızada bulunan programın son adresinden büyük ve $A000'dan küçük olmak zorundadır. HIMEM komutu yürürken CLR işlemini de yürütür. Örnekler: