Bu sayfadaki yazılar
Sayfanın metni
Sayfa 52
Bilgi Port registeri yön registeri C 64 56579 56577 tümü çıkış konumuna gelir. Port Registeri'ndeki 255 değeri ise yine tüm hatlardan 45 V gerilim çıkmasını sağlar. Port Registeri'ndeki O değeri ise belli bir çıkışı GND, yani toprak konumuna getirir, Görüldüğü gibi burada da Bilgi Yön Registeri'nde olduğu gibi gerilim konumları Bit'ler yardımıyla belirlenir (1 - High, 0— Low). Aynı şekilde Bit O, PBO'a karşı gelmektedir. Bu Port'tan elde ettiğimiz gerilimlerin nasıl ileride detaylı olarak göreceğiz. İkinci örnek olarak Paralel Port'- un nasıl giriş olarak kullanılacağını görelim. Bilgi Yön Registeri'ne 0 yazılırsa, tüm veri hatları giriş konumunu alır. Şimdi dışarıdan bazı bilgileri bu Port'tan girelim. Bu işlem veri hatlarına 4 5 V veya bilgisayarın besleme geriliminin GND'si bağlanarak gerçekleştirilir. Burada yine “0' GND ve '1” anlamına gelmektedir. Fakat girişlerden herhangi birine GND veya 4 5V bağlanmasa da Port Registeri'nde değeri elde edilir. Bu şekilde önemli bir bağlantı kazancı sağlanır. User Port'taki Bit kombinasyonu her an Port Registeri okunarak öğrenilebilir. Eğer veri hatlarında bir değişiklik olursa, bu hemen kendiliğinden Port Registeri'ne bildirilir. Daha önce belirtildiği gibi giriş ve çıkış fonksiyonları istenilen hatlara dağıtılabilir. Örneğin 2, 5 ve 7 numaralı hatlar çıkış olurken, kalanlar giriş olabilir. Bilgi Yön Registeri'ne yazarsak 2., 5. ve 7. Bitler “1” değerini alır, yani çıkış haline gelir. Bu çıkışlardaki gerilim konumları Port Registeri'ndeki 2, 5 ve 7 numaralı Bit'lere POKE edilmeli ve girişler hakkındaki enformasyonlar da 0, 1,3, 4, 6 numaralı Bit'lerden okunmalıdır. Bu kadar teorinin ardından programlama işlemine geçebiliriz. Öncelikle yukarıda bahsedilen iki registerin adreslerini öğrenmelisiniz. Bunlar Resim 2'de görülmektedir. Şimdiye kadar bilgisayarınızı daha mantıklı bir şekilde kullanabilmeniz için gerekli her şeyi öğrendiniz. Artık bir alarm sistemi programlayabiliriz.
RESİM 2: User Port registerleri.
User Port'taki Alarm Sistemi:
“Alarm” adlı programı yazın ve RUN ile başlatın. Ekranda Paralel Port'un bağlantı planı görülecektir. Bu arada hemen belirtelim, alarm sistemi için bir adet User Port konnektörüne ihtiyacınız olacaktır. Konnektörün dört kenar bağlantısından herhangi birine (— GND bkz. Resim 1) kablo lehimleyin ve User Port'a takın. Kesinlikle iki bağlantı birbirine değmemelidir. Şimdi kablonun diğer ucunu elinize alın ve PB7'ye kadar olan yollardan birine değdirin. PBO program tarafından alarm cihazında çıkış olarak kullanıldığı için kesinlikle buraya değdirmeyin. Hangi hattın doğru olduğunu Resim 1'den rahatça anlayabilirsiniz. Kablo giriş hatlarından birine temas ettiğinde bir alarm sesi duyulacak, ekranın kenarındaki renkler değişecek ve PBO çıkışına * 5V gerilim verilecektir. Ayrıca ekranda hangi hattın alarm sistemini devreye soktuğu görülecektir. Eğer kabloyu hiçbir yere değdirmezseniz, girişler High sinyali alacaktır ve tüm alarm sinyalleri silinecektir. Şimdi programa bir göz atalım. Değişkenler, Port Registeri, SID- Chip'i ve ekran için gerekli kodlamalar yapıldıktan sonra 390. satırda Port Registeri (R değişkeni) 254'ten başka bir değer alıncaya dek okunur. Neden 254? 254, birden yediye kadar olan yani alarm çıkışı dışındaki tüm Bit'lerin değerliklerinin toplamıdır. Bu alarm sisteminin tüm kontaklar açık durumdaki dinlenme konumudur (High sinyali). Alarm verildiğinde 430. satırda alarm çıkışı açılmaktadır. 470. satırdan itibaren ise yeni bağlantı planı çizilmektedir. Burada her bağlantı kontrol edilmekte ve sonuç ekranda gösterilmektedir.
Son olarak bilgisayar alarm bitişi için beklemektedir. Eğer hatlardaki temas devam ediyorsa, yani alarm veriliyorsa, bağlantı planı tekrar çizilir. Zira bu arada bazı değişiklikler olmuş olabilir. Diğer durumda ekran tekrar başa döner. Programı dikkatlice inceleyen birisi bunun gerçek bir alarm sistemi olarak kullanılmaya pek uygun olmadığını kolaylıkla söyleyebilir. C-64'ün bu alanda bazı zayıf yanları vardır. En önemlisi tüm sinyaller güvence içinde algılanamaz. Eğer temas, yani alarm süresi, kısa ise C-64 bu arada Port Registeri'ni okumak yerine örneğin 390. satıra atlamayı gerçekleştiriyor olabilir. Bundan başka alarm sinyali bilgisayar tarafından algılandıktan sonra nereden verildiği ilk 420. satırda belirlenmektedir. Bu satıra gelinene kadar geçen zaman sürecinde bir şeyler değişebilir. Fakat tüm bunların çok kısa temaslar için
Bilgi Port registeri yön registeri C 64, PORT 1 56323 56321 C 64, PORT 2 56322 56320
RESİM 3: Control Port registerleri.
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 53
RESİM 4; PADDLE ATEŞ TUŞU İÇİN GEREKLİ REGİSTERLER.
Bağlantı Pin Bit Bilgi yön Port registeri | registeri JOY3 | 56323 | Sol 56323 | 56321 Bağlantı Pin| Bit | Bilgi yön Port registeri | registeri JOY3 56322 | 56320 Sol| 56322 5632' Bağlantı Bit| Bilgi yön Port | registeri | registeri Sağl 7 | Sol JOY 2 8 geçerli olduğunu unutmayın, Diğer taraftan Basic'te yazılmış olan program gerçek bir alarm sistemi için çok basit kalmaktadır. Örneğin temas bir saniye sürerse sadece bir saniye alarm verilecektir ve bu birçok durumda yetersiz kalır.
Şifreli Kilit:
Alarm sisteminin ardından yeni bir program örneğine geçebiliriz. “Şifreli Kilit” adlı programı yazın ve RUN edin. İlkinde olduğu gibi PBO çıkış, geri kalan hatlar da giriş olarak kullanılmaktadır. Yine tüm işlemler sırasında en ufak bir hatanın bile bilgisayarınıza önemli hasarlar verdirebileceğini düşünerek hareket edin. Şimdi gelelim programın nasıl işlediğine. PB2'den PB7'ye kadar olan veri hatlarına altı basamaklı bir şifre girmelisiniz. Eğer bu şifreyi doğru girerseniz, PBO high konumunu alır, yani dışarıya 4 5V gerilim verir. Bu gerilimi kullanarak isterseniz bir kapıyı açtırılabilir veya gizli bir cihazın çalışması sağlanabilir. Bu kumanda işlemlerinin nasıl gerçekleşeceğini daha ileride göreceğiz. PBI1 hattı üzerinden şifre girişi baştan başlatılır (herhangi bir hatada veya bir kez kilit açıldıktan sonra). Girişler sırasında her temasta ekrandan bir uyarı sinyali duyulur. 250, ve 260. satırlarda bilgisayara iki değişken belirtilir. Bunların ne anlama geldiğini kısaca belirtmek istiyorum. CL, girilecek olan şifrenin uzunluğunu yani kaç basamaklı olduğunu içermektedir. CI$ değişkeninde ise şifrenin kendisi saklıdır. Bu iki değişkeni istediğiniz gibi değiştirebilirsiniz. Programda bunlar özellikle akılda kolay kalacak şekilde seçilmiş- Ur. C2$'da giriş hatlarına GND'yi değdirerek yazdığınız şifre oluşturulur.
Bu veri giriş sisteminin en önemli avantajı, bilgisayarın tamamen ayrı bir yerde örneğin başka bir odada olabilmesidir. Yani bu kilit tamamen klavyeden bağımsız olarak çalışmaktadır. Böylelikle bilgisayara dışarıdan bir müdahale yapılamadığı için, şifrenin program dökümünden elde edilmesi imkânsız hale gelir. Program REM komutları ile yeteri kadar açıklık kazanmıştır. Bu noktada sadece bir sinyal verildiğinde programın RUN ile baştan çalıştığını söylemek yeterlidir sanırım. Bu programda da her şey en basit hali ile ele alınmıştır. Diğer bir deyişle Basic bilgisine güvenen herkes bunu rahatça daha da geliştirebilir. User Port'ta neler olduğunu gördükten sonra bir adım geriye döneceğiz. Yazının ilk bölümlerinde cevapsız kalan bazı soruları şimdi cevaplamak istiyorum. İlk olarak bilgisayarın Joystick ile veri girişini göreceğiz. Sanırım şu ana kadar Joystick ve User Port programlanması arasında bir benzerlik olduğunu farketmişsinizdir. İkisinde de öncelikle bazı registerler açılmalı ve elde edilen O ve 1 rakkamları doğru bir şekilde değerlendirilmelidir. Joystick Portu'nda da Bilgi Yön Registeri'nde olduğu gibi giriş ve çıkışlar programlanmalıdır. Bildiğiniz gibi Yön Registeri'nin Bit'lerini silersek tüm hatlar giriş haline gelir. Burada eğer tüm Bit'lere | değerini yazarsak ne olur diye bir soru aklınıza takılabilir. Cevap yine aynıdır: Joystick Port'un tüm hatları çıkış konumuna gelir. Bu Port hakkında daha detaylı bilgiyi ilerki satırlarda bulabilirsiniz. Resim 3 buradaki gerekli tüm registerlerin adreslerini göstermektedir. Birçok kişinin merak ettiği diğer bir nokta ise klavye, Joystick, light pen (ışıklı kalem) ve paddle'ın neden daima birbirlerini engellediğidir. Bunun nedeni yukarıda sayılan cihazların hepsinin aynı veri yollarını kullanmasıdır. Böyle bir durumda her seferinde kullanılacak veri cihazı bilgisayara belirtilmelidir. Burada aklınıza ikinci bir soru takılabilir: Neden klavye Joystick Portlarının veri yollarını kullanmaktadır? Klavye aslında satır ve sütunlarda oluşan bir matris aracılığı ile bilgisayara bağlanmıştır. Her bir kesişim noktasında bir tuş bulunmaktadır ve bu tuş basılı olduğu zaman kesişim noktasının iki ucunu birleştirmektedir. İşletim sistemindeki klavyeyi soran rutinler, bir satıra bir sinyal yerleştirmekte ve daha sonra bu sinyalin hangi sütunda ortaya çıktığına bakarak basılan tuşu belirlemektedirler. Eğer hiçbir sinyal ile karşılaşılmazsa bu satırda bir tuşa basılmamış demektir ve sinyal bir sonraki satıra aktarılır. Bu yöntem neden bazı tuşların diğerlerine nazaran üstünlüğü olduğu sorusuna cevap vermektedir. Arka arkaya iki tuşa birden basarsanız, hep aynı tuşun ekranda gösterildiğini görebilirsiniz. Bilgisayarın iç yapısının bir özelliği olarak sinyalleri veren ve enformasyonları okuyan parçaların sayısı sınırlı olduğu için, yukarıda anlatılan satır sütun matrisi Joystick ve diğer veri aletleri ile aynı yolu kullanmaktadır. Bu nedenle genellikle Control Port Registeri'ne bir değer POKE edilirse, klavye işlevini kaybeder, çünkü elde edilen matris sinyalleri doğru bir şekilde yorumlanamamaktadır. Belleğin bazı registerleri devamlı değişmektedir. Buralara her seferinde sinyallerin konumları yazılmaktadır. Bilgisayar için sinyalin nereden geldiği hiçbir önem taşımaz, sadece bulunduğu satır ve sütun kontrol edilir. bu bilgileri örneğin Port 1'e takıbir Joystick hareket ettiğinde, ekranda anlamsız harflerin neden oluştuğunu açıklamaya yeter sanırım. Son olarak Joystick'in ardından Paddle'dan kısaca söz etmeden geçemeyeceğim, zira burada da User Port'ta edindiğimiz programlama bilgilerini kullanacağız. Her şey aslında tamamen aynı: Bellekte Paddle için ayrılmış olan DDR'nin bazı Bit'- lerine O değerini vererek Control Port'u giriş haline getireceğiz. Bundan sonra Port Registeri'ni okuduğumuzda, o Bitlerde elde edeceğimiz O değerleri o hattan giriş yapıldığını gösterecektir. Fakat Paddle'da bu anlatılanlar sadece ateş tuşu için geçerlidir. Resim 4'te C-64'ün iki Control Port'u için gerekli register adreslerini Burada Paddle'lar bilgisayara takılı iken bağlantı kablolarının pozisyonuna göre sağ ve sol diye adlandırılmıştır. Normalde de sağdaki POTX'e, soldaki ise POTY'- ye bağlıdır. Paddle da bilgisayarın içinde Joystick ile aynı veri yollarını kullandığı için klavye ile aynı anda kullanılamaz. Şimdilik bu kadar bilgi yeterlidir sanırım, Gelecek sayıdaki yazıda bugün kısaca değindiğimiz Control Port'larını daha kapsamlı bir şekilde ele alacağız. Ayrıca bir Light Pen'- in nasıl yapıldığını ve nasıl işlediğini de bu yazıda bulabileceksiniz. Bu aylık hoşçakalın...