Mikroişlemci
COMMODORE-64'ün içinde asıl bilgisayar 4 cm. uzunluğunda, 2 mm. kalınlığında, 44 ayaklı bir nesne; daha doğrusu, bunun da içinde saklı 3-4 milimetrekare büyüklüğünde bir silikon kristalciği. Adı Mikroişlemci veya Merkez İşlem Birimi (CPU). Mikroişlemcilerin çeşitli modelleri var. COMMODORE-64'te bulunanı 6510 denilen türden ve APPLE'da, COMMODORE-8296, 16 ve PLUS-4'te, ATARİ'de bulunanın bir benzeri. Öbür yaygın mikroişlemci çeşitleri Z-80 (SPECTRUM, AMSTRAD), Intel 8088 (COMMODORE PC, IBM, NCR) ve Motorola 68000 (AMIGA, SINCLAIR QL, MACINTOSH).
Mikroişlemcinin yaptığı tek iş, bazısı açık bazısı kapalı yüzbinlerce ufak elektrik anahtarında o anda bulunan açık-kapalı sırasına göre, bazı anahtarları açıp bazılarını kapatmak, böylece yeni bir açık-kapalı dizisi oluşturmak. Bu yüzbinlerce anahtar da bilgisayarın belleği.
6510, 8 bit'lik bir mikroişlemci, 16 bit'lik bir adres kapasitesine sahip ve yaklaşık 1 megaherz hızla çalışıyor. Bunun anlamı şu: 6510 türü mikroişlemci, bellekteki anahtarları aynı anda sekizerlik gruplar halinde okuyor, işliyor ve değiştiriyor. Bu sekizli gruplar üzerinde saniyede yaklaşık 1 milyon işlem yapabiliyor. Ve toplam en çok 2 üstü 16, yani
524.288 anahtarlı ya da 65.536 tane sekizli gruptan oluşan bir belleği kontrol edebiliyor.
Açık-kapalı anahtarların sıralamasına dayanan kodlama sisteminin adı makine kodu ya da makine dili. 6510 makine dilinin inceliklerini, arkadaşımız Baytan Bitirmez'in köşesinde
BİT ve BYTE nini İn
Ni imi kl
Bir sokakta bazısı ev bazısı boş arsa olan bir sıra parsel düşünelim: Her eve 1, her arsaya 0 sembolünü verirsek, bu sokağın durumunu 1101100101001 diye özetleyebiliriz. Bu rakamlar dizisini şimdi aritmetikte bir sayı olarak ele alırsak, 6963 sayısını elde ederiz. Aynı şekilde; iki arsa bir ev iki ev iki arsa bir ev yerine kısaca 89 diyebiliriz. Bunun gibi, bilgisayar belleğinde her açık anahtarı 1, kapalı anahtarı da 0'la simgelemek büyük kolaylıklar sağlayacaktır.
Bu sistemde, açık veya kapalı bir anahtarı temsil eden 1 veya 0'lara bit (binary digit) adı veriliyor. İşlemlerimizi sekizden yaptığımız için de, sekiz bit'ten oluşan bir sayıyı ifade eden bayt diye bir birim kullanılıyor. Bir bayt'ın sahip olabileceği en düşük değer 00000000, yani 0; en yüksek değer ise 11111111, yani 255. “Belleğin bir yerine 123 sayısını koymak” gibi bir ifade görürsek, bundan, bir dizi anahtarı 01111011 haline getirmek anlamını çıkaracağız.
BELLEK
Dünyada hafızası fil ve deveden daha güçlü olan tek yaratık, bilgisayar. Bilgisayarın belleği, dış görünüşü tıpkı mikroişlemciye benzeyen çipler üzerinde, binlerce açık/kapalı anahtarlardan oluşuyor. Bellek çiplerinin üç çeşidi vardır: ROM'larda (Read Only Memory), hangi anahtarların açık, hangilerinin kapalı olduğu fabrikada belirlenir. Sonradan değiştirmek mümkün değildir. RAM (Random Access Memory) belleğin anahtarlarını, mikroişlemci istediği gibi kapatıp açabilir. Ama bilgisayar prizden çekildiği anda, tüm anahtarlar kapanır ve RAM bellekte hiçbir şey kalmaz. EPROM'lar (Erasable Programmable ROM) ise, elektriğin kapatılmasından etkilenmez, ama EPROM programlayıcı adı verilen özel cihazlarla silinebilir ve yeniden programlanabilir. İster ROM, ister RAM, ister EPROM olsun, bellek sadece belli açık-kapalı dizilerini simgeleyen bir dizi sayıyı içeriyor. Bu sayıların bir kısmı, belli bir kod uyarınca mikroişlemciye birtakım sayıları alıp başka sayılara çevirmesini, belleğin bir bölümündeki sayıları belli kurallar uyarınca değiştirmesini bildiren programlar olabilir. Bir kısmı, mikroişlemci tarafından işlenecek veriler, örneğin Fenerbahçe'nin puanları ve golleri veya döviz kurları olabilir. Sayılarla ifade edilen bir nota dizisi de olabilir. Alfabenin harflerini Mors koduna benzeyen ve “ASCII kodu” adı verilen bir sayı sistemiyle simgelersek, örneğin bir makale de olabilir. Mesela, 01000001 - A, 01000010 - B, 01000011 - C vb. olsa, 01010011 01000101 01001100 01000001 01001101 69, 76, 65, 77 - SELAM demektir ve belleğin 5 bayt'lık bir köşesinde durabilir. COMMODORE-64'ün belleğinde, 24 kilobayt ROM var. ROM'da mikroişlemciye klavyeden gelen sinyalleri nasıl düzenleyeceğini ve PRINT, LOAD, GOTO gibi BASIC kodlarını görünce hangi sinyal dizilerini üreteceğini bildiren programlar bulunuyor. Ayrıca Karakter Üretici denilen bir ROM da, ekranda harf ve şekiller olarak gördüğünüz yanık/sönük nokta kalıplarını içeriyor. 64 kilobayt RAM'ın bir kısmı boş. RAM'daki ana program, bu bölgeleri, bizim vereceğimiz (ya da kasetten yüklenecek) program ve bilgiler için ayırmış. Klavyeden bir şeyler yazıp (RETURN)'e basınca, mikroişlemci, ROM'daki kod uyarınca, bizim gönderdiğimiz sinyalleri başka bir sayı dizisine çevirip RAM'ın bu kısmına yerleştiriyor; yani pat pat bazı anahtarları açıp bazılarını kapatıyor. RAM'ın bir kısmı ise özel amaçlara ayrılmış: Örneğin 1024'üncü bayt'tan 2023'üncü bayt'a kadar olan kısımda bulunan rakam dizileri, harf ve şekiller olarak ekrana yansıyor; 53281'inci bayt ekran rengini belirliyor vb.
INPUT/OUTPUT
Yalnızca mikroişlemci ve bellekten oluşan bir bilgisayarda bu işlemlere ne müdahale edebiliriz, ne işlemin sonucunu görebiliriz. İşlemci bilgisayarın beyni, bellek de iç organları ise, şimdi bilgisayarımıza beş duyu organıyla kol bacak takmamız gerekiyor. Belleğin bazı anahtarlarını mikroişlemciden bağımsız olarak açıp kapatan, yani belleğe belli sinyal dizileri gönderen cihazlara input (giriş) cihazları; bellekteki sinyal dizileri uyarınca belli işlemler yapanlara da output (çıkış) cihazları adı verilir. Input ve output cihazları, asıl bilgisayarın bir parçası değil, elektrikle işleyen ve anlamlı sinyal dizileri üreten (veya anlamlı sinyal dizilerinden etkilenen) herhangi bir alet, input/output cihazı olabilir. En basit input cihazı klavye. Klavye, sıra sıra tuştan oluşan ve bir tuşa basıldığında 8 bit'lik bir sinyal gönderen bir nesne. Tuşların üzerinde birtakım harflerin bulunması hiç önemli değil. Önemli olan, örneğin soldan beşinci tuşa basınca 01110001 gibi bir sinyalin çıkması. Bu sinyal belleğe ulaşınca mikroişlemcinin bunu neye çevireceği, programa bağlı bir olay. Bir başka input cihazı joystick. Joystick, sadece 16 farklı çeşit sinyal gönderebilen basit bir alet. Paddle ise 256 çeşit sinyal gönderebiliyor. Optik okuyucu ve lightpen, bir noktada ışık bulunup bulunmadığına göre 1 veya 0 sinyali gönderen cihazlar. Elektrikli piyano klavyesi de, tıpkı normal klavye gibi bir sinyal üretici. Ses dalgalarını elektrik dizilerine çeviren bir mikrofon da bunun gibi. En basit output cihazı ise ekran. Ekran, gelen elektrik sinyallerini çeşitli renklerde mikroskopik ışıklı noktalara çeviren bir alet. Printer ise, yine benzer 01 sinyallerini kafa motorunun darbelerine dönüştüren bir output cihazı. Bir fabrikanın üç yüz kapısını kontrol eden veya bir robotun manivelalarını hareket ettiren bir motor; yüzlerce ampulü yakıp söndüren bir ışıklı tabela sistemi; gelen sinyalleri elektronik dalgalara çeviren bir radyo servisi veya ses dalgalarına çeviren bir hoparlör de output cihazları. Bazı cihazlar da hem input, hem de output yapma imkânına sahip. Teyp ve disk birimleri, manyetik bir ortama kayıtlı sinyal dizilerini okuyup bilgisayara iletebiliyor, hem de bilgisayardan gelen sinyalleri manyetik ortama kaydedebiliyor. Bir modem aracılığıyla telefon cihazı da, bilgisayar sinyalleri ile telefon sinyallerini birbirine dönüştürebiliyor. COMMODORE-64'ün, dışardan gelen sinyalleri almak ve dışarı sinyal göndermek için, sekizi dışardan görebildiğiniz, biri de içeriden klavyeye bağlı 9 kapısı bulunuyor. Bu kapılardan sinyal alma/sinyal verme işlemlerini ise VIC (Video Interface Chip), SID (Sound Interface Device), CIA 1 ve CIA 2 (Complex Interface Adaptor) isimli dört çip yürütüyor. Bunların tek işi, belleğin belli bir noktasına mikroişlemcinin yerleştirdiği verileri kapıya iletmek ve kapıdan gelen dizileri, mikroişlemci istediğini yapsın diye belleğin belli noktalarına koymak.
PROGRAMLAMA VE PROGRAM DİLLERİ
Geldik işin püf noktasına. Bilgisayarın bir işe yarayabilmesi için, bir kapıdan gelen kodlu sinyaller dizisini, belli kurallar uyarınca, birtakım başka kodlara çevirip öbür kapıya vermesi gerekir. İşte program denilen şey, bu çevirme işleminin kurallarını mikroişlemciye bildiren kodlar dizisi; bir çeşit tercüme rehberi. Örneğin klavye kapısından 01001010 kodunu getirirse, belleğin uygun bir yerine 10110101110101000111101011101 kodunu koy ki VIC bunu ekran kapısına göndersin; veya başka bir yere 01111 koy da printer işlesin” anlamına gelen bir kod. Doğal olarak, programın, mikroişlemcinin anlayabileceği bir dilde olması gerekiyor. Mikroişlemcinin ise sadece makine dilinden anladığını gördük. Makine dili de, adı üstünde, insan kafasına pek uygun olmayan bir dil. Ama başka bir kurallar sistemine göre yazılmış bir programı makine diline tercüme eden programlar da mümkün. Bu programlara compiler (derleyici) veya interpreter (yorumlayıcı) adı veriliyor. Tabii işin ideali, bilgisayarı normal konuşma diliyle, örneğin Türkçe programlayabilmek. Fakat insan dilleri bilgisayar için çok karmaşık ve muğlak olduğundan, makine dili ile insan dili arası ortalama diller geliştirilmiş. BASIC, Pascal, Cobol, Fortran, Logo, Lisp, Forth, C bunlardan bazıları. COMMODORE-64'ün ROM'unda, BASIC programları hemen makine diline çeviren, böylece mikroişlemcinin BASIC'ten anlamasını sağlayan bir yorumlayıcı var. Ama bu yorumlayıcıyı devreden çıkarıp doğrudan doğruya makine dilinde yazmak veya kaset ve diskette bulunan başka programlama dillerinin derleyicilerini yükleyip bu dilleri kullanmak da mümkün. Hatta derleyicisini yazmak koşuluyla kendiniz de bir programlama dili icat edebilirsiniz.
Bilgisayarınızdan yararlanmak için programlama bilmeniz tabii ki şart değil. Kasetlerde, disketlerde, kartuşlarda usta programcılarca yazılmış binlerce program var; bunları kullanabilmek için LOAD ve RUN kodlarını bilmeniz yeterli. İşin özeti, bir input bir de output cihazı ve birinin sinyallerini öbürünün verilerine çeviren iyi bir programla, COMMODORE-64'ün yapamayacağı şey yok. Dünyada bazı insanlar, birkaç düğmeden gelen kodları (input), Moskova'yı bombalayacak füzeleri kontrol eden sinyallere (output) çeviren programları yazıyorlar. Biz, iyisi mi, joystick'ten gelecek kodlarla (input) ekranda Moskova'yı temsil eden ışıklı noktaların sinyallerini (output) kontrol eden programlarla yetinelim.
C-64 “BOARD” 1 CIA BASIC ROM 2 İşletim Sistemi ROM 3 Karakter ROM 4 6510 mikroişlemci 5 SID 6 VIC 7
44 yaşında bir çocuğun dili