6502 oldukça yayılmış bir Processor'- dur ve C-64'ün mikro işlemcisi olan 6518'la hemen hemen aynıdır. Bu iki- si de 6502 Assembler ile programla- nabilmektedirler. Bir Assembler kendi dilinde yazıl- mış komutları makina diline tercüme etmektedir. Bir de Assembler'in tam tersi olan, yani makina dili komutları çeviren Disassembler'lar vardır. C- 64'de makina dili bir program yaza- bilmek için Assembler ve Disassemb- ler özelliği olan bir monitör progra- mına ihtiyacımız olacaktır. Her ne kadar değişik özelliklere sahip birçok monitör programı mevcut ise de bun- ların kullanımı hemen hemen aynıdır. Yeri geldiğinde bu konuya daha de- taylı değineceğiz. Basic'e karşı Assembler: Bu ikisi arasındaki farkı daha iyi görebilmek için aşağıdaki satırları ya- zın. 10 FOR 1-1024--255 TO 1024 STEP-İ 20 POKE I,I:POKE 1-4 54272,14 30 NEXT I Bu programcık ekranın üst tarafın- daki bölüme 255 tane A” harfi bas- maktadır. Eğer kronometre ile zaman tutarsanız bu işlem için aşağı yukarı 4 saniye harcandığını göreceksiniz. Ayrıca bu program hafızada 62 bayt işgal etmektedir. Şimdi aynı işi As- sembler ile yapalım. NEW yazdıktan sonra bilgisayara aşağıdaki satırları girin: 10 FOR 1-7000 TO 70004 16 20 READ A:POKE I,A:NEXT L:END 30 DATA 160,255,162,14,169,1, 153,255,3,138,153,255,215,136, 208,244,96 RUN komutunu verdiğinizde ma- kina dili program 7000. bayttan iti- baren hafızada yer alacaktır. SYS 7000 ile programı çalıştırabilirsiniz, ama hiç süre tutmaya kalkışmayın zi- ra bu işlem Assembler ile 5,4 milisa- niyede halledilmektedir. Ayrıca prog- ram bellekte sadece 17 bayt işgal et- mektedir. Görüldüğü gibi Assembler kullanı- mını bu kadar çekici yapan başlıca unsur sürattir. Bazı işlemler Basic'e göre aşağı yukarı 1000 kat hızlı ger- çekleştirilmektedir. Ayrıca Basic'te halledilmesi imkansız olan program- lar Assembler'in çok yönlü kullanı- mı ile mümkün olmaktadır. C-64 açıldığında ile programlan- mayı beklemektedir. Bizim bilgisaya- ra yazdığımız Basic komutları her se- ferinde “Interpreter” adındaki bir çevirici program tarafından bilgisa- yarın anlayabileceği bir şekilde yo- rumlamaktadır. Yalnız bu yorumla- yıcı ile Assembler programları arasın- da çok önemli fark vardır: Assemb- ler'da yazılan bir program bir defa çevrilerek tamamen makina dili ha- line gelmektedir ve bir daha yazıldı- ği Assembler programlarına ihtiyaç duymamaktadır. Basic programlarda ise tam tersine her seferinde yorum- layıcı işe karışmaktadır ve bu da önemli bir zaman kaybına yol aç- maktadır. C-64'ün içinde açılışta hazır bir As- sembler bulunmaması bu bilgisayar için önemli bir handikap teşkil et- mektedir. Şimdi isterseniz normal şartlarda yani doğrudan Basic yardı- mıyla C-64'de nasıl makina dili prog- ram yazılacağını görelim: a)İlk önce Assembler program ha- zırlanmalıdır. Bu programda bir di- zi komut yer alacaktır. Örnek olarak bu diziden bir RTS komutunu ele ala- lım, b) Her Assembler komutunun ma- kina dilinde bir ““binary”' (ikilik sis- tem) kodu vardır. RTS için bu kod 01100000 dur. c) Şimdi bu kodun hafızanin bir re- gisterine kaydedilmesi lazımdır. Bu işlem POKE komuduyla gerçekleşir. Yalnız Basic ikilik sistemden anlama- dığı için bunun onluk sisteme çevril- mesi gereklidir. RTS'nin onluk sistem karşılığı 96'dır (onaltılık veya heksa- desimal karşılığı 60). Bu değer iste- nen adrese POKE edilir, örneğin PO- KE 7016,96. d) Bu yöntemle tüm program bayt bayt hafızaya yerleştirilir. Eğer hafı- zadaki program incelenmek istenirse bu sefer PEEK komutu ile her bayt tekrar okunmalıdır. üğü gibi yukarıdaki yöntem oldukça zahmetlidir. Bu nedenle her- hangi bir monitör programının kul- lanılmasında büyük yarar vardır. Kullanışlıkları açısından bize en uy- gün olanları S-MON veya EX- ON'dur. Momtörlerın yanında çok çeşitli Assembler programları mevcuttur. Örneğin Direkt-Assembler'lar yazılan her satırı anında makine diline çevir- mektedirler. Bunun yanında 2-Pass- Assembler'lar tüm program tamam- lanınca assembler (makina diline çe- D PCL | PCR D ÖÜi 4'Hı.d K | 8- Bit Düşük Adresi > . i_dL — _İ | 8- Bit Yüksek Adres ) Resim 2: 6510 İşlemcinin yapım şeması. 45