DALGALARIN YIPRATAMADIĞI COMMODORE 64 BİR KAYA:
64'er'den Çeviren Ziya BAYMAN
Commodore 64'ün günlerinin sayılı olduğunu düşünenler, büyük bir yanılgı içindeler. Sayılar son derece açık: Commodore 64, yalnızca Federal Almanya'da 1,5 milyon, tüm dünyada ise 12 milyon adet satıldı. 1987'nin son çeyreğinde günlük ortalama satış 800 adet civarındaydı. Ve bu olay, altı yıldır piyasada olan bir bilgisayar için söz konusuydu. Bu başarıyı açıklamak pek o kadar kolay değil. İnanıyorum ki, piyasaya çıkıştaki zamanlama oldukça belirleyici oldu. O sıralarda harikalar makinesi “bilgisayar” karşısında duyulan ilk korku giderek yok olmaktaydı, hemen hemen hiç rekabet yoktu ve Commodore adı, C 64'ün önceli VC 20 sayesinde oldukça yaygınlaşmıştı. Bunun yanı sıra Commodore 64, altı yıl önce henüz sansasyonel olan grafik ve ses özelliklerine sahipti. Okulumuzun bilgisayar odasında basit bir üç sesli müzik çalmakta olan ilk 64'ümüzün karşısında şaşkınlıktan bir karış açılmış ağzımızla durduğumuz günü hatırlıyorum. Böyle bir bilgisayarın daha önce görülmemiş bir başarıya erişmesi, bir mucize mi sizce? Bugüne geri dönelim. Bugün çiçeği burnunda bir C 64 sahibi, satın alma tercihini yapmakta oldukça zorlanmış durumdadır. 64'er Dergisi'nin yazarları olan bizler bile, zaman zaman AMIGA veya ST Dergileri'nin yazarlarının küçümseyen bakışlarıyla karşılaşabiliyoruz. Bu süper makineler karşısında C 64'ün ne şansı olabilir ki? Gerçekten böyle mi acaba? 64'er Dergisi için bu yazıyı bir kişisel bilgisayarda yazıyorum ve uzun süreden beri de kendim için AMIGA yönünde bir tercih yapma olanağına sahibim. Fakat kararım kesin: Hiçbir şey beni C 64'ümden bu kadar çabuk koparamaz. Kullandığım kişisel bilgisayar benim gibi bir müzik meraklısı için asla 64'e rakip olamaz, çünkü birkaç düdük sesi dışında hiçbir müzikal yeteneği yok. AMIGA, çok güzel sesler üretiyor olabilir ya da son derece gelişkin grafik özellikleri olabilir, ama işletim sistemi mükemmelleştirilip hatalarından arındırılmadıkça bu makineyi almak benim için söz konusu değil. Ayrıca bu konuda bir sorunum daha var; fiyatları C 64'e oranla oldukça yüksek olan AMIGA ve ATARI ST, çılgınca olanaklar sunuyor olabilirler, ama diğer yandan programlanmaları oldukça zor. Boş bir vaktinde Commodore 64'üyle ilgilenen herhangi bir kişi, çabucak bu bilgisayarın geneli hakkında bilgileri edinebilir. Şurada Zeropage var, burada serbest BASIC belleği, orada üstte BASIC-ROM ve işletim sistemi ve bu aralıkta da video ve ses çiplerini yönetmeye yarayan birkaç bellek alanı. Doğrusunu isterseniz, kendimi birkaç yüz KByte'lık bir işletim sistemiyle uğraşırken hayal etmek bile, sırtımdan soğuk terler boşanmasına neden oluyor. Bu durumlarda C 64'ümün 8 KByte'lık Kernel'i bana çok daha sempatik geliyor. Şu gayet açık: Bir bilgisayar ne denli esnek olursa, programcısından o denli çok bilgi sahibi olmasını isteyecektir. Aslında üreticiler bir yandan, makinelerin kullanımını “kullanıcı yüzeyleri” aracılığıyla kolaylaştırmaya çalışıyorlar. Bilgisayarın programlanabilmesi ise bu nedenle daha da zorlaşıyor. Bana kalırsa “bugün hâlâ” Commodore 64'üyle uğraşanlar değil, daha çok saldırgan bir biçimde bir AMIGA ya da ST satın almaya kalkışanlar acınacak durumda. Çünkü ilk oyun hırsı geçtikten sonra insan
“bilgisayar” olgusunun biraz daha derinliğine inmek isterse, ilk şokla karşılaşılıyor. İnsan kendini etkileyici bir verime sahip bir harikanın karşısında buluyor, fakat basit bir problemin çözümü için sayfalarca süren programlar istiyor ondan bu harika. Olay çok açık: Farklı 20 grafik modu arasından doğru olanı seçilecek ve 30 gerekli parametreyle beslenecek (biraz da abartıyorum tabii).
Commodore 64'e yönelik yaklaşık yüzlerce kitap, binlerce program ve en azından bir tane kaliteli dergi (kendi dergisi olan “64'er”i kastediyor. Bu konuda biz de en az onun kadar iddialıyız. ç.n.) var. Ve hemen her kentte 64 profesyonellerinin devam ettiği bilgisayar kulüpleri var (dileğimiz bu durumun ülkemizde de gerçekleşmesi. ç.n.) Dolayısıyla yeni başlayanlar açısından, zor bir sorunla karşılaştıklarında yardım bulma olanağı her zaman var. Peki, okullarda bilgisayar destekli eğitimde Commodore 64'ün bir standart haline gelmiş olması bir rastlantı mı? Commodore 64 benim için hem acemilerin, hem biraz bilenlerin hem de profesyonellerin bilgisayarı. Olur ki, günün birinde tüm Kernel ROM rutinlerini uykumda ezberden sayabileceğim pahalı ve büyük bir bilgisayar olmak durumunda kalabilirim. Ama o zaman dahi Commodore 64'üm masamın üzerinde yerini koruyacak. :
C-64
64'er'den Çeviren Ziya BAYMAN
Bilgisayarınıza program modülleri mi bağlamak istiyorsunuz? Bir modemi mi çalıştırmak istiyorsunuz? Ya da bir alarm sistemini bilgisayar üzerinden kullanmak mı istiyorsunuz? Bu işler için Expansion ya da User Port'u kullanmak zorundasınız. Tabii ki yukarıda saydıklarımız, bu portlar aracılığıyla yapabileceğiniz bir sürü işten yalnızca üçü. Ama bunları tipik örnekler oldukları için seçtik. Örneğin modem ya da alarm sistemi User Port'a (Resim 1) program modülleri ise Expansion Port'a (Resim 2) takılır. Önce User Port'u inceleyelim.
ÇOK YÖNLÜ BİR PORT
User Port, çok yönlü kullanabileceğiniz bir bağlantı noktası. Çoğunlukla modemler ya da akustik coupler'lar için kullanılan RS232 bağlantısı, User Port üzerinden ölçme ve yönetme işlerini de gerçekleştirebilir. Bağlantı yerini biraz daha yakından inceleyelim. Resim 3'te User Port'un bağlantı pozisyonları veriliyor. User Port'un alt ve üstteki bağlantılarının farklı işlevleri olduğunu görüyorsunuz. Bu nedenle asla bir timsah ya da benzeri bir mandalı buraya tutturmaya kalkışmamalısınız! Daha önce de belirttiğimiz gibi User Port çok farklı işler için kullanılabilir. Bunu sağlayan, User Port'ta bulunan ve sizin istediğiniz gibi programlayabileceğiniz 8 bitlik paralel porttur (Resim 3: PB0-PB7). Bunun anlamı, paralel port üzerinden verileri okuyabilmeniz ya da çıkışını alabilmenizdir. Burada enteresan olan, sekiz hattın herbiri için veri akışını tek tek belirleyebilmenizdir. Hangi hattın giriş hangisinin çıkış için kullanılacağını, veri akışı sicilinden verebilirsiniz. Bu sicil için kullanılan “DDR” kısaltması, İngilizce “Data Direction Register” kelimelerinin baş harflerinden oluşmaktadır. Peki, bir sicille sekiz hat nasıl kullanılabiliyor? Bunu anlayabilmek için, ikili ve onlu sayılar arasındaki ilişkiyi biraz incelememiz gerekecek.
USER PORT PROGRAMLANABİLİYOR
Bilgisayarın çalışırken kullandığı ikili sayı sistemi, 0 ve 1 olmak üzere, yalnızca iki sayıyı tanır. Bu sistemde 0 ya da 1 içeren bir bilgi birimi, “bit” olarak adlandırılır. Bu, bilgisayar teknolojisinde kullanılan en küçük bilgi birimidir. Tek bir bitle, ondalık sayı olarak 0 ve 1 gösterilebilir. Buna ikinci bir biti eklersek, 0'dan 3'e kadarki ondalık sayıları gösterebiliriz. Üçün gösterilebilmesi için, her iki bitin de birer 1 içermesi gerekir (1*2^1 + 1*2^0 = 2+1=3). Sekiz bitle 0'dan 255'e kadarki ondalık sayılar gösterilebilir. Resim 4'te örnek olarak 223 ondalık sayısının ikili sistemde nasıl parçalandığını görebilirsiniz. Ayrıca bilgisayar teknolojisinde sekiz bitin bir araya gelmesiyle ikinci en küçük bilgi birimi olan “Byte” oluşur. Commodore 64'ünüzün bellek kapasitesi 65536 Byte'tır. 56579 sayılı byte, yukarıda bahsedilen veri akış sicilidir. Buradaki 0 bitine bir 1 koyarsanız, buna ait olan PB0 hattı çıkışa açılmış olur. Makineyi açtıktan sonra aşağıdaki satırı yazarak DDR'i bir kez daha deneyin:
PRİNT PEEK (56579)
Ekranda bir 0'ın görüntülenmesi gerekir, çünkü bilgisayarın açılması anında PB0'den PB7'ye kadarki port hatları giriş olarak açılmıştır. Yukarıdaki örnekteki (Resim 4) sayımızı kullanırsak,
POKE 56579,223
satırıyla DDR, 11011111 şeklinde bir bit dizisi içerir. Böylece tüm PB hatları, PB5 hattına kadar çıkış olarak açılmış olur. 56577 bellek hücresindeki DPB (Data Port B) sicili üzerinden tek tek çıkışları, aynen DDR'de olduğu gibi 1 ya da 0 yapabilirsiniz. POKE 56577,222 ile oraya 11011110 şeklinde bir bit dizisi girebilirsiniz. Böylece PB0'a kadar tüm çıkışlar 1 olur. Bunun anlamı ise, D pininden H pinine kadar (PB1-PB4), K pininde (PB6) ve L pininde (PB7) +5 Volt akım varken, C (PB0) pininde 0 Volt bulunur. Bu durumda 5 bitine 0 verilmiştir. DDR'deki karşılık gelen hattın daha önce giriş olarak açılmış olması nedeniyle, bilgisayar DPB sicilinin 5. bitini görmezden gelir. Aynı şekilde
POKE 56577,254
yazarak, 11111110 şeklinde bir bit dizisi yaratabilirsiniz.
USER PORT'U PROGRAMLARKEN DİKKAT EDİLMESİ GEREKEN HUSUSLAR
User Port'la denemeler yapmaya başlıyorsanız, son derece dikkatli davranmanız gerekir. Çünkü daha önce de belirttiğimiz gibi, entegre bir eleman olan CIA (Control Interface Adapter)'in 14 yapılmış olan çıkışlarında 4-5 Volt akım bulunmaktadır. Bu uçları yanlışlıkla şasiyle bağlarsanız, CIA bu davranışınızdan pek hoşlanmayacaktır. Sonuçta bilgisayarınızı büyük bir olasılıkla bir tamir servisine götürmek zorunda kalabilirsiniz. Yani, çok dikkatli olun. Eğer portu giriş olarak kullanıyorsanız, tek tek hatları denemek ilgi çekici olabilir. Port sicili yardımıyla bunu gerçekleştirebilirsiniz.
PRINT PEEK (56577)
yazdığınız takdirde, DDRB sicilinin değeri ekranda görünecektir. Bilgisayarınızı yeniden açıp DDRB sicilini deneyin. Bütün bitlerin 1 olduğunu göreceksiniz. Bu nedenle B portunun tüm hatlarında 5 Volt bulunacaktır.
USER PORT'LA DENEMELER
Hatırlayacağınız gibi, makinenin açılmasından sonra B portunun tüm hatları giriş olarak açılmış olmakta, çıkışların aksine şimdi, karşılık gelen hatları şasiyle bağlayarak, tek tek her biti 0 yapabilirsiniz. Peki, tek bir bitin DDRB sicili tarafından denetlenmesi nasıl gerçekleşiyor? Bilmecenin çözümü, “AND-bağlantısı”.
Örneğin, 7. biti denetlemek için
PRINT PEEK (56577) AND 128
satırını girmelisiniz. Sonuç 128 ise, DDRB sicilinin 7. biti 1 içeriyor demektir. Sonuç 0 ise, 7. bit de 0 demektir. Aynı şekilde 6. biti
PRİNT PEEK (566577) AND 64
satırıyla denetleyebilirsiniz. Sonuç 64 ise bitin içeriği 1, sonuç 0 ise bitin içeriği 0'dır. Aynı yöntemle diğer tüm bitler de denetlenebilir. AND bağlantısının neler yaptığını, ilerki sayılarımızda betimlemeye çalışacağız.
;
? | ?
Yukarıda verilen BASIC komutlarını programların içine yerleştirdiğiniz takdirde, bir sürü yönetme sürecini de işletebilmeniz mümkün. Alarm sistemleri ya da yanıp sönen lamba dizileri ve benzeri bir sürü şeyi çalıştırabilirsiniz. Dikkat edeceğiniz konu, çıkışlardan yalnızca sınırlı bir düzeyde akım alabileceğinizdir. Aslında bu akım her hatta ön akımlı birer ışıklı diyot bağlamaya yeterlidir, fakat daha kapsamlı bağlantılar için röleler ya da güçlendiriciler kullanmanız gerekir.
Tabii ki, User Port'u verilerin uzağa iletilmesi için de kullanabilirsiniz, örneğin bir akustik koppler bağlayabilirsiniz. Önümüzdeki sayılarda akustik koppler ya da modemle veri iletimi konusunda da yazılar yayınlayacağız.
C64 KARTUŞLARI NASIL TANIYOR?
Basic ya da Soccer gibi kartuşlar C64'ün Expansion Port'una takılır. Makine açıldığı anda program kullanıma hazırdır. Peki, bilgisayar kendisine bir kartuş takılmış olduğunu nasıl anlar? Bunu anlayabilmek için Expansion Port'un bazı bağlantılarını irdelememiz gerekiyor.
Resim 5'te Expansion Port'un bağlantılarının arkadan nasıl göründüğü veriliyor. Açılış sırasında kartuş, EXROM (Pin 9) hattını şasiye (Pin 1, 2, A ve B) bağlıyor. Bu durumda C64'ün belleğinden 9 KByte'lık (9216 bit) bir bellek alanı alınmış oluyor. Bu alan 32768 adresinden 40956 adresine kadar olan bölümü kapsıyor. Takılmış olan kartuşun bellek içeriği bu alanda yerleşiyor. Bilgisayarınız yine de bu noktada bir programın başladığını henüz bilemiyor. Bu bilgiyi ancak “Reset-rutini” olarak adlandırılan yordamın harekete geçmesinden sonra algılayabiliyor. Bilgisayar bu sırada 32772'den 32776'ya kadarki bellek hücrelerini kontrol eder. Eğer orada “CBM80” ifadesine rastlarsa, kendisine bir kartuş takılmış olduğunu anlar. Eğer işgal edilmiş olan bellek alanını “CBM80” için ayrılan bellek hücreleriyle karşılaştırırsanız, metnin kartuşta içerildiğini görürsünüz. Eğer kartuş yoksa, karşılık gelen bellek hücreleri makine açıldığında boş olur ve bilgisayar reset rutinini devreye sokar. “CBM80” ifadesini bulduğu takdirde ise, işgal edilmiş ilk iki bellek hücresi olan 32768 ve 32769'dan kartuş programının burada saklanmış olan başlangıç adresini alır ve oraya atlar. Böylece makine açıldığı anda kartuştaki program işlemeye başlar. Tabii ki, her reset işleminden sonra kartuş takılı olup olmadığının kontrolü yinelenir. Bir reset işlemi gerçekleştirmenin en kolay yolu, User Port'taki 3. (Reset) ve 1. (Şasi) uçları birleştirmektir. Bunu bir switch aracılığıyla yapabilirsiniz. Ama bunu yaparken bilgisayarını almış olduğunuz firmanın garanti koşullarını göz ardı etmeyin.