Bu sayfadaki yazılar
Sayfanın metni
Sayfa 53
İşletim sisteminin RUN-STOP tuşunu kontrol etmesini şöyle sağlayabiliriz:
IF PEEK(4)—99 THEN PRİNT “BASILDI”
DDR ile İlginç İşler:
DDR nedir ve ne tür ilginç işler yapar? Birçok iş yapabilir. Prosesör portu esas olarak CIA'lar tarafından kontrol edilen Giriş/Çıkış Portlarıdır. Bu portun altı hattı vardır. Bunlardan üçü Dataset için ayrılmıştır. Bu hatlar hem giriş hem de çıkış olarak kullanılır. Hatların hangi yönde kullanıldıkları prosesör portu için DDR (DATA REGISTER “Veri Yönlendirme Sicili”) tarafından belirlenir: Adres 0. Adresin içeriğini BİT düzeyinde inceleyelim:
BIT3: Veri yönü dataset yazma BIT4: Veri yönü dataset tuşlarının durumu BIT5: Veri yönü dataset motor durumu Bit değeri 0=GİRİŞ 1=ÇIKIŞ Dataset yazma ve dataset motor durumu ÇIKIŞ'tır. Bunlar kasete yazma durumunda iken dataseti etkilerler. BIT4 ise daha evvel de belirttiğimiz gibi Datasette bir tuşa basılıp basılmadığını kontrol eder.
Dataset'te Program
Kilitleme Teknikleri:
Eğer DDR'deki bitleri değiştirirsek ne olur? Aşağıdaki POKE komutu BIT4'ü bir ÇIKIŞ hattı haline getirir: POKE 0,PEEK(0) OR 16 Bu komut sayesinde ne elde edeceğiz? Üstteki komutu girmemizle birlikte artık BIT4 datasetteki tuşların durumunu anlayamaz hale gelecek. İşletim sistemi PRESS PLAY ON TAPE mesajı verecek. İstenileni yapsanız bile işletim size OK veya LOAD veya SAVE mesajı göndererek memnuniyetini bildirmeyecek. Aşağıdaki POKE komutunu girerseniz bilgisayarınızı bu ümitsiz durumdan kurtarabilirsiniz.
POKE O, PEEK(0) AND NOT 2 4
Başka bir kilitleme yöntemi de BIT3'ü değiştirerek olur:
POKE 0, PEEK(0) AND NOT 2 3
Bu komuttan sonra her şey normal gidecek çıkmasını beklediğiniz mesajlar çıkacak, datasetteki tuşların durumu kontrol edilecek, SAVE komutu çalışır gözükecek, ama çalışmayacak. Normale dönmek isterseniz:
POKE 0, PEEK(0) AND NOT 8
Bu soruna çare aşağıdaki POKE komutudur. POKE 0, PEEK(0) OR 16
Müzikseti Olarak Dataset:
Evet yanlış okumadınız, datasetinizi müzik seti olarak kullanabilirsiniz. Nasıl mı? Program döküm ekinde bulacağınız programı yazıp çalıştırın. Datasetinize de sevdiğiniz bir müzik kaseti koyup PLAY tuşuna basın, televizyon veya monitörünüzün sesini açıp keyifle kasedinizi dinleyin. Ama bizden söylemesi: Datasetten elde edeceğiniz müziğin kalitesi için hiç de iyi şeyler söyleyemeyeceğiz, hayal kırıklığına uğramayın. Verdiğimiz programın yaptığı, prosesör portundaki üç GİRİŞ/ÇIKIŞ hattını kontrol etmekten ibaret. Dataset ile bilgisayarımız arasında kullanılmayan bir hat daha var: Dataset okuma (bu hat Dataset yazma hattına eşdeğerdir). Datasetten gelen bütün veri bu hattan gider. Fakat ufak bir problemimiz var: Bu hat diğer hatlar gibi prosesörde son bulmaz -CIA1'e kadar devam eder (böylece Seri Port'u bizim kullanımımıza açar). Bu yüzden 13. sicilini kurmamız gerekiyor: Aşağıdaki Makine Dili ile uğraşanlar için aynı programın Makine Dili'nde yazılmış şeklini bulabilirsiniz. 1A00 A0 00 LDY #$00 1A02 AD LDA $DC0D : CIA1'deki FLAG'ının kontrolü
C9 00 CMP # : Sinyal yok mu? FO 02 BEO : Evet-devam et 14A09 A0 OF : Hayir-Sesi kapat 8C 18D4A : ve 24 numaralı SID yazmacı A5 DS LDASDS : Klavyeyi oku 1A10 C9 58 CMP # 858 : 88-hiçbir tuşa basılmadı 1A12 FO EC BE© : Hiçbir tuş-devam et 1A14 60 RTS : BASIC'e geri dön
Bu ufak programımızı SYS 6656 komutu ile başlatın. Programımızın çalışma prensibi gayet basit: Sinyal kontrolü yapılır. Eğer sinyal varsa ses açılır, yoksa kapatılır. Sesi açıp kapama Makine Dili'nde mümkün olan en ufak döngü içinde yapılmaya çalışılıyor ama sonuçta korkunç bir ses ortaya çıkıyor.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 52
Seçeneğinize göre gerekli işlem basamağına atlanıyor.
Dataset:
Sanırım her Commodore kullanıcısı Commodore'unu ilk aldığında veri saklama amacı ile Dataset kullanmıştır. Eğer sabırlı iseniz programlarınızı yükleme ve saklama açısından Dataset bir Disk Drive'a alternatif olabilir. Yazımızın bu bölümünde Dataset için bazı enteresan bilgiler vereceğiz. Dataset'i devamlı olarak kullanan kullanıcılar bile genelde teyp motorunun SAVE veya LOAD işlemi sonunda kendiliğinden durduğuna dikkat etmezler. Datasetinizin motoru bilgisayarınızın işletim sistemi tarafından kontrol edilmekte. Bundan başka datasetin motorunu yazacağımız programlarla da kontrol etmek mümkün. Bizim için önemli olan adresler 1 (prosesör portu) ve 192 (teyp motor göstergeci). Şimdi ufak bir deneme yapalım. Önce datasetinizin PLAY tuşuna basın. Motor çalışır ve dönmeye başlar. Direkt modda aşağıdaki POKE komutlarını yazın.
POKE 192,1:POKE1,PEEK(1) OR 32
Dikkat ettiniz mi? Siz datasetinize dokunmadan motor durdu. Datasetinize dokunmadan motoru tekrar çalıştırmak isterseniz aşağıdaki POKE komutunu yazın.
POKE 1, PEEK(1) AND 39:POKE 192,0
Bize datasetimizin motoruna uzaktan kumanda etme fırsatı veren adres 1 numaralı adres. Bu adresin içeriğini BİT seviyesinde inceleyelim:
BİT3: Bu BİT yanıksa dataset yazma durumundadır. BİT4: Datasetin tuşlarının durumu. BİT5: Dataset motorunun durumunu gösterir.
Motoru çalıştırabilmek için BİT5'i yakmamız yani bu BİT'in değerinin 1 olması gerekiyor.
Dataset Tuşlarını Okuma:
1 numaralı adresin yaptıkları bununla bitmiyor. BİT4 datasetinizdeki tuşlardan herhangi birinin basılı olup olmadığını kontrol eder. Dataseti kullanırken karşınıza çıkan PRESS PLAY (&RECORD) ON TAPE mesajları işletim sisteminde bu bitin durumuna göre karşımıza çıkar. Ne yazık ki bilgisayarımız datasetin hangi tuşuna bastığımızı fark edemiyor. Mesela bir programı SAVE edeceksiniz. Normalde PLAY ve RECORD tuşlarını aynı anda basmanız gerekiyor diyelim ki kazara sadece PLAY tuşuna bastınız. Bu durumda işletim sistemi hangi tuşlara basıldığını anlamadığından hatanın farkına varamayacaktır. BİT4'ün dataset tuşlarını kontrolünü şu şekilde sağlayabiliriz:
WAİT 1,16 (Datasetteki STOP tuşu basılana kadar bekle.) WAİT 1,32,32 (Datasetteki herhangi bir tuşa basıla- na kadar bekle.)