Bu sayfadaki yazılar
Sayfanın metni
Sayfa 62
Müzikal BASIC
Benzer bir konfor da, C-64'ten alınmış olan synihesizer elemanı SID'ın programlanmasında görülüyor. Artık tüm müzik parametrelerinin DATA yığınları halinde SID'e POKE edilmesi gerekmiyor; bu iş için kolay anlaşılabilir bazı BASIC komutlarının kullanılması yeterli. Örneğin VOL komutu, sesin yüksekliğini ayarlıyor; SOUND komutu ile ses üreteçlerinden biri harekete geçiriliyor. Bu arada karşılık gelen parametreler aracılığıyla yalnızca frekansı değil, sesin süresini ve hatta yükselme ve sönmesini de belirlemek mümkün. Her ENVELOPE komutu ile, müzik enstrümanlarına ilişkin olası on ses eğrisinden biri tanımlanır. Darbe genişliği ve dalga türünün yanısıra attack, decay, sustain ve release (Yükselme, düşme, durma ve kaybolma) de aynı şekilde belirlenir. Olası on eğrinin her bi- Ti, başka bir ENVELOPE komutuyla aynı numaraya yeni bir eğri tanımlanıncaya kadar bellekte saklanır. C-128 açıldığı anda on eğrinin tümü, farklı enstrümanların ses yapısıyla birlikte önceden tanımlanmiş olarak hazır durumdadır: Piyano, akordeon, sirk orgu, davul, flüt, gitar, klavsen, org, ttompet ve ksilofon. Bunların yanısıra, müziğe yeni başlayanlar için bir sürü kullanılabilir ses efekti de bulunmaktadır. FİLTER komutuyla, SID'in ses yabancılaştırmaya yönelik tüm filtre olanakları kullanılabilir. PLAY komutu, zincirlerde saklanmış durumda olan noktaların otomatik olarak çalınmasını sağlar. Parametre olarak verilmiş olan zincirlerde, çalınacak notalar başta olmak üzere, eğri, oktav, volüm, ton kanallı ve filtre hakkında bilgiler içerilebilir. Notalar, adları verilerek (A,B,C,D,E.F,G) kolayca seçilebilir. Tabii, tek tek notalar, yarım nota indirilebilir veya yükseltilebilir. Ayrıca tam, yarım, dörtlük, sekizlik ve onaltılık notalar (istenirse her biri noktalı olarak da) yaratılabilir.
Kuyruk Kullanarak
Müzik PLAY komutu da interruptla kullanılabilir. Bunun anlamı, çalınacak notaların bir ses kuyruğuna, yani reserve edilmiş bir bellek alanına yerleştirilmesidir. İnterrupt (kesme) sırasında, işletim sistemi, ses verilerinin kuyrukta bekleyip beklemediğini tespit eder. Eğer böyleyse, ilk değer kuyruktan alınır ve çalınmak üzere synthesizer çipine (SID) aktarılır. Kuyrukta bekleyen diğer ses verileri birer sıra öne kayarlar. Sonraki kesmelerin her birinde, öngörülmüş ses süresinin dolup dolmadığı denetlenir. Eğer dolduysa, yeniden beklemekte olan ses verilerine dönülür ve bu oyun böylece sürer.
Daha önce de belirtildiği gibi, bu olayın tümü sistem interrupt'ı sırasında gerçekleşir. BASIC'in kendisi buna ilişkin hiçbir şeyin “farkına varmaz”. Onun tek yaptığı, kuyrukta daha boş yer olup olmadığını belirlemektir. Boş yer olması durumunda daha başka ses verileri de eklenebilir ve müzik otomatik olarak çalınırken program normal akışına devam eder. Ancak çalınacak ses sayısı çok fazlaysa, program durmak ve kuyrukta boş yer açılmasını beklemek zorundadır.
Çok kullanışlı ve verimli BASIC'inin varlığına rağmen, C-128'de de makine düzeyine erişmeyi gerektiren durumlar olabilir. Bunun için 128'de POKE, PEEK ve SYS kullanmak gerekmez. Bank-Switching ile açılıp kapatılabilen farkli bellek alanlarının varlığı, çoğu zaman, POKE, PEEK ve SYS komutlarının hangi bellek bankına git- Mesi gerektiği sorununu ortaya çıkarmakta. C-128 bu sorunu şayet basit bir yoldan çözüyor: BANK
63 komutuyla, istenen bellek bankı seçilebilir. Bu yolla tabii ki gerçek bir Bank-Switching gerçekleşmiyor (bir BASIC programı çalışmak: teyken, Basic çeviricinin daima açık olması gerekiyor), yalnızco BASIC, örneğin hangi bellek ban: kına bir POKE değerinin yerleştirilmesi ya da PEEK için verilerin han: gi bankdan kaynaklanması gerektiğini farkediyor.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 63
Makine Diliyle Bağlantı
Bu yolla isteğe bağlı olarak programa veya değişken belleğine POKE veya PEEK yapılabilir. İşletim sistemi ve BASIC 7.0 rutin: leri, “BANK 15“ten sonra SYS ile çağrılabilir. Bunun yanısıra, BASIC'ten yana, Bank 1 (Basic-çalışma belleği) ile diğer bellek bankları arasında oradan oraya yükleme yapabilme olanağı da vardır. Bunu layan komutlar, FETCH, STASH ve SWAP'tır. “Örneğin FETCH “2000, 50000, 4,35000“ şeklinde bir komut, 35000 adresinden itibaren 2000 Byte'ı bank 4'ten alır ve bu: nu 50000 adresinden itibaren BA-SIC çalışma belleğine (daima bank 1) yerleştirir. STASH, FETCH'- in tersi fonksiyona sahiptir: Belli bir sayıda Byte çalışma belleğinden alınarak diğer bir bellek bankına aktarılır. SWAP komutu, verilen bellek alanlarının iki bank arasında değiş tokuşunu sağlar. Bu üç komut, esas olarak bellek genişletmelerinin (RAM-Floopy) eklenmesi için düşünülmüştür. Bu yöntemle, bellekte 64 KByte'- ın iki katı kaplayan veri miktarları, bir Floopy ile hiçbir zaman erişilemeyecek bir hızla yönetilebil-
Monte Edilmiş
Makine Dili-Monitör
BASIC 7.0'ın sağladığı olanaklarla yetinmeyenler, MONİTOR komutuyla Basic'i terkederek ROM'- da bulunan dili monitör programına geçebilirler. C-16-Tedmon'dan yararlanılarak geliştirilmiş olan bu monitör programı, belleğin dökümü ve açıklanmasına yarayan alışılmış fonksiyonların ve bir disassemb-
Basic 7.0 ile Eklenen Komutlar
APPEND Veri eklemek için sıralı bir kütüğü açar. AUTO Otomatik olarak satır numarası verir. BACKUP Bir disketin tümünü kopyalar. BANK PEEK, POKE ve SYS için bellek bankını (bellek bölümünü) seçer. BEGİN...BEND Birden fazla Basic satırını tek bir öbek halinde kapsar.
BOOT CPİM'i disketten yükler ve başlatır. BOX Dikdörtgenler çizer. BSAVE İstenen bellek alanlarını diskete saklar. BUMP Yaratık çarpışmalarında Yaratık numarasını verir. CATALOG Disketin içerik listesini verir. CHAR Yüksek çözümlemeli grafiğin içine metin girilmesini sağlar. CİRCLE Daireler, elipsler ve çokgenler çizer. COLLECT Açık kütükleri siler ve disketi yeniden organize eder. COLLİSİON çarpışmasını belirler. COLOR Metin ve grafik için renk verir. CONCAT İki sıralı kütüğü birbiriyle birleştirir. COPY Bir disket kütüğünü kopya eder. DLEAR Disket ünitesine giden bütün kanalları kapatır. DCLOSE Disket ünitesine giden bütün kanalı kapatır. DEC On altı tabanlı bir sayının on tabanlı değeri. DELETE Programdan bir satır alanını siler. DİRECTORY Disket içeriğinin listesini verir (aynen CATALOG gibi). DLOAD Disketten bir program yükler. DOPEN Disket ünitesine kanal açar. DO...LCOP — Program döngüsü. LOOP daima DO'ya geri atlar. DRAW Noktalar koyar ve çizgiler çizer. DSAVE Bir programı diskette saklar. DS Disket sürücüsünün hatta durumunu belirtir. DS$ Floopy'nin hata durumunu açık metin olarak içerir. DVERİFY Diskte prorgm saklanmasını denetler. EL Bir hatanın ortaya çıkması durumunda satır numarasını içerir. ELSE Koşul yerine gelmediği takdirde, IF....THEN'de alternatif. ENVELOPE Synthesizer için eğriyi tanımlar. ER Ortaya çıkmış son hatanın kodunun verir. ERR$ Hata mesajını açık metin olarak verir. EXİT Bir DO...LOOP döngüsünün terkedilmesine yarar. FAST İki katı hız başlatır (2 MHz) FETCH İstenen bellek bankasından (RAM-Floopy) veri alır. FİLTER SİD için ses filtresi parametresini koyar. GETKEY Bir karakterin girilmesini bekler. GO64 C-64 moduna geçilmesini sağlar. GRAPHIC Grafik modunu seçer. GSHAPE Bir zincirden bir figürü (shape) alır ve ekrana yazar. HAEDER Disketlerin formatlanmasında kullanılır. HELP Hata mesajından sonra hatanın bulunduğu satırı ekranda verir. HEX$ Ondalık sayıları on altı tabanlı zincirlere dönüştürür. İNSIR Bir zincir içindeki bir zincir parçasının pozisyonunu bildirir. JOY Joystick'in pozisyonunu denetler. KEY Fonksiyon fuşlarının doldurulmasını sağlar. LOCATE Grafik imlecini komunlandırır. MID$ Zincir parçalarına değer verilmesini de mümkün kılar. MONİTOR ROM'da bulunan makine dili monitör programını çağırır. MOVESPR Bir yaratığı ekranda hareket ettirir. PAİNT Yüksek çözümlemeli grafiğin bir alanını doldurur. PEN işık kalemini denetler. PLAY Bir zincire yerleştirilmiş bir nota dizisini çalar. POİNTER Bellekteki bir bir değişkenin adresini verir. POT Paddle'i denetler. PRİNT USİNG Formatlanmış sayı çıkışını sağlar. PUDEF PRİNT USİNG için yönetim karakterlerini tanımlar. RCLR Metin ve grafik için seçilen renk kodunu verir.
aaa