Commodore sayı 5, sayfa 51

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 51

Sevgili Commodore'cular, İstanbul, 1. Levent'ten Ali Başel adlı okurumuz, birçok Commodore'cunun ortak merakına ışık tutmamızı istiyor. Yayına başladığımızdan bugüne kadar “Alet Edevat” köşemize gelen mektuplar, bu köşenin nasıl ilgi gördüğünün delili. Bu ve buna benzer mektuplara örnek olarak Ali Başel'in mektubunu aynen yayınlıyoruz:

“Sayın Commodore Dergisi Yetkilileri; Öncelikle derginizde bizleri düşünerek hazırladığınız bu bölüm için sizlere teşekkür ederim. Benim bilgi almak istediğim bölüm User Port. Daha kesin olarak şöyle anlatabilirim: User Port'a bir devre bağlayacağım, bu devre bilgisayardan 5 Volt aldığında bir işlem, 0 Volt aldığında başka bir işlem yapacak. Öğrenmek istediğim, Basic dilinde bir programla — User Port'un, istediğim zaman 5 Volt, istediğim zaman 0 Volt vermesi. Zannediyorum bu olay POKE komutu ile yapılabilir. Ama hangi adresin kullanılabileceğini bilmiyorum. Şimdiden teşekkürler.”

Bu mektubun cevabı User Port'un yapısına ilişkin başlı başına bir konu. Ancak bu soruya kısmen cevap olabilecek 2 yazı daha önceki sayılarımızda yayınlandı; C-64 ile aydınlanma (Sayı 3) ve 6526 üzerine notlar (Sayı 4). Fakat her iki yazı da, Çernobil'deki nükleer santral kazasını duyunca Everest tepesinde yaşamak için Çince öğrenmeye çalışan teknik editörümüzün gazabına uğramış, kendisine yapılan uyarılara rağmen düzeltilen yazılar yine yanlış basılmış. Burada yanlışlar için sizlerden özür dileyerek yine o iki yazıya değineceğiz. Reference Guide'da da gösterildiği gibi User Port, bir konnektör gerektiriyor. Commodore 64'e arkadan bakılınca üst sıradaki bağlantılar soldan sağa, 1'den 12'ye kadar numaralandırılıyor. Alt sırada ise soldan sağa doğru A'dan N'ye harflendirilmiş (Bkz. Reference Guide, s.397).

Bu bağlantılardan 6526 ile ilgili

REGİSTER MAP

RS3 RS2 RS1 RSO REG NAME 0 0 0 0 0 PRA PERIPHERAL DATA REG A 0 0 0 1 1 PRB PERIPHERAL DATA REG B 0 0 1 0 2 DDRA DATA DIRECTION REG A 0 0 1 1 3 DDRB DATA DIRECTION REG B 0 1 0 0 4 TIMER A LOW REGISTER 0 1 0 1 5 TIMER A HIGH REGISTER 0 1 1 0 6 TBLO TIMER B LOW REGISTER 0 1 1 1 7 TBHI TIMER B HIGH REGISTER 1 0 0 0 8 10THS OF SECONDS REGISTER 1 0 0 1 9 TODSEC SECONDS REGISTER 1 0 1 0 A TODMIN MINUTES REGISTER 1 0 1 1 B TODHR HOURS-AM/PM REGISTER 1 1 0 0 C SDR SERIAL DATA REGISTER 1 1 0 1 D INTERRUPT CONTROL REGISTER 1 1 1 0 E CRA CONTROL REG A 1 1 1 1 F CRB CONTROL REG B ile olanlarının fonksiyonlarına “6526 Üzerine Notlar” yazımızda değinmiştik. Şimdi soruya dönersek; User Port'ta bağlanan 6526 U2 adını taşıyor.

Bu liste Reference Guide'ın 428. sayfasından alındı. Yukarıdaki sicil ya da saklayıcı (register) listesini inceleyelim. 6526'nın içinde 0'dan F(15)'e kadar numaralandırılmış 16 adet saklayıcı olduğunu görüyoruz. Tabloda üst satırda ilk 4 sütun başlığına RS3, RS2, RS1, RSO adları verilmiş. RS kısaltması (Register Select), saklayıcı seçme anlamına geliyor. Commodore 64'te de kullanılan 6500 adresli mikroişlemciler, “memory mapped” giriş-çıkış adreslemesi kullanıyorlar. Yani, tüm giriş-çıkış ana birim entegreleri ve içerisindeki saklayıcılar, mikroişlemciye bellek gözü gibi görünüyorlar. Mikroişlemci bu saklayıcıları herhangi bir bellek gözünden ayırt etmiyor. İş böyle olunca da adres yolunun en alt 4 bit'ini (A3, A2, A1, A0), 6526'nın 4 adet saklayıcı seçme girişine (RS3, RS2, RS1, RSO) bağlamak kalıyor. Şimdi de bu saklayıcıların fonksiyonlarını inceleyelim: DDRA (Data Direction Register A) ve DDRB (Data Direction Register B) ya da veri yönü saklayıcıları. Bu saklayıcılara yazılan sayıya göre saklayıcının ait olduğu portun bazı pinleri giriş, bazı pinleri ise çıkış moduna geçiyor. Şöyle ki; ikili sistemde 8 bit'lik saklayıcının 0 yapılan bit'i ilişkili olduğu port'un karşılık gelen pinini giriş durumuna alıyor. Eğer bu bit 1 yapılırsa, ilgili pin çıkış durumuna geçiyor. Örnek olarak DDRA saklayıcısına; 01011010 yazılırsa (onlu sistem-

İn sakı sane Çıkış mmm 0 sa Giriş PAD Çıkış PAA Çıkış Giriş Çıkış PAN vin Çıkış Öle mt Giriş durumuna geçiyor. Saklayıcıya bu değeri Basic'ten yüklemek istersek, 10'lu sistemdeki karşılığı olan 182'yi bu saklayıcıya POKE etmek gerekiyor. PRA ve PRB ise peripheral data register'in kısaltılmış adıdır. Port pinlerinin yönleri DDRA ve DDRB'ye yapılan müdahalelerle belirlendikten sonra tüm okuma ve yazma işlemleri PRA ve PRB'ye yapılıyor. Bu saklayıcılara yazma yapıldığında sadece çıkış haline getirilen port pinleri yazma işleminden etkilenir, okuma yapıldığı zaman ise hem çıkış tamponlarındaki sayılar, hem de giriş pinlerinde görülen lojik seviyeler okunur. CRA ve CRB olarak belirtilen (Control Register A, Control Register B) kontrol saklayıcıları ise 6526'nın içindeki zamanlayıcı (Timer) ve zaman saatini kontrol etmek için kullanılır. Bizi şimdilik ilgilendiren saklayıcılar DDRA, DDRB, PRA ve PRB. Aşağıdaki tablolar yine Reference Guide'dan alınmıştır ve giriş/çıkış ara birimlerin saklayıcı adreslerini vermektedir.

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