C64 İÇİN PC ÜZERİNDE GELİŞTİRME

Merhaba. Bu yazı dizisinde PC kullanarak C64 için nasıl program geliştirebileceğinize dair bilgiler vermeye çalışacağım. Böylece o ruhsuz PC’niz de faydalı bir iş için kullanılmış olacak ☺

Öncelikle birkaç şeyi tanımlayalım. Bir PC kullanarak başka bir bilgisayar sistemi için yazılım geliştirmeye çapraz geliştirme (cross-development) adı verilir. Bu yalnızca C64 için yapılan bir şey değildir. Uzun yıllardır gömülü (embedded) sistem adı verilen bütün cihazlar (TV'ler, DVD'ler, çamaşır makineleri, fabrika robotları vs.) bu şekilde geliştirilmektedir. Böyle yapılan geliştirmede PC'ye host platform, yazılımın aslında çalışacağı platforma da hedef platform denir.

Bunun çok basit sebepleri vardır. Genelde hedef platformlar RAM ve CPU gücü bakımından daha zayıftırlar. Bu yüzden onlar üzerinde janjanlı kod editörleri ve geliştirme araçları çalıştırmak mümkün olmayabilir. Çoğu zaman hard diskleri de olmadığı için kaynak kodları saklamak ve düzenlemek daha zordur.

C64'ü özellikle düşünürsek 5,25 disketlerle kaynak kodları saklamak nispeten daha güvensiz olabilir. PC’de yazdığınız kodları defalarca kopyalar, CD’lere yazar veya CVS gibi versiyon yönetim sistemlerinde saklayabilirsiniz. Bu kaynak kodlarda sonsuz uzunlukta değişken ve etiket isimleri kullanabilir, kod içine istediğiniz kadar yorum yazabilirsiniz.

Bütün bu avantajların yanında bence PC üstünde geliştirmenin gerçekten çok zaman ve efor kazandırdığı bir durum vardır. Çok parçalı demolarda linking dediğimiz süreç. Bu süreçte çeşitli efektler içeren demo partlarını birleştirerek, geçişlerin zamanlaması ve

C64 TÜRKİYE #7 10 müzik senkronizasyonu ile uğraşılır. Bu esnada sürekli olarak efekt partlarındaki delay zamanları ile oynanıp müzik senkronizasyonu ile oynanır. Demo disketi tekrar tekrar silinip yeniden dosyalar kopyalanır. Ardından demo çalıştırılıp üzerinde son uğraştığınız part gelene kadar izlenir (ki bu 3-5 dakika alabilir). Ve tam istediğiniz yeri geldiğinde ekranı flaş yaptırdığınız anın müzikten 1 saniye geç kaldığını görürsünüz. Bütün bunları tekrarlarsınız ve başka bir yerin zamanlaması bozulur. İşte bu korkunç emekli süreç PC üstünde make, crossassembler'lar, VICE emülatörü ve bu emülatörün warp modu sayesinde çok kolaylaştırılabilir. Bunların nasıl yapıldığına değineceğiz.

C64 için PC'de çalışan pek çok emülatör, crossassembler gibi araç mevcuttur. Hangisini seçeceğiniz, kişisel tercihlere kalmıştır. Ayrıca kullandığınız işletim sistemi de bunda etkili olabilir. Ben bu yazıda kendi kullandığım yapıyı tanıtacağım. Ben normalde işte ve evde Linux PC kullandığım için benim kullandığım araçlar Linux uyumlu araçlar ancak aynı araçlar Windows'da da mevcut.

Bu noktada programcılık hakkında kısa bir felsefik paragraf yazayım. Her ne amaçla hangi platforma yönelik program yazıyor olursanız olun, eğer bugüne kadar yapmadıysanız Linux kullanmayı denemenizi öneririm. Linux içinde halihazırda bedava olarak gelen o kadar çok yazılım mühendisliği ve geliştirme aracı var ki, bunların yaptıkları işleri yapabilen Windows karşılıklarını aradığınızda hepsini bulamayacağınız gibi bulabildiklerinize de yüz binlerce dolar ödemek zorunda kalabilirsiniz. Hem legal hem kuvvetli hem de bedava olan bu araçlar sayesinde Linux'ta kod geliştirmeye alıştıktan sonra başka sistem istemeyeceksiniz. Maalesef demoscene gibi özgürlük, bedava sanat eserleri üretmek gibi kavramlarla uğraşan insanların dünyasında Microsoft teknolojilerinin neden tek alternatifmiş gibi görüldüğüne inanmak zor. Tabii Linux için bir öğrenme süreci geçireceğinizi de bilin ama bunun ödülünü fazlasıyla alacaksınız.

Neyse C64'e dönelim. Araçları tanıtmadan önce son olarak bir konuya daha değineyim. Çapraz geliştirme derken sadece kod yazmaktan bahsetmiyoruz. PC'de var olan tool'ları kullanarak C64 için grafik ve müzik de geliştirebilirsiniz. Fakat özellikle grafik ve ses konusunda orijinal donanımın üstündeki havanın aynısını PC yaratamamaktadır. Bilhassa PC’de yaptığınız müzikler C64'e atınca çok farklı sesler çıkarabilir. Bizzat başıma geldi onun için söylüyorum. SID çipinin filtreleri PC'de emüle edildiğinden çok farklı sesler çıkarıyor. O yüzden grafik ve müzik çalışmalarınızı gerçek C64 ile yapmanızı tavsiye ederim.

VICE

Önce emülatör. Benim gözlemlediğim kadarıyla şu an dünyada en çok beğenilen ve kullanılan iki emülatör var: CCS ve VICE. Bunların ikisi de son derece iyi ve sorunsuz emülatörlerdir. Bugüne kadar hassas zamanlamalı VIC raster efektlerinden 3D efektlere kadar yaptığım ve izlediğim hiçbir efektte iki emülatörde de gerçek C64'ten farklı bir davranış görmedim. Sadece iki yıl önce CCS ile Fairlight'ın Anyone demosunu izlerken loader takılmıştı. Yani 1541 emülasyonunda bir hata vardı. Yeni versiyonlarda düzelmiş olabilir. Benim bilmediğim ya da rastlamadığım başka hatalar olabilir. Ama genel olarak ikisini de gönül rahatlığıyla kullanabilirsiniz. Linux desteği olan VICE olduğu için benim tercihim ondan yana oldu.

Genel olarak VICE kullanımı ile ilgili detaylı bilgi vermeyeceğim. Bunun için Ophruque'un yazdığı Türkçe çok güzel bir VICE kullanma kılavuzu var buna bakabilirsiniz. Ben daha çok VICE ile debug yaparken kullanacağınız makine dili monitörüne değineceğim. Ama biraz sonra...

ACME

Önce crossassembler nedir onu söyleyeyim. Crossassembler, host platformda yazdığınız assembler dilindeki kaynak kodu hedef platformda çalışacak bir binary dosyaya dönüştüren araçtır. Assembler programlarının genel özellikleri olan etiketler ve makrolar ACME'nin de en işe yarayan özellikleri arasında. ACME'nin önemli bir özelliği ise çok hızlı çalışması.

Kod editörü: EMACS

PC'de kod yazarken önemli bir avantajınız, çok fazla değişik kod editörü seçme imkanınız olması. Kod editörü içinde herhangi bir dilde program yazdığınız araçlardır. Windows Not Defteri ya da Microsoft Visual Studio da kod editörü olarak kullanılabilir. Genelde bir kod editörünün içinden kodları derleyip çalıştırabilmenize ve hatta debug edebilmenize izin verecek şekilde yapılır. Bunlara entegre geliştirme çevreleri (integrated development environment) anlamına gelen IDE adı verilir. Pek çok programcı aslında günümüzde IDE'leri tercih ediyor. Benim gibi dinozorlar ve UNIX tabanlı programcılar ise editor, compiler, debugger vs. için ayrı ayrı araçları tercih ederler. Bu araçlardaki avantaj şudur: Aynı kod editörü ile hem C64 hem PC hem de başka platformlar için kod yazabilirsiniz. Yani compiler/assembler veya debugger değiştirirken alıştığınız kod editörünü kullanmaya devam edebilirsiniz.

Kod editörü gerçekten çok kritik bir konu değildir. Herkes genelde rahat ettiği bir editör bulur ve onunla devam eder. Ben üç yıl önce evde ve işte EMACS kullanmaya başladım. EMACS, şu meşhur özgür yazılım hareketini 80'lerde başlatan FSF (Free Software Foundation) tarafından yürütülen GNU projesinin editörüdür. Avrupa ve Amerika’daki pek çok yazılımcı tarafından VI editörü ile birlikte dünyanın en iyi editörü kabul edilir.

VI ve EMACS görünüşte çok sade yazılımlardır. Fakat her ikisinin de temel prensibi kullanıcının elini normal daktilo konumunda tuttuğu zaman elini klavyeden hiç kaldırmadan pek çok işi yapabilmesidir. Genelde pek çok diğer janjanlı editördeki gibi mouse ile klavye arasında elinizi götürüp getirerek zaman kaybetmeniz gerekmez. İkinci önemli özellik de EMACS'in pek çok bölümünün Lisp adı verilen bir dille yazılmış olmasıdır. Bu dille çok çeşitli küçük rutinler yazıp editöre eklemeniz mümkündür. Yani herhangi bir istediğiniz özelliği genelde 20-50 satır Lisp kodu yazarak EMACS'e kazandırabilirsiniz.

Eğer EMACS kullanmaya karar verirseniz tutorial'leri takip ederek tuş kullanımını ve kısayolları iyice öğrenmeye çalışın. Bu başta zor gelecek ve biraz zaman alacaktır. Ama alıştıktan sonra size çok rahat gelebilir.

Geliştirme döngüsü Kod geliştirirken kullandığımız üç ana araçtan bahsettik: 1- kod editörü: EMACS 2- assembler: ACME 3- debugger/emülatör: VICE

Normalde kod geliştirirken sürekli bu üç ana araç arasında döneceksiniz. Öncelikle editör içinde kod yazacak ve bir dosyaya kaydedeceksiniz. Ardından bu dosyayı ACME ile assemble edeceksiniz. Eğer bir takım yazım hataları yaptıysanız ACME size hangi dosyanın hangi satırında hata yaptığınızı söyleyen hata mesajları çıkaracak. Ardından bunları tek tek editörde yeniden düzelteceksiniz. En sonunda ACME bir hata vermeden kaynak kodlarınızı assemble edecek ve bir C64 dosyası oluşturacak. Daha sonra bu dosyayı VICE emülatörü ile çalıştıracaksınız. Büyük olasılıkla çalışmayacak. VICE monitör ile bir süre debug edip hataları bulacaksınız. Bu hataları EMACS ile düzeltip yeniden ACME ve yeniden VICE çalıştıracaksınız. Ta ki yazdığınız kod parçası istediğiniz gibi çalışana kadar.

Genelde biraz büyükçe projeleri önce kafanızda çalıştırılması gereken alt parçalara böldüğünüz için VICE üstünde parçaları tek tek çalıştırıp memnun kalınca bunları birleştireceksiniz. Birleştirme sonucu çıkan hatalar da ayıklandığı zaman sonuca ulaşmış olacaksınız. C64 üstünde istediğiniz gibi çalışan bir ürün.

Gelecek Yazı

Bu ay burada keseceğim. Gelecek yazıda ACME'nin özel komutları ve bilhassa da Macro'ların kullanımına değineceğim. Ayrıca ACME, VICE ve EMACS dışında yardımcı olarak kullandığım iki araçtan daha bahsedeceğim: PUCRUNCH ve MAKE.

O zamana kadar hoşça kalın ... (Editörün notu: Eğer LİNUX yerine WİNDOWS 98 kullanıyorsanız kod editörü olarak WordPad, assembler derleyici olarak C64ASM V1.1 ve emülatör olarak VICE kullanabilirsiniz.)

PROGRAM BÖLÜMÜ

Kısa bir aradan sonra kaldığımız yerden devam ediyoruz. Kısa programlarla karakter setimi değiştirerek açılış yapıyoruz. Nasıl olduğunu merak ediyorsanız ekran görüntüsüne bakabilirsiniz. İkinci programımızda ise karakterler biraz genişliyor. Aslında bu rutinler ile elde ettiğimiz karakterlerden daha güzellerini “FONT EDİTÖR” dediğimiz programlarla yapabilirsiniz. Karakterleri bir tarafa bırakalım ve devam edelim. İntro teknikleri bölümünde ise sprite’ları hareket ettirerek ekranımızı güzelleştiriyoruz.