COMMODORE 64'ün İÇİ

Yeni bir C 64 sahibi, bir sürü elektronik ve bilgisayar terimiyle, ayrıca çözmesi gereken bir sürü sorunla karşı karşıya kalmakta. Nedir bu RAM, ROM, CPU, CIA, SID, VİC bit ve Byte? Bu yazı dizisinde yanıtları bulacaksınız.

Şimdi yeni bilgisayarınızın karşısındasınız. el kitabını okudunuz, kitapta verilen basit BASIC programlarını girdiniz, hatta belki kendiniz de birkaç program yazdınız - ama aslında yeni Commodore 64'ünüzü henüz yalnızca dışından, kullanıcı yüzeyinden tanıyorsunuz. Makinenizin gizemli içsel yaşamı henüz sizin için bir bilmece. İçerde neler olduğunu merak ediyor musunuz? O zaman sizi bilgisayarınızın derinliklerine doğru götürelim.

COMMODORE 64'ÜN KALBİ Commodore 64'ün şüphesiz en önemli parçası, oldukça gösterişsiz, çok bacaklı dört köşe bir böcek görüntüsündeki CPU'dur. CPU, İngilizce' “*Central Processing Unit” (Merkezi İşlem Birimi) sözcüklerinin başharflerinden oluşmakta. Çoğu zaman bilgisayarın bu kalbi, işlemci” olarak da adlandırılıyor. Bu parça olmazsa, bilgisayar yalnızca ölü bir elektronik yığını haline gelecektir. Commodore 64 çalışırken, CPU'nun içinde olağanüstü hızlı bir tempoyla durmak bilmeyen bir işleyiş hüküm sürer: Veriler rüzgâr gibi CPU'ya gelir, orada işlenir ve cevaplar C-64'ün en uzak adreslerine kadar yollanır. Ayrıca kayıt sicilleri, hesaplar, toplanma yerleri, yönetimler, haber ağları ve birinin oturup tüm bu

Çev: Balaban TOZAN işlemleri saydığı bir büro da CPU'nun içinde yer alır. Burada işler hakikaten çok hızlı ve tabiri caizse çok sıcak yürümektedir, öyle ki, çok daha yüksek tempoyla çalışan bazı büyük bilgisayarlarda CPU'nun sıvı helyumla soğutulan bir soğuk banyo içinde çalışıyor olduğunu öğrenmek herhalde sizi şaşırtmayacaktır. Bizim CPU'muzda ise bu tür durumlar yok. Üstündeki koruma tabakası kaldırılıp bir mikroskopla içine bakıldığında, tüm bu mekanizmaların yapısı hayal meyal görülebiliyor. Ayrıca CPU'muz, kendisiyle doğrudan BASIC diliyle konuşmaya kalktığımızda, bizi anlayamıyor. Her şey onun

1 Bit

4 Bit 1 nibble eder

8 Bit 1 bayt eder

Bir bit ya kapalıdır (0) ya da açıktır (1)

koda için, nesne kodu olarak adlandırılabilecek özel bir dile çevriliyor. Bu dil, ikili sayı sisteminin anahtar sayıları olan, sıfır ve birlerden oluşmakta. Eğer bu dili ya da buna yakın bir dili kullanarak CPU'yla haberleşmeyi denerseniz, çılgınca bir çalışma hızının göz kamaştırıcılığıyla karşılaşırsınız. Bu faaliyet, “Assembler”le, ya da daha doğru bir söylenişle “6502-Assembler”le programlama olarak bilinir. Çünkü Commodore 64'ün CPU'su 6502 mikro işlemciler ailesine dahildir. Assembler kavramı yerine Türkçe'de makine dili kavramı bilgisayar terminolojisine yerleşmiş durumda. Tabii ki, CPU'nun olağanüstü çalışkanlığı, bazı yardımcıların varlığı olmaksızın düşünülemez. Görevlerin herhangi bir yerden mikro işlemciye getirilmesi ve mikro işlemcinin bunlara tepkisinin de herhangi bir şekilde dışarıya iletilmesi gerekiyor. Örneğin, BASIC programlarını makine diline kim çeviriyor? Bilgisayarın kalbinin işlevini destekleyen dört organ var: CIA, VIC, SID ve nihayet bellek. Bu elemanları daha yakından inceleyeceğiz. Bunların ne kadar önemli olduğunu bellek dışında diğerlerini kapatarak kolayca anlayabilirsiniz. Fakat bu işi yapmak için

Baytevi

C 64'ün belleği evlerle dolu bir cadde gibidir.

POKE 1, PEEK(1) AND 248

komutunu kullanmadan önce, bilgisayarda bulunan verileri ve programları disket ya da kaset üzerine kaydedin, çünkü komuta kullandığınızda makine sanki ölecektir. Yalnızca CPU ve boş bellek açık kalacaktır. Commodore 64'ünüzü yeniden canlandırmak için yapmanız gereken, kapatmak ve yeniden açmaktır.

BITLER VE BAYTLAR

Bir sonraki önemli organ olan belleği incelemeden önce, bu organın içerdiklerine bir göz atalım: Bitler, nibble'lar ve baytlar. Bunları öğrendikten sonra belleğin yapısını anlayabilmemiz çok daha kolaylaşacak. Bilgisayar, bildiğiniz gibi elektronik bir alet. Tüm bu tür aletler gibi, bilgisayar da iki ana durum tanır: Akım var ve akım yok. Parçalarının herbiri az ya da çok bu prensibe göre çalışır. Elektrik (ya da manyetik) yükü var ya da yok. Bunun arası yoktur. Bir lambayı yarım yakamazsınız (tabif dimmer türü bir düğmen kullanmıyok”' durumunu sıfırla, “akım var”' (ya da “yük durumunu ise birle tanımlarız. Bu durum (O ya da 1), en küçük bilgi birimi ya da “bit”' olarak tanımlanır. Bit sözcüğü, İngilizce ““Blnary diğiT” sözcüklerinden oluşturulmuştur. Bunun Türkçe karşılığı yaklaşık olarak “ikili rakam” olarak verilebilir. Burada karşımıza daha önce CPU”'nun kullandığı dilde de olduğu gibi yine “ikili” kavramı çıkıyor. İleride bu kavrama daha yakından değineceğiz, şimdilik bu kavramı “iki durumdan şeklinde açmamız yeterli olabilir. Ve şimdi biz yine O ile 1 durumları olan bite dönelim. İki biti kombine edebilir ve bu bilemişin dört biçimini elde edebiliriz:

İşletim sistemi RAM'i

00 1. kombinasyon 01 2. kombinasyon 10 3. kombinasyon 11 4. kombinasyon üç bit kullanılarak oluşturulabilecek kombinasyonları kendiniz deneyebilirsiniz. Sonuç olarak sekiz bileşim elde edeceksiniz. Aslında bu sayı basit bir kurala göre belirlenir:

1 bit 21 - 2 kombinasyon 2 bit 22 — 4 kombinasyon 3 bit 29 — 8 kombinasyon 4 bit 24 — 16 kombinasyon 5 bit 25 — 32 kombinasyon 6 bit 26 — 64 kombinasyon 7 bit 27 - 128 kombinasyon 8 bit 28 — 256 kombinasyon

Çevirici ROM'u

Belirli matematik kurallarına göre, her bit bileşimine bir sayı verilebilir. Böyle bir sayıya ait bit kombinasyonuna “ikili sayı” adı verilir. Tüm bunları biraz daha kolay anlaşılır hale getirmek için, belirli bit gruplarına (içlerinde hangi durum olursa olsun, ister O ister | içersinler) isimler verilmiştir. Dört bitten oluşan bir grup, “nibble” adını alır. İki nibble'dan ya da sekiz bitten oluşan gruba ise “Byte” (bayt) adı verilir. Böylece iki resimde görülen bayt elde edilmiş olur. Daha önce gördüğümüz gibi, 8 biti 256 farklı kombinasyonda biraraya getirebiliyoruz. Dolayısıyla bir bayt, O ila 256 arasında farklı sayılar alabilir. Bayt, bilgisayar belleğinin bölünmesinde vazgeçilmez bir role sahiptir. Burada da birden fazla bayttan oluşan gruplar kendine özgü kavramlarla adlandırılır: 2 bayt “*word”” (sözcük) adını alır, 4 bayt ise

(uzun sözcük) olarak adlandırılır. 256 bayt için ise çoğunlukla “page” adı kullanılır. Bir sonraki kavram ise büyük bir inatla bilgisayar literatürüne dalan büyük bir hatayı beraberinde taşımaktadır: “Kilo” -Bayt aslında adında ifade edildiği gibi değildir. “k*' harfi ile gösterilen Kilo kavramı aslında her zaman bir şeyin 1000 katını gösterir. Örneğin 1000 m.— 1 km.'dir, 1000 g.— Kg.'dir vb. Bu sevgili “Kilo”- bayt'ımızda ise durum oldukça farkhdır. Gündelik bilgisayar dilinde birçok kişi Kilobayt'ı 210 bayı yerine kullanmaktadır. Halbuki 210 bayt, 1024 bayta karşılık gelir. Bu nedenle herhangi bir karışıklığa meydan vermemek için bilgisayar terminolojisinde küçük.harf “k” yerine büyük harf “K” kullanılır. bu nedenle de “Kilobayt” ifadesi yanlıştır. Doğru kullanmak gerekirse “*Kabyt”' olarak söylemek gerekir. Baştan alalım: 1000 bayt — 1 kBayt (Kilobayt) ama 1024 bayt — 1 KBayt (Kabayt). Anlaşıldı mı?

BASIC programcısı, C 64'ü açtığında belleği böyle bulur.

BELLEK

Baytlardan Commodore 64'ün belleğine geçmek çok kolay. Çünkü C 64'ün belleği byte-wise (bayt usulü) organize edilmiş durumdadır. Kafamızda belleği, üzerinde sekizer odalı evler dizisi bulunan uzun bir cadde olarak canlandırabiliriz. Her ev bir bayta, her oda ise bir bite karşılık gelmektedir. Tabii ki, bu evlerin herbirinin birer numarası vardır ve bu numaralar 0'dan başlayarak 65535'te biter. Yani bu bellek caddesi oldukça uzundur. Adreslerin toplam sayısı olan 65535, yaklaşık ya da kafadan atılma bir sayı değildir: Bu sayıyı 1024'e bölün. 64 KBayt (dikkat! Büyük harfle “K”') elde edeceksiniz. Bilgisayarımızın adının Commodore 64 olmasının nedeni de budur. 65536'yı 256'ya böldüğünüzde de 256 Pages elde edeceksiniz. “Page'' sözcüğü İngilizce kökenlidir ve sayfa anlamına gelir. Bilgasayarımızın belleği bir kitap gibi 256 sayfada toplanabilir. İlk sayfanın numarası 0'dır ve bu nedenle “Zeropage”' (sıfır sayfası) olarak adlandırılır. Bu sayfanm bilgisayarımız açısından özel bir anlamı vardır: Bilgisayar burada işletimi açısından önemli tüm değerleri tutar. Şimdiye kadar tanıtmaya çalıştığımız 64 KBayt bellek, belirli bir bellek türüne dahildi. bu tür bellekler RAM olarak adlandırılır. Karşımıza yine bir kısaltma çıktı. İngilizce Access Memory”' sözcüklerinin başharfleri. Bu ifadenin Türkçe karşılıği ise “rasgele erişimli bellek”. ““Rasgele erişim”'le kastedilen ise, bu bellek türünün hem yazmak hem de okumak için kullanılabileceği. BA-SIC dilinde PEEK komutuyla okunup, POKE komutusya yazabilirsiniz. İsterseniz bir kere deneyin.

PRINT PEEK(10000)

komutunu kullanarak, 10000 ev adresinde ne bulunduğunu okuyun. Bulacağınız sayı ile 256 arasında olacaktır. Şimdi buraya bir başka sayı, örneğin 78 yazın ve yeniden okuyun:

POKE 10000, 78 PRINT PEEK (10000)

Şimdi burada sizin 78 sayısını bulacaksınız. RAM alanı, belli ölçülerde programcının oyun alanıdır. Tüm BASIC programları, değişkenler, diziler ve alanlar orada saklanır. Eğer kasetten ya da disketten bir şey yüklerseniz, bu gidip RAM'a yerleşecektir. Önce de söylediğimiz gibi: Commodore 64, bize 64 KBayt'lık bir RAM sunar. Aslında bu kapasitenin içinde BASIC programcısı için belirli kısıtlılıklar da vardır. Zeropage ve ardından gelen yedi sayfayı, Commodore 64 kendi verileri için kullanır. Aslında eğer işletim sisteminin bazı önemli değerlerini silmeyi ya da bozmayı göze alabilirseniz, bu alana PO-KE yardımıyla bir şeyler yazabilirsiniz. Ama sorumluluk size ait olacaktır. Başınıza gelebilecek en kötü olay ise, sanki ölmüş bir bilgisayardır. Açma-kapama düğmesine el atmanız herşeyi yeniden düzeltecektir. RAM alanında 40960 adresinden sonraki kısım da BASIC programcısı için kısıtlı el atılabilecek bir yerdir. Buraya bir şeyler yazabilirsiniz, ama yazdıklarınızı PEEK kullanarak okumak isterseniz, o sayıyı yeniden bulamayabilirsiniz. Burada RAM'a erişme olayı bir miktar çapraşıktır. İlerki araştırmalarımızda bu enteresan alanı daha yakından inceleyeceğiz. Şimdilik söylememiz gereken, belirtilen RAM adreslerinin GEOS bulunmayan C 64'lerin işletimi için geçerli olduğu. GEOS yüklendiği takdirde, her şey oldukça değişiyor. 64 KBayt RAM'- in yanı sıra Commodore 64'te bir başka tür bellek de var: ROM. Bu da İngilizce “Read Onl Memory” sözcüklerinin başharflerinden oluşan bir kısaltma. Türkçe karşılığı, “salt okunur bellek”. Örneğin

PRINT PEEK(65383)

komutuysa buradan bir şeyi okuyabiliriz, fakat POKE kullanarak oraya bir şey yazmak istersek, yeni bir PEEK komutuysa bu isteğimizi yerine getiremediğimizi görürüz. Aslında RAM'daki 65383 adresine bizim sayı yazılmış gibi görünür. Ama bilgisayarımızda 40960 ila 49151 ve 53248 ila 65535 adresleri arasında RAM yerine ROM elemanları yer aldığından (tabii ki normal işletim durumunda), orada yaptığımız okumalar sırasında daima ROM içeriğiyle karşılaşırız. Peki, ROM'da neler bulunur? Bunlar bilgisayar terminolo-

PROGRAM ADI ROMRAM
60818 REM
PRINT CHR$C147):POKE 2811,7:POKE 214
60036 SYS 58648 <175>
©0840 PRINT “"BELLEKTEKİ ROM ALANININ GÖR
UNuUSU"
©6050 FOR I-55296 TO 562895
©0076 NEXT <154>
680980 FOR TO 40968 <188>
686116 NEXT 1
00130 258 <181>
00150 SvY3 58648 <038>
001686 PRINT "BILGISAYAR TARAFINDAN AYRILA
N RAM"
©086170 FOR TO 56295
681986 NEXT <018>
090210 GET A$z" * THEN 218 <179>
00230 POKE 53272,211:POKE 648,4 <189)>
00245 REM EKRAN KAYAR <051>
00258 POKE 56576,(PEEK(56576) AND 252)
OR J
00270 POKE 53272,(PEEK(53272) AND 15)
OR W
602386 POKE 648,P
003868 RETURN <1064>

jisinde “Firmware” (firmaya özgü şeyler) olarak adlandırılır: CPU'nun anladığı dilde yazılmış programlar, yani işletim sistemi ve BASIC programları CPU diline çeviren bir çevirmen. Bu çevirmen “BASIC-Interpre- (BASIC çevirici) olarak adlandirilir. RAM'ın aksine ROM'un içeriği, makine kapatıldığı zaman da korunur.

Dolayısıyla Firmware kavramının kapsamına girenler, donanım ile yazılım arasında bir yere konabilir. Donanım (hardware) kavramı, bilgisayarda elimizle tutabildiğimiz her şeyi kapsar. Yazılım (software) kavramı ise, örneğin makineyi kapatıp açarak bellekten silebildiğimiz programları ve verileri kapsar. Normal işletim sırasında Commodore 64'ün bellek yapısını bir önceki sayfada görebilirsiniz. İlerki yazılarımızda ROM alanlarıyla daha yakından ilgileneceğiz. ROM'la RAM arasındaki farkları daha iyi anlayabilmeniz için kullanabileceğiniz kısa bir program veriyo- Tuz. Programı Checksummer yardımıyla makineye girin ve RUN'la başlatın. Bir ROM içeriğinin gösterileceğini müjdelemek için, başlangıçta ekran boş olacaktır. Yazı siyah olduğunda, bilgisayarımız ROM'un 1000 bellek noktasını ekranda kapatacaktır. Orada gördüğünüz her karakter BASIC çeviricisinin programına aittir ve bizim için tümüyle anlaşılmaz bir durumdadır. bunun nedeni, CPU'nun ikili dilini ekranda ekran kodları (POKE-Kodu halinde görmemizdir. Bunlar, O ila 255 arasında kodlara sahip herhang isayılardır. Ekrandaki görüntünün oluşumu tamamlandığında, görüntüyü daha yakından incelediğinizde artık hiçbir değişikliğin olmadığını farkedersiniz. Bu, ROM içeriklerinin karakteristiğidir: Nerede ve nasılsalar, orada ve öyle kalırlar. Siz (lütfen RUN/STOP tuşu dışında) bir tuşa basıncaya kadar, ekrandaki görüntü aynı kalacaktır. Bir tuşa basılmasının ardından, ekran, bilgisayar tarafından ayrılmış bir RAM alanının görüntüleneceği uyarısıyla birlikte normale döner. Bu, kısa bir zaman aralığından sonra gerçekleşir. Ekranda bir sürü şey olmaya başlar. Bazı noktalardaki titremeler, CPU'nun o anda oradaki kayıtları değiştirmekte olduğunu gösterir. bir tuşa daha basıldığında, bilgisayar normal durumuna döner. Dileriz, Commodore 64'ümüzün diğer zamanlarda gizli olan alanlarına yapmış olduğunuz bu kısa bakış programdan hiçbir şey anlamamış olmanızı telafi edecektir. Bu durum, ilerki sayılarımızda değişecek. Fakat öncelikle dikkat etmeniz gereken, tüm program satırlarının eksiksiz ve hatasız olarak girilmesi. Hatalı bir sayı, makinenizi çalışmaz hale getirebilir. Bu durTumdan kurtulmanın çaresi ise makineyi kapatıp yeniden açmaktır. Bu nedenle, (her zaman yapmanız gereken şey burada da geçerli) RUN yazıp çalıştırmadan önce programı kaydedin!

MÜZİK VE GAFİK

Dizinin ilerki bölümlerinde mikro işlemcimizin yardımcılarını çok daha yakından tanıtacağız, fakat şimdiden CIA, VIC ve SID kavramlarının neler olduğunu kısa olarak öğrenmenizde yarar var. VIC de İngilizce bir kısaltma. “Video Interface Controller” (ekran arabirimi denetleyicisi) sözcüklerinin başharflerinden oluşuyor. Bu eleman, ekranda herhangi bir şeyi görebilmemizi sağlamakla görevli. diğerlerinin yanı sıra metinleri, grafikleri ve ekran cinlerini (sprite) yönetir. CIA'nın ise meşhur Amerikan örgütüyle bir alakası yok. Kısaltmayı oluşturan İngilizce “Complex Interface Adapter”' sözcükleri Türkçe'de “farklı giriş ve çıkış işlevleri elemanı”

olarak karşılanabilir. Bu elemandan bilgisayarımızda iki tane var. Diğer görevlerinin yanı sıra en önemli görevi, bilgisayardan diskete, kasete ve geriye ya da bilgiyazara pürüzsüz bir veri akışını sağlamak. Ayrıca bilgisayarımızın içindeki saatleri de CLA yönetir. Ona müteşşekkir olmamız gereken diğer bir konu ise, Commodore 64'ümüzün klavyeye vuruşlarımıza tepki vermesi ve Joystickle uğraşmalarımızı algılaması. SID kısaltması ise İngilizce “Sound Interface Device” sözcüklerinden kaynaklanıyor. Bunun Türkçe karşılığı ise ““ses denetimi elemam”' olarak verilebilir. Tüm bu yardımcılar da, prensip olarak CPU'ya oranla daha kısıtlı yeteneklere sahip, mikro işlemciler. Bu nedenle de aynen CPU'da olduğu gibi -belli sınırlamalar içinde- programlanabiliyorlar. bu işlem Register'lar (siciller) aracılığıyla gerçekleştirilir. bu kavramla anlatılmak istenen, tek tek elemanların belirli işlevlerine tepkiyen bir dizi bellek alanıdır. Tüm bu siciller işletim sistemi tarafından RAM'ın yerine 53248 ila 57343 adresleri arasındaki bellek alanına yerleştirilmiştir. Commodore 64'ün derinliklerine doğru yapmaya başladığımız bu yolculuktan hoşlandınız mı? Gelecek sayımızda BASIC-Interpreter'- in neler yaptığını inceleyeceğiz.